diff --git a/mods/ENTITIES/mcl_dripping/init.lua b/mods/ENTITIES/mcl_dripping/init.lua index 57ba7ecfef..83e2f503ea 100644 --- a/mods/ENTITIES/mcl_dripping/init.lua +++ b/mods/ENTITIES/mcl_dripping/init.lua @@ -63,4 +63,3 @@ local function register_drop(liquid, glow, sound, nodes) end register_drop("water", 1, "", {"group:opaque", "group:leaves"}) -register_drop("lava", math.max(7, minetest.registered_nodes["mcl_core:lava_source"].light_source - 3), "lava", {"group:opaque"}) \ No newline at end of file diff --git a/mods/ITEMS/mcl_core/crafting.lua b/mods/ITEMS/mcl_core/crafting.lua deleted file mode 100644 index df456cbdcc..0000000000 --- a/mods/ITEMS/mcl_core/crafting.lua +++ /dev/null @@ -1,560 +0,0 @@ --- mods/default/crafting.lua - --- --- Crafting definition --- - -local function craft_planks(output, input) - minetest.register_craft({ - output = "mcl_core:"..output.."wood 4", - recipe = { - {"mcl_core:"..input}, - } - }) -end - -local planks = { - {"", "oak"}, - {"dark", "dark_oak"}, - {"jungle", "jungle"}, - {"acacia", "acacia"}, - {"spruce", "spruce"}, - {"birch", "birch"} -} - -for _, p in pairs(planks) do - craft_planks(p[1], p[1].."tree") - craft_planks(p[1], p[1].."tree_bark") - craft_planks(p[1], "stripped_"..p[2]) - craft_planks(p[1], "stripped_"..p[2].."_bark") -end - -minetest.register_craft({ - type = "shapeless", - output = "mcl_core:mossycobble", - recipe = { "mcl_core:cobble", "mcl_core:vine" }, -}) - -minetest.register_craft({ - type = "shapeless", - output = "mcl_core:stonebrickmossy", - recipe = { "mcl_core:stonebrick", "mcl_core:vine" }, -}) - -minetest.register_craft({ - output = "mcl_core:coarse_dirt 4", - recipe = { - {"mcl_core:dirt", "mcl_core:gravel"}, - {"mcl_core:gravel", "mcl_core:dirt"}, - } -}) -minetest.register_craft({ - output = "mcl_core:coarse_dirt 4", - recipe = { - {"mcl_core:gravel", "mcl_core:dirt"}, - {"mcl_core:dirt", "mcl_core:gravel"}, - } -}) - -minetest.register_craft({ - output = "mcl_core:sandstonesmooth 4", - recipe = { - {"mcl_core:sandstone","mcl_core:sandstone"}, - {"mcl_core:sandstone","mcl_core:sandstone"}, - } -}) - -minetest.register_craft({ - output = "mcl_core:redsandstonesmooth 4", - recipe = { - {"mcl_core:redsandstone","mcl_core:redsandstone"}, - {"mcl_core:redsandstone","mcl_core:redsandstone"}, - } -}) - -minetest.register_craft({ - output = "mcl_core:granite_smooth 4", - recipe = { - {"mcl_core:granite", "mcl_core:granite"}, - {"mcl_core:granite", "mcl_core:granite"} - }, -}) - -minetest.register_craft({ - output = "mcl_core:andesite_smooth 4", - recipe = { - {"mcl_core:andesite", "mcl_core:andesite"}, - {"mcl_core:andesite", "mcl_core:andesite"} - }, -}) - -minetest.register_craft({ - output = "mcl_core:diorite_smooth 4", - recipe = { - {"mcl_core:diorite", "mcl_core:diorite"}, - {"mcl_core:diorite", "mcl_core:diorite"} - }, -}) - -minetest.register_craft({ - type = "shapeless", - output = "mcl_core:granite", - recipe = {"mcl_core:diorite", "mcl_nether:quartz"}, -}) - -minetest.register_craft({ - type = "shapeless", - output = "mcl_core:andesite 2", - recipe = {"mcl_core:diorite", "mcl_core:cobble"}, -}) - -minetest.register_craft({ - output = "mcl_core:diorite 2", - recipe = { - {"mcl_core:cobble", "mcl_nether:quartz"}, - {"mcl_nether:quartz", "mcl_core:cobble"}, - } -}) -minetest.register_craft({ - output = "mcl_core:diorite 2", - recipe = { - {"mcl_nether:quartz", "mcl_core:cobble"}, - {"mcl_core:cobble", "mcl_nether:quartz"}, - } -}) - -minetest.register_craft({ - output = "mcl_core:bone_block", - recipe = { - { "mcl_dye:white", "mcl_dye:white", "mcl_dye:white" }, - { "mcl_dye:white", "mcl_dye:white", "mcl_dye:white" }, - { "mcl_dye:white", "mcl_dye:white", "mcl_dye:white" }, - }, -}) - -minetest.register_craft({ - output = "mcl_dye:white 9", - recipe = { - { "mcl_core:bone_block" }, - }, -}) - -minetest.register_craft({ - output = "mcl_core:stick 4", - recipe = { - {"group:wood"}, - {"group:wood"}, - } -}) - - - -minetest.register_craft({ - output = "mcl_core:coalblock", - recipe = { - {"mcl_core:coal_lump", "mcl_core:coal_lump", "mcl_core:coal_lump"}, - {"mcl_core:coal_lump", "mcl_core:coal_lump", "mcl_core:coal_lump"}, - {"mcl_core:coal_lump", "mcl_core:coal_lump", "mcl_core:coal_lump"}, - } -}) - -minetest.register_craft({ - output = "mcl_core:coal_lump 9", - recipe = { - {"mcl_core:coalblock"}, - } -}) - -minetest.register_craft({ - output = "mcl_core:ironblock", - recipe = { - {"mcl_core:iron_ingot", "mcl_core:iron_ingot", "mcl_core:iron_ingot"}, - {"mcl_core:iron_ingot", "mcl_core:iron_ingot", "mcl_core:iron_ingot"}, - {"mcl_core:iron_ingot", "mcl_core:iron_ingot", "mcl_core:iron_ingot"}, - } -}) - -minetest.register_craft({ - output = "mcl_core:iron_ingot 9", - recipe = { - {"mcl_core:ironblock"}, - } -}) - -minetest.register_craft({ - output = "mcl_core:goldblock", - recipe = { - {"mcl_core:gold_ingot", "mcl_core:gold_ingot", "mcl_core:gold_ingot"}, - {"mcl_core:gold_ingot", "mcl_core:gold_ingot", "mcl_core:gold_ingot"}, - {"mcl_core:gold_ingot", "mcl_core:gold_ingot", "mcl_core:gold_ingot"}, - } -}) - -minetest.register_craft({ - output = "mcl_core:gold_ingot 9", - recipe = { - {"mcl_core:goldblock"}, - } -}) - -minetest.register_craft({ - output = "mcl_core:gold_nugget 9", - recipe = {{"mcl_core:gold_ingot"}}, -}) - -minetest.register_craft({ - output = "mcl_core:iron_nugget 9", - recipe = {{"mcl_core:iron_ingot"}}, -}) - -minetest.register_craft({ - output = "mcl_core:gold_ingot", - recipe = { - {"mcl_core:gold_nugget", "mcl_core:gold_nugget", "mcl_core:gold_nugget"}, - {"mcl_core:gold_nugget", "mcl_core:gold_nugget", "mcl_core:gold_nugget"}, - {"mcl_core:gold_nugget", "mcl_core:gold_nugget", "mcl_core:gold_nugget"}, - } -}) - -minetest.register_craft({ - output = "mcl_core:iron_ingot", - recipe = { - {"mcl_core:iron_nugget", "mcl_core:iron_nugget", "mcl_core:iron_nugget"}, - {"mcl_core:iron_nugget", "mcl_core:iron_nugget", "mcl_core:iron_nugget"}, - {"mcl_core:iron_nugget", "mcl_core:iron_nugget", "mcl_core:iron_nugget"}, - } -}) - -minetest.register_craft({ - type = "cooking", - output = "mcl_core:iron_nugget", - recipe = "mcl_mobitems:iron_horse_armor", - cooktime = 10, -}) - -minetest.register_craft({ - type = "cooking", - output = "mcl_core:gold_nugget", - recipe = "mcl_mobitems:gold_horse_armor", - cooktime = 10, -}) - -minetest.register_craft({ - output = "mcl_core:sandstone", - recipe = { - {"mcl_core:sand", "mcl_core:sand"}, - {"mcl_core:sand", "mcl_core:sand"}, - } -}) - -minetest.register_craft({ - output = "mcl_core:redsandstone", - recipe = { - {"mcl_core:redsand", "mcl_core:redsand"}, - {"mcl_core:redsand", "mcl_core:redsand"}, - } -}) - -minetest.register_craft({ - output = "mcl_core:clay", - recipe = { - {"mcl_core:clay_lump", "mcl_core:clay_lump"}, - {"mcl_core:clay_lump", "mcl_core:clay_lump"}, - } -}) - -minetest.register_craft({ - output = "mcl_core:brick_block", - recipe = { - {"mcl_core:brick", "mcl_core:brick"}, - {"mcl_core:brick", "mcl_core:brick"}, - } -}) - -minetest.register_craft({ - output = "mcl_core:paper 3", - recipe = { - {"mcl_core:reeds", "mcl_core:reeds", "mcl_core:reeds"}, - } -}) - -minetest.register_craft({ - output = "mcl_core:ladder 3", - recipe = { - {"mcl_core:stick", "", "mcl_core:stick"}, - {"mcl_core:stick", "mcl_core:stick", "mcl_core:stick"}, - {"mcl_core:stick", "", "mcl_core:stick"}, - } -}) - -minetest.register_craft({ - output = "mcl_core:stonebrick 4", - recipe = { - {"mcl_core:stone", "mcl_core:stone"}, - {"mcl_core:stone", "mcl_core:stone"}, - } -}) - -minetest.register_craft({ - output = "mcl_core:lapisblock", - recipe = { - {"mcl_dye:blue", "mcl_dye:blue", "mcl_dye:blue"}, - {"mcl_dye:blue", "mcl_dye:blue", "mcl_dye:blue"}, - {"mcl_dye:blue", "mcl_dye:blue", "mcl_dye:blue"}, - } -}) - -minetest.register_craft({ - output = "mcl_dye:blue 9", - recipe = { - {"mcl_core:lapisblock"}, - } -}) - -minetest.register_craft({ - output = "mcl_core:emeraldblock", - recipe = { - {"mcl_core:emerald", "mcl_core:emerald", "mcl_core:emerald"}, - {"mcl_core:emerald", "mcl_core:emerald", "mcl_core:emerald"}, - {"mcl_core:emerald", "mcl_core:emerald", "mcl_core:emerald"}, - } -}) - -minetest.register_craft({ - output = "mcl_core:emerald 9", - recipe = { - {"mcl_core:emeraldblock"}, - } -}) - -minetest.register_craft({ - output = "mcl_core:diamondblock", - recipe = { - {"mcl_core:diamond", "mcl_core:diamond", "mcl_core:diamond"}, - {"mcl_core:diamond", "mcl_core:diamond", "mcl_core:diamond"}, - {"mcl_core:diamond", "mcl_core:diamond", "mcl_core:diamond"}, - } -}) - -minetest.register_craft({ - output = "mcl_core:diamond 9", - recipe = { - {"mcl_core:diamondblock"}, - } -}) - -minetest.register_craft({ - output = "mcl_core:apple_gold", - recipe = { - {"mcl_core:gold_ingot", "mcl_core:gold_ingot", "mcl_core:gold_ingot"}, - {"mcl_core:gold_ingot", "mcl_core:apple", "mcl_core:gold_ingot"}, - {"mcl_core:gold_ingot", "mcl_core:gold_ingot", "mcl_core:gold_ingot"}, - } -}) - -minetest.register_craft({ - output = "mcl_core:sugar", - recipe = { - {"mcl_core:reeds"}, - } -}) - -minetest.register_craft({ - output = "mcl_core:bowl 4", - recipe = { - {"group:wood", "", "group:wood"}, - {"", "group:wood", ""}, - } -}) - -minetest.register_craft({ - output = "mcl_core:snowblock", - recipe = { - {"mcl_throwing:snowball", "mcl_throwing:snowball"}, - {"mcl_throwing:snowball", "mcl_throwing:snowball"}, - } -}) - -minetest.register_craft({ - output = "mcl_core:snow 6", - recipe = { - {"mcl_core:snowblock", "mcl_core:snowblock", "mcl_core:snowblock"}, - } -}) - -minetest.register_craft({ - output = 'mcl_core:packed_ice 1', - recipe = { - {'mcl_core:ice', 'mcl_core:ice', 'mcl_core:ice'}, - {'mcl_core:ice', 'mcl_core:ice', 'mcl_core:ice'}, - {'mcl_core:ice', 'mcl_core:ice', 'mcl_core:ice'}, - } -}) - --- --- Crafting (tool repair) --- -minetest.register_craft({ - type = "toolrepair", - additional_wear = -mcl_core.repair, -}) - --- --- Cooking recipes --- - -minetest.register_craft({ - type = "cooking", - output = "mcl_core:glass", - recipe = "group:sand", - cooktime = 10, -}) - -minetest.register_craft({ - type = "cooking", - output = "mcl_core:stone", - recipe = "mcl_core:cobble", - cooktime = 10, -}) - -minetest.register_craft({ - type = "cooking", - output = "mcl_core:stone_smooth", - recipe = "mcl_core:stone", - cooktime = 10, -}) - -minetest.register_craft({ - type = "cooking", - output = "mcl_core:stonebrickcracked", - recipe = "mcl_core:stonebrick", - cooktime = 10, -}) - -minetest.register_craft({ - type = "cooking", - output = "mcl_core:iron_ingot", - recipe = "mcl_core:stone_with_iron", - cooktime = 10, -}) - -minetest.register_craft({ - type = "cooking", - output = "mcl_core:gold_ingot", - recipe = "mcl_core:stone_with_gold", - cooktime = 10, -}) - -minetest.register_craft({ - type = "cooking", - output = "mcl_core:brick", - recipe = "mcl_core:clay_lump", - cooktime = 10, -}) - -minetest.register_craft({ - type = "cooking", - output = "mcl_core:charcoal_lump", - recipe = "group:tree", - cooktime = 10, -}) - -minetest.register_craft({ - type = "cooking", - output = "mcl_core:coal_lump", - recipe = "mcl_core:stone_with_coal", - cooktime = 10, -}) - -minetest.register_craft({ - type = "cooking", - output = "mcl_core:diamond", - recipe = "mcl_core:stone_with_diamond", - cooktime = 10, -}) - -minetest.register_craft({ - type = "cooking", - output = "mcl_core:emerald", - recipe = "mcl_core:stone_with_emerald", - cooktime = 10, -}) - -minetest.register_craft({ - type = "cooking", - output = "mcl_dye:blue", - recipe = "mcl_core:stone_with_lapis", - cooktime = 10, -}) - --- --- Fuels --- - -minetest.register_craft({ - type = "fuel", - recipe = "mcl_core:coalblock", - burntime = 800, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "mcl_core:coal_lump", - burntime = 80, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "mcl_core:charcoal_lump", - burntime = 80, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "group:tree", - burntime = 15, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "group:bark", - burntime = 15, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "mcl_core:ladder", - burntime = 15, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "group:wood", - burntime = 15, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "group:sapling", - burntime = 5, -}) - - - -minetest.register_craft({ - type = "fuel", - recipe = "group:sapling", - burntime = 5, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "mcl_core:bowl", - burntime = 5, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "mcl_core:stick", - burntime = 5, -}) diff --git a/mods/ITEMS/mcl_core/craftitems.lua b/mods/ITEMS/mcl_core/craftitems.lua deleted file mode 100644 index fc84c50f54..0000000000 --- a/mods/ITEMS/mcl_core/craftitems.lua +++ /dev/null @@ -1,194 +0,0 @@ --- mods/default/craftitems.lua - -local S = minetest.get_translator(minetest.get_current_modname()) - --- --- Crafting items --- - -minetest.register_craftitem("mcl_core:stick", { - description = S("Stick"), - _doc_items_longdesc = S("Sticks are a very versatile crafting material; used in countless crafting recipes."), - _doc_items_hidden = false, - inventory_image = "default_stick.png", - stack_max = 64, - groups = { craftitem=1, stick=1 }, - _mcl_toollike_wield = true, -}) - -minetest.register_craftitem("mcl_core:paper", { - description = S("Paper"), - _doc_items_longdesc = S("Paper is used to craft books and maps."), - inventory_image = "default_paper.png", - stack_max = 64, - groups = { craftitem=1 }, -}) - -minetest.register_craftitem("mcl_core:coal_lump", { - description = S("Coal"), - _doc_items_longdesc = S("“Coal” refers to coal lumps obtained by digging coal ore which can be found underground. Coal is your standard furnace fuel, but it can also be used to make torches, coal blocks and a few other things."), - _doc_items_hidden = false, - inventory_image = "default_coal_lump.png", - stack_max = 64, - groups = { craftitem=1, coal=1 }, -}) - -minetest.register_craftitem("mcl_core:charcoal_lump", { - description = S("Charcoal"), - _doc_items_longdesc = S("Charcoal is an alternative furnace fuel created by cooking wood in a furnace. It has the same burning time as coal and also shares many of its crafting recipes, but it can not be used to create coal blocks."), - _doc_items_hidden = false, - inventory_image = "mcl_core_charcoal.png", - stack_max = 64, - groups = { craftitem=1, coal=1 }, -}) - -minetest.register_craftitem("mcl_core:iron_nugget", { - description = S("Iron Nugget"), - _doc_items_longdesc = S("Iron nuggets are very small pieces of molten iron; the main purpose is to create iron ingots."), - inventory_image = "mcl_core_iron_nugget.png", - stack_max = 64, - groups = { craftitem=1 }, -}) - -minetest.register_craftitem("mcl_core:gold_nugget", { - description = S("Gold Nugget"), - _doc_items_longdesc = S("Gold nuggets are very small pieces of molten gold; the main purpose is to create gold ingots."), - inventory_image = "mcl_core_gold_nugget.png", - stack_max = 64, - groups = { craftitem=1 }, -}) - -minetest.register_craftitem("mcl_core:diamond", { - description = S("Diamond"), - _doc_items_longdesc = S("Diamonds are precious minerals and useful to create the highest tier of armor and tools."), - inventory_image = "default_diamond.png", - stack_max = 64, - groups = { craftitem=1 }, -}) - -minetest.register_craftitem("mcl_core:clay_lump", { - description = S("Clay Ball"), - _doc_items_longdesc = S("Clay balls are a raw material, mainly used to create bricks in the furnace."), - _doc_items_hidden = false, - inventory_image = "default_clay_lump.png", - stack_max = 64, - groups = { craftitem=1 }, -}) - -minetest.register_craftitem("mcl_core:iron_ingot", { - description = S("Iron Ingot"), - _doc_items_longdesc = S("Molten iron. It is used to craft armor, tools, and whatnot."), - inventory_image = "default_steel_ingot.png", - stack_max = 64, - groups = { craftitem=1 }, -}) - -minetest.register_craftitem("mcl_core:gold_ingot", { - description = S("Gold Ingot"), - _doc_items_longdesc = S("Molten gold. It is used to craft armor, tools, and whatnot."), - inventory_image = "default_gold_ingot.png", - stack_max = 64, - groups = { craftitem=1 }, -}) - -minetest.register_craftitem("mcl_core:emerald", { - description = S("Emerald"), - _doc_items_longdesc = S("Emeralds are used in villager trades as currency."), - inventory_image = "mcl_core_emerald.png", - stack_max = 64, - groups = { craftitem=1 }, -}) - -minetest.register_craftitem("mcl_core:brick", { - description = S("Brick"), - _doc_items_longdesc = S("Bricks are used to craft brick blocks."), - inventory_image = "default_clay_brick.png", - stack_max = 64, - groups = { craftitem=1 }, -}) - -minetest.register_craftitem("mcl_core:flint", { - description = S("Flint"), - _doc_items_longdesc = S("Flint is a raw material."), - inventory_image = "default_flint.png", - stack_max = 64, - groups = { craftitem=1 }, -}) - -minetest.register_craftitem("mcl_core:sugar", { - description = S("Sugar"), - _doc_items_longdesc = S("Sugar comes from sugar canes and is used to make sweet foods."), - inventory_image = "mcl_core_sugar.png", - stack_max = 64, - groups = { craftitem = 1, brewitem=1 }, -}) - -minetest.register_craftitem("mcl_core:bowl",{ - description = S("Bowl"), - _doc_items_longdesc = S("Bowls are mainly used to hold tasty soups."), - inventory_image = "mcl_core_bowl.png", - stack_max = 64, - groups = { craftitem = 1 }, -}) - -minetest.register_craftitem("mcl_core:apple", { - description = S("Apple"), - _doc_items_longdesc = S("Apples are food items which can be eaten."), - wield_image = "default_apple.png", - inventory_image = "default_apple.png", - stack_max = 64, - on_place = minetest.item_eat(4), - on_secondary_use = minetest.item_eat(4), - groups = { food = 2, eatable = 4, compostability = 65 }, - _mcl_saturation = 2.4, -}) - -local gapple_hunger_restore = minetest.item_eat(4) - -local function eat_gapple(itemstack, placer, pointed_thing) - if pointed_thing.type == "node" then - local node = minetest.get_node(pointed_thing.under) - if placer and not placer: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 - end - end - elseif pointed_thing.type == "object" then - return itemstack - end - - local regen_duration, absorbtion_factor = 5, 1 - if itemstack:get_name() == "mcl_core:apple_gold_enchanted" then - regen_duration, absorbtion_factor = 20, 4 - mcl_potions.fire_resistance_func(placer, 1, 300) - mcl_potions.leaping_func(placer, 1, 300) - end - mcl_potions.swiftness_func(placer, absorbtion_factor, 120) -- TODO: Absorbtion - mcl_potions.regeneration_func(placer, 2, regen_duration) - return gapple_hunger_restore(itemstack, placer, pointed_thing) -end - -minetest.register_craftitem("mcl_core:apple_gold", { - -- TODO: Add special highlight color - description = S("Golden Apple"), - _doc_items_longdesc = S("Golden apples are precious food items which can be eaten."), - wield_image = "mcl_core_apple_golden.png", - inventory_image = "mcl_core_apple_golden.png", - stack_max = 64, - on_place = eat_gapple, - on_secondary_use = eat_gapple, - groups = { food = 2, eatable = 4, can_eat_when_full = 1 }, - _mcl_saturation = 9.6, -}) - -minetest.register_craftitem("mcl_core:apple_gold_enchanted", { - description = S("Enchanted Golden Apple"), - _doc_items_longdesc = S("Golden apples are precious food items which can be eaten."), - wield_image = "mcl_core_apple_golden.png" .. mcl_enchanting.overlay, - inventory_image = "mcl_core_apple_golden.png" .. mcl_enchanting.overlay, - stack_max = 64, - on_place = eat_gapple, - on_secondary_use = eat_gapple, - groups = { food = 2, eatable = 4, can_eat_when_full = 1 }, - _mcl_saturation = 9.6, -}) diff --git a/mods/ITEMS/mcl_core/functions.lua b/mods/ITEMS/mcl_core/functions.lua index fc08a0957c..432b8d709f 100644 --- a/mods/ITEMS/mcl_core/functions.lua +++ b/mods/ITEMS/mcl_core/functions.lua @@ -16,43 +16,6 @@ local ACACIA_TREE_ID = 4 local JUNGLE_TREE_ID = 5 local BIRCH_TREE_ID = 6 -minetest.register_abm({ - label = "Lava cooling", - nodenames = {"group:lava"}, - neighbors = {"group:water"}, - interval = 1, - chance = 1, - action = function(pos, node, active_object_count, active_object_count_wider) - local water = minetest.find_nodes_in_area({x=pos.x-1, y=pos.y-1, z=pos.z-1}, {x=pos.x+1, y=pos.y+1, z=pos.z+1}, "group:water") - - local lavatype = minetest.registered_nodes[node.name].liquidtype - - for w=1, #water do - --local waternode = minetest.get_node(water[w]) - --local watertype = minetest.registered_nodes[waternode.name].liquidtype - -- Lava on top of water: Water turns into stone - if water[w].y < pos.y and water[w].x == pos.x and water[w].z == pos.z then - minetest.set_node(water[w], {name="mcl_core:stone"}) - minetest.sound_play("fire_extinguish_flame", {pos = water[w], gain = 0.25, max_hear_distance = 16}, true) - -- Flowing lava vs water on same level: Lava turns into cobblestone - elseif lavatype == "flowing" and water[w].y == pos.y and (water[w].x == pos.x or water[w].z == pos.z) then - minetest.set_node(pos, {name="mcl_core:cobble"}) - minetest.sound_play("fire_extinguish_flame", {pos = pos, gain = 0.25, max_hear_distance = 16}, true) - -- Lava source vs flowing water above or horizontally neighbored: Lava turns into obsidian - elseif lavatype == "source" and - ((water[w].y > pos.y and water[w].x == pos.x and water[w].z == pos.z) or - (water[w].y == pos.y and (water[w].x == pos.x or water[w].z == pos.z))) then - minetest.set_node(pos, {name="mcl_core:obsidian"}) - minetest.sound_play("fire_extinguish_flame", {pos = pos, gain = 0.25, max_hear_distance = 16}, true) - -- water above flowing lava: Lava turns into cobblestone - elseif lavatype == "flowing" and water[w].y > pos.y and water[w].x == pos.x and water[w].z == pos.z then - minetest.set_node(pos, {name="mcl_core:cobble"}) - minetest.sound_play("fire_extinguish_flame", {pos = pos, gain = 0.25, max_hear_distance = 16}, true) - end - end - end, -}) - -- -- Papyrus and cactus growing -- @@ -97,165 +60,10 @@ function mcl_core.grow_reeds(pos, node) end end --- ABMs - - -local function drop_attached_node(p) - local nn = minetest.get_node(p).name - if nn == "air" or nn == "ignore" then - return - end - minetest.remove_node(p) - for _, item in pairs(minetest.get_node_drops(nn, "")) do - local pos = { - x = p.x + math.random()/2 - 0.25, - y = p.y + math.random()/2 - 0.25, - z = p.z + math.random()/2 - 0.25, - } - if item ~= "" then - minetest.add_item(pos, item) - end - end -end - --- Helper function for node actions for liquid flow -local function liquid_flow_action(pos, group, action) - local function check_detach(pos, xp, yp, zp) - local p = {x=pos.x+xp, y=pos.y+yp, z=pos.z+zp} - local n = minetest.get_node_or_nil(p) - if not n then - return false - end - local d = minetest.registered_nodes[n.name] - if not d then - return false - end - --[[ Check if we want to perform the liquid action. - * 1: Item must be in liquid group - * 2a: If target node is below liquid, always succeed - * 2b: If target node is horizontal to liquid: succeed if source, otherwise check param2 for horizontal flow direction ]] - local range = d.liquid_range or 8 - if (minetest.get_item_group(n.name, group) ~= 0) and - ((yp > 0) or - (yp == 0 and ((d.liquidtype == "source") or (n.param2 > (8-range) and n.param2 < 9)))) then - action(pos) - end - end - local posses = { - { x=-1, y=0, z=0 }, - { x=1, y=0, z=0 }, - { x=0, y=0, z=-1 }, - { x=0, y=0, z=1 }, - { x=0, y=1, z=0 }, - } - for p=1,#posses do - check_detach(pos, posses[p].x, posses[p].y, posses[p].z) - end -end - --- Drop some nodes next to flowing water, if it would flow into the node -minetest.register_abm({ - label = "Wash away dig_by_water nodes by water flow", - nodenames = {"group:dig_by_water"}, - neighbors = {"group:water"}, - interval = 1, - chance = 1, - action = function(pos, node, active_object_count, active_object_count_wider) - liquid_flow_action(pos, "water", function(pos) - drop_attached_node(pos) - minetest.dig_node(pos) - end) - end, -}) - --- Destroy some nodes next to flowing lava, if it would flow into the node -minetest.register_abm({ - label = "Destroy destroy_by_lava_flow nodes by lava flow", - nodenames = {"group:destroy_by_lava_flow"}, - neighbors = {"group:lava"}, - interval = 1, - chance = 1, - action = function(pos, node, active_object_count, active_object_count_wider) - liquid_flow_action(pos, "lava", function(pos) - minetest.remove_node(pos) - minetest.sound_play("builtin_item_lava", {pos = pos, gain = 0.25, max_hear_distance = 16}, true) - minetest.check_for_falling(pos) - end) - end, -}) - --- Cactus mechanisms -minetest.register_abm({ - label = "Cactus growth", - nodenames = {"mcl_core:cactus"}, - neighbors = {"group:sand"}, - interval = 25, - chance = 10, - action = function(pos) - mcl_core.grow_cactus(pos) - end, -}) - -minetest.register_abm({ - label = "Cactus mechanisms", - nodenames = {"mcl_core:cactus"}, - interval = 1, - chance = 1, - action = function(pos, node, active_object_count, active_object_count_wider) - for _, object in pairs(minetest.get_objects_inside_radius(pos, 0.9)) do - local entity = object:get_luaentity() - if entity and entity.name == "__builtin:item" then - object:remove() - end - end - local posses = { { 1, 0 }, { -1, 0 }, { 0, 1 }, { 0, -1 } } - for _, p in pairs(posses) do - local ndef = minetest.registered_nodes[minetest.get_node(vector.new(pos.x + p[1], pos.y, pos.z + p[2])).name] - if ndef and ndef.walkable then - local posy = pos.y - while minetest.get_node(vector.new(pos.x, posy, pos.z)).name == "mcl_core:cactus" do - local pos = vector.new(pos.x, posy, pos.z) - minetest.remove_node(pos) - minetest.add_item(vector.offset(pos, math.random(-0.5, 0.5), 0, math.random(-0.5, 0.5)), "mcl_core:cactus") - posy = posy + 1 - end - break - end - end - end, -}) - - -minetest.register_abm({ - label = "Sugar canes growth", - nodenames = {"mcl_core:reeds"}, - neighbors = {"group:soil_sugarcane"}, - interval = 25, - chance = 10, - action = function(pos) - mcl_core.grow_reeds(pos) - end, -}) - -- -- Sugar canes drop -- -local timber_nodenames={"mcl_core:reeds"} - -minetest.register_on_dignode(function(pos, node) - local i=1 - while timber_nodenames[i]~=nil do - local np={x=pos.x, y=pos.y+1, z=pos.z} - while minetest.get_node(np).name==timber_nodenames[i] do - minetest.remove_node(np) - minetest.add_item(np, timber_nodenames[i]) - np={x=np.x, y=np.y+1, z=np.z} - end - i=i+1 - end -end) - local function air_leaf(leaftype) if math.random(0, 50) == 3 then return {name = "air"} @@ -797,8 +605,6 @@ function mcl_core.generate_huge_jungle_tree(pos) end -local grass_spread_randomizer = PseudoRandom(minetest.get_mapgen_setting("seed")) - function mcl_core.get_grass_palette_index(pos) local biome_data = minetest.get_biome_data(pos) local index = 0 @@ -818,140 +624,6 @@ function mcl_core.get_grass_block_type(pos) return {name = "mcl_core:dirt_with_grass", param2 = mcl_core.get_grass_palette_index(pos)} end ------------------------------- --- Spread grass blocks and mycelium on neighbor dirt ------------------------------- -minetest.register_abm({ - label = "Grass Block and Mycelium spread", - nodenames = {"mcl_core:dirt"}, - neighbors = {"air", "group:grass_block_no_snow", "mcl_core:mycelium"}, - interval = 30, - chance = 20, - catch_up = false, - action = function(pos) - if pos == nil then - return - end - local above = {x=pos.x, y=pos.y+1, z=pos.z} - local abovenode = minetest.get_node(above) - if minetest.get_item_group(abovenode.name, "liquid") ~= 0 or minetest.get_item_group(abovenode.name, "opaque") == 1 then - -- Never grow directly below liquids or opaque blocks - return - end - local light_self = minetest.get_node_light(above) - if not light_self then return end - --[[ Try to find a spreading dirt-type block (e.g. grass block or mycelium) - within a 3×5×3 area, with the source block being on the 2nd-topmost layer. ]] - local nodes = minetest.find_nodes_in_area({x=pos.x-1, y=pos.y-1, z=pos.z-1}, {x=pos.x+1, y=pos.y+3, z=pos.z+1}, "group:spreading_dirt_type") - local p2 - -- Nothing found ? Bail out! - if #nodes <= 0 then - return - else - p2 = nodes[grass_spread_randomizer:next(1, #nodes)] - end - - -- Found it! Now check light levels! - local source_above = {x=p2.x, y=p2.y+1, z=p2.z} - local light_source = minetest.get_node_light(source_above) - if not light_source then return end - - if light_self >= 4 and light_source >= 9 then - -- All checks passed! Let's spread the grass/mycelium! - local n2 = minetest.get_node(p2) - if minetest.get_item_group(n2.name, "grass_block") ~= 0 then - n2 = mcl_core.get_grass_block_type(pos) - end - minetest.set_node(pos, {name=n2.name}) - - -- If this was mycelium, uproot plant above - if n2.name == "mcl_core:mycelium" then - local tad = minetest.registered_nodes[minetest.get_node(above).name] - if tad and tad.groups and tad.groups.non_mycelium_plant then - minetest.dig_node(above) - end - end - end - end -}) - --- Grass/mycelium death in darkness -minetest.register_abm({ - label = "Grass Block / Mycelium in darkness", - nodenames = {"group:spreading_dirt_type"}, - interval = 8, - chance = 50, - catch_up = false, - action = function(pos, node) - local above = {x = pos.x, y = pos.y + 1, z = pos.z} - local name = minetest.get_node(above).name - -- Kill grass/mycelium when below opaque block or liquid - if name ~= "ignore" and (minetest.get_item_group(name, "opaque") == 1 or minetest.get_item_group(name, "liquid") ~= 0) then - minetest.set_node(pos, {name = "mcl_core:dirt"}) - end - end -}) - --- Turn Grass Path and similar nodes to Dirt if a solid node is placed above it -minetest.register_on_placenode(function(pos, newnode, placer, oldnode, itemstack, pointed_thing) - if minetest.get_item_group(newnode.name, "solid") ~= 0 or - minetest.get_item_group(newnode.name, "dirtifier") ~= 0 then - local below = {x=pos.x, y=pos.y-1, z=pos.z} - local belownode = minetest.get_node(below) - if minetest.get_item_group(belownode.name, "dirtifies_below_solid") == 1 then - minetest.set_node(below, {name="mcl_core:dirt"}) - end - end -end) - -minetest.register_abm({ - label = "Turn Grass Path below solid block into Dirt", - nodenames = {"mcl_core:grass_path"}, - neighbors = {"group:solid"}, - interval = 8, - chance = 50, - action = function(pos, node) - local above = {x = pos.x, y = pos.y + 1, z = pos.z} - local name = minetest.get_node(above).name - local nodedef = minetest.registered_nodes[name] - if name ~= "ignore" and nodedef and (nodedef.groups and nodedef.groups.solid) then - minetest.set_node(pos, {name = "mcl_core:dirt"}) - end - end, -}) - -local SAVANNA_INDEX = 1 -minetest.register_lbm({ - label = "Replace legacy dry grass", - name = "mcl_core:replace_legacy_dry_grass_0_65_0", - nodenames = {"mcl_core:dirt_with_dry_grass", "mcl_core:dirt_with_dry_grass_snow"}, - action = function(pos, node) - local biome_data = minetest.get_biome_data(pos) - if biome_data then - local biome = biome_data.biome - local biome_name = minetest.get_biome_name(biome) - local reg_biome = minetest.registered_biomes[biome_name] - if reg_biome then - if node.name == "mcl_core:dirt_with_dry_grass_snow" then - node.name = "mcl_core:dirt_with_grass_snow" - else - node.name = "mcl_core:dirt_with_grass" - end - node.param2 = reg_biome._mcl_palette_index - -- Fall back to savanna palette index - if not node.param2 then - node.param2 = SAVANNA_INDEX - end - minetest.set_node(pos, node) - return - end - end - node.param2 = SAVANNA_INDEX - minetest.set_node(pos, node) - return - end, -}) - -------------------------- -- Try generate tree --- -------------------------- @@ -1109,252 +781,6 @@ function mcl_core.grow_sapling(pos, node) end end --- TODO: Use better tree models for everything --- TODO: Support 2×2 saplings - --- Oak tree -minetest.register_abm({ - label = "Oak tree growth", - nodenames = {"mcl_core:sapling"}, - neighbors = {"group:soil_sapling"}, - interval = 25, - chance = 2, - action = grow_oak -}) -minetest.register_lbm({ - label = "Add growth for unloaded oak tree", - name = "mcl_core:lbm_oak", - nodenames = {"mcl_core:sapling"}, - run_at_every_load = true, - action = grow_oak -}) - --- Dark oak tree -minetest.register_abm({ - label = "Dark oak tree growth", - nodenames = {"mcl_core:darksapling"}, - neighbors = {"group:soil_sapling"}, - interval = 25, - chance = 2, - action = grow_dark_oak -}) -minetest.register_lbm({ - label = "Add growth for unloaded dark oak tree", - name = "mcl_core:lbm_dark_oak", - nodenames = {"mcl_core:darksapling"}, - run_at_every_load = true, - action = grow_dark_oak -}) - --- Jungle Tree -minetest.register_abm({ - label = "Jungle tree growth", - nodenames = {"mcl_core:junglesapling"}, - neighbors = {"group:soil_sapling"}, - interval = 25, - chance = 2, - action = grow_jungle_tree -}) -minetest.register_lbm({ - label = "Add growth for unloaded jungle tree", - name = "mcl_core:lbm_jungle_tree", - nodenames = {"mcl_core:junglesapling"}, - run_at_every_load = true, - action = grow_jungle_tree -}) - --- Spruce tree -minetest.register_abm({ - label = "Spruce tree growth", - nodenames = {"mcl_core:sprucesapling"}, - neighbors = {"group:soil_sapling"}, - interval = 25, - chance = 2, - action = grow_spruce -}) -minetest.register_lbm({ - label = "Add growth for unloaded spruce tree", - name = "mcl_core:lbm_spruce", - nodenames = {"mcl_core:sprucesapling"}, - run_at_every_load = true, - action = grow_spruce -}) - --- Birch tree -minetest.register_abm({ - label = "Birch tree growth", - nodenames = {"mcl_core:birchsapling"}, - neighbors = {"group:soil_sapling"}, - interval = 25, - chance = 2, - action = grow_birch -}) -minetest.register_lbm({ - label = "Add growth for unloaded birch tree", - name = "mcl_core:lbm_birch", - nodenames = {"mcl_core:birchsapling"}, - run_at_every_load = true, - action = grow_birch -}) - --- Acacia tree -minetest.register_abm({ - label = "Acacia tree growth", - nodenames = {"mcl_core:acaciasapling"}, - neighbors = {"group:soil_sapling"}, - interval = 20, - chance = 2, - action = grow_acacia -}) -minetest.register_lbm({ - label = "Add growth for unloaded acacia tree", - name = "mcl_core:lbm_acacia", - nodenames = {"mcl_core:acaciasapling"}, - run_at_every_load = true, - action = grow_acacia -}) - -local function leafdecay_particles(pos, node) - minetest.add_particlespawner({ - amount = math.random(10, 20), - time = 0.1, - minpos = vector.add(pos, {x=-0.4, y=-0.4, z=-0.4}), - maxpos = vector.add(pos, {x=0.4, y=0.4, z=0.4}), - minvel = {x=-0.2, y=-0.2, z=-0.2}, - maxvel = {x=0.2, y=0.1, z=0.2}, - minacc = {x=0, y=-9.81, z=0}, - maxacc = {x=0, y=-9.81, z=0}, - minexptime = 0.1, - maxexptime = 0.5, - minsize = 0.5, - maxsize = 1.5, - collisiondetection = true, - vertical = false, - node = node, - }) -end - -local function vinedecay_particles(pos, node) - local dir = minetest.wallmounted_to_dir(node.param2) - local relpos1, relpos2 - if dir.x < 0 then - relpos1 = { x = -0.45, y = -0.4, z = -0.5 } - relpos2 = { x = -0.4, y = 0.4, z = 0.5 } - elseif dir.x > 0 then - relpos1 = { x = 0.4, y = -0.4, z = -0.5 } - relpos2 = { x = 0.45, y = 0.4, z = 0.5 } - elseif dir.z < 0 then - relpos1 = { x = -0.5, y = -0.4, z = -0.45 } - relpos2 = { x = 0.5, y = 0.4, z = -0.4 } - elseif dir.z > 0 then - relpos1 = { x = -0.5, y = -0.4, z = 0.4 } - relpos2 = { x = 0.5, y = 0.4, z = 0.45 } - else - return - end - - minetest.add_particlespawner({ - amount = math.random(8, 16), - time = 0.1, - minpos = vector.add(pos, relpos1), - maxpos = vector.add(pos, relpos2), - minvel = {x=-0.2, y=-0.2, z=-0.2}, - maxvel = {x=0.2, y=0.1, z=0.2}, - minacc = {x=0, y=-9.81, z=0}, - maxacc = {x=0, y=-9.81, z=0}, - minexptime = 0.1, - maxexptime = 0.5, - minsize = 0.5, - maxsize = 1.0, - collisiondetection = true, - vertical = false, - node = node, - }) -end - ---------------------- --- Vine generating -- ---------------------- -minetest.register_abm({ - label = "Vines growth", - nodenames = {"mcl_core:vine"}, - interval = 47, - chance = 4, - action = function(pos, node, active_object_count, active_object_count_wider) - - -- First of all, check if we are even supported, otherwise, let's die! - if not mcl_core.check_vines_supported(pos, node) then - minetest.remove_node(pos) - vinedecay_particles(pos, node) - minetest.check_for_falling(pos) - return - end - - -- Add vines below pos (if empty) - local function spread_down(origin, target, dir, node) - if math.random(1, 2) == 1 then - if minetest.get_node(target).name == "air" then - minetest.add_node(target, {name = "mcl_core:vine", param2 = node.param2}) - end - end - end - - -- Add vines above pos if it is backed up - local function spread_up(origin, target, dir, node) - local vines_in_area = minetest.find_nodes_in_area({x=origin.x-4, y=origin.y-1, z=origin.z-4}, {x=origin.x+4, y=origin.y+1, z=origin.z+4}, "mcl_core:vine") - -- Less then 4 vines blocks around the ticked vines block (remember the ticked block is counted by above function as well) - if #vines_in_area < 5 then - if math.random(1, 2) == 1 then - if minetest.get_node(target).name == "air" then - local backup_dir = minetest.wallmounted_to_dir(node.param2) - local backup = vector.subtract(target, backup_dir) - local backupnodename = minetest.get_node(backup).name - - -- Check if the block above is supported - if mcl_core.supports_vines(backupnodename) then - minetest.add_node(target, {name = "mcl_core:vine", param2 = node.param2}) - end - end - end - end - end - - local function spread_horizontal(origin, target, dir, node) - local vines_in_area = minetest.find_nodes_in_area({x=origin.x-4, y=origin.y-1, z=origin.z-4}, {x=origin.x+4, y=origin.y+1, z=origin.z+4}, "mcl_core:vine") - -- Less then 4 vines blocks around the ticked vines block (remember the ticked block is counted by above function as well) - if #vines_in_area < 5 then - -- Spread horizontally - local backup_dir = minetest.wallmounted_to_dir(node.param2) - if not vector.equals(backup_dir, dir) then - local target_node = minetest.get_node(target) - if target_node.name == "air" then - local backup = vector.add(target, backup_dir) - local backupnodename = minetest.get_node(backup).name - if mcl_core.supports_vines(backupnodename) then - minetest.add_node(target, {name = "mcl_core:vine", param2 = node.param2}) - end - end - end - end - end - - local directions = { - { { x= 1, y= 0, z= 0 }, spread_horizontal }, - { { x=-1, y= 0, z= 0 }, spread_horizontal }, - { { x= 0, y= 1, z= 0 }, spread_up }, - { { x= 0, y=-1, z= 0 }, spread_down }, - { { x= 0, y= 0, z= 1 }, spread_horizontal }, - { { x= 0, y= 0, z=-1 }, spread_horizontal }, - } - - local d = math.random(1, #directions) - local dir = directions[d][1] - local spread = directions[d][2] - - spread(pos, vector.add(pos, dir), dir, node) - end -}) - -- Returns true of the node supports vines function mcl_core.supports_vines(nodename) local def = minetest.registered_nodes[nodename] @@ -1380,137 +806,6 @@ mcl_core.leafdecay_enable_cache = true -- Spread the load of finding trunks mcl_core.leafdecay_trunk_find_allow_accumulator = 0 -minetest.register_globalstep(function(dtime) - --local finds_per_second = 5000 - mcl_core.leafdecay_trunk_find_allow_accumulator = math.floor(dtime * 5000) -end) - -minetest.register_abm({ - label = "Leaf decay", - nodenames = {"group:leafdecay"}, - neighbors = {"air", "group:liquid"}, - -- A low interval and a high inverse chance spreads the load - interval = 2, - chance = 5, - - action = function(p0, node, _, _) - local do_preserve = false - local d = minetest.registered_nodes[node.name].groups.leafdecay - if not d or d == 0 then - return - end - local n0 = minetest.get_node(p0) - if n0.param2 ~= 0 then - -- Prevent leafdecay for player-placed leaves. - -- param2 is set to 1 after it was placed by the player - return - end - local p0_hash = nil - if mcl_core.leafdecay_enable_cache then - p0_hash = minetest.hash_node_position(p0) - local trunkp = mcl_core.leafdecay_trunk_cache[p0_hash] - if trunkp then - local n = minetest.get_node(trunkp) - local reg = minetest.registered_nodes[n.name] - -- Assume ignore is a trunk, to make the thing work at the border of the active area - if n.name == "ignore" or (reg and reg.groups.tree and reg.groups.tree ~= 0) then - return - end - -- Cache is invalid - table.remove(mcl_core.leafdecay_trunk_cache, p0_hash) - end - end - if mcl_core.leafdecay_trunk_find_allow_accumulator <= 0 then - return - end - mcl_core.leafdecay_trunk_find_allow_accumulator = - mcl_core.leafdecay_trunk_find_allow_accumulator - 1 - -- Assume ignore is a trunk, to make the thing work at the border of the active area - local p1 = minetest.find_node_near(p0, d, {"ignore", "group:tree"}) - if p1 then - do_preserve = true - if mcl_core.leafdecay_enable_cache then - -- Cache the trunk - mcl_core.leafdecay_trunk_cache[p0_hash] = p1 - end - end - if not do_preserve then - -- Drop stuff other than the node itself - local itemstacks = minetest.get_node_drops(n0.name) - for _, itemname in pairs(itemstacks) do - local p_drop = { - x = p0.x - 0.5 + math.random(), - y = p0.y - 0.5 + math.random(), - z = p0.z - 0.5 + math.random(), - } - minetest.add_item(p_drop, itemname) - end - -- Remove node - minetest.remove_node(p0) - leafdecay_particles(p0, n0) - minetest.check_for_falling(p0) - - -- Kill depending vines immediately to skip the vines decay delay - local surround = { - { x = 0, y = 0, z = -1 }, - { x = 0, y = 0, z = 1 }, - { x = -1, y = 0, z = 0 }, - { x = 1, y = 0, z = 0 }, - { x = 0, y = -1, z = -1 }, - } - for s=1, #surround do - local spos = vector.add(p0, surround[s]) - local maybe_vine = minetest.get_node(spos) - --local surround_inverse = vector.multiply(surround[s], -1) - if maybe_vine.name == "mcl_core:vine" and (not mcl_core.check_vines_supported(spos, maybe_vine)) then - minetest.remove_node(spos) - vinedecay_particles(spos, maybe_vine) - minetest.check_for_falling(spos) - end - end - end - end -}) - --- Remove vines which are not supported by anything, similar to leaf decay. ---[[ TODO: Vines are supposed to die immediately when they supporting block is destroyed. -But doing this in Minetest would be too complicated / hacky. This vines decay is a simple -way to make sure that all floating vines are destroyed eventually. ]] -minetest.register_abm({ - label = "Vines decay", - nodenames = {"mcl_core:vine"}, - neighbors = {"air"}, - -- A low interval and a high inverse chance spreads the load - interval = 4, - chance = 8, - action = function(p0, node, _, _) - if not mcl_core.check_vines_supported(p0, node) then - -- Vines must die! - minetest.remove_node(p0) - vinedecay_particles(p0, node) - -- Just in case a falling node happens to float above vines - minetest.check_for_falling(p0) - end - end -}) - --- Melt snow -minetest.register_abm({ - label = "Top snow and ice melting", - nodenames = {"mcl_core:snow", "mcl_core:ice"}, - interval = 16, - chance = 8, - action = function(pos, node) - if minetest.get_node_light(pos, 0) >= 12 then - if node.name == "mcl_core:ice" then - mcl_core.melt_ice(pos) - else - minetest.remove_node(pos) - end - end - end -}) - --[[ Call this for vines nodes only. Given the pos and node of a vines node, this returns true if the vines are supported and false if the vines are currently floating. diff --git a/mods/ITEMS/mcl_core/init.lua b/mods/ITEMS/mcl_core/init.lua index c345d057bc..a36244beaa 100644 --- a/mods/ITEMS/mcl_core/init.lua +++ b/mods/ITEMS/mcl_core/init.lua @@ -20,11 +20,3 @@ mcl_autogroup.register_diggroup("hoey") local modpath = minetest.get_modpath(minetest.get_current_modname()) dofile(modpath.."/functions.lua") dofile(modpath.."/nodes_base.lua") -- Simple solid cubic nodes with simple definitions -dofile(modpath.."/nodes_liquid.lua") -- Liquids -dofile(modpath.."/nodes_cactuscane.lua") -- Cactus and sugar canes -dofile(modpath.."/nodes_trees.lua") -- Tree nodes: Wood, Planks, Sapling, Leaves -dofile(modpath.."/nodes_glass.lua") -- Glass -dofile(modpath.."/nodes_climb.lua") -- Climbable nodes -dofile(modpath.."/nodes_misc.lua") -- Other and special nodes -dofile(modpath.."/craftitems.lua") -dofile(modpath.."/crafting.lua") diff --git a/mods/ITEMS/mcl_core/nodes_base.lua b/mods/ITEMS/mcl_core/nodes_base.lua index 0e9b53d041..a718b79866 100644 --- a/mods/ITEMS/mcl_core/nodes_base.lua +++ b/mods/ITEMS/mcl_core/nodes_base.lua @@ -2,16 +2,6 @@ local S = minetest.get_translator(minetest.get_current_modname()) -- Simple solid cubic nodes, most of them are the ground materials and simple building blocks -local translucent_ice = minetest.settings:get_bool("mcl_translucent_ice", false) -local ice_drawtype, ice_texture_alpha -if translucent_ice then - ice_drawtype = "glasslike" - ice_texture_alpha = minetest.features.use_texture_alpha_string_modes and "blend" or true -else - ice_drawtype = "normal" - ice_texture_alpha = minetest.features.use_texture_alpha_string_modes and "opaque" or false -end - mcl_core.fortune_drop_ore = { discrete_uniform_distribution = true, min_count = 2, @@ -22,347 +12,27 @@ mcl_core.fortune_drop_ore = { minetest.register_node("mcl_core:stone", { description = S("Stone"), - _doc_items_longdesc = S("One of the most common blocks in the world, almost the entire underground consists of stone. It sometimes contains ores. Stone may be created when water meets lava."), - _doc_items_hidden = false, - tiles = {"default_stone.png"}, + tiles = {"default_cobble.png"}, -- Early stone looks like cobble is_ground_content = true, stack_max = 64, - groups = {pickaxey=1, stone=1, building_block=1, material_stone=1}, - drop = "mcl_core:cobble", - sounds = mcl_sounds.node_sound_stone_defaults(), + groups = {handy=1, shovely=1, stone=1, building_block=1, material_stone=1}, + drop = "mcl_core:stone", _mcl_blast_resistance = 6, _mcl_hardness = 1.5, _mcl_silk_touch_drop = true, - after_dig_node = function(pos, oldnode, oldmetadata, digger) - if awards and awards.unlock and digger and digger:is_player() then - awards.unlock(digger:get_player_name(), "mcl:stoneAge") + on_construct = function (pos) + if pos.y == 0 then + minetest.set_node(pos, {name="mcl_core:dirt_with_grass"}) end - end, -}) - -minetest.register_node("mcl_core:stone_with_coal", { - description = S("Coal Ore"), - _doc_items_longdesc = S("Some coal contained in stone, it is very common and can be found inside stone in medium to large clusters at nearly every height."), - _doc_items_hidden = false, - tiles = {"mcl_core_coal_ore.png"}, - is_ground_content = true, - stack_max = 64, - groups = {pickaxey=1, building_block=1, material_stone=1, xp=1, blast_furnace_smeltable=1}, - drop = "mcl_core:coal_lump", - sounds = mcl_sounds.node_sound_stone_defaults(), - _mcl_blast_resistance = 3, - _mcl_hardness = 3, - _mcl_silk_touch_drop = true, - _mcl_fortune_drop = mcl_core.fortune_drop_ore, -}) - -minetest.register_node("mcl_core:stone_with_iron", { - description = S("Iron Ore"), - _doc_items_longdesc = S("Some iron contained in stone, it is prety common and can be found below sea level."), - tiles = {"mcl_core_iron_ore.png"}, - is_ground_content = true, - stack_max = 64, - groups = {pickaxey=3, building_block=1, material_stone=1, blast_furnace_smeltable=1}, - drop = "mcl_core:stone_with_iron", - sounds = mcl_sounds.node_sound_stone_defaults(), - _mcl_blast_resistance = 3, - _mcl_hardness = 3, - _mcl_silk_touch_drop = true, -}) - - -minetest.register_node("mcl_core:stone_with_gold", { - description = S("Gold Ore"), - _doc_items_longdesc = S("This stone contains pure gold, a rare metal."), - tiles = {"mcl_core_gold_ore.png"}, - is_ground_content = true, - stack_max = 64, - groups = {pickaxey=4, building_block=1, material_stone=1, blast_furnace_smeltable=1}, - drop = "mcl_core:stone_with_gold", - sounds = mcl_sounds.node_sound_stone_defaults(), - _mcl_blast_resistance = 3, - _mcl_hardness = 3, - _mcl_silk_touch_drop = true, -}) - -local redstone_timer = 68.28 -local function redstone_ore_activate(pos) - minetest.swap_node(pos, {name="mcl_core:stone_with_redstone_lit"}) - local t = minetest.get_node_timer(pos) - t:start(redstone_timer) -end -minetest.register_node("mcl_core:stone_with_redstone", { - description = S("Redstone Ore"), - _doc_items_longdesc = S("Redstone ore is commonly found near the bottom of the world. It glows when it is punched or walked upon."), - tiles = {"mcl_core_redstone_ore.png"}, - is_ground_content = true, - stack_max = 64, - groups = {pickaxey=4, building_block=1, material_stone=1, xp=7, blast_furnace_smeltable=1}, - drop = { - items = { - max_items = 1, - { - items = {"mesecons:redstone 4"}, - rarity = 2, - }, - { - items = {"mesecons:redstone 5"}, - }, - } - }, - sounds = mcl_sounds.node_sound_stone_defaults(), - on_punch = redstone_ore_activate, - on_walk_over = redstone_ore_activate, -- Uses walkover mod - _mcl_blast_resistance = 3, - _mcl_hardness = 3, - _mcl_silk_touch_drop = true, - _mcl_fortune_drop = { - discrete_uniform_distribution = true, - items = {"mesecons:redstone"}, - min_count = 4, - max_count = 5, - } -}) - -local function redstone_ore_reactivate(pos) - local t = minetest.get_node_timer(pos) - t:start(redstone_timer) -end --- Light the redstone ore up when it has been touched -minetest.register_node("mcl_core:stone_with_redstone_lit", { - description = S("Lit Redstone Ore"), - _doc_items_create_entry = false, - tiles = {"mcl_core_redstone_ore.png"}, - paramtype = "light", - light_source = 9, - is_ground_content = true, - stack_max = 64, - groups = {pickaxey=4, not_in_creative_inventory=1, material_stone=1, xp=7, blast_furnace_smeltable=1}, - drop = { - items = { - max_items = 1, - { - items = {"mesecons:redstone 4"}, - rarity = 2, - }, - { - items = {"mesecons:redstone 5"}, - }, - } - }, - sounds = mcl_sounds.node_sound_stone_defaults(), - -- Reset timer after re-punching or stepping on - on_punch = redstone_ore_reactivate, - on_walk_over = redstone_ore_reactivate, -- Uses walkover mod - -- Turn back to normal node after some time has passed - on_timer = function(pos, elapsed) - minetest.swap_node(pos, {name="mcl_core:stone_with_redstone"}) - end, - _mcl_blast_resistance = 3, - _mcl_hardness = 3, - _mcl_silk_touch_drop = {"mcl_core:stone_with_redstone"}, - _mcl_fortune_drop = { - discrete_uniform_distribution = true, - items = {"mesecons:redstone"}, - min_count = 4, - max_count = 5, - } -}) - -minetest.register_node("mcl_core:stone_with_lapis", { - description = S("Lapis Lazuli Ore"), - _doc_items_longdesc = S("Lapis lazuli ore is the ore of lapis lazuli. It can be rarely found in clusters near the bottom of the world."), - tiles = {"mcl_core_lapis_ore.png"}, - is_ground_content = true, - stack_max = 64, - groups = {pickaxey=3, building_block=1, material_stone=1, xp=6, blast_furnace_smeltable=1}, - drop = { - max_items = 1, - items = { - {items = {"mcl_dye:blue 8"},rarity = 5}, - {items = {"mcl_dye:blue 7"},rarity = 5}, - {items = {"mcl_dye:blue 6"},rarity = 5}, - {items = {"mcl_dye:blue 5"},rarity = 5}, - {items = {"mcl_dye:blue 4"}}, - } - }, - sounds = mcl_sounds.node_sound_stone_defaults(), - _mcl_blast_resistance = 3, - _mcl_hardness = 3, - _mcl_silk_touch_drop = true, - _mcl_fortune_drop = mcl_core.fortune_drop_ore, -}) - -minetest.register_node("mcl_core:stone_with_emerald", { - description = S("Emerald Ore"), - _doc_items_longdesc = S("Emerald ore is the ore of emeralds. It is very rare and can be found alone, not in clusters."), - tiles = {"mcl_core_emerald_ore.png"}, - is_ground_content = true, - stack_max = 64, - groups = {pickaxey=4, building_block=1, material_stone=1, xp=6, blast_furnace_smeltable=1}, - drop = "mcl_core:emerald", - sounds = mcl_sounds.node_sound_stone_defaults(), - _mcl_blast_resistance = 3, - _mcl_hardness = 3, - _mcl_silk_touch_drop = true, - _mcl_fortune_drop = mcl_core.fortune_drop_ore, -}) - -minetest.register_node("mcl_core:stone_with_diamond", { - description = S("Diamond Ore"), - _doc_items_longdesc = S("Diamond ore is rare and can be found in clusters near the bottom of the world."), - tiles = {"mcl_core_diamond_ore.png"}, - is_ground_content = true, - stack_max = 64, - groups = {pickaxey=4, building_block=1, material_stone=1, xp=4, blast_furnace_smeltable=1}, - drop = "mcl_core:diamond", - sounds = mcl_sounds.node_sound_stone_defaults(), - _mcl_blast_resistance = 3, - _mcl_hardness = 3, - _mcl_silk_touch_drop = true, - _mcl_fortune_drop = mcl_core.fortune_drop_ore, -}) - -minetest.register_node("mcl_core:stonebrick", { - description = S("Stone Bricks"), - _doc_items_longdesc = doc.sub.items.temp.build, - tiles = {"default_stone_brick.png"}, - stack_max = 64, - groups = {pickaxey=1, stone=1, stonebrick=1, building_block=1, material_stone=1}, - sounds = mcl_sounds.node_sound_stone_defaults(), - is_ground_content = false, - _mcl_blast_resistance = 6, - _mcl_hardness = 1.5, -}) - -minetest.register_node("mcl_core:stonebrickcarved", { - description = S("Chiseled Stone Bricks"), - _doc_items_longdesc = doc.sub.items.temp.build, - tiles = {"mcl_core_stonebrick_carved.png"}, - stack_max = 64, - groups = {pickaxey=1, stone=1, stonebrick=1, building_block=1, material_stone=1}, - sounds = mcl_sounds.node_sound_stone_defaults(), - is_ground_content = false, - _mcl_blast_resistance = 6, - _mcl_hardness = 1.5, -}) - -minetest.register_node("mcl_core:stonebrickcracked", { - description = S("Cracked Stone Bricks"), - _doc_items_longdesc = doc.sub.items.temp.build, - tiles = {"mcl_core_stonebrick_cracked.png"}, - stack_max = 64, - groups = {pickaxey=1, stone=1, stonebrick=1, building_block=1, material_stone=1}, - sounds = mcl_sounds.node_sound_stone_defaults(), - is_ground_content = false, - _mcl_blast_resistance = 6, - _mcl_hardness = 1.5, -}) - -minetest.register_node("mcl_core:stonebrickmossy", { - description = S("Mossy Stone Bricks"), - _doc_items_longdesc = doc.sub.items.temp.build, - tiles = {"mcl_core_stonebrick_mossy.png"}, - stack_max = 64, - groups = {pickaxey=1, stone=1, stonebrick=1, building_block=1, material_stone=1}, - sounds = mcl_sounds.node_sound_stone_defaults(), - is_ground_content = false, - _mcl_blast_resistance = 6, - _mcl_hardness = 1.5, -}) - -minetest.register_node("mcl_core:stone_smooth", { - description = S("Polished Stone"), - _doc_items_longdesc = doc.sub.items.temp.build, - tiles = {"mcl_stairs_stone_slab_top.png"}, - stack_max = 64, - groups = {pickaxey=1, stone=1, building_block=1, material_stone=1}, - sounds = mcl_sounds.node_sound_stone_defaults(), - is_ground_content = false, - _mcl_blast_resistance = 6, - _mcl_hardness = 1.5, -}) - -minetest.register_node("mcl_core:granite", { - description = S("Granite"), - _doc_items_longdesc = S("Granite is an igneous rock."), - tiles = {"mcl_core_granite.png"}, - is_ground_content = true, - stack_max = 64, - groups = {pickaxey=1, stone=1, building_block=1, material_stone=1}, - sounds = mcl_sounds.node_sound_stone_defaults(), - _mcl_blast_resistance = 6, - _mcl_hardness = 1.5, -}) - -minetest.register_node("mcl_core:granite_smooth", { - description = S("Polished Granite"), - _doc_items_longdesc = S("Polished granite is a decorative building block made from granite."), - tiles = {"mcl_core_granite_smooth.png"}, - stack_max = 64, - is_ground_content = false, - groups = {pickaxey=1, stone=1, building_block=1, material_stone=1}, - sounds = mcl_sounds.node_sound_stone_defaults(), - _mcl_blast_resistance = 6, - _mcl_hardness = 1.5, -}) - -minetest.register_node("mcl_core:andesite", { - description = S("Andesite"), - _doc_items_longdesc = S("Andesite is an igneous rock."), - tiles = {"mcl_core_andesite.png"}, - is_ground_content = true, - stack_max = 64, - groups = {pickaxey=1, stone=1, building_block=1, material_stone=1}, - sounds = mcl_sounds.node_sound_stone_defaults(), - _mcl_blast_resistance = 6, - _mcl_hardness = 1.5, -}) - -minetest.register_node("mcl_core:andesite_smooth", { - description = S("Polished Andesite"), - _doc_items_longdesc = S("Polished andesite is a decorative building block made from andesite."), - tiles = {"mcl_core_andesite_smooth.png"}, - is_ground_content = false, - stack_max = 64, - groups = {pickaxey=1, stone=1, building_block=1, material_stone=1}, - sounds = mcl_sounds.node_sound_stone_defaults(), - _mcl_blast_resistance = 6, - _mcl_hardness = 1.5, -}) - -minetest.register_node("mcl_core:diorite", { - description = S("Diorite"), - _doc_items_longdesc = S("Diorite is an igneous rock."), - tiles = {"mcl_core_diorite.png"}, - is_ground_content = true, - stack_max = 64, - groups = {pickaxey=1, stone=1, building_block=1, material_stone=1}, - sounds = mcl_sounds.node_sound_stone_defaults(), - _mcl_blast_resistance = 6, - _mcl_hardness = 1.5, -}) - -minetest.register_node("mcl_core:diorite_smooth", { - description = S("Polished Diorite"), - _doc_items_longdesc = S("Polished diorite is a decorative building block made from diorite."), - tiles = {"mcl_core_diorite_smooth.png"}, - is_ground_content = false, - stack_max = 64, - groups = {pickaxey=1, stone=1, building_block=1, material_stone=1}, - sounds = mcl_sounds.node_sound_stone_defaults(), - _mcl_blast_resistance = 6, - _mcl_hardness = 1.5, + end }) -- Grass Block minetest.register_node("mcl_core:dirt_with_grass", { description = S("Grass Block"), - _doc_items_longdesc = S("A grass block is dirt with a grass cover. Grass blocks are resourceful blocks which allow the growth of all sorts of plants. They can be turned into farmland with a hoe and turned into grass paths with a shovel. In light, the grass slowly spreads onto dirt nearby. Under an opaque block or a liquid, a grass block may turn back to dirt."), - _doc_items_hidden = false, paramtype2 = "color", - tiles = {"mcl_core_grass_block_top.png", { name="default_dirt.png", color="white" }}, - overlay_tiles = {"mcl_core_grass_block_top.png", "", {name="mcl_core_grass_block_side_overlay.png", tileable_vertical=false}}, + tiles = {"mcl_core_grass_block_top.png"}, + overlay_tiles = {"mcl_core_grass_block_top.png"}, palette = "mcl_core_palette_grass.png", palette_index = 0, color = "#8EB971", @@ -374,702 +44,9 @@ minetest.register_node("mcl_core:dirt_with_grass", { spreading_dirt_type = 1, enderman_takable = 1, building_block = 1, compostability = 30, path_creation_possible=1 }, - drop = "mcl_core:dirt", - sounds = mcl_sounds.node_sound_dirt_defaults({ - footstep = {name="default_grass_footstep", gain=0.1}, - }), - on_construct = function(pos) - local node = minetest.get_node(pos) - if node.param2 == 0 then - local new_node = mcl_core.get_grass_block_type(pos) - if new_node.param2 ~= 0 or new_node.name ~= "mcl_core:dirt_with_grass" then - minetest.set_node(pos, new_node) - end - end - return mcl_core.on_snowable_construct(pos) - end, - _mcl_snowed = "mcl_core:dirt_with_grass_snow", + drop = "mcl_core:stone", + -- _mcl_snowed = "mcl_core:dirt_with_grass_snow", _mcl_blast_resistance = 0.5, _mcl_hardness = 0.6, _mcl_silk_touch_drop = true, }) -mcl_core.register_snowed_node("mcl_core:dirt_with_grass_snow", "mcl_core:dirt_with_grass", nil, nil, true, S("Dirt with Snow")) - -minetest.register_node("mcl_core:grass_path", { - tiles = {"mcl_core_grass_path_top.png", "default_dirt.png", "mcl_core_grass_path_side.png"}, - description = S("Grass Path"), - _doc_items_longdesc = S("Grass paths are a decorative variant of grass blocks. Their top has a different color and they are a bit lower than grass blocks, making them useful to build footpaths. Grass paths can be created with a shovel. A grass path turns into dirt when it is below a solid block."), - drop = "mcl_core:dirt", - is_ground_content = true, - use_texture_alpha = minetest.features.use_texture_alpha_string_modes and "opaque" or false, - drawtype = "nodebox", - paramtype = "light", - node_box = { - type = "fixed", - fixed = { - -- 15/16 of the normal height - {-0.5, -0.5, -0.5, 0.5, 0.4375, 0.5}, - } - }, - groups = {handy=1,shovely=1, cultivatable=2, dirtifies_below_solid=1, dirtifier=1, deco_block=1 }, - sounds = mcl_sounds.node_sound_dirt_defaults({ - footstep = {name="default_grass_footstep", gain=0.1}, - }), - _mcl_blast_resistance = 0.65, - _mcl_hardness = 0.6, -}) - --- TODO: Add particles -minetest.register_node("mcl_core:mycelium", { - description = S("Mycelium"), - _doc_items_longdesc = S("Mycelium is a type of dirt and the ideal soil for mushrooms. Unlike other dirt-type blocks, it can not be turned into farmland with a hoe. In light, mycelium slowly spreads over nearby dirt. Under an opaque block or a liquid, it eventually turns back into dirt."), - tiles = {"mcl_core_mycelium_top.png", "default_dirt.png", {name="mcl_core_mycelium_side.png", tileable_vertical=false}}, - is_ground_content = true, - stack_max = 64, - groups = { handy = 1, shovely = 1, dirt = 2, spreading_dirt_type = 1, enderman_takable = 1, building_block = 1, soil_sapling = 2, path_creation_possible=1}, - drop = "mcl_core:dirt", - sounds = mcl_sounds.node_sound_dirt_defaults({ - footstep = {name="default_grass_footstep", gain=0.1}, - }), - - on_construct = mcl_core.on_snowable_construct, - _mcl_snowed = "mcl_core:mycelium_snow", - _mcl_blast_resistance = 0.5, - _mcl_hardness = 0.6, - _mcl_silk_touch_drop = true, -}) -mcl_core.register_snowed_node("mcl_core:mycelium_snow", "mcl_core:mycelium", nil, nil, false, S("Mycelium with Snow")) - -minetest.register_node("mcl_core:podzol", { - description = S("Podzol"), - _doc_items_longdesc = S("Podzol is a type of dirt found in taiga forests. Only a few plants are able to survive on it."), - tiles = {"mcl_core_dirt_podzol_top.png", "default_dirt.png", {name="mcl_core_dirt_podzol_side.png", tileable_vertical=false}}, - is_ground_content = true, - stack_max = 64, - groups = {handy=1,shovely=3, dirt=2,soil=1, soil_sapling=2, soil_sugarcane=1, enderman_takable=1, building_block=1,path_creation_possible=1}, - drop = "mcl_core:dirt", - sounds = mcl_sounds.node_sound_dirt_defaults(), - on_construct = mcl_core.on_snowable_construct, - _mcl_snowed = "mcl_core:podzol_snow", - _mcl_blast_resistance = 0.5, - _mcl_hardness = 0.6, - _mcl_silk_touch_drop = true, -}) -mcl_core.register_snowed_node("mcl_core:podzol_snow", "mcl_core:podzol", nil, nil, false, S("Podzol with Snow")) - -minetest.register_node("mcl_core:dirt", { - description = S("Dirt"), - _doc_items_longdesc = S("Dirt acts as a soil for a few plants. When in light, this block may grow a grass or mycelium cover if such blocks are nearby."), - _doc_items_hidden = false, - tiles = {"default_dirt.png"}, - is_ground_content = true, - stack_max = 64, - groups = {handy=1,shovely=1, dirt=1,soil=1, soil_sapling=2, soil_sugarcane=1, cultivatable=2, enderman_takable=1, building_block=1, path_creation_possible=1}, - sounds = mcl_sounds.node_sound_dirt_defaults(), - _mcl_blast_resistance = 0.5, - _mcl_hardness = 0.5, -}) - -minetest.register_node("mcl_core:coarse_dirt", { - description = S("Coarse Dirt"), - _doc_items_longdesc = S("Coarse dirt acts as a soil for some plants and is similar to dirt, but it will never grow a cover."), - tiles = {"mcl_core_coarse_dirt.png"}, - is_ground_content = true, - stack_max = 64, - groups = { handy = 1,shovely = 1, dirt = 3, soil = 1, soil_sugarcane = 1, cultivatable = 1, enderman_takable = 1, building_block = 1, soil_sapling = 2, path_creation_possible=1}, - sounds = mcl_sounds.node_sound_dirt_defaults(), - _mcl_blast_resistance = 0.5, - _mcl_hardness = 0.5, -}) - -minetest.register_node("mcl_core:gravel", { - description = S("Gravel"), - _doc_items_longdesc = S("This block consists of a couple of loose stones and can't support itself."), - tiles = {"default_gravel.png"}, - is_ground_content = true, - stack_max = 64, - groups = {handy=1,shovely=1, falling_node=1, enderman_takable=1, building_block=1, material_sand=1}, - drop = { - max_items = 1, - items = { - {items = {"mcl_core:flint"},rarity = 10}, - {items = {"mcl_core:gravel"}} - } - }, - sounds = mcl_sounds.node_sound_dirt_defaults({ - footstep = {name="default_gravel_footstep", gain=0.45}, - }), - _mcl_blast_resistance = 0.6, - _mcl_hardness = 0.6, - _mcl_silk_touch_drop = true, - _mcl_fortune_drop = { - [1] = { - max_items = 1, - items = { - {items = {"mcl_core:flint"},rarity = 7}, - {items = {"mcl_core:gravel"}} - } - }, - [2] = { - max_items = 1, - items = { - {items = {"mcl_core:flint"},rarity = 4}, - {items = {"mcl_core:gravel"}} - } - }, - [3] = "mcl_core:flint", - }, -}) - --- sandstone -- -minetest.register_node("mcl_core:sand", { - description = S("Sand"), - _doc_items_longdesc = S("Sand is found in large quantities at beaches and deserts."), - _doc_items_hidden = false, - tiles = {"default_sand.png"}, - is_ground_content = true, - stack_max = 64, - groups = {handy=1,shovely=1, falling_node=1, sand=1, soil_sugarcane=1, enderman_takable=1, building_block=1, material_sand=1}, - sounds = mcl_sounds.node_sound_sand_defaults(), - _mcl_blast_resistance = 0.5, - _mcl_hardness = 0.5, -}) - -minetest.register_node("mcl_core:sandstone", { - description = S("Sandstone"), - _doc_items_hidden = false, - _doc_items_longdesc = S("Sandstone is compressed sand and is a rather soft kind of stone."), - tiles = {"mcl_core_sandstone_top.png", "mcl_core_sandstone_bottom.png", "mcl_core_sandstone_normal.png"}, - is_ground_content = true, - stack_max = 64, - groups = {pickaxey=1, sandstone=1, normal_sandstone=1, building_block=1, material_stone=1}, - sounds = mcl_sounds.node_sound_stone_defaults(), - _mcl_blast_resistance = 0.8, - _mcl_hardness = 0.8, -}) - -minetest.register_node("mcl_core:sandstonesmooth", { - description = S("Cut Sandstone"), - _doc_items_longdesc = S("Cut sandstone is a decorative building block."), - tiles = {"mcl_core_sandstone_top.png", "mcl_core_sandstone_bottom.png", "mcl_core_sandstone_smooth.png"}, - is_ground_content = false, - stack_max = 64, - groups = {pickaxey=1, sandstone=1, normal_sandstone=1, building_block=1, material_stone=1}, - sounds = mcl_sounds.node_sound_stone_defaults(), - _mcl_blast_resistance = 0.8, - _mcl_hardness = 0.8, -}) - -minetest.register_node("mcl_core:sandstonecarved", { - description = S("Chiseled Sandstone"), - _doc_items_longdesc = S("Chiseled sandstone is a decorative building block."), - tiles = {"mcl_core_sandstone_top.png", "mcl_core_sandstone_bottom.png", "mcl_core_sandstone_carved.png"}, - is_ground_content = false, - stack_max = 64, - groups = {pickaxey=1, sandstone=1, normal_sandstone=1, building_block=1, material_stone=1}, - sounds = mcl_sounds.node_sound_stone_defaults(), - _mcl_blast_resistance = 0.8, - _mcl_hardness = 0.8, -}) - -minetest.register_node("mcl_core:sandstonesmooth2", { - description = S("Smooth Sandstone"), - _doc_items_hidden = false, - _doc_items_longdesc = S("Smooth sandstone is compressed sand and is a rather soft kind of stone."), - tiles = {"mcl_core_sandstone_top.png"}, - is_ground_content = false, - stack_max = 64, - groups = {pickaxey=1, sandstone=1, normal_sandstone=1, building_block=1, material_stone=1}, - sounds = mcl_sounds.node_sound_stone_defaults(), - _mcl_blast_resistance = 0.8, - _mcl_hardness = 0.8, -}) - --- red sandstone -- - -minetest.register_node("mcl_core:redsand", { - description = S("Red Sand"), - _doc_items_longdesc = S("Red sand is found in large quantities in mesa biomes."), - tiles = {"mcl_core_red_sand.png"}, - is_ground_content = true, - stack_max = 64, - groups = {handy=1,shovely=1, falling_node=1, sand=1, soil_sugarcane=1, enderman_takable=1, building_block=1, material_sand=1}, - sounds = mcl_sounds.node_sound_sand_defaults(), - _mcl_blast_resistance = 0.5, - _mcl_hardness = 0.5, -}) - -minetest.register_node("mcl_core:redsandstone", { - description = S("Red Sandstone"), - _doc_items_longdesc = S("Red sandstone is compressed red sand and is a rather soft kind of stone."), - tiles = {"mcl_core_red_sandstone_top.png", "mcl_core_red_sandstone_bottom.png", "mcl_core_red_sandstone_normal.png"}, - is_ground_content = true, - stack_max = 64, - groups = {pickaxey=1, sandstone=1, red_sandstone=1, building_block=1, material_stone=1}, - sounds = mcl_sounds.node_sound_stone_defaults(), - _mcl_blast_resistance = 0.8, - _mcl_hardness = 0.8, -}) - -minetest.register_node("mcl_core:redsandstonesmooth", { - description = S("Cut Red Sandstone"), - _doc_items_longdesc = S("Cut red sandstone is a decorative building block."), - tiles = {"mcl_core_red_sandstone_top.png", "mcl_core_red_sandstone_bottom.png", "mcl_core_red_sandstone_smooth.png"}, - is_ground_content = false, - stack_max = 64, - groups = {pickaxey=1, sandstone=1, red_sandstone=1, building_block=1, material_stone=1}, - sounds = mcl_sounds.node_sound_stone_defaults(), - _mcl_blast_resistance = 0.8, - _mcl_hardness = 0.8, -}) - -minetest.register_node("mcl_core:redsandstonecarved", { - description = S("Chiseled Red Sandstone"), - _doc_items_longdesc = S("Chiseled red sandstone is a decorative building block."), - tiles = {"mcl_core_red_sandstone_top.png", "mcl_core_red_sandstone_bottom.png", "mcl_core_red_sandstone_carved.png"}, - is_ground_content = false, - stack_max = 64, - groups = {pickaxey=1, sandstone=1, red_sandstone=1, building_block=1, material_stone=1}, - sounds = mcl_sounds.node_sound_stone_defaults(), - _mcl_blast_resistance = 0.8, - _mcl_hardness = 0.8, -}) - -minetest.register_node("mcl_core:redsandstonesmooth2", { - description = S("Smooth Red Sandstone"), - _doc_items_longdesc = S("Smooth red sandstone is a decorative building block."), - tiles = {"mcl_core_red_sandstone_top.png"}, - is_ground_content = false, - stack_max = 64, - groups = {pickaxey=1, sandstone=1, red_sandstone=1, building_block=1, material_stone=1}, - sounds = mcl_sounds.node_sound_stone_defaults(), - _mcl_blast_resistance = 0.8, - _mcl_hardness = 0.8, -}) - ---- - -minetest.register_node("mcl_core:clay", { - description = S("Clay"), - _doc_items_longdesc = S("Clay is a versatile kind of earth commonly found at beaches underwater."), - _doc_items_hidden = false, - tiles = {"default_clay.png"}, - is_ground_content = true, - stack_max = 64, - groups = {handy=1,shovely=1, enderman_takable=1, building_block=1}, - drop = "mcl_core:clay_lump 4", - sounds = mcl_sounds.node_sound_dirt_defaults(), - _mcl_blast_resistance = 0.6, - _mcl_hardness = 0.6, - _mcl_silk_touch_drop = true, -}) - -minetest.register_node("mcl_core:brick_block", { - -- Original name: “Bricks” - description = S("Brick Block"), - _doc_items_longdesc = S("Brick blocks are a good building material for building solid houses and can take quite a punch."), - tiles = {"default_brick.png"}, - is_ground_content = false, - stack_max = 64, - groups = {pickaxey=1, building_block=1, material_stone=1}, - sounds = mcl_sounds.node_sound_stone_defaults(), - _mcl_blast_resistance = 6, - _mcl_hardness = 2, -}) - - -minetest.register_node("mcl_core:bedrock", { - description = S("Bedrock"), - _doc_items_longdesc = S("Bedrock is a very hard type of rock. It can not be broken, destroyed, collected or moved by normal means, unless in Creative Mode.").."\n".. - S("In the End dimension, starting a fire on this block will create an eternal fire."), - tiles = {"mcl_core_bedrock.png"}, - stack_max = 64, - groups = {creative_breakable=1, building_block=1, material_stone=1}, - sounds = mcl_sounds.node_sound_stone_defaults(), - is_ground_content = false, - on_blast = function() end, - drop = "", - _mcl_blast_resistance = 3600000, - _mcl_hardness = -1, - - -- Eternal fire on top of bedrock, if in the End dimension - after_destruct = function(pos) - pos.y = pos.y + 1 - if minetest.get_node(pos).name == "mcl_fire:eternal_fire" then - minetest.remove_node(pos) - end - end, - _on_ignite = function(player, pointed_thing) - local pos = pointed_thing.under - local dim = mcl_worlds.pos_to_dimension(pos) - local flame_pos = {x = pos.x, y = pos.y + 1, z = pos.z} - local fn = minetest.get_node(flame_pos) - local pname = player:get_player_name() - if minetest.is_protected(flame_pos, pname) then - return minetest.record_protection_violation(flame_pos, pname) - end - if dim == "end" and fn.name == "air" and pointed_thing.under.y < pointed_thing.above.y then - minetest.set_node(flame_pos, {name = "mcl_fire:eternal_fire"}) - return true - else - return false - end - end, -}) - -minetest.register_node("mcl_core:cobble", { - description = S("Cobblestone"), - _doc_items_longdesc = doc.sub.items.temp.build, - _doc_items_hidden = false, - tiles = {"default_cobble.png"}, - is_ground_content = false, - stack_max = 64, - groups = {pickaxey=1, building_block=1, material_stone=1, cobble=1}, - sounds = mcl_sounds.node_sound_stone_defaults(), - _mcl_blast_resistance = 6, - _mcl_hardness = 2, -}) - -minetest.register_node("mcl_core:mossycobble", { - description = S("Mossy Cobblestone"), - _doc_items_longdesc = doc.sub.items.temp.build, - tiles = {"default_mossycobble.png"}, - is_ground_content = false, - stack_max = 64, - groups = {pickaxey=1, building_block=1, material_stone=1}, - sounds = mcl_sounds.node_sound_stone_defaults(), - _mcl_blast_resistance = 6, - _mcl_hardness = 2, -}) - -minetest.register_node("mcl_core:coalblock", { - description = S("Block of Coal"), - _doc_items_longdesc = S("Blocks of coal are useful as a compact storage of coal and very useful as a furnace fuel. A block of coal is as efficient as 10 coal."), - tiles = {"default_coal_block.png"}, - is_ground_content = false, - stack_max = 64, - groups = {pickaxey=1, flammable=1, building_block=1, material_stone=1, fire_encouragement=5, fire_flammability=5}, - sounds = mcl_sounds.node_sound_stone_defaults(), - _mcl_blast_resistance = 6, - _mcl_hardness = 5, -}) - -minetest.register_node("mcl_core:ironblock", { - description = S("Block of Iron"), - _doc_items_longdesc = S("A block of iron is mostly a decorative block but also useful as a compact storage of iron ingots."), - tiles = {"default_steel_block.png"}, - is_ground_content = false, - stack_max = 64, - groups = {pickaxey=2, building_block=1}, - sounds = mcl_sounds.node_sound_metal_defaults(), - _mcl_blast_resistance = 6, - _mcl_hardness = 5, -}) - -minetest.register_node("mcl_core:goldblock", { - description = S("Block of Gold"), - _doc_items_longdesc = S("A block of gold is mostly a shiny decorative block but also useful as a compact storage of gold ingots."), - tiles = {"default_gold_block.png"}, - is_ground_content = false, - stack_max = 64, - groups = {pickaxey=4, building_block=1}, - sounds = mcl_sounds.node_sound_metal_defaults(), - _mcl_blast_resistance = 6, - _mcl_hardness = 5, -}) - -minetest.register_node("mcl_core:diamondblock", { - description = S("Block of Diamond"), - _doc_items_longdesc = S("A block of diamond is mostly a shiny decorative block but also useful as a compact storage of diamonds."), - tiles = {"default_diamond_block.png"}, - is_ground_content = false, - stack_max = 64, - groups = {pickaxey=4, building_block=1}, - sounds = mcl_sounds.node_sound_stone_defaults(), - _mcl_blast_resistance = 6, - _mcl_hardness = 5, -}) - -minetest.register_node("mcl_core:lapisblock", { - description = S("Lapis Lazuli Block"), - _doc_items_longdesc = S("A lapis lazuli block is mostly a decorative block but also useful as a compact storage of lapis lazuli."), - tiles = {"mcl_core_lapis_block.png"}, - is_ground_content = false, - stack_max = 64, - groups = {pickaxey=3, building_block=1}, - sounds = mcl_sounds.node_sound_stone_defaults(), - _mcl_blast_resistance = 3, - _mcl_hardness = 3, -}) - -minetest.register_node("mcl_core:emeraldblock", { - description = S("Block of Emerald"), - _doc_items_longdesc = S("A block of emerald is mostly a shiny decorative block but also useful as a compact storage of emeralds."), - tiles = {"mcl_core_emerald_block.png"}, - is_ground_content = false, - stack_max = 64, - groups = {pickaxey=4, building_block=1}, - sounds = mcl_sounds.node_sound_stone_defaults(), - _mcl_blast_resistance = 6, - _mcl_hardness = 5, -}) - -minetest.register_node("mcl_core:obsidian", { - description = S("Obsidian"), - _doc_items_longdesc = S("Obsidian is an extremely hard mineral with an enourmous blast-resistance. Obsidian is formed when water meets lava."), - tiles = {"default_obsidian.png"}, - is_ground_content = false, - sounds = mcl_sounds.node_sound_stone_defaults(), - stack_max = 64, - groups = {pickaxey=5, building_block=1, material_stone=1}, - _mcl_blast_resistance = 1200, - _mcl_hardness = 50, - after_dig_node = function(pos, oldnode, oldmetadata, digger) - if awards and awards.unlock and digger and digger:is_player() then - awards.unlock(digger:get_player_name(), "mcl:obsidian") - end - end, -}) - -minetest.register_node("mcl_core:ice", { - description = S("Ice"), - _doc_items_longdesc = S("Ice is a solid block usually found in cold areas. It melts near block light sources at a light level of 12 or higher. When it melts or is broken while resting on top of another block, it will turn into a water source."), - drawtype = ice_drawtype, - tiles = {"default_ice.png"}, - is_ground_content = true, - paramtype = "light", - use_texture_alpha = ice_texture_alpha, - stack_max = 64, - groups = {handy=1,pickaxey=1, slippery=3, building_block=1, ice=1}, - drop = "", - sounds = mcl_sounds.node_sound_glass_defaults(), - node_dig_prediction = "mcl_core:water_source", - after_dig_node = function(pos, oldnode) - mcl_core.melt_ice(pos) - end, - _mcl_blast_resistance = 0.5, - _mcl_hardness = 0.5, - _mcl_silk_touch_drop = true, -}) - -minetest.register_node("mcl_core:packed_ice", { - description = S("Packed Ice"), - _doc_items_longdesc = S("Packed ice is a compressed form of ice. It is opaque and solid."), - tiles = {"mcl_core_ice_packed.png"}, - is_ground_content = true, - stack_max = 64, - groups = {handy=1,pickaxey=1, slippery=3, building_block=1, ice=1}, - drop = "", - sounds = mcl_sounds.node_sound_glass_defaults(), - _mcl_blast_resistance = 0.5, - _mcl_hardness = 0.5, - _mcl_silk_touch_drop = true, -}) - --- Frosted Ice (4 nodes) -for i=0,3 do - local ice = {} - function ice.increase_age(pos, ice_near, first_melt) - -- Increase age of frosted age or turn to water source if too old - local nn = minetest.get_node(pos).name - local age = tonumber(string.sub(nn, -1)) - local dim = mcl_worlds.pos_to_dimension(pos) - if age == nil then return end - if age < 3 then - minetest.swap_node(pos, { name = "mcl_core:frosted_ice_"..(age+1) }) - else - if dim ~= "nether" then - minetest.set_node(pos, { name = "mcl_core:water_source" }) - else - minetest.remove_node(pos) - end - end - -- Spread aging to neighbor blocks, but not recursively - if first_melt and i == 3 then - for j=1, #ice_near do - ice.increase_age(ice_near[j], false) - end - end - end - local use_doc = i == 0 - local longdesc - if use_doc then - longdesc = S("Frosted ice is a short-lived solid block. It melts into a water source within a few seconds.") - end - minetest.register_node("mcl_core:frosted_ice_"..i, { - description = S("Frosted Ice"), - _doc_items_create_entry = use_doc, - _doc_items_longdesc = longdesc, - drawtype = ice_drawtype, - tiles = {"mcl_core_frosted_ice_"..i..".png"}, - is_ground_content = false, - paramtype = "light", - use_texture_alpha = ice_texture_alpha, - stack_max = 64, - groups = {handy=1, frosted_ice=1, slippery=3, not_in_creative_inventory=1, ice=1}, - drop = "", - sounds = mcl_sounds.node_sound_glass_defaults(), - on_construct = function(pos) - local timer = minetest.get_node_timer(pos) - timer:start(1.5) - end, - on_timer = function(pos, elapsed) - local ice_near = minetest.find_nodes_in_area( - { x = pos.x - 1, y = pos.y - 1, z = pos.z - 1 }, - { x = pos.x + 1, y = pos.y + 1, z = pos.z + 1 }, - { "group:frosted_ice" } - ) - -- Check condition to increase age - if (#ice_near < 4 and minetest.get_node_light(pos) > (11 - i)) or math.random(1, 3) == 1 then - ice.increase_age(pos, ice_near, true) - end - local timer = minetest.get_node_timer(pos) - timer:start(1.5) - end, - _mcl_blast_resistance = 0.5, - _mcl_hardness = 0.5, - }) - - -- Add entry aliases for the Help - if minetest.get_modpath("doc") and i > 0 then - doc.add_entry_alias("nodes", "mcl_core:frosted_ice_0", "nodes", "mcl_core:frosted_ice_"..i) - end -end - -for i=1,8 do - local id, desc, longdesc, usagehelp, tt_help, help, walkable, drawtype, node_box - if i == 1 then - id = "mcl_core:snow" - desc = S("Top Snow") - tt_help = S("Stackable") - longdesc = S("Top snow is a layer of snow. It melts near light sources other than the sun with a light level of 12 or higher.").."\n"..S("Top snow can be stacked and has one of 8 different height levels. At levels 2-8, top snow is collidable. Top snow drops 2-9 snowballs, depending on its height.") - usagehelp = S("This block can only be placed on full solid blocks and on another top snow (which increases its height).") - walkable = false - else - id = "mcl_core:snow_"..i - help = false - if minetest.get_modpath("doc") then - doc.add_entry_alias("nodes", "mcl_core:snow", "nodes", id) - end - walkable = true - end - if i ~= 8 then - drawtype = "nodebox" - node_box = { - type = "fixed", - fixed = { -0.5, -0.5, -0.5, 0.5, -0.5 + (2*i)/16, 0.5 }, - } - end - local function on_place(itemstack, placer, pointed_thing) - -- Placement is only allowed on top of solid blocks - if pointed_thing.type ~= "node" then - -- no interaction possible with entities - return itemstack - end - local def = minetest.registered_nodes[minetest.get_node(pointed_thing.under).name] - local above = pointed_thing.above - local under = pointed_thing.under - local unode = minetest.get_node(under) - - -- Check special rightclick action of pointed node - if def and def.on_rightclick then - if not placer:get_player_control().sneak then - return def.on_rightclick(under, unode, placer, itemstack, - pointed_thing) or itemstack, false - end - end - - -- Get position where snow would be placed - local target - if minetest.registered_nodes[unode.name].buildable_to then - target = under - else - target = above - end - local tnode = minetest.get_node(target) - - -- Stack snow - local g = minetest.get_item_group(tnode.name, "top_snow") - if g > 0 then - local itemstring = itemstack:get_name() - local itemcount = itemstack:get_count() - local fakestack = ItemStack(itemstring.." "..itemcount) - fakestack:set_name("mcl_core:snow_"..math.min(8, (i+g))) - itemstack = minetest.item_place(fakestack, placer, pointed_thing) - minetest.sound_play(mcl_sounds.node_sound_snow_defaults().place, {pos = pointed_thing.under}, true) - itemstack:set_name(itemstring) - return itemstack - end - - -- Place snow normally - local below = {x=target.x, y=target.y-1, z=target.z} - local bnode = minetest.get_node(below) - - if minetest.get_item_group(bnode.name, "solid") == 1 then - minetest.sound_play(mcl_sounds.node_sound_snow_defaults().place, {pos = below}, true) - return minetest.item_place_node(itemstack, placer, pointed_thing) - else - return itemstack - end - end - - minetest.register_node(id, { - description = desc, - _tt_help = tt_help, - _doc_items_longdesc = longdesc, - _doc_items_usagehelp = usagehelp, - _doc_items_create_entry = help, - _doc_items_hidden = false, - tiles = {"default_snow.png"}, - wield_image = "default_snow.png", - wield_scale = { x=1, y=1, z=i }, - is_ground_content = true, - paramtype = "light", - sunlight_propagates = true, - buildable_to = true, - node_placement_prediction = "", -- to prevent client flickering when stacking snow - drawtype = drawtype, - stack_max = 64, - walkable = walkable, - floodable = true, - on_flood = function(pos, oldnode, newnode) - local npos = {x=pos.x, y=pos.y-1, z=pos.z} - local node = minetest.get_node(npos) - mcl_core.clear_snow_dirt(npos, node) - end, - node_box = node_box, - groups = {shovely=1, attached_node=1,deco_block=1, dig_by_piston=1, snow_cover=1, top_snow=i}, - sounds = mcl_sounds.node_sound_snow_defaults(), - on_construct = mcl_core.on_snow_construct, - on_place = on_place, - after_destruct = mcl_core.after_snow_destruct, - drop = "mcl_throwing:snowball "..(i+1), - _mcl_blast_resistance = 0.1, - _mcl_hardness = 0.1, - _mcl_silk_touch_drop = {"mcl_core:snow " .. i}, - }) -end - -minetest.register_node("mcl_core:snowblock", { - description = S("Snow"), - _doc_items_longdesc = S("This is a full block of snow. Snow of this thickness is usually found in areas of extreme cold."), - _doc_items_hidden = false, - tiles = {"default_snow.png"}, - is_ground_content = true, - stack_max = 64, - groups = {shovely=1, building_block=1, snow_cover=1}, - sounds = mcl_sounds.node_sound_snow_defaults(), - on_construct = mcl_core.on_snow_construct, - after_destruct = mcl_core.after_snow_destruct, - drop = "mcl_throwing:snowball 4", - _mcl_blast_resistance = 0.2, - _mcl_hardness = 0.2, - _mcl_silk_touch_drop = true, -}) - --- Add entry aliases for the Help -if minetest.get_modpath("doc") then - doc.add_entry_alias("nodes", "mcl_core:stone_with_redstone", "nodes", "mcl_core:stone_with_redstone_lit") - doc.add_entry_alias("nodes", "mcl_core:water_source", "nodes", "mcl_core:water_flowing") - doc.add_entry_alias("nodes", "mcl_core:lava_source", "nodes", "mcl_core:lava_flowing") -end diff --git a/mods/ITEMS/mcl_core/nodes_cactuscane.lua b/mods/ITEMS/mcl_core/nodes_cactuscane.lua deleted file mode 100644 index 62d5cc2b5f..0000000000 --- a/mods/ITEMS/mcl_core/nodes_cactuscane.lua +++ /dev/null @@ -1,138 +0,0 @@ --- Cactus and Sugar Cane - -local S = minetest.get_translator(minetest.get_current_modname()) - -minetest.register_node("mcl_core:cactus", { - description = S("Cactus"), - _tt_help = S("Grows on sand").."\n"..minetest.colorize(mcl_colors.YELLOW, S("Contact damage: @1 per half second", 1)), - _doc_items_longdesc = S("This is a piece of cactus commonly found in dry areas, especially deserts. Over time, cacti will grow up to 3 blocks high on sand or red sand. A cactus hurts living beings touching it with a damage of 1 HP every half second. When a cactus block is broken, all cactus blocks connected above it will break as well."), - _doc_items_usagehelp = S("A cactus can only be placed on top of another cactus or any sand."), - drawtype = "nodebox", - use_texture_alpha = minetest.features.use_texture_alpha_string_modes and "clip" or true, - tiles = {"mcl_core_cactus_top.png", "mcl_core_cactus_bottom.png", "mcl_core_cactus_side.png"}, - is_ground_content = true, - stack_max = 64, - groups = { - handy = 1, attached_node = 1, deco_block = 1, dig_by_piston = 1, - plant = 1, enderman_takable = 1, compostability = 50 - }, - sounds = mcl_sounds.node_sound_wood_defaults(), - paramtype = "light", - sunlight_propagates = true, - node_placement_prediction = "", - node_box = { - type = "fixed", - fixed = { - {-7/16, -8/16, -7/16, 7/16, 8/16, 7/16}, -- Main body - {-8/16, -8/16, -7/16, 8/16, 8/16, -7/16}, -- Spikes - {-8/16, -8/16, 7/16, 8/16, 8/16, 7/16}, -- Spikes - {-7/16, -8/16, -8/16, -7/16, 8/16, 8/16}, -- Spikes - {7/16, -8/16, 8/16, 7/16, 8/16, -8/16}, -- Spikes - }, - }, - collision_box = { - type = "fixed", - fixed = {-7/16, -8/16, -7/16, 7/16, 7/16, 7/16}, -- Main body. slightly lower than node box - }, - selection_box = { - type = "fixed", - fixed = { - {-7/16, -8/16, -7/16, 7/16, 8/16, 7/16}, - }, - }, - -- Only allow to place cactus on sand or cactus - on_place = mcl_util.generate_on_place_plant_function(function(pos, node) - local node_below = minetest.get_node_or_nil({x=pos.x,y=pos.y-1,z=pos.z}) - if not node_below then return false end - return (node_below.name == "mcl_core:cactus" or minetest.get_item_group(node_below.name, "sand") == 1) - end), - _mcl_blast_resistance = 0.4, - _mcl_hardness = 0.4, -}) - -minetest.register_node("mcl_core:reeds", { - description = S("Sugar Canes"), - _tt_help = S("Grows on sand or dirt next to water"), - _doc_items_longdesc = S("Sugar canes are a plant which has some uses in crafting. Sugar canes will slowly grow up to 3 blocks when they are next to water and are placed on a grass block, dirt, sand, red sand, podzol or coarse dirt. When a sugar cane is broken, all sugar canes connected above will break as well."), - _doc_items_usagehelp = S("Sugar canes can only be placed top of other sugar canes and on top of blocks on which they would grow."), - drawtype = "plantlike", - paramtype2 = "color", - tiles = {"mcl_core_papyrus.png"}, - palette = "mcl_core_palette_grass.png", - palette_index = 0, - inventory_image = "mcl_core_reeds.png", - wield_image = "mcl_core_reeds.png", - paramtype = "light", - walkable = false, - is_ground_content = true, - node_box = { - type = "fixed", - fixed = { - {-7/16, -8/16, -7/16, 7/16, 8/16, 7/16}, -- Main Body - {-8/16, -8/16, -7/16, 8/16, 8/16, -7/16}, -- Spikes - {-8/16, -8/16, 7/16, 8/16, 8/16, 7/16}, -- Spikes - {-7/16, -8/16, -8/16, -7/16, 8/16, 8/16}, -- Spikes - {7/16, -8/16, 8/16, 7/16, 8/16, -8/16}, -- Spikes - }, - }, - selection_box = { - type = "fixed", - fixed = { - {-6/16, -8/16, -6/16, 6/16, 8/16, 6/16}, - }, - }, - stack_max = 64, - groups = { - dig_immediate = 3, craftitem = 1, deco_block = 1, dig_by_piston = 1, - plant = 1, non_mycelium_plant = 1, compostability = 50 - }, - sounds = mcl_sounds.node_sound_leaves_defaults(), - node_placement_prediction = "", - drop = "mcl_core:reeds", -- to prevent color inheritation - on_place = mcl_util.generate_on_place_plant_function(function(place_pos, place_node) - local soil_pos = {x=place_pos.x, y=place_pos.y-1, z=place_pos.z} - local soil_node = minetest.get_node_or_nil(soil_pos) - if not soil_node then return false end - local snn = soil_node.name -- soil node name - - -- Placement rules: - -- * On top of group:soil_sugarcane AND next to water or frosted ice. OR - -- * On top of sugar canes - -- * Not inside liquid - if snn == "mcl_core:reeds" then - return true - elseif minetest.get_item_group(snn, "soil_sugarcane") == 0 then - return false - end - local place_node = minetest.get_node(place_pos) - local pdef = minetest.registered_nodes[place_node.name] - if pdef and pdef.liquidtype ~= "none" then - return false - end - - -- Legal water position rules are the same as for decoration spawn_by rules. - -- This differs from MC, which does not allow diagonal neighbors - -- and neighbors 1 layer above. - local np1 = {x=soil_pos.x-1, y=soil_pos.y, z=soil_pos.z-1} - local np2 = {x=soil_pos.x+1, y=soil_pos.y+1, z=soil_pos.z+1} - if #minetest.find_nodes_in_area(np1, np2, {"group:water", "group:frosted_ice"}) > 0 then - -- Water found! Sugar canes are happy! :-) - return true - end - - -- No water found! Sugar canes are not amuzed and refuses to be placed. :-( - return false - - end), - on_construct = function(pos) - local node = minetest.get_node(pos) - if node.param2 == 0 then - node.param2 = mcl_core.get_grass_palette_index(pos) - if node.param2 ~= 0 then - minetest.set_node(pos, node) - end - end - end, - _mcl_blast_resistance = 0, - _mcl_hardness = 0, -}) diff --git a/mods/ITEMS/mcl_core/nodes_climb.lua b/mods/ITEMS/mcl_core/nodes_climb.lua deleted file mode 100644 index 1a6780618f..0000000000 --- a/mods/ITEMS/mcl_core/nodes_climb.lua +++ /dev/null @@ -1,173 +0,0 @@ --- Climbable nodes -local S = minetest.get_translator(minetest.get_current_modname()) - -local function rotate_climbable(pos, node, user, mode) - if mode == screwdriver.ROTATE_FACE then - local r = screwdriver.rotate.wallmounted(pos, node, mode) - node.param2 = r - minetest.swap_node(pos, node) - return true - end - return false -end - -minetest.register_node("mcl_core:ladder", { - description = S("Ladder"), - _doc_items_longdesc = S("A piece of ladder which allows you to climb vertically. Ladders can only be placed on the side of solid blocks and not on glass, leaves, ice, slabs, glowstone, nor sea lanterns."), - drawtype = "signlike", - is_ground_content = false, - tiles = {"default_ladder.png"}, - inventory_image = "default_ladder.png", - wield_image = "default_ladder.png", - paramtype = "light", - sunlight_propagates = true, - paramtype2 = "wallmounted", - walkable = true, - climbable = true, - node_box = { - type = "wallmounted", - wall_side = { -0.5, -0.5, -0.5, -7/16, 0.5, 0.5 }, - }, - selection_box = { - type = "wallmounted", - wall_side = { -0.5, -0.5, -0.5, -7/16, 0.5, 0.5 }, - }, - stack_max = 64, - groups = {handy=1,axey=1, attached_node=1, deco_block=1, dig_by_piston=1}, - sounds = mcl_sounds.node_sound_wood_defaults(), - node_placement_prediction = "", - -- Restrict placement of ladders - on_place = function(itemstack, placer, pointed_thing) - if pointed_thing.type ~= "node" then - -- no interaction possible with entities - return itemstack - end - - local under = pointed_thing.under - local node = minetest.get_node(under) - local def = minetest.registered_nodes[node.name] - if not def then - return itemstack - end - local groups = def.groups - - -- Don't allow to place the ladder at particular nodes - if (groups and (groups.glass or groups.leaves or groups.slab)) or - node.name == "mcl_core:ladder" or node.name == "mcl_core:ice" or node.name == "mcl_nether:glowstone" or node.name == "mcl_ocean:sea_lantern" then - return itemstack - end - - -- Check special rightclick action of pointed node - if def and def.on_rightclick then - if not placer:get_player_control().sneak then - return def.on_rightclick(under, node, placer, itemstack, - pointed_thing) or itemstack, false - end - end - local above = pointed_thing.above - - -- Ladders may not be placed on ceiling or floor - if under.y ~= above.y then - return itemstack - end - local idef = itemstack:get_definition() - local success = minetest.item_place_node(itemstack, placer, pointed_thing) - - if success then - if idef.sounds and idef.sounds.place then - minetest.sound_play(idef.sounds.place, {pos=above, gain=1}, true) - end - end - return itemstack - end, - - _mcl_blast_resistance = 0.4, - _mcl_hardness = 0.4, - on_rotate = rotate_climbable, -}) - - -minetest.register_node("mcl_core:vine", { - description = S("Vines"), - _doc_items_longdesc = S("Vines are climbable blocks which can be placed on the sides of solid full-cube blocks. Vines slowly grow and spread."), - drawtype = "signlike", - tiles = {"mcl_core_vine.png"}, - inventory_image = "mcl_core_vine.png", - wield_image = "mcl_core_vine.png", - paramtype = "light", - sunlight_propagates = true, - paramtype2 = "wallmounted", - walkable = false, - climbable = true, - buildable_to = true, - selection_box = { - type = "wallmounted", - }, - stack_max = 64, - groups = { - handy = 1, axey = 1, shearsy = 1, swordy = 1, deco_block = 1, - dig_by_piston = 1, destroy_by_lava_flow = 1, compostability = 50, - flammable = 2, fire_encouragement = 15, fire_flammability = 100 - }, - sounds = mcl_sounds.node_sound_leaves_defaults(), - drop = "", - _mcl_shears_drop = true, - node_placement_prediction = "", - -- Restrict placement of vines - on_place = function(itemstack, placer, pointed_thing) - if pointed_thing.type ~= "node" then - -- no interaction possible with entities - return itemstack - end - - local under = pointed_thing.under - local node = minetest.get_node(under) - local def = minetest.registered_nodes[node.name] - if not def then return itemstack end - - -- Check special rightclick action of pointed node - if def and def.on_rightclick then - if not placer:get_player_control().sneak then - return def.on_rightclick(under, node, placer, itemstack, - pointed_thing) or itemstack, false - end - end - - -- Only place on full cubes - if not mcl_core.supports_vines(node.name) then - return itemstack - end - - local above = pointed_thing.above - - -- Vines may not be placed on top or below another block - if under.y ~= above.y then - return itemstack - end - local idef = itemstack:get_definition() - local itemstack, success = minetest.item_place_node(itemstack, placer, pointed_thing) - - if success then - if idef.sounds and idef.sounds.place then - minetest.sound_play(idef.sounds.place, {pos=above, gain=1}, true) - end - end - return itemstack - end, - - -- If dug, also dig a “dependant” vine below it. - -- A vine is dependant if it hangs from this node and has no supporting block. - on_dig = function(pos, node, digger) - local below = {x=pos.x, y=pos.y-1, z=pos.z} - local belownode = minetest.get_node(below) - minetest.node_dig(pos, node, digger) - if belownode.name == node.name and (not mcl_core.check_vines_supported(below, belownode)) then - minetest.registered_nodes[node.name].on_dig(below, node, digger) - end - end, - - - _mcl_blast_resistance = 0.2, - _mcl_hardness = 0.2, - on_rotate = false, -}) diff --git a/mods/ITEMS/mcl_core/nodes_glass.lua b/mods/ITEMS/mcl_core/nodes_glass.lua deleted file mode 100644 index 8b3aea6891..0000000000 --- a/mods/ITEMS/mcl_core/nodes_glass.lua +++ /dev/null @@ -1,91 +0,0 @@ --- Glass nodes -local S = minetest.get_translator(minetest.get_current_modname()) -local mod_doc = minetest.get_modpath("doc") - -minetest.register_node("mcl_core:glass", { - description = S("Glass"), - _doc_items_longdesc = S("A decorative and mostly transparent block."), - drawtype = "glasslike_framed_optional", - is_ground_content = false, - tiles = {"default_glass.png", "default_glass_detail.png"}, - paramtype = "light", - paramtype2 = "glasslikeliquidlevel", - sunlight_propagates = true, - stack_max = 64, - groups = {handy=1, glass=1, building_block=1, material_glass=1}, - sounds = mcl_sounds.node_sound_glass_defaults(), - drop = "", - _mcl_blast_resistance = 0.3, - _mcl_hardness = 0.3, - _mcl_silk_touch_drop = true, -}) - ------------------------- --- Create Color Glass -- ------------------------- -local canonical_color = "yellow" -function mcl_core.add_stained_glass(desc, recipeitem, colorgroup, color) - - local longdesc, create_entry, entry_name - if mod_doc then - if color == canonical_color then - longdesc = S("Stained glass is a decorative and mostly transparent block which comes in various different colors.") - entry_name = S("Stained Glass") - else - create_entry = false - end - end - minetest.register_node("mcl_core:glass_"..color, { - description = desc, - _doc_items_create_entry = create_entry, - _doc_items_entry_name = entry_name, - _doc_items_longdesc = longdesc, - drawtype = "glasslike_framed_optional", - is_ground_content = false, - tiles = {"mcl_core_glass_"..color..".png", "mcl_core_glass_"..color.."_detail.png"}, - paramtype = "light", - paramtype2 = "glasslikeliquidlevel", - sunlight_propagates = true, - use_texture_alpha = minetest.features.use_texture_alpha_string_modes and "blend" or true, - stack_max = 64, - -- TODO: Add color to groups - groups = {handy=1, glass=1, building_block=1, material_glass=1}, - sounds = mcl_sounds.node_sound_glass_defaults(), - drop = "", - _mcl_blast_resistance = 0.3, - _mcl_hardness = 0.3, - _mcl_silk_touch_drop = true, - }) - - minetest.register_craft({ - output = "mcl_core:glass_"..color.." 8", - recipe = { - {"mcl_core:glass","mcl_core:glass","mcl_core:glass"}, - {"mcl_core:glass",recipeitem,"mcl_core:glass"}, - {"mcl_core:glass","mcl_core:glass","mcl_core:glass"}, - } - }) - - if mod_doc and color ~= canonical_color then - doc.add_entry_alias("nodes", "mcl_core:glass_"..canonical_color, "nodes", "mcl_core:glass_"..color) - end - -end - ----- colored glass -mcl_core.add_stained_glass( S("Red Stained Glass"), "mcl_dye:red", "basecolor_red", "red") -mcl_core.add_stained_glass( S("Green Stained Glass"), "mcl_dye:dark_green", "unicolor_dark_green", "green") -mcl_core.add_stained_glass( S("Blue Stained Glass"), "mcl_dye:blue", "basecolor_blue", "blue") -mcl_core.add_stained_glass( S("Light Blue Stained Glass"), "mcl_dye:lightblue", "unicolor_light_blue", "light_blue") -mcl_core.add_stained_glass( S("Black Stained Glass"), "mcl_dye:black", "basecolor_black", "black") -mcl_core.add_stained_glass( S("White Stained Glass"), "mcl_dye:white", "basecolor_white", "white") -mcl_core.add_stained_glass( S("Yellow Stained Glass"), "mcl_dye:yellow", "basecolor_yellow", "yellow") -mcl_core.add_stained_glass( S("Brown Stained Glass"), "mcl_dye:brown", "unicolor_dark_orange", "brown") -mcl_core.add_stained_glass( S("Orange Stained Glass"), "mcl_dye:orange", "excolor_orange", "orange") -mcl_core.add_stained_glass( S("Pink Stained Glass"), "mcl_dye:pink", "unicolor_light_red", "pink") -mcl_core.add_stained_glass( S("Grey Stained Glass"), "mcl_dye:dark_grey", "unicolor_darkgrey", "gray") -mcl_core.add_stained_glass( S("Lime Stained Glass"), "mcl_dye:green", "basecolor_green", "lime") -mcl_core.add_stained_glass( S("Light Grey Stained Glass"), "mcl_dye:grey", "basecolor_grey", "silver") -mcl_core.add_stained_glass( S("Magenta Stained Glass"), "mcl_dye:magenta", "basecolor_magenta", "magenta") -mcl_core.add_stained_glass( S("Purple Stained Glass"), "mcl_dye:violet", "excolor_violet", "purple") -mcl_core.add_stained_glass( S("Cyan Stained Glass"), "mcl_dye:cyan", "basecolor_cyan", "cyan") diff --git a/mods/ITEMS/mcl_core/nodes_liquid.lua b/mods/ITEMS/mcl_core/nodes_liquid.lua deleted file mode 100644 index 0e0f71a112..0000000000 --- a/mods/ITEMS/mcl_core/nodes_liquid.lua +++ /dev/null @@ -1,245 +0,0 @@ --- Liquids: Water and lava - -local S = minetest.get_translator(minetest.get_current_modname()) - -local vector = vector -local math = math - ---local WATER_ALPHA = 179 -local WATER_VISC = 1 -local LAVA_VISC = 7 -local LIGHT_LAVA = minetest.LIGHT_MAX -local USE_TEXTURE_ALPHA = true - -if minetest.features.use_texture_alpha_string_modes then - USE_TEXTURE_ALPHA = "blend" -end - -minetest.register_node("mcl_core:water_flowing", { - description = S("Flowing Water"), - _doc_items_create_entry = false, - wield_image = "default_water_flowing_animated.png^[verticalframe:64:0", - drawtype = "flowingliquid", - tiles = {"default_water_flowing_animated.png^[verticalframe:64:0"}, - special_tiles = { - { - image="default_water_flowing_animated.png", - backface_culling=false, - animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=4.0} - }, - { - image="default_water_flowing_animated.png", - backface_culling=false, - animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=4.0} - }, - }, - sounds = mcl_sounds.node_sound_water_defaults(), - 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 = 4, - liquidtype = "flowing", - liquid_alternative_flowing = "mcl_core:water_flowing", - liquid_alternative_source = "mcl_core:water_source", - liquid_viscosity = WATER_VISC, - liquid_range = 7, - post_effect_color = {a=209, r=0x03, g=0x3C, b=0x5C}, - groups = { water=3, liquid=3, puts_out_fire=1, not_in_creative_inventory=1, freezes=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("mcl_core:water_source", { - description = S("Water Source"), - _doc_items_entry_name = S("Water"), - _doc_items_longdesc = -S("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".. -S("Water interacts with lava in various ways:").."\n".. -S("• When water is directly above or horizontally next to a lava source, the lava turns into obsidian.").."\n".. -S("• When flowing water touches flowing lava either from above or horizontally, the lava turns into cobblestone.").."\n".. -S("• When water is directly below lava, the water turns into stone."), - _doc_items_hidden = false, - drawtype = "liquid", - tiles = { - {name="default_water_source_animated.png", animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=5.0}} - }, - special_tiles = { - -- New-style water source material (mostly unused) - { - name="default_water_source_animated.png", - animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=5.0}, - backface_culling = false, - } - }, - sounds = mcl_sounds.node_sound_water_defaults(), - is_ground_content = false, - use_texture_alpha = USE_TEXTURE_ALPHA, - paramtype = "light", - walkable = false, - pointable = false, - diggable = false, - buildable_to = true, - drop = "", - drowning = 4, - liquidtype = "source", - liquid_alternative_flowing = "mcl_core:water_flowing", - liquid_alternative_source = "mcl_core:water_source", - liquid_viscosity = WATER_VISC, - liquid_range = 7, - post_effect_color = {a=209, r=0x03, g=0x3C, b=0x5C}, - stack_max = 64, - groups = { water=3, liquid=3, puts_out_fire=1, freezes=1, not_in_creative_inventory=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("mcl_core:lava_flowing", { - description = S("Flowing Lava"), - _doc_items_create_entry = false, - wield_image = "default_lava_flowing_animated.png^[verticalframe:64:0", - drawtype = "flowingliquid", - tiles = {"default_lava_flowing_animated.png^[verticalframe:64:0"}, - special_tiles = { - { - image="default_lava_flowing_animated.png", - backface_culling=false, - animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=6.6} - }, - { - image="default_lava_flowing_animated.png", - backface_culling=false, - animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=6.6} - }, - }, - paramtype = "light", - paramtype2 = "flowingliquid", - light_source = LIGHT_LAVA, - is_ground_content = false, - sounds = mcl_sounds.node_sound_lava_defaults(), - walkable = false, - pointable = false, - diggable = false, - buildable_to = true, - drop = "", - --[[ Drowning in Minecraft deals 2 damage per second. - In Minetest, drowning damage is dealt every 2 seconds so this - translates to 4 drowning damage ]] - drowning = 4, - liquidtype = "flowing", - liquid_alternative_flowing = "mcl_core:lava_flowing", - liquid_alternative_source = "mcl_core:lava_source", - liquid_viscosity = LAVA_VISC, - liquid_renewable = false, - liquid_range = 3, - damage_per_second = 4*2, - post_effect_color = {a=245, r=208, g=73, b=10}, - groups = { lava=3, liquid=2, destroys_items=1, not_in_creative_inventory=1, dig_by_piston=1, set_on_fire=15}, - _mcl_blast_resistance = 100, - -- Hardness intentionally set to infinite instead of 100 (Minecraft value) to avoid problems in creative mode - _mcl_hardness = -1, -}) - -local fire_text -local fire_enabled = minetest.settings:get_bool("enable_fire", true) -if fire_enabled then - fire_text = S("A lava source sets fire to a couple of air blocks above when they're next to a flammable block.") -else - fire_text = "" -end - -minetest.register_node("mcl_core:lava_source", { - description = S("Lava Source"), - _doc_items_entry_name = "Lava", - _doc_items_longdesc = -S("Lava is hot and rather dangerous. Don't touch it, it will hurt you a lot and it is hard to get out.").."\n".. -fire_text.."\n\n".. -S("Lava interacts with water various ways:").."\n".. -S("• When a lava source is directly below or horizontally next to water, the lava turns into obsidian.").."\n".. -S("• When flowing water touches flowing lava either from above or horizontally, the lava turns into cobblestone.").."\n".. -S("• When lava is directly above water, the water turns into stone."), - drawtype = "liquid", - tiles = { - {name="default_lava_source_animated.png", animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=3.0}} - }, - special_tiles = { - -- New-style lava source material (mostly unused) - { - name="default_lava_source_animated.png", - animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=3.0}, - backface_culling = false, - } - }, - paramtype = "light", - light_source = LIGHT_LAVA, - is_ground_content = false, - sounds = mcl_sounds.node_sound_lava_defaults(), - walkable = false, - pointable = false, - diggable = false, - buildable_to = true, - drop = "", - drowning = 4, - liquidtype = "source", - liquid_alternative_flowing = "mcl_core:lava_flowing", - liquid_alternative_source = "mcl_core:lava_source", - liquid_viscosity = LAVA_VISC, - liquid_renewable = false, - liquid_range = 3, - damage_per_second = 4*2, - post_effect_color = {a=245, r=208, g=73, b=10}, - stack_max = 64, - groups = { lava=3, lava_source=1, liquid=2, destroys_items=1, not_in_creative_inventory=1, dig_by_piston=1, set_on_fire=15, fire_damage=1}, - _mcl_blast_resistance = 100, - -- Hardness intentionally set to infinite instead of 100 (Minecraft value) to avoid problems in creative mode - _mcl_hardness = -1, -}) - -local function emit_lava_particle(pos) - local node = minetest.get_node(pos) - if minetest.get_item_group(node.name, "lava_source") == 0 then - return - end - local ppos = vector.add(pos, { x = math.random(-7, 7)/16, y = 0.45, z = math.random(-7, 7)/16}) - --local spos = vector.add(ppos, { x = 0, y = -0.2, z = 0 }) - local vel = { x = math.random(-3, 3)/10, y = math.random(4, 7), z = math.random(-3, 3)/10 } - local acc = { x = 0, y = -9.81, z = 0 } - -- Lava droplet - minetest.add_particle({ - pos = ppos, - velocity = vel, - acceleration = acc, - expirationtime = 2.5, - collisiondetection = true, - collision_removal = true, - size = math.random(20, 30)/10, - texture = "mcl_particles_lava.png", - glow = LIGHT_LAVA, - }) -end - -if minetest.settings:get("mcl_node_particles") == "full" then - minetest.register_abm({ - label = "Lava particles", - nodenames = {"group:lava_source"}, - interval = 8.0, - chance = 20, - action = function(pos, node) - local apos = {x=pos.x, y=pos.y+1, z=pos.z} - local anode = minetest.get_node(apos) - -- Only emit partiles when directly below lava - if anode.name ~= "air" then - return - end - - minetest.after(math.random(0, 800)*0.01, emit_lava_particle, pos) - end, - }) -end diff --git a/mods/ITEMS/mcl_core/nodes_misc.lua b/mods/ITEMS/mcl_core/nodes_misc.lua deleted file mode 100644 index 5f5b005e20..0000000000 --- a/mods/ITEMS/mcl_core/nodes_misc.lua +++ /dev/null @@ -1,277 +0,0 @@ --- Other nodes -local S = minetest.get_translator(minetest.get_current_modname()) - -local mod_screwdriver = minetest.get_modpath("screwdriver") - -local on_rotate -if mod_screwdriver then - on_rotate = screwdriver.rotate_3way -end - -local alldirs = {{x=0,y=0,z=1}, {x=1,y=0,z=0}, {x=0,y=0,z=-1}, {x=-1,y=0,z=0}, {x=0,y=-1,z=0}, {x=0,y=1,z=0}} - -minetest.register_node("mcl_core:bone_block", { - description = S("Bone Block"), - _doc_items_longdesc = S("Bone blocks are decorative blocks and a compact storage of bone meal."), - tiles = {"mcl_core_bone_block_top.png", "mcl_core_bone_block_top.png", "mcl_core_bone_block_side.png"}, - is_ground_content = false, - paramtype2 = "facedir", - on_place = mcl_util.rotate_axis, - groups = {pickaxey=1, building_block=1, material_stone=1}, - sounds = mcl_sounds.node_sound_stone_defaults(), - on_rotate = on_rotate, - _mcl_blast_resistance = 2, - _mcl_hardness = 2, -}) - -minetest.register_node("mcl_core:slimeblock", { - description = S("Slime Block"), - _doc_items_longdesc = S("Slime blocks are very bouncy and prevent fall damage."), - drawtype = "nodebox", - paramtype = "light", - is_ground_content = false, - node_box = { - type = "fixed", - fixed = { - {-0.25, -0.25, -0.25, 0.25, 0.25, 0.25}, - {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, - } - }, - selection_box = { - type = "regular", - }, - tiles = {"mcl_core_slime.png"}, - use_texture_alpha = minetest.features.use_texture_alpha_string_modes and "blend" or true, - stack_max = 64, - -- According to Minecraft Wiki, bouncing off a slime block from a height off 255 blocks should result in a bounce height of 50 blocks - -- bouncy=44 makes the player bounce up to 49.6. This value was chosen by experiment. - -- bouncy=80 was chosen because it is higher than 66 (bounciness of bed) - groups = {dig_immediate=3, bouncy=80,fall_damage_add_percent=-100,deco_block=1}, - sounds = { - dug = {name="slimenodes_dug", gain=0.6}, - place = {name="slimenodes_place", gain=0.6}, - footstep = {name="slimenodes_step", gain=0.3}, - }, - _mcl_blast_resistance = 0, - _mcl_hardness = 0, - mvps_sticky = function(pos, node, piston_pos) - local connected = {} - for n, v in ipairs(alldirs) do - local neighbor_pos = vector.add(pos, v) - local neighbor_node = minetest.get_node(neighbor_pos) - if neighbor_node then - if neighbor_node.name == "ignore" then - minetest.get_voxel_manip():read_from_map(neighbor_pos, neighbor_pos) - neighbor_node = minetest.get_node(neighbor_pos) - end - local name = neighbor_node.name - if name ~= "air" and name ~= "ignore" and not mesecon.mvps_unsticky[name] then - local piston, piston_side, piston_up, piston_down = false, false, false, false - if name == "mesecons_pistons:piston_sticky_off" or name == "mesecons_pistons:piston_normal_off" then - piston, piston_side = true, true - elseif name == "mesecons_pistons:piston_up_sticky_off" or name == "mesecons_pistons:piston_up_normal_off" then - piston, piston_up = true, true - elseif name == "mesecons_pistons:piston_down_sticky_off" or name == "mesecons_pistons:piston_down_normal_off" then - piston, piston_down = true, true - end - if not( (piston_side and (n-1==neighbor_node.param2)) or (piston_up and (n==5)) or (piston_down and (n==6)) ) then - if piston and piston_pos then - if piston_pos.x == neighbor_pos.x and piston_pos.y == neighbor_pos.y and piston_pos.z == neighbor_pos.z then - -- Loopback to the same piston! Preventing unwanted behavior: - return {}, true - end - end - table.insert(connected, neighbor_pos) - end - end - end - end - return connected, false - end, - -}) - -minetest.register_node("mcl_core:cobweb", { - description = S("Cobweb"), - _tt_help = S("Slows down movement"), - _doc_items_longdesc = S("Cobwebs can be walked through, but significantly slow you down."), - drawtype = "plantlike", - paramtype2 = "degrotate", - visual_scale = 1.1, - stack_max = 64, - tiles = {"mcl_core_web.png"}, - inventory_image = "mcl_core_web.png", - paramtype = "light", - liquid_viscosity = 14, - liquidtype = "source", - liquid_alternative_flowing = "mcl_core:cobweb", - liquid_alternative_source = "mcl_core:cobweb", - liquid_renewable = false, - liquid_range = 0, - walkable = false, - groups = {swordy_cobweb=1, shearsy_cobweb=1, fake_liquid=1, disable_jump=1, deco_block=1, dig_by_piston=1, dig_by_water=1,destroy_by_lava_flow=1,}, - drop = "mcl_mobitems:string", - _mcl_shears_drop = true, - sounds = mcl_sounds.node_sound_leaves_defaults(), - _mcl_blast_resistance = 4, - _mcl_hardness = 4, -}) - - -minetest.register_node("mcl_core:deadbush", { - description = S("Dead Bush"), - _doc_items_longdesc = S("Dead bushes are unremarkable plants often found in dry areas. They can be harvested for sticks."), - _doc_items_hidden = false, - drawtype = "plantlike", - waving = 1, - visual_scale = 1.0, - tiles = {"default_dry_shrub.png"}, - inventory_image = "default_dry_shrub.png", - wield_image = "default_dry_shrub.png", - paramtype = "light", - sunlight_propagates = true, - walkable = false, - stack_max = 64, - buildable_to = true, - groups = {handy=1,shearsy=1, flammable=3,attached_node=1,plant=1,non_mycelium_plant=1,dig_by_water=1,destroy_by_lava_flow=1,deco_block=1, fire_encouragement=60, fire_flammability=100}, - drop = { - max_items = 1, - items = { - { - items = {"mcl_core:stick 2"}, - rarity = 2, - }, - { - items = {"mcl_core:stick 1"}, - rarity = 2, - }, - } - }, - _mcl_shears_drop = true, - sounds = mcl_sounds.node_sound_leaves_defaults(), - selection_box = { - type = "fixed", - fixed = {-5/16, -8/16, -5/16, 5/16, 1/16, 5/16}, - }, - _mcl_blast_resistance = 0, - _mcl_hardness = 0, -}) - -minetest.register_node("mcl_core:barrier", { - description = S("Barrier"), - _doc_items_longdesc = S("Barriers are invisble walkable blocks. They are used to create boundaries of adventure maps and the like. Monsters and animals won't appear on barriers, and fences do not connect to barriers. Other blocks can be built on barriers like on any other block."), - _doc_items_usagehelp = S("When you hold a barrier in hand, you reveal all placed barriers in a short distance around you."), - drawtype = "airlike", - paramtype = "light", - inventory_image = "mcl_core_barrier.png", - wield_image = "mcl_core_barrier.png", - tiles = { "blank.png" }, - stack_max = 64, - sunlight_propagates = true, - is_ground_content = false, - groups = {creative_breakable=1, not_in_creative_inventory = 1, not_solid = 1 }, - on_blast = function() end, - drop = "", - _mcl_blast_resistance = 36000008, - _mcl_hardness = -1, - after_place_node = function(pos, placer, itemstack, pointed_thing) - if placer == nil then - return - end - minetest.add_particle({ - pos = pos, - expirationtime = 1, - size = 8, - texture = "mcl_core_barrier.png", - glow = 14, - playername = placer:get_player_name() - }) - end, - on_place = function(itemstack, placer, pointed_thing) - 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 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 - end - end - - local name = placer:get_player_name() - local privs = minetest.get_player_privs(name) - if not privs.maphack then - minetest.chat_send_player(name, "Placement denied. You need the “maphack” privilege to place barriers.") - return itemstack - end - local new_itemstack = minetest.item_place(itemstack, placer, pointed_thing) - return new_itemstack - end, -}) - --- Same as barrier, but non-pointable. This node is only to be used internally to separate realms. --- It must NOT be used for anything else. --- This node only exists because Minetest does not have support for “dimensions” yet and needs to --- be removed when support for this is implemented. -minetest.register_node("mcl_core:realm_barrier", { - description = S("Realm Barrier"), - _doc_items_create_entry = false, - drawtype = "airlike", - paramtype = "light", - inventory_image = "mcl_core_barrier.png^[colorize:#FF00FF:127^[transformFX", - wield_image = "mcl_core_barrier.png^[colorize:#FF00FF:127^[transformFX", - tiles = { "blank.png" }, - stack_max = 64, - -- To avoid players getting stuck forever between realms - damage_per_second = 8, - sunlight_propagates = true, - is_ground_content = false, - pointable = false, - groups = {not_in_creative_inventory = 1, not_solid = 1 }, - on_blast = function() end, - drop = "", - _mcl_blast_resistance = 36000008, - _mcl_hardness = -1, - -- Prevent placement to protect player from screwing up the world, because the node is not pointable and hard to get rid of. - node_placement_prediction = "", - on_place = function(pos, placer, itemstack, pointed_thing) - minetest.chat_send_player(placer:get_player_name(), minetest.colorize(mcl_colors.RED, "You can't just place a realm barrier by hand!")) - return - end, -}) - - - - --- The void below the bedrock. Void damage is handled in mcl_playerplus. --- The void does not exist as a block in Minecraft but we register it as a --- block here to make things easier for us. -minetest.register_node("mcl_core:void", { - description = S("Void"), - _doc_items_create_entry = false, - drawtype = "airlike", - paramtype = "light", - pointable = false, - walkable = false, - floodable = false, - buildable_to = false, - inventory_image = "mcl_core_void.png", - wield_image = "mcl_core_void.png", - stack_max = 64, - sunlight_propagates = true, - is_ground_content = false, - groups = { not_in_creative_inventory = 1 }, - on_blast = function() end, - -- Prevent placement to protect player from screwing up the world, because the node is not pointable and hard to get rid of. - node_placement_prediction = "", - on_place = function(pos, placer, itemstack, pointed_thing) - minetest.chat_send_player(placer:get_player_name(), minetest.colorize(mcl_colors.RED, "You can't just place the void by hand!")) - return - end, - drop = "", - -- Infinite blast resistance; it should never be destroyed by explosions - _mcl_blast_resistance = -1, - _mcl_hardness = -1, -}) diff --git a/mods/ITEMS/mcl_core/nodes_trees.lua b/mods/ITEMS/mcl_core/nodes_trees.lua deleted file mode 100644 index 54a43d6bfe..0000000000 --- a/mods/ITEMS/mcl_core/nodes_trees.lua +++ /dev/null @@ -1,275 +0,0 @@ --- Tree nodes: Wood, Wooden Planks, Sapling, Leaves, Stripped Wood -local S = minetest.get_translator(minetest.get_current_modname()) - -local mod_screwdriver = minetest.get_modpath("screwdriver") - -local on_rotate -if mod_screwdriver then - on_rotate = screwdriver.rotate_3way -end - --- Register tree trunk (wood) and bark -local function register_tree_trunk(subname, description_trunk, description_bark, longdesc, tile_inner, tile_bark, stripped_variant) - minetest.register_node("mcl_core:"..subname, { - description = description_trunk, - _doc_items_longdesc = longdesc, - _doc_items_hidden = false, - tiles = {tile_inner, tile_inner, tile_bark}, - paramtype2 = "facedir", - on_place = mcl_util.rotate_axis, - stack_max = 64, - groups = {handy=1,axey=1, tree=1, flammable=2, building_block=1, material_wood=1, fire_encouragement=5, fire_flammability=5}, - sounds = mcl_sounds.node_sound_wood_defaults(), - on_rotate = on_rotate, - _mcl_blast_resistance = 2, - _mcl_hardness = 2, - _mcl_stripped_variant = stripped_variant, - }) - - minetest.register_node("mcl_core:"..subname.."_bark", { - description = description_bark, - _doc_items_longdesc = S("This is a decorative block surrounded by the bark of a tree trunk."), - tiles = {tile_bark}, - paramtype2 = "facedir", - on_place = mcl_util.rotate_axis, - stack_max = 64, - groups = {handy=1,axey=1, bark=1, flammable=2, building_block=1, material_wood=1, fire_encouragement=5, fire_flammability=5}, - sounds = mcl_sounds.node_sound_wood_defaults(), - is_ground_content = false, - on_rotate = on_rotate, - _mcl_blast_resistance = 2, - _mcl_hardness = 2, - _mcl_stripped_variant = stripped_variant.."_bark", - }) - - minetest.register_craft({ - output = "mcl_core:"..subname.."_bark 3", - recipe = { - { "mcl_core:"..subname, "mcl_core:"..subname }, - { "mcl_core:"..subname, "mcl_core:"..subname }, - } - }) -end - --- Register stripped trunk and stripped wood -local function register_stripped_trunk(subname, description_stripped_trunk, description_stripped_bark, longdesc, longdesc_wood, tile_stripped_inner, tile_stripped_bark) - minetest.register_node("mcl_core:"..subname, { - description = description_stripped_trunk, - _doc_items_longdesc = longdesc, - _doc_items_hidden = false, - tiles = {tile_stripped_inner, tile_stripped_inner, tile_stripped_bark}, - paramtype2 = "facedir", - on_place = mcl_util.rotate_axis, - stack_max = 64, - groups = {handy=1, axey=1, tree=1, flammable=2, building_block=1, material_wood=1, fire_encouragement=5, fire_flammability=5}, - sounds = mcl_sounds.node_sound_wood_defaults(), - on_rotate = on_rotate, - _mcl_blast_resistance = 2, - _mcl_hardness = 2, - }) - - minetest.register_node("mcl_core:"..subname.."_bark", { - description = description_stripped_bark, - _doc_items_longdesc = longdesc_wood, - tiles = {tile_stripped_bark}, - paramtype2 = "facedir", - on_place = mcl_util.rotate_axis, - stack_max = 64, - groups = {handy=1, axey=1, bark=1, flammable=2, building_block=1, material_wood=1, fire_encouragement=5, fire_flammability=5}, - sounds = mcl_sounds.node_sound_wood_defaults(), - is_ground_content = false, - on_rotate = on_rotate, - _mcl_blast_resistance = 2, - _mcl_hardness = 2, - }) - - minetest.register_craft({ - output = "mcl_core:"..subname.."_bark 3", - recipe = { - { "mcl_core:"..subname, "mcl_core:"..subname }, - { "mcl_core:"..subname, "mcl_core:"..subname }, - } - }) -end - -local function register_wooden_planks(subname, description, tiles) - minetest.register_node("mcl_core:"..subname, { - description = description, - _doc_items_longdesc = doc.sub.items.temp.build, - _doc_items_hidden = false, - tiles = tiles, - stack_max = 64, - is_ground_content = false, - groups = {handy=1,axey=1, flammable=3,wood=1,building_block=1, material_wood=1, fire_encouragement=5, fire_flammability=20}, - sounds = mcl_sounds.node_sound_wood_defaults(), - _mcl_blast_resistance = 3, - _mcl_hardness = 2, - }) -end - -local function register_leaves(subname, description, longdesc, tiles, sapling, drop_apples, sapling_chances, leafdecay_distance) - if leafdecay_distance == nil then - leafdecay_distance = 4 - end - local apple_chances = {200, 180, 160, 120, 40} - local stick_chances = {50, 45, 30, 35, 10} - - local function get_drops(fortune_level) - local drop = { - max_items = 1, - items = { - { - items = {sapling}, - rarity = sapling_chances[fortune_level + 1] or sapling_chances[fortune_level] - }, - { - items = {"mcl_core:stick 1"}, - rarity = stick_chances[fortune_level + 1] - }, - { - items = {"mcl_core:stick 2"}, - rarity = stick_chances[fortune_level + 1] - }, - } - } - if drop_apples then - table.insert(drop.items, { - items = {"mcl_core:apple"}, - rarity = apple_chances[fortune_level + 1] - }) - end - return drop - end - - minetest.register_node("mcl_core:"..subname, { - description = description, - _doc_items_longdesc = longdesc, - _doc_items_hidden = false, - drawtype = "allfaces_optional", - waving = 2, - place_param2 = 1, -- Prevent leafdecay for placed nodes - tiles = tiles, - paramtype = "light", - stack_max = 64, - groups = { - handy = 1, hoey = 1, shearsy = 1, swordy = 1, dig_by_piston = 1, - leaves = 1, leafdecay = leafdecay_distance, deco_block = 1, - flammable = 2, fire_encouragement = 30, fire_flammability = 60, - compostability = 30 - }, - drop = get_drops(0), - _mcl_shears_drop = true, - sounds = mcl_sounds.node_sound_leaves_defaults(), - _mcl_blast_resistance = 0.2, - _mcl_hardness = 0.2, - _mcl_silk_touch_drop = true, - _mcl_fortune_drop = { get_drops(1), get_drops(2), get_drops(3), get_drops(4) }, - }) -end - -local function register_sapling(subname, description, longdesc, tt_help, texture, selbox) - minetest.register_node("mcl_core:"..subname, { - description = description, - _tt_help = tt_help, - _doc_items_longdesc = longdesc, - _doc_items_hidden = false, - drawtype = "plantlike", - waving = 1, - visual_scale = 1.0, - tiles = {texture}, - inventory_image = texture, - wield_image = texture, - paramtype = "light", - sunlight_propagates = true, - walkable = false, - selection_box = { - type = "fixed", - fixed = selbox - }, - stack_max = 64, - groups = { - plant = 1, sapling = 1, non_mycelium_plant = 1, attached_node = 1, - deco_block = 1, dig_immediate = 3, dig_by_water = 1, dig_by_piston = 1, - destroy_by_lava_flow = 1, compostability = 30 - }, - sounds = mcl_sounds.node_sound_leaves_defaults(), - on_construct = function(pos) - local meta = minetest.get_meta(pos) - meta:set_int("stage", 0) - end, - on_place = mcl_util.generate_on_place_plant_function(function(pos, node) - local node_below = minetest.get_node_or_nil({x=pos.x,y=pos.y-1,z=pos.z}) - if not node_below then return false end - local nn = node_below.name - return minetest.get_item_group(nn, "grass_block") == 1 or - nn == "mcl_core:podzol" or nn == "mcl_core:podzol_snow" or - nn == "mcl_core:dirt" or nn == "mcl_core:mycelium" or nn == "mcl_core:coarse_dirt" - end), - node_placement_prediction = "", - _mcl_blast_resistance = 0, - _mcl_hardness = 0, - }) -end - ---------------------- - -register_tree_trunk("tree", S("Oak Wood"), S("Oak Bark"), S("The trunk of an oak tree."), "default_tree_top.png", "default_tree.png", "mcl_core:stripped_oak") -register_tree_trunk("darktree", S("Dark Oak Wood"), S("Dark Oak Bark"), S("The trunk of a dark oak tree."), "mcl_core_log_big_oak_top.png", "mcl_core_log_big_oak.png", "mcl_core:stripped_dark_oak") -register_tree_trunk("acaciatree", S("Acacia Wood"), S("Acacia Bark"), S("The trunk of an acacia."), "default_acacia_tree_top.png", "default_acacia_tree.png", "mcl_core:stripped_acacia") -register_tree_trunk("sprucetree", S("Spruce Wood"), S("Spruce Bark"), S("The trunk of a spruce tree."), "mcl_core_log_spruce_top.png", "mcl_core_log_spruce.png", "mcl_core:stripped_spruce") -register_tree_trunk("birchtree", S("Birch Wood"), S("Birch Bark"), S("The trunk of a birch tree."), "mcl_core_log_birch_top.png", "mcl_core_log_birch.png", "mcl_core:stripped_birch") -register_tree_trunk("jungletree", S("Jungle Wood"), S("Jungle Bark"), S("The trunk of a jungle tree."), "default_jungletree_top.png", "default_jungletree.png", "mcl_core:stripped_jungle") - -register_stripped_trunk("stripped_oak", S("Stripped Oak Log"), S("Stripped Oak Wood"), S("The stripped trunk of an oak tree."), S("The stripped wood of an oak tree."), "mcl_core_stripped_oak_top.png", "mcl_core_stripped_oak_side.png") -register_stripped_trunk("stripped_acacia", S("Stripped Acacia Log"), S("Stripped Acacia Wood"), S("The stripped trunk of an acacia tree."), S("The stripped wood of an acacia tree."), "mcl_core_stripped_acacia_top.png", "mcl_core_stripped_acacia_side.png") -register_stripped_trunk("stripped_dark_oak", S("Stripped Dark Oak Log"), S("Stripped Dark Oak Wood"), S("The stripped trunk of a dark oak tree."), S("The stripped wood of a dark oak tree."), "mcl_core_stripped_dark_oak_top.png", "mcl_core_stripped_dark_oak_side.png") -register_stripped_trunk("stripped_birch", S("Stripped Birch Log"), S("Stripped Birch Wood"), S("The stripped trunk of a birch tree."), S("The stripped wood of a birch tree."), "mcl_core_stripped_birch_top.png", "mcl_core_stripped_birch_side.png") -register_stripped_trunk("stripped_spruce", S("Stripped Spruce Log"), S("Stripped Spruce Wood"), S("The stripped trunk of a spruce tree."), S("The stripped wood of a spruce tree."), "mcl_core_stripped_spruce_top.png", "mcl_core_stripped_spruce_side.png") -register_stripped_trunk("stripped_jungle", S("Stripped Jungle Log"), S("Stripped Jungle Wood"), S("The stripped trunk of a jungle tree."), S("The stripped wood of a jungle tree."),"mcl_core_stripped_jungle_top.png", "mcl_core_stripped_jungle_side.png") -register_wooden_planks("wood", S("Oak Wood Planks"), {"default_wood.png"}) -register_wooden_planks("darkwood", S("Dark Oak Wood Planks"), {"mcl_core_planks_big_oak.png"}) -register_wooden_planks("junglewood", S("Jungle Wood Planks"), {"default_junglewood.png"}) -register_wooden_planks("sprucewood", S("Spruce Wood Planks"), {"mcl_core_planks_spruce.png"}) -register_wooden_planks("acaciawood", S("Acacia Wood Planks"), {"default_acacia_wood.png"}) -register_wooden_planks("birchwood", S("Birch Wood Planks"), {"mcl_core_planks_birch.png"}) - - -register_sapling("sapling", S("Oak Sapling"), - S("When placed on soil (such as dirt) and exposed to light, an oak sapling will grow into an oak after some time."), - S("Needs soil and light to grow"), - "default_sapling.png", {-5/16, -0.5, -5/16, 5/16, 0.5, 5/16}) -register_sapling("darksapling", S("Dark Oak Sapling"), - S("Dark oak saplings can grow into dark oaks, but only in groups. A lonely dark oak sapling won't grow. A group of four dark oak saplings grows into a dark oak after some time when they are placed on soil (such as dirt) in a 2×2 square and exposed to light."), - S("Needs soil and light to grow") .. "\n" .. S("2×2 saplings required"), - "mcl_core_sapling_big_oak.png", {-5/16, -0.5, -5/16, 5/16, 7/16, 5/16}) -register_sapling("junglesapling", S("Jungle Sapling"), - S("When placed on soil (such as dirt) and exposed to light, a jungle sapling will grow into a jungle tree after some time. When there are 4 jungle saplings in a 2×2 square, they will grow to a huge jungle tree."), - S("Needs soil and light to grow") .. "\n" .. S("2×2 saplings = large tree"), - "default_junglesapling.png", {-5/16, -0.5, -5/16, 5/16, 0.5, 5/16}) -register_sapling("acaciasapling", S("Acacia Sapling"), - S("When placed on soil (such as dirt) and exposed to light, an acacia sapling will grow into an acacia after some time."), - S("Needs soil and light to grow"), - "default_acacia_sapling.png", {-5/16, -0.5, -5/16, 5/16, 4/16, 5/16}) -register_sapling("sprucesapling", S("Spruce Sapling"), - S("When placed on soil (such as dirt) and exposed to light, a spruce sapling will grow into a spruce after some time. When there are 4 spruce saplings in a 2×2 square, they will grow to a huge spruce."), - S("Needs soil and light to grow") .. "\n" .. S("2×2 saplings = large tree"), - "mcl_core_sapling_spruce.png", {-4/16, -0.5, -4/16, 4/16, 0.5, 4/16}) -register_sapling("birchsapling", S("Birch Sapling"), - S("When placed on soil (such as dirt) and exposed to light, a birch sapling will grow into a birch after some time."), - S("Needs soil and light to grow"), - "mcl_core_sapling_birch.png", {-4/16, -0.5, -4/16, 4/16, 0.5, 4/16}) - - -register_leaves("leaves", S("Oak Leaves"), S("Oak leaves are grown from oak trees."), {"default_leaves.png"}, "mcl_core:sapling", true, {20, 16, 12, 10}) -register_leaves("darkleaves", S("Dark Oak Leaves"), S("Dark oak leaves are grown from dark oak trees."), {"mcl_core_leaves_big_oak.png"}, "mcl_core:darksapling", true, {20, 16, 12, 10}) -register_leaves("jungleleaves", S("Jungle Leaves"), S("Jungle leaves are grown from jungle trees."), {"default_jungleleaves.png"}, "mcl_core:junglesapling", false, {40, 26, 32, 24, 10}) -register_leaves("acacialeaves", S("Acacia Leaves"), S("Acacia leaves are grown from acacia trees."), {"default_acacia_leaves.png"}, "mcl_core:acaciasapling", false, {20, 16, 12, 10}) -register_leaves("spruceleaves", S("Spruce Leaves"), S("Spruce leaves are grown from spruce trees."), {"mcl_core_leaves_spruce.png"}, "mcl_core:sprucesapling", false, {20, 16, 12, 10}) -register_leaves("birchleaves", S("Birch Leaves"), S("Birch leaves are grown from birch trees."), {"mcl_core_leaves_birch.png"}, "mcl_core:birchsapling", false, {20, 16, 12, 10}) - - - --- Node aliases - -minetest.register_alias("default:acacia_tree", "mcl_core:acaciatree") -minetest.register_alias("default:acacia_leaves", "mcl_core:acacialeaves") diff --git a/mods/ITEMS/mcl_core/schematics/mcl_core_acacia_1.mts b/mods/ITEMS/mcl_core/schematics/mcl_core_acacia_1.mts deleted file mode 100644 index 8685bc8550..0000000000 Binary files a/mods/ITEMS/mcl_core/schematics/mcl_core_acacia_1.mts and /dev/null differ diff --git a/mods/ITEMS/mcl_core/schematics/mcl_core_acacia_2.mts b/mods/ITEMS/mcl_core/schematics/mcl_core_acacia_2.mts deleted file mode 100644 index 2d90ba23b0..0000000000 Binary files a/mods/ITEMS/mcl_core/schematics/mcl_core_acacia_2.mts and /dev/null differ diff --git a/mods/ITEMS/mcl_core/schematics/mcl_core_acacia_3.mts b/mods/ITEMS/mcl_core/schematics/mcl_core_acacia_3.mts deleted file mode 100644 index 38831c3cf9..0000000000 Binary files a/mods/ITEMS/mcl_core/schematics/mcl_core_acacia_3.mts and /dev/null differ diff --git a/mods/ITEMS/mcl_core/schematics/mcl_core_acacia_4.mts b/mods/ITEMS/mcl_core/schematics/mcl_core_acacia_4.mts deleted file mode 100644 index d3c98b4373..0000000000 Binary files a/mods/ITEMS/mcl_core/schematics/mcl_core_acacia_4.mts and /dev/null differ diff --git a/mods/ITEMS/mcl_core/schematics/mcl_core_acacia_5.mts b/mods/ITEMS/mcl_core/schematics/mcl_core_acacia_5.mts deleted file mode 100644 index 8c709f73bd..0000000000 Binary files a/mods/ITEMS/mcl_core/schematics/mcl_core_acacia_5.mts and /dev/null differ diff --git a/mods/ITEMS/mcl_core/schematics/mcl_core_acacia_6.mts b/mods/ITEMS/mcl_core/schematics/mcl_core_acacia_6.mts deleted file mode 100644 index 8a63cf185a..0000000000 Binary files a/mods/ITEMS/mcl_core/schematics/mcl_core_acacia_6.mts and /dev/null differ diff --git a/mods/ITEMS/mcl_core/schematics/mcl_core_acacia_7.mts b/mods/ITEMS/mcl_core/schematics/mcl_core_acacia_7.mts deleted file mode 100644 index 2ffc78d4c3..0000000000 Binary files a/mods/ITEMS/mcl_core/schematics/mcl_core_acacia_7.mts and /dev/null differ diff --git a/mods/ITEMS/mcl_core/schematics/mcl_core_acacia_weirdo.mts b/mods/ITEMS/mcl_core/schematics/mcl_core_acacia_weirdo.mts deleted file mode 100644 index 63b0c35e54..0000000000 Binary files a/mods/ITEMS/mcl_core/schematics/mcl_core_acacia_weirdo.mts and /dev/null differ diff --git a/mods/ITEMS/mcl_core/schematics/mcl_core_birch.mts b/mods/ITEMS/mcl_core/schematics/mcl_core_birch.mts deleted file mode 100644 index fc511a094a..0000000000 Binary files a/mods/ITEMS/mcl_core/schematics/mcl_core_birch.mts and /dev/null differ diff --git a/mods/ITEMS/mcl_core/schematics/mcl_core_birch_tall.mts b/mods/ITEMS/mcl_core/schematics/mcl_core_birch_tall.mts deleted file mode 100644 index 1c39cd2ab4..0000000000 Binary files a/mods/ITEMS/mcl_core/schematics/mcl_core_birch_tall.mts and /dev/null differ diff --git a/mods/ITEMS/mcl_core/schematics/mcl_core_dark_oak.mts b/mods/ITEMS/mcl_core/schematics/mcl_core_dark_oak.mts deleted file mode 100644 index de1121e60c..0000000000 Binary files a/mods/ITEMS/mcl_core/schematics/mcl_core_dark_oak.mts and /dev/null differ diff --git a/mods/ITEMS/mcl_core/schematics/mcl_core_jungle_bush_oak_leaves.mts b/mods/ITEMS/mcl_core/schematics/mcl_core_jungle_bush_oak_leaves.mts deleted file mode 100644 index 894001866d..0000000000 Binary files a/mods/ITEMS/mcl_core/schematics/mcl_core_jungle_bush_oak_leaves.mts and /dev/null differ diff --git a/mods/ITEMS/mcl_core/schematics/mcl_core_jungle_tree.mts b/mods/ITEMS/mcl_core/schematics/mcl_core_jungle_tree.mts deleted file mode 100644 index c015d242dd..0000000000 Binary files a/mods/ITEMS/mcl_core/schematics/mcl_core_jungle_tree.mts and /dev/null differ diff --git a/mods/ITEMS/mcl_core/schematics/mcl_core_jungle_tree_huge_1.mts b/mods/ITEMS/mcl_core/schematics/mcl_core_jungle_tree_huge_1.mts deleted file mode 100644 index ba4f9fa261..0000000000 Binary files a/mods/ITEMS/mcl_core/schematics/mcl_core_jungle_tree_huge_1.mts and /dev/null differ diff --git a/mods/ITEMS/mcl_core/schematics/mcl_core_jungle_tree_huge_2.mts b/mods/ITEMS/mcl_core/schematics/mcl_core_jungle_tree_huge_2.mts deleted file mode 100644 index df0114f6bd..0000000000 Binary files a/mods/ITEMS/mcl_core/schematics/mcl_core_jungle_tree_huge_2.mts and /dev/null differ diff --git a/mods/ITEMS/mcl_core/schematics/mcl_core_oak_balloon.mts b/mods/ITEMS/mcl_core/schematics/mcl_core_oak_balloon.mts deleted file mode 100644 index bcbd9beaf7..0000000000 Binary files a/mods/ITEMS/mcl_core/schematics/mcl_core_oak_balloon.mts and /dev/null differ diff --git a/mods/ITEMS/mcl_core/schematics/mcl_core_oak_classic.mts b/mods/ITEMS/mcl_core/schematics/mcl_core_oak_classic.mts deleted file mode 100644 index 295ef93e85..0000000000 Binary files a/mods/ITEMS/mcl_core/schematics/mcl_core_oak_classic.mts and /dev/null differ diff --git a/mods/ITEMS/mcl_core/schematics/mcl_core_oak_large_1.mts b/mods/ITEMS/mcl_core/schematics/mcl_core_oak_large_1.mts deleted file mode 100644 index 4dc118964a..0000000000 Binary files a/mods/ITEMS/mcl_core/schematics/mcl_core_oak_large_1.mts and /dev/null differ diff --git a/mods/ITEMS/mcl_core/schematics/mcl_core_oak_large_2.mts b/mods/ITEMS/mcl_core/schematics/mcl_core_oak_large_2.mts deleted file mode 100644 index 8e859e3dfb..0000000000 Binary files a/mods/ITEMS/mcl_core/schematics/mcl_core_oak_large_2.mts and /dev/null differ diff --git a/mods/ITEMS/mcl_core/schematics/mcl_core_oak_large_3.mts b/mods/ITEMS/mcl_core/schematics/mcl_core_oak_large_3.mts deleted file mode 100644 index bddcaefd4b..0000000000 Binary files a/mods/ITEMS/mcl_core/schematics/mcl_core_oak_large_3.mts and /dev/null differ diff --git a/mods/ITEMS/mcl_core/schematics/mcl_core_oak_large_4.mts b/mods/ITEMS/mcl_core/schematics/mcl_core_oak_large_4.mts deleted file mode 100644 index b1bc17ac11..0000000000 Binary files a/mods/ITEMS/mcl_core/schematics/mcl_core_oak_large_4.mts and /dev/null differ diff --git a/mods/ITEMS/mcl_core/schematics/mcl_core_oak_swamp.mts b/mods/ITEMS/mcl_core/schematics/mcl_core_oak_swamp.mts deleted file mode 100644 index 3308dba4a4..0000000000 Binary files a/mods/ITEMS/mcl_core/schematics/mcl_core_oak_swamp.mts and /dev/null differ diff --git a/mods/ITEMS/mcl_core/schematics/mcl_core_oak_v6.mts b/mods/ITEMS/mcl_core/schematics/mcl_core_oak_v6.mts deleted file mode 100644 index 4c9e09940a..0000000000 Binary files a/mods/ITEMS/mcl_core/schematics/mcl_core_oak_v6.mts and /dev/null differ diff --git a/mods/ITEMS/mcl_core/schematics/mcl_core_spruce_1.mts b/mods/ITEMS/mcl_core/schematics/mcl_core_spruce_1.mts deleted file mode 100644 index f16034c18e..0000000000 Binary files a/mods/ITEMS/mcl_core/schematics/mcl_core_spruce_1.mts and /dev/null differ diff --git a/mods/ITEMS/mcl_core/schematics/mcl_core_spruce_2.mts b/mods/ITEMS/mcl_core/schematics/mcl_core_spruce_2.mts deleted file mode 100644 index 299cee00ed..0000000000 Binary files a/mods/ITEMS/mcl_core/schematics/mcl_core_spruce_2.mts and /dev/null differ diff --git a/mods/ITEMS/mcl_core/schematics/mcl_core_spruce_3.mts b/mods/ITEMS/mcl_core/schematics/mcl_core_spruce_3.mts deleted file mode 100644 index 9a70debf36..0000000000 Binary files a/mods/ITEMS/mcl_core/schematics/mcl_core_spruce_3.mts and /dev/null differ diff --git a/mods/ITEMS/mcl_core/schematics/mcl_core_spruce_4.mts b/mods/ITEMS/mcl_core/schematics/mcl_core_spruce_4.mts deleted file mode 100644 index 95d8e84ac0..0000000000 Binary files a/mods/ITEMS/mcl_core/schematics/mcl_core_spruce_4.mts and /dev/null differ diff --git a/mods/ITEMS/mcl_core/schematics/mcl_core_spruce_5.mts b/mods/ITEMS/mcl_core/schematics/mcl_core_spruce_5.mts deleted file mode 100644 index bc0512f84c..0000000000 Binary files a/mods/ITEMS/mcl_core/schematics/mcl_core_spruce_5.mts and /dev/null differ diff --git a/mods/ITEMS/mcl_core/schematics/mcl_core_spruce_huge_1.mts b/mods/ITEMS/mcl_core/schematics/mcl_core_spruce_huge_1.mts deleted file mode 100644 index d78e2fa673..0000000000 Binary files a/mods/ITEMS/mcl_core/schematics/mcl_core_spruce_huge_1.mts and /dev/null differ diff --git a/mods/ITEMS/mcl_core/schematics/mcl_core_spruce_huge_2.mts b/mods/ITEMS/mcl_core/schematics/mcl_core_spruce_huge_2.mts deleted file mode 100644 index 2ffb6c6cee..0000000000 Binary files a/mods/ITEMS/mcl_core/schematics/mcl_core_spruce_huge_2.mts and /dev/null differ diff --git a/mods/ITEMS/mcl_core/schematics/mcl_core_spruce_huge_3.mts b/mods/ITEMS/mcl_core/schematics/mcl_core_spruce_huge_3.mts deleted file mode 100644 index d3b80b1933..0000000000 Binary files a/mods/ITEMS/mcl_core/schematics/mcl_core_spruce_huge_3.mts and /dev/null differ diff --git a/mods/ITEMS/mcl_core/schematics/mcl_core_spruce_huge_4.mts b/mods/ITEMS/mcl_core/schematics/mcl_core_spruce_huge_4.mts deleted file mode 100644 index 538b96d67b..0000000000 Binary files a/mods/ITEMS/mcl_core/schematics/mcl_core_spruce_huge_4.mts and /dev/null differ diff --git a/mods/ITEMS/mcl_core/schematics/mcl_core_spruce_huge_up_1.mts b/mods/ITEMS/mcl_core/schematics/mcl_core_spruce_huge_up_1.mts deleted file mode 100644 index 02bf912c3f..0000000000 Binary files a/mods/ITEMS/mcl_core/schematics/mcl_core_spruce_huge_up_1.mts and /dev/null differ diff --git a/mods/ITEMS/mcl_core/schematics/mcl_core_spruce_huge_up_2.mts b/mods/ITEMS/mcl_core/schematics/mcl_core_spruce_huge_up_2.mts deleted file mode 100644 index fc4b91f2ab..0000000000 Binary files a/mods/ITEMS/mcl_core/schematics/mcl_core_spruce_huge_up_2.mts and /dev/null differ diff --git a/mods/ITEMS/mcl_core/schematics/mcl_core_spruce_huge_up_3.mts b/mods/ITEMS/mcl_core/schematics/mcl_core_spruce_huge_up_3.mts deleted file mode 100644 index 55a9a5ff45..0000000000 Binary files a/mods/ITEMS/mcl_core/schematics/mcl_core_spruce_huge_up_3.mts and /dev/null differ diff --git a/mods/ITEMS/mcl_core/schematics/mcl_core_spruce_lollipop.mts b/mods/ITEMS/mcl_core/schematics/mcl_core_spruce_lollipop.mts deleted file mode 100644 index 46d01e0b9e..0000000000 Binary files a/mods/ITEMS/mcl_core/schematics/mcl_core_spruce_lollipop.mts and /dev/null differ diff --git a/mods/ITEMS/mcl_core/schematics/mcl_core_spruce_matchstick.mts b/mods/ITEMS/mcl_core/schematics/mcl_core_spruce_matchstick.mts deleted file mode 100644 index 69ac616ae5..0000000000 Binary files a/mods/ITEMS/mcl_core/schematics/mcl_core_spruce_matchstick.mts and /dev/null differ diff --git a/mods/ITEMS/mcl_core/schematics/mcl_core_spruce_tall.mts b/mods/ITEMS/mcl_core/schematics/mcl_core_spruce_tall.mts deleted file mode 100644 index ef2190142a..0000000000 Binary files a/mods/ITEMS/mcl_core/schematics/mcl_core_spruce_tall.mts and /dev/null differ diff --git a/mods/ITEMS/mcl_core/sounds/slimenodes_dug.1.ogg b/mods/ITEMS/mcl_core/sounds/slimenodes_dug.1.ogg deleted file mode 100644 index a8bc4b2e67..0000000000 Binary files a/mods/ITEMS/mcl_core/sounds/slimenodes_dug.1.ogg and /dev/null differ diff --git a/mods/ITEMS/mcl_core/sounds/slimenodes_place.1.ogg b/mods/ITEMS/mcl_core/sounds/slimenodes_place.1.ogg deleted file mode 100644 index b766c1e38b..0000000000 Binary files a/mods/ITEMS/mcl_core/sounds/slimenodes_place.1.ogg and /dev/null differ diff --git a/mods/ITEMS/mcl_core/sounds/slimenodes_step.1.ogg b/mods/ITEMS/mcl_core/sounds/slimenodes_step.1.ogg deleted file mode 100644 index e32996fba8..0000000000 Binary files a/mods/ITEMS/mcl_core/sounds/slimenodes_step.1.ogg and /dev/null differ diff --git a/mods/ITEMS/mcl_core/sounds/slimenodes_step.2.ogg b/mods/ITEMS/mcl_core/sounds/slimenodes_step.2.ogg deleted file mode 100644 index 6ad28efc1d..0000000000 Binary files a/mods/ITEMS/mcl_core/sounds/slimenodes_step.2.ogg and /dev/null differ diff --git a/mods/ITEMS/mcl_core/sounds/slimenodes_step.3.ogg b/mods/ITEMS/mcl_core/sounds/slimenodes_step.3.ogg deleted file mode 100644 index 92d6cd3676..0000000000 Binary files a/mods/ITEMS/mcl_core/sounds/slimenodes_step.3.ogg and /dev/null differ diff --git a/mods/ITEMS/mcl_core/sounds/slimenodes_step.4.ogg b/mods/ITEMS/mcl_core/sounds/slimenodes_step.4.ogg deleted file mode 100644 index 47b9cd68cb..0000000000 Binary files a/mods/ITEMS/mcl_core/sounds/slimenodes_step.4.ogg and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/default_acacia_leaves.png b/mods/ITEMS/mcl_core/textures/default_acacia_leaves.png deleted file mode 100644 index a24e58f165..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/default_acacia_leaves.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/default_acacia_sapling.png b/mods/ITEMS/mcl_core/textures/default_acacia_sapling.png deleted file mode 100644 index b708c8098b..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/default_acacia_sapling.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/default_acacia_tree.png b/mods/ITEMS/mcl_core/textures/default_acacia_tree.png deleted file mode 100644 index 2f62228c90..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/default_acacia_tree.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/default_acacia_tree_top.png b/mods/ITEMS/mcl_core/textures/default_acacia_tree_top.png deleted file mode 100644 index 471aaa700c..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/default_acacia_tree_top.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/default_acacia_wood.png b/mods/ITEMS/mcl_core/textures/default_acacia_wood.png deleted file mode 100644 index 106304997b..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/default_acacia_wood.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/default_apple.png b/mods/ITEMS/mcl_core/textures/default_apple.png deleted file mode 100644 index 2c376decae..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/default_apple.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/default_brick.png b/mods/ITEMS/mcl_core/textures/default_brick.png deleted file mode 100644 index 7855543955..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/default_brick.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/default_clay.png b/mods/ITEMS/mcl_core/textures/default_clay.png deleted file mode 100644 index 63d2ff18c5..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/default_clay.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/default_clay_brick.png b/mods/ITEMS/mcl_core/textures/default_clay_brick.png deleted file mode 100644 index ac1b744976..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/default_clay_brick.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/default_clay_lump.png b/mods/ITEMS/mcl_core/textures/default_clay_lump.png deleted file mode 100644 index 6b50f41431..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/default_clay_lump.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/default_coal_block.png b/mods/ITEMS/mcl_core/textures/default_coal_block.png deleted file mode 100644 index cf3579499f..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/default_coal_block.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/default_coal_lump.png b/mods/ITEMS/mcl_core/textures/default_coal_lump.png deleted file mode 100644 index 55a9ad6934..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/default_coal_lump.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/default_diamond.png b/mods/ITEMS/mcl_core/textures/default_diamond.png deleted file mode 100644 index 69db99dd1a..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/default_diamond.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/default_diamond_block.png b/mods/ITEMS/mcl_core/textures/default_diamond_block.png deleted file mode 100644 index df8a337792..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/default_diamond_block.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/default_dirt.png b/mods/ITEMS/mcl_core/textures/default_dirt.png deleted file mode 100644 index e60fa9b3bd..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/default_dirt.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/default_dry_grass.png b/mods/ITEMS/mcl_core/textures/default_dry_grass.png deleted file mode 100644 index e610678a62..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/default_dry_grass.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/default_dry_grass_side.png b/mods/ITEMS/mcl_core/textures/default_dry_grass_side.png deleted file mode 100644 index b12d06e7b7..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/default_dry_grass_side.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/default_dry_shrub.png b/mods/ITEMS/mcl_core/textures/default_dry_shrub.png deleted file mode 100644 index e1e84079cd..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/default_dry_shrub.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/default_flint.png b/mods/ITEMS/mcl_core/textures/default_flint.png deleted file mode 100644 index 7c5876b253..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/default_flint.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/default_glass.png b/mods/ITEMS/mcl_core/textures/default_glass.png deleted file mode 100644 index adb4bec8a9..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/default_glass.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/default_glass_detail.png b/mods/ITEMS/mcl_core/textures/default_glass_detail.png deleted file mode 100644 index 6205f84a58..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/default_glass_detail.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/default_gold_block.png b/mods/ITEMS/mcl_core/textures/default_gold_block.png deleted file mode 100644 index 8f2b9f51c8..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/default_gold_block.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/default_gold_ingot.png b/mods/ITEMS/mcl_core/textures/default_gold_ingot.png deleted file mode 100644 index a940ac531b..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/default_gold_ingot.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/default_gravel.png b/mods/ITEMS/mcl_core/textures/default_gravel.png deleted file mode 100644 index 8108db7168..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/default_gravel.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/default_ice.png b/mods/ITEMS/mcl_core/textures/default_ice.png deleted file mode 100644 index e741bccc6b..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/default_ice.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/default_jungleleaves.png b/mods/ITEMS/mcl_core/textures/default_jungleleaves.png deleted file mode 100644 index d92a6e0894..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/default_jungleleaves.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/default_junglesapling.png b/mods/ITEMS/mcl_core/textures/default_junglesapling.png deleted file mode 100644 index c66730738f..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/default_junglesapling.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/default_jungletree.png b/mods/ITEMS/mcl_core/textures/default_jungletree.png deleted file mode 100644 index 54fd0ccbdc..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/default_jungletree.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/default_jungletree_top.png b/mods/ITEMS/mcl_core/textures/default_jungletree_top.png deleted file mode 100644 index a2fa3a33fa..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/default_jungletree_top.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/default_junglewood.png b/mods/ITEMS/mcl_core/textures/default_junglewood.png deleted file mode 100644 index 8f180e0050..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/default_junglewood.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/default_ladder.png b/mods/ITEMS/mcl_core/textures/default_ladder.png deleted file mode 100644 index e9fc364a92..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/default_ladder.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/default_lava_flowing_animated.png b/mods/ITEMS/mcl_core/textures/default_lava_flowing_animated.png deleted file mode 100644 index decf3322e5..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/default_lava_flowing_animated.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/default_lava_source_animated.png b/mods/ITEMS/mcl_core/textures/default_lava_source_animated.png deleted file mode 100644 index 1bfec72004..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/default_lava_source_animated.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/default_leaves.png b/mods/ITEMS/mcl_core/textures/default_leaves.png deleted file mode 100644 index 7b01275f96..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/default_leaves.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/default_mossycobble.png b/mods/ITEMS/mcl_core/textures/default_mossycobble.png deleted file mode 100644 index 0cbd5a5ba7..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/default_mossycobble.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/default_obsidian.png b/mods/ITEMS/mcl_core/textures/default_obsidian.png deleted file mode 100644 index a7f1d8896e..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/default_obsidian.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/default_paper.png b/mods/ITEMS/mcl_core/textures/default_paper.png deleted file mode 100644 index af90416b58..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/default_paper.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/default_sand.png b/mods/ITEMS/mcl_core/textures/default_sand.png deleted file mode 100644 index 7fc254aa23..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/default_sand.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/default_sapling.png b/mods/ITEMS/mcl_core/textures/default_sapling.png deleted file mode 100644 index 54009cf6a4..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/default_sapling.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/default_snow.png b/mods/ITEMS/mcl_core/textures/default_snow.png deleted file mode 100644 index 81526cbd93..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/default_snow.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/default_steel_block.png b/mods/ITEMS/mcl_core/textures/default_steel_block.png deleted file mode 100644 index a2e061eca4..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/default_steel_block.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/default_steel_ingot.png b/mods/ITEMS/mcl_core/textures/default_steel_ingot.png deleted file mode 100644 index 3cbc81dce2..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/default_steel_ingot.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/default_stick.png b/mods/ITEMS/mcl_core/textures/default_stick.png deleted file mode 100644 index e4a211bc90..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/default_stick.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/default_stone.png b/mods/ITEMS/mcl_core/textures/default_stone.png deleted file mode 100644 index 8831ffb9b5..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/default_stone.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/default_stone_brick.png b/mods/ITEMS/mcl_core/textures/default_stone_brick.png deleted file mode 100644 index 318b91b3d7..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/default_stone_brick.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/default_tree.png b/mods/ITEMS/mcl_core/textures/default_tree.png deleted file mode 100644 index 1ec7ee20b4..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/default_tree.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/default_tree_top.png b/mods/ITEMS/mcl_core/textures/default_tree_top.png deleted file mode 100644 index 9a781d7e92..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/default_tree_top.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/default_water_flowing_animated.png b/mods/ITEMS/mcl_core/textures/default_water_flowing_animated.png deleted file mode 100644 index 7c2ffaba12..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/default_water_flowing_animated.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/default_water_source_animated.png b/mods/ITEMS/mcl_core/textures/default_water_source_animated.png deleted file mode 100644 index 5d45822441..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/default_water_source_animated.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/default_wood.png b/mods/ITEMS/mcl_core/textures/default_wood.png deleted file mode 100644 index ee97b8d8a1..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/default_wood.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_andesite.png b/mods/ITEMS/mcl_core/textures/mcl_core_andesite.png deleted file mode 100644 index cdb1fa690a..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_andesite.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_andesite_smooth.png b/mods/ITEMS/mcl_core/textures/mcl_core_andesite_smooth.png deleted file mode 100644 index ff082af623..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_andesite_smooth.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_apple_golden.png b/mods/ITEMS/mcl_core/textures/mcl_core_apple_golden.png deleted file mode 100644 index 639afd9089..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_apple_golden.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_barrier.png b/mods/ITEMS/mcl_core/textures/mcl_core_barrier.png deleted file mode 100644 index 5a700c5c39..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_barrier.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_bedrock.png b/mods/ITEMS/mcl_core/textures/mcl_core_bedrock.png deleted file mode 100644 index a96b21aca0..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_bedrock.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_bone_block_side.png b/mods/ITEMS/mcl_core/textures/mcl_core_bone_block_side.png deleted file mode 100644 index 8e24135276..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_bone_block_side.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_bone_block_top.png b/mods/ITEMS/mcl_core/textures/mcl_core_bone_block_top.png deleted file mode 100644 index 9fc994cc3f..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_bone_block_top.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_bowl.png b/mods/ITEMS/mcl_core/textures/mcl_core_bowl.png deleted file mode 100644 index 52cde8db2d..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_bowl.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_cactus_bottom.png b/mods/ITEMS/mcl_core/textures/mcl_core_cactus_bottom.png deleted file mode 100644 index 610a0aec50..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_cactus_bottom.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_cactus_side.png b/mods/ITEMS/mcl_core/textures/mcl_core_cactus_side.png deleted file mode 100644 index 1a75eacdf3..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_cactus_side.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_cactus_top.png b/mods/ITEMS/mcl_core/textures/mcl_core_cactus_top.png deleted file mode 100644 index 988ce176f6..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_cactus_top.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_charcoal.png b/mods/ITEMS/mcl_core/textures/mcl_core_charcoal.png deleted file mode 100644 index 9e2ae284e0..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_charcoal.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_coal_ore.png b/mods/ITEMS/mcl_core/textures/mcl_core_coal_ore.png deleted file mode 100644 index 2695ae001e..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_coal_ore.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_coarse_dirt.png b/mods/ITEMS/mcl_core/textures/mcl_core_coarse_dirt.png deleted file mode 100644 index a39ccef812..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_coarse_dirt.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_diamond_ore.png b/mods/ITEMS/mcl_core/textures/mcl_core_diamond_ore.png deleted file mode 100644 index 9f0ea24b07..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_diamond_ore.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_diorite.png b/mods/ITEMS/mcl_core/textures/mcl_core_diorite.png deleted file mode 100644 index 86c5a890eb..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_diorite.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_diorite_smooth.png b/mods/ITEMS/mcl_core/textures/mcl_core_diorite_smooth.png deleted file mode 100644 index d7f5452f93..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_diorite_smooth.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_dirt_podzol_side.png b/mods/ITEMS/mcl_core/textures/mcl_core_dirt_podzol_side.png deleted file mode 100644 index 0d89941ff7..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_dirt_podzol_side.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_dirt_podzol_top.png b/mods/ITEMS/mcl_core/textures/mcl_core_dirt_podzol_top.png deleted file mode 100644 index 71bee0435d..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_dirt_podzol_top.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_emerald.png b/mods/ITEMS/mcl_core/textures/mcl_core_emerald.png deleted file mode 100644 index 9b3fd263b4..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_emerald.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_emerald_block.png b/mods/ITEMS/mcl_core/textures/mcl_core_emerald_block.png deleted file mode 100644 index c400a7bc90..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_emerald_block.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_emerald_ore.png b/mods/ITEMS/mcl_core/textures/mcl_core_emerald_ore.png deleted file mode 100644 index 04ebdf482a..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_emerald_ore.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_frosted_ice_0.png b/mods/ITEMS/mcl_core/textures/mcl_core_frosted_ice_0.png deleted file mode 100644 index 5b33471d9e..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_frosted_ice_0.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_frosted_ice_1.png b/mods/ITEMS/mcl_core/textures/mcl_core_frosted_ice_1.png deleted file mode 100644 index fd3756ebfd..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_frosted_ice_1.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_frosted_ice_2.png b/mods/ITEMS/mcl_core/textures/mcl_core_frosted_ice_2.png deleted file mode 100644 index e90d8dd8fe..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_frosted_ice_2.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_frosted_ice_3.png b/mods/ITEMS/mcl_core/textures/mcl_core_frosted_ice_3.png deleted file mode 100644 index b6b93e88b2..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_frosted_ice_3.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_glass_black.png b/mods/ITEMS/mcl_core/textures/mcl_core_glass_black.png deleted file mode 100644 index 35a9dbb7d6..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_glass_black.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_glass_black_detail.png b/mods/ITEMS/mcl_core/textures/mcl_core_glass_black_detail.png deleted file mode 100644 index 9dac71149d..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_glass_black_detail.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_glass_blue.png b/mods/ITEMS/mcl_core/textures/mcl_core_glass_blue.png deleted file mode 100644 index 9e0790a678..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_glass_blue.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_glass_blue_detail.png b/mods/ITEMS/mcl_core/textures/mcl_core_glass_blue_detail.png deleted file mode 100644 index 13d0e83b2f..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_glass_blue_detail.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_glass_brown.png b/mods/ITEMS/mcl_core/textures/mcl_core_glass_brown.png deleted file mode 100644 index 3f898ef4c8..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_glass_brown.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_glass_brown_detail.png b/mods/ITEMS/mcl_core/textures/mcl_core_glass_brown_detail.png deleted file mode 100644 index d342045b14..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_glass_brown_detail.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_glass_cyan.png b/mods/ITEMS/mcl_core/textures/mcl_core_glass_cyan.png deleted file mode 100644 index 24382900c2..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_glass_cyan.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_glass_cyan_detail.png b/mods/ITEMS/mcl_core/textures/mcl_core_glass_cyan_detail.png deleted file mode 100644 index 6b907f54d3..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_glass_cyan_detail.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_glass_gray.png b/mods/ITEMS/mcl_core/textures/mcl_core_glass_gray.png deleted file mode 100644 index 70b0a43592..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_glass_gray.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_glass_gray_detail.png b/mods/ITEMS/mcl_core/textures/mcl_core_glass_gray_detail.png deleted file mode 100644 index 4dbc15680b..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_glass_gray_detail.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_glass_green.png b/mods/ITEMS/mcl_core/textures/mcl_core_glass_green.png deleted file mode 100644 index 380333dc56..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_glass_green.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_glass_green_detail.png b/mods/ITEMS/mcl_core/textures/mcl_core_glass_green_detail.png deleted file mode 100644 index 03b9943f12..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_glass_green_detail.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_glass_light_blue.png b/mods/ITEMS/mcl_core/textures/mcl_core_glass_light_blue.png deleted file mode 100644 index eef2edf1fa..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_glass_light_blue.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_glass_light_blue_detail.png b/mods/ITEMS/mcl_core/textures/mcl_core_glass_light_blue_detail.png deleted file mode 100644 index 842441a2c6..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_glass_light_blue_detail.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_glass_lime.png b/mods/ITEMS/mcl_core/textures/mcl_core_glass_lime.png deleted file mode 100644 index dbf7da166b..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_glass_lime.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_glass_lime_detail.png b/mods/ITEMS/mcl_core/textures/mcl_core_glass_lime_detail.png deleted file mode 100644 index 8b80407d3c..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_glass_lime_detail.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_glass_magenta.png b/mods/ITEMS/mcl_core/textures/mcl_core_glass_magenta.png deleted file mode 100644 index 9c7af074ef..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_glass_magenta.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_glass_magenta_detail.png b/mods/ITEMS/mcl_core/textures/mcl_core_glass_magenta_detail.png deleted file mode 100644 index cd2d234587..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_glass_magenta_detail.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_glass_orange.png b/mods/ITEMS/mcl_core/textures/mcl_core_glass_orange.png deleted file mode 100644 index 64f931864b..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_glass_orange.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_glass_orange_detail.png b/mods/ITEMS/mcl_core/textures/mcl_core_glass_orange_detail.png deleted file mode 100644 index 930992769a..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_glass_orange_detail.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_glass_pink.png b/mods/ITEMS/mcl_core/textures/mcl_core_glass_pink.png deleted file mode 100644 index 9f666075c4..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_glass_pink.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_glass_pink_detail.png b/mods/ITEMS/mcl_core/textures/mcl_core_glass_pink_detail.png deleted file mode 100644 index d06f90f6b5..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_glass_pink_detail.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_glass_purple.png b/mods/ITEMS/mcl_core/textures/mcl_core_glass_purple.png deleted file mode 100644 index ea106b29b5..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_glass_purple.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_glass_purple_detail.png b/mods/ITEMS/mcl_core/textures/mcl_core_glass_purple_detail.png deleted file mode 100644 index a5685731ff..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_glass_purple_detail.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_glass_red.png b/mods/ITEMS/mcl_core/textures/mcl_core_glass_red.png deleted file mode 100644 index 5de6aadc95..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_glass_red.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_glass_red_detail.png b/mods/ITEMS/mcl_core/textures/mcl_core_glass_red_detail.png deleted file mode 100644 index 587fbdbdd4..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_glass_red_detail.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_glass_silver.png b/mods/ITEMS/mcl_core/textures/mcl_core_glass_silver.png deleted file mode 100644 index 632c318df4..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_glass_silver.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_glass_silver_detail.png b/mods/ITEMS/mcl_core/textures/mcl_core_glass_silver_detail.png deleted file mode 100644 index 49d444b80f..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_glass_silver_detail.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_glass_white.png b/mods/ITEMS/mcl_core/textures/mcl_core_glass_white.png deleted file mode 100644 index 84aca6ee08..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_glass_white.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_glass_white_detail.png b/mods/ITEMS/mcl_core/textures/mcl_core_glass_white_detail.png deleted file mode 100644 index e7e0db92d0..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_glass_white_detail.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_glass_yellow.png b/mods/ITEMS/mcl_core/textures/mcl_core_glass_yellow.png deleted file mode 100644 index 58c7dacf96..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_glass_yellow.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_glass_yellow_detail.png b/mods/ITEMS/mcl_core/textures/mcl_core_glass_yellow_detail.png deleted file mode 100644 index b3fc7c8933..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_glass_yellow_detail.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_gold_nugget.png b/mods/ITEMS/mcl_core/textures/mcl_core_gold_nugget.png deleted file mode 100644 index 287cc4691f..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_gold_nugget.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_gold_ore.png b/mods/ITEMS/mcl_core/textures/mcl_core_gold_ore.png deleted file mode 100644 index d6e004cb74..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_gold_ore.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_granite.png b/mods/ITEMS/mcl_core/textures/mcl_core_granite.png deleted file mode 100644 index e06aebfde6..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_granite.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_granite_smooth.png b/mods/ITEMS/mcl_core/textures/mcl_core_granite_smooth.png deleted file mode 100644 index 003aa83717..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_granite_smooth.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_grass_block_side_overlay.png b/mods/ITEMS/mcl_core/textures/mcl_core_grass_block_side_overlay.png deleted file mode 100644 index a1cc154d9d..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_grass_block_side_overlay.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_grass_path_side.png b/mods/ITEMS/mcl_core/textures/mcl_core_grass_path_side.png deleted file mode 100644 index ac25e45c4c..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_grass_path_side.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_grass_path_top.png b/mods/ITEMS/mcl_core/textures/mcl_core_grass_path_top.png deleted file mode 100644 index 22a7626a14..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_grass_path_top.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_grass_side_snowed.png b/mods/ITEMS/mcl_core/textures/mcl_core_grass_side_snowed.png deleted file mode 100644 index 9830db7eb6..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_grass_side_snowed.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_ice_packed.png b/mods/ITEMS/mcl_core/textures/mcl_core_ice_packed.png deleted file mode 100644 index 7623d45de9..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_ice_packed.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_iron_nugget.png b/mods/ITEMS/mcl_core/textures/mcl_core_iron_nugget.png deleted file mode 100644 index bbb89d6a3d..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_iron_nugget.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_iron_ore.png b/mods/ITEMS/mcl_core/textures/mcl_core_iron_ore.png deleted file mode 100644 index f83b8303ea..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_iron_ore.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_lapis_block.png b/mods/ITEMS/mcl_core/textures/mcl_core_lapis_block.png deleted file mode 100644 index 9ccd753e95..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_lapis_block.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_lapis_ore.png b/mods/ITEMS/mcl_core/textures/mcl_core_lapis_ore.png deleted file mode 100644 index f4bc61c8e1..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_lapis_ore.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_leaves_big_oak.png b/mods/ITEMS/mcl_core/textures/mcl_core_leaves_big_oak.png deleted file mode 100644 index 859d14ac83..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_leaves_big_oak.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_leaves_birch.png b/mods/ITEMS/mcl_core/textures/mcl_core_leaves_birch.png deleted file mode 100644 index d83adabc7a..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_leaves_birch.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_leaves_spruce.png b/mods/ITEMS/mcl_core/textures/mcl_core_leaves_spruce.png deleted file mode 100644 index 1407ff7e39..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_leaves_spruce.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_log_big_oak.png b/mods/ITEMS/mcl_core/textures/mcl_core_log_big_oak.png deleted file mode 100644 index 9b7a85ce9e..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_log_big_oak.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_log_big_oak_top.png b/mods/ITEMS/mcl_core/textures/mcl_core_log_big_oak_top.png deleted file mode 100644 index d4328c328d..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_log_big_oak_top.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_log_birch.png b/mods/ITEMS/mcl_core/textures/mcl_core_log_birch.png deleted file mode 100644 index b53eb796ee..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_log_birch.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_log_birch_top.png b/mods/ITEMS/mcl_core/textures/mcl_core_log_birch_top.png deleted file mode 100644 index 51339550a0..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_log_birch_top.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_log_spruce.png b/mods/ITEMS/mcl_core/textures/mcl_core_log_spruce.png deleted file mode 100644 index 3372a36ae1..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_log_spruce.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_log_spruce_top.png b/mods/ITEMS/mcl_core/textures/mcl_core_log_spruce_top.png deleted file mode 100644 index 965e2e294b..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_log_spruce_top.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_mycelium_side.png b/mods/ITEMS/mcl_core/textures/mcl_core_mycelium_side.png deleted file mode 100644 index 756a927804..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_mycelium_side.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_mycelium_top.png b/mods/ITEMS/mcl_core/textures/mcl_core_mycelium_top.png deleted file mode 100644 index 6581f19cdf..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_mycelium_top.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_papyrus.png b/mods/ITEMS/mcl_core/textures/mcl_core_papyrus.png deleted file mode 100644 index c928402f95..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_papyrus.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_planks_big_oak.png b/mods/ITEMS/mcl_core/textures/mcl_core_planks_big_oak.png deleted file mode 100644 index 422e0eb3b5..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_planks_big_oak.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_planks_birch.png b/mods/ITEMS/mcl_core/textures/mcl_core_planks_birch.png deleted file mode 100644 index ab3ae8f7fd..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_planks_birch.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_planks_spruce.png b/mods/ITEMS/mcl_core/textures/mcl_core_planks_spruce.png deleted file mode 100644 index 74fc6908c1..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_planks_spruce.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_red_sand.png b/mods/ITEMS/mcl_core/textures/mcl_core_red_sand.png deleted file mode 100644 index 4305cffa2b..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_red_sand.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_red_sandstone_bottom.png b/mods/ITEMS/mcl_core/textures/mcl_core_red_sandstone_bottom.png deleted file mode 100644 index f6e6ea499e..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_red_sandstone_bottom.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_red_sandstone_carved.png b/mods/ITEMS/mcl_core/textures/mcl_core_red_sandstone_carved.png deleted file mode 100644 index fc8b2a09ea..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_red_sandstone_carved.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_red_sandstone_normal.png b/mods/ITEMS/mcl_core/textures/mcl_core_red_sandstone_normal.png deleted file mode 100644 index 446f35cd26..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_red_sandstone_normal.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_red_sandstone_smooth.png b/mods/ITEMS/mcl_core/textures/mcl_core_red_sandstone_smooth.png deleted file mode 100644 index f6e6ea499e..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_red_sandstone_smooth.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_red_sandstone_top.png b/mods/ITEMS/mcl_core/textures/mcl_core_red_sandstone_top.png deleted file mode 100644 index 807094464a..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_red_sandstone_top.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_redstone_ore.png b/mods/ITEMS/mcl_core/textures/mcl_core_redstone_ore.png deleted file mode 100644 index f26a9cd7f2..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_redstone_ore.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_reeds.png b/mods/ITEMS/mcl_core/textures/mcl_core_reeds.png deleted file mode 100644 index e048a779ab..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_reeds.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_sandstone_bottom.png b/mods/ITEMS/mcl_core/textures/mcl_core_sandstone_bottom.png deleted file mode 100644 index 51d4174d4d..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_sandstone_bottom.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_sandstone_carved.png b/mods/ITEMS/mcl_core/textures/mcl_core_sandstone_carved.png deleted file mode 100644 index bbe724c5e2..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_sandstone_carved.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_sandstone_normal.png b/mods/ITEMS/mcl_core/textures/mcl_core_sandstone_normal.png deleted file mode 100644 index 5a92d4ccc2..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_sandstone_normal.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_sandstone_smooth.png b/mods/ITEMS/mcl_core/textures/mcl_core_sandstone_smooth.png deleted file mode 100644 index 51d4174d4d..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_sandstone_smooth.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_sandstone_top.png b/mods/ITEMS/mcl_core/textures/mcl_core_sandstone_top.png deleted file mode 100644 index cb3e7aa1cf..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_sandstone_top.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_sapling_big_oak.png b/mods/ITEMS/mcl_core/textures/mcl_core_sapling_big_oak.png deleted file mode 100644 index 1700e5082c..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_sapling_big_oak.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_sapling_birch.png b/mods/ITEMS/mcl_core/textures/mcl_core_sapling_birch.png deleted file mode 100644 index 864b1b6bb0..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_sapling_birch.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_sapling_spruce.png b/mods/ITEMS/mcl_core/textures/mcl_core_sapling_spruce.png deleted file mode 100644 index 3b6f18b98d..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_sapling_spruce.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_slime.png b/mods/ITEMS/mcl_core/textures/mcl_core_slime.png deleted file mode 100644 index a098a90b00..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_slime.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_stonebrick_carved.png b/mods/ITEMS/mcl_core/textures/mcl_core_stonebrick_carved.png deleted file mode 100644 index d4891ded2a..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_stonebrick_carved.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_stonebrick_cracked.png b/mods/ITEMS/mcl_core/textures/mcl_core_stonebrick_cracked.png deleted file mode 100644 index 38fcb1e8ca..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_stonebrick_cracked.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_stonebrick_mossy.png b/mods/ITEMS/mcl_core/textures/mcl_core_stonebrick_mossy.png deleted file mode 100644 index c0d82c50de..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_stonebrick_mossy.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_stripped_acacia_side.png b/mods/ITEMS/mcl_core/textures/mcl_core_stripped_acacia_side.png deleted file mode 100644 index 2b57a0863e..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_stripped_acacia_side.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_stripped_acacia_top.png b/mods/ITEMS/mcl_core/textures/mcl_core_stripped_acacia_top.png deleted file mode 100644 index bd10499c81..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_stripped_acacia_top.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_stripped_birch_side.png b/mods/ITEMS/mcl_core/textures/mcl_core_stripped_birch_side.png deleted file mode 100644 index 5eed80b39c..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_stripped_birch_side.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_stripped_birch_top.png b/mods/ITEMS/mcl_core/textures/mcl_core_stripped_birch_top.png deleted file mode 100644 index 69d2e0bfdf..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_stripped_birch_top.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_stripped_dark_oak_side.png b/mods/ITEMS/mcl_core/textures/mcl_core_stripped_dark_oak_side.png deleted file mode 100644 index 32a8bfebd2..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_stripped_dark_oak_side.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_stripped_dark_oak_top.png b/mods/ITEMS/mcl_core/textures/mcl_core_stripped_dark_oak_top.png deleted file mode 100644 index 48c6da9afb..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_stripped_dark_oak_top.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_stripped_jungle_side.png b/mods/ITEMS/mcl_core/textures/mcl_core_stripped_jungle_side.png deleted file mode 100644 index c656696558..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_stripped_jungle_side.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_stripped_jungle_top.png b/mods/ITEMS/mcl_core/textures/mcl_core_stripped_jungle_top.png deleted file mode 100644 index 028e37eafd..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_stripped_jungle_top.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_stripped_oak_side.png b/mods/ITEMS/mcl_core/textures/mcl_core_stripped_oak_side.png deleted file mode 100644 index c37220bb65..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_stripped_oak_side.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_stripped_oak_top.png b/mods/ITEMS/mcl_core/textures/mcl_core_stripped_oak_top.png deleted file mode 100644 index e060862e7a..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_stripped_oak_top.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_stripped_spruce_side.png b/mods/ITEMS/mcl_core/textures/mcl_core_stripped_spruce_side.png deleted file mode 100644 index 55cb4cec3f..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_stripped_spruce_side.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_stripped_spruce_top.png b/mods/ITEMS/mcl_core/textures/mcl_core_stripped_spruce_top.png deleted file mode 100644 index ec0dd2da81..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_stripped_spruce_top.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_sugar.png b/mods/ITEMS/mcl_core/textures/mcl_core_sugar.png deleted file mode 100644 index 8d76a0e885..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_sugar.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_vine.png b/mods/ITEMS/mcl_core/textures/mcl_core_vine.png deleted file mode 100644 index 831f9d2a98..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_vine.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_void.png b/mods/ITEMS/mcl_core/textures/mcl_core_void.png deleted file mode 100644 index e0fc667659..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_void.png and /dev/null differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_web.png b/mods/ITEMS/mcl_core/textures/mcl_core_web.png deleted file mode 100644 index e2233c1b2e..0000000000 Binary files a/mods/ITEMS/mcl_core/textures/mcl_core_web.png and /dev/null differ diff --git a/mods/ITEMS/mcl_enchanting/enchantments.lua b/mods/ITEMS/mcl_enchanting/enchantments.lua index f137b42304..4ab39b1279 100644 --- a/mods/ITEMS/mcl_enchanting/enchantments.lua +++ b/mods/ITEMS/mcl_enchanting/enchantments.lua @@ -29,25 +29,6 @@ mcl_enchanting.enchantments.bane_of_arthropods = { inv_tool_tab = false, } --- requires missing MineClone2 feature ---[[mcl_enchanting.enchantments.channeling = { - name = S("Channeling"), - max_level = 1, - primary = {trident = true}, - secondary = {}, - disallow = {}, - incompatible = {riptide = true}, - weight = 1, - description = S("Channels a bolt of lightning toward a target. Works only during thunderstorms and if target is unobstructed with opaque blocks."), - curse = false, - on_enchant = function() end, - requires_tool = false, - treasure = false, - power_range_table = {{25, 50}}, - inv_combat_tab = true, - inv_tool_tab = false, -}]]-- - -- implemented in mcl_death_drop mcl_enchanting.enchantments.curse_of_vanishing = { name = S("Curse of Vanishing"), @@ -127,18 +108,6 @@ mcl_enchanting.enchantments.fire_aspect = { inv_tool_tab = false, } -minetest.register_on_punchplayer(function(player, hitter, time_from_last_punch, tool_capabilities, dir, damage) - if hitter and hitter:is_player() then - local wielditem = hitter:get_wielded_item() - if wielditem then - local fire_aspect_level = mcl_enchanting.get_enchantment(wielditem, "fire_aspect") - if fire_aspect_level > 0 then - mcl_burning.set_on_fire(player, fire_aspect_level * 4) - end - end - end -end) - mcl_enchanting.enchantments.flame = { name = S("Flame"), max_level = 1, @@ -194,43 +163,6 @@ mcl_enchanting.enchantments.frost_walker = { inv_combat_tab = true, inv_tool_tab = false, } - -walkover.register_global(function(pos, _, player) - local boots = player:get_inventory():get_stack("armor", 5) - local frost_walker = mcl_enchanting.get_enchantment(boots, "frost_walker") - if frost_walker <= 0 then - return - end - local radius = frost_walker + 2 - local minp = {x = pos.x - radius, y = pos.y, z = pos.z - radius} - local maxp = {x = pos.x + radius, y = pos.y, z = pos.z + radius} - local positions = minetest.find_nodes_in_area_under_air(minp, maxp, "mcl_core:water_source") - for _, p in ipairs(positions) do - if vector.distance(pos, p) <= radius then - minetest.set_node(p, {name = "mcl_core:frosted_ice_0"}) - end - end -end) - --- requires missing MineClone2 feature ---[[mcl_enchanting.enchantments.impaling = { - name = S("Impaling"), - max_level = 5, - primary = {trident = true}, - secondary = {}, - disallow = {}, - incompatible = {}, - weight = 2, - description = S("Trident deals additional damage to ocean mobs."), - curse = false, - on_enchant = function() end, - requires_tool = false, - treasure = false, - power_range_table = {{1, 21}, {9, 29}, {17, 37}, {25, 45}, {33, 53}}, - inv_combat_tab = true, - inv_tool_tab = false, -}]]-- - -- implemented in mcl_bows mcl_enchanting.enchantments.infinity = { name = S("Infinity"), @@ -268,23 +200,6 @@ mcl_enchanting.enchantments.knockback = { inv_combat_tab = true, inv_tool_tab = false, } - -local old_calculate_knockback = minetest.calculate_knockback -function minetest.calculate_knockback(player, hitter, time_from_last_punch, tool_capabilities, dir, distance, damage) - local knockback = old_calculate_knockback(player, hitter, time_from_last_punch, tool_capabilities, dir, distance, damage) - local luaentity - if hitter then - luaentity = hitter:get_luaentity() - end - if hitter and hitter:is_player() then - local wielditem = hitter:get_wielded_item() - knockback = knockback + 3 * mcl_enchanting.get_enchantment(wielditem, "knockback") - elseif luaentity and luaentity._knockback then - knockback = knockback + luaentity._knockback - end - return knockback -end - -- implemented in mcl_mobs and mobs_mc mcl_enchanting.enchantments.looting = { name = S("Looting"), @@ -303,26 +218,6 @@ mcl_enchanting.enchantments.looting = { inv_combat_tab = true, inv_tool_tab = false, } - --- requires missing MineClone2 feature ---[[mcl_enchanting.enchantments.loyalty = { - name = S("Loyalty"), - max_level = 3, - primary = {trident = true}, - secondary = {}, - disallow = {}, - incompatible = {riptide = true}, - weight = 5, - description = S("Trident returns after being thrown. Higher levels reduce return time."), - curse = false, - on_enchant = function() end, - requires_tool = false, - treasure = false, - power_range_table = {{12, 50}, {19, 50}, {26, 50}}, - inv_combat_tab = true, - inv_tool_tab = false, -}]]-- - -- implemented in mcl_fishing mcl_enchanting.enchantments.luck_of_the_sea = { name = S("Luck of the Sea"), @@ -379,52 +274,6 @@ mcl_enchanting.enchantments.mending = { inv_combat_tab = true, inv_tool_tab = true, } - -mcl_experience.register_on_add_xp(function(player, xp) - local inv = player:get_inventory() - - local candidates = { - {list = "main", index = player:get_wield_index()}, - {list = "armor", index = 2}, - {list = "armor", index = 3}, - {list = "armor", index = 4}, - {list = "armor", index = 5}, - {list = "offhand", index = 1}, - } - - local final_candidates = {} - for _, can in ipairs(candidates) do - local stack = inv:get_stack(can.list, can.index) - local wear = stack:get_wear() - if mcl_enchanting.has_enchantment(stack, "mending") and wear > 0 then - can.stack = stack - can.wear = wear - table.insert(final_candidates, can) - end - end - - if #final_candidates > 0 then - local can = final_candidates[math.random(#final_candidates)] - local stack, list, index, wear = can.stack, can.list, can.index, can.wear - local uses = mcl_util.calculate_durability(stack) - local multiplier = 2 * 65535 / uses - local repair = xp * multiplier - local new_wear = wear - repair - - if new_wear < 0 then - xp = math.floor(-new_wear / multiplier + 0.5) - new_wear = 0 - else - xp = 0 - end - - stack:set_wear(math.floor(new_wear)) - inv:set_stack(list, index, stack) - end - - return xp -end, 0) - mcl_enchanting.enchantments.multishot = { name = S("Multishot"), max_level = 1, @@ -518,45 +367,6 @@ mcl_enchanting.enchantments.quick_charge = { inv_combat_tab = true, inv_tool_tab = false, } - --- unimplemented ---[[mcl_enchanting.enchantments.respiration = { - name = S("Respiration"), - max_level = 3, - primary = {armor_head = true}, - secondary = {}, - disallow = {non_combat_armor = true}, - incompatible = {}, - weight = 2, - description = S("Extends underwater breathing time."), - curse = false, - on_enchant = function() end, - requires_tool = false, - treasure = false, - power_range_table = {{10, 40}, {20, 50}, {30, 60}}, - inv_combat_tab = true, - inv_tool_tab = false, -}]]-- - --- requires missing MineClone2 feature ---[[mcl_enchanting.enchantments.riptide = { - name = S("Riptide"), - max_level = 3, - primary = {trident = true}, - secondary = {}, - disallow = {}, - incompatible = {channeling = true, loyalty = true}, - weight = 2, - description = S("Trident launches player with itself when thrown. Works only in water or rain."), - curse = false, - on_enchant = function() end, - requires_tool = false, - treasure = false, - power_range_table = {{17, 50}, {24, 50}, {31, 50}}, - inv_combat_tab = true, - inv_tool_tab = false, -}]]-- - -- implemented via on_enchant mcl_enchanting.enchantments.sharpness = { name = S("Sharpness"), @@ -632,26 +442,6 @@ mcl_enchanting.enchantments.soul_speed = { inv_combat_tab = true, inv_tool_tab = false, } - --- requires missing MineClone2 feature ---[[mcl_enchanting.enchantments.sweeping_edge = { - name = S("Sweeping Edge"), - max_level = 3, - primary = {sword = true}, - secondary = {}, - disallow = {}, - incompatible = {}, - weight = 2, - description = S("Increases sweeping attack damage."), - curse = false, - on_enchant = function() end, - requires_tool = false, - treasure = false, - power_range_table = {{5, 20}, {14, 29}, {23, 38}}, - inv_combat_tab = true, - inv_tool_tab = false, -}]]-- - -- for tools & weapons implemented via on_enchant; for bows implemented in mcl_bows; for armor implemented in mcl_armor and mcl_tt; for fishing rods implemented in mcl_fishing mcl_enchanting.enchantments.unbreaking = { name = S("Unbreaking"), diff --git a/mods/ITEMS/mcl_tools/aliases.lua b/mods/ITEMS/mcl_tools/aliases.lua deleted file mode 100644 index 7aadabc15c..0000000000 --- a/mods/ITEMS/mcl_tools/aliases.lua +++ /dev/null @@ -1,21 +0,0 @@ -minetest.register_alias("mcl_core:pick_wood", "mcl_tools:pick_wood") -minetest.register_alias("mcl_core:pick_stone", "mcl_tools:pick_stone") -minetest.register_alias("mcl_core:pick_iron", "mcl_tools:pick_iron") -minetest.register_alias("mcl_core:pick_gold", "mcl_tools:pick_gold") -minetest.register_alias("mcl_core:pick_diamond", "mcl_tools:pick_diamond") -minetest.register_alias("mcl_core:shovel_wood", "mcl_tools:shovel_wood") -minetest.register_alias("mcl_core:shovel_stone", "mcl_tools:shovel_stone") -minetest.register_alias("mcl_core:shovel_iron", "mcl_tools:shovel_iron") -minetest.register_alias("mcl_core:shovel_gold", "mcl_tools:shovel_gold") -minetest.register_alias("mcl_core:shovel_diamond", "mcl_tools:shovel_diamond") -minetest.register_alias("mcl_core:axe_wood", "mcl_tools:axe_wood") -minetest.register_alias("mcl_core:axe_stone", "mcl_tools:axe_stone") -minetest.register_alias("mcl_core:axe_iron", "mcl_tools:axe_iron") -minetest.register_alias("mcl_core:axe_gold", "mcl_tools:axe_gold") -minetest.register_alias("mcl_core:axe_diamond", "mcl_tools:axe_diamond") -minetest.register_alias("mcl_core:sword_wood", "mcl_tools:sword_wood") -minetest.register_alias("mcl_core:sword_stone", "mcl_tools:sword_stone") -minetest.register_alias("mcl_core:sword_iron", "mcl_tools:sword_iron") -minetest.register_alias("mcl_core:sword_gold", "mcl_tools:sword_gold") -minetest.register_alias("mcl_core:sword_diamond", "mcl_tools:sword_diamond") -minetest.register_alias("mcl_core:shears", "mcl_tools:shears") diff --git a/mods/ITEMS/mcl_tools/crafting.lua b/mods/ITEMS/mcl_tools/crafting.lua deleted file mode 100644 index 07032b184b..0000000000 --- a/mods/ITEMS/mcl_tools/crafting.lua +++ /dev/null @@ -1,338 +0,0 @@ -minetest.register_craft({ - output = "mcl_tools:pick_wood", - recipe = { - {"group:wood", "group:wood", "group:wood"}, - {"", "mcl_core:stick", ""}, - {"", "mcl_core:stick", ""}, - } -}) - -minetest.register_craft({ - output = "mcl_tools:pick_stone", - recipe = { - {"group:cobble", "group:cobble", "group:cobble"}, - {"", "mcl_core:stick", ""}, - {"", "mcl_core:stick", ""}, - } -}) - -minetest.register_craft({ - output = "mcl_tools:pick_iron", - recipe = { - {"mcl_core:iron_ingot", "mcl_core:iron_ingot", "mcl_core:iron_ingot"}, - {"", "mcl_core:stick", ""}, - {"", "mcl_core:stick", ""}, - } -}) - -minetest.register_craft({ - output = "mcl_tools:pick_gold", - recipe = { - {"mcl_core:gold_ingot", "mcl_core:gold_ingot", "mcl_core:gold_ingot"}, - {"", "mcl_core:stick", ""}, - {"", "mcl_core:stick", ""}, - } -}) - -minetest.register_craft({ - output = "mcl_tools:pick_diamond", - recipe = { - {"mcl_core:diamond", "mcl_core:diamond", "mcl_core:diamond"}, - {"", "mcl_core:stick", ""}, - {"", "mcl_core:stick", ""}, - } -}) - -minetest.register_craft({ - output = "mcl_tools:shovel_wood", - recipe = { - {"group:wood"}, - {"mcl_core:stick"}, - {"mcl_core:stick"}, - } -}) - -minetest.register_craft({ - output = "mcl_tools:shovel_stone", - recipe = { - {"group:cobble"}, - {"mcl_core:stick"}, - {"mcl_core:stick"}, - } -}) - -minetest.register_craft({ - output = "mcl_tools:shovel_iron", - recipe = { - {"mcl_core:iron_ingot"}, - {"mcl_core:stick"}, - {"mcl_core:stick"}, - } -}) - -minetest.register_craft({ - output = "mcl_tools:shovel_gold", - recipe = { - {"mcl_core:gold_ingot"}, - {"mcl_core:stick"}, - {"mcl_core:stick"}, - } -}) - -minetest.register_craft({ - output = "mcl_tools:shovel_diamond", - recipe = { - {"mcl_core:diamond"}, - {"mcl_core:stick"}, - {"mcl_core:stick"}, - } -}) - -minetest.register_craft({ - output = "mcl_tools:axe_wood", - recipe = { - {"group:wood", "group:wood"}, - {"group:wood", "mcl_core:stick"}, - {"", "mcl_core:stick"}, - } -}) -minetest.register_craft({ - output = "mcl_tools:axe_wood", - recipe = { - {"group:wood", "group:wood"}, - {"mcl_core:stick", "group:wood"}, - {"mcl_core:stick", ""}, - } -}) - -minetest.register_craft({ - output = "mcl_tools:axe_stone", - recipe = { - {"group:cobble", "group:cobble"}, - {"group:cobble", "mcl_core:stick"}, - {"", "mcl_core:stick"}, - } -}) -minetest.register_craft({ - output = "mcl_tools:axe_stone", - recipe = { - {"group:cobble", "group:cobble"}, - {"mcl_core:stick", "group:cobble"}, - {"mcl_core:stick", ""}, - } -}) - -minetest.register_craft({ - output = "mcl_tools:axe_iron", - recipe = { - {"mcl_core:iron_ingot", "mcl_core:iron_ingot"}, - {"mcl_core:iron_ingot", "mcl_core:stick"}, - {"", "mcl_core:stick"}, - } -}) -minetest.register_craft({ - output = "mcl_tools:axe_iron", - recipe = { - {"mcl_core:iron_ingot", "mcl_core:iron_ingot"}, - {"mcl_core:stick", "mcl_core:iron_ingot"}, - {"mcl_core:stick", ""}, - } -}) - -minetest.register_craft({ - output = "mcl_tools:axe_gold", - recipe = { - {"mcl_core:gold_ingot", "mcl_core:gold_ingot"}, - {"mcl_core:gold_ingot", "mcl_core:stick"}, - {"", "mcl_core:stick"}, - } -}) -minetest.register_craft({ - output = "mcl_tools:axe_gold", - recipe = { - {"mcl_core:gold_ingot", "mcl_core:gold_ingot"}, - {"mcl_core:stick", "mcl_core:gold_ingot"}, - {"mcl_core:stick", ""}, - } -}) - -minetest.register_craft({ - output = "mcl_tools:axe_diamond", - recipe = { - {"mcl_core:diamond", "mcl_core:diamond"}, - {"mcl_core:diamond", "mcl_core:stick"}, - {"", "mcl_core:stick"}, - } -}) -minetest.register_craft({ - output = "mcl_tools:axe_diamond", - recipe = { - {"mcl_core:diamond", "mcl_core:diamond"}, - {"mcl_core:stick", "mcl_core:diamond"}, - {"mcl_core:stick", ""}, - } -}) - -minetest.register_craft({ - output = "mcl_tools:sword_wood", - recipe = { - {"group:wood"}, - {"group:wood"}, - {"mcl_core:stick"}, - } -}) - -minetest.register_craft({ - output = "mcl_tools:sword_stone", - recipe = { - {"group:cobble"}, - {"group:cobble"}, - {"mcl_core:stick"}, - } -}) - -minetest.register_craft({ - output = "mcl_tools:sword_iron", - recipe = { - {"mcl_core:iron_ingot"}, - {"mcl_core:iron_ingot"}, - {"mcl_core:stick"}, - } -}) - -minetest.register_craft({ - output = "mcl_tools:sword_gold", - recipe = { - {"mcl_core:gold_ingot"}, - {"mcl_core:gold_ingot"}, - {"mcl_core:stick"}, - } -}) - -minetest.register_craft({ - output = "mcl_tools:sword_diamond", - recipe = { - {"mcl_core:diamond"}, - {"mcl_core:diamond"}, - {"mcl_core:stick"}, - } -}) - -minetest.register_craft({ - output = "mcl_tools:shears", - recipe = { - { "mcl_core:iron_ingot", "" }, - { "", "mcl_core:iron_ingot", }, - } -}) -minetest.register_craft({ - output = "mcl_tools:shears", - recipe = { - { "", "mcl_core:iron_ingot" }, - { "mcl_core:iron_ingot", "" }, - } -}) - -minetest.register_craft({ - type = "fuel", - recipe = "mcl_tools:pick_wood", - burntime = 10, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "mcl_tools:shovel_wood", - burntime = 10, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "mcl_tools:sword_wood", - burntime = 10, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "mcl_tools:axe_wood", - burntime = 10, -}) - -minetest.register_craft({ - type = "cooking", - output = "mcl_core:gold_nugget", - recipe = "mcl_tools:sword_gold", - cooktime = 10, -}) - -minetest.register_craft({ - type = "cooking", - output = "mcl_core:gold_nugget", - recipe = "mcl_tools:axe_gold", - cooktime = 10, -}) - -minetest.register_craft({ - type = "cooking", - output = "mcl_core:gold_nugget", - recipe = "mcl_tools:shovel_gold", - cooktime = 10, -}) - -minetest.register_craft({ - type = "cooking", - output = "mcl_core:gold_nugget", - recipe = "mcl_tools:pick_gold", - cooktime = 10, -}) - -minetest.register_craft({ - type = "cooking", - output = "mcl_core:iron_nugget", - recipe = "mcl_tools:sword_iron", - cooktime = 10, -}) - -minetest.register_craft({ - type = "cooking", - output = "mcl_core:iron_nugget", - recipe = "mcl_tools:axe_iron", - cooktime = 10, -}) - -minetest.register_craft({ - type = "cooking", - output = "mcl_core:iron_nugget", - recipe = "mcl_tools:shovel_iron", - cooktime = 10, -}) - -minetest.register_craft({ - type = "cooking", - output = "mcl_core:iron_nugget", - recipe = "mcl_tools:pick_iron", - cooktime = 10, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "mcl_tools:pick_wood", - burntime = 10, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "mcl_tools:shovel_wood", - burntime = 10, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "mcl_tools:sword_wood", - burntime = 10, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "mcl_tools:axe_wood", - burntime = 10, -}) diff --git a/mods/ITEMS/mcl_tools/init.lua b/mods/ITEMS/mcl_tools/init.lua index cbee8e3d0f..a91c3acd34 100644 --- a/mods/ITEMS/mcl_tools/init.lua +++ b/mods/ITEMS/mcl_tools/init.lua @@ -1,5 +1,4 @@ local modname = minetest.get_current_modname() -local modpath = minetest.get_modpath(modname) local S = minetest.get_translator(modname) -- mods/default/tools.lua @@ -62,555 +61,3 @@ minetest.register_tool(":", { shearsy_cobweb = { speed = 1, level = 0, uses = 0 }, } }) - --- Help texts -local pickaxe_longdesc = S("Pickaxes are mining tools to mine hard blocks, such as stone. A pickaxe can also be used as weapon, but it is rather inefficient.") -local axe_longdesc = S("An axe is your tool of choice to cut down trees, wood-based blocks and other blocks. Axes deal a lot of damage as well, but they are rather slow.") -local sword_longdesc = S("Swords are great in melee combat, as they are fast, deal high damage and can endure countless battles. Swords can also be used to cut down a few particular blocks, such as cobwebs.") -local shovel_longdesc = S("Shovels are tools for digging coarse blocks, such as dirt, sand and gravel. They can also be used to turn grass blocks to grass paths. Shovels can be used as weapons, but they are very weak.") -local shovel_use = S("To turn a grass block into a grass path, hold the shovel in your hand, then use (rightclick) the top or side of a grass block. This only works when there's air above the grass block.") -local shears_longdesc = S("Shears are tools to shear sheep and to mine a few block types. Shears are a special mining tool and can be used to obtain the original item from grass, leaves and similar blocks that require cutting.") -local shears_use = S("To shear sheep or carve faceless pumpkins, use the “place” key on them. Faces can only be carved at the side of faceless pumpkins. Mining works as usual, but the drops are different for a few blocks.") - -local wield_scale = mcl_vars.tool_wield_scale - --- Picks -minetest.register_tool("mcl_tools:pick_wood", { - description = S("Wooden Pickaxe"), - _doc_items_longdesc = pickaxe_longdesc, - _doc_items_hidden = false, - inventory_image = "default_tool_woodpick.png", - wield_scale = wield_scale, - groups = { tool=1, pickaxe=1, dig_speed_class=2, enchantability=15 }, - tool_capabilities = { - -- 1/1.2 - full_punch_interval = 0.83333333, - max_drop_level=1, - damage_groups = {fleshy=2}, - punch_attack_uses = 30, - }, - sound = { breaks = "default_tool_breaks" }, - _repair_material = "group:wood", - _mcl_toollike_wield = true, - _mcl_diggroups = { - pickaxey = { speed = 2, level = 1, uses = 60 } - }, -}) -minetest.register_tool("mcl_tools:pick_stone", { - description = S("Stone Pickaxe"), - _doc_items_longdesc = pickaxe_longdesc, - inventory_image = "default_tool_stonepick.png", - wield_scale = wield_scale, - groups = { tool=1, pickaxe=1, dig_speed_class=3, enchantability=5 }, - tool_capabilities = { - -- 1/1.2 - full_punch_interval = 0.83333333, - max_drop_level=3, - damage_groups = {fleshy=3}, - punch_attack_uses = 66, - }, - sound = { breaks = "default_tool_breaks" }, - _repair_material = "group:cobble", - _mcl_toollike_wield = true, - _mcl_diggroups = { - pickaxey = { speed = 4, level = 3, uses = 132 } - }, -}) -minetest.register_tool("mcl_tools:pick_iron", { - description = S("Iron Pickaxe"), - _doc_items_longdesc = pickaxe_longdesc, - inventory_image = "default_tool_steelpick.png", - wield_scale = wield_scale, - groups = { tool=1, pickaxe=1, dig_speed_class=4, enchantability=14 }, - tool_capabilities = { - -- 1/1.2 - full_punch_interval = 0.83333333, - max_drop_level=4, - damage_groups = {fleshy=4}, - punch_attack_uses = 126, - }, - sound = { breaks = "default_tool_breaks" }, - _repair_material = "mcl_core:iron_ingot", - _mcl_toollike_wield = true, - _mcl_diggroups = { - pickaxey = { speed = 6, level = 4, uses = 251 } - }, -}) -minetest.register_tool("mcl_tools:pick_gold", { - description = S("Golden Pickaxe"), - _doc_items_longdesc = pickaxe_longdesc, - inventory_image = "default_tool_goldpick.png", - wield_scale = wield_scale, - groups = { tool=1, pickaxe=1, dig_speed_class=6, enchantability=22 }, - tool_capabilities = { - -- 1/1.2 - full_punch_interval = 0.83333333, - max_drop_level=2, - damage_groups = {fleshy=2}, - punch_attack_uses = 17, - }, - sound = { breaks = "default_tool_breaks" }, - _repair_material = "mcl_core:gold_ingot", - _mcl_toollike_wield = true, - _mcl_diggroups = { - pickaxey = { speed = 12, level = 2, uses = 33 } - }, -}) -minetest.register_tool("mcl_tools:pick_diamond", { - description = S("Diamond Pickaxe"), - _doc_items_longdesc = pickaxe_longdesc, - inventory_image = "default_tool_diamondpick.png", - wield_scale = wield_scale, - groups = { tool=1, pickaxe=1, dig_speed_class=5, enchantability=10 }, - tool_capabilities = { - -- 1/1.2 - full_punch_interval = 0.83333333, - max_drop_level=5, - damage_groups = {fleshy=5}, - punch_attack_uses = 781, - }, - sound = { breaks = "default_tool_breaks" }, - _repair_material = "mcl_core:diamond", - _mcl_toollike_wield = true, - _mcl_diggroups = { - pickaxey = { speed = 8, level = 5, uses = 1562 } - }, -}) - -local function make_grass_path(itemstack, placer, pointed_thing) - -- 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 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 - end - end - - -- Only make grass path if tool used on side or top of target node - if pointed_thing.above.y < pointed_thing.under.y then - return itemstack - end - - if (minetest.get_item_group(node.name, "path_creation_possible") == 1) then - local above = table.copy(pointed_thing.under) - above.y = above.y + 1 - if minetest.get_node(above).name == "air" then - if minetest.is_protected(pointed_thing.under, placer:get_player_name()) then - minetest.record_protection_violation(pointed_thing.under, placer:get_player_name()) - return itemstack - end - - if not minetest.is_creative_enabled(placer:get_player_name()) then - -- Add wear (as if digging a shovely node) - local toolname = itemstack:get_name() - local wear = mcl_autogroup.get_wear(toolname, "shovely") - itemstack:add_wear(wear) - end - minetest.sound_play({name="default_grass_footstep", gain=1}, {pos = above}, true) - minetest.swap_node(pointed_thing.under, {name="mcl_core:grass_path"}) - end - end - return itemstack -end - -local carve_pumpkin -if minetest.get_modpath("mcl_farming") then - function carve_pumpkin(itemstack, placer, pointed_thing) - -- 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 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 - end - end - - -- Only carve pumpkin if used on side - if pointed_thing.above.y ~= pointed_thing.under.y then - return - end - if node.name == "mcl_farming:pumpkin" then - if not minetest.is_creative_enabled(placer:get_player_name()) then - -- Add wear (as if digging a shearsy node) - local toolname = itemstack:get_name() - local wear = mcl_autogroup.get_wear(toolname, "shearsy") - itemstack:add_wear(wear) - end - minetest.sound_play({name="default_grass_footstep", gain=1}, {pos = pointed_thing.above}, true) - local dir = vector.subtract(pointed_thing.under, pointed_thing.above) - local param2 = minetest.dir_to_facedir(dir) - minetest.set_node(pointed_thing.under, {name="mcl_farming:pumpkin_face", param2 = param2}) - minetest.add_item(pointed_thing.above, "mcl_farming:pumpkin_seeds 4") - end - return itemstack - end -end - --- Shovels -minetest.register_tool("mcl_tools:shovel_wood", { - description = S("Wooden Shovel"), - _doc_items_longdesc = shovel_longdesc, - _doc_items_usagehelp = shovel_use, - _doc_items_hidden = false, - inventory_image = "default_tool_woodshovel.png", - wield_scale = wield_scale, - groups = { tool=1, shovel=1, dig_speed_class=2, enchantability=15 }, - tool_capabilities = { - full_punch_interval = 1, - max_drop_level=1, - damage_groups = {fleshy=2}, - punch_attack_uses = 30, - }, - on_place = make_grass_path, - sound = { breaks = "default_tool_breaks" }, - _repair_material = "group:wood", - _mcl_toollike_wield = true, - _mcl_diggroups = { - shovely = { speed = 2, level = 1, uses = 60 } - }, -}) -minetest.register_tool("mcl_tools:shovel_stone", { - description = S("Stone Shovel"), - _doc_items_longdesc = shovel_longdesc, - _doc_items_usagehelp = shovel_use, - inventory_image = "default_tool_stoneshovel.png", - wield_scale = wield_scale, - groups = { tool=1, shovel=1, dig_speed_class=3, enchantability=5 }, - tool_capabilities = { - full_punch_interval = 1, - max_drop_level=3, - damage_groups = {fleshy=3}, - punch_attack_uses = 66, - }, - on_place = make_grass_path, - sound = { breaks = "default_tool_breaks" }, - _repair_material = "group:cobble", - _mcl_toollike_wield = true, - _mcl_diggroups = { - shovely = { speed = 4, level = 3, uses = 132 } - }, -}) -minetest.register_tool("mcl_tools:shovel_iron", { - description = S("Iron Shovel"), - _doc_items_longdesc = shovel_longdesc, - _doc_items_usagehelp = shovel_use, - inventory_image = "default_tool_steelshovel.png", - wield_scale = wield_scale, - groups = { tool=1, shovel=1, dig_speed_class=4, enchantability=14 }, - tool_capabilities = { - full_punch_interval = 1, - max_drop_level=4, - damage_groups = {fleshy=4}, - punch_attack_uses = 126, - }, - on_place = make_grass_path, - sound = { breaks = "default_tool_breaks" }, - _repair_material = "mcl_core:iron_ingot", - _mcl_toollike_wield = true, - _mcl_diggroups = { - shovely = { speed = 6, level = 4, uses = 251 } - }, -}) -minetest.register_tool("mcl_tools:shovel_gold", { - description = S("Golden Shovel"), - _doc_items_longdesc = shovel_longdesc, - _doc_items_usagehelp = shovel_use, - inventory_image = "default_tool_goldshovel.png", - wield_scale = wield_scale, - groups = { tool=1, shovel=1, dig_speed_class=6, enchantability=22 }, - tool_capabilities = { - full_punch_interval = 1, - max_drop_level=2, - damage_groups = {fleshy=2}, - punch_attack_uses = 17, - }, - on_place = make_grass_path, - sound = { breaks = "default_tool_breaks" }, - _repair_material = "mcl_core:gold_ingot", - _mcl_toollike_wield = true, - _mcl_diggroups = { - shovely = { speed = 12, level = 2, uses = 33 } - }, -}) -minetest.register_tool("mcl_tools:shovel_diamond", { - description = S("Diamond Shovel"), - _doc_items_longdesc = shovel_longdesc, - _doc_items_usagehelp = shovel_use, - inventory_image = "default_tool_diamondshovel.png", - wield_scale = wield_scale, - groups = { tool=1, shovel=1, dig_speed_class=5, enchantability=10 }, - tool_capabilities = { - full_punch_interval = 1, - max_drop_level=5, - damage_groups = {fleshy=5}, - punch_attack_uses = 781, - }, - on_place = make_grass_path, - sound = { breaks = "default_tool_breaks" }, - _repair_material = "mcl_core:diamond", - _mcl_toollike_wield = true, - _mcl_diggroups = { - shovely = { speed = 8, level = 5, uses = 1562 } - }, -}) - --- Axes -local function make_stripped_trunk(itemstack, placer, pointed_thing) - if pointed_thing.type ~= "node" then return end - - local node = minetest.get_node(pointed_thing.under) - local noddef = minetest.registered_nodes[minetest.get_node(pointed_thing.under).name] - - if not placer:get_player_control().sneak and noddef.on_rightclick then - return minetest.item_place(itemstack, placer, pointed_thing) - end - if minetest.is_protected(pointed_thing.under, placer:get_player_name()) then - minetest.record_protection_violation(pointed_thing.under, placer:get_player_name()) - return itemstack - end - - if noddef._mcl_stripped_variant == nil then - return itemstack - else - minetest.swap_node(pointed_thing.under, {name=noddef._mcl_stripped_variant, param2=node.param2}) - if not minetest.is_creative_enabled(placer:get_player_name()) then - -- Add wear (as if digging a axey node) - local toolname = itemstack:get_name() - local wear = mcl_autogroup.get_wear(toolname, "axey") - itemstack:add_wear(wear) - end - end - return itemstack -end - -minetest.register_tool("mcl_tools:axe_wood", { - description = S("Wooden Axe"), - _doc_items_longdesc = axe_longdesc, - _doc_items_hidden = false, - inventory_image = "default_tool_woodaxe.png", - wield_scale = wield_scale, - groups = { tool=1, axe=1, dig_speed_class=2, enchantability=15 }, - tool_capabilities = { - full_punch_interval = 1.25, - max_drop_level=1, - damage_groups = {fleshy=7}, - punch_attack_uses = 30, - }, - on_place = make_stripped_trunk, - sound = { breaks = "default_tool_breaks" }, - _repair_material = "group:wood", - _mcl_toollike_wield = true, - _mcl_diggroups = { - axey = { speed = 2, level = 1, uses = 60 } - }, -}) -minetest.register_tool("mcl_tools:axe_stone", { - description = S("Stone Axe"), - _doc_items_longdesc = axe_longdesc, - inventory_image = "default_tool_stoneaxe.png", - wield_scale = wield_scale, - groups = { tool=1, axe=1, dig_speed_class=3, enchantability=5 }, - tool_capabilities = { - full_punch_interval = 1.25, - max_drop_level=3, - damage_groups = {fleshy=9}, - punch_attack_uses = 66, - }, - on_place = make_stripped_trunk, - sound = { breaks = "default_tool_breaks" }, - _repair_material = "group:cobble", - _mcl_toollike_wield = true, - _mcl_diggroups = { - axey = { speed = 4, level = 3, uses = 132 } - }, -}) -minetest.register_tool("mcl_tools:axe_iron", { - description = S("Iron Axe"), - _doc_items_longdesc = axe_longdesc, - inventory_image = "default_tool_steelaxe.png", - wield_scale = wield_scale, - groups = { tool=1, axe=1, dig_speed_class=4, enchantability=14 }, - tool_capabilities = { - -- 1/0.9 - full_punch_interval = 1.11111111, - max_drop_level=4, - damage_groups = {fleshy=9}, - punch_attack_uses = 126, - }, - on_place = make_stripped_trunk, - sound = { breaks = "default_tool_breaks" }, - _repair_material = "mcl_core:iron_ingot", - _mcl_toollike_wield = true, - _mcl_diggroups = { - axey = { speed = 6, level = 4, uses = 251 } - }, -}) -minetest.register_tool("mcl_tools:axe_gold", { - description = S("Golden Axe"), - _doc_items_longdesc = axe_longdesc, - inventory_image = "default_tool_goldaxe.png", - wield_scale = wield_scale, - groups = { tool=1, axe=1, dig_speed_class=6, enchantability=22 }, - tool_capabilities = { - full_punch_interval = 1.0, - max_drop_level=2, - damage_groups = {fleshy=7}, - punch_attack_uses = 17, - }, - on_place = make_stripped_trunk, - sound = { breaks = "default_tool_breaks" }, - _repair_material = "mcl_core:gold_ingot", - _mcl_toollike_wield = true, - _mcl_diggroups = { - axey = { speed = 12, level = 2, uses = 33 } - }, -}) -minetest.register_tool("mcl_tools:axe_diamond", { - description = S("Diamond Axe"), - _doc_items_longdesc = axe_longdesc, - inventory_image = "default_tool_diamondaxe.png", - wield_scale = wield_scale, - groups = { tool=1, axe=1, dig_speed_class=5, enchantability=10 }, - tool_capabilities = { - full_punch_interval = 1.0, - max_drop_level=5, - damage_groups = {fleshy=9}, - punch_attack_uses = 781, - }, - on_place = make_stripped_trunk, - sound = { breaks = "default_tool_breaks" }, - _repair_material = "mcl_core:diamond", - _mcl_toollike_wield = true, - _mcl_diggroups = { - axey = { speed = 8, level = 5, uses = 1562 } - }, -}) - --- Swords -minetest.register_tool("mcl_tools:sword_wood", { - description = S("Wooden Sword"), - _doc_items_longdesc = sword_longdesc, - _doc_items_hidden = false, - inventory_image = "default_tool_woodsword.png", - wield_scale = wield_scale, - groups = { weapon=1, sword=1, dig_speed_class=2, enchantability=15 }, - tool_capabilities = { - full_punch_interval = 0.625, - max_drop_level=1, - damage_groups = {fleshy=4}, - punch_attack_uses = 60, - }, - sound = { breaks = "default_tool_breaks" }, - _repair_material = "group:wood", - _mcl_toollike_wield = true, - _mcl_diggroups = { - swordy = { speed = 2, level = 1, uses = 60 }, - swordy_cobweb = { speed = 2, level = 1, uses = 60 } - }, -}) -minetest.register_tool("mcl_tools:sword_stone", { - description = S("Stone Sword"), - _doc_items_longdesc = sword_longdesc, - inventory_image = "default_tool_stonesword.png", - wield_scale = wield_scale, - groups = { weapon=1, sword=1, dig_speed_class=3, enchantability=5 }, - tool_capabilities = { - full_punch_interval = 0.625, - max_drop_level=3, - damage_groups = {fleshy=5}, - punch_attack_uses = 132, - }, - sound = { breaks = "default_tool_breaks" }, - _repair_material = "group:cobble", - _mcl_toollike_wield = true, - _mcl_diggroups = { - swordy = { speed = 4, level = 3, uses = 132 }, - swordy_cobweb = { speed = 4, level = 3, uses = 132 } - }, -}) -minetest.register_tool("mcl_tools:sword_iron", { - description = S("Iron Sword"), - _doc_items_longdesc = sword_longdesc, - inventory_image = "default_tool_steelsword.png", - wield_scale = wield_scale, - groups = { weapon=1, sword=1, dig_speed_class=4, enchantability=14 }, - tool_capabilities = { - full_punch_interval = 0.625, - max_drop_level=4, - damage_groups = {fleshy=6}, - punch_attack_uses = 251, - }, - sound = { breaks = "default_tool_breaks" }, - _repair_material = "mcl_core:iron_ingot", - _mcl_toollike_wield = true, - _mcl_diggroups = { - swordy = { speed = 6, level = 4, uses = 251 }, - swordy_cobweb = { speed = 6, level = 4, uses = 251 } - }, -}) -minetest.register_tool("mcl_tools:sword_gold", { - description = S("Golden Sword"), - _doc_items_longdesc = sword_longdesc, - inventory_image = "default_tool_goldsword.png", - wield_scale = wield_scale, - groups = { weapon=1, sword=1, dig_speed_class=6, enchantability=22 }, - tool_capabilities = { - full_punch_interval = 0.625, - max_drop_level=2, - damage_groups = {fleshy=4}, - punch_attack_uses = 33, - }, - sound = { breaks = "default_tool_breaks" }, - _repair_material = "mcl_core:gold_ingot", - _mcl_toollike_wield = true, - _mcl_diggroups = { - swordy = { speed = 12, level = 2, uses = 33 }, - swordy_cobweb = { speed = 12, level = 2, uses = 33 } - }, -}) -minetest.register_tool("mcl_tools:sword_diamond", { - description = S("Diamond Sword"), - _doc_items_longdesc = sword_longdesc, - inventory_image = "default_tool_diamondsword.png", - wield_scale = wield_scale, - groups = { weapon=1, sword=1, dig_speed_class=5, enchantability=10 }, - tool_capabilities = { - full_punch_interval = 0.625, - max_drop_level=5, - damage_groups = {fleshy=7}, - punch_attack_uses = 1562, - }, - sound = { breaks = "default_tool_breaks" }, - _repair_material = "mcl_core:diamond", - _mcl_toollike_wield = true, - _mcl_diggroups = { - swordy = { speed = 8, level = 5, uses = 1562 }, - swordy_cobweb = { speed = 8, level = 5, uses = 1562 } - }, -}) - ---Shears -minetest.register_tool("mcl_tools:shears", { - description = S("Shears"), - _doc_items_longdesc = shears_longdesc, - _doc_items_usagehelp = shears_use, - inventory_image = "default_tool_shears.png", - wield_image = "default_tool_shears.png", - stack_max = 1, - groups = { tool=1, shears=1, dig_speed_class=4, }, - tool_capabilities = { - full_punch_interval = 0.5, - max_drop_level=1, - }, - on_place = carve_pumpkin, - sound = { breaks = "default_tool_breaks" }, - _mcl_toollike_wield = true, - _mcl_diggroups = { - shearsy = { speed = 1.5, level = 1, uses = 238 }, - shearsy_wool = { speed = 5, level = 1, uses = 238 }, - shearsy_cobweb = { speed = 15, level = 1, uses = 238 } - }, -}) - - -dofile(modpath.."/crafting.lua") -dofile(modpath.."/aliases.lua") diff --git a/mods/ITEMS/mcl_tools/sounds/mcl_tools_shears_cut.ogg b/mods/ITEMS/mcl_tools/sounds/mcl_tools_shears_cut.ogg deleted file mode 100644 index 8c32a649ab..0000000000 Binary files a/mods/ITEMS/mcl_tools/sounds/mcl_tools_shears_cut.ogg and /dev/null differ diff --git a/mods/ITEMS/mcl_tools/textures/default_tool_diamondaxe.png b/mods/ITEMS/mcl_tools/textures/default_tool_diamondaxe.png deleted file mode 100644 index 5dcc296897..0000000000 Binary files a/mods/ITEMS/mcl_tools/textures/default_tool_diamondaxe.png and /dev/null differ diff --git a/mods/ITEMS/mcl_tools/textures/default_tool_diamondpick.png b/mods/ITEMS/mcl_tools/textures/default_tool_diamondpick.png deleted file mode 100644 index ccdd2fcf6a..0000000000 Binary files a/mods/ITEMS/mcl_tools/textures/default_tool_diamondpick.png and /dev/null differ diff --git a/mods/ITEMS/mcl_tools/textures/default_tool_diamondshovel.png b/mods/ITEMS/mcl_tools/textures/default_tool_diamondshovel.png deleted file mode 100644 index 6cc561115a..0000000000 Binary files a/mods/ITEMS/mcl_tools/textures/default_tool_diamondshovel.png and /dev/null differ diff --git a/mods/ITEMS/mcl_tools/textures/default_tool_diamondsword.png b/mods/ITEMS/mcl_tools/textures/default_tool_diamondsword.png deleted file mode 100644 index bb18bcc498..0000000000 Binary files a/mods/ITEMS/mcl_tools/textures/default_tool_diamondsword.png and /dev/null differ diff --git a/mods/ITEMS/mcl_tools/textures/default_tool_goldaxe.png b/mods/ITEMS/mcl_tools/textures/default_tool_goldaxe.png deleted file mode 100644 index b874ff612f..0000000000 Binary files a/mods/ITEMS/mcl_tools/textures/default_tool_goldaxe.png and /dev/null differ diff --git a/mods/ITEMS/mcl_tools/textures/default_tool_goldpick.png b/mods/ITEMS/mcl_tools/textures/default_tool_goldpick.png deleted file mode 100644 index ceaa1d1d19..0000000000 Binary files a/mods/ITEMS/mcl_tools/textures/default_tool_goldpick.png and /dev/null differ diff --git a/mods/ITEMS/mcl_tools/textures/default_tool_goldshovel.png b/mods/ITEMS/mcl_tools/textures/default_tool_goldshovel.png deleted file mode 100644 index 72ccd7f057..0000000000 Binary files a/mods/ITEMS/mcl_tools/textures/default_tool_goldshovel.png and /dev/null differ diff --git a/mods/ITEMS/mcl_tools/textures/default_tool_goldsword.png b/mods/ITEMS/mcl_tools/textures/default_tool_goldsword.png deleted file mode 100644 index 13c1b0dd06..0000000000 Binary files a/mods/ITEMS/mcl_tools/textures/default_tool_goldsword.png and /dev/null differ diff --git a/mods/ITEMS/mcl_tools/textures/default_tool_shears.png b/mods/ITEMS/mcl_tools/textures/default_tool_shears.png deleted file mode 100644 index f4be712a49..0000000000 Binary files a/mods/ITEMS/mcl_tools/textures/default_tool_shears.png and /dev/null differ diff --git a/mods/ITEMS/mcl_tools/textures/default_tool_steelaxe.png b/mods/ITEMS/mcl_tools/textures/default_tool_steelaxe.png deleted file mode 100644 index 63b4ce589f..0000000000 Binary files a/mods/ITEMS/mcl_tools/textures/default_tool_steelaxe.png and /dev/null differ diff --git a/mods/ITEMS/mcl_tools/textures/default_tool_steelpick.png b/mods/ITEMS/mcl_tools/textures/default_tool_steelpick.png deleted file mode 100644 index 343cebc8ca..0000000000 Binary files a/mods/ITEMS/mcl_tools/textures/default_tool_steelpick.png and /dev/null differ diff --git a/mods/ITEMS/mcl_tools/textures/default_tool_steelshovel.png b/mods/ITEMS/mcl_tools/textures/default_tool_steelshovel.png deleted file mode 100644 index 593a3ebbae..0000000000 Binary files a/mods/ITEMS/mcl_tools/textures/default_tool_steelshovel.png and /dev/null differ diff --git a/mods/ITEMS/mcl_tools/textures/default_tool_steelsword.png b/mods/ITEMS/mcl_tools/textures/default_tool_steelsword.png deleted file mode 100644 index 28e45d641a..0000000000 Binary files a/mods/ITEMS/mcl_tools/textures/default_tool_steelsword.png and /dev/null differ diff --git a/mods/ITEMS/mcl_tools/textures/default_tool_stoneaxe.png b/mods/ITEMS/mcl_tools/textures/default_tool_stoneaxe.png deleted file mode 100644 index 95e8bcf472..0000000000 Binary files a/mods/ITEMS/mcl_tools/textures/default_tool_stoneaxe.png and /dev/null differ diff --git a/mods/ITEMS/mcl_tools/textures/default_tool_stonepick.png b/mods/ITEMS/mcl_tools/textures/default_tool_stonepick.png deleted file mode 100644 index 45715aaab6..0000000000 Binary files a/mods/ITEMS/mcl_tools/textures/default_tool_stonepick.png and /dev/null differ diff --git a/mods/ITEMS/mcl_tools/textures/default_tool_stoneshovel.png b/mods/ITEMS/mcl_tools/textures/default_tool_stoneshovel.png deleted file mode 100644 index 7cd8ca42a1..0000000000 Binary files a/mods/ITEMS/mcl_tools/textures/default_tool_stoneshovel.png and /dev/null differ diff --git a/mods/ITEMS/mcl_tools/textures/default_tool_stonesword.png b/mods/ITEMS/mcl_tools/textures/default_tool_stonesword.png deleted file mode 100644 index b319829dbd..0000000000 Binary files a/mods/ITEMS/mcl_tools/textures/default_tool_stonesword.png and /dev/null differ diff --git a/mods/ITEMS/mcl_tools/textures/default_tool_woodaxe.png b/mods/ITEMS/mcl_tools/textures/default_tool_woodaxe.png deleted file mode 100644 index 33de850f4a..0000000000 Binary files a/mods/ITEMS/mcl_tools/textures/default_tool_woodaxe.png and /dev/null differ diff --git a/mods/ITEMS/mcl_tools/textures/default_tool_woodpick.png b/mods/ITEMS/mcl_tools/textures/default_tool_woodpick.png deleted file mode 100644 index 33fde14e1c..0000000000 Binary files a/mods/ITEMS/mcl_tools/textures/default_tool_woodpick.png and /dev/null differ diff --git a/mods/ITEMS/mcl_tools/textures/default_tool_woodshovel.png b/mods/ITEMS/mcl_tools/textures/default_tool_woodshovel.png deleted file mode 100644 index e1855b5aee..0000000000 Binary files a/mods/ITEMS/mcl_tools/textures/default_tool_woodshovel.png and /dev/null differ diff --git a/mods/ITEMS/mcl_tools/textures/default_tool_woodsword.png b/mods/ITEMS/mcl_tools/textures/default_tool_woodsword.png deleted file mode 100644 index 8f583e0c09..0000000000 Binary files a/mods/ITEMS/mcl_tools/textures/default_tool_woodsword.png and /dev/null differ diff --git a/mods/MAPGEN/mcl_biomes/init.lua b/mods/MAPGEN/mcl_biomes/init.lua index 8e46682a9b..688bee07ac 100644 --- a/mods/MAPGEN/mcl_biomes/init.lua +++ b/mods/MAPGEN/mcl_biomes/init.lua @@ -13,7 +13,7 @@ local function register_classic_superflat_biome() name = "flat", node_top = "mcl_core:dirt_with_grass", depth_top = 1, - node_filler = "mcl_core:dirt", + node_filler = "mcl_core:dirt_with_grass", depth_filler = 0, node_stone = "mcl_core:stone", y_min = mcl_vars.mg_overworld_min - 21, -- Gap between build limit and floor diff --git a/mods/MAPGEN/mcl_mapgen_core/init.lua b/mods/MAPGEN/mcl_mapgen_core/init.lua index 8f47c1c6ca..a8863d31f7 100644 --- a/mods/MAPGEN/mcl_mapgen_core/init.lua +++ b/mods/MAPGEN/mcl_mapgen_core/init.lua @@ -11,13 +11,9 @@ local lvm_buffer = {} minetest.register_alias("mapgen_air", "air") minetest.register_alias("mapgen_stone", "mcl_core:stone") minetest.register_alias("mapgen_dirt_with_grass", "mcl_core:dirt_with_grass") -local mg_name = minetest.get_mapgen_setting("mg_name") +minetest.register_alias("mapgen_water_source", "mcl_core:dirt_with_grass") -- Content IDs -local c_stone = minetest.get_content_id("mcl_core:stone") -local c_void = minetest.get_content_id("mcl_core:void") -local c_air = minetest.CONTENT_AIR - local mg_flags = minetest.settings:get_flags("mg_flags") -- Inform other mods of dungeon setting for MCL2-style dungeons diff --git a/mods/MAPGEN/mcl_shipwrecks/init.lua b/mods/MAPGEN/mcl_shipwrecks/init.lua deleted file mode 100644 index 9227680b40..0000000000 --- a/mods/MAPGEN/mcl_shipwrecks/init.lua +++ /dev/null @@ -1,134 +0,0 @@ -local modname = minetest.get_current_modname() -local modpath = minetest.get_modpath(modname) ---local S = minetest.get_translator(modname) - -local mgp = minetest.get_mapgen_params() -local pr = PseudoRandom(mgp.seed) - ---schematics by chmodsayshello -local schems = { - "shipwreck_full_damaged", - "shipwreck_full_normal", - "shipwreck_full_back_damaged", - "shipwreck_half_front", - "shipwreck_half_back", -} - -local function get_supply_loot() - return { - stacks_min = 3, - stacks_max = 10, - items = { - --{ itemstring = "TODO:sus_stew", weight = 10, amount_min = 1, amount_max = 1 }, - { itemstring = "mcl_core:paper", weight = 8, amount_min = 1, amount_max = 12 }, - { itemstring = "mcl_farming:wheat_item", weight = 7, amount_min = 8, amount_max = 21 }, - { itemstring = "mcl_farming:carrot_item", weight = 7, amount_min = 4, amount_max = 8 }, - { itemstring = "mcl_farming:potato_item_poison", weight = 7, amount_min = 2, amount_max = 6 }, - { itemstring = "mcl_farming:potato_item", weight = 7, amount_min = 2, amount_max = 6 }, - --{ itemstring = "TODO:moss_block", weight = 7, amount_min = 1, amount_max = 4 }, - { itemstring = "mcl_core:coal_lump", weight = 6, amount_min = 2, amount_max = 8 }, - { itemstring = "mcl_mobitems:rotten_flesh", weight = 5, amount_min = 5, amount_max = 24 }, - { itemstring = "mcl_farming:potato_item", weight = 3, amount_min = 1, amount_max = 5 }, - { itemstring = "mcl_armor:helmet_leather_enchanted", weight = 3, func = function(stack, pr) - mcl_enchanting.enchant_uniform_randomly(stack, {"soul_speed"}) end }, - { itemstring = "mcl_armor:chestplate_leather_enchanted", weight = 3, func = function(stack, pr) - mcl_enchanting.enchant_uniform_randomly(stack, {"soul_speed"}) end }, - { itemstring = "mcl_armor:leggings_leather_enchanted", weight = 3, func = function(stack, pr) - mcl_enchanting.enchant_uniform_randomly(stack, {"soul_speed"}) end }, - { itemstring = "mcl_armor:boots_leather_enchanted", weight = 3, func = function(stack, pr) - mcl_enchanting.enchant_uniform_randomly(stack, {"soul_speed"}) end }, - --{ itemstring = "TODO:bamboo", weight = 2, amount_min = 1, amount_max = 3 }, - { itemstring = "mcl_farming:pumpkin", weight = 2, amount_min = 1, amount_max = 3 }, - { itemstring = "mcl_tnt:tnt", weight = 1, amount_min = 1, amount_max = 2 }, - - } - } -end - -local function get_treasure_loot() - return { - stacks_min = 3, - stacks_max = 10, - items = { - { itemstring = "mcl_core:iron_ingot", weight = 8, amount_min = 1, amount_max = 5 }, - { itemstring = "mcl_core:iron_nugget", weight = 8, amount_min = 1, amount_max = 10 }, - { itemstring = "mcl_core:emerald", weight = 8, amount_min = 1, amount_max = 12 }, - { itemstring = "mcl_dye:blue", weight = 8, amount_min = 1, amount_max = 12 }, - { itemstring = "mcl_core:gold_ingot", weight = 8, amount_min = 1, amount_max = 5 }, - { itemstring = "mcl_core:gold_nugget", weight = 8, amount_min = 1, amount_max = 10 }, - { itemstring = "mcl_experience:bottle", weight = 8, amount_min = 1, amount_max = 10 }, - { itemstring = "mcl_core:diamond", weight = 8, amount_min = 1, amount_max = 10 }, - } - } -end - -local function fill_chests(p1,p2) - for _,p in pairs(minetest.find_nodes_in_area(p1,p2,{"mcl_chests:chest_small"})) do - if minetest.get_meta(p):get_string("infotext") ~= "Chest" then - minetest.registered_nodes["mcl_chests:chest_small"].on_construct(p) - end - local inv = minetest.get_inventory( {type="node", pos=p} ) - local loot = get_supply_loot() - if pr:next(1,10) == 1 then loot = get_treasure_loot() end - mcl_loot.fill_inventory(inv, "main", mcl_loot.get_multi_loot({loot}, pr), pr) - end -end - -local function get_ocean_biomes() - local r = {} - for k,_ in pairs(minetest.registered_biomes) do - if k:find("_ocean") then table.insert(r,k) end - end - return r -end -local function get_beach_biomes() - local r = {} - for k,_ in pairs(minetest.registered_biomes) do - if k:find("_beach") or k:find("_shore") then table.insert(r,k) end - end - return r -end - -minetest.register_node("mcl_shipwrecks:structblock", {drawtype="airlike", walkable = false, pointable = false,groups = {structblock=1,not_in_creative_inventory=1}}) - -minetest.register_decoration({ - decoration = "mcl_shipwrecks:structblock", - deco_type = "simple", - place_on = {"group:sand","mcl_core:gravel"}, - spawn_by = {"group:water"}, - num_spawn_by = 4, - sidelen = 80, - fill_ratio = 0.00002, - flags = "place_center_x, place_center_z, force_placement", - biomes = get_ocean_biomes(), - y_max=mgp.water_level-4, -}) - ---rare beached variant -minetest.register_decoration({ - decoration = "mcl_shipwrecks:structblock", - deco_type = "simple", - place_on = {"group:sand","mcl_core:gravel","group:dirt"}, - spawn_by = {"group:water","air"}, - num_spawn_by = 4, - sidelen = 80, - fill_ratio=0.000001, - flags = "place_center_x, place_center_z, force_placement", - biomes = get_beach_biomes(), - y_max = mgp.water_level + 4, - y_min = mgp.water_level - 1, -}) - -minetest.register_lbm({ - name = "mcl_shipwrecks:struct_lbm", - run_at_every_load = true, - nodenames = {"mcl_shipwrecks:structblock"}, - action = function(pos, node) - minetest.set_node(pos,{name="air"}) - local file = modpath.."/schematics/"..schems[pr:next(1,#schems)]..".mts" - local pp = vector.offset(pos,0,pr:next(-4,-2),0) - mcl_structures.place_schematic(pp, file, "random", nil, true, "place_center_x,place_center_z", function() - fill_chests(vector.offset(pos,-20,-5,-20),vector.offset(pos,20,15,20)) - end,pr) - end -}) diff --git a/mods/MAPGEN/mcl_shipwrecks/mod.conf b/mods/MAPGEN/mcl_shipwrecks/mod.conf deleted file mode 100644 index 79940c7448..0000000000 --- a/mods/MAPGEN/mcl_shipwrecks/mod.conf +++ /dev/null @@ -1,3 +0,0 @@ -name = mcl_shipwrecks -author = cora -depends = mcl_loot, mcl_structures, mcl_enchanting diff --git a/mods/MAPGEN/mcl_shipwrecks/schematics/shipwreck_full_back_damaged.mts b/mods/MAPGEN/mcl_shipwrecks/schematics/shipwreck_full_back_damaged.mts deleted file mode 100644 index 12f3c9b139..0000000000 Binary files a/mods/MAPGEN/mcl_shipwrecks/schematics/shipwreck_full_back_damaged.mts and /dev/null differ diff --git a/mods/MAPGEN/mcl_shipwrecks/schematics/shipwreck_full_damaged.mts b/mods/MAPGEN/mcl_shipwrecks/schematics/shipwreck_full_damaged.mts deleted file mode 100644 index 5c8a3e105c..0000000000 Binary files a/mods/MAPGEN/mcl_shipwrecks/schematics/shipwreck_full_damaged.mts and /dev/null differ diff --git a/mods/MAPGEN/mcl_shipwrecks/schematics/shipwreck_full_normal.mts b/mods/MAPGEN/mcl_shipwrecks/schematics/shipwreck_full_normal.mts deleted file mode 100644 index 3d997c83b1..0000000000 Binary files a/mods/MAPGEN/mcl_shipwrecks/schematics/shipwreck_full_normal.mts and /dev/null differ diff --git a/mods/MAPGEN/mcl_shipwrecks/schematics/shipwreck_half_back.mts b/mods/MAPGEN/mcl_shipwrecks/schematics/shipwreck_half_back.mts deleted file mode 100644 index f58376f300..0000000000 Binary files a/mods/MAPGEN/mcl_shipwrecks/schematics/shipwreck_half_back.mts and /dev/null differ diff --git a/mods/MAPGEN/mcl_shipwrecks/schematics/shipwreck_half_front.mts b/mods/MAPGEN/mcl_shipwrecks/schematics/shipwreck_half_front.mts deleted file mode 100644 index 41efb386b3..0000000000 Binary files a/mods/MAPGEN/mcl_shipwrecks/schematics/shipwreck_half_front.mts and /dev/null differ diff --git a/mods/MAPGEN/mcl_structures/init.lua b/mods/MAPGEN/mcl_structures/init.lua deleted file mode 100644 index 5d3ecac6c2..0000000000 --- a/mods/MAPGEN/mcl_structures/init.lua +++ /dev/null @@ -1,630 +0,0 @@ -local modname = minetest.get_current_modname() -local S = minetest.get_translator(modname) -local modpath = minetest.get_modpath(modname) - -mcl_structures = {} - -local rotations = { - "0", - "90", - "180", - "270" -} - -local function ecb_place(blockpos, action, calls_remaining, param) - if calls_remaining >= 1 then return end - minetest.place_schematic(param.pos, param.schematic, param.rotation, param.replacements, param.force_placement, param.flags) - if param.after_placement_callback and param.p1 and param.p2 then - param.after_placement_callback(param.p1, param.p2, param.size, param.rotation, param.pr, param.callback_param) - end -end - -function mcl_structures.place_schematic(pos, schematic, rotation, replacements, force_placement, flags, after_placement_callback, pr, callback_param) - local s = loadstring(minetest.serialize_schematic(schematic, "lua", {lua_use_comments = false, lua_num_indent_spaces = 0}) .. " return schematic")() - if s and s.size then - local x, z = s.size.x, s.size.z - if rotation then - if rotation == "random" and pr then - rotation = rotations[pr:next(1,#rotations)] - end - if rotation == "random" then - x = math.max(x, z) - z = x - elseif rotation == "90" or rotation == "270" then - x, z = z, x - end - end - local p1 = {x=pos.x , y=pos.y , z=pos.z } - local p2 = {x=pos.x+x-1, y=pos.y+s.size.y-1, z=pos.z+z-1} - minetest.log("verbose", "[mcl_structures] size=" ..minetest.pos_to_string(s.size) .. ", rotation=" .. tostring(rotation) .. ", emerge from "..minetest.pos_to_string(p1) .. " to " .. minetest.pos_to_string(p2)) - local param = {pos=vector.new(pos), schematic=s, rotation=rotation, replacements=replacements, force_placement=force_placement, flags=flags, p1=p1, p2=p2, after_placement_callback = after_placement_callback, size=vector.new(s.size), pr=pr, callback_param=callback_param} - minetest.emerge_area(p1, p2, ecb_place, param) - end -end - -function mcl_structures.get_struct(file) - local localfile = modpath.."/schematics/"..file - local file, errorload = io.open(localfile, "rb") - if errorload then - minetest.log("error", "[mcl_structures] Could not open this struct: "..localfile) - return nil - end - - local allnode = file:read("*a") - file:close() - - return allnode -end - --- Call on_construct on pos. --- Useful to init chests from formspec. -local function init_node_construct(pos) - local node = minetest.get_node(pos) - local def = minetest.registered_nodes[node.name] - if def and def.on_construct then - def.on_construct(pos) - return true - end - return false -end - --- The call of Struct -function mcl_structures.call_struct(pos, struct_style, rotation, pr) - minetest.log("action","[mcl_structures] call_struct " .. struct_style.." at "..minetest.pos_to_string(pos)) - if not rotation then - rotation = "random" - end - if struct_style == "desert_temple" then - return mcl_structures.generate_desert_temple(pos, rotation, pr) - elseif struct_style == "desert_well" then - return mcl_structures.generate_desert_well(pos, rotation) - elseif struct_style == "igloo" then - return mcl_structures.generate_igloo(pos, rotation, pr) - elseif struct_style == "witch_hut" then - return mcl_structures.generate_witch_hut(pos, rotation) - elseif struct_style == "ice_spike_small" then - return mcl_structures.generate_ice_spike_small(pos, rotation) - elseif struct_style == "ice_spike_large" then - return mcl_structures.generate_ice_spike_large(pos, rotation) - elseif struct_style == "boulder" then - return mcl_structures.generate_boulder(pos, rotation, pr) - elseif struct_style == "fossil" then - return mcl_structures.generate_fossil(pos, rotation, pr) - elseif struct_style == "end_exit_portal" then - return mcl_structures.generate_end_exit_portal(pos, rotation) - elseif struct_style == "end_exit_portal_open" then - return mcl_structures.generate_end_exit_portal_open(pos, rotation) - elseif struct_style == "end_gateway_portal" then - return mcl_structures.generate_end_gateway_portal(pos, rotation) - elseif struct_style == "end_portal_shrine" then - return mcl_structures.generate_end_portal_shrine(pos, rotation, pr) - end -end - -function mcl_structures.generate_desert_well(pos, rot) - local newpos = {x=pos.x,y=pos.y-2,z=pos.z} - local path = modpath.."/schematics/mcl_structures_desert_well.mts" - return mcl_structures.place_schematic(newpos, path, rot or "0", nil, true) -end - -function mcl_structures.generate_igloo(pos, rotation, pr) - -- Place igloo - local success, rotation = mcl_structures.generate_igloo_top(pos, pr) - -- Place igloo basement with 50% chance - local r = pr:next(1,2) - if r == 1 then - -- Select basement depth - local dim = mcl_worlds.pos_to_dimension(pos) - --local buffer = pos.y - (mcl_vars.mg_lava_overworld_max + 10) - local buffer - if dim == "nether" then - buffer = pos.y - (mcl_vars.mg_lava_nether_max + 10) - elseif dim == "end" then - buffer = pos.y - (mcl_vars.mg_end_min + 1) - elseif dim == "overworld" then - buffer = pos.y - (mcl_vars.mg_lava_overworld_max + 10) - else - return success - end - if buffer <= 19 then - return success - end - local depth = pr:next(19, buffer) - local bpos = {x=pos.x, y=pos.y-depth, z=pos.z} - -- trapdoor position - local tpos - local dir, tdir - if rotation == "0" then - dir = {x=-1, y=0, z=0} - tdir = {x=1, y=0, z=0} - tpos = {x=pos.x+7, y=pos.y-1, z=pos.z+3} - elseif rotation == "90" then - dir = {x=0, y=0, z=-1} - tdir = {x=0, y=0, z=-1} - tpos = {x=pos.x+3, y=pos.y-1, z=pos.z+1} - elseif rotation == "180" then - dir = {x=1, y=0, z=0} - tdir = {x=-1, y=0, z=0} - tpos = {x=pos.x+1, y=pos.y-1, z=pos.z+3} - elseif rotation == "270" then - dir = {x=0, y=0, z=1} - tdir = {x=0, y=0, z=1} - tpos = {x=pos.x+3, y=pos.y-1, z=pos.z+7} - else - return success - end - local function set_brick(pos) - local c = pr:next(1, 3) -- cracked chance - local m = pr:next(1, 10) -- chance for monster egg - local brick - if m == 1 then - if c == 1 then - brick = "mcl_monster_eggs:monster_egg_stonebrickcracked" - else - brick = "mcl_monster_eggs:monster_egg_stonebrick" - end - else - if c == 1 then - brick = "mcl_core:stonebrickcracked" - else - brick = "mcl_core:stonebrick" - end - end - minetest.set_node(pos, {name=brick}) - end - local ladder_param2 = minetest.dir_to_wallmounted(tdir) - local real_depth = 0 - -- Check how deep we can actuall dig - for y=1, depth-5 do - real_depth = real_depth + 1 - local node = minetest.get_node({x=tpos.x,y=tpos.y-y,z=tpos.z}) - local def = minetest.registered_nodes[node.name] - if not (def and def.walkable and def.liquidtype == "none" and def.is_ground_content) then - bpos.y = tpos.y-y+1 - break - end - end - if real_depth <= 6 then - return success - end - -- Generate ladder to basement - for y=1, real_depth-1 do - set_brick({x=tpos.x-1,y=tpos.y-y,z=tpos.z }) - set_brick({x=tpos.x+1,y=tpos.y-y,z=tpos.z }) - set_brick({x=tpos.x ,y=tpos.y-y,z=tpos.z-1}) - set_brick({x=tpos.x ,y=tpos.y-y,z=tpos.z+1}) - minetest.set_node({x=tpos.x,y=tpos.y-y,z=tpos.z}, {name="mcl_core:ladder", param2=ladder_param2}) - end - -- Place basement - mcl_structures.generate_igloo_basement(bpos, rotation, pr) - -- Place hidden trapdoor - minetest.after(5, function(tpos, dir) - minetest.set_node(tpos, {name="mcl_doors:trapdoor", param2=20+minetest.dir_to_facedir(dir)}) -- TODO: more reliable param2 - end, tpos, dir) - end - return success -end - -function mcl_structures.generate_igloo_top(pos, pr) - -- FIXME: This spawns bookshelf instead of furnace. Fix this! - -- Furnace does ot work atm because apparently meta is not set. :-( - local newpos = {x=pos.x,y=pos.y-1,z=pos.z} - local path = modpath.."/schematics/mcl_structures_igloo_top.mts" - local rotation = tostring(pr:next(0,3)*90) - return mcl_structures.place_schematic(newpos, path, rotation, nil, true), rotation -end - -local function igloo_placement_callback(p1, p2, size, orientation, pr) - local chest_offset - if orientation == "0" then - chest_offset = {x=5, y=1, z=5} - elseif orientation == "90" then - chest_offset = {x=5, y=1, z=3} - elseif orientation == "180" then - chest_offset = {x=3, y=1, z=1} - elseif orientation == "270" then - chest_offset = {x=1, y=1, z=5} - else - return - end - --local size = {x=9,y=5,z=7} - local lootitems = mcl_loot.get_multi_loot({ - { - stacks_min = 1, - stacks_max = 1, - items = { - { itemstring = "mcl_core:apple_gold", weight = 1 }, - } - }, - { - stacks_min = 2, - stacks_max = 8, - items = { - { itemstring = "mcl_core:coal_lump", weight = 15, amount_min = 1, amount_max = 4 }, - { itemstring = "mcl_core:apple", weight = 15, amount_min = 1, amount_max = 3 }, - { itemstring = "mcl_farming:wheat_item", weight = 10, amount_min = 2, amount_max = 3 }, - { itemstring = "mcl_core:gold_nugget", weight = 10, amount_min = 1, amount_max = 3 }, - { itemstring = "mcl_mobitems:rotten_flesh", weight = 10 }, - { itemstring = "mcl_tools:axe_stone", weight = 2 }, - { itemstring = "mcl_core:emerald", weight = 1 }, - } - }}, pr) - - local chest_pos = vector.add(p1, chest_offset) - init_node_construct(chest_pos) - local meta = minetest.get_meta(chest_pos) - local inv = meta:get_inventory() - mcl_loot.fill_inventory(inv, "main", lootitems, pr) -end - -function mcl_structures.generate_igloo_basement(pos, orientation, pr) - -- TODO: Add brewing stand - -- TODO: Add monster eggs - -- TODO: Spawn villager and zombie villager - local path = modpath.."/schematics/mcl_structures_igloo_basement.mts" - mcl_structures.place_schematic(pos, path, orientation, nil, true, nil, igloo_placement_callback, pr) -end - -function mcl_structures.generate_boulder(pos, rotation, pr) - -- Choose between 2 boulder sizes (2×2×2 or 3×3×3) - local r = pr:next(1, 10) - local path - if r <= 3 then - path = modpath.."/schematics/mcl_structures_boulder_small.mts" - else - path = modpath.."/schematics/mcl_structures_boulder.mts" - end - - local newpos = {x=pos.x,y=pos.y-1,z=pos.z} - - return minetest.place_schematic(newpos, path, rotation) -- don't serialize schematics for registered biome decorations, for MT 5.4.0, https://github.com/minetest/minetest/issues/10995 -end - -local function spawn_witch(p1,p2) - local c = minetest.find_node_near(p1,15,{"mcl_cauldrons:cauldron"}) - if c then - local nn = minetest.find_nodes_in_area_under_air(vector.new(p1.x,c.y-1,p1.z),vector.new(p2.x,c.y-1,p2.z),{"mcl_core:sprucewood"}) - local witch = minetest.add_entity(vector.offset(nn[math.random(#nn)],0,1,0),"mobs_mc:witch"):get_luaentity() - local cat = minetest.add_entity(vector.offset(nn[math.random(#nn)],0,1,0),"mobs_mc:cat"):get_luaentity() - witch._home = c - witch.can_despawn = false - cat.object:set_properties({textures = {"mobs_mc_cat_black.png"}}) - cat.owner = "!witch!" --so it's not claimable by player - cat._home = c - cat.can_despawn = false - return - end -end - -local function hut_placement_callback(p1, p2, size, orientation, pr) - if not p1 or not p2 then return end - local legs = minetest.find_nodes_in_area(p1, p2, "mcl_core:tree") - for i = 1, #legs do - while minetest.get_item_group(mcl_vars.get_node({x=legs[i].x, y=legs[i].y-1, z=legs[i].z}, true, 333333).name, "water") ~= 0 do - legs[i].y = legs[i].y - 1 - minetest.swap_node(legs[i], {name = "mcl_core:tree", param2 = 2}) - end - end - spawn_witch(p1,p2) -end - -function mcl_structures.generate_witch_hut(pos, rotation, pr) - local path = modpath.."/schematics/mcl_structures_witch_hut.mts" - mcl_structures.place_schematic(pos, path, rotation, nil, true, nil, hut_placement_callback, pr) -end - -function mcl_structures.generate_ice_spike_small(pos, rotation) - local path = modpath.."/schematics/mcl_structures_ice_spike_small.mts" - return minetest.place_schematic(pos, path, rotation or "random", nil, false) -- don't serialize schematics for registered biome decorations, for MT 5.4.0 -end - -function mcl_structures.generate_ice_spike_large(pos, rotation) - local path = modpath.."/schematics/mcl_structures_ice_spike_large.mts" - return minetest.place_schematic(pos, path, rotation or "random", nil, false) -- don't serialize schematics for registered biome decorations, for MT 5.4.0 -end - -function mcl_structures.generate_fossil(pos, rotation, pr) - -- Generates one out of 8 possible fossil pieces - local newpos = {x=pos.x,y=pos.y-1,z=pos.z} - local fossils = { - "mcl_structures_fossil_skull_1.mts", -- 4×5×5 - "mcl_structures_fossil_skull_2.mts", -- 5×5×5 - "mcl_structures_fossil_skull_3.mts", -- 5×5×7 - "mcl_structures_fossil_skull_4.mts", -- 7×5×5 - "mcl_structures_fossil_spine_1.mts", -- 3×3×13 - "mcl_structures_fossil_spine_2.mts", -- 5×4×13 - "mcl_structures_fossil_spine_3.mts", -- 7×4×13 - "mcl_structures_fossil_spine_4.mts", -- 8×5×13 - } - local r = pr:next(1, #fossils) - local path = modpath.."/schematics/"..fossils[r] - return mcl_structures.place_schematic(newpos, path, rotation or "random", nil, true) -end - -function mcl_structures.generate_end_exit_portal(pos, rot) - local path = modpath.."/schematics/mcl_structures_end_exit_portal.mts" - return mcl_structures.place_schematic(pos, path, rot or "0", {["mcl_portals:portal_end"] = "air"}, true) -end - -function mcl_structures.generate_end_exit_portal_open(pos, rot) - local path = modpath.."/schematics/mcl_structures_end_exit_portal.mts" - return mcl_structures.place_schematic(pos, path, rot or "0", nil, true) -end - -function mcl_structures.generate_end_gateway_portal(pos, rot) - local path = modpath.."/schematics/mcl_structures_end_gateway_portal.mts" - return mcl_structures.place_schematic(pos, path, rot or "0", nil, true) -end - -local function shrine_placement_callback(p1, p2, size, rotation, pr) - -- Find and setup spawner with silverfish - local spawners = minetest.find_nodes_in_area(p1, p2, "mcl_mobspawners:spawner") - for s=1, #spawners do - --local meta = minetest.get_meta(spawners[s]) - mcl_mobspawners.setup_spawner(spawners[s], "mobs_mc:silverfish") - end - - -- Shuffle stone brick types - local bricks = minetest.find_nodes_in_area(p1, p2, "mcl_core:stonebrick") - for b=1, #bricks do - local r_bricktype = pr:next(1, 100) - local r_infested = pr:next(1, 100) - local bricktype - if r_infested <= 5 then - if r_bricktype <= 30 then -- 30% - bricktype = "mcl_monster_eggs:monster_egg_stonebrickmossy" - elseif r_bricktype <= 50 then -- 20% - bricktype = "mcl_monster_eggs:monster_egg_stonebrickcracked" - else -- 50% - bricktype = "mcl_monster_eggs:monster_egg_stonebrick" - end - else - if r_bricktype <= 30 then -- 30% - bricktype = "mcl_core:stonebrickmossy" - elseif r_bricktype <= 50 then -- 20% - bricktype = "mcl_core:stonebrickcracked" - end - -- 50% stonebrick (no change necessary) - end - if bricktype then - minetest.set_node(bricks[b], { name = bricktype }) - end - end - - -- Also replace stairs - local stairs = minetest.find_nodes_in_area(p1, p2, {"mcl_stairs:stair_stonebrick", "mcl_stairs:stair_stonebrick_outer", "mcl_stairs:stair_stonebrick_inner"}) - for s=1, #stairs do - local stair = minetest.get_node(stairs[s]) - local r_type = pr:next(1, 100) - if r_type <= 30 then -- 30% mossy - if stair.name == "mcl_stairs:stair_stonebrick" then - stair.name = "mcl_stairs:stair_stonebrickmossy" - elseif stair.name == "mcl_stairs:stair_stonebrick_outer" then - stair.name = "mcl_stairs:stair_stonebrickmossy_outer" - elseif stair.name == "mcl_stairs:stair_stonebrick_inner" then - stair.name = "mcl_stairs:stair_stonebrickmossy_inner" - end - minetest.set_node(stairs[s], stair) - elseif r_type <= 50 then -- 20% cracky - if stair.name == "mcl_stairs:stair_stonebrick" then - stair.name = "mcl_stairs:stair_stonebrickcracked" - elseif stair.name == "mcl_stairs:stair_stonebrick_outer" then - stair.name = "mcl_stairs:stair_stonebrickcracked_outer" - elseif stair.name == "mcl_stairs:stair_stonebrick_inner" then - stair.name = "mcl_stairs:stair_stonebrickcracked_inner" - end - minetest.set_node(stairs[s], stair) - end - -- 50% no change - end - - -- Randomly add ender eyes into end portal frames, but never fill the entire frame - local frames = minetest.find_nodes_in_area(p1, p2, "mcl_portals:end_portal_frame") - local eyes = 0 - for f=1, #frames do - local r_eye = pr:next(1, 10) - if r_eye == 1 then - eyes = eyes + 1 - if eyes < #frames then - local frame_node = minetest.get_node(frames[f]) - frame_node.name = "mcl_portals:end_portal_frame_eye" - minetest.set_node(frames[f], frame_node) - end - end - end -end - -function mcl_structures.generate_end_portal_shrine(pos, rotation, pr) - local offset = {x=6, y=4, z=6} - --local size = {x=13, y=8, z=13} - local newpos = { x = pos.x - offset.x, y = pos.y, z = pos.z - offset.z } - - local path = modpath.."/schematics/mcl_structures_end_portal_room_simple.mts" - mcl_structures.place_schematic(newpos, path, rotation or "0", nil, true, nil, shrine_placement_callback, pr) -end - -local function temple_placement_callback(p1, p2, size, rotation, pr) - - -- Delete cacti leftovers: - local cactus_nodes = minetest.find_nodes_in_area_under_air(p1, p2, "mcl_core:cactus") - if cactus_nodes and #cactus_nodes > 0 then - for _, pos in pairs(cactus_nodes) do - local node_below = minetest.get_node({x=pos.x, y=pos.y-1, z=pos.z}) - if node_below and node_below.name == "mcl_core:sandstone" then - minetest.swap_node(pos, {name="air"}) - end - end - end - - -- Find chests. - -- FIXME: Searching this large area just for the chets is not efficient. Need a better way to find the chests; - -- probably let's just infer it from newpos because the schematic always the same. - local chests = minetest.find_nodes_in_area(p1, p2, "mcl_chests:chest") - - -- Add desert temple loot into chests - for c=1, #chests do - local lootitems = mcl_loot.get_multi_loot({ - { - stacks_min = 2, - stacks_max = 4, - items = { - { itemstring = "mcl_mobitems:bone", weight = 25, amount_min = 4, amount_max=6 }, - { itemstring = "mcl_mobitems:rotten_flesh", weight = 25, amount_min = 3, amount_max=7 }, - { itemstring = "mcl_mobitems:spider_eye", weight = 25, amount_min = 1, amount_max=3 }, - { itemstring = "mcl_books:book", weight = 20, func = function(stack, pr) - mcl_enchanting.enchant_uniform_randomly(stack, {"soul_speed"}, pr) - end }, - { itemstring = "mcl_mobitems:saddle", weight = 20, }, - { itemstring = "mcl_core:apple_gold", weight = 20, }, - { itemstring = "mcl_core:gold_ingot", weight = 15, amount_min = 2, amount_max = 7 }, - { itemstring = "mcl_core:iron_ingot", weight = 15, amount_min = 1, amount_max = 5 }, - { itemstring = "mcl_core:emerald", weight = 15, amount_min = 1, amount_max = 3 }, - { itemstring = "", weight = 15, }, - { itemstring = "mcl_mobitems:iron_horse_armor", weight = 15, }, - { itemstring = "mcl_mobitems:gold_horse_armor", weight = 10, }, - { itemstring = "mcl_mobitems:diamond_horse_armor", weight = 5, }, - { itemstring = "mcl_core:diamond", weight = 5, amount_min = 1, amount_max = 3 }, - { itemstring = "mcl_core:apple_gold_enchanted", weight = 2, }, - } - }, - { - stacks_min = 4, - stacks_max = 4, - items = { - { itemstring = "mcl_mobitems:bone", weight = 10, amount_min = 1, amount_max = 8 }, - { itemstring = "mcl_mobitems:rotten_flesh", weight = 10, amount_min = 1, amount_max = 8 }, - { itemstring = "mcl_mobitems:gunpowder", weight = 10, amount_min = 1, amount_max = 8 }, - { itemstring = "mcl_core:sand", weight = 10, amount_min = 1, amount_max = 8 }, - { itemstring = "mcl_mobitems:string", weight = 10, amount_min = 1, amount_max = 8 }, - } - }}, pr) - init_node_construct(chests[c]) - local meta = minetest.get_meta(chests[c]) - local inv = meta:get_inventory() - mcl_loot.fill_inventory(inv, "main", lootitems, pr) - end - - -- Initialize pressure plates and randomly remove up to 5 plates - local pplates = minetest.find_nodes_in_area(p1, p2, "mesecons_pressureplates:pressure_plate_stone_off") - local pplates_remove = 5 - for p=1, #pplates do - if pplates_remove > 0 and pr:next(1, 100) >= 50 then - -- Remove plate - minetest.remove_node(pplates[p]) - pplates_remove = pplates_remove - 1 - else - -- Initialize plate - minetest.registered_nodes["mesecons_pressureplates:pressure_plate_stone_off"].on_construct(pplates[p]) - end - end -end - -function mcl_structures.generate_desert_temple(pos, rotation, pr) - -- No Generating for the temple ... Why using it ? No Change - local path = modpath.."/schematics/mcl_structures_desert_temple.mts" - local newpos = {x=pos.x,y=pos.y-12,z=pos.z} - --local size = {x=22, y=24, z=22} - if newpos == nil then - return - end - mcl_structures.place_schematic(newpos, path, rotation or "random", nil, true, nil, temple_placement_callback, pr) -end - -local registered_structures = {} - ---[[ Returns a table of structure of the specified type. -Currently the only valid parameter is "stronghold". -Format of return value: -{ - { pos = , generated= }, -- first structure - { pos = , generated= }, -- second structure - -- and so on -} - -TODO: Implement this function for all other structure types as well. -]] -function mcl_structures.get_registered_structures(structure_type) - if registered_structures[structure_type] then - return table.copy(registered_structures[structure_type]) - else - return {} - end -end - --- Register a structures table for the given type. The table format is the same as for --- mcl_structures.get_registered_structures. -function mcl_structures.register_structures(structure_type, structures) - registered_structures[structure_type] = structures -end - -local function dir_to_rotation(dir) - local ax, az = math.abs(dir.x), math.abs(dir.z) - if ax > az then - if dir.x < 0 then - return "270" - end - return "90" - end - if dir.z < 0 then - return "180" - end - return "0" -end - --- Debug command -minetest.register_chatcommand("spawnstruct", { - params = "desert_temple | desert_well | igloo | witch_hut | boulder | ice_spike_small | ice_spike_large | fossil | end_exit_portal | end_exit_portal_open | end_gateway_portal | end_portal_shrine | nether_portal | dungeon", - description = S("Generate a pre-defined structure near your position."), - privs = {debug = true}, - func = function(name, param) - local player = minetest.get_player_by_name(name) - if not player then return end - local pos = player:get_pos() - if not pos then return end - pos = vector.round(pos) - local dir = minetest.yaw_to_dir(player:get_look_horizontal()) - local rot = dir_to_rotation(dir) - local pr = PseudoRandom(pos.x+pos.y+pos.z) - local errord = false - local message = S("Structure placed.") - if param == "desert_temple" then - mcl_structures.generate_desert_temple(pos, rot, pr) - elseif param == "desert_well" then - mcl_structures.generate_desert_well(pos, rot) - elseif param == "igloo" then - mcl_structures.generate_igloo(pos, rot, pr) - elseif param == "witch_hut" then - mcl_structures.generate_witch_hut(pos, rot, pr) - elseif param == "boulder" then - mcl_structures.generate_boulder(pos, rot, pr) - elseif param == "fossil" then - mcl_structures.generate_fossil(pos, rot, pr) - elseif param == "ice_spike_small" then - mcl_structures.generate_ice_spike_small(pos, rot, pr) - elseif param == "ice_spike_large" then - mcl_structures.generate_ice_spike_large(pos, rot, pr) - elseif param == "end_exit_portal" then - mcl_structures.generate_end_exit_portal(pos, rot, pr) - elseif param == "end_exit_portal_open" then - mcl_structures.generate_end_exit_portal_open(pos, rot, pr) - elseif param == "end_gateway_portal" then - mcl_structures.generate_end_gateway_portal(pos, rot, pr) - elseif param == "end_portal_shrine" then - mcl_structures.generate_end_portal_shrine(pos, rot, pr) - elseif param == "dungeon" and mcl_dungeons and mcl_dungeons.spawn_dungeon then - mcl_dungeons.spawn_dungeon(pos, rot, pr) - elseif param == "nether_portal" and mcl_portals and mcl_portals.spawn_nether_portal then - mcl_portals.spawn_nether_portal(pos, rot, pr, name) - elseif param == "" then - message = S("Error: No structure type given. Please use “/spawnstruct ”.") - errord = true - else - message = S("Error: Unknown structure type. Please use “/spawnstruct ”.") - errord = true - end - minetest.chat_send_player(name, message) - if errord then - minetest.chat_send_player(name, S("Use /help spawnstruct to see a list of avaiable types.")) - end - end -}) diff --git a/mods/MAPGEN/mcl_structures/locale/mcl_structures.de.tr b/mods/MAPGEN/mcl_structures/locale/mcl_structures.de.tr deleted file mode 100644 index 3245b934cc..0000000000 --- a/mods/MAPGEN/mcl_structures/locale/mcl_structures.de.tr +++ /dev/null @@ -1,6 +0,0 @@ -# textdomain: mcl_structures -Generate a pre-defined structure near your position.=Erzeugt ein vordefiniertes Gebäude in Ihrer Nähe. -Structure placed.=Gebäude platziert. -Error: No structure type given. Please use “/spawnstruct ”.=Fehler: Kein Gebäudetyp angegeben. Bitte benutzen Sie „/spawnstruct “. -Error: Unknown structure type. Please use “/spawnstruct ”.=Fehler: Unbekannter Gebäudetyp. Bitte benutzen Sie „/spawnstruct “. -Use /help spawnstruct to see a list of avaiable types.=Benutzen Sie „/help spawnstruct“, um eine Liste der vorhandenen Typen zu sehen. diff --git a/mods/MAPGEN/mcl_structures/locale/mcl_structures.es.tr b/mods/MAPGEN/mcl_structures/locale/mcl_structures.es.tr deleted file mode 100644 index d73d81466d..0000000000 --- a/mods/MAPGEN/mcl_structures/locale/mcl_structures.es.tr +++ /dev/null @@ -1,6 +0,0 @@ -# textdomain: mcl_structures -Generate a pre-defined structure near your position.=Genere una estructura predefinida cerca de su posición. -Structure placed.=Estructura colocada. -Error: No structure type given. Please use “/spawnstruct ”.=Error: no se especifica ningún tipo de estructura. Utilice "/spawnstruct ". -Error: Unknown structure type. Please use “/spawnstruct ”.=Error: tipo de estructura desconocido. Utilice "/spawnstruct ". -Use /help spawnstruct to see a list of avaiable types.=Utiliza "/help spawnstruct" para ver una lista de los tipos disponibles. diff --git a/mods/MAPGEN/mcl_structures/locale/mcl_structures.fr.tr b/mods/MAPGEN/mcl_structures/locale/mcl_structures.fr.tr deleted file mode 100644 index 56b3c3ae0d..0000000000 --- a/mods/MAPGEN/mcl_structures/locale/mcl_structures.fr.tr +++ /dev/null @@ -1,7 +0,0 @@ -# textdomain: mcl_structures -Generate a pre-defined structure near your position.=Générez une structure prédéfinie près de votre position. -Structure placed.=Structure placée. -Village built. WARNING: Villages are experimental and might have bugs.=Village construit. AVERTISSEMENT: les villages sont expérimentaux et peuvent avoir des bogues. -Error: No structure type given. Please use “/spawnstruct ”.=Erreur: Aucun type de structure indiqué. Veuillez utiliser "/spawnstruct ". -Error: Unknown structure type. Please use “/spawnstruct ”.=Erreur: Type de structure inconnu. Veuillez utiliser "/spawnstruct ". -Use /help spawnstruct to see a list of avaiable types.=Utilisez /help spawnstruct pour voir une liste des types disponibles. diff --git a/mods/MAPGEN/mcl_structures/locale/mcl_structures.pl.tr b/mods/MAPGEN/mcl_structures/locale/mcl_structures.pl.tr deleted file mode 100644 index a0a1c69f2a..0000000000 --- a/mods/MAPGEN/mcl_structures/locale/mcl_structures.pl.tr +++ /dev/null @@ -1,8 +0,0 @@ -# textdomain: mcl_structures -Generate a pre-defined structure near your position.=Wygeneruj predefiniowaną strukturę nieopodal twojej pozycji. -Structure placed.=Struktura postawiona. -Village built. WARNING: Villages are experimental and might have bugs.=Wioska zbudowana. UWAGA: Wioski są eksperymentalne i mogą występować błędy. -Error: No structure type given. Please use “/spawnstruct ”.=Błąd: Nie podano typu struktury. Użyj "/spawnstruct ". -Error: Unknown structure type. Please use “/spawnstruct ”.=Błąd: Nieznany typ struktury. Użyj "/spawnstruct ". -Use /help spawnstruct to see a list of avaiable types.=Użyj /help spawnstruct aby zobaczyć listę dostępnych typów. - diff --git a/mods/MAPGEN/mcl_structures/locale/mcl_structures.ru.tr b/mods/MAPGEN/mcl_structures/locale/mcl_structures.ru.tr deleted file mode 100644 index 248de695ce..0000000000 --- a/mods/MAPGEN/mcl_structures/locale/mcl_structures.ru.tr +++ /dev/null @@ -1,7 +0,0 @@ -# textdomain: mcl_structures -Generate a pre-defined structure near your position.=Генерирует поблизости заранее определённое строение. -Structure placed.=Строение размещено. -Village built. WARNING: Villages are experimental and might have bugs.=Деревня построена. ВНИМАНИЕ: Деревни экспериментальны и могут содержать ошибки. -Error: No structure type given. Please use “/spawnstruct ”.=Ошибка: Не задан тип строения. Пожалуйста, используйте “/spawnstruct <тип>”. -Error: Unknown structure type. Please use “/spawnstruct ”.=Ошибка: Неизвестный тип строения. Пожалуйста, используйте “/spawnstruct <тип>”. -Use /help spawnstruct to see a list of avaiable types.=Используйте /help spawnstruct, чтобы увидеть список доступных типов. diff --git a/mods/MAPGEN/mcl_structures/locale/mcl_structures.zh_TW.tr b/mods/MAPGEN/mcl_structures/locale/mcl_structures.zh_TW.tr deleted file mode 100644 index 49796e5209..0000000000 --- a/mods/MAPGEN/mcl_structures/locale/mcl_structures.zh_TW.tr +++ /dev/null @@ -1,7 +0,0 @@ -# textdomain: mcl_structures -Generate a pre-defined structure near your position.=在你的位置附近生成一個預定義的結構。 -Structure placed.=結構已生成。 -Village built. WARNING: Villages are experimental and might have bugs.=村莊已生成。警告:村莊是實驗性的,可能會有錯誤。 -Error: No structure type given. Please use “/spawnstruct ”.=錯誤:未提供結構類型。請使用「/spawnstruct <種類>」。 -Error: Unknown structure type. Please use “/spawnstruct ”.=錯誤:未知結構類型。請使用「/spawnstruct <種類>」。 -Use /help spawnstruct to see a list of avaiable types.=使用「/help spawnstruct」以查看可用結構列表。 diff --git a/mods/MAPGEN/mcl_structures/locale/template.txt b/mods/MAPGEN/mcl_structures/locale/template.txt deleted file mode 100644 index 76f85c4c9b..0000000000 --- a/mods/MAPGEN/mcl_structures/locale/template.txt +++ /dev/null @@ -1,7 +0,0 @@ -# textdomain: mcl_structures -Generate a pre-defined structure near your position.= -Structure placed.= -Village built. WARNING: Villages are experimental and might have bugs.= -Error: No structure type given. Please use “/spawnstruct ”.= -Error: Unknown structure type. Please use “/spawnstruct ”.= -Use /help spawnstruct to see a list of avaiable types.= diff --git a/mods/MAPGEN/mcl_structures/mod.conf b/mods/MAPGEN/mcl_structures/mod.conf deleted file mode 100644 index 3150c7cec0..0000000000 --- a/mods/MAPGEN/mcl_structures/mod.conf +++ /dev/null @@ -1,4 +0,0 @@ -name = mcl_structures -author = Wuzzy -description = Structures for MCL2 -depends = mcl_loot diff --git a/mods/MAPGEN/mcl_structures/schematics/mcl_structures_boulder.mts b/mods/MAPGEN/mcl_structures/schematics/mcl_structures_boulder.mts deleted file mode 100644 index 0f4aa6daa5..0000000000 Binary files a/mods/MAPGEN/mcl_structures/schematics/mcl_structures_boulder.mts and /dev/null differ diff --git a/mods/MAPGEN/mcl_structures/schematics/mcl_structures_boulder_small.mts b/mods/MAPGEN/mcl_structures/schematics/mcl_structures_boulder_small.mts deleted file mode 100644 index 8340a9fe3b..0000000000 Binary files a/mods/MAPGEN/mcl_structures/schematics/mcl_structures_boulder_small.mts and /dev/null differ diff --git a/mods/MAPGEN/mcl_structures/schematics/mcl_structures_desert_temple.mts b/mods/MAPGEN/mcl_structures/schematics/mcl_structures_desert_temple.mts deleted file mode 100644 index 79a58637b9..0000000000 Binary files a/mods/MAPGEN/mcl_structures/schematics/mcl_structures_desert_temple.mts and /dev/null differ diff --git a/mods/MAPGEN/mcl_structures/schematics/mcl_structures_desert_well.mts b/mods/MAPGEN/mcl_structures/schematics/mcl_structures_desert_well.mts deleted file mode 100644 index 60cb373ad0..0000000000 Binary files a/mods/MAPGEN/mcl_structures/schematics/mcl_structures_desert_well.mts and /dev/null differ diff --git a/mods/MAPGEN/mcl_structures/schematics/mcl_structures_end_exit_portal.mts b/mods/MAPGEN/mcl_structures/schematics/mcl_structures_end_exit_portal.mts deleted file mode 100644 index bc24f800a6..0000000000 Binary files a/mods/MAPGEN/mcl_structures/schematics/mcl_structures_end_exit_portal.mts and /dev/null differ diff --git a/mods/MAPGEN/mcl_structures/schematics/mcl_structures_end_gateway_portal.mts b/mods/MAPGEN/mcl_structures/schematics/mcl_structures_end_gateway_portal.mts deleted file mode 100644 index 24b06a1c8f..0000000000 Binary files a/mods/MAPGEN/mcl_structures/schematics/mcl_structures_end_gateway_portal.mts and /dev/null differ diff --git a/mods/MAPGEN/mcl_structures/schematics/mcl_structures_end_portal_room_simple.mts b/mods/MAPGEN/mcl_structures/schematics/mcl_structures_end_portal_room_simple.mts deleted file mode 100644 index 73c327ce73..0000000000 Binary files a/mods/MAPGEN/mcl_structures/schematics/mcl_structures_end_portal_room_simple.mts and /dev/null differ diff --git a/mods/MAPGEN/mcl_structures/schematics/mcl_structures_fossil_skull_1.mts b/mods/MAPGEN/mcl_structures/schematics/mcl_structures_fossil_skull_1.mts deleted file mode 100644 index a9584ee000..0000000000 Binary files a/mods/MAPGEN/mcl_structures/schematics/mcl_structures_fossil_skull_1.mts and /dev/null differ diff --git a/mods/MAPGEN/mcl_structures/schematics/mcl_structures_fossil_skull_2.mts b/mods/MAPGEN/mcl_structures/schematics/mcl_structures_fossil_skull_2.mts deleted file mode 100644 index 78269c339b..0000000000 Binary files a/mods/MAPGEN/mcl_structures/schematics/mcl_structures_fossil_skull_2.mts and /dev/null differ diff --git a/mods/MAPGEN/mcl_structures/schematics/mcl_structures_fossil_skull_3.mts b/mods/MAPGEN/mcl_structures/schematics/mcl_structures_fossil_skull_3.mts deleted file mode 100644 index 17e6a615d8..0000000000 Binary files a/mods/MAPGEN/mcl_structures/schematics/mcl_structures_fossil_skull_3.mts and /dev/null differ diff --git a/mods/MAPGEN/mcl_structures/schematics/mcl_structures_fossil_skull_4.mts b/mods/MAPGEN/mcl_structures/schematics/mcl_structures_fossil_skull_4.mts deleted file mode 100644 index c3be1676eb..0000000000 Binary files a/mods/MAPGEN/mcl_structures/schematics/mcl_structures_fossil_skull_4.mts and /dev/null differ diff --git a/mods/MAPGEN/mcl_structures/schematics/mcl_structures_fossil_spine_1.mts b/mods/MAPGEN/mcl_structures/schematics/mcl_structures_fossil_spine_1.mts deleted file mode 100644 index 7ec39bacff..0000000000 Binary files a/mods/MAPGEN/mcl_structures/schematics/mcl_structures_fossil_spine_1.mts and /dev/null differ diff --git a/mods/MAPGEN/mcl_structures/schematics/mcl_structures_fossil_spine_2.mts b/mods/MAPGEN/mcl_structures/schematics/mcl_structures_fossil_spine_2.mts deleted file mode 100644 index bafc889938..0000000000 Binary files a/mods/MAPGEN/mcl_structures/schematics/mcl_structures_fossil_spine_2.mts and /dev/null differ diff --git a/mods/MAPGEN/mcl_structures/schematics/mcl_structures_fossil_spine_3.mts b/mods/MAPGEN/mcl_structures/schematics/mcl_structures_fossil_spine_3.mts deleted file mode 100644 index 39809dda93..0000000000 Binary files a/mods/MAPGEN/mcl_structures/schematics/mcl_structures_fossil_spine_3.mts and /dev/null differ diff --git a/mods/MAPGEN/mcl_structures/schematics/mcl_structures_fossil_spine_4.mts b/mods/MAPGEN/mcl_structures/schematics/mcl_structures_fossil_spine_4.mts deleted file mode 100644 index 2acfefe70c..0000000000 Binary files a/mods/MAPGEN/mcl_structures/schematics/mcl_structures_fossil_spine_4.mts and /dev/null differ diff --git a/mods/MAPGEN/mcl_structures/schematics/mcl_structures_ice_spike_large.mts b/mods/MAPGEN/mcl_structures/schematics/mcl_structures_ice_spike_large.mts deleted file mode 100644 index 75b0865574..0000000000 Binary files a/mods/MAPGEN/mcl_structures/schematics/mcl_structures_ice_spike_large.mts and /dev/null differ diff --git a/mods/MAPGEN/mcl_structures/schematics/mcl_structures_ice_spike_small.mts b/mods/MAPGEN/mcl_structures/schematics/mcl_structures_ice_spike_small.mts deleted file mode 100644 index 7407c8f72b..0000000000 Binary files a/mods/MAPGEN/mcl_structures/schematics/mcl_structures_ice_spike_small.mts and /dev/null differ diff --git a/mods/MAPGEN/mcl_structures/schematics/mcl_structures_igloo_basement.mts b/mods/MAPGEN/mcl_structures/schematics/mcl_structures_igloo_basement.mts deleted file mode 100644 index c2a774e782..0000000000 Binary files a/mods/MAPGEN/mcl_structures/schematics/mcl_structures_igloo_basement.mts and /dev/null differ diff --git a/mods/MAPGEN/mcl_structures/schematics/mcl_structures_igloo_top.mts b/mods/MAPGEN/mcl_structures/schematics/mcl_structures_igloo_top.mts deleted file mode 100644 index e3705236e4..0000000000 Binary files a/mods/MAPGEN/mcl_structures/schematics/mcl_structures_igloo_top.mts and /dev/null differ diff --git a/mods/MAPGEN/mcl_structures/schematics/mcl_structures_witch_hut.mts b/mods/MAPGEN/mcl_structures/schematics/mcl_structures_witch_hut.mts deleted file mode 100644 index ee5f967312..0000000000 Binary files a/mods/MAPGEN/mcl_structures/schematics/mcl_structures_witch_hut.mts and /dev/null differ diff --git a/mods/MISC/findbiome/README.md b/mods/MISC/findbiome/README.md deleted file mode 100644 index 04c63199a4..0000000000 --- a/mods/MISC/findbiome/README.md +++ /dev/null @@ -1,23 +0,0 @@ -# Minetest mod: findbiome - -## Description -This is a mod to help with mod/game development for Minetest. -It adds a command (“findbiome”) to find a biome nearby and teleport you to it -and another command (“listbiomes”) to list biomes. - -Version: 1.0.1 - -## Known limitations -There's no guarantee you will always find the biome, even if it exists in the world. -This can happen if the biome is very obscure or small, but usually you should be -able to find the biome. - -If the biome could not be found, just move to somewhere else and try again. - -## Authors -- paramat (MIT License) -- Wuzzy (MIT License) - -See license.txt for license information. - -This mod is based on the algorithm of the "spawn" mod from Minetest Game 5.0.0. diff --git a/mods/MISC/findbiome/init.lua b/mods/MISC/findbiome/init.lua deleted file mode 100644 index 8560d1607e..0000000000 --- a/mods/MISC/findbiome/init.lua +++ /dev/null @@ -1,320 +0,0 @@ -local S = minetest.get_translator(minetest.get_current_modname()) - -local mod_biomeinfo = minetest.get_modpath("biomeinfo") -local mg_name = minetest.get_mapgen_setting("mg_name") -local water_level = tonumber(minetest.get_mapgen_setting("water_level")) - --- Calculate the maximum playable limit -local mapgen_limit = tonumber(minetest.get_mapgen_setting("mapgen_limit")) -local chunksize = tonumber(minetest.get_mapgen_setting("chunksize")) -local playable_limit = math.max(mapgen_limit - (chunksize + 1) * 16, 0) - --- Parameters -------------- - --- Resolution of search grid in nodes. -local res = 64 --- Number of points checked in the square search grid (edge * edge). -local checks = 128 * 128 - --- End of parameters --------------------- - --- Direction table - -local dirs = { - {x = 0, y = 0, z = 1}, - {x = -1, y = 0, z = 0}, - {x = 0, y = 0, z = -1}, - {x = 1, y = 0, z = 0}, -} - --- Returns true if pos is within the world boundaries -local function is_in_world(pos) - return not (math.abs(pos.x) > playable_limit or math.abs(pos.y) > playable_limit or math.abs(pos.z) > playable_limit) -end - --- Checks if pos is within the biome's boundaries. If it isn't, places pos inside the boundaries. -local function adjust_pos_to_biome_limits(pos, biome_id) - local bpos = table.copy(pos) - local biome_name = minetest.get_biome_name(biome_id) - local biome = minetest.registered_biomes[biome_name] - if not biome then - minetest.log("error", "[findbiome] adjust_pos_to_biome_limits non-existing biome!") - return bpos, true - end - local axes = {"y", "x", "z"} - local out_of_bounds = false - for a=1, #axes do - local ax = axes[a] - local min, max - if biome[ax.."_min"] then - min = biome[ax.."_min"] - else - min = -playable_limit - end - if biome[ax.."_max"] then - max = biome[ax.."_max"] - else - max = playable_limit - end - min = tonumber(min) - max = tonumber(max) - if bpos[ax] < min then - out_of_bounds = true - bpos[ax] = min - if max-min > 16 then - bpos[ax] = math.max(bpos[ax] + 8, -playable_limit) - end - end - if bpos[ax] > max then - out_of_bounds = true - bpos[ax] = max - if max-min > 16 then - bpos[ax] = math.min(bpos[ax] - 8, playable_limit) - end - end - end - return bpos, out_of_bounds -end - --- Find the special default biome -local function find_default_biome() - local all_biomes = minetest.registered_biomes - local biome_count = 0 - for b, biome in pairs(all_biomes) do - biome_count = biome_count + 1 - end - -- Trivial case: No biomes registered, default biome is everywhere. - if biome_count == 0 then - local y = minetest.get_spawn_level(0, 0) - if not y then - y = 0 - end - return { x = 0, y = y, z = 0 } - end - local pos = {} - -- Just check a lot of random positions - -- It's a crappy algorithm but better than nothing. - for i=1, 100 do - pos.x = math.random(-playable_limit, playable_limit) - pos.y = math.random(-playable_limit, playable_limit) - pos.z = math.random(-playable_limit, playable_limit) - local biome_data = minetest.get_biome_data(pos) - if biome_data and minetest.get_biome_name(biome_data.biome) == "default" then - return pos - end - end - return nil -end - -local function find_biome(pos, biomes) - pos = vector.round(pos) - -- Pos: Starting point for biome checks. This also sets the y co-ordinate for all - -- points checked, so the suitable biomes must be active at this y. - - -- Initial variables - - local edge_len = 1 - local edge_dist = 0 - local dir_step = 0 - local dir_ind = 1 - local success - local spawn_pos - local biome_ids - - -- Get next position on square search spiral - local function next_pos() - if edge_dist == edge_len then - edge_dist = 0 - dir_ind = dir_ind + 1 - if dir_ind == 5 then - dir_ind = 1 - end - dir_step = dir_step + 1 - edge_len = math.floor(dir_step / 2) + 1 - end - - local dir = dirs[dir_ind] - local move = vector.multiply(dir, res) - - edge_dist = edge_dist + 1 - - return vector.add(pos, move) - end - - -- Position search - local function search() - local attempt = 1 - while attempt < 3 do - for iter = 1, checks do - local biome_data = minetest.get_biome_data(pos) - -- Sometimes biome_data is nil - local biome = biome_data and biome_data.biome - for id_ind = 1, #biome_ids do - local biome_id = biome_ids[id_ind] - pos = adjust_pos_to_biome_limits(pos, biome_id) - local spos = table.copy(pos) - if biome == biome_id then - local good_spawn_height = pos.y <= water_level + 16 and pos.y >= water_level - local spawn_y = minetest.get_spawn_level(spos.x, spos.z) - if spawn_y then - spawn_pos = {x = spos.x, y = spawn_y, z = spos.z} - elseif not good_spawn_height then - spawn_pos = {x = spos.x, y = spos.y, z = spos.z} - elseif attempt >= 2 then - spawn_pos = {x = spos.x, y = spos.y, z = spos.z} - end - if spawn_pos then - local _,outside = adjust_pos_to_biome_limits(spawn_pos, biome_id) - if is_in_world(spawn_pos) and not outside then - return true - end - end - end - end - - pos = next_pos() - end - attempt = attempt + 1 - end - return false - end - local function search_v6() - if not mod_biomeinfo then return - false - end - for iter = 1, checks do - local found_biome = biomeinfo.get_v6_biome(pos) - for i = 1, #biomes do - local searched_biome = biomes[i] - if found_biome == searched_biome then - local spawn_y = minetest.get_spawn_level(pos.x, pos.z) - if spawn_y then - spawn_pos = {x = pos.x, y = spawn_y, z = pos.z} - if is_in_world(spawn_pos) then - return true - end - end - end - end - - pos = next_pos() - end - - return false - end - - if mg_name == "v6" then - success = search_v6() - else - -- Table of suitable biomes - biome_ids = {} - for i=1, #biomes do - local id = minetest.get_biome_id(biomes[i]) - if not id then - return nil, false - end - table.insert(biome_ids, id) - end - success = search() - end - return spawn_pos, success - -end - -local mods_loaded = false -minetest.register_on_mods_loaded(function() - mods_loaded = true -end) - --- Regiver chat commands -do - minetest.register_chatcommand("findbiome", { - description = S("Find and teleport to biome"), - params = S(""), - privs = { debug = true, teleport = true }, - func = function(name, param) - if not mods_loaded then - return false - end - local player = minetest.get_player_by_name(name) - if not player then - return false, S("No player.") - end - local pos = player:get_pos() - local invalid_biome = true - if mg_name == "v6" then - if not mod_biomeinfo then - return false, S("Not supported. The “biomeinfo” mod is required for v6 mapgen support!") - end - local biomes = biomeinfo.get_active_v6_biomes() - for b=1, #biomes do - if param == biomes[b] then - invalid_biome = false - break - end - end - else - if param == "default" then - local biome_pos = find_default_biome() - if biome_pos then - player:set_pos(biome_pos) - return true, S("Biome found at @1.", minetest.pos_to_string(biome_pos)) - else - return false, S("No biome found!") - end - end - local id = minetest.get_biome_id(param) - if id then - invalid_biome = false - end - end - if invalid_biome then - return false, S("Biome does not exist!") - end - local biome_pos, success = find_biome(pos, {param}) - if success then - player:set_pos(biome_pos) - return true, S("Biome found at @1.", minetest.pos_to_string(biome_pos)) - else - return false, S("No biome found!") - end - end, - }) - - minetest.register_chatcommand("listbiomes", { - description = S("List all biomes"), - params = "", - privs = { debug = true }, - func = function(name, param) - if not mods_loaded then - return false - end - local biomes - local b = 0 - if mg_name == "v6" then - if not mod_biomeinfo then - return false, S("Not supported. The “biomeinfo” mod is required for v6 mapgen support!") - end - biomes = biomeinfo.get_active_v6_biomes() - b = #biomes - else - biomes = {} - for k,v in pairs(minetest.registered_biomes) do - table.insert(biomes, k) - b = b + 1 - end - end - if b == 0 then - return true, S("No biomes.") - else - table.sort(biomes) - for b=1, #biomes do - minetest.chat_send_player(name, biomes[b]) - end - return true - end - end, - }) -end diff --git a/mods/MISC/findbiome/license.txt b/mods/MISC/findbiome/license.txt deleted file mode 100644 index a466aabdc3..0000000000 --- a/mods/MISC/findbiome/license.txt +++ /dev/null @@ -1,24 +0,0 @@ -License of source code ----------------------- - -The MIT License (MIT) -Copyright (C) 2018 paramat - -Permission is hereby granted, free of charge, to any person obtaining a copy of this -software and associated documentation files (the "Software"), to deal in the Software -without restriction, including without limitation the rights to use, copy, modify, merge, -publish, distribute, sublicense, and/or sell copies of the Software, and to permit -persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or -substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, -INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR -PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE -FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. - -For more details: -https://opensource.org/licenses/MIT diff --git a/mods/MISC/findbiome/locale/findbiome.de.tr b/mods/MISC/findbiome/locale/findbiome.de.tr deleted file mode 100644 index d62332eaf3..0000000000 --- a/mods/MISC/findbiome/locale/findbiome.de.tr +++ /dev/null @@ -1,10 +0,0 @@ -# textdomain: findbiome -Find and teleport to biome=Ein Biom finden und hinteleportieren -= -No player.=Kein Spieler -Biome does not exist!=Biom existiert nicht! -Biome found at @1.=Biom gefunden bei @1. -No biome found!=Kein Biom gefunden! -List all biomes=Alle Biome auflisten -No biomes.=Keine Biome. -Not supported. The “biomeinfo” mod is required for v6 mapgen support!=Nicht unterstützt. Die Mod „biomeinfo“ wird für Unterstützung des v6-Kartengenerators benötigt. diff --git a/mods/MISC/findbiome/locale/findbiome.fr.tr b/mods/MISC/findbiome/locale/findbiome.fr.tr deleted file mode 100644 index 0fc6aa5780..0000000000 --- a/mods/MISC/findbiome/locale/findbiome.fr.tr +++ /dev/null @@ -1,10 +0,0 @@ -# textdomain: findbiome -Find and teleport to biome=Rechercher et se téléporter sur le biome -= -No player.=Aucun joueur. -Biome does not exist!=Le biome n'existe pas! -Biome found at @1.=Biome trouvé à @1. -No biome found!=Aucun biome trouvé! -List all biomes=Lister tous les biomes -No biomes.=Aucun biomes. -Not supported. The “biomeinfo” mod is required for v6 mapgen support!=Non supporté. Le mod «biomeinfo» est requis pour le support de mapgen v6! diff --git a/mods/MISC/findbiome/locale/findbiome.pl.tr b/mods/MISC/findbiome/locale/findbiome.pl.tr deleted file mode 100644 index bc25b57584..0000000000 --- a/mods/MISC/findbiome/locale/findbiome.pl.tr +++ /dev/null @@ -1,10 +0,0 @@ -# textdomain: findbiome -Find and teleport to biome=Znajdź i teleportuj do biomu -= -No player.=Brak gracza. -Biome does not exist!=Biom nie istnieje! -Biome found at @1.=Nie znaleziono biomu w @1. -No biome found!=Nie znaleziono biomu! -List all biomes=Lista biomów. -No biomes.=Brak biomów. -Not supported. The “biomeinfo” mod is required for v6 mapgen support!=Nie wspierane. Aby wspierać generator map v6 wymagany jest mod "biomeinfo"! diff --git a/mods/MISC/findbiome/locale/findbiome.ru.tr b/mods/MISC/findbiome/locale/findbiome.ru.tr deleted file mode 100644 index c37371820f..0000000000 --- a/mods/MISC/findbiome/locale/findbiome.ru.tr +++ /dev/null @@ -1,10 +0,0 @@ -# textdomain: findbiome -Find and teleport to biome=Найти и телепортироваться к биому -=<биом> -No player.=Нет игрока. -Biome does not exist!=Биом не существует! -Biome found at @1.=Биом найден в @1. -No biome found!=Биом не найден! -List all biomes=Список всех биомов -No biomes.=Нет биомов. -Not supported. The “biomeinfo” mod is required for v6 mapgen support!=Не поддерживается. Для поддержки мэпгена v6 требуется мод “biomeinfo”! diff --git a/mods/MISC/findbiome/locale/findbiome.zh_TW.tr b/mods/MISC/findbiome/locale/findbiome.zh_TW.tr deleted file mode 100644 index d84abda867..0000000000 --- a/mods/MISC/findbiome/locale/findbiome.zh_TW.tr +++ /dev/null @@ -1,10 +0,0 @@ -# textdomain: findbiome -Find and teleport to biome=找尋和傳送至生態域 -=<生態域> -No player.=沒有玩家。 -Biome does not exist!=生態域不存在! -Biome found at @1.=生態域在 @1 找到。 -No biome found!=生態域找不到! -List all biomes=列出所有生態域 -No biomes.=沒有生態域。 -Not supported. The “biomeinfo” mod is required for v6 mapgen support!=不支援。「biomeinfo」MOD要求v6世界生成器! diff --git a/mods/MISC/findbiome/locale/template.txt b/mods/MISC/findbiome/locale/template.txt deleted file mode 100644 index f3dcc19583..0000000000 --- a/mods/MISC/findbiome/locale/template.txt +++ /dev/null @@ -1,10 +0,0 @@ -# textdomain: findbiome -Find and teleport to biome= -= -No player.= -Biome does not exist!= -Biome found at @1.= -No biome found!= -List all biomes= -No biomes.= -Not supported. The “biomeinfo” mod is required for v6 mapgen support!= diff --git a/mods/MISC/findbiome/mod.conf b/mods/MISC/findbiome/mod.conf deleted file mode 100644 index 918f18436b..0000000000 --- a/mods/MISC/findbiome/mod.conf +++ /dev/null @@ -1,4 +0,0 @@ -name = findbiome -author = paramat -description = Add commands to list and find biomes -optional_depends = biomeinfo diff --git a/mods/MISC/mcl_commands/LICENSE b/mods/MISC/mcl_commands/LICENSE deleted file mode 100644 index 2c4afabdb6..0000000000 --- a/mods/MISC/mcl_commands/LICENSE +++ /dev/null @@ -1,117 +0,0 @@ -CC0 1.0 Universal - -Statement of Purpose - -The laws of most jurisdictions throughout the world automatically confer -exclusive Copyright and Related Rights (defined below) upon the creator and -subsequent owner(s) (each and all, an "owner") of an original work of -authorship and/or a database (each, a "Work"). - -Certain owners wish to permanently relinquish those rights to a Work for the -purpose of contributing to a commons of creative, cultural and scientific -works ("Commons") that the public can reliably and without fear of later -claims of infringement build upon, modify, incorporate in other works, reuse -and redistribute as freely as possible in any form whatsoever and for any -purposes, including without limitation commercial purposes. These owners may -contribute to the Commons to promote the ideal of a free culture and the -further production of creative, cultural and scientific works, or to gain -reputation or greater distribution for their Work in part through the use and -efforts of others. - -For these and/or other purposes and motivations, and without any expectation -of additional consideration or compensation, the person associating CC0 with a -Work (the "Affirmer"), to the extent that he or she is an owner of Copyright -and Related Rights in the Work, voluntarily elects to apply CC0 to the Work -and publicly distribute the Work under its terms, with knowledge of his or her -Copyright and Related Rights in the Work and the meaning and intended legal -effect of CC0 on those rights. - -1. Copyright and Related Rights. A Work made available under CC0 may be -protected by copyright and related or neighboring rights ("Copyright and -Related Rights"). Copyright and Related Rights include, but are not limited -to, the following: - - i. the right to reproduce, adapt, distribute, perform, display, communicate, - and translate a Work; - - ii. moral rights retained by the original author(s) and/or performer(s); - - iii. publicity and privacy rights pertaining to a person's image or likeness - depicted in a Work; - - iv. rights protecting against unfair competition in regards to a Work, - subject to the limitations in paragraph 4(a), below; - - v. rights protecting the extraction, dissemination, use and reuse of data in - a Work; - - vi. database rights (such as those arising under Directive 96/9/EC of the - European Parliament and of the Council of 11 March 1996 on the legal - protection of databases, and under any national implementation thereof, - including any amended or successor version of such directive); and - - vii. other similar, equivalent or corresponding rights throughout the world - based on applicable law or treaty, and any national implementations thereof. - -2. Waiver. To the greatest extent permitted by, but not in contravention of, -applicable law, Affirmer hereby overtly, fully, permanently, irrevocably and -unconditionally waives, abandons, and surrenders all of Affirmer's Copyright -and Related Rights and associated claims and causes of action, whether now -known or unknown (including existing as well as future claims and causes of -action), in the Work (i) in all territories worldwide, (ii) for the maximum -duration provided by applicable law or treaty (including future time -extensions), (iii) in any current or future medium and for any number of -copies, and (iv) for any purpose whatsoever, including without limitation -commercial, advertising or promotional purposes (the "Waiver"). Affirmer makes -the Waiver for the benefit of each member of the public at large and to the -detriment of Affirmer's heirs and successors, fully intending that such Waiver -shall not be subject to revocation, rescission, cancellation, termination, or -any other legal or equitable action to disrupt the quiet enjoyment of the Work -by the public as contemplated by Affirmer's express Statement of Purpose. - -3. Public License Fallback. Should any part of the Waiver for any reason be -judged legally invalid or ineffective under applicable law, then the Waiver -shall be preserved to the maximum extent permitted taking into account -Affirmer's express Statement of Purpose. In addition, to the extent the Waiver -is so judged Affirmer hereby grants to each affected person a royalty-free, -non transferable, non sublicensable, non exclusive, irrevocable and -unconditional license to exercise Affirmer's Copyright and Related Rights in -the Work (i) in all territories worldwide, (ii) for the maximum duration -provided by applicable law or treaty (including future time extensions), (iii) -in any current or future medium and for any number of copies, and (iv) for any -purpose whatsoever, including without limitation commercial, advertising or -promotional purposes (the "License"). The License shall be deemed effective as -of the date CC0 was applied by Affirmer to the Work. Should any part of the -License for any reason be judged legally invalid or ineffective under -applicable law, such partial invalidity or ineffectiveness shall not -invalidate the remainder of the License, and in such case Affirmer hereby -affirms that he or she will not (i) exercise any of his or her remaining -Copyright and Related Rights in the Work or (ii) assert any associated claims -and causes of action with respect to the Work, in either case contrary to -Affirmer's express Statement of Purpose. - -4. Limitations and Disclaimers. - - a. No trademark or patent rights held by Affirmer are waived, abandoned, - surrendered, licensed or otherwise affected by this document. - - b. Affirmer offers the Work as-is and makes no representations or warranties - of any kind concerning the Work, express, implied, statutory or otherwise, - including without limitation warranties of title, merchantability, fitness - for a particular purpose, non infringement, or the absence of latent or - other defects, accuracy, or the present or absence of errors, whether or not - discoverable, all to the greatest extent permissible under applicable law. - - c. Affirmer disclaims responsibility for clearing rights of other persons - that may apply to the Work or any use thereof, including without limitation - any person's Copyright and Related Rights in the Work. Further, Affirmer - disclaims responsibility for obtaining any necessary consents, permissions - or other rights required for any use of the Work. - - d. Affirmer understands and acknowledges that Creative Commons is not a - party to this document and has no duty or obligation with respect to this - CC0 or use of the Work. - -For more information, please see - - diff --git a/mods/MISC/mcl_commands/alias.lua b/mods/MISC/mcl_commands/alias.lua deleted file mode 100644 index 5c9ee9f3ce..0000000000 --- a/mods/MISC/mcl_commands/alias.lua +++ /dev/null @@ -1,30 +0,0 @@ -local S = minetest.get_translator(minetest.get_current_modname()) - -local function register_chatcommand_alias(alias, cmd) - local def = minetest.chatcommands[cmd] - minetest.register_chatcommand(alias, def) -end - -local function rename_chatcommand(newname, cmd) - local def = minetest.chatcommands[cmd] - minetest.register_chatcommand(newname, def) - minetest.unregister_chatcommand(cmd) -end - -if minetest.settings:get_bool("mcl_builtin_commands_overide", true) then - register_chatcommand_alias("?", "help") - register_chatcommand_alias("pardon", "unban") - rename_chatcommand("stop", "shutdown") - register_chatcommand_alias("tell", "msg") - register_chatcommand_alias("w", "msg") - register_chatcommand_alias("tp", "teleport") - rename_chatcommand("clear", "clearinv") - - minetest.register_chatcommand("banlist", { - description = S("List bans"), - privs = minetest.chatcommands["ban"].privs, - func = function(name) - return true, S("Ban list: @1", minetest.get_ban_list()) - end, - }) -end \ No newline at end of file diff --git a/mods/MISC/mcl_commands/init.lua b/mods/MISC/mcl_commands/init.lua deleted file mode 100644 index a287c29269..0000000000 --- a/mods/MISC/mcl_commands/init.lua +++ /dev/null @@ -1,11 +0,0 @@ -local modpath = minetest.get_modpath(minetest.get_current_modname()) - -dofile(modpath.."/kill.lua") -dofile(modpath.."/setblock.lua") -dofile(modpath.."/seed.lua") -dofile(modpath.."/summon.lua") -dofile(modpath.."/say.lua") -dofile(modpath.."/list.lua") -dofile(modpath.."/sound.lua") - -dofile(modpath.."/alias.lua") \ No newline at end of file diff --git a/mods/MISC/mcl_commands/kill.lua b/mods/MISC/mcl_commands/kill.lua deleted file mode 100644 index 5478e6bf69..0000000000 --- a/mods/MISC/mcl_commands/kill.lua +++ /dev/null @@ -1,43 +0,0 @@ -local S = minetest.get_translator(minetest.get_current_modname()) - -local function handle_kill_command(suspect, victim) - if minetest.settings:get_bool("enable_damage") == false then - return false, S("Players can't be killed right now, damage has been disabled.") - end - local victimref = minetest.get_player_by_name(victim) - if victimref == nil then - return false, S("Player @1 does not exist.", victim) - elseif victimref:get_hp() <= 0 then - if suspect == victim then - return false, S("You are already dead") - else - return false, S("@1 is already dead", victim) - end - end - -- DIE! - victimref:set_hp(0, {_mcl_type = "out_of_world"}) - -- Log - if not suspect == victim then - minetest.log("action", string.format("%s killed %s using /kill", suspect, victim)) - else - minetest.log("action", string.format("%s committed suicide using /kill", victim)) - end - return true -end - -if minetest.registered_chatcommands["kill"] then - minetest.unregister_chatcommand("kill") -end -minetest.register_chatcommand("kill", { - params = S("[]"), - description = S("Kill player or yourself"), - privs = {server=true}, - func = function(name, param) - if(param == "") then - -- Selfkill - return handle_kill_command(name, name) - else - return handle_kill_command(name, param) - end - end, -}) diff --git a/mods/MISC/mcl_commands/list.lua b/mods/MISC/mcl_commands/list.lua deleted file mode 100644 index 5661454b4c..0000000000 --- a/mods/MISC/mcl_commands/list.lua +++ /dev/null @@ -1,14 +0,0 @@ -local S = minetest.get_translator(minetest.get_current_modname()) - -minetest.register_chatcommand("list", { - description = S("Show who is logged on"), - params = "", - privs = {}, - func = function(name) - local players = "" - for _, player in ipairs(minetest.get_connected_players()) do - players = players..player:get_player_name().."\n" - end - minetest.chat_send_player(name, players) - end -}) \ No newline at end of file diff --git a/mods/MISC/mcl_commands/locale/mcl_commands.de.tr b/mods/MISC/mcl_commands/locale/mcl_commands.de.tr deleted file mode 100644 index 68d2675179..0000000000 --- a/mods/MISC/mcl_commands/locale/mcl_commands.de.tr +++ /dev/null @@ -1,23 +0,0 @@ -# textdomain: mcl_commands -Players can't be killed right now, damage has been disabled.=Spieler können jetzt nicht getötet werden, der Schaden wurde deaktiviert. -Player @1 does not exist.=Spieler @1 existiert nicht. -You are already dead=Sie sind schon tot -@1 is already dead=@1 ist schon tot -@1 committed suicide.=@1 beging Selbstmord. -@1 was killed by @2.=@1 wurde von @2 getötet. -[]=[] -Kill player or yourself=Spieler oder sich selbst töten -Can use /say=Kann „/say“ benutzen -= -Send a message to every player=Nachricht an alle Spieler senden -Invalid usage, see /help say.=Falsche Benutzung, siehe „/help say“. -,, =,, -Set node at given position=Node (Block) an der gegebenen Position platzieren -Invalid node=Unültiger Node -@1 spawned.=@1 gespawnt. -Invalid parameters (see /help setblock)=Ungültige Parameter (siehe „/help setblock”) -List bans=Bannliste anzeigen -Ban list: @1=Bannliste: @1 -Show who is logged on=Anzeigen, wer eingeloggt ist -Displays the world seed=Den Seed der Welt anzeigen -Only peaceful mobs allowed!=Nur friedliche Mobs erlaubt! diff --git a/mods/MISC/mcl_commands/locale/mcl_commands.es.tr b/mods/MISC/mcl_commands/locale/mcl_commands.es.tr deleted file mode 100644 index 91b21eb91c..0000000000 --- a/mods/MISC/mcl_commands/locale/mcl_commands.es.tr +++ /dev/null @@ -1,23 +0,0 @@ -# textdomain: mcl_commands -Players can't be killed right now, damage has been disabled.=Los jugadores no pueden ser asesinados en este momento, el daño ha sido desactivado. -Player @1 does not exist.=El jugador @1 no existe. -You are already dead=Ya estas muerto -@1 is already dead=@1 ya esta muerto -@1 committed suicide.=@1 se suicidó. -@1 was killed by @2.=@1 fue asesinado por @2. -[]=[] -Kill player or yourself=Mata al jugador o a ti mismo -Can use /say=Puedes usar /say -= -Send a message to every player=Envía un mensaje a todos los jugadores -Invalid usage, see /help=Uso no válido, (Revisa el comando "/help say") -,, =,, -Set node at given position=Establecer nodo en la posición dada -Invalid node=Nodo no válido -@1 spawned.=@1 generado. -Invalid parameters (see /help setblock)=Parámetros no válidos (Revisa el comando "/help setblock") -List bans=Lista de prohibiciones -Ban list: @1=Lista de baneados: @1 -Show who is logged on=Mostrar quién ha iniciado sesión -Displays the world seed=Muestra la semilla del mundo -Only peaceful mobs allowed!=¡Solo se permiten animales pacíficos! diff --git a/mods/MISC/mcl_commands/locale/mcl_commands.fr.tr b/mods/MISC/mcl_commands/locale/mcl_commands.fr.tr deleted file mode 100644 index a655368bf4..0000000000 --- a/mods/MISC/mcl_commands/locale/mcl_commands.fr.tr +++ /dev/null @@ -1,23 +0,0 @@ -# textdomain: mcl_commands -Players can't be killed right now, damage has been disabled.=Les joueurs ne peuvent pas être tués pour le moment, les dégâts ont été désactivés. -Player @1 does not exist.=Le joueur @1 n'existe pas. -You are already dead=Tu es déjà mort -@1 is already dead=@1 est déjà mort -@1 committed suicide.=@1 s'est suicidé. -@1 was killed by @2.=@1 a été tué par @2. -[]=[] -Kill player or yourself=Tuez un joueur ou vous-même -Can use /say=Peut utiliser /say -= -Send a message to every player=Envoyez un message à chaque joueur -Invalid usage, see /help say.=Utilisation non valide, voir /help say. -,, =,, -Set node at given position=Placer le noeud à une position donnée -Invalid node=Noeud non valide -@1 spawned.=@1 est apparu. -Invalid parameters (see /help setblock)=Paramètres invalides (voir /help setblock) -List bans=Liste des interdictions -Ban list: @1=Liste d'interdiction: @1 -Show who is logged on=Afficher qui est connecté -Displays the world seed=Affiche la graine du monde -Only peaceful mobs allowed!=Seuls les mobs pacifiques sont autorisées! diff --git a/mods/MISC/mcl_commands/locale/mcl_commands.pl.tr b/mods/MISC/mcl_commands/locale/mcl_commands.pl.tr deleted file mode 100644 index 4a3ad181cf..0000000000 --- a/mods/MISC/mcl_commands/locale/mcl_commands.pl.tr +++ /dev/null @@ -1,23 +0,0 @@ -# textdomain: mcl_commands -Players can't be killed right now, damage has been disabled.=Gracze nie mogą się zabić, obrażenia zostały wyłączone. -Player @1 does not exist.=Gracz @1 nie istnieje. -You are already dead=Już nie żyjesz -@1 is already dead=@1 już nie żyje -@1 committed suicide.=@1 popełniła samobójstwo. -@1 was killed by @2.=@1 została zabita przez @2. -[]=[] -Kill player or yourself=Zabij gracza lub siebie -Can use /say=Może używać /say -= -Send a message to every player=Wyślij wiadomość do każdego gracza -Invalid usage, see /help say.=Niepoprawne użyciu, zobacz /help say. -,, =,, -Set node at given position=Ustaw node w danej pozycji -Invalid node=Niepoprawny node -@1 spawned.=@1 przywołany. -Invalid parameters (see /help setblock)=Niepoprawne parametry (zobacz /help setblock) -List bans=Pokaż zbanowanych -Ban list: @1=Lista zbanowanych: @1 -Show who is logged on=Pokaż zalogowanych -Displays the world seed=Wyświetl ziarno świata -Only peaceful mobs allowed!=Tylko pokojowe moby dozwolone! diff --git a/mods/MISC/mcl_commands/locale/mcl_commands.ru.tr b/mods/MISC/mcl_commands/locale/mcl_commands.ru.tr deleted file mode 100644 index fb700cfab8..0000000000 --- a/mods/MISC/mcl_commands/locale/mcl_commands.ru.tr +++ /dev/null @@ -1,23 +0,0 @@ -# textdomain: mcl_commands -Players can't be killed right now, damage has been disabled.=Игроки не могут быть убиты прямо сейчас, урон отключён. -Player @1 does not exist.=Игрок @1 не существует. -You are already dead=Вы уже мертвы -@1 is already dead=@1 уже мертв(а) -@1 committed suicide.=@1 совершил(а) роскомнадзор. -@1 was killed by @2.=@1 был(а) убит(а) @2. -[]=[<имя>] -Kill player or yourself=Убить игрока или себя -Can use /say=Можно использовать /say -=<сообщение> -Send a message to every player=Отправляет сообщение всем игрокам -Invalid usage, see /help say.=Недопустимое использование, см. /help say. -,, =,, <ИмяБлока> -Set node at given position=Устанавливает блок в заданной позиции -Invalid node=Неправильный блок -@1 spawned.=@1 возродился(ась). -Invalid parameters (see /help setblock)=Недопустимые параметры (см. /help setblock) -List bans=Список банов -Ban list: @1=Бан-лист: @1 -Show who is logged on=Показывает, кто подключён -Displays the world seed=Показывает значение зерна мира (seed) -Only peaceful mobs allowed!=Включены только мирные мобы! diff --git a/mods/MISC/mcl_commands/locale/mcl_commands.zh_TW.tr b/mods/MISC/mcl_commands/locale/mcl_commands.zh_TW.tr deleted file mode 100644 index 0f3885cfe7..0000000000 --- a/mods/MISC/mcl_commands/locale/mcl_commands.zh_TW.tr +++ /dev/null @@ -1,23 +0,0 @@ -# textdomain: mcl_commands -Players can't be killed right now, damage has been disabled.=玩家現在不能被殺死,傷害已被禁用。 -Player @1 does not exist.=玩家 @1 不存在。 -You are already dead=你已經死了 -@1 is already dead=@1 已經死了。 -@1 committed suicide.=@1 自殺了。 -@1 was killed by @2.=@1 被 @2 殺死了。 -[]=[<名字>] -Kill player or yourself=殺死玩家或自己 -Can use /say=可以使用 /say -=<信息> -Send a message to every player=廣播信息給每個玩家 -Invalid usage, see /help say.=無效用法,見 /help say -,, =,, <方塊名稱> -Set node at given position=在指定位置放置指定方塊 -Invalid node=無效方塊 -@1 spawned.=@1 已生成。 -Invalid parameters (see /help setblock)=無效參數(見 /help setblock) -List bans=查看封鎖列表 -Ban list: @1=封鎖列表:@1 -Show who is logged on=列出在線玩家 -Displays the world seed=顯示種子碼 -Only peaceful mobs allowed!=只允許和平生物! diff --git a/mods/MISC/mcl_commands/locale/template.txt b/mods/MISC/mcl_commands/locale/template.txt deleted file mode 100644 index 5b4370b8fb..0000000000 --- a/mods/MISC/mcl_commands/locale/template.txt +++ /dev/null @@ -1,23 +0,0 @@ -# textdomain: mcl_commands -Players can't be killed right now, damage has been disabled.= -Player @1 does not exist.= -You are already dead= -@1 is already dead= -@1 committed suicide.= -@1 was killed by @2.= -[]= -Kill player or yourself= -Can use /say= -= -Send a message to every player= -Invalid usage, see /help say.= -,, = -Set node at given position= -Invalid node= -@1 spawned.= -Invalid parameters (see /help setblock)= -List bans= -Ban list: @1= -Show who is logged on= -Displays the world seed= -Only peaceful mobs allowed!= diff --git a/mods/MISC/mcl_commands/mod.conf b/mods/MISC/mcl_commands/mod.conf deleted file mode 100644 index dba1305646..0000000000 --- a/mods/MISC/mcl_commands/mod.conf +++ /dev/null @@ -1,4 +0,0 @@ -name = mcl_commands -author = Wuzzy -description = MCL2 commands -depends = mcl_colors diff --git a/mods/MISC/mcl_commands/say.lua b/mods/MISC/mcl_commands/say.lua deleted file mode 100644 index 9fd53c174e..0000000000 --- a/mods/MISC/mcl_commands/say.lua +++ /dev/null @@ -1,18 +0,0 @@ -local S = minetest.get_translator(minetest.get_current_modname()) - -minetest.register_privilege("announce", { - description = S("Can use /say"), - give_to_singleplayer = false, -}) -minetest.register_chatcommand("say", { - params = S(""), - description = S("Send a message to every player"), - privs = {announce=true}, - func = function(name, param) - if not param then - return false, S("Invalid usage, see /help say.") - end - minetest.chat_send_all(("["..name.."] "..param)) - return true - end, -}) \ No newline at end of file diff --git a/mods/MISC/mcl_commands/seed.lua b/mods/MISC/mcl_commands/seed.lua deleted file mode 100644 index 2ebb044748..0000000000 --- a/mods/MISC/mcl_commands/seed.lua +++ /dev/null @@ -1,10 +0,0 @@ -local S = minetest.get_translator(minetest.get_current_modname()) - -minetest.register_chatcommand("seed", { - description = S("Displays the world seed"), - params = "", - privs = {}, - func = function(name) - minetest.chat_send_player(name, "Seed: ["..minetest.colorize(mcl_colors.GREEN, ""..minetest.get_mapgen_setting("seed")).."]") - end -}) \ No newline at end of file diff --git a/mods/MISC/mcl_commands/setblock.lua b/mods/MISC/mcl_commands/setblock.lua deleted file mode 100644 index 95acdd35dd..0000000000 --- a/mods/MISC/mcl_commands/setblock.lua +++ /dev/null @@ -1,22 +0,0 @@ -local S = minetest.get_translator(minetest.get_current_modname()) - -minetest.register_chatcommand("setblock", { - params = S(",, "), - description = S("Set node at given position"), - privs = {give=true, interact=true}, - func = function(name, param) - local p = {} - local nodestring - p.x, p.y, p.z, nodestring = param:match("^([%d.-]+)[, ] *([%d.-]+)[, ] *([%d.-]+) +(.+)$") - p.x, p.y, p.z = tonumber(p.x), tonumber(p.y), tonumber(p.z) - if p.x and p.y and p.z and nodestring then - local itemstack = ItemStack(nodestring) - if itemstack:is_empty() or not minetest.registered_nodes[itemstack:get_name()] then - return false, S("Invalid node") - end - minetest.set_node(p, {name=nodestring}) - return true, S("@1 spawned.", nodestring) - end - return false, S("Invalid parameters (see /help setblock)") - end, -}) \ No newline at end of file diff --git a/mods/MISC/mcl_commands/sound.lua b/mods/MISC/mcl_commands/sound.lua deleted file mode 100644 index 5833676f3b..0000000000 --- a/mods/MISC/mcl_commands/sound.lua +++ /dev/null @@ -1,43 +0,0 @@ -local S = minetest.get_translator(minetest.get_current_modname()) - -minetest.register_chatcommand("playsound",{ - params = S(" "), --TODO:add source - description = S("Play a sound. Arguments: : name of the sound. : Target."), - privs = {server = true}, - func = function(name, rawparams) - local P = {} - local i = 0 - for str in string.gmatch(rawparams, "([^ ]+)") do - i = i + 1 - P[i] = str - end - local params = {} - if P[1] == tostring(P[1]) then - params.name = P[1] - else - return false, S("Sound name is invalid!") --TODO: add mc chat message - end - if P[2] == tostring(P[2]) and minetest.player_exists(P[2]) then - params.target = P[2] - else - return false, S("Target is invalid!!") - end - -- if P[3] then - -- params.pos = nil --TODO:position - -- else - -- params.pos = nil - -- end - -- if P[4] == tonumber(P[4]) then - -- params.gain = P[4] - -- else - -- params.gain = 1.0 - -- end - -- if P[5] == tonumber(P[5]) then - -- params.pitch = P[5] - -- else - -- params.pitch = 1.0 - -- end - minetest.sound_play({name = params.name}, {to_player = params.target}, true) --TODO: /stopsound - return true - end, -}) \ No newline at end of file diff --git a/mods/MISC/mcl_commands/summon.lua b/mods/MISC/mcl_commands/summon.lua deleted file mode 100644 index 118d3e23b9..0000000000 --- a/mods/MISC/mcl_commands/summon.lua +++ /dev/null @@ -1,15 +0,0 @@ -local S = minetest.get_translator(minetest.get_current_modname()) - -local orig_func = minetest.registered_chatcommands["spawnentity"].func -local cmd = table.copy(minetest.registered_chatcommands["spawnentity"]) -cmd.func = function(name, param) - local ent = minetest.registered_entities[param] - if minetest.settings:get_bool("only_peaceful_mobs", false) and ent and ent.is_mob and ent.type == "monster" then - return false, S("Only peaceful mobs allowed!") - else - local bool, msg = orig_func(name, param) - return bool, msg - end -end -minetest.unregister_chatcommand("spawnentity") -minetest.register_chatcommand("summon", cmd) \ No newline at end of file diff --git a/mods/MISC/mcl_privs/init.lua b/mods/MISC/mcl_privs/init.lua index ddca9f9460..de08183747 100644 --- a/mods/MISC/mcl_privs/init.lua +++ b/mods/MISC/mcl_privs/init.lua @@ -9,12 +9,8 @@ minetest.register_on_joinplayer(function(player) local meta = player:get_meta() if meta:get_int("mcl_privs:fly_changed") == 1 then return end - local fly = nil - if minetest.is_creative_enabled(name) then - fly = true - end local player_privs = minetest.get_player_privs(name) - player_privs.fly = fly + player_privs.fly = nil minetest.set_player_privs(name, player_privs) end) @@ -43,4 +39,4 @@ for _, action in pairs({"grant", "revoke"}) do end end end) -end \ No newline at end of file +end diff --git a/mods/PLAYER/mcl_criticals/init.lua b/mods/PLAYER/mcl_criticals/init.lua deleted file mode 100644 index 27d09abb20..0000000000 --- a/mods/PLAYER/mcl_criticals/init.lua +++ /dev/null @@ -1,30 +0,0 @@ -mcl_damage.register_modifier(function(obj, damage, reason) - if reason.type == "player" then - local hitter = reason.direct - if mcl_sprint.is_sprinting(hitter) then - obj:add_velocity(hitter:get_velocity()) - elseif (hitter:get_velocity() or hitter:get_player_velocity()).y < 0 then - local pos = mcl_util.get_object_center(obj) - minetest.add_particlespawner({ - amount = 15, - time = 0.1, - minpos = {x=pos.x-0.5, y=pos.y-0.5, z=pos.z-0.5}, - maxpos = {x=pos.x+0.5, y=pos.y+0.5, z=pos.z+0.5}, - minvel = {x=-0.1, y=-0.1, z=-0.1}, - maxvel = {x=0.1, y=0.1, z=0.1}, - minacc = {x=0, y=0, z=0}, - maxacc = {x=0, y=0, z=0}, - minexptime = 1, - maxexptime = 2, - minsize = 1.5, - maxsize = 1.5, - collisiondetection = false, - vertical = false, - texture = "mcl_particles_crit.png^[colorize:#bc7a57:127", - }) - minetest.sound_play("mcl_criticals_hit", {object = obj}) - -- the minecraft wiki is actually wrong about a crit dealing 150% damage, see minecraft source code - return damage + math.random(0, math.floor(damage * 1.5 + 2)) - end - end -end, -100) diff --git a/mods/PLAYER/mcl_criticals/mod.conf b/mods/PLAYER/mcl_criticals/mod.conf deleted file mode 100644 index 5b0b91330f..0000000000 --- a/mods/PLAYER/mcl_criticals/mod.conf +++ /dev/null @@ -1,2 +0,0 @@ -name = mcl_criticals -depends = mcl_damage diff --git a/mods/PLAYER/mcl_criticals/sounds/mcl_criticals_hit.0.ogg b/mods/PLAYER/mcl_criticals/sounds/mcl_criticals_hit.0.ogg deleted file mode 100644 index 8184d10768..0000000000 Binary files a/mods/PLAYER/mcl_criticals/sounds/mcl_criticals_hit.0.ogg and /dev/null differ diff --git a/mods/PLAYER/mcl_criticals/sounds/mcl_criticals_hit.1.ogg b/mods/PLAYER/mcl_criticals/sounds/mcl_criticals_hit.1.ogg deleted file mode 100644 index aed9981623..0000000000 Binary files a/mods/PLAYER/mcl_criticals/sounds/mcl_criticals_hit.1.ogg and /dev/null differ diff --git a/mods/PLAYER/mcl_criticals/sounds/mcl_criticals_hit.2.ogg b/mods/PLAYER/mcl_criticals/sounds/mcl_criticals_hit.2.ogg deleted file mode 100644 index 6d573b9f28..0000000000 Binary files a/mods/PLAYER/mcl_criticals/sounds/mcl_criticals_hit.2.ogg and /dev/null differ diff --git a/mods/PLAYER/mcl_player_init/init.lua b/mods/PLAYER/mcl_player_init/init.lua deleted file mode 100644 index 52967a4412..0000000000 --- a/mods/PLAYER/mcl_player_init/init.lua +++ /dev/null @@ -1,4 +0,0 @@ -minetest.register_on_joinplayer(function(player) - -- Settable hand - player:get_inventory():set_size("hand", 1) -end) diff --git a/mods/PLAYER/mcl_player_init/mod.conf b/mods/PLAYER/mcl_player_init/mod.conf deleted file mode 100644 index d7a86c4384..0000000000 --- a/mods/PLAYER/mcl_player_init/mod.conf +++ /dev/null @@ -1,3 +0,0 @@ -name = mcl_player_init -author = Wuzzy -description = Initialize player gameplay stuff that are neither model nor HUD-related