From 0116ef131b08a2dc277aef53579bcfd005a31dba Mon Sep 17 00:00:00 2001 From: ThePython <87204246+ThePython10110@users.noreply.github.com> Date: Wed, 23 Aug 2023 16:40:55 -0700 Subject: [PATCH] v4.0 --- changelog.txt | 15 +- fake_liquids/init.lua | 2 +- lava_sponge/init.lua | 14 +- small_why_things/init.lua | 6 +- sticky_things/init.lua | 2 +- useful_green_potatoes/init.lua | 461 ++++++++++++++++++ useful_green_potatoes/mod.conf | 5 + useless_beans/init.lua | 30 +- useless_beans/mod.conf | 2 +- .../useless_beans_shield_useless_bean.png | Bin 0 -> 9226 bytes why_init/init.lua | 1 + 11 files changed, 496 insertions(+), 42 deletions(-) create mode 100644 useful_green_potatoes/init.lua create mode 100644 useful_green_potatoes/mod.conf create mode 100644 useless_beans/textures/useless_beans_shield_useless_bean.png diff --git a/changelog.txt b/changelog.txt index aa08980..458b5c6 100644 --- a/changelog.txt +++ b/changelog.txt @@ -53,4 +53,17 @@ [MineClone] Added blue feathers (completely useless) 3.1 why_init: - Set namespace and added why: aliases \ No newline at end of file + Set namespace and added why: aliases +4.0 + Added Useful Green Potatoes: + Look identical to Useless Beans + Tools/armor basically copied from iron/steel + Useful Green Potato Liquid is identical to water but disables drowning + Golden Useful Green Potato is identical to MineClone's golden apple (or just heals you a lot in Minetest Game) + Useful Green Potato Block heals players that fall on it (healing is 2.5x what normal fall damage would be) + Known issue: Landing near one is enough to trigger the healing. This is Minetest's fault, and it's either that or forcing players to land in the exact center. + Useful Green Potato Ingot Blocks multiply fall damage slightly more than Useless Bean Ingot Blocks, and also damage players at 3 hearts/second. + Useless Beans: + Biome requirements removed! Useless Beans can now spawn anywhere! + Sticky Things: + Players cannot jump while standing on Sticky Blocks. \ No newline at end of file diff --git a/fake_liquids/init.lua b/fake_liquids/init.lua index 9f7a252..f5aaa9e 100644 --- a/fake_liquids/init.lua +++ b/fake_liquids/init.lua @@ -12,7 +12,7 @@ if why.mineclone then stone_itemstring = "mcl_core:stone" cobble_itemstring = "mcl_core:cobble" obsidian_itemstring = "mcl_core:obsidian" - nether_check = function(pos, placer) + nether_check = function(pos, player) local nn = minetest.get_node(pos).name -- Pour into cauldron if minetest.get_item_group(nn, "cauldron") ~= 0 then diff --git a/lava_sponge/init.lua b/lava_sponge/init.lua index 039305b..afe9751 100644 --- a/lava_sponge/init.lua +++ b/lava_sponge/init.lua @@ -36,17 +36,17 @@ minetest.register_node("lava_sponge:lava_sponge", { stack_max = 64, sounds = mcl_sounds.node_sound_dirt_defaults(), groups = {handy=1, hoey=1, building_block=1}, - on_place = function(itemstack, placer, pointed_thing) - local pn = placer:get_player_name() + on_place = function(itemstack, player, pointed_thing) + local pn = player:get_player_name() if pointed_thing.type ~= "node" then return itemstack end -- Use pointed node's on_rightclick function first, if present local node = minetest.get_node(pointed_thing.under) - if placer and not placer:get_player_control().sneak then + if player and not player:get_player_control().sneak then if minetest.registered_nodes[node.name] and minetest.registered_nodes[node.name].on_rightclick then - return minetest.registered_nodes[node.name].on_rightclick(pointed_thing.under, node, placer, itemstack) or itemstack + return minetest.registered_nodes[node.name].on_rightclick(pointed_thing.under, node, player, itemstack) or itemstack end end @@ -68,14 +68,14 @@ minetest.register_node("lava_sponge:lava_sponge", { -- FIXME: pos is not always the right placement position because of pointed_thing local absorbed, wet_sponge = absorb(pos) if absorbed then - minetest.item_place_node(ItemStack(wet_sponge), placer, pointed_thing) - if not minetest.is_creative_enabled(placer:get_player_name()) then + minetest.item_place_node(ItemStack(wet_sponge), player, pointed_thing) + if not minetest.is_creative_enabled(player:get_player_name()) then itemstack:take_item() end return itemstack end end - return minetest.item_place_node(itemstack, placer, pointed_thing) + return minetest.item_place_node(itemstack, player, pointed_thing) end, _mcl_blast_resistance = 0.6, _mcl_hardness = 0.6, diff --git a/small_why_things/init.lua b/small_why_things/init.lua index 8b7dfae..82c61e5 100644 --- a/small_why_things/init.lua +++ b/small_why_things/init.lua @@ -53,8 +53,8 @@ minetest.register_node("small_why_things:craftable_barrier", { groups = {not_solid = 1, cracky = 1, pickaxey = 1}, _mcl_blast_resistance = 1200, _mcl_hardness = 50, - after_place_node = function(pos, placer, itemstack, pointed_thing) - if placer == nil then + after_place_node = function(pos, player, itemstack, pointed_thing) + if player == nil then return end minetest.add_particle({ @@ -63,7 +63,7 @@ minetest.register_node("small_why_things:craftable_barrier", { size = 8, texture = "small_why_things_craftable_barrier.png^[colorize:#FFFF00:127", glow = 14, - playername = placer:get_player_name() + playername = player:get_player_name() }) end, }) diff --git a/sticky_things/init.lua b/sticky_things/init.lua index 2e74d99..63ff3ea 100644 --- a/sticky_things/init.lua +++ b/sticky_things/init.lua @@ -129,7 +129,7 @@ if why.mineclone then minetest.register_node("sticky_things:sticky_block", { description = "Sticky Block", _mcl_hardness = 3, - groups = {cracky = 3, pickaxey = 1}, + groups = {cracky = 3, pickaxey = 1, disable_jump = 1}, tiles = {"sticky_things_sticky_block.png"}, sounds = sticky_block_sounds }) diff --git a/useful_green_potatoes/init.lua b/useful_green_potatoes/init.lua new file mode 100644 index 0000000..5edb2d6 --- /dev/null +++ b/useful_green_potatoes/init.lua @@ -0,0 +1,461 @@ +local sound_mod = default +local gold_itemstring = "default:gold_ingot" +local water_itemstring = "bucket:bucket_water" +local stick_itemstring = "default:stick" +if why.mineclone then + sound_mod = mcl_sounds + gold_itemstring = "mcl_core:gold_ingot" + water_itemstring = "mcl_buckets:bucket_water" + stick_itemstring = "mcl_core:stick" +end + +---------------------USELESS BEANS, BEANGOTS, AND BLOCKS----------------------------------- + +minetest.register_node("useful_green_potatoes:useful_green_potato", { + description = "Useful Green Potato", + drawtype = "plantlike", + tiles = {"useless_beans_useless_bean.png"}, + sounds = sound_mod.node_sound_leaves_default, + groups = {dig_immediate = 3, dig_by_piston = 1, plant = 1, craftitem = 1, dig_by_water = 1, food = 2, eatable = 5, compostability = 85}, + inventory_image = "useless_beans_useless_bean.png", + wield_image = "useless_beans_useless_bean.png", + walkable = false, + on_secondary_use = minetest.item_eat(5), + _mcl_saturation = 6.0, +}) + +local y_max = 31000 +if why.mineclone then y_max = mcl_vars.mg_overworld_max end + +minetest.register_decoration({ + decoration = "useful_green_potatoes:useful_green_potato", + deco_type = "simple", + height = 1, + place_on = {"group:sand", "group:soil", "mcl_mud:mud"}, + sidelen = 16, + noise_params = { + offset = 0, + scale = 0.001, + spread = {x = 125, y = 125, z = 125}, + seed = 8932, + octaves = 6, + persist = 0.666 + }, + y_min = 1, + y_max = y_max, +}) + +minetest.register_node("useful_green_potatoes:useful_green_potato_block", { + description = "Useful Green Potato Block", + tiles = {"useless_beans_useless_bean_block.png"}, + sounds = sound_mod.node_sound_leaves_default, + groups = {dig_immediate = 3, plant = 1, deco_block = 1, fall_damage_add_percent = 150}, +}) + +-- This function is so much more complicated than it needs to be because the player's position +-- is not always accurate (sometimes slightly too high/low), meaning that I have to check a lot +-- more nodes than I wish I did. It also means that there are a lot of false positives. +minetest.register_on_player_hpchange(function(player, hp_change, reason) + if reason.type ~= "fall" then return hp_change end + local player_pos = player:get_pos() + player_pos.y = math.floor(player_pos.y) + if not player_pos then return hp_change end + local solid_detected = false + local y = player_pos.y + 1 + while not solid_detected do + for x = math.floor(player_pos.x), math.ceil(player_pos.x) do + for z = math.floor(player_pos.z), math.ceil(player_pos.z) do + if minetest.get_node({x=x,y=y+1,z=z}).name == "air" then + local pos = {x=x,y=y,z=z} + local node = minetest.get_node(pos) + if node.name ~= "air" then solid_detected = true end + if node.name == "useful_green_potatoes:useful_green_potato_block" then + return math.abs(hp_change), true + end + end + end + end + y = y - 1 + end + return hp_change +end, true) + +minetest.register_craft({ + output = "useful_green_potatoes:useful_green_potato_block", + recipe = { + {"useful_green_potatoes:useful_green_potato", "useful_green_potatoes:useful_green_potato", "useful_green_potatoes:useful_green_potato"}, + {"useful_green_potatoes:useful_green_potato", "useful_green_potatoes:useful_green_potato", "useful_green_potatoes:useful_green_potato"}, + {"useful_green_potatoes:useful_green_potato", "useful_green_potatoes:useful_green_potato", "useful_green_potatoes:useful_green_potato"} + } +}) + +minetest.register_craft({ + output = "useful_green_potatoes:useful_green_potato 9", + type = "shapeless", + recipe = {"useful_green_potatoes:useful_green_potato_block"} +}) + +minetest.register_craftitem("useful_green_potatoes:useful_green_potato_ingot", { + description = "Useful Green Potato Ingot", + inventory_image = "useless_beans_useless_bean_ingot.png", + wield_image = "useless_beans_useless_bean_ingot.png", + groups = {} +}) + +minetest.register_craft({ + output = "useful_green_potatoes:useful_green_potato_ingot", + type = "cooking", + recipe = "useful_green_potatoes:useful_green_potato", + time = 20 +}) + +minetest.register_node("useful_green_potatoes:useful_green_potato_ingot_block", { + description = "Useful Green Potato Ingot Block", + tiles = {"useless_beans_useless_bean_ingot_block.png"}, + sounds = sound_mod.node_sound_metal_default, + groups = {plant = 1, deco_block = 1, pickaxey=4, cracky=3, fall_damage_add_percent = 600, contact_damage = 6}, + _mcl_blast_resistance = 6, + _mcl_hardness = 3, +}) + +local time = 0 +minetest.register_globalstep(function(dtime) + time = time + dtime + if time < 0.5 then return end + time = 0 + for _, player in pairs(minetest.get_connected_players()) do + -- who am I? + local name = player:get_player_name() + + -- where am I? + local pos = player:get_pos() + + -- Am I near a useful green potato ingot block? + local itemstring = "useful_green_potatoes:useful_green_potato_ingot_block" + local near = minetest.find_node_near(pos, 1, itemstring) + if not near then + near = minetest.find_node_near({x=pos.x, y=pos.y-1, z=pos.z}, 1, itemstring) + end + if near then + -- Am I touching the solid liquid source? If so, it hurts + local dist = vector.distance(pos, near) + local dist_feet = vector.distance({x=pos.x, y=pos.y-1, z=pos.z}, near) + if dist < 1.1 or dist_feet < 1.1 then + if player:get_hp() > 0 then + if why.mineclone then + mcl_util.deal_damage(player, 3, {type = "generic"}) + else + player:set_hp(player:get_hp() - 3) + end + end + end + end + end +end) + +minetest.register_craft({ + output = "useful_green_potatoes:useful_green_potato_ingot_block", + recipe = { + {"useful_green_potatoes:useful_green_potato_ingot", "useful_green_potatoes:useful_green_potato_ingot", "useful_green_potatoes:useful_green_potato_ingot"}, + {"useful_green_potatoes:useful_green_potato_ingot", "useful_green_potatoes:useful_green_potato_ingot", "useful_green_potatoes:useful_green_potato_ingot"}, + {"useful_green_potatoes:useful_green_potato_ingot", "useful_green_potatoes:useful_green_potato_ingot", "useful_green_potatoes:useful_green_potato_ingot"} + } +}) + +local gapple_hunger_restore = minetest.item_eat(6) + +local function eat_gapple(itemstack, player, pointed_thing) + if why.mineclone then + local regen_duration, absorbtion_factor = 5, 1 + --TODO: Absorbtion + mcl_potions.regeneration_func(player, 2, regen_duration) + else + player:set_hp((player:get_hp() or 20) + 6) + end + return gapple_hunger_restore(itemstack, player, pointed_thing) +end + +minetest.register_node("useful_green_potatoes:useful_green_potato_gold", { + description = "Golden Useful Green Potato", + drawtype = "plantlike", + tiles = {"useless_beans_useless_bean_gold.png"}, + sounds = sound_mod.node_sound_leaves_default, + groups = {dig_immediate = 3, dig_by_piston = 1, plant = 1, craftitem = 1, deco_block = 1, dig_by_water = 1, food = 2, eatable = 4, can_eat_when_full = 1}, + inventory_image = "useless_beans_useless_bean_gold.png", + wield_image = "useless_beans_useless_bean_gold.png", + walkable = false, + on_secondary_use = eat_gapple, + _mcl_saturation = 9.6, +}) + +minetest.register_craft({ + output = "useful_green_potatoes:useful_green_potato_gold", + light_source = 14, + recipe = { + {gold_itemstring, gold_itemstring, gold_itemstring}, + {gold_itemstring, "useful_green_potatoes:useful_green_potato", gold_itemstring}, + {gold_itemstring, gold_itemstring, gold_itemstring} + } +}) + +---------------------USELESS BEAN LIQUID---------------------------- + +local USE_TEXTURE_ALPHA = true + +if minetest.features.use_texture_alpha_string_modes then + USE_TEXTURE_ALPHA = "blend" +end + +local WATER_VISC = 1 + +minetest.register_node("useful_green_potatoes:useful_green_potato_liquid_flowing", { + description = "Flowing Useful Green Potato Liquid", + _doc_items_create_entry = false, + wield_image = "useless_beans_water_flowing_animated.png^[verticalframe:64:0", + drawtype = "flowingliquid", + tiles = {"useless_beans_water_flowing_animated.png^[verticalframe:64:0"}, + special_tiles = { + { + image="useless_beans_water_flowing_animated.png", + backface_culling=false, + animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=1.5} + }, + { + image="useless_beans_water_flowing_animated.png", + backface_culling=false, + animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=1.5} + }, + }, + color = "#3FE43F", + sounds = sound_mod.node_sound_water_default, + is_ground_content = false, + use_texture_alpha = USE_TEXTURE_ALPHA, + paramtype = "light", + paramtype2 = "flowingliquid", + walkable = false, + pointable = false, + diggable = false, + buildable_to = true, + drop = "", + --drowning = -1, + liquidtype = "flowing", + liquid_alternative_flowing = "useful_green_potatoes:useful_green_potato_liquid_flowing", + liquid_alternative_source = "useful_green_potatoes:useful_green_potato_liquid_source", + liquid_viscosity = WATER_VISC, + liquid_range = 7, + waving = 3, + post_effect_color = {a=60, r=24.7, g=89.4, b=60}, + groups = {water = 1, liquid=2, puts_out_fire=1, not_in_creative_inventory=1, melt_around=1, dig_by_piston=1}, + _mcl_blast_resistance = 100, + -- Hardness intentionally set to infinite instead of 100 (Minecraft value) to avoid problems in creative mode + _mcl_hardness = -1, +}) + +minetest.register_node("useful_green_potatoes:useful_green_potato_liquid_source", { + description = "Useful Green Potato Liquid Source", + _doc_items_entry_name = "Useful Green Potato Liquid", + _doc_items_longdesc = +"Water is abundant in oceans and also appears in a few springs in the ground. You can swim easily in water, but you need to catch your breath from time to time.".."\n\n".. +"Water interacts with lava in various ways:".."\n".. +"• When water is directly above or horizontally next to a lava source, the lava turns into obsidian.".."\n".. +"• When flowing water touches flowing lava either from above or horizontally, the lava turns into cobblestone.".."\n".. +"• When water is directly below lava, the water turns into stone.".."\n", + _doc_items_hidden = false, + drawtype = "liquid", + waving = 3, + tiles = { + {name="useless_beans_water_source_animated.png", animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=3.0}} + }, + special_tiles = { + -- New-style water source material (mostly unused) + { + name="useless_beans_water_source_animated.png", + animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=3.0}, + backface_culling = false, + } + }, + color = "#3FE43F", + sounds = sound_mod.node_sound_water_default, + is_ground_content = false, + use_texture_alpha = USE_TEXTURE_ALPHA, + paramtype = "light", + walkable = false, + pointable = false, + diggable = false, + buildable_to = true, + drop = "", + --drowning = 0, + liquidtype = "source", + liquid_alternative_flowing = "useful_green_potatoes:useful_green_potato_liquid_flowing", + liquid_alternative_source = "useful_green_potatoes:useful_green_potato_liquid_source", + liquid_viscosity = WATER_VISC, + liquid_range = 7, + post_effect_color = {a=60, r=24.7, g=89.4, b=60}, + stack_max = 64, + groups = {water = 1, liquid=2, puts_out_fire=1, not_in_creative_inventory=1, melt_around=1, dig_by_piston=1}, + _mcl_blast_resistance = 100, + -- Hardness intentionally set to infinite instead of 100 (Minecraft value) to avoid problems in creative mode + _mcl_hardness = -1, +}) +if why.mineclone then + mcl_buckets.register_liquid({ + source_place = "useful_green_potatoes:useful_green_potato_liquid_source", + source_take = {"useful_green_potatoes:useful_green_potato_liquid_source"}, + bucketname = "useful_green_potatoes:bucket_useful_green_potato_liquid", + inventory_image = "useless_beans_bucket_useless_bean_liquid.png", + name = "Useful Green Potato Liquid Bucket", + longdesc = "A bucket can be used to collect and release liquids. This one is filled with useful green potato liquid.", + usagehelp = "Place it to empty the bucket and create a useful green potato liquid source.", + tt_help = "Places a useful green potato liquid source", + groups = { }, + }) +else + bucket.register_liquid("useful_green_potatoes:useful_green_potato_liquid_source", "useful_green_potatoes:useful_green_potato_liquid_flowing", + "useful_green_potatoes:bucket_useless_bean_liquid", "useless_beans_bucket_useless_bean_liquid.png", "Useful Green Potato Liquid Bucket") +end + +minetest.register_craft({ + output = "useful_green_potatoes:bucket_useful_green_potato_liquid", + type = "shapeless", + recipe = {"useful_green_potatoes:useful_green_potato", water_itemstring} +}) + +---------------------USELESS BEAN TOOLS/ARMOR------------------------ +if why.mineclone or minetest.get_modpath("3d_armor") then + if why.mineclone then + mcl_armor.register_set({ + name = "useful_green_potato", + description = "Useful Green Potato", + durability = 240, + points = { + head = 2, + torso = 6, + legs = 5, + feet = 2, + }, + textures = { + head = "useless_beans_helmet_useless_bean.png", + torso = "useless_beans_chestplate_useless_bean.png", + legs = "useless_beans_leggings_useless_bean.png", + feet = "useless_beans_boots_useless_bean.png", + }, + craft_material = "useful_green_potatoes:useful_green_potato_ingot", + cook_material = "useful_green_potatoes:useful_green_potato_ingot", + sound_equip = "mcl_armor_equip_iron", + sound_unequip = "mcl_armor_unequip_iron", + }) + for _, type in ipairs({"helmet","chestplate","leggings","boots"}) do + minetest.override_item("useful_green_potatoes:"..type.."_useful_green_potato", { + wield_image = "useless_beans_inv_"..type.."_useless_bean.png", + inventory_image = "useless_beans_inv_"..type.."_useless_bean.png" + }) + end + else + -- I'm lazy; they're identical. + for type, name in pairs({head = "Helmet", torso = "Chestplate", legs = "Leggings", feet = "Boots"}) do + armor:register_armor("useful_green_potatoes:"..name:lower().."_useful_green_potato", { + description = "Useful Green Potato "..name, + texture = "useless_beans_"..name:lower().."_useless_bean.png", + inventory_image = "useless_beans_inv_"..name:lower().."_useless_bean.png", + preview = "useless_beans_"..name:lower().."_useless_bean.png", + groups = {["armor_"..type] = 1, armor_use = 800}, + armor_groups = {fleshy=12}, + }) + end + local p = "useful_green_potatoes:useful_green_potato_ingot" + minetest.register_craft({ + output = "useful_green_potatoes:helmet_useful_green_potato", + recipe = { + {p, p, p}, + {p, "",p}, + } + }) + minetest.register_craft({ + output = "useful_green_potatoes:chestplate_useful_green_potato", + recipe = { + {p, "",p}, + {p, p, p}, + {p, p, p}, + } + }) + minetest.register_craft({ + output = "useful_green_potatoes:leggings_useful_green_potato", + recipe = { + {p, p, p}, + {p, "",p}, + {p, "",p}, + } + }) + minetest.register_craft({ + output = "useful_green_potatoes:boots_useful_green_potato", + recipe = { + {p, "",p}, + {p, "",p} + } + }) + end +end + +for name, long_name in pairs({pick = "Pickaxe", axe = "Axe", hoe = "Hoe", sword = "Sword", shovel = "Shovel"}) do + local def + if why.mineclone then + local mod = "mcl_tools" + if name == "hoe" then mod = "mcl_farming" end + def = table.copy(minetest.registered_items[mod..":"..name.."_iron"]) + else + local mod = "default" + if name == "hoe" then mod = "farming" end + def = table.copy(minetest.registered_items[mod..":"..name.."_steel"]) + end + def.description = "Useful Green Potato "..long_name + def.groups.enchantability = nil + if def._repair_material then def._repair_material = "useful_green_potatoes:useful_green_potato" end + def.inventory_image = "useless_beans_"..name.."_useless_bean.png" + def.wield_image = "useless_beans_"..name.."_useless_bean.png" + minetest.register_tool("useful_green_potatoes:"..name.."_useful_green_potato", def) +end + +minetest.register_craft({ + output = "useful_green_potatoes:pick_useful_green_potato", + recipe = { + {"useful_green_potato:useful_green_potato", "useful_green_potato:useful_green_potato", "useful_green_potato:useful_green_potato"}, + {"", stick_itemstring, ""}, + {"", stick_itemstring, ""} + } +}) + +minetest.register_craft({ + output = "useful_green_potatoes:axe_useful_green_potato", + recipe = { + {"useful_green_potato:useful_green_potato", "useful_green_potato:useful_green_potato", ""}, + {"useful_green_potato:useful_green_potato", stick_itemstring, ""}, + {"", stick_itemstring, ""} + } +}) + +minetest.register_craft({ + output = "useful_green_potatoes:hoe_useful_green_potato", + recipe = { + {"useful_green_potato:useful_green_potato", "useful_green_potato:useful_green_potato", ""}, + {"", stick_itemstring, ""}, + {"", stick_itemstring, ""} + } +}) + +minetest.register_craft({ + output = "useful_green_potatoes:shovel_useful_green_potato", + recipe = { + {"", "useful_green_potato:useful_green_potato", ""}, + {"", stick_itemstring, ""}, + {"", stick_itemstring, ""} + } +}) + +minetest.register_craft({ + output = "useful_green_potatoes:sword_useful_green_potato", + recipe = { + {"", "useful_green_potato:useful_green_potato", ""}, + {"", "useful_green_potato:useful_green_potato", ""}, + {"", stick_itemstring, ""} + } +}) \ No newline at end of file diff --git a/useful_green_potatoes/mod.conf b/useful_green_potatoes/mod.conf new file mode 100644 index 0000000..f58a777 --- /dev/null +++ b/useful_green_potatoes/mod.conf @@ -0,0 +1,5 @@ +name = useful_green_potatoes +title = Useful Green Potatoes +description = A mod adding useful green potatoes to Minetest Game/MineClone. +depends = why_init, useless_beans +optional_depends = default, bucket, mcl_core, mcl_buckets, 3d_armor, mcl_farming, farming \ No newline at end of file diff --git a/useless_beans/init.lua b/useless_beans/init.lua index 8b75293..d4a45ab 100644 --- a/useless_beans/init.lua +++ b/useless_beans/init.lua @@ -36,32 +36,6 @@ minetest.register_decoration({ }, y_min = 4, y_max = 30000, - biomes = { - "Desert", - "Mesa", - "Mesa_sandlevel", - "MesaBryce", - "MesaBryce_sandlevel", - "MesaPlateauF", - "MesaPlateauF_sandlevel", - "MesaPlateauFM", - "MesaPlateauFM_sandlevel", - "BambooJungleEdge", - "MangroveSwamp", - "Jungle", - "JungleEdge", - "BambooJungle", - "BambooJungleM", - "JungleEdgeM", - "JungleM", - "BambooJungleEdgeM", - "cold_desert", - "desert", - "rainforest", - "rainforest_swamp", - "sandstone_desert", - "savanna" - }, decoration = "useless_beans:useless_bean", height = 1, }) @@ -306,9 +280,9 @@ if why.mineclone or minetest.get_modpath("3d_armor") then }, toughness = 0, groups = {useless = 1}, - craft_material = "useless_beans:useless_bean", + craft_material = "useless_beans:useless_bean_ingot", cook_material = "useless_beans:useless_bean_ingot_block", - repair_material = "useless_beans:useless_bean" + repair_material = "useless_beans:useless_bean_ingot" }) else for name, type in pairs({Helmet = "head", Chestplate = "torso", Leggings = "legs", Boots = "feet"}) do diff --git a/useless_beans/mod.conf b/useless_beans/mod.conf index 6964f49..64c2221 100644 --- a/useless_beans/mod.conf +++ b/useless_beans/mod.conf @@ -2,4 +2,4 @@ name = useless_beans title = Useless Beans description = A mod adding useless beans to MineClone. depends = why_init -optional_depends = default, bucket, mcl_core, mcl_buckets, 3d_armor \ No newline at end of file +optional_depends = default, bucket, mcl_core, mcl_buckets, 3d_armor, mcl_farming, farming \ No newline at end of file diff --git a/useless_beans/textures/useless_beans_shield_useless_bean.png b/useless_beans/textures/useless_beans_shield_useless_bean.png new file mode 100644 index 0000000000000000000000000000000000000000..83fdb0a529694ff6492be462c049d576f7a8d377 GIT binary patch literal 9226 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 t!TNqQenb0CKeyM6d53M6gz(;3F-src=<|*a