From f9ab8cd01838931a3f87898e6ad09c640556a1c4 Mon Sep 17 00:00:00 2001 From: Perttu Ahola Date: Mon, 26 Mar 2012 22:50:35 +0300 Subject: [PATCH] Add initial content --- mods/bucket/depends.txt | 2 + mods/bucket/init.lua | 95 ++ mods/bucket/textures/bucket.png | Bin 0 -> 329 bytes mods/bucket/textures/bucket_lava.png | Bin 0 -> 363 bytes mods/bucket/textures/bucket_water.png | Bin 0 -> 369 bytes mods/default/init.lua | 1510 +++++++++++++++++ mods/default/textures/crack.png | Bin 0 -> 1076 bytes mods/default/textures/default_apple.png | Bin 0 -> 203 bytes mods/default/textures/default_book.png | Bin 0 -> 292 bytes mods/default/textures/default_bookshelf.png | Bin 0 -> 597 bytes mods/default/textures/default_brick.png | Bin 0 -> 604 bytes mods/default/textures/default_cactus_side.png | Bin 0 -> 279 bytes mods/default/textures/default_cactus_top.png | Bin 0 -> 236 bytes mods/default/textures/default_chest_front.png | Bin 0 -> 167 bytes mods/default/textures/default_chest_lock.png | Bin 0 -> 224 bytes mods/default/textures/default_chest_side.png | Bin 0 -> 151 bytes mods/default/textures/default_chest_top.png | Bin 0 -> 142 bytes mods/default/textures/default_clay.png | Bin 0 -> 613 bytes mods/default/textures/default_clay_brick.png | Bin 0 -> 249 bytes mods/default/textures/default_clay_lump.png | Bin 0 -> 210 bytes mods/default/textures/default_cloud.png | Bin 0 -> 118 bytes mods/default/textures/default_coal_lump.png | Bin 0 -> 933 bytes mods/default/textures/default_cobble.png | Bin 0 -> 830 bytes mods/default/textures/default_dirt.png | Bin 0 -> 1586 bytes mods/default/textures/default_fence.png | Bin 0 -> 539 bytes .../textures/default_furnace_front.png | Bin 0 -> 246 bytes .../default/textures/default_furnace_side.png | Bin 0 -> 236 bytes mods/default/textures/default_glass.png | Bin 0 -> 978 bytes mods/default/textures/default_grass.png | Bin 0 -> 874 bytes .../textures/default_grass_footsteps.png | Bin 0 -> 856 bytes mods/default/textures/default_grass_side.png | Bin 0 -> 878 bytes mods/default/textures/default_gravel.png | Bin 0 -> 591 bytes mods/default/textures/default_iron_lump.png | Bin 0 -> 936 bytes mods/default/textures/default_junglegrass.png | Bin 0 -> 672 bytes mods/default/textures/default_jungletree.png | Bin 0 -> 502 bytes .../textures/default_jungletree_top.png | Bin 0 -> 507 bytes mods/default/textures/default_ladder.png | Bin 0 -> 395 bytes mods/default/textures/default_lava.png | Bin 0 -> 357 bytes mods/default/textures/default_leaves.png | Bin 0 -> 1689 bytes mods/default/textures/default_mese.png | Bin 0 -> 203 bytes .../default/textures/default_mineral_coal.png | Bin 0 -> 952 bytes .../default/textures/default_mineral_iron.png | Bin 0 -> 1614 bytes mods/default/textures/default_mossycobble.png | Bin 0 -> 965 bytes mods/default/textures/default_nc_back.png | Bin 0 -> 303 bytes mods/default/textures/default_nc_front.png | Bin 0 -> 410 bytes mods/default/textures/default_nc_rb.png | Bin 0 -> 203 bytes mods/default/textures/default_nc_side.png | Bin 0 -> 260 bytes mods/default/textures/default_paper.png | Bin 0 -> 242 bytes mods/default/textures/default_papyrus.png | Bin 0 -> 366 bytes mods/default/textures/default_rail.png | Bin 0 -> 507 bytes .../textures/default_rail_crossing.png | Bin 0 -> 555 bytes mods/default/textures/default_rail_curved.png | Bin 0 -> 545 bytes .../textures/default_rail_t_junction.png | Bin 0 -> 542 bytes mods/default/textures/default_sand.png | Bin 0 -> 1381 bytes mods/default/textures/default_sandstone.png | Bin 0 -> 772 bytes mods/default/textures/default_sapling.png | Bin 0 -> 502 bytes .../textures/default_scorched_stuff.png | Bin 0 -> 233 bytes mods/default/textures/default_sign_wall.png | Bin 0 -> 489 bytes mods/default/textures/default_steel_block.png | Bin 0 -> 219 bytes mods/default/textures/default_steel_ingot.png | Bin 0 -> 207 bytes mods/default/textures/default_stick.png | Bin 0 -> 182 bytes mods/default/textures/default_stone.png | Bin 0 -> 806 bytes mods/default/textures/default_tnt_bottom.png | Bin 0 -> 161 bytes mods/default/textures/default_tnt_side.png | Bin 0 -> 186 bytes mods/default/textures/default_tnt_top.png | Bin 0 -> 264 bytes .../textures/default_tool_mesepick.png | Bin 0 -> 252 bytes .../textures/default_tool_steelaxe.png | Bin 0 -> 927 bytes .../textures/default_tool_steelpick.png | Bin 0 -> 271 bytes .../textures/default_tool_steelshovel.png | Bin 0 -> 216 bytes .../textures/default_tool_steelsword.png | Bin 0 -> 291 bytes .../textures/default_tool_stoneaxe.png | Bin 0 -> 931 bytes .../textures/default_tool_stonepick.png | Bin 0 -> 262 bytes .../textures/default_tool_stoneshovel.png | Bin 0 -> 203 bytes .../textures/default_tool_stonesword.png | Bin 0 -> 301 bytes .../default/textures/default_tool_woodaxe.png | Bin 0 -> 927 bytes .../textures/default_tool_woodpick.png | Bin 0 -> 245 bytes .../textures/default_tool_woodshovel.png | Bin 0 -> 203 bytes .../textures/default_tool_woodsword.png | Bin 0 -> 255 bytes mods/default/textures/default_torch.png | Bin 0 -> 925 bytes .../textures/default_torch_on_ceiling.png | Bin 0 -> 913 bytes .../textures/default_torch_on_floor.png | Bin 0 -> 917 bytes mods/default/textures/default_tree.png | Bin 0 -> 1445 bytes mods/default/textures/default_tree_top.png | Bin 0 -> 1024 bytes mods/default/textures/default_water.png | Bin 0 -> 518 bytes mods/default/textures/default_wood.png | Bin 0 -> 1400 bytes mods/default/textures/heart.png | Bin 0 -> 308 bytes mods/default/textures/player.png | Bin 0 -> 212 bytes mods/default/textures/player_back.png | Bin 0 -> 201 bytes mods/default/textures/treeprop.png | Bin 0 -> 1055 bytes mods/default/textures/wieldhand.png | Bin 0 -> 384 bytes mods/experimental/depends.txt | 2 + mods/experimental/init.lua | 652 +++++++ .../textures/experimental_dummyball.png | Bin 0 -> 838 bytes mods/give_initial_stuff/depends.txt | 2 + mods/give_initial_stuff/init.lua | 12 + mods/legacy/depends.txt | 2 + mods/legacy/init.lua | 132 ++ mods/legacy/textures/apple_iron.png | Bin 0 -> 207 bytes mods/legacy/textures/cooked_rat.png | Bin 0 -> 239 bytes mods/legacy/textures/dungeon_master.png | Bin 0 -> 6636 bytes mods/legacy/textures/fireball.png | Bin 0 -> 603 bytes mods/legacy/textures/firefly.png | Bin 0 -> 116 bytes mods/legacy/textures/oerkki1.png | Bin 0 -> 250 bytes mods/legacy/textures/oerkki1_damaged.png | Bin 0 -> 341 bytes mods/legacy/textures/rat.png | Bin 0 -> 920 bytes 105 files changed, 2409 insertions(+) create mode 100644 mods/bucket/depends.txt create mode 100644 mods/bucket/init.lua create mode 100644 mods/bucket/textures/bucket.png create mode 100644 mods/bucket/textures/bucket_lava.png create mode 100644 mods/bucket/textures/bucket_water.png create mode 100644 mods/default/init.lua create mode 100644 mods/default/textures/crack.png create mode 100644 mods/default/textures/default_apple.png create mode 100644 mods/default/textures/default_book.png create mode 100644 mods/default/textures/default_bookshelf.png create mode 100644 mods/default/textures/default_brick.png create mode 100644 mods/default/textures/default_cactus_side.png create mode 100644 mods/default/textures/default_cactus_top.png create mode 100644 mods/default/textures/default_chest_front.png create mode 100644 mods/default/textures/default_chest_lock.png create mode 100644 mods/default/textures/default_chest_side.png create mode 100644 mods/default/textures/default_chest_top.png create mode 100644 mods/default/textures/default_clay.png create mode 100644 mods/default/textures/default_clay_brick.png create mode 100644 mods/default/textures/default_clay_lump.png create mode 100644 mods/default/textures/default_cloud.png create mode 100644 mods/default/textures/default_coal_lump.png create mode 100644 mods/default/textures/default_cobble.png create mode 100644 mods/default/textures/default_dirt.png create mode 100644 mods/default/textures/default_fence.png create mode 100644 mods/default/textures/default_furnace_front.png create mode 100644 mods/default/textures/default_furnace_side.png create mode 100644 mods/default/textures/default_glass.png create mode 100644 mods/default/textures/default_grass.png create mode 100644 mods/default/textures/default_grass_footsteps.png create mode 100644 mods/default/textures/default_grass_side.png create mode 100644 mods/default/textures/default_gravel.png create mode 100644 mods/default/textures/default_iron_lump.png create mode 100644 mods/default/textures/default_junglegrass.png create mode 100644 mods/default/textures/default_jungletree.png create mode 100644 mods/default/textures/default_jungletree_top.png create mode 100644 mods/default/textures/default_ladder.png create mode 100644 mods/default/textures/default_lava.png create mode 100644 mods/default/textures/default_leaves.png create mode 100644 mods/default/textures/default_mese.png create mode 100644 mods/default/textures/default_mineral_coal.png create mode 100644 mods/default/textures/default_mineral_iron.png create mode 100644 mods/default/textures/default_mossycobble.png create mode 100644 mods/default/textures/default_nc_back.png create mode 100644 mods/default/textures/default_nc_front.png create mode 100644 mods/default/textures/default_nc_rb.png create mode 100644 mods/default/textures/default_nc_side.png create mode 100644 mods/default/textures/default_paper.png create mode 100644 mods/default/textures/default_papyrus.png create mode 100644 mods/default/textures/default_rail.png create mode 100644 mods/default/textures/default_rail_crossing.png create mode 100644 mods/default/textures/default_rail_curved.png create mode 100644 mods/default/textures/default_rail_t_junction.png create mode 100644 mods/default/textures/default_sand.png create mode 100644 mods/default/textures/default_sandstone.png create mode 100644 mods/default/textures/default_sapling.png create mode 100644 mods/default/textures/default_scorched_stuff.png create mode 100644 mods/default/textures/default_sign_wall.png create mode 100644 mods/default/textures/default_steel_block.png create mode 100644 mods/default/textures/default_steel_ingot.png create mode 100644 mods/default/textures/default_stick.png create mode 100644 mods/default/textures/default_stone.png create mode 100644 mods/default/textures/default_tnt_bottom.png create mode 100644 mods/default/textures/default_tnt_side.png create mode 100644 mods/default/textures/default_tnt_top.png create mode 100644 mods/default/textures/default_tool_mesepick.png create mode 100644 mods/default/textures/default_tool_steelaxe.png create mode 100644 mods/default/textures/default_tool_steelpick.png create mode 100644 mods/default/textures/default_tool_steelshovel.png create mode 100644 mods/default/textures/default_tool_steelsword.png create mode 100644 mods/default/textures/default_tool_stoneaxe.png create mode 100644 mods/default/textures/default_tool_stonepick.png create mode 100644 mods/default/textures/default_tool_stoneshovel.png create mode 100644 mods/default/textures/default_tool_stonesword.png create mode 100644 mods/default/textures/default_tool_woodaxe.png create mode 100644 mods/default/textures/default_tool_woodpick.png create mode 100644 mods/default/textures/default_tool_woodshovel.png create mode 100644 mods/default/textures/default_tool_woodsword.png create mode 100644 mods/default/textures/default_torch.png create mode 100644 mods/default/textures/default_torch_on_ceiling.png create mode 100644 mods/default/textures/default_torch_on_floor.png create mode 100644 mods/default/textures/default_tree.png create mode 100644 mods/default/textures/default_tree_top.png create mode 100644 mods/default/textures/default_water.png create mode 100644 mods/default/textures/default_wood.png create mode 100644 mods/default/textures/heart.png create mode 100644 mods/default/textures/player.png create mode 100644 mods/default/textures/player_back.png create mode 100644 mods/default/textures/treeprop.png create mode 100644 mods/default/textures/wieldhand.png create mode 100644 mods/experimental/depends.txt create mode 100644 mods/experimental/init.lua create mode 100644 mods/experimental/textures/experimental_dummyball.png create mode 100644 mods/give_initial_stuff/depends.txt create mode 100644 mods/give_initial_stuff/init.lua create mode 100644 mods/legacy/depends.txt create mode 100644 mods/legacy/init.lua create mode 100644 mods/legacy/textures/apple_iron.png create mode 100644 mods/legacy/textures/cooked_rat.png create mode 100644 mods/legacy/textures/dungeon_master.png create mode 100644 mods/legacy/textures/fireball.png create mode 100644 mods/legacy/textures/firefly.png create mode 100644 mods/legacy/textures/oerkki1.png create mode 100644 mods/legacy/textures/oerkki1_damaged.png create mode 100644 mods/legacy/textures/rat.png diff --git a/mods/bucket/depends.txt b/mods/bucket/depends.txt new file mode 100644 index 0000000..3a7daa1 --- /dev/null +++ b/mods/bucket/depends.txt @@ -0,0 +1,2 @@ +default + diff --git a/mods/bucket/init.lua b/mods/bucket/init.lua new file mode 100644 index 0000000..8ed9da5 --- /dev/null +++ b/mods/bucket/init.lua @@ -0,0 +1,95 @@ +-- bucket (Minetest 0.4 mod) +-- A bucket, which can pick up water and lava + +minetest.register_alias("bucket", "bucket:bucket_empty") +minetest.register_alias("bucket_water", "bucket:bucket_water") +minetest.register_alias("bucket_lava", "bucket:bucket_lava") + +minetest.register_craft({ + output = 'bucket:bucket_empty 1', + recipe = { + {'default:steel_ingot', '', 'default:steel_ingot'}, + {'', 'default:steel_ingot', ''}, + } +}) + +bucket = {} +bucket.liquids = {} + +-- Register a new liquid +-- source = name of the source node +-- flowing = name of the flowing node +-- itemname = name of the new bucket item (or nil if liquid is not takeable) +-- inventory_image = texture of the new bucket item (ignored if itemname == nil) +-- This function can be called from any mod (that depends on bucket). +function bucket.register_liquid(source, flowing, itemname, inventory_image) + bucket.liquids[source] = { + source = source, + flowing = flowing, + itemname = itemname, + } + bucket.liquids[flowing] = bucket.liquids[source] + + if itemname ~= nil then + minetest.register_craftitem(itemname, { + inventory_image = inventory_image, + stack_max = 1, + liquids_pointable = true, + on_use = function(itemstack, user, pointed_thing) + -- Must be pointing to node + if pointed_thing.type ~= "node" then + return + end + -- Check if pointing to a liquid + n = minetest.env:get_node(pointed_thing.under) + if bucket.liquids[n.name] == nil then + -- Not a liquid + minetest.env:add_node(pointed_thing.above, {name=source}) + elseif n.name ~= source then + -- It's a liquid + minetest.env:add_node(pointed_thing.under, {name=source}) + end + return {name="bucket:bucket_empty"} + end + }) + end +end + +minetest.register_craftitem("bucket:bucket_empty", { + inventory_image = "bucket.png", + stack_max = 1, + liquids_pointable = true, + on_use = function(itemstack, user, pointed_thing) + -- Must be pointing to node + if pointed_thing.type ~= "node" then + return + end + -- Check if pointing to a liquid source + n = minetest.env:get_node(pointed_thing.under) + liquiddef = bucket.liquids[n.name] + if liquiddef ~= nil and liquiddef.source == n.name and liquiddef.itemname ~= nil then + minetest.env:add_node(pointed_thing.under, {name="air"}) + return {name=liquiddef.itemname} + end + end, +}) + +bucket.register_liquid( + "default:water_source", + "default:water_flowing", + "bucket:bucket_water", + "bucket_water.png" +) + +bucket.register_liquid( + "default:lava_source", + "default:lava_flowing", + "bucket:bucket_lava", + "bucket_lava.png" +) + +minetest.register_craft({ + type = "fuel", + recipe = "default:bucket_lava", + burntime = 60, +}) diff --git a/mods/bucket/textures/bucket.png b/mods/bucket/textures/bucket.png new file mode 100644 index 0000000000000000000000000000000000000000..f165fd209e9dc30282c963ee27dcd34eeb84b115 GIT binary patch literal 329 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s77>k44ofy`glX=O&z`&N| z?e40R)_jQWHy3QxwWGOEMJPJ$(aG^itUw7#J3Kx;TbdoIV?LlJ|%L z&zA6)hZaeAEoA!cz#ihDIpq-Z&b}wCMh9Ice%olRpJMa)Bjbnc2WoZuo<8V1aptnS z*U2Xj=bkxpA`uP@tSxmC`e!DK1vT27!iOO@Edx|Zt3dcCMUekQPVU5tmDO<8R z86GUwjSMx740ZQTaBykpIQC%P296SOrA-zWa^JFCh>G3*|Jj6NR_{LtT>UsZ*zJdP Y%xeY9+wa9Vr-D4;>FVdQ&MBb@02>N=rvLx| literal 0 HcmV?d00001 diff --git a/mods/bucket/textures/bucket_lava.png b/mods/bucket/textures/bucket_lava.png new file mode 100644 index 0000000000000000000000000000000000000000..7cf27cd1f41fb13063c94f69007e55b3591c6605 GIT binary patch literal 363 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s77>k44ofy`glX=O&z`&N| z?e4Ue$w!Hoh< zOT)@7mo3ZeFk~uV?z`U5k+OZ6SPVy^;f2z>Kk{#jh0eXR?!?Ap5-V46F}$~ZzIV;9 zH~}6lHtv;8b-$yVTsQ3bzW9%>qts`E{qCFY)(WQ{zkgLY>bk4Z*|!}xLEiLq^>bP0 Hl+XkKEk=md literal 0 HcmV?d00001 diff --git a/mods/bucket/textures/bucket_water.png b/mods/bucket/textures/bucket_water.png new file mode 100644 index 0000000000000000000000000000000000000000..f220ec51e691f95e2cf1f2076d29dd6a08a4d890 GIT binary patch literal 369 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s77>k44ofy`glX=O&z`&N| z?e49jtcm1g<6JEO_ae9wY;l>&@B{e0#G@gdi*OA-jF>cs8 zt=Djl`t7L(bBj9+m)(_~ep~L^tt3z1zLcIwn-{<9V%h~9T!jBDdm@$GGDV1C!IVQE zKddk-O*9DLQGLRq`FqvDMVq}=3f7-i=)G_G-hEnZjqxd_dU5%-x9-i&M;zyYJnQM| K=d#Wzp$Py$Zi&JG literal 0 HcmV?d00001 diff --git a/mods/default/init.lua b/mods/default/init.lua new file mode 100644 index 0000000..8788b38 --- /dev/null +++ b/mods/default/init.lua @@ -0,0 +1,1510 @@ +-- default (Minetest 0.4 mod) +-- Most default stuff + +-- The API documentation in here was moved into doc/lua_api.txt + +WATER_ALPHA = 160 +WATER_VISC = 1 +LAVA_VISC = 7 +LIGHT_MAX = 14 + +-- Definitions made by this mod that other mods can use too +default = {} + +-- +-- Tool definition +-- + +-- The hand +minetest.register_item(":", { + type = "none", + wield_image = "wieldhand.png", + wield_scale = {x=1,y=1,z=2.5}, + tool_capabilities = { + full_punch_interval = 1.0, + max_drop_level = 0, + groupcaps = { + fleshy = {times={[2]=2.00, [3]=1.00}, maxwear=0, maxlevel=1}, + crumbly = {times={[3]=0.70}, maxwear=0, maxlevel=1}, + snappy = {times={[3]=0.40}, maxwear=0, maxlevel=1}, + oddly_breakable_by_hand = {times={[1]=3.50,[2]=2.00,[3]=0.70}, maxwear=0, maxlevel=3}, + } + } +}) + +minetest.register_tool("default:pick_wood", { + description = "Wooden Pickaxe", + inventory_image = "default_tool_woodpick.png", + tool_capabilities = { + max_drop_level=0, + groupcaps={ + cracky={times={[2]=1.50, [3]=0.80}, maxwear=0.1, maxlevel=1} + } + }, +}) +minetest.register_tool("default:pick_stone", { + description = "Stone Pickaxe", + inventory_image = "default_tool_stonepick.png", + tool_capabilities = { + max_drop_level=0, + groupcaps={ + cracky={times={[1]=1.50, [2]=0.80, [3]=0.60}, maxwear=0.05, maxlevel=1} + } + }, +}) +minetest.register_tool("default:pick_steel", { + description = "Steel Pickaxe", + inventory_image = "default_tool_steelpick.png", + tool_capabilities = { + max_drop_level=1, + groupcaps={ + cracky={times={[1]=1.00, [2]=0.60, [3]=0.40}, maxwear=0.1, maxlevel=2} + } + }, +}) +minetest.register_tool("default:pick_mese", { + description = "Mese Pickaxe", + inventory_image = "default_tool_mesepick.png", + tool_capabilities = { + full_punch_interval = 1.0, + max_drop_level=3, + groupcaps={ + cracky={times={[1]=0.2, [2]=0.2, [3]=0.2}, maxwear=0.05, maxlevel=3}, + crumbly={times={[1]=0.2, [2]=0.2, [3]=0.2}, maxwear=0.05, maxlevel=3}, + snappy={times={[1]=0.2, [2]=0.2, [3]=0.2}, maxwear=0.05, maxlevel=3} + } + }, +}) +minetest.register_tool("default:shovel_wood", { + description = "Wooden Shovel", + inventory_image = "default_tool_woodshovel.png", + tool_capabilities = { + max_drop_level=0, + groupcaps={ + crumbly={times={[1]=1.50, [2]=0.80, [3]=0.50}, maxwear=0.1, maxlevel=1} + } + }, +}) +minetest.register_tool("default:shovel_stone", { + description = "Stone Shovel", + inventory_image = "default_tool_stoneshovel.png", + tool_capabilities = { + max_drop_level=0, + groupcaps={ + crumbly={times={[1]=0.80, [2]=0.50, [3]=0.30}, maxwear=0.05, maxlevel=1} + } + }, +}) +minetest.register_tool("default:shovel_steel", { + description = "Steel Shovel", + inventory_image = "default_tool_steelshovel.png", + tool_capabilities = { + max_drop_level=1, + groupcaps={ + crumbly={times={[1]=0.50, [2]=0.35, [3]=0.30}, maxwear=0.1, maxlevel=2} + } + }, +}) +minetest.register_tool("default:axe_wood", { + description = "Wooden Axe", + inventory_image = "default_tool_woodaxe.png", + tool_capabilities = { + max_drop_level=0, + groupcaps={ + choppy={times={[2]=1.40, [3]=0.80}, maxwear=0.1, maxlevel=1}, + fleshy={times={[2]=1.50, [3]=0.80}, maxwear=0.1, maxlevel=1} + } + }, +}) +minetest.register_tool("default:axe_stone", { + description = "Stone Axe", + inventory_image = "default_tool_stoneaxe.png", + tool_capabilities = { + max_drop_level=0, + groupcaps={ + choppy={times={[1]=1.50, [2]=1.00, [3]=0.60}, maxwear=0.05, maxlevel=1}, + fleshy={times={[2]=1.30, [3]=0.70}, maxwear=0.05, maxlevel=1} + } + }, +}) +minetest.register_tool("default:axe_steel", { + description = "Steel Axe", + inventory_image = "default_tool_steelaxe.png", + tool_capabilities = { + max_drop_level=1, + groupcaps={ + choppy={times={[1]=1.00, [2]=0.80, [3]=0.50}, maxwear=0.1, maxlevel=2}, + fleshy={times={[2]=1.10, [3]=0.60}, maxwear=0.03, maxlevel=1} + } + }, +}) +minetest.register_tool("default:sword_wood", { + description = "Wooden Sword", + inventory_image = "default_tool_woodsword.png", + tool_capabilities = { + full_punch_interval = 1.0, + max_drop_level=0, + groupcaps={ + fleshy={times={[2]=1.10, [3]=0.60}, maxwear=0.1, maxlevel=1}, + snappy={times={[2]=1.00, [3]=0.50}, maxwear=0.1, maxlevel=1}, + choppy={times={[3]=1.00}, maxwear=0.05, maxlevel=0} + } + } +}) +minetest.register_tool("default:sword_stone", { + description = "Stone Sword", + inventory_image = "default_tool_stonesword.png", + tool_capabilities = { + full_punch_interval = 1.0, + max_drop_level=0, + groupcaps={ + fleshy={times={[2]=0.80, [3]=0.40}, maxwear=0.05, maxlevel=1}, + snappy={times={[2]=0.80, [3]=0.40}, maxwear=0.05, maxlevel=1}, + choppy={times={[3]=0.90}, maxwear=0.05, maxlevel=0} + } + } +}) +minetest.register_tool("default:sword_steel", { + description = "Steel Sword", + inventory_image = "default_tool_steelsword.png", + tool_capabilities = { + full_punch_interval = 1.0, + max_drop_level=1, + groupcaps={ + fleshy={times={[1]=1.00, [2]=0.40, [3]=0.20}, maxwear=0.1, maxlevel=2}, + snappy={times={[2]=0.70, [3]=0.30}, maxwear=0.03, maxlevel=1}, + choppy={times={[3]=0.70}, maxwear=0.03, maxlevel=0} + } + } +}) + +-- +-- Crafting definition +-- + +minetest.register_craft({ + output = 'default:wood 4', + recipe = { + {'default:tree'}, + } +}) + +minetest.register_craft({ + output = 'default:stick 4', + recipe = { + {'default:wood'}, + } +}) + +minetest.register_craft({ + output = 'default:fence_wood 2', + recipe = { + {'default:stick', 'default:stick', 'default:stick'}, + {'default:stick', 'default:stick', 'default:stick'}, + } +}) + +minetest.register_craft({ + output = 'default:sign_wall', + recipe = { + {'default:wood', 'default:wood', 'default:wood'}, + {'default:wood', 'default:wood', 'default:wood'}, + {'', 'default:stick', ''}, + } +}) + +minetest.register_craft({ + output = 'default:torch 4', + recipe = { + {'default:coal_lump'}, + {'default:stick'}, + } +}) + +minetest.register_craft({ + output = 'default:pick_wood', + recipe = { + {'default:wood', 'default:wood', 'default:wood'}, + {'', 'default:stick', ''}, + {'', 'default:stick', ''}, + } +}) + +minetest.register_craft({ + output = 'default:pick_stone', + recipe = { + {'default:cobble', 'default:cobble', 'default:cobble'}, + {'', 'default:stick', ''}, + {'', 'default:stick', ''}, + } +}) + +minetest.register_craft({ + output = 'default:pick_steel', + recipe = { + {'default:steel_ingot', 'default:steel_ingot', 'default:steel_ingot'}, + {'', 'default:stick', ''}, + {'', 'default:stick', ''}, + } +}) + +minetest.register_craft({ + output = 'default:pick_mese', + recipe = { + {'default:mese', 'default:mese', 'default:mese'}, + {'', 'default:stick', ''}, + {'', 'default:stick', ''}, + } +}) + +minetest.register_craft({ + output = 'default:shovel_wood', + recipe = { + {'default:wood'}, + {'default:stick'}, + {'default:stick'}, + } +}) + +minetest.register_craft({ + output = 'default:shovel_stone', + recipe = { + {'default:cobble'}, + {'default:stick'}, + {'default:stick'}, + } +}) + +minetest.register_craft({ + output = 'default:shovel_steel', + recipe = { + {'default:steel_ingot'}, + {'default:stick'}, + {'default:stick'}, + } +}) + +minetest.register_craft({ + output = 'default:axe_wood', + recipe = { + {'default:wood', 'default:wood'}, + {'default:wood', 'default:stick'}, + {'', 'default:stick'}, + } +}) + +minetest.register_craft({ + output = 'default:axe_stone', + recipe = { + {'default:cobble', 'default:cobble'}, + {'default:cobble', 'default:stick'}, + {'', 'default:stick'}, + } +}) + +minetest.register_craft({ + output = 'default:axe_steel', + recipe = { + {'default:steel_ingot', 'default:steel_ingot'}, + {'default:steel_ingot', 'default:stick'}, + {'', 'default:stick'}, + } +}) + +minetest.register_craft({ + output = 'default:sword_wood', + recipe = { + {'default:wood'}, + {'default:wood'}, + {'default:stick'}, + } +}) + +minetest.register_craft({ + output = 'default:sword_stone', + recipe = { + {'default:cobble'}, + {'default:cobble'}, + {'default:stick'}, + } +}) + +minetest.register_craft({ + output = 'default:sword_steel', + recipe = { + {'default:steel_ingot'}, + {'default:steel_ingot'}, + {'default:stick'}, + } +}) + +minetest.register_craft({ + output = 'default:rail 15', + recipe = { + {'default:steel_ingot', '', 'default:steel_ingot'}, + {'default:steel_ingot', 'default:stick', 'default:steel_ingot'}, + {'default:steel_ingot', '', 'default:steel_ingot'}, + } +}) + +minetest.register_craft({ + output = 'default:chest', + recipe = { + {'default:wood', 'default:wood', 'default:wood'}, + {'default:wood', '', 'default:wood'}, + {'default:wood', 'default:wood', 'default:wood'}, + } +}) + +minetest.register_craft({ + output = 'default:chest_locked', + recipe = { + {'default:wood', 'default:wood', 'default:wood'}, + {'default:wood', 'default:steel_ingot', 'default:wood'}, + {'default:wood', 'default:wood', 'default:wood'}, + } +}) + +minetest.register_craft({ + output = 'default:furnace', + recipe = { + {'default:cobble', 'default:cobble', 'default:cobble'}, + {'default:cobble', '', 'default:cobble'}, + {'default:cobble', 'default:cobble', 'default:cobble'}, + } +}) + +minetest.register_craft({ + output = 'default:steelblock', + recipe = { + {'default:steel_ingot', 'default:steel_ingot', 'default:steel_ingot'}, + {'default:steel_ingot', 'default:steel_ingot', 'default:steel_ingot'}, + {'default:steel_ingot', 'default:steel_ingot', 'default:steel_ingot'}, + } +}) + +minetest.register_craft({ + output = 'default:sandstone', + recipe = { + {'default:sand', 'default:sand'}, + {'default:sand', 'default:sand'}, + } +}) + +minetest.register_craft({ + output = 'default:clay', + recipe = { + {'default:clay_lump', 'default:clay_lump'}, + {'default:clay_lump', 'default:clay_lump'}, + } +}) + +minetest.register_craft({ + output = 'default:brick', + recipe = { + {'default:clay_brick', 'default:clay_brick'}, + {'default:clay_brick', 'default:clay_brick'}, + } +}) + +minetest.register_craft({ + output = 'default:paper', + recipe = { + {'default:papyrus', 'default:papyrus', 'default:papyrus'}, + } +}) + +minetest.register_craft({ + output = 'default:book', + recipe = { + {'default:paper'}, + {'default:paper'}, + {'default:paper'}, + } +}) + +minetest.register_craft({ + output = 'default:bookshelf', + recipe = { + {'default:wood', 'default:wood', 'default:wood'}, + {'default:book', 'default:book', 'default:book'}, + {'default:wood', 'default:wood', 'default:wood'}, + } +}) + +minetest.register_craft({ + output = 'default:ladder', + recipe = { + {'default:stick', '', 'default:stick'}, + {'default:stick', 'default:stick', 'default:stick'}, + {'default:stick', '', 'default:stick'}, + } +}) + +-- +-- Crafting (tool repair) +-- +minetest.register_craft({ + type = "toolrepair", + additional_wear = -0.02, +}) + +-- +-- Cooking recipes +-- + +minetest.register_craft({ + type = "cooking", + output = "default:glass", + recipe = "default:sand", +}) + +minetest.register_craft({ + type = "cooking", + output = "default:coal_lump", + recipe = "default:tree", +}) + +minetest.register_craft({ + type = "cooking", + output = "default:coal_lump", + recipe = "default:jungletree", +}) + +minetest.register_craft({ + type = "cooking", + output = "default:stone", + recipe = "default:cobble", +}) + +minetest.register_craft({ + type = "cooking", + output = "default:steel_ingot", + recipe = "default:iron_lump", +}) + +minetest.register_craft({ + type = "cooking", + output = "default:clay_brick", + recipe = "default:clay_lump", +}) + +-- +-- Fuels +-- + +minetest.register_craft({ + type = "fuel", + recipe = "default:tree", + burntime = 30, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "default:jungletree", + burntime = 30, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "default:junglegrass", + burntime = 2, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "default:leaves", + burntime = 1, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "default:cactus", + burntime = 15, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "default:papyrus", + burntime = 1, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "default:bookshelf", + burntime = 30, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "default:fence_wood", + burntime = 15, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "default:ladder", + burntime = 5, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "default:wood", + burntime = 7, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "default:mese", + burntime = 30, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "default:lava_source", + burntime = 60, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "default:torch", + burntime = 4, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "default:sign_wall", + burntime = 10, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "default:chest", + burntime = 30, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "default:chest_locked", + burntime = 30, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "default:nyancat", + burntime = 1, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "default:nyancat_rainbow", + burntime = 1, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "default:sapling", + burntime = 10, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "default:apple", + burntime = 3, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "default:coal_lump", + burntime = 40, +}) + +-- +-- Node definitions +-- + +-- Default node sounds + +function default.node_sound_defaults(table) + table = table or {} + table.footstep = table.footstep or + {name="", gain=1.0} + table.dug = table.dug or + {name="default_dug_node", gain=1.0} + return table +end + +function default.node_sound_stone_defaults(table) + table = table or {} + table.footstep = table.footstep or + {name="default_hard_footstep", gain=0.2} + default.node_sound_defaults(table) + return table +end + +function default.node_sound_dirt_defaults(table) + table = table or {} + table.footstep = table.footstep or + {name="", gain=0.5} + --table.dug = table.dug or + -- {name="default_dirt_break", gain=0.5} + default.node_sound_defaults(table) + return table +end + +function default.node_sound_sand_defaults(table) + table = table or {} + table.footstep = table.footstep or + {name="default_grass_footstep", gain=0.25} + --table.dug = table.dug or + -- {name="default_dirt_break", gain=0.25} + table.dug = table.dug or + {name="", gain=0.25} + default.node_sound_defaults(table) + return table +end + +function default.node_sound_wood_defaults(table) + table = table or {} + table.footstep = table.footstep or + {name="default_hard_footstep", gain=0.3} + default.node_sound_defaults(table) + return table +end + +function default.node_sound_leaves_defaults(table) + table = table or {} + table.footstep = table.footstep or + {name="default_grass_footstep", gain=0.25} + table.dig = table.dig or + {name="default_dig_crumbly", gain=0.4} + table.dug = table.dug or + {name="", gain=1.0} + default.node_sound_defaults(table) + return table +end + +function default.node_sound_glass_defaults(table) + table = table or {} + table.footstep = table.footstep or + {name="default_stone_footstep", gain=0.25} + table.dug = table.dug or + {name="default_break_glass", gain=1.0} + default.node_sound_defaults(table) + return table +end + +-- + +minetest.register_node("default:stone", { + description = "Stone", + tile_images = {"default_stone.png"}, + is_ground_content = true, + groups = {cracky=3}, + drop = 'default:cobble', + legacy_mineral = true, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node("default:stone_with_coal", { + description = "Stone with coal", + tile_images = {"default_stone.png^default_mineral_coal.png"}, + is_ground_content = true, + groups = {cracky=3}, + drop = 'default:coal_lump', + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node("default:stone_with_iron", { + description = "Stone with iron", + tile_images = {"default_stone.png^default_mineral_iron.png"}, + is_ground_content = true, + groups = {cracky=3}, + drop = 'default:iron_lump', + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node("default:dirt_with_grass", { + description = "Dirt with grass", + tile_images = {"default_grass.png", "default_dirt.png", "default_dirt.png^default_grass_side.png"}, + is_ground_content = true, + groups = {crumbly=3}, + drop = 'default:dirt', + sounds = default.node_sound_dirt_defaults({ + footstep = {name="default_grass_footstep", gain=0.4}, + }), +}) + +minetest.register_node("default:dirt_with_grass_footsteps", { + description = "Dirt with grass and footsteps", + tile_images = {"default_grass_footsteps.png", "default_dirt.png", "default_dirt.png^default_grass_side.png"}, + is_ground_content = true, + groups = {crumbly=3}, + drop = 'default:dirt', + sounds = default.node_sound_dirt_defaults({ + footstep = {name="default_grass_footstep", gain=0.4}, + }), +}) + +minetest.register_node("default:dirt", { + description = "Dirt", + tile_images = {"default_dirt.png"}, + is_ground_content = true, + groups = {crumbly=3}, + sounds = default.node_sound_dirt_defaults(), +}) + +minetest.register_node("default:sand", { + description = "Sand", + tile_images = {"default_sand.png"}, + is_ground_content = true, + groups = {crumbly=3}, + sounds = default.node_sound_sand_defaults(), +}) + +minetest.register_node("default:gravel", { + description = "Gravel", + tile_images = {"default_gravel.png"}, + is_ground_content = true, + groups = {crumbly=2}, + sounds = default.node_sound_dirt_defaults({ + footstep = {name="default_gravel_footstep", gain=0.45}, + }), +}) + +minetest.register_node("default:sandstone", { + description = "Sandstone", + tile_images = {"default_sandstone.png"}, + is_ground_content = true, + groups = {crumbly=2,cracky=2}, + drop = 'default:sand', + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node("default:clay", { + description = "Clay", + tile_images = {"default_clay.png"}, + is_ground_content = true, + groups = {crumbly=3}, + drop = 'default:clay_lump 4', + sounds = default.node_sound_dirt_defaults({ + footstep = "", + }), +}) + +minetest.register_node("default:brick", { + description = "Brick", + tile_images = {"default_brick.png"}, + is_ground_content = true, + groups = {cracky=3}, + drop = 'default:clay_brick 4', + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node("default:tree", { + description = "Tree", + tile_images = {"default_tree_top.png", "default_tree_top.png", "default_tree.png"}, + is_ground_content = true, + groups = {snappy=2,choppy=2,oddly_breakable_by_hand=1}, + sounds = default.node_sound_wood_defaults(), +}) + +minetest.register_node("default:jungletree", { + description = "Jungle Tree", + tile_images = {"default_jungletree_top.png", "default_jungletree_top.png", "default_jungletree.png"}, + is_ground_content = true, + groups = {snappy=2,choppy=2,oddly_breakable_by_hand=1}, + sounds = default.node_sound_wood_defaults(), +}) + +minetest.register_node("default:junglegrass", { + description = "Jungle Grass", + drawtype = "plantlike", + visual_scale = 1.3, + tile_images = {"default_junglegrass.png"}, + inventory_image = "default_junglegrass.png", + wield_image = "default_junglegrass.png", + paramtype = "light", + walkable = false, + groups = {snappy=3}, + sounds = default.node_sound_leaves_defaults(), +}) + +minetest.register_node("default:leaves", { + description = "Leaves", + drawtype = "allfaces_optional", + visual_scale = 1.3, + tile_images = {"default_leaves.png"}, + paramtype = "light", + groups = {snappy=3}, + drop = { + max_items = 1, + items = { + { + -- player will get sapling with 1/20 chance + items = {'default:sapling'}, + rarity = 20, + }, + { + -- player will get leaves only if he get no saplings, + -- this is because max_items is 1 + items = {'default:leaves'}, + } + } + }, + sounds = default.node_sound_leaves_defaults(), +}) + +minetest.register_node("default:cactus", { + description = "Cactus", + tile_images = {"default_cactus_top.png", "default_cactus_top.png", "default_cactus_side.png"}, + is_ground_content = true, + groups = {snappy=2,choppy=3}, + sounds = default.node_sound_wood_defaults(), +}) + +minetest.register_node("default:papyrus", { + description = "Papyrus", + drawtype = "plantlike", + tile_images = {"default_papyrus.png"}, + inventory_image = "default_papyrus.png", + wield_image = "default_papyrus.png", + paramtype = "light", + is_ground_content = true, + walkable = false, + groups = {snappy=3}, + sounds = default.node_sound_leaves_defaults(), +}) + +minetest.register_node("default:bookshelf", { + description = "Bookshelf", + tile_images = {"default_wood.png", "default_wood.png", "default_bookshelf.png"}, + is_ground_content = true, + groups = {snappy=2,choppy=3,oddly_breakable_by_hand=2}, + sounds = default.node_sound_wood_defaults(), +}) + +minetest.register_node("default:glass", { + description = "Glass", + drawtype = "glasslike", + tile_images = {"default_glass.png"}, + inventory_image = minetest.inventorycube("default_glass.png"), + paramtype = "light", + sunlight_propagates = true, + is_ground_content = true, + groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3}, + sounds = default.node_sound_glass_defaults(), +}) + +minetest.register_node("default:fence_wood", { + description = "Wooden Fence", + drawtype = "fencelike", + tile_images = {"default_wood.png"}, + inventory_image = "default_fence.png", + wield_image = "default_fence.png", + paramtype = "light", + is_ground_content = true, + selection_box = { + type = "fixed", + fixed = {-1/7, -1/2, -1/7, 1/7, 1/2, 1/7}, + }, + groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2}, + sounds = default.node_sound_wood_defaults(), +}) + +minetest.register_node("default:rail", { + description = "Rail", + drawtype = "raillike", + tile_images = {"default_rail.png", "default_rail_curved.png", "default_rail_t_junction.png", "default_rail_crossing.png"}, + inventory_image = "default_rail.png", + wield_image = "default_rail.png", + paramtype = "light", + is_ground_content = true, + walkable = false, + selection_box = { + type = "fixed", + --fixed = + }, + groups = {bendy=2,snappy=1,dig_immediate=2}, +}) + +minetest.register_node("default:ladder", { + description = "Ladder", + drawtype = "signlike", + tile_images = {"default_ladder.png"}, + inventory_image = "default_ladder.png", + wield_image = "default_ladder.png", + paramtype = "light", + paramtype2 = "wallmounted", + is_ground_content = true, + walkable = false, + climbable = true, + selection_box = { + type = "wallmounted", + --wall_top = = + --wall_bottom = = + --wall_side = = + }, + groups = {snappy=2,choppy=2,oddly_breakable_by_hand=3}, + legacy_wallmounted = true, + sounds = default.node_sound_wood_defaults(), +}) + +minetest.register_node("default:wood", { + description = "Wood", + tile_images = {"default_wood.png"}, + is_ground_content = true, + groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2}, + sounds = default.node_sound_wood_defaults(), +}) + +minetest.register_node("default:mese", { + description = "Mese", + tile_images = {"default_mese.png"}, + is_ground_content = true, + groups = {cracky=1}, + sounds = default.node_sound_defaults(), +}) + +minetest.register_node("default:cloud", { + description = "Cloud", + tile_images = {"default_cloud.png"}, + is_ground_content = true, + sounds = default.node_sound_defaults(), +}) + +minetest.register_node("default:water_flowing", { + description = "Water (flowing)", + inventory_image = minetest.inventorycube("default_water.png"), + drawtype = "flowingliquid", + tile_images = {"default_water.png"}, + alpha = WATER_ALPHA, + paramtype = "light", + walkable = false, + pointable = false, + diggable = false, + buildable_to = true, + liquidtype = "flowing", + liquid_alternative_flowing = "default:water_flowing", + liquid_alternative_source = "default:water_source", + liquid_viscosity = WATER_VISC, + post_effect_color = {a=64, r=100, g=100, b=200}, + special_materials = { + {image="default_water.png", backface_culling=false}, + {image="default_water.png", backface_culling=true}, + }, + groups = {water=3, liquid=3}, +}) + +minetest.register_node("default:water_source", { + description = "Water", + inventory_image = minetest.inventorycube("default_water.png"), + drawtype = "liquid", + tile_images = {"default_water.png"}, + alpha = WATER_ALPHA, + paramtype = "light", + walkable = false, + pointable = false, + diggable = false, + buildable_to = true, + liquidtype = "source", + liquid_alternative_flowing = "default:water_flowing", + liquid_alternative_source = "default:water_source", + liquid_viscosity = WATER_VISC, + post_effect_color = {a=64, r=100, g=100, b=200}, + special_materials = { + -- New-style water source material (mostly unused) + {image="default_water.png", backface_culling=false}, + }, + groups = {water=3, liquid=3}, +}) + +minetest.register_node("default:lava_flowing", { + description = "Lava (flowing)", + inventory_image = minetest.inventorycube("default_lava.png"), + drawtype = "flowingliquid", + tile_images = {"default_lava.png"}, + paramtype = "light", + light_source = LIGHT_MAX - 1, + walkable = false, + pointable = false, + diggable = false, + buildable_to = true, + liquidtype = "flowing", + liquid_alternative_flowing = "default:lava_flowing", + liquid_alternative_source = "default:lava_source", + liquid_viscosity = LAVA_VISC, + damage_per_second = 4*2, + post_effect_color = {a=192, r=255, g=64, b=0}, + special_materials = { + {image="default_lava.png", backface_culling=false}, + {image="default_lava.png", backface_culling=true}, + }, + groups = {lava=3, liquid=2, hot=3}, +}) + +minetest.register_node("default:lava_source", { + description = "Lava", + inventory_image = minetest.inventorycube("default_lava.png"), + drawtype = "liquid", + tile_images = {"default_lava.png"}, + paramtype = "light", + light_source = LIGHT_MAX - 1, + walkable = false, + pointable = false, + diggable = false, + buildable_to = true, + liquidtype = "source", + liquid_alternative_flowing = "default:lava_flowing", + liquid_alternative_source = "default:lava_source", + liquid_viscosity = LAVA_VISC, + damage_per_second = 4*2, + post_effect_color = {a=192, r=255, g=64, b=0}, + special_materials = { + -- New-style lava source material (mostly unused) + {image="default_lava.png", backface_culling=false}, + }, + groups = {lava=3, liquid=2, hot=3}, +}) + +minetest.register_node("default:torch", { + description = "Torch", + drawtype = "torchlike", + tile_images = {"default_torch_on_floor.png", "default_torch_on_ceiling.png", "default_torch.png"}, + inventory_image = "default_torch_on_floor.png", + wield_image = "default_torch_on_floor.png", + paramtype = "light", + paramtype2 = "wallmounted", + sunlight_propagates = true, + walkable = false, + light_source = LIGHT_MAX-1, + selection_box = { + type = "wallmounted", + wall_top = {-0.1, 0.5-0.6, -0.1, 0.1, 0.5, 0.1}, + wall_bottom = {-0.1, -0.5, -0.1, 0.1, -0.5+0.6, 0.1}, + wall_side = {-0.5, -0.3, -0.1, -0.5+0.3, 0.3, 0.1}, + }, + groups = {choppy=2,dig_immediate=3}, + legacy_wallmounted = true, + sounds = default.node_sound_defaults(), +}) + +minetest.register_node("default:sign_wall", { + description = "Sign", + drawtype = "signlike", + tile_images = {"default_sign_wall.png"}, + inventory_image = "default_sign_wall.png", + wield_image = "default_sign_wall.png", + paramtype = "light", + paramtype2 = "wallmounted", + sunlight_propagates = true, + walkable = false, + metadata_name = "sign", + selection_box = { + type = "wallmounted", + --wall_top = + --wall_bottom = + --wall_side = + }, + groups = {choppy=2,dig_immediate=2}, + legacy_wallmounted = true, + sounds = default.node_sound_defaults(), +}) + +minetest.register_node("default:chest", { + description = "Chest", + tile_images = {"default_chest_top.png", "default_chest_top.png", "default_chest_side.png", + "default_chest_side.png", "default_chest_side.png", "default_chest_front.png"}, + paramtype2 = "facedir", + metadata_name = "chest", + groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2}, + legacy_facedir_simple = true, + sounds = default.node_sound_wood_defaults(), +}) + +minetest.register_node("default:chest_locked", { + description = "Locked Chest", + tile_images = {"default_chest_top.png", "default_chest_top.png", "default_chest_side.png", + "default_chest_side.png", "default_chest_side.png", "default_chest_lock.png"}, + paramtype2 = "facedir", + metadata_name = "locked_chest", + groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2}, + legacy_facedir_simple = true, + sounds = default.node_sound_wood_defaults(), +}) + +minetest.register_node("default:furnace", { + description = "Furnace", + tile_images = {"default_furnace_side.png", "default_furnace_side.png", "default_furnace_side.png", + "default_furnace_side.png", "default_furnace_side.png", "default_furnace_front.png"}, + paramtype2 = "facedir", + metadata_name = "furnace", + groups = {cracky=2}, + legacy_facedir_simple = true, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node("default:cobble", { + description = "Cobble", + tile_images = {"default_cobble.png"}, + is_ground_content = true, + groups = {cracky=3}, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node("default:mossycobble", { + description = "Mossy Cobble", + tile_images = {"default_mossycobble.png"}, + is_ground_content = true, + groups = {cracky=3}, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node("default:steelblock", { + description = "Steel Block", + tile_images = {"default_steel_block.png"}, + is_ground_content = true, + groups = {snappy=1,bendy=2}, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node("default:nyancat", { + description = "Nyancat", + tile_images = {"default_nc_side.png", "default_nc_side.png", "default_nc_side.png", + "default_nc_side.png", "default_nc_back.png", "default_nc_front.png"}, + inventory_image = "default_nc_front.png", + paramtype2 = "facedir", + groups = {cracky=2}, + legacy_facedir_simple = true, + sounds = default.node_sound_defaults(), +}) + +minetest.register_node("default:nyancat_rainbow", { + description = "Nyancat Rainbow", + tile_images = {"default_nc_rb.png"}, + inventory_image = "default_nc_rb.png", + groups = {cracky=2}, + sounds = default.node_sound_defaults(), +}) + +minetest.register_node("default:sapling", { + description = "Sapling", + drawtype = "plantlike", + visual_scale = 1.0, + tile_images = {"default_sapling.png"}, + inventory_image = "default_sapling.png", + wield_image = "default_sapling.png", + paramtype = "light", + walkable = false, + groups = {snappy=2,dig_immediate=3}, + sounds = default.node_sound_defaults(), +}) + +minetest.register_node("default:apple", { + description = "Apple", + drawtype = "plantlike", + visual_scale = 1.0, + tile_images = {"default_apple.png"}, + inventory_image = "default_apple.png", + paramtype = "light", + sunlight_propagates = true, + walkable = false, + groups = {fleshy=3,dig_immediate=3}, + on_use = minetest.item_eat(4), + sounds = default.node_sound_defaults(), +}) + +-- +-- Crafting items +-- + +minetest.register_craftitem("default:stick", { + description = "Stick", + inventory_image = "default_stick.png", +}) + +minetest.register_craftitem("default:paper", { + description = "Paper", + inventory_image = "default_paper.png", +}) + +minetest.register_craftitem("default:book", { + description = "Book", + inventory_image = "default_book.png", +}) + +minetest.register_craftitem("default:coal_lump", { + description = "Lump of coal", + inventory_image = "default_coal_lump.png", +}) + +minetest.register_craftitem("default:iron_lump", { + description = "Lump of iron", + inventory_image = "default_iron_lump.png", +}) + +minetest.register_craftitem("default:clay_lump", { + description = "Lump of clay", + inventory_image = "default_clay_lump.png", +}) + +minetest.register_craftitem("default:steel_ingot", { + description = "Steel ingot", + inventory_image = "default_steel_ingot.png", +}) + +minetest.register_craftitem("default:clay_brick", { + description = "Clay brick", + inventory_image = "default_steel_ingot.png", + inventory_image = "default_clay_brick.png", +}) + +minetest.register_craftitem("default:scorched_stuff", { + description = "Scorched stuff", + inventory_image = "default_scorched_stuff.png", +}) + +-- +-- Creative inventory +-- + +minetest.add_to_creative_inventory('default:pick_mese') +minetest.add_to_creative_inventory('default:pick_steel') +minetest.add_to_creative_inventory('default:axe_steel') +minetest.add_to_creative_inventory('default:shovel_steel') + +minetest.add_to_creative_inventory('default:torch') +minetest.add_to_creative_inventory('default:cobble') +minetest.add_to_creative_inventory('default:dirt') +minetest.add_to_creative_inventory('default:stone') +minetest.add_to_creative_inventory('default:sand') +minetest.add_to_creative_inventory('default:sandstone') +minetest.add_to_creative_inventory('default:clay') +minetest.add_to_creative_inventory('default:brick') +minetest.add_to_creative_inventory('default:tree') +minetest.add_to_creative_inventory('default:wood') +minetest.add_to_creative_inventory('default:leaves') +minetest.add_to_creative_inventory('default:cactus') +minetest.add_to_creative_inventory('default:papyrus') +minetest.add_to_creative_inventory('default:bookshelf') +minetest.add_to_creative_inventory('default:glass') +minetest.add_to_creative_inventory('default:fence_wood') +minetest.add_to_creative_inventory('default:rail') +minetest.add_to_creative_inventory('default:mese') +minetest.add_to_creative_inventory('default:chest') +minetest.add_to_creative_inventory('default:furnace') +minetest.add_to_creative_inventory('default:sign_wall') +minetest.add_to_creative_inventory('default:water_source') +minetest.add_to_creative_inventory('default:lava_source') +minetest.add_to_creative_inventory('default:ladder') + +-- +-- Some common functions +-- + +default.falling_node_names = {} + +function nodeupdate_single(p) + n = minetest.env:get_node(p) + if default.falling_node_names[n.name] ~= nil then + p_bottom = {x=p.x, y=p.y-1, z=p.z} + n_bottom = minetest.env:get_node(p_bottom) + if n_bottom.name == "air" then + minetest.env:remove_node(p) + minetest.env:add_entity(p, "default:falling_"..n.name) + nodeupdate(p) + end + end +end + +function nodeupdate(p) + for x = -1,1 do + for y = -1,1 do + for z = -1,1 do + p2 = {x=p.x+x, y=p.y+y, z=p.z+z} + nodeupdate_single(p2) + end + end + end +end + +-- +-- Falling stuff +-- + +function default.register_falling_node(nodename, texture) + default.falling_node_names[nodename] = true + -- Override naming conventions for stuff like :default:falling_default:sand + minetest.register_entity(":default:falling_"..nodename, { + -- Static definition + physical = true, + collisionbox = {-0.5,-0.5,-0.5, 0.5,0.5,0.5}, + visual = "cube", + textures = {texture,texture,texture,texture,texture,texture}, + -- State + -- Methods + on_step = function(self, dtime) + -- Set gravity + self.object:setacceleration({x=0, y=-10, z=0}) + -- Turn to actual sand when collides to ground or just move + local pos = self.object:getpos() + local bcp = {x=pos.x, y=pos.y-0.7, z=pos.z} -- Position of bottom center point + local bcn = minetest.env:get_node(bcp) + if bcn.name ~= "air" then + -- Turn to a sand node + local np = {x=bcp.x, y=bcp.y+1, z=bcp.z} + minetest.env:add_node(np, {name=nodename}) + self.object:remove() + else + -- Do nothing + end + end + }) +end + +default.register_falling_node("default:sand", "default_sand.png") +default.register_falling_node("default:gravel", "default_gravel.png") + +-- +-- Global callbacks +-- + +-- Global environment step function +function on_step(dtime) + -- print("on_step") +end +minetest.register_globalstep(on_step) + +function on_placenode(p, node) + --print("on_placenode") + nodeupdate(p) +end +minetest.register_on_placenode(on_placenode) + +function on_dignode(p, node) + --print("on_dignode") + nodeupdate(p) +end +minetest.register_on_dignode(on_dignode) + +function on_punchnode(p, node) +end +minetest.register_on_punchnode(on_punchnode) + +local function handle_give_command(cmd, giver, receiver, stackstring) + if not minetest.get_player_privs(giver)["give"] then + minetest.chat_send_player(giver, "error: you don't have permission to give") + return + end + minetest.debug("DEBUG: "..cmd..' invoked, stackstring="'..stackstring..'"') + minetest.log(cmd..' invoked, stackstring="'..stackstring..'"') + local itemstack = ItemStack(stackstring) + if itemstack:is_empty() then + minetest.chat_send_player(giver, 'error: cannot give an empty item') + return + elseif not itemstack:is_known() then + minetest.chat_send_player(giver, 'error: cannot give an unknown item') + return + end + local receiverref = minetest.env:get_player_by_name(receiver) + if receiverref == nil then + minetest.chat_send_player(giver, receiver..' is not a known player') + return + end + local leftover = receiverref:get_inventory():add_item("main", itemstack) + if leftover:is_empty() then + partiality = "" + elseif leftover:get_count() == itemstack:get_count() then + partiality = "could not be " + else + partiality = "partially " + end + -- The actual item stack string may be different from what the "giver" + -- entered (e.g. big numbers are always interpreted as 2^16-1). + stackstring = itemstack:to_string() + if giver == receiver then + minetest.chat_send_player(giver, '"'..stackstring + ..'" '..partiality..'added to inventory.'); + else + minetest.chat_send_player(giver, '"'..stackstring + ..'" '..partiality..'added to '..receiver..'\'s inventory.'); + minetest.chat_send_player(receiver, '"'..stackstring + ..'" '..partiality..'added to inventory.'); + end +end + +minetest.register_on_chat_message(function(name, message) + --print("default on_chat_message: name="..dump(name).." message="..dump(message)) + local cmd = "/giveme" + if message:sub(0, #cmd) == cmd then + local stackstring = string.match(message, cmd.." (.*)") + if stackstring == nil then + minetest.chat_send_player(name, 'usage: '..cmd..' stackstring') + return true -- Handled chat message + end + handle_give_command(cmd, name, name, stackstring) + return true + end + local cmd = "/give" + if message:sub(0, #cmd) == cmd then + local receiver, stackstring = string.match(message, cmd.." ([%a%d_-]+) (.*)") + if receiver == nil or stackstring == nil then + minetest.chat_send_player(name, 'usage: '..cmd..' name stackstring') + return true -- Handled chat message + end + handle_give_command(cmd, name, receiver, stackstring) + return true + end + local cmd = "/spawnentity" + if message:sub(0, #cmd) == cmd then + if not minetest.get_player_privs(name)["give"] then + minetest.chat_send_player(name, "you don't have permission to spawn (give)") + return true -- Handled chat message + end + if not minetest.get_player_privs(name)["interact"] then + minetest.chat_send_player(name, "you don't have permission to interact") + return true -- Handled chat message + end + local entityname = string.match(message, cmd.." (.*)") + if entityname == nil then + minetest.chat_send_player(name, 'usage: '..cmd..' entityname') + return true -- Handled chat message + end + print(cmd..' invoked, entityname="'..entityname..'"') + local player = minetest.env:get_player_by_name(name) + if player == nil then + print("Unable to spawn entity, player is nil") + return true -- Handled chat message + end + local p = player:getpos() + p.y = p.y + 1 + minetest.env:add_entity(p, entityname) + minetest.chat_send_player(name, '"'..entityname + ..'" spawned.'); + return true -- Handled chat message + end + local cmd = "/pulverize" + if message:sub(0, #cmd) == cmd then + local player = minetest.env:get_player_by_name(name) + if player == nil then + print("Unable to pulverize, player is nil") + return true -- Handled chat message + end + if player:get_wielded_item():is_empty() then + minetest.chat_send_player(name, 'Unable to pulverize, no item in hand.') + else + player:set_wielded_item(nil) + minetest.chat_send_player(name, 'An item was pulverized.') + end + return true + end +end) + +-- +-- Done, print some random stuff +-- + +--print("minetest.registered_entities:") +--dump2(minetest.registered_entities) + +-- END diff --git a/mods/default/textures/crack.png b/mods/default/textures/crack.png new file mode 100644 index 0000000000000000000000000000000000000000..499783982d553bfecbc596175b492dd0f2346a32 GIT binary patch literal 1076 zcmeAS@N?(olHy`uVBq!ia0y~yU=UznUJab;j&_z%Ya!PI|- z{|x^@;P&m?+qP|+G-*<9Zmy@Nr;3WoZ3c#I3=ESP7;+gHJQ)~N7#J8Zgl^wv*tU&f z(jTu%m16$TXs3~m20tpC4l+wDn{w&mtd^7PDA zQTab<((T;bZJwT!R8;=w=HB-7+@_-P-_!H9ipqZ#mD~SsZ@ay1(zZ#tlX5+CJykqa zw*B8W>Gq`DZMmM4JXLa4CjFn3dpp;2o2SYomE8Zip0_uZMiCwJQ;FTFye;+HGUZWZ)3PUiD6qV!z53J{|wu1GfdjX zkUNRNlVRI`hDo;>aTR)WI?svPZRv$x}DTLtJv! zVLK)DZz+cvZ5=WX&1v0Iuw+T^Jt6jcOf&iSOk44ofy`glX=O&z`&C3 z=k!HHylXk+xh~Y{2q9jI!hy?rVd}h)13=9kmp00i_>zopr0E(GA AA^-pY literal 0 HcmV?d00001 diff --git a/mods/default/textures/default_book.png b/mods/default/textures/default_book.png new file mode 100644 index 0000000000000000000000000000000000000000..176fb6aa96154614c7edb3a7ed80064d23a8fceb GIT binary patch literal 292 zcmeAS@N?(olHy`uVBq!ia0y~yU=UznU=ZYBV_;yovR>y10|NtNage(c!@6@aFBupZ zI14-?iy0WWg+Z8+Vb&Z81_lQ95>H=O_S*xRT q^YZ_bmy-K4{|S%NwquNp3{91JueX#dmoqRhFnGH9xvXk44ofy`glX=O&z`$AH z5n0T@z%2~Ij105pNH8!ku$OrHy0YJ9V`k*iovwB06axd}b59q?5RLOogU)7OE|94E zbb9uZm65TA3O=__Tdh^#lC7G_o?3BpDYGq4)rX)NEcvHw-Yj|`u!qx8t;6R(gJU3n z-3BEM#f;^T5}S-Rh6QSSrzhS1GX02i_FUPf2gOyD_tv+6uWT*8y!c3m`TpICg=)-! zhgZ8No_L_GqO|BpgPJ!>kcqFVr($k#(ZVN8oPQ2&Jj2zHo&W72e@jES1ow?ckBTpE z@Hxy>P}=_V#m~5tnzvsa?VDHr<-)d{KU5Gq;gUC zT)S<5%6J)q9vu^Gak#P6S&YR~t+nuazr}GiPDklg46dvVOVp}z#gub=wH!QJmH)qG zUhrMhQ~Wf;z4()&$C#3soyE`jm-5&D;z`aa-|~FwhfS};B=l0=R-cn;kWBve^|@x& zny}O7r&+z6x!kNleDdSPt7k44ofy`glX=O&z`$AH z5n0T@z;^_M8K-LVNi#4ou$OrHy0YJ9m0?yg;#TZ<#K6G#&eO#)MB}{aCGULcREE}v z>3ZKP^!hG`_}=Q`-J?T@0jDpv%6TtsRT6)F=KpDa|LC6Qmb!x4c9y@@^>!}L%CJm#3=K6dtMEzi z^*yN|zeF>+P36gy1+RC-uJgEQv?zJ{%c~~8zJF0^F_4>YUt47`|1A5@1sYs;?%Zh+ z2nfBJVKU1{O`ktLu4YF^-J%7me|{zZ`MNzKxWN6W?&`;jzkHpoXsqYKtgBl&&tLOI zX2p@FY_{3FLSAl53}uVkUYl~Qt31bR>$U14pPoF6Tm8I0)4pALdHiKT`V1A%*z1Kd z>50`I&*B^n){g>~$?=FpXuivQpa8e7S?#+*ZpMLSq``CB>N5AO&dGnTN zHmY*6yL_L2`j<45uw1dLqg&+Ek1cl938$w>mfyWQ?ciTCfsZ|(KUPM`$lnc3-JBcu z)_&&Mw9M`;b)S4$kZv*me187zH8=CF&3@jVqikF)%PNc)I$z JtaD0e0s#L$3WERu literal 0 HcmV?d00001 diff --git a/mods/default/textures/default_cactus_side.png b/mods/default/textures/default_cactus_side.png new file mode 100644 index 0000000000000000000000000000000000000000..fc479fde6f9dc859180035ee3974c1ffb198136c GIT binary patch literal 279 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s77>k44ofy`glX=O&z`$AH z5n0T@z%2~Ij105pNH8!ku$OrHy0YJ9m0?t7cjsOCj)8$;rKgKyh{frt!3TMn4LOv< zt|(f$KYJm;Gu1G!@61I-zvXf9AtI9No{A>2A9uKQq3#}g%hBS!DoL~7eVVbIpO1e- zN9FFEMpJ&S4cr@V%xX`_@DE*EvCM7@w^pe3xi^t~6Azp?Gw-PY=RX-;gYEa;Y)_QbR|*~0Z(1wU@;{P#G;;;&D5@)xn$9dl-$ gx+-CQ_bKnr;Ov7pP6=;iU|?YIboFyt=akR{0GtPEZ2$lO literal 0 HcmV?d00001 diff --git a/mods/default/textures/default_cactus_top.png b/mods/default/textures/default_cactus_top.png new file mode 100644 index 0000000000000000000000000000000000000000..f9e68df5114b04f48290dc277b9d73f49db941cc GIT binary patch literal 236 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s77>k44ofy`glX=O&z`$AH z5n0T@z%2~Ij105pNH8!ku$OrHy0YJ9m0^@LT~(|m&cMJ>=jq}YVsUzH@Ik=?3LM>) z7W0xzG>*Th_3J>giGrP8W@}*Be{j-fq11y7swOlj&?82G#=s>Bm-_JSD-j z;_&KY%zJCTFfH1*wm;5cNvGO>_%)r2R1cVuk44ofy`glX=O&z`$AH z5n0T@z;^_M8K-LVNi#4ou$OrHy0YKq6atNZ3=9mOu6{1-oD!Mk44ofy`glX=O&z`$AH z5n0T@z%2~Ij105pNH8!ku$OrHy0YJ9mEmA#J7?@1$iTq(-P6S}MB}{eMDILhLmn5+ z&R<(@sguMp++YV7OU5J!qbvda_T?#Ezt%t=EFM7%JYc z-Fol${Q2{vUT@N|sIGoL({iaw3x}e@qHDJ-kDpm8;!;yzufJ4aqKK1%lCgiuT2rNO z_ofE9l*q6PDn5GtJbkUGIy*y;;W3G8w*;7spU>$v4Dw3*c5nXq=W~o1mP{$=DU@-~ zUOUC;*o>MpYo@H)dQ76%(DHd|WQ%}hddxJ}Y~7ZOwT8v-Wf=qn1^0drI(6;VpMY%H zBkmxia+nW|6X%xX>9!Z@U@~09WSc(X03JRsIRX-|NOK3=XVv- V!Pe((85kHCJYD@<);T3K0RWFN7v%r| literal 0 HcmV?d00001 diff --git a/mods/default/textures/default_clay_brick.png b/mods/default/textures/default_clay_brick.png new file mode 100644 index 0000000000000000000000000000000000000000..e36648e48f68ab3c201132839093a18a7387a72f GIT binary patch literal 249 zcmeAS@N?(olHy`uVBq!ia0y~yU=UznU=ZYBV_;yovR>y10|NtNage(c!@6@aFBupZ zI14-?iy0XBj({-ZRBb+K1_lQ95>H=O_S>v7EV4Y)FRuK+z`)S$>Eak-ar)_`gS>|f zco@zHslVWk44ofy`glX=O&z`$AH z5n0T@z%2~Ij105pNH8!ku$OrHy0YJ9mEqu!J$!Cj5d#B5il>WXh{fsT1PNAVeu+X) zoybj3?0aN|g%5jdVLTyqkn>K`;m0&Y5 zGc$S=T=V>#EZZVx!Rc&^E;*Kzm|R;Cv#Uf?`D(Bd!`2^4*`L@{x)~T47(8A5T-G@y GGywqL6F)8h literal 0 HcmV?d00001 diff --git a/mods/default/textures/default_cloud.png b/mods/default/textures/default_cloud.png new file mode 100644 index 0000000000000000000000000000000000000000..24091a37722e5918880372acee3b414c1c2a8d77 GIT binary patch literal 118 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4kiW$h6xih%orFLn2Vh}LpV4%Za?&Yz`(%3 zS>O>_%)r2R1cVuIWMm%-DMK?R$l+YGn2F>IT}Fe#TI*OS3hg+YY@L)(80>;G@tc6-vKZMnIVJUw$& zRQ^wzbUQb9o2Ta_6_x+Fxwkz%x2dT7_w>B2qViuw<@W#E+iq{0v~5!Eq+HKjPZdv< zZU47Tx;-g(TdwCMPnBGiN&hG1-p=*h=BYACCHH@>=WS1wZ7QDsJypQ^Z{J3<&2!r} zWD9dAO@iAwDK{5l?KV$Okj*M8|NmpS{{R1Nw{K6{wk>zkB+uMjmH+=I-M*c>ZJXz$ zNh<&U=ia{Uxow-u|Nox1Z>#+Ouks(m_5Zj1zdh;pw%l!#JSXL<pR;TRCY`F2vSt+dTjOR{>j(5poQu zA;*AjI)lppN!xDcPTJ;~J4wYemqFz=T39o9ZbJ@khTLtp(R6rD+V($p(rwS&Z7QCV z7*ujmy$ebslm2hZy*B|C z?~KP5#uHK(8O@p_3N-f>Kj#aKOHgv%ynOld`aNtFRaO7guchtLQ@Gvm_V#w;N5M6} vzvZ$mViugvw&+r0SJ$a}na0x|U#D;|G<=XdBfyz^4rHmPtDnm{r-UW|JruG+ literal 0 HcmV?d00001 diff --git a/mods/default/textures/default_cobble.png b/mods/default/textures/default_cobble.png new file mode 100644 index 0000000000000000000000000000000000000000..7d044741964a58ac04278550959002890ff6bea4 GIT binary patch literal 830 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4kiW$h6xih%orFLn2Vh}LpV4%Za?&Yz`(%3 zS>O>_%)r2R1cVu6}Dxz^mVwyn!mCM}(ya+XJD$t4-zEpF1e&UgQRsJA=B z92OSlF=@^9*M}blOndtD>C>#OyLRo8>ON{U*UxUgIZtwS_UZ4nfg;kqY!)^)F)=Z3 zzE*9^ovd>6{ddd0-8*(LFuZyDcIL91@4wsI*#)f>;W@l4bJ4!{uXov*njSUq*%>3o zqA1nt=kGsR<>%M0Q$18XCb|RfnG}|J+EA~>XXg=yzQZ(d-v?QVv?JlzWi?9{X2IS zyng-qWyvj*vkwbA1Y8yde5kdT>u*1tczauaU*E2~?{40VTpGm4AR{lo_+(1Z^-`Y0 z8MCgH+6r}^IeV6ujrp>P@ywn?iD{|5Zi|yPO7yw~inw08c1@$}Rf*NI%wvx~E?v6x z_U+qw+fNtH(dc4v{9tqcWr@?m2|B0s_4QZ0|IKqaLE_o2JiGb(_wBQ@x8I(7yY%kr z)vG^#{5W&w%;U$8Po6yaV1j|YJ%7e5J{G2RuahLEd8q8V`|jn-mzOV3erz#$^5m;o zqD>3JR=ZAGvhMZYI{A!Q+jj1(EGSUmIFw=HB(NlG_1=B^o)uZ1|Gep@j_+j_$B1cP z?ZqP_B0SV4Tl5_^=y|+j)heCSP6Au@?)4R5;W^CE;I%Yp{q_6z?pgFXy99=WZoQjV zEF<3O5;0A8s#n*dn)>?br=NysEzOi-P!Qnw^Y^bHOQVmE&y8(+H*QRnIQIAN-rU=p zH*Y?F{`|C5TN|5>MH;7#`X29$>06fRdwIg&zkky<&per;(UlZ=&7f!Z?%iRlT?4N? sf1bWJ?6b}Kn>j{2$r5duv;H$YUtRfyBePV4fq{X+)78&qol`;+0P6mWo&W#< literal 0 HcmV?d00001 diff --git a/mods/default/textures/default_dirt.png b/mods/default/textures/default_dirt.png new file mode 100644 index 0000000000000000000000000000000000000000..7cb9c89a637584b4e53c82a7c6eb1ec7109befae GIT binary patch literal 1586 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4kiW$h6xih%orG$83KGlTp1V`{)6#IWMm%-DMK?R$l+YGn2F>IT}Fe#TI*OS3hg+YY@L)(80>;G@tc6-vKZMnIVJUw$& zRQ^wzbUQb9o2Ta_6_x+Fxwkz%x2dT7_w>B2qViuw<@W#E+iq{0v~5!Eq+HKjPZdv< zZU47Tx;-g(TdwCMPnBGiN&hG1-p=*h=BYACCHH@>=WS1wZ7QDsJypQ^Z{J3<&2!r} zWD9dAO@iAwDK{5l?KV$Okj*M8|NmpS{{R1Nw{K6{wk>zkB+uMjmH+=I-M*c>ZJXz$ zNh<&U=ia{Uxow-u|Nox1Z>#+Ouks(m_5Zj1zdh;pw%l!#JSXL<pR;TRCY`F2vSt+dTjOR{>j(5poQu zA;*AjI)lppN!xDcPTJ;~J4wYemqFz=T39o9ZbJ@khTLtp(R6rD+V($p(rwS&Z7QCV z7*ujmy$ebslm2hZy*Cu zwbgfJW;yScQB!U0ShqsKk*%ZKmm`l&=+VXwG$<#TW{a0<_-QT32tiW;Qr0CSd;M$7=aB^Q0ZOgj1w8F}UBDn{!QOb_|P1 z@QZ%?@}85MKEAwcUL{=j|B1)++1%C4@Bh_&=99jay*sE-jBTd!M<_GlNY2s@ei8KrrB?|Z$XWY-Lj{d->= z%*`p)m>HS(#n!hi*h$j78VJhDITzv8J`B#oLUsrt7c<_AUownmwO@v}v zU(VPyG3tNDKZzYS!rS&VF627#>D$KhpMy8=+&+10?LF2VXWX+lOi5W}GGV#GBgT+` zWifjNI?E?6+_dTMp)T_$rw&VOWSIPP#|e?vlcGK8cV$kdmKoZpy=@Q?Ke@AZuJ&`2 zi|gdCPmSyUwle4G2fmwM+7EddJlHOO|9|3Ak@yl57?S)cU|yN8Su*KV_}u}*yb z$wD^n@b}^^C8m}&Qyi6U*c$f>h)eKoGh3#kzn48Uc+XrOtJ#`$SFZ)Pa|ZbwX5T6@ zJLTH62gZBW|5kdsLtCO?ZAO;4vHXL8Z0WYH33fus2SgU0dHP?fqA2^7rshXb4)ApK Kb6Mw<&;$Vbo%sa- literal 0 HcmV?d00001 diff --git a/mods/default/textures/default_fence.png b/mods/default/textures/default_fence.png new file mode 100644 index 0000000000000000000000000000000000000000..0b99f0eb5dd6b27c9f478cc1eb8a510b59a97ea6 GIT binary patch literal 539 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s77>k44ofy`glX=O&z`$AH z5n0T@z%2~Ij105pNH8!ku$OrHy0YJ9m1i{JIM6bmoq>UIt*47)h{fr%6YcXa2Z*@$ zzkPnAae~O~6&{)zuMRYDX$c822ThzHAQayyYiMX}uu%7As7A zute!-pY;Cc_5BM&@3f`8IyCpa?e}~44SD>+pJ_f9WH>LE_iESnw%2PDug|ur+*SK1 z@x1)q%ZXD2+>EE3s{C1ZT!3M}`YcgxcMGn@m|bu0w)SOp>Gp%u@0qWQ-|e->Ub!!QNn{w~v4e76$CoT!aKK4bbAKDN zRh;n4A4dW`&Tf!=*Ed1S_0*I-8d?XgzZcHhwm^+#TI#1?$^Q+SH4SF$FW78+ZSGaG zxmUSOq|+;JOUpCZ>~@G&yT#J;G^upS!l?;URF5UjXRvr4>o~n@Q^?_$2MK7X6N!PPce`t`3OvkWlynkGP zw`u-C`(3OD=0=I%R7(8A5T-G@yGywpNMdQ){ literal 0 HcmV?d00001 diff --git a/mods/default/textures/default_furnace_front.png b/mods/default/textures/default_furnace_front.png new file mode 100644 index 0000000000000000000000000000000000000000..1620a27c33f54a34d92789d9757050b0cd5a4235 GIT binary patch literal 246 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4kiW$h6xih%orFLn2Vh}LpV4%Za?&Yz`(%3 zS>O>_%)r2R1cVuYA!8LMCYwbM5;X86<__4-t2$CRKmIz3CJ zZ{6m;_c1$m8pDcJ9dphIFc>F4yLL-Ueto;}iSkSb%jcaHJhN>6N@+J3EV&%<{lcZ7 x_+9SRJl7q1F8)7s{Q4VyhwlYpSDk+|PA!dI^e^#w9|HpegQu&X%Q~loCIFicU`YS~ literal 0 HcmV?d00001 diff --git a/mods/default/textures/default_furnace_side.png b/mods/default/textures/default_furnace_side.png new file mode 100644 index 0000000000000000000000000000000000000000..63cb162fe5315f3b8c921c9e09be95c1a0ac573e GIT binary patch literal 236 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7Sc;uILpV4%IBGajIv5xj zI14-?iy0XBj({-ZRBb+K1_p*cPZ!4!i{9Sg)1nOuJgaTkPORve$NOc$*F?|moea~C zd^v1*%;GI0!+j~w+qLG#uf-fbIR`AUym#ejB+CJ%AB78=^g;xeHuD&^{=AcHpq%QU*IvFyyM6=xSOzOrc1)g_CstX+F+>(;wFcHG;w>;8cQkB=OA zeC*iMGiP30y!h(+^*49!yt{w@!^4LkpFaKc`t{e3AAf%R`uqF$Uq62Q`St7XpFjWp z{rk@_3PwX1v5B2yO9RsBze2LFm$lWdN43Ba29w(7Bet#3xP1> zrMq>17#JAXOFVsD*>7|63#*7V9MZeWz`$VV>Eak7aXI+`D>GZ1M8bnq2gVz$Es8mT zGX$7@MD?Az8C+ai81J&gvk44ofy`glX=O&z`&N| z?e4C2xFl#*W?ty5ggRAjN z(_Eq3g^y%ze|-Ak!1o`S`~Ur0%;jd6mvK?Mw@AG(M>x`S&;Hm;X143ng87(lf9c)$ zd_&Lv#MySA|4dkTUeEo@FNQ-&hJGJ5?)X>Ll+AhV^^|89HpYrSxvd;jc4MEX*8Cgt z+9raF+&@bmx}tGe?D&SA|9)t+#n}xb2-IaNzy&L)@@-Aqy4rC(8Rz3jc>X|HYkra|*A-rpqtE%M}o%#hsE zze>+XZjD%X{`Tr8&&&>To!gVk$8mVcq;#eG$Bd=c+4~8+_C0&0ctP{>cH5^b)9vOb zXt&Rnf0poV#jyqNt3NsSsxHvVDQj~-dwANi5q^YWSY8O_FmNLy?*{gSLZ1%7v>8rj}r3rX^KdQ zG%%6cy=cK3FPZBu-%Io!H@Ib5OmmNWQnRBoaNEJdf5mD)-x2V4KQfu~=(;DScQ5g# zXK~IGE%=+)_a=H(aeL;hlJtX0k(+*1x94k@gmN!>@xP#C#yPi;)`Mp@zv$~y@UVDd zHhaype*66j{IdV+>JrNmjrPw;{PXAZ)%;B_1^l`bXRtK7N<>F&TX4&Hd6W!O%=PAN zi{zxrZgSo=5}4Ljad+O1db^1_wvUde-SwEY=~$8PvB{dV6e~T=6K2%>$UFC3U-RLW hqnm5X)@%M}{ApQoKVxczIs*d(gQu&X%Q~loCIC**n-Ks2 literal 0 HcmV?d00001 diff --git a/mods/default/textures/default_grass_footsteps.png b/mods/default/textures/default_grass_footsteps.png new file mode 100644 index 0000000000000000000000000000000000000000..57e063d8cf729a82c24c700bd49a025feece82fd GIT binary patch literal 856 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4kiW$h6xih%orFLn2Vh}LpV4%Za?&Yz`(%3 zS>O>_%)r2R1cVut&6sK)m~s)`qWg!%7ABz zWP$|So}at_`fQi8ddnw$@*wl!C0D9V9Ir~9{n}fxQRQP;_VETkFIFk%Fs0S*hps1m z5Uz6WVbj-*7p`zv8w$IrsX2*F{j)DdZ{ES>cViUQohO?$e+^mtD*0*h!#`(V z&;4qjG{^ntv{kn}qL*qMTjXbb>*wDzmI;hgj3*zh=}uHQci7DPZdLTd=X=tw-MYFk z%2`f=&9zVW)|;?bFSh759$EJM(^BrKtGtvC7p>JyBv4R zh6V4qE`76U+LOHA#1$`!UTEn1zM3}u{I=_20r4l!`#YyDYz>mB_@XlHp73}7qTp`5 z^O^VpzTOLc*;vQsPH}MK$TeMN$_~pFJ z8z*>U%s7-L{8_lBx76+h?=Ksl33XrhGo%}@YE~7S*7Wmykk<6VUmN^R@7T7nN%_R| zkgt(JyCfd~`IdE|cmTR;DU8x*DNH&t}{=kiWxn)Yd7&Et2rT*t4iXN!9~w|L6i z`_J?1?w0&^sw?>0w>={3oJ*t5!!^9|yK)Q@J(eeRWL-Y)CTPBVez%q3895U-231am z7{v)E&D|n|Fwbe}Cs}un+&^EJ T&3(hbz`)??>gTe~DWM4f2*sN1 literal 0 HcmV?d00001 diff --git a/mods/default/textures/default_grass_side.png b/mods/default/textures/default_grass_side.png new file mode 100644 index 0000000000000000000000000000000000000000..4f4f680be6b2e065222a0a43c22edf446a3b7631 GIT binary patch literal 878 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s77>k44ofy`glX=O&z`&N| z?e4d zou`Xqh{b8u6VXMtLl_z!{`YX-^setow8v%dS?8wMlt`q#FgAYE5c}bn(G8~PCRPSx zO%uOn+2a#+PhX35Z)e|k-2cy))9kWsc78bvw>;Rgw!mG?^=d)wXVKWjAC7d?NL2Wl zyUaV>{ZiHc<^DC(s(VhZZnzhskb7>iC8JsRbisMLk?VtR?MdH#%F<@8#%a0R+iy(c zPdUz|c-~;rO_of~uIF;c3wBifpS9}E%dLkD-0%FIY`D9l;834Uu0@(@pp5an^PEEb zH|ILsXfxO?ENd-mX;xmY8YOkeeUWmzZ%=P$-6AJPOOxheSFgD*^*^9Hr$kHHPH>6zIMhh<%ctSEB=>SR}XCLP9zbR?^@$>ro2o=HAzh!Puym2UXx2;j1 zZ;kt+WM1d~JfAJR%PxJvK_&ulX05&rQ=W zb6%3%_^as2=eP6x<{Io_d^|&ImQ(O`(_L&Ub#x9pmpA!u-)<6lth@F6pFd6d^>07e z&Nx@I=f(PZ{{q8gJ4%Xcd5amB2F7#i=L0U9*v4M{G z&xem&o<8qdetF{Q)rOt#geL$5$Ri85QUa%|q>KGK zb7Y(2Rkrg#`+~y_KB*isuCV;Pa_fPOHQ(B0->*~WQJ(yJcY4qA_GytaMzZ~uIoxuW zb^l%nn*QK6V|e~DkyVRxs&%3-nTvJ*Wc^;hjOAQ|qps(q|A$RYKbkB!ry_iQ*?Gk; z;!mvGmv4Fa{rpMT5iubjnq`K^HuxBUjo*-;UFOU|*(eOJI) z5X--7QdWjXIcr<0Qf}kVZ;vHcUlmMF5jw(mbluYr5euw1nm7)x+Yz6;a#maU`{b_R lO>_%)r2R1cVu{O?ua>a~=heD3I zzFM?!woXf4%rAl3MmvZ5hnIR^f1I?2hgH1P@RrGxmplt4SBdZJY%w@|;i$j!<{eMw ze4an~e~tOn1M){YRTiDB*mCd9lu2h6-GA+qUYydg;{I!$X{#+J#$I1(#Jy*#=F%r6 zX4`!Y=br84;MEYE`0tWX=Ctjz4(+z6uc^A%7I=G8wC~5y;W@LLq`#V+mY+W_+P5){ zH?1RMV@&Shj*cmlZX3MXMhIS67uuUOXaEs zAKK-dmZ~Hiurix@?%A)y^K0Kv{rx+U|7+6DNymjFBu%rTznS&)NJ+Z={q(BJNG_DA z{(z2wo!^pNt~pC3(;BBLT<}_N@R)z^y4MY+YzJ-qZi_@k{+R#Etmnf-i-`#xzJC@j z-(PJV;3ef|`(bbMo%{Fh-oJNudE~sb$_Lf6XMa%mF5mS1etpZCLsr!bv!x0b$BFE; znb)P%FMM;`o4<~?mQ6Sw{Gd91U)}9HExD(|yiPs#w9oD|IV~tG*tS)7w?@%~jlPUw znbV|AFWui$CQ!WC&*f9aC%tp}>(>Rk3Dx%oD%ZcrY%rGWFYtY8>VHf*?V!$|h3s-? xlJ?#VZCsIWMm%-DMK?R$l+YGn2F>IT}Fe#TI*OS3hg+YY@L)(80>;G@tc6-vKZMnIVJUw$& zRQ^wzbUQb9o2Ta_6_x+Fxwkz%x2dT7_w>B2qViuw<@W#E+iq{0v~5!Eq+HKjPZdv< zZU47Tx;-g(TdwCMPnBGiN&hG1-p=*h=BYACCHH@>=WS1wZ7QDsJypQ^Z{J3<&2!r} zWD9dAO@iAwDK{5l?KV$Okj*M8|NmpS{{R1Nw{K6{wk>zkB+uMjmH+=I-M*c>ZJXz$ zNh<&U=ia{Uxow-u|Nox1Z>#+Ouks(m_5Zj1zdh;pw%l!#JSXL<pR;TRCY`F2vSt+dTjOR{>j(5poQu zA;*AjI)lppN!xDcPTJ;~J4wYemqFz=T39o9ZbJ@khTLtp(R6rD+V($p(rwS&Z7QCV z7*ujmy$ebslm2hZy*YWV2~_vjVN)>&&^HED`9XhN=+=BMX)~O$V z^hl?^W?v1Pt;}_ospd0k_U!dJcS-2zGqtX>^ZrWxy|eBd6T_-K2en0xK2vM6<7L>i zLrSU-ey&CY`#_-?Yg#7s4}kX^r`yxfrcz(*;DfQb(!_SgAWKiO8=UXbZs zdecNH$3r9cSy`#rmAN^8cc!~W9MjPibdhU1arjrU{+gYNukY?vzpGR6zVHx7*IC~! zrS0$6H{DcQ#9_43D7GhMs=1F<_~LcR-tGdGH4!ZL3w`JGg>NZs-?;R1Y(`|%C*3Q% zcW1oji;S|HSbjoJVN&ynEs~aOsZ7FZu#qP1y(6E>_qvRj*0m)q;dV4Ur{If^&rmHcZ$t<MqlT(%%u=JQv?nn(Y~U!m^{GZ*8wCLyyzBL<5q4{A)+U>t(3!*Pyd|j(CDMiW8Y;xa@&d6;mr_|~@T-$rEJ?m83rTy0q zSTHwyy}S9sv)9q_SN-+hullyP;Zj+hPrzD{k9!;bZ`ig|;-t#V4&m7$^HnCz%-6F% zU~ywo?xeFz3~TfseE9Lm|LMVkmamt2?l&@x%1|fRkL%$cM1wIIM4Tf z*VN~9j&tYCmW7*Nwx^{nW89Dv{8VXg?Dq9{BtAJV_^+pUG1hB+iqOdie_k0rdSTwN znWNE0$Z_$#MO)_bvzFKHTKtNmk!7mSk*jm|iEr3tBp)=r`Xg)Xyd~v=_Y(^b literal 0 HcmV?d00001 diff --git a/mods/default/textures/default_jungletree_top.png b/mods/default/textures/default_jungletree_top.png new file mode 100644 index 0000000000000000000000000000000000000000..2a9b51373d939d19e3486f735761bf57c88614a9 GIT binary patch literal 507 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7Sc;uILpV4%IBGajIv5xj zI14-?iy0XBjxaFry=H7TH!EXcV4Ume;uvDlTRM58w^N|VvHJH<0~}j)cU^fjn`v^v ziIWwMyqvB74^5u7OulZp0azx22(X2XqRVB%BHgD0o@3wDe zzq5UQ=X34%-Or`wz5a6gx!hIn_T5q4hr6p;G_}2!PEnuNvC#RI&Gmz4-iEA80-c_wiZ(fBtjb{@r_Zox{&N$xIfr`u#qC`z4sb-f`Y{E#jc@N5O-xes-u~TsT5YWE+vkVtWgJOjyBU5EQoM|NJWj!kH>7rhJk(;KAIGq_}#WAz#@srFk8^wilMR@?ME- zja+tFg{87M@%nrpn+u6dGVgO)X2{RdXMFjvxyq0CQtaBLYC-#VzuUJU;>4=bBR6I1 z)C}1Uq#5i=lzE@KVdqpfg}r4>kvGpzjI);1>`_lT)n8apwz^{7Vfp@&gZmG<&MsnL PU|{fc^>bP0l+XkKn!?{a literal 0 HcmV?d00001 diff --git a/mods/default/textures/default_ladder.png b/mods/default/textures/default_ladder.png new file mode 100644 index 0000000000000000000000000000000000000000..11056359df244d768e3aa827f5de09feed10aabe GIT binary patch literal 395 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s77>k44ofy`glX=O&!077f z;uvCa`sk#CUQB@^ZTqX!W#+O?QpgPS@GcMB9d~3p2hXjYIak$~%pL8V1g;uySzpSs zFx6z*3QNCpFZLGSb_qG;vE{>k*&jcCoPT&A{ngY-E2nk0Nv@pMy(~_%w(wj2f^C}< zZLX`OdkZo5DNFW=cuDVSo}s`|_aT_+|JL)b6An$9?&vi`quI~F>qK?%k1Y=#Y|%_x z`=NH)ALC$Nzi-=mf;d;RihFbXi953>Te#P>PJhvVGY|1Qrq(TsTYgV#6-e;zP;cAl zwPDGD)14&;AKpAXC%<6N?#vi>qaKq;_f6a0T>9WVrzhpdy3F#bmrb|b*l$njIVRh1*Oq+w(;^M>AvV?w3ugXR8-Q zp49M*IN`OfnlW*Spp$^xET?;3;xe&+-tyZquyafh%*@K3%)r3F;OXk;vd$@?2>?ev Bt1tin literal 0 HcmV?d00001 diff --git a/mods/default/textures/default_lava.png b/mods/default/textures/default_lava.png new file mode 100644 index 0000000000000000000000000000000000000000..cb02ada1318a66f6af28e2095b73d79b103080ed GIT binary patch literal 357 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7Sc;uILpV4%IBGajIv5xj zI14-?iy0XBj({-ZRBb+K1_nlUPZ!4!i{94BdnYy<2(;Q~dziNHoydHkwS(^ttKvk> zrk;S<81{F~a}FpjW-3SsyEoNjU+wz0cInw)qzs|5;ULrwQwfI`2Iwf{6x{3*UY!PC{x JWt~$(69DE@kk9}C literal 0 HcmV?d00001 diff --git a/mods/default/textures/default_leaves.png b/mods/default/textures/default_leaves.png new file mode 100644 index 0000000000000000000000000000000000000000..7a25126e94888ac1135b4640d084815103410a65 GIT binary patch literal 1689 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!to83KGlTp1V`{)6#IWMm%-DMK?R$l+YGn2F>IT}Fe#TI*OS3hg+YY@L)(80>;G@tc6-vKZMnIVJUw$& zRQ^wzbUQb9o2Ta_6_x+Fxwkz%x2dT7_w>B2qViuw<@W#E+iq{0v~5!Eq+HKjPZdv< zZU47Tx;-g(TdwCMPnBGiN&hG1-p=*h=BYACCHH@>=WS1wZ7QDsJypQ^Z{J3<&2!r} zWD9dAO@iAwDK{5l?KV$Okj*M8|NmpS{{R1Nw{K6{wk>zkB+uMjmH+=I-M*c>ZJXz$ zNh<&U=ia{Uxow-u|Nox1Z>#+Ouks(m_5Zj1zdh;pw%l!#JSXL<pR;TRCY`F2vSt+dTjOR{>j(5poQu zA;*AjI)lppN!xDcPTJ;~J4wYemqFz=T39o9ZbJ@khTLtp(R6rD+V($p(rwS&Z7QCV z7*ujmy$ebslm2hZy* z#xZS;jA=m!#MbmGbh=%1$-QxPN72P&F5+r=vv+*DU-0l+Z|CV_S6s})yrLS9ge}l& zU3Q0^E&W(xTe1E9%38TyU)Mf)#q;=Ozu4SAlEsq*?EXE{3VZkV;*X}@>DJFbR5|?Q zis*L_+$WV#u6wj{uk+u-RxegRReGQEWkI@VY54P<|5BLat|~Q)?B3V!_{HJE&20}D?0!x>eb=3JM<#<7d&n%NZ{-K% z??@f}80M3f?Ukl3J$=)3KMWZKnNgUtZwthLL6>5#nbDxXl7U{qK z^6IRdiE`^15#@Dz_^LkiK6$f-eQoyT$it6UuofND^V}}0x1Y1->chjZ39=9|m_MVqZTTz>|iSgvogEDM9vP(1D&Io7vQ*7YPOkEi0eU*N7?K%MV}Mru1RJ0 zj(^TMkuTgeXO8eKeW$AT-wgP}M9tnA?>;Wu<(ACw;FrO>_%)r2R1cVu^Iavi>nF_Gnshbgk?y^_hZ7RAU)rwmoviDr`R^vP+2S0} z)gfX2zSnuTERDFi>;1_~HR2PFdS0s&Dw^6KY{&5WyqRi&;KFJK1_lOCS3j3^P6IWMm%-DMK?R$l+YGn2F>IT}Fe#TI*OS3hg+YY@L)(80>;G@tc6-vKZMnIVJUw$& zRQ^wzbUQb9o2Ta_6_x+Fxwkz%x2dT7_w>B2qViuw<@W#E+iq{0v~5!Eq+HKjPZdv< zZU47Tx;-g(TdwCMPnBGiN&hG1-p=*h=BYACCHH@>=WS1wZ7QDsJypQ^Z{J3<&2!r} zWD9dAO@iAwDK{5l?KV$Okj*M8|NmpS{{R1Nw{K6{wk>zkB+uMjmH+=I-M*c>ZJXz$ zNh<&U=ia{Uxow-u|Nox1Z>#+Ouks(m_5Zj1zdh;pw%l!#JSXL<pR;TRCY`F2vSt+dTjOR{>j(5poQu zA;*AjI)lppN!xDcPTJ;~J4wYemqFz=T39o9ZbJ@khTLtp(R6rD+V($p(rwS&Z7QCV z7*ujmy$ebslm2hZy*XSI|K&Zd zyAJ7u%AT`rzq>BYOv1Ebz2~O)=QStvEKYgC6LIXo-RsBx?C>bs&VKs#F2>kC%kDYM R&q6@%@O1TaS?83{1OV>QzOeuR literal 0 HcmV?d00001 diff --git a/mods/default/textures/default_mineral_iron.png b/mods/default/textures/default_mineral_iron.png new file mode 100644 index 0000000000000000000000000000000000000000..51b15d95da3315794e1bd43d8a47b0de6f1609a3 GIT binary patch literal 1614 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!to83KGlTp1V`{)6#IWMm%-DMK?R$l+YGn2F>IT}Fe#TI*OS3hg+YY@L)(80>;G@tc6-vKZMnIVJUw$& zRQ^wzbUQb9o2Ta_6_x+Fxwkz%x2dT7_w>B2qViuw<@W#E+iq{0v~5!Eq+HKjPZdv< zZU47Tx;-g(TdwCMPnBGiN&hG1-p=*h=BYACCHH@>=WS1wZ7QDsJypQ^Z{J3<&2!r} zWD9dAO@iAwDK{5l?KV$Okj*M8|NmpS{{R1Nw{K6{wk>zkB+uMjmH+=I-M*c>ZJXz$ zNh<&U=ia{Uxow-u|Nox1Z>#+Ouks(m_5Zj1zdh;pw%l!#JSXL<pR;TRCY`F2vSt+dTjOR{>j(5poQu zA;*AjI)lppN!xDcPTJ;~J4wYemqFz=T39o9ZbJ@khTLtp(R6rD+V($p(rwS&Z7QCV z7*ujmy$ebslm2hZy*7L^B5yHgvqgLR=f{HY>whpFWq19z_QMvxtv8Pd@&(@$ z$dixQt9P}lQ|!w5Z&Tjxw*P!2dG(aDT7kam|4xSsDR{fBkP|q^vj6YCqb>LSFJ~1S z?mKetZ+z$SNjvVwiMVrhJ!N9N>bpAh5&z#wFL-v@Sj~U3qJZUq_Pur?_DvsqI;5oT zRy6IZJae@8w8p*#{oAfCtGJM2Cbzu4s43B9L;Iww$J%_Bi~s29VW>E4G41Ccw&#s^ zPK6ehzg9o8b^HAk6PZ(2e?7YyfA;kHWJ|q^>%t9Zt24~FYc=b5^SakACUgIuQe-~b zpL9}CZe`b+i4V^_JtzJ~O44Q(!-4mqnI)`I1}&MqH}389%~A8x5ps+4I4c+unsYl% z&+h#3`!$+;YeW*)drmRTU7erI!lO5}ZVE$uc4naFbc5ZtQ|3iFcQ5V8sngSa5Xs2W z@GqWq$z|@x2PM95t??6T>M!C|jEk%8oVrwW*I&8MA6dlZ)|{??_VC)7;HF03pNXu~ zPrH81n13T@lH>V>$SOOw>e6sD`@o)O%eHt%-L zFlsVxTJSFY!gkJzKN_7+ESwk;^Z{%@bg6h29=)_m^YM@;y)rcKrkzvp`Q=0Q8wD78mx zv)2c{yHa`ao^|td(_<%p+qahTpYA^WY4`hl4pph{Bp=`40)0+Pp&ma~lc@idJ8s>O zm~HZ4o25W;@#h^y)$D8T?{Qpy@6kl=?i=44qSm@7Nh-f6e)w6-CF!!oyI`*V^_{=F l!;hAIl3eKjlheoVlX^?ByLg0$tSKmWc)I$ztaD0e0swTG1C{^) literal 0 HcmV?d00001 diff --git a/mods/default/textures/default_mossycobble.png b/mods/default/textures/default_mossycobble.png new file mode 100644 index 0000000000000000000000000000000000000000..fad1b33ff7dadc8147da9e75df67b303a14ad5a5 GIT binary patch literal 965 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7Sc;uILpV4%IBGajIv5xj zI14-?iy0XBj({-ZRBb+K1_tJIPZ!4!i(cD_zCO{c3=RADh23NNvh|2)ki(^kmyCi- z|9I%IG@p9Jq}&y(CLwII;mwAE56=}kml+z)QBb>l_)gF15R7dU3BDCqYn zZF5*S<*L~2sbZ(H7rw7lcxPRA{Qc#vTef7RZI-P6BzIGH#oDz;-M^eEcr9+WIuZ zi|xH@^jKHs*9kQ^oZxSGFiGmB51WRDhQj>w%AP{20v)Fd6`IX`RP$O}L~fR(l+>Ze z9|bsma<=@r5@Pw|%i-5A3}q{Yb{D>y>-(qTJGDqUt=TVuV23yX3UwBl9tw1Vs!S=BPI7B zw)m9Bckl8_WcR+E_2;%x+b$lxl@m)WPMX`rkj8ApvRP2qLb#C6nqW22-@B9>MC^0&F;snRX z3YotbtmP|W^u*m33pxrINcGCRTj?T{c&Xh}F5=LXuBT^o&wg?{9xcKtbnt{$d$rco zsZ(F@bAPuzctYzT`|K&xZH}G2J^%Bko!m>3e$TQ0E%a41FHgVr>@pd}Y5V+Fo;;@QS7O&xU-_o2kbp&6<<7w|73-#7yB3xfUdQe*Ep^jPokbc-nqmy^&h!;uD%@iw cZ1>3i@|(sR{z9x33=9kmp00i_>zopr095nFeEf{y)b^Kl=HN8~pz$77t0;M3wzKW|Wr%E;|&*U|nBar-OEsOsD zbx$6x@7?&$?}5vti`G{zF7el5nsn%j+cr(14V6B1T^lX>Od z1MPR!9X`izIJjx|Wc7H=9e0#pEpvAut3K=jikOc|S*A@4)-{!XGUfw7$PSk}ufL*$_F|LT7ra z)IzsMh7X_dA3ZfOh-*^V;tguH3YKYYo8&rLZ+2XH&KEn;Wv!^Oa>~Qi^{KPe?tD*a zzw6tb#1^tdeSw|G_GLxd?;kLV@A%F4SzYx^sbzZ8?q;Q}7oW|MY)Ef#KNXC-c^DZBU$aC%zVgR3rO8G~E0-bm_|v)F7SI3qUO#hG zCpY;0#KQdfo7P!w-gx%a*V_;NSql0yhaKY!4GDOYzDT|8%c0!g+RS&>w;s-H_Hei& znQt9@w)#NSR?hO{IVqb21E1^hrL}EUe>eT@&)ogXy6U6SZR7uNv(}#O2=l)i!oa}5 N;OXk;vd$@?2>^npt*Zb4 literal 0 HcmV?d00001 diff --git a/mods/default/textures/default_nc_rb.png b/mods/default/textures/default_nc_rb.png new file mode 100644 index 0000000000000000000000000000000000000000..7ebc9930d42866f70bba6e07a6f7c4affd0bc3da GIT binary patch literal 203 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7Sc;uILpV4%IBGajIv5xj zI14-?iy0XBj({-ZRBb+K1_p*)PZ!4!i{7P|14SDY1Y9mknobN`&^4oxsqBJJnqgCR zbFIAf{sXBG8t%HS5U3C0I+J^a;nXAT`2y?=TbOena6EV4@i~!A;hxg|Bkt=MZ#aZ6 zIdE+uBjb$)>n#foTRSjFUr4`oe=}RavQtT(zZf4Ts++F4S**suz`)??>gTe~DWM4f DU57*q literal 0 HcmV?d00001 diff --git a/mods/default/textures/default_nc_side.png b/mods/default/textures/default_nc_side.png new file mode 100644 index 0000000000000000000000000000000000000000..f954045fbd9ce5fbc95a8da665575ed0574d4eb5 GIT binary patch literal 260 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7Sc;uILpV4%IBGajIv5xj zI14-?iy0XBj({-ZRBb+K1_p*@o-U3d7QJ(WZ}T2D;IJuBTXltZQs6I%h4)l)-MX%H zN?o2Gw$x0`&u>$Uz;os!jLsqqzwZgOGMxBSlfZxIVUM4Bg`KJ3<-%WuF`sHpl4DPw zSm-%@wXF6O`4BE&Mg||3*&I6=x;y-ftX?r}Fg^N8LVnMT11=}S)|D=q$l@b(ZEC4q zeA1zy_ZNfCO@A>-=BfU_JsZAG;nsg4o$p?+o$Iym@*-Ffe$! L`njxgN@xNA)Ae37 literal 0 HcmV?d00001 diff --git a/mods/default/textures/default_paper.png b/mods/default/textures/default_paper.png new file mode 100644 index 0000000000000000000000000000000000000000..ae5c06bc6fea52d8d78c85592b97405682bf0e9b GIT binary patch literal 242 zcmeAS@N?(olHy`uVBq!ia0y~yU=UznU=ZYBV_;yovR>y10|NtNage(c!@6@aFBupZ zI14-?iy0WWg+Z8+Vb&Z81_lQ95>H=O_S*xRa@%I1aXUixn_P$8kHLI=1MY7?vTZyxT=f#e*0&YR3i=+>^tb4YsO^gi$(%9J8 z+RXFsncT3xA-MMAgGOhb)#2-0zdB`9eE7esO{!^DqSQtI62!s4z`)??>gTe~DWM4fbF@+9 literal 0 HcmV?d00001 diff --git a/mods/default/textures/default_papyrus.png b/mods/default/textures/default_papyrus.png new file mode 100644 index 0000000000000000000000000000000000000000..bf0dec7fe2f2048a4f521c8efce41fd775ef1339 GIT binary patch literal 366 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s77>k44ofy`glX=O&z`$AH z5n0T@z%2~Ij105pNH8!ku$OrHy0YJ9V-l8;e^PDsjDdkcvcxr_#5q4VH#M(>!MP|k zu_QG`p**uBL&4qCHz2%`Pn>~);kKuXV~EA+`zS-Eo zz`)=}#S6ntF~2r^wLf!Y(&gClRUC_(z2&$4^M82rV1RBh?`mz%V@xJJ{|@izy3V?T>Ebcxe#fg$ z4Q`1AFAs;6*c%`C6H^rV$NuET1?msZHcZiz;FN06efsdT@zui&43fX1pO-bBs$pPY OVDNPHb6Mw<&;$Szl!^HO literal 0 HcmV?d00001 diff --git a/mods/default/textures/default_rail.png b/mods/default/textures/default_rail.png new file mode 100644 index 0000000000000000000000000000000000000000..18176d9f3ca96ec9d6e4f6d41ab7a370aa93afeb GIT binary patch literal 507 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s77>k44ofy`glX=O&z`$AH z5n0T@z%2~Ij105pNH8!kF7R}546!(UcJh92nLv@&{okKizD_yl;<4d^(+PP26D^e+ zODBsk3TAKIBA}v~H2s)}=VT|vrX?IJb$QrW98dHg3*8tX;2IV;vgp!C!u-`_>{%T`Vm=1O?zJx{&X^RWHi2U}v6o8E4j5^!BixOqx} z@#;&S*UI<(x4U(Jox)Fd&4%yitAiii?#x?V>hoKc-<{)6kW2S+j%>F5B9pY$_w@(! zzkPf%-;=Gn-Sw7K!`)^jN7J8qaWDUUoq zHN?sJ*wm6c-%k8y%$vOA)8P+abv~Z8-J90!6^*EiH1)3C03SR3mtiJvKrFb1vY1Y*r8-KL=F)%PN Nc)I$ztaD0e0ssrT+gAVp literal 0 HcmV?d00001 diff --git a/mods/default/textures/default_rail_crossing.png b/mods/default/textures/default_rail_crossing.png new file mode 100644 index 0000000000000000000000000000000000000000..98464057704a84ab9dfeac63f13e9b1af8d6f1ae GIT binary patch literal 555 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 BmHhw! literal 0 HcmV?d00001 diff --git a/mods/default/textures/default_sandstone.png b/mods/default/textures/default_sandstone.png new file mode 100644 index 0000000000000000000000000000000000000000..c4759b4d0289346f97ba69c44230d34b409c2a1d GIT binary patch literal 772 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4kiW$h6xih%orFL7>k44ofy`glX=O&z`$AH z5n0T@z%2~Ij105pNH8!ku$OrHy0YJ9l@>P;4N$N1XJBBO=IP=XqH&(}V0O_h3kHS+ z?`eN{>Kc3%QoNnGOfr{Wmj3d6UZMZxGf!B2t#8jWrIdn-G2Gw8z1jt(D+bcQ}^df=KkBC*Gcyumq>Q<2n~&#_SBUzv{ZnleEatF zZF_I$t$r++7+PCXb45VutY_;6rLRwqs@!rr{P}an=9w{mk1RYNANjoJVn&ID+{C<$ z&p&;gS7u6FOgn6~tRZjXj)grB15a2_dwTNj+iI_uW?d~)CTukG43^Cf4gKinv;2Qd zeC*n5*$j=3zicvz))U`-_g#U-9Lv3N>)ADzZcAMkrX6d}<9y%kwu!givE-hQSzDL& zth@et_wMiOT_Z!Mc7+_-owvVV&~004(L1KAflD;_*9$oLUXD6ebN~O}-<2Qpc1G>J z(00gx=a9k&ndi?h>mQS_o;z>;Jbit=seapfIPWR8#2i2Qx#og=N@Q2mwIpBTl3D|f zoZD5EKcD{0lR2&x^n2R;Eql&zJNY#`I!Ig98n^Zs9ySp;_Ok44ofy`glX=O&z`&N| z?e4JP9~%?7cj6JSx!H7OyJgz zSH0m6B&;XOR?3zv$%r}Tjeaa+Zzc09Ay(`j zd(_Hu11W9M^BUnBETb2NI9L5eWOBy`9E&81AiyrZP;r+3kb^q4~qAY?F8$P8y5M*FrVDNPHb6Mw<&;$VV C^wGEg literal 0 HcmV?d00001 diff --git a/mods/default/textures/default_scorched_stuff.png b/mods/default/textures/default_scorched_stuff.png new file mode 100644 index 0000000000000000000000000000000000000000..9ced2fbe89e84a0abf5ca13f71c10a0b3b11170a GIT binary patch literal 233 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7Sc;uILpV4%IBGajIv5xj zI14-?iy0XBj({-ZRBb+K1_p+1PZ!4!i{7(Aw|N^Bc=kx8CrU3%m7ccJUaVj2!iQ90 zr^Y+Y%n!~lom|)Ll3BBU4pYMIlOi=fAyZ{}=IGoMZIBXd{JTfxa{^CC8{e+VMfdi0 zTv)gvX{GPZ)z$Y4E=g@Wwjk*7F5x9tOqZ+M98qYlWvJS;YO{IJ(;$YV{|-G*blK-~ j%Cl78x&8IeRy{$3__d~{M>a7qFfe$!`njxgN@xNAKI2qv literal 0 HcmV?d00001 diff --git a/mods/default/textures/default_sign_wall.png b/mods/default/textures/default_sign_wall.png new file mode 100644 index 0000000000000000000000000000000000000000..06eac1ee902967573d7036eadac70fb849dd4800 GIT binary patch literal 489 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7Sc;uILpV4%IBGajIv5xj zI14-?iy0XBj({-ZRBb+K1_s7%PZ!4!i{7`ByuGCZ8Cv(x_L+1t#mKO;e}$-aQnUaU zt6+BrhgY}W+jX|7lkkvf!yylbB^8fS4+y0uWffSRGdq}Bp1I)2rH0PO%%=s* z9$h&gyjWw|qUsM%)y0_g=W##HuAjFe^7)QUK7UjKHa?!ao?AI3p;xPWsgF&bdcRw! Uz)$O$3=9kmp00i_>zopr0IR4^OaK4? literal 0 HcmV?d00001 diff --git a/mods/default/textures/default_steel_ingot.png b/mods/default/textures/default_steel_ingot.png new file mode 100644 index 0000000000000000000000000000000000000000..f6c9414e781fd31cc2a437620e2b6887424b6b59 GIT binary patch literal 207 zcmeAS@N?(olHy`uVBq!ia0y~yU=UznU=ZYBV_;yovR>y10|Ns~v6E*A2L}g74M$1` z0|NtRfk$L90|Va?5N4dJ%_q&kz)@xtE9S)m9Z+#s^7>q?~$OA)Y`3ILha7*x;vT6yxC+Q%fP_E;OXk; Jvd$@?2>{7qM1}wW literal 0 HcmV?d00001 diff --git a/mods/default/textures/default_stick.png b/mods/default/textures/default_stick.png new file mode 100644 index 0000000000000000000000000000000000000000..2d31797f00678eaf60a7c84536b20b3e30d743d1 GIT binary patch literal 182 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7Sc;uILpV4%IBGajIv5xj zI14-?iy0XBj({-ZRBb+K1_p)*PZ!4!i{9h}i6Vt-VNdJVtUXmPF~2qBtp9vFSHWZz z_s{#P??3$2VZ<;!Z4u9b>0C2N@ZH?R+e!KQJj{U|?YIboFyt=akR{0LCjd{Qv*} literal 0 HcmV?d00001 diff --git a/mods/default/textures/default_stone.png b/mods/default/textures/default_stone.png new file mode 100644 index 0000000000000000000000000000000000000000..cad0dbe2b428e955f6a345baccefba3c5428dfeb GIT binary patch literal 806 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4kiW$h6xih%orFL7>k44ofy`glX=O&z`&N| z?e4faI8L5>X*rX?Cb!F++uP1-8)y~&DYsSC!?5!Np zNIe77WL6t~0exAU|KIKZcAP%#eY{Y_RnT=};*6-Z-#&hP_`5E0T9d*BlU~DrzkYd5 zQt3+$6j|xFeDnVO{Q^mm*GlgmObA#R5;0BHv&d-XpFe+gth@cTO!oLi6J95eufP8; z(qLfVSg6sZ(6TL8xg{i2)KySX<+Rc9!peES_ubFh>M<>Ku|`#GZSP}?u0?K(C#KF^ z_j=xQUN+`g%RbvI&#X#MfBxXXgO@Kmt*ot;Ih-zUDczvct-x{rJ0pY5d3DdAwPBo1 z36W(RBTS@tjeLXq9+$-4zkRz|K+Kg<@rXonPvt!Q(~}HYis!v;0?^S9q#eKpH&zI&j{+&ObNnhHuwr!IT>@nd12 z$Rw4s&p)3`Ns7F7|Ni|PGi8pX>gsB%xl(P8U#n~#1x$Qjmsl}0q-~B|eO1JDWA5z7 zJ5)Spoqblcb4}Rl{QUe)I>O@O;@K0we=ooPy>j0A>#ujMGv+z``Oo9Wi&Z>b1J|Ut zB{n2V%%4BM@3D-mtRu(#`SVY2nv!aHdeiUU)lCW|vGV=L6D8OjCoI!EvB@V;q%F~H z@x_-fU(V9uab`G>wYBTju_s-77W=iVH%qWSrY_7uw zHs_6fCofv@v7*Ot*{{F*o>#gC-nn-#FE_VzckK02+2aQ#wnyon|IEkFKmD|-@8##u zpI?3{vSO8%r;z6)X=&-odEr{3u7MttS_I+Xrs?@$lhsZ`ix8$)(H#@3=E#G KelF{r5}E+zaAe~E literal 0 HcmV?d00001 diff --git a/mods/default/textures/default_tnt_bottom.png b/mods/default/textures/default_tnt_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..8ba2fca0be5b58ab656f61743204358e8d8152f8 GIT binary patch literal 161 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7Sc;uILpV4%IBGajIv5xj zI14-?iy0XBj({-ZRBb+K1_lOaPZ!4!i{9jz#S1^qXXN6$yW?QO@`VQ-xaM~@Ha0d| z#(*%Ro+F6wbYRBu10UvZFuK#w8e-qyb}&PN=du9|ECvP!22WQ%mvv4F FO#q!kFgO4J literal 0 HcmV?d00001 diff --git a/mods/default/textures/default_tnt_side.png b/mods/default/textures/default_tnt_side.png new file mode 100644 index 0000000000000000000000000000000000000000..d9a2bc4ebee1e8046f98d7fd48deb545b7aa4896 GIT binary patch literal 186 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7Sc;uILpV4%IBGajIv5xj zI14-?iy0XBj({-ZRBb+K1_p*0PZ!4!i{9jz#S1_FKh-PE0|M_QBqZLLm`Hd$G&T(2 zXlrEb`Tzg_e}7SN10$nDhCTf{?Y_KSj0Wur)*O+FdZrbJAN>FSU!v{77bZLB4~$*R h6AMi=gYy^|6fW8PHmII&%fP_E;OXk;vd$@?2>=cuH*^31 literal 0 HcmV?d00001 diff --git a/mods/default/textures/default_tnt_top.png b/mods/default/textures/default_tnt_top.png new file mode 100644 index 0000000000000000000000000000000000000000..a84ffc9af486b0869b64c649700eafb6aab959e9 GIT binary patch literal 264 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7Sc;uILpV4%IBGajIv5xj zI14-?iy0XBj({-ZRBb+K1_p*zo-U3d7QJUDALMOO5OAHptF>YY*SR=fpEpfnJ-QL> zo#E%BS?}(cp4c3j_+;CACj0pYXP#WHNcL+f=ZHvNaZ%U7{Ci39f77gz?n5F>kE>Gt z9y>U*w2`-9lUvND`b=A3jvUcZ! zDb1c~6CPz3O$fU){o!$TRrZfBe;cK24mjg@#-THb???Ck1q=VN_VO>g7J2ZIWMm%-DMK?R$l+YGn2F>IT}Fe#TI*OS3hg+YY@L)(80>;G@tc6-vKZMnIVJUw$& zRQ^wzbUQb9o2Ta_6_x+Fxwkz%x2dT7_w>B2qViuw<@W#E+iq{0v~5!Eq+HKjPZdv< zZU47Tx;-g(TdwCMPnBGiN&hG1-p=*h=BYACCHH@>=WS1wZ7QDsJypQ^Z{J3<&2!r} zWD9dAO@iAwDK{5l?KV$Okj*M8|NmpS{{R1Nw{K6{wk>zkB+uMjmH+=I-M*c>ZJXz$ zNh<&U=ia{Uxow-u|Nox1Z>#+Ouks(m_5Zj1zdh;pw%l!#JSXL<pR;TRCY`F2vSt+dTjOR{>j(5poQu zA;*AjI)lppN!xDcPTJ;~J4wYemqFz=T39o9ZbJ@khTLtp(R6rD+V($p(rwS&Z7QCV z7*ujmy$ebslm2hZy*=it$z|%Va^3wKs%iJ{v$cBhWKy>$!`r>f60ESO@&dRx}w zd5}`_8NC&f#_XAE6_@Im_#UwM!ozU>UGNh+80%FuJGUVvn)G{FTY$bP0l+XkKT!?2~ literal 0 HcmV?d00001 diff --git a/mods/default/textures/default_tool_steelshovel.png b/mods/default/textures/default_tool_steelshovel.png new file mode 100644 index 0000000000000000000000000000000000000000..ed8413846005dfb5d02ada350a4e2c088c566cc8 GIT binary patch literal 216 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7Sc;uILpV4%IBGajIv5xj zI14-?iy0XBj({-ZRBb+K1_p*IPZ!4!i{7{AHgX;@;Awq$|9b3eL8q)zJ!ZA)6dwPD zOKqCjKXUETYPaOL7`v)@k5|)o&Vxr;@&iM2=X-1BKet-2YFdz!OU7Ep3B`O2{qY|p zuCs3qlP(ujJoe&uLUh{gi|S>m(P`1kmot93_jXNv$NqD@|Jj&h4jtg$%4+#_|D2f` Q3=9kmp00i_>zopr0DUM+nE(I) literal 0 HcmV?d00001 diff --git a/mods/default/textures/default_tool_steelsword.png b/mods/default/textures/default_tool_steelsword.png new file mode 100644 index 0000000000000000000000000000000000000000..a74581238cad9a6f90e319a980b4c83eda9e8e2e GIT binary patch literal 291 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7Sc;uILpV4%IBGajIv5xj zI14-?iy0XBj({-ZRBb+K1_p+so-U3d7QIU+EAkz35ODo3XOs$>?^fg~>&w^z4~5A+G0@ zd`ek1r4GE+@AubS<%pdz^WYgb(GUD`JQ7XyOs{y2H(xx!VDMHdavEa;*E?CoUS&&} z^D9nw|mmrB)w}Z3>2Ak qEHL79#@tQCeBZBI|JdpFn)%q8QW-YJTvi4K1_n=8KbLh*2~7YLwPyeT literal 0 HcmV?d00001 diff --git a/mods/default/textures/default_tool_stoneaxe.png b/mods/default/textures/default_tool_stoneaxe.png new file mode 100644 index 0000000000000000000000000000000000000000..698ac918fdbeb8dd86515fe65360b9d53077aaa7 GIT binary patch literal 931 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!to83KGlTp1V`{)6#IWMm%-DMK?R$l+YGn2F>IT}Fe#TI*OS3hg+YY@L)(80>;G@tc6-vKZMnIVJUw$& zRQ^wzbUQb9o2Ta_6_x+Fxwkz%x2dT7_w>B2qViuw<@W#E+iq{0v~5!Eq+HKjPZdv< zZU47Tx;-g(TdwCMPnBGiN&hG1-p=*h=BYACCHH@>=WS1wZ7QDsJypQ^Z{J3<&2!r} zWD9dAO@iAwDK{5l?KV$Okj*M8|NmpS{{R1Nw{K6{wk>zkB+uMjmH+=I-M*c>ZJXz$ zNh<&U=ia{Uxow-u|Nox1Z>#+Ouks(m_5Zj1zdh;pw%l!#JSXL<pR;TRCY`F2vSt+dTjOR{>j(5poQu zA;*AjI)lppN!xDcPTJ;~J4wYemqFz=T39o9ZbJ@khTLtp(R6rD+V($p(rwS&Z7QCV z7*ujmy$ebslm2hZy*|B^nK=7O#Jxxcz=Q2rtS{5joY;T u&z)lNUtLAzk9xFmF@up3}e;#ta7I3?bon#J0JDOG9?x7;GSUN zDi~l?o;_2&((YZ*Yegl_^A@T|BF$yVX522z`(%Z M>FVdQ&MBb@0KV&7ZU6uP literal 0 HcmV?d00001 diff --git a/mods/default/textures/default_tool_stoneshovel.png b/mods/default/textures/default_tool_stoneshovel.png new file mode 100644 index 0000000000000000000000000000000000000000..ba5243101a1180a6f5f07f0fb791dae2c1e9416f GIT binary patch literal 203 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7Sc;uILpV4%IBGajIv5xj zI14-?iy0XBj({-ZRBb+K1_p*)PZ!4!i{7^rHu5$Y@UZBY_&ktH?KOGx(9pyIPT8v>{$Ek zka4)EV_Tk%?I{rmiH&!b}M*B&k?-1RTuCIbTlgQu&X%Q~loCIB)9 Bap3>} literal 0 HcmV?d00001 diff --git a/mods/default/textures/default_tool_woodaxe.png b/mods/default/textures/default_tool_woodaxe.png new file mode 100644 index 0000000000000000000000000000000000000000..3daa4af72bb200b80ad57b1ee801d21ee1115c71 GIT binary patch literal 927 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!to83KGlTp1V`{)6#IWMm%-DMK?R$l+YGn2F>IT}Fe#TI*OS3hg+YY@L)(80>;G@tc6-vKZMnIVJUw$& zRQ^wzbUQb9o2Ta_6_x+Fxwkz%x2dT7_w>B2qViuw<@W#E+iq{0v~5!Eq+HKjPZdv< zZU47Tx;-g(TdwCMPnBGiN&hG1-p=*h=BYACCHH@>=WS1wZ7QDsJypQ^Z{J3<&2!r} zWD9dAO@iAwDK{5l?KV$Okj*M8|NmpS{{R1Nw{K6{wk>zkB+uMjmH+=I-M*c>ZJXz$ zNh<&U=ia{Uxow-u|Nox1Z>#+Ouks(m_5Zj1zdh;pw%l!#JSXL<pR;TRCY`F2vSt+dTjOR{>j(5poQu zA;*AjI)lppN!xDcPTJ;~J4wYemqFz=T39o9ZbJ@khTLtp(R6rD+V($p(rwS&Z7QCV z7*ujmy$ebslm2hZy*I{t5kEEb${Rg z=Ia7(PO~N+d~~>6qSLIQv9VF{S{Uomv_wa-HqP03210LHOQbKxx?Et8sQC3o(@)<( o;8W9Nq389R7UhQ++nNS*F_fP)-s9qZgb8Gwr>mdKI;Vst0P;$#AOHXW literal 0 HcmV?d00001 diff --git a/mods/default/textures/default_tool_woodpick.png b/mods/default/textures/default_tool_woodpick.png new file mode 100644 index 0000000000000000000000000000000000000000..ea728cca3fd583d1cc76a702ea48b7f0961fd51a GIT binary patch literal 245 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7Sc;uILpV4%IBGajIv5xj zI14-?iy0XBj({-ZRBb+K1_p-do-U3d7QM*{3j_=fNwC&Q{hz3+mb2?%$4Z%g#uEoT zJ3sHA*Jl&hCb)(5ra=yyp`cO1{k`vd^6&potoZ$pzs}4m?{`e^}GcfQ6hDW^HyMUd6fq}u()z4*}Q$iB}!**Gp literal 0 HcmV?d00001 diff --git a/mods/default/textures/default_tool_woodshovel.png b/mods/default/textures/default_tool_woodshovel.png new file mode 100644 index 0000000000000000000000000000000000000000..649ab4c38a79fb48376ed13949ae5e182d328cd0 GIT binary patch literal 203 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7Sc;uILpV4%IBGajIv5xj zI14-?iy0XBj({-ZRBb+K1_p*)PZ!4!i{9jf1p)>_t1ozVezxz~`~F_}4!cD>1woJg z=s(mu>9kF&(6>G%*@Qp!YgOp zT{}fmFSe3HT=^D5$=UPve-jfxKqdV1SM&Xnokk4v)0)@>F7+ffEaP}x&&I~q_By}L zSZMLgMn-RiUD2Atsm6Z#6BbD>=hlm@Jh5Q8vVVYa8zXC-)PMch$`cB@x@QYso^sw% z{z0IWMm%-DMK?R$l+YGn2F>IT}Fe#TI*OS3hg+YY@L)(80>;G@tc6-vKZMnIVJUw$& zRQ^wzbUQb9o2Ta_6_x+Fxwkz%x2dT7_w>B2qViuw<@W#E+iq{0v~5!Eq+HKjPZdv< zZU47Tx;-g(TdwCMPnBGiN&hG1-p=*h=BYACCHH@>=WS1wZ7QDsJypQ^Z{J3<&2!r} zWD9dAO@iAwDK{5l?KV$Okj*M8|NmpS{{R1Nw{K6{wk>zkB+uMjmH+=I-M*c>ZJXz$ zNh<&U=ia{Uxow-u|Nox1Z>#+Ouks(m_5Zj1zdh;pw%l!#JSXL<pR;TRCY`F2vSt+dTjOR{>j(5poQu zA;*AjI)lppN!xDcPTJ;~J4wYemqFz=T39o9ZbJ@khTLtp(R6rD+V($p(rwS&Z7QCV z7*ujmy$ebslm2hZy*gTe~DWM4f3lOT2 literal 0 HcmV?d00001 diff --git a/mods/default/textures/default_torch_on_ceiling.png b/mods/default/textures/default_torch_on_ceiling.png new file mode 100644 index 0000000000000000000000000000000000000000..6965d380e3ec0df3037b6fcc47bbf331f968a700 GIT binary patch literal 913 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!to83KGlTp1V`{)6#IWMm%-DMK?R$l+YGn2F>IT}Fe#TI*OS3hg+YY@L)(80>;G@tc6-vKZMnIVJUw$& zRQ^wzbUQb9o2Ta_6_x+Fxwkz%x2dT7_w>B2qViuw<@W#E+iq{0v~5!Eq+HKjPZdv< zZU47Tx;-g(TdwCMPnBGiN&hG1-p=*h=BYACCHH@>=WS1wZ7QDsJypQ^Z{J3<&2!r} zWD9dAO@iAwDK{5l?KV$Okj*M8|NmpS{{R1Nw{K6{wk>zkB+uMjmH+=I-M*c>ZJXz$ zNh<&U=ia{Uxow-u|Nox1Z>#+Ouks(m_5Zj1zdh;pw%l!#JSXL<pR;TRCY`F2vSt+dTjOR{>j(5poQu zA;*AjI)lppN!xDcPTJ;~J4wYemqFz=T39o9ZbJ@khTLtp(R6rD+V($p(rwS&Z7QCV z7*ujmy$ebslm2hZy* literal 0 HcmV?d00001 diff --git a/mods/default/textures/default_torch_on_floor.png b/mods/default/textures/default_torch_on_floor.png new file mode 100644 index 0000000000000000000000000000000000000000..76d1dd5ac90f3333cf496218d45b419911aeb172 GIT binary patch literal 917 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!to83KGlTp1V`{)6#IWMm%-DMK?R$l+YGn2F>IT}Fe#TI*OS3hg+YY@L)(80>;G@tc6-vKZMnIVJUw$& zRQ^wzbUQb9o2Ta_6_x+Fxwkz%x2dT7_w>B2qViuw<@W#E+iq{0v~5!Eq+HKjPZdv< zZU47Tx;-g(TdwCMPnBGiN&hG1-p=*h=BYACCHH@>=WS1wZ7QDsJypQ^Z{J3<&2!r} zWD9dAO@iAwDK{5l?KV$Okj*M8|NmpS{{R1Nw{K6{wk>zkB+uMjmH+=I-M*c>ZJXz$ zNh<&U=ia{Uxow-u|Nox1Z>#+Ouks(m_5Zj1zdh;pw%l!#JSXL<pR;TRCY`F2vSt+dTjOR{>j(5poQu zA;*AjI)lppN!xDcPTJ;~J4wYemqFz=T39o9ZbJ@khTLtp(R6rD+V($p(rwS&Z7QCV z7*ujmy$ebslm2hZy*!AWJ-5{an^LB{Ts5I=ZPl literal 0 HcmV?d00001 diff --git a/mods/default/textures/default_tree.png b/mods/default/textures/default_tree.png new file mode 100644 index 0000000000000000000000000000000000000000..65abfc243e868f5e03a058bdd26ab473adae4f6d GIT binary patch literal 1445 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4kiW$h6xih%orG$83KGlTp1V`{)6#IWMm%-DMK?R$l+YGn2F>IT}Fe#TI*OS3hg+YY@L)(80>;G@tc6-vKZMnIVJUw$& zRQ^wzbUQb9o2Ta_6_x+Fxwkz%x2dT7_w>B2qViuw<@W#E+iq{0v~5!Eq+HKjPZdv< zZU47Tx;-g(TdwCMPnBGiN&hG1-p=*h=BYACCHH@>=WS1wZ7QDsJypQ^Z{J3<&2!r} zWD9dAO@iAwDK{5l?KV$Okj*M8|NmpS{{R1Nw{K6{wk>zkB+uMjmH+=I-M*c>ZJXz$ zNh<&U=ia{Uxow-u|Nox1Z>#+Ouks(m_5Zj1zdh;pw%l!#JSXL<pR;TRCY`F2vSt+dTjOR{>j(5poQu zA;*AjI)lppN!xDcPTJ;~J4wYemqFz=T39o9ZbJ@khTLtp(R6rD+V($p(rwS&Z7QCV z7*ujmy$ebslm2hZy*RF_;8$jzkNrQyso=Tjb~$* zjE0qdou>JHWvEbX0+1w@*ueKKY z=S@%&Hs-7Bny)UN^X6P_=TiAYIg@teYlj{Xsj$#oCH`0Az0}Wj3mqi<91W#*zHq)N zS7v(f`NsSopH6Y@K5XE#!IS6b$)^=n*RMo~v-D53dOmgChwJ)l)jt|d^Xjs_8R4Js z?OpYm#HWAvE2sQ_He;Tew#duh8H--exi}}iDN`i(^gA<#|NqO&zFp%j&OdpxBRA8~ zQCEDD$I?viBi{nHGsQS%ZZK1-_@;R=>%^bW6}i%7jJq#NWE-7Z=9W=9FYfK%#X=6Y zhtoDDIJ@+v-Aso4lfBs(X9vD(x%OGbiP{nmJyTusl~&rCB`JaLa!AE3Y^d120`r zT>509z_FhJU330)O`QKh^itT%*Q~Kkt+V&59_62-$GVjH@{Sfajsw<`?E=#>Lk<-w z#@*C1{k|_CZ;z+N^)*~2vmYd`XJIT#Iy@_*Z-K<3FCh!_*S{`2uFy6AgIASknQSOO PDA9Sk`njxgN@xNAiaxM? literal 0 HcmV?d00001 diff --git a/mods/default/textures/default_tree_top.png b/mods/default/textures/default_tree_top.png new file mode 100644 index 0000000000000000000000000000000000000000..2cdd94f80c0c991c90309ffff6f1d91f0ad188c9 GIT binary patch literal 1024 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4kiW$h6xih%orG$83KGlTp1V`{)6#IWMm%-DMK?R$l+YGn2F>IT}Fe#TI*OS3hg+YY@L)(80>;G@tc6-vKZMnIVJUw$& zRQ^wzbUQb9o2Ta_6_x+Fxwkz%x2dT7_w>B2qViuw<@W#E+iq{0v~5!Eq+HKjPZdv< zZU47Tx;-g(TdwCMPnBGiN&hG1-p=*h=BYACCHH@>=WS1wZ7QDsJypQ^Z{J3<&2!r} zWD9dAO@iAwDK{5l?KV$Okj*M8|NmpS{{R1Nw{K6{wk>zkB+uMjmH+=I-M*c>ZJXz$ zNh<&U=ia{Uxow-u|Nox1Z>#+Ouks(m_5Zj1zdh;pw%l!#JSXL<pR;TRCY`F2vSt+dTjOR{>j(5poQu zA;*AjI)lppN!xDcPTJ;~J4wYemqFz=T39o9ZbJ@khTLtp(R6rD+V($p(rwS&Z7QCV z7*ujmy$ebslm2hZy*O>_%)r1c48n{Iv*t)JFfgw4ba4#Pn3y}syXcMqkBhW|%EU`OlS3XEKasQaTbCDp zRMPWLkB0*HsmD4!rmH^4?Rxoq{e1?GCv#SqF)&=2B76S2wjraz);;cPeSKRy8Fx7D z`}ZR*Xx*&^v$kiP{j~3~%%{^nF28U4{<+M`Abi*Rq~R*FwX2r-*i`YSt&n@_=VI5g zC2vx`G=rG!$_CrQPjJoH4xOu|*bxKUuPgt2_DGq)9!@6|dHJ z*I##!^iz>!+kfU()XmE#?S?;ulC7l}j7#$Za?`F!vp5{HWYEye481C*H$8FInXYSU zkAJ-VX?fIk-D{CU?at>LJE|Ubtk5IWMm%-DMK?R$l+YGn2F>IT}Fe#TI*OS3hg+YY@L)(80>;G@tc6-vKZMnIVJUw$& zRQ^wzbUQb9o2Ta_6_x+Fxwkz%x2dT7_w>B2qViuw<@W#E+iq{0v~5!Eq+HKjPZdv< zZU47Tx;-g(TdwCMPnBGiN&hG1-p=*h=BYACCHH@>=WS1wZ7QDsJypQ^Z{J3<&2!r} zWD9dAO@iAwDK{5l?KV$Okj*M8|NmpS{{R1Nw{K6{wk>zkB+uMjmH+=I-M*c>ZJXz$ zNh<&U=ia{Uxow-u|Nox1Z>#+Ouks(m_5Zj1zdh;pw%l!#JSXL<pR;TRCY`F2vSt+dTjOR{>j(5poQu zA;*AjI)lppN!xDcPTJ;~J4wYemqFz=T39o9ZbJ@khTLtp(R6rD+V($p(rwS&Z7QCV z7*ujmy$ebslm2hZy*r;B5V#(CC*zWH~|1Q;&NeE7lpQP$pV z6WLrROm1A{&>+(_=eKat2}66kgDJJ^`Dm`jsL? z{2D`_=*{$1V9Uz&=DyKo0VWaG!kA{s7bKV`Zc(O-#{eBLH|8*?w8M4)rQo{u$ zbhmH`9&~4D2sX-Idf>zHlguUm{=Jn~n^qHR#cj!O_geQizYW!93v6U3ZRU9s+?8Xy z{ITcMDSr>TeF@e(>i^z>b>U>Qq{kC)8XHfG{q*%%$&X?Q{>68uEnV|klyQxrQb6{~ zrLOI5-^0wU+g`-%s6T)E=ks4q8IiBAMeEL1Fx(ie7ap=vWb?;NiL3pG|60on|NAX+ zpdvMRDPu-{l}``Hu^GQbvL=__+Kpx@=7_4xoV!})f8TEB1qJX(F7BUS&3%crWHXSQ~f z&e(ods??{DJ`2MaZ?GDLXKz4d3$p8ebk&wf_Ue*XFNp1*8I W!o0oWuIc>(r6W&QKbLh*2~7a-lb}=p literal 0 HcmV?d00001 diff --git a/mods/default/textures/heart.png b/mods/default/textures/heart.png new file mode 100644 index 0000000000000000000000000000000000000000..6bc183e04f21cba17b52009e89bb52072d5a0afd GIT binary patch literal 308 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7Sc;uILpV4%IBGajIv5xj zI14-?iy0XBj({-ZRBb+K1_p*}o-U3d7QJUL+4?aX3bZ{u&cS(V$)cxh1tNJ2vYID( zcQC4!aH^jOTKbe@Cu4}mN{-MK5?p%@>fBq>5-wHw=HmCtKZoNdpE}8Fc;YA5EbMrlR)&5IMHc%_&&C=QMMmtW>f9mdxWZyGgpTlPg%G7H&NKVA726BgIKu zyzdyDTDz{;B>KqJ^gYUZ#hciDs^yk^m-q2xce$nXPrimpG%Q=}%J~&K3=9kmp00i_ I>zopr0D|Ik#{d8T literal 0 HcmV?d00001 diff --git a/mods/default/textures/player.png b/mods/default/textures/player.png new file mode 100644 index 0000000000000000000000000000000000000000..90adf97476ecd3442dcd435201658ebfaef9d7ab GIT binary patch literal 212 zcmeAS@N?(olHy`uVBq!ia0y~yU=UznU{K&-V_;yA?)-6vfq{Xuz$3Dlfr0M`2s2LA z=96Y%U}*DnaSZY3d^`0bUxNaNtNuFv=jUH8HCAeZ5Ruv9r3nCkpHge56J$3TL8&2iIp=VZaIH?(YQ1rD-Ou~s(msb3mIc{w4|+wdF|wF^SoO%V2RCXQ>bR=)HB|EyK39KWzQ!ye?SAv} z`i*VMw{Lp*a`iW?_I)_H;iFgbgzsl>YM%zJDdN2rbh+cbj!kAMsjt%+Wafx^wQ$IFD& z&;5M!`Q~@SIj?VYYPU#4{F%S+`@Zk@zSsY+{=T4FZ`X@OAmUMd+YkMd#qnG_w@M_b zXD+g^dn9c2-Ol`f=-IS_qd3o9TX(s`TL4Xyj0D)r`^*Zv%t&%fnloG<%}-C+l|O0W8(AhF}&$FsR19sVzt>|b5@ zc`}3c>UI|GxERf)ix^g1ntVZGyTSXPC-kl}+&ahbe4b&&LtFnt*JP~2j%?*Edd)X6 zqt)1O@yyHB+xn)KNmd?yUVG`-V{sw1g(sb-#N5i6ydiYowart^lEb~1gz@@4i`kzV zaLxBoa2+3i$rf!%hF^!Pjvr$X+t>Dy`>@7GL1xtp5=Nqb9D6$@`%@n*I{SsURc`IE zQ{sI$qIeh$DmV6b#UAq7y`X57@pUWTPa($1Y~^-0#JGOjgxSS=Y}opyDCH)@9;@fp zs`bmy1vsv0?{9zZlKgu%ALC(Zx5A%)Cx|#Y=AC|cXUmbe?n&3bePC7D_F5^&exkaJ z$<>4(p40D7(|M%KJE`=>zk3IzHq4x1IN_382gA&slV9(8PU<^+_oy%9hj*tZ8@;qx z(qUfTOA`#Y=JXgP?cqH#Rukwh!M{QnO1ww9xug znUL+O!xL^@-toOg+4up!(|j?9@ULk(m%|ROU)>Y`ZC;*oKykl8jQIRD<#XC6|5&ZC z;ZDrse>dvY*p!wOg=m@8_P@E;;l1U*#g1Ij)vLUGKRd{HMTuVN3lV9qoI&gr?v2mfF8=smp98!?W$G z3*|mD7X1DT{sTJ#eW?*1o N@O1TaS?83{1OWD7;|>4- literal 0 HcmV?d00001 diff --git a/mods/default/textures/wieldhand.png b/mods/default/textures/wieldhand.png new file mode 100644 index 0000000000000000000000000000000000000000..c4549e5ede15586602c9223d5b5e3d9ca92b88f4 GIT binary patch literal 384 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s77>k44ofy`glX=O&z`&N| z?e4;GkYP4MK4Wd*83qOh&H|6fVg?4jBOuH;Rhv(mfq{X&#M9T6{WcF1FSi2sG|p)Z z42%q(E{-7#ec?U;cL(3GM!#hu# z8_em`<=G%r@a_{Yn{q7gjswq_pKr`+>P(hMShD)yhLYEXZ1L>QAiPI&bGl}l$)<$O fjPoa7WMp{xB;JsJrr&A?1_lOCS3j3^P6= 2 then + experimental.t1 = experimental.t1 - 2 + minetest.log("time of day is "..minetest.env:get_timeofday()) + if experimental.day then + minetest.log("forcing day->night") + experimental.day = false + minetest.env:set_timeofday(0.0) + else + minetest.log("forcing night->day") + experimental.day = true + minetest.env:set_timeofday(0.5) + end + minetest.log("time of day is "..minetest.env:get_timeofday()) + end + --]] +end +minetest.register_globalstep(on_step) + +-- An example furnace-thing implemented in Lua + +--[[ +minetest.register_node("experimental:luafurnace", { + tile_images = {"default_lava.png", "default_furnace_side.png", + "default_furnace_side.png", "default_furnace_side.png", + "default_furnace_side.png", "default_furnace_front.png"}, + --inventory_image = "furnace_front.png", + inventory_image = minetest.inventorycube("default_furnace_front.png"), + paramtype = "facedir_simple", + metadata_name = "generic", + material = minetest.digprop_stonelike(3.0), +}) + +minetest.register_on_placenode(function(pos, newnode, placer) + if newnode.name == "experimental:luafurnace" then + local meta = minetest.env:get_meta(pos) + meta:inventory_set_list("fuel", {""}) + meta:inventory_set_list("src", {""}) + meta:inventory_set_list("dst", {"","","",""}) + meta:set_inventory_draw_spec( + "invsize[8,9;]" + .."list[current_name;fuel;2,3;1,1;]" + .."list[current_name;src;2,1;1,1;]" + .."list[current_name;dst;5,1;2,2;]" + .."list[current_player;main;0,5;8,4;]" + ) + + local total_cooked = 0; + meta:set_string("total_cooked", total_cooked) + meta:set_infotext("Lua Furnace: total cooked: "..total_cooked) + end +end) + +minetest.register_abm({ + nodenames = {"experimental:luafurnace"}, + interval = 1.0, + chance = 1, + action = function(pos, node, active_object_count, active_object_count_wider) + local meta = minetest.env:get_meta(pos) + for i, name in ipairs({ + "fuel_totaltime", + "fuel_time", + "src_totaltime", + "src_time" + }) do + if not meta:get_string(name) then + meta:set_string(name, 0) + end + end + + local inv = meta:get_inventory() + + local fuelitem = inv:get_stack("fuel", 1):peek_item() + local srcitem = inv:get_stack("src", 1):peek_item() + --print("fuelitem="..dump(fuelitem)) + --print("srcitem="..dump(srcitem)) + + local was_active = false + + local src_cooktime = -1 + local result_stackstring = nil + + if srcitem then + local prop = get_item_definition(srcitem) + if prop and prop.cookresult_itemstring ~= "" then + result_stackstring = prop.cookresult_itemstring + src_cooktime = prop.furnace_cooktime or 3 + end + end + + print("src_cooktime="..dump(src_cooktime)) + print("result_stackstring="..dump(result_stackstring)) + + if tonumber(meta:get_string("fuel_time")) < tonumber(meta:get_string("fuel_totaltime")) then + was_active = true + meta:set_string("fuel_time", tonumber(meta:get_string("fuel_time")) + 1) + meta:set_string("src_time", tonumber(meta:get_string("src_time")) + 1) + --print("result_stackstring="..dump(result_stackstring)) + --print('tonumber(meta:get_string("src_time"))='..dump(tonumber(meta:get_string("src_time")))) + --print("src_cooktime="..dump(src_cooktime)) + if result_stackstring and tonumber(meta:get_string("src_time")) >= src_cooktime and src_cooktime >= 0 then + -- Put result in "dst" list + success = inv:autoinsert_stackstring("dst", result_stackstring) + if not success then + print("Could not autoinsert '"..result_stackstring.."'") + end + -- If succeeded, take stuff from "src" list + if success then + srcstack = inv:get_stack("src", 1) + srcstack:take_item() + inv:set_stack("src", 1, srcstack) + end + meta:set_string("src_time", 0) + end + end + + if tonumber(meta:get_string("fuel_time")) < tonumber(meta:get_string("fuel_totaltime")) then + meta:set_infotext("Furnace active: "..(tonumber(meta:get_string("fuel_time"))/tonumber(meta:get_string("fuel_totaltime"))*100).."%") + return + end + + local srcitem = inv:get_stack("src", 1):peek_item() + + local src_cooktime = 0 + local result_stackstring = nil + + if srcitem then + local prop = get_item_definition(srcitem) + if prop and prop.cookresult_itemstring ~= "" then + result_stackstring = prop.cookresult_itemstring + src_cooktime = prop.furnace_cooktime or 3 + end + end + + local fuelitem = inv:get_stack("fuel", 1):peek_item() + + if not result_stackstring or not fuelitem then + if was_active then + meta:set_infotext("Furnace is empty") + end + return + end + + local burntime = -1 + if fuelitem then + local prop = get_item_definition(fuelitem) + if prop then + burntime = prop.furnace_burntime or -1 + end + end + + if burntime <= 0 then + meta:set_infotext("Furnace out of fuel") + return + end + + meta:set_string("fuel_totaltime", burntime) + meta:set_string("fuel_time", 0) + + local stack = inv:get_stack("fuel", 1) + stack:take_item() + inv:set_stack("fuel", 1, stack) + end, +}) +minetest.register_abm({ + nodenames = {"experimental:luafurnace"}, + interval = 1.0, + chance = 1, + action = function(pos, node, active_object_count, active_object_count_wider) + local meta = minetest.env:get_meta(pos) + local fuellist = meta:inventory_get_list("fuel") + local srclist = meta:inventory_get_list("src") + local dstlist = meta:inventory_get_list("dst") + if fuellist == nil or srclist == nil or dstlist == nil then + return + end + _, srcitem = stackstring_take_item(srclist[1]) + _, fuelitem = stackstring_take_item(fuellist[1]) + if not srcitem or not fuelitem then return end + if fuelitem.type == "node" then + local prop = minetest.registered_nodes[fuelitem.name] + if prop == nil then return end + if prop.furnace_burntime < 0 then return end + else + return + end + local resultstack = nil + if srcitem.type == "node" then + local prop = minetest.registered_nodes[srcitem.name] + if prop == nil then return end + if prop.cookresult_item == "" then return end + resultstack = prop.cookresult_item + else + return + end + + if resultstack == nil then + return + end + + dstlist[1], success = stackstring_put_stackstring(dstlist[1], resultstack) + if not success then + return + end + + fuellist[1], _ = stackstring_take_item(fuellist[1]) + srclist[1], _ = stackstring_take_item(srclist[1]) + + meta:inventory_set_list("fuel", fuellist) + meta:inventory_set_list("src", srclist) + meta:inventory_set_list("dst", dstlist) + + local total_cooked = meta:get_string("total_cooked") + total_cooked = tonumber(total_cooked) + 1 + meta:set_string("total_cooked", total_cooked) + meta:set_infotext("Lua Furnace: total cooked: "..total_cooked) + end, +}) +minetest.register_craft({ + output = 'node "experimental:luafurnace" 1', + recipe = { + {'node "default:cobble"', 'node "default:cobble"', 'node "default:cobble"'}, + {'node "default:cobble"', 'node "default:steel_ingot"', 'node "default:cobble"'}, + {'node "default:cobble"', 'node "default:cobble"', 'node "default:cobble"'}, + } +}) +--]] + +-- +-- Random stuff +-- + +--[[ +minetest.register_tool("experimental:horribletool", { + image = "default_lava.png", + basetime = 2.0 + dt_weight = 0.2 + dt_crackiness = 0.2 + dt_crumbliness = 0.2 + dt_cuttability = 0.2 + basedurability = 50 + dd_weight = -5 + dd_crackiness = -5 + dd_crumbliness = -5 + dd_cuttability = -5 +}) +--]] + +-- +-- TNT (not functional) +-- + +minetest.register_craft({ + output = 'experimental:tnt', + recipe = { + {'default:wood'}, + {'default:coal_lump'}, + {'default:wood'} + } +}) + +minetest.register_node("experimental:tnt", { + tile_images = {"default_tnt_top.png", "default_tnt_bottom.png", + "default_tnt_side.png", "default_tnt_side.png", + "default_tnt_side.png", "default_tnt_side.png"}, + inventory_image = minetest.inventorycube("default_tnt_top.png", + "default_tnt_side.png", "default_tnt_side.png"), + drop = '', -- Get nothing + material = { + diggability = "not", + }, +}) + +minetest.register_on_punchnode(function(p, node) + if node.name == "experimental:tnt" then + minetest.env:remove_node(p) + minetest.env:add_entity(p, "experimental:tnt") + nodeupdate(p) + end +end) + +local TNT = { + -- Static definition + physical = true, -- Collides with things + -- weight = 5, + collisionbox = {-0.5,-0.5,-0.5, 0.5,0.5,0.5}, + visual = "cube", + textures = {"default_tnt_top.png", "default_tnt_bottom.png", + "default_tnt_side.png", "default_tnt_side.png", + "default_tnt_side.png", "default_tnt_side.png"}, + -- Initial value for our timer + timer = 0, + -- Number of punches required to defuse + health = 1, + blinktimer = 0, + blinkstatus = true, +} + +-- Called when a TNT object is created +function TNT:on_activate(staticdata) + print("TNT:on_activate()") + self.object:setvelocity({x=0, y=4, z=0}) + self.object:setacceleration({x=0, y=-10, z=0}) + self.object:settexturemod("^[brighten") + self.object:set_armor_groups({immortal=1}) +end + +-- Called periodically +function TNT:on_step(dtime) + --print("TNT:on_step()") + self.timer = self.timer + dtime + self.blinktimer = self.blinktimer + dtime + if self.blinktimer > 0.5 then + self.blinktimer = self.blinktimer - 0.5 + if self.blinkstatus then + self.object:settexturemod("") + else + self.object:settexturemod("^[brighten") + end + self.blinkstatus = not self.blinkstatus + end +end + +-- Called when object is punched +function TNT:on_punch(hitter) + print("TNT:on_punch()") + self.health = self.health - 1 + if self.health <= 0 then + self.object:remove() + hitter:get_inventory():add_item("main", "experimental:tnt") + --hitter:set_hp(hitter:get_hp() - 1) + end +end + +-- Called when object is right-clicked +function TNT:on_rightclick(clicker) + --pos = self.object:getpos() + --pos = {x=pos.x, y=pos.y+0.1, z=pos.z} + --self.object:moveto(pos, false) +end + +--print("TNT dump: "..dump(TNT)) +--print("Registering TNT"); +minetest.register_entity("experimental:tnt", TNT) + +-- Add TNT's old name also +minetest.register_alias("TNT", "experimental:tnt") + +-- +-- The dummyball! +-- + +minetest.register_entity("experimental:dummyball", { + -- Static definition + hp_max = 20, + physical = false, + collisionbox = {-0.4,-0.4,-0.4, 0.4,0.4,0.4}, + visual = "sprite", + visual_size = {x=1, y=1}, + textures = {"experimental_dummyball.png"}, + spritediv = {x=1, y=3}, + initial_sprite_basepos = {x=0, y=0}, + -- Dynamic variables + phase = 0, + phasetimer = 0, + + on_activate = function(self, staticdata) + minetest.log("Dummyball activated!") + end, + + on_step = function(self, dtime) + self.phasetimer = self.phasetimer + dtime + if self.phasetimer > 2.0 then + self.phasetimer = self.phasetimer - 2.0 + self.phase = self.phase + 1 + if self.phase >= 3 then + self.phase = 0 + end + self.object:setsprite({x=0, y=self.phase}) + phasearmor = { + [0]={cracky=3}, + [1]={crumbly=3}, + [2]={fleshy=3} + } + self.object:set_armor_groups(phasearmor[self.phase]) + end + end, + + on_punch = function(self, hitter) + end, +}) + +minetest.register_on_chat_message(function(name, message) + local cmd = "/dummyball" + if message:sub(0, #cmd) == cmd then + if not minetest.get_player_privs(name)["give"] then + minetest.chat_send_player(name, "you don't have permission to spawn (give)") + return true -- Handled chat message + end + if not minetest.get_player_privs(name)["interact"] then + minetest.chat_send_player(name, "you don't have permission to interact") + return true -- Handled chat message + end + local player = minetest.env:get_player_by_name(name) + if player == nil then + print("Unable to spawn entity, player is nil") + return true -- Handled chat message + end + local entityname = "experimental:dummyball" + local p = player:getpos() + p.y = p.y + 1 + minetest.env:add_entity(p, entityname) + minetest.chat_send_player(name, '"'..entityname + ..'" spawned.'); + return true -- Handled chat message + end +end) + +-- +-- A test entity for testing animated and yaw-modulated sprites +-- + +minetest.register_entity("experimental:testentity", { + -- Static definition + physical = true, -- Collides with things + -- weight = 5, + collisionbox = {-0.7,-1.35,-0.7, 0.7,1.0,0.7}, + --collisionbox = {-0.5,-0.5,-0.5, 0.5,0.5,0.5}, + visual = "sprite", + visual_size = {x=2, y=3}, + textures = {"dungeon_master.png^[makealpha:128,0,0^[makealpha:128,128,0"}, + spritediv = {x=6, y=5}, + initial_sprite_basepos = {x=0, y=0}, + + on_activate = function(self, staticdata) + print("testentity.on_activate") + self.object:setsprite({x=0,y=0}, 1, 0, true) + --self.object:setsprite({x=0,y=0}, 4, 0.3, true) + + -- Set gravity + self.object:setacceleration({x=0, y=-10, z=0}) + -- Jump a bit upwards + self.object:setvelocity({x=0, y=10, z=0}) + end, + + on_punch = function(self, hitter) + self.object:remove() + hitter:add_to_inventory('craft testobject1 1') + end, +}) + +-- +-- More random stuff +-- + +minetest.register_on_respawnplayer(function(player) + print("on_respawnplayer") + -- player:setpos({x=0, y=30, z=0}) + -- return true +end) + +minetest.register_on_generated(function(minp, maxp) + --print("on_generated: minp="..dump(minp).." maxp="..dump(maxp)) + --cp = {x=(minp.x+maxp.x)/2, y=(minp.y+maxp.y)/2, z=(minp.z+maxp.z)/2} + --minetest.env:add_node(cp, {name="sand"}) +end) + +-- Example setting get +--print("setting max_users = " .. dump(minetest.setting_get("max_users"))) +--print("setting asdf = " .. dump(minetest.setting_get("asdf"))) + +minetest.register_on_chat_message(function(name, message) + --[[print("on_chat_message: name="..dump(name).." message="..dump(message)) + local cmd = "/testcommand" + if message:sub(0, #cmd) == cmd then + print(cmd.." invoked") + return true + end + local cmd = "/help" + if message:sub(0, #cmd) == cmd then + print("script-overridden help command") + minetest.chat_send_all("script-overridden help command") + return true + end]] +end) + +-- Grow papyrus on TNT every 10 seconds +--[[minetest.register_abm({ + nodenames = {"TNT"}, + interval = 10.0, + chance = 1, + action = function(pos, node, active_object_count, active_object_count_wider) + print("TNT ABM action") + pos.y = pos.y + 1 + minetest.env:add_node(pos, {name="papyrus"}) + end, +})]] + +-- Replace texts of alls signs with "foo" every 10 seconds +--[[minetest.register_abm({ + nodenames = {"sign_wall"}, + interval = 10.0, + chance = 1, + action = function(pos, node, active_object_count, active_object_count_wider) + print("ABM: Sign text changed") + local meta = minetest.env:get_meta(pos) + meta:set_text("foo") + end, +})]] + +--[[local ncpos = nil +local ncq = 1 +local ncstuff = { + {2, 1, 0, 3}, {3, 0, 1, 2}, {4, -1, 0, 1}, {5, -1, 0, 1}, {6, 0, -1, 0}, + {7, 0, -1, 0}, {8, 1, 0, 3}, {9, 1, 0, 3}, {10, 1, 0, 3}, {11, 0, 1, 2}, + {12, 0, 1, 2}, {13, 0, 1, 2}, {14, -1, 0, 1}, {15, -1, 0, 1}, {16, -1, 0, 1}, + {17, -1, 0, 1}, {18, 0, -1, 0}, {19, 0, -1, 0}, {20, 0, -1, 0}, {21, 0, -1, 0}, + {22, 1, 0, 3}, {23, 1, 0, 3}, {24, 1, 0, 3}, {25, 1, 0, 3}, {10, 0, 1, 2} +} +local ncold = {} +local nctime = nil + +minetest.register_abm({ + nodenames = {"dirt_with_grass"}, + interval = 100000.0, + chance = 1, + action = function(pos, node, active_object_count, active_object_count_wider) + if ncpos ~= nil then + return + end + + if pos.x % 16 ~= 8 or pos.z % 16 ~= 8 then + return + end + + pos.y = pos.y + 1 + n = minetest.env:get_node(pos) + print(dump(n)) + if n.name ~= "air" then + return + end + + pos.y = pos.y + 2 + ncpos = pos + nctime = os.clock() + minetest.env:add_node(ncpos, {name="nyancat"}) + end +}) + +minetest.register_abm({ + nodenames = {"nyancat"}, + interval = 1.0, + chance = 1, + action = function(pos, node, active_object_count, active_object_count_wider) + if ncpos == nil then + return + end + if pos.x == ncpos.x and pos.y == ncpos.y and pos.z == ncpos.z then + clock = os.clock() + if clock - nctime < 0.1 then + return + end + nctime = clock + + s0 = ncstuff[ncq] + ncq = s0[1] + s1 = ncstuff[ncq] + p0 = pos + p1 = {x = p0.x + s0[2], y = p0.y, z = p0.z + s0[3]} + p2 = {x = p1.x + s1[2], y = p1.y, z = p1.z + s1[3]} + table.insert(ncold, 1, p0) + while #ncold >= 10 do + minetest.env:add_node(ncold[#ncold], {name="air"}) + table.remove(ncold, #ncold) + end + minetest.env:add_node(p0, {name="nyancat_rainbow"}) + minetest.env:add_node(p1, {name="nyancat", param1=s0[4]}) + minetest.env:add_node(p2, {name="air"}) + ncpos = p1 + end + end, +})--]] + +minetest.log("experimental modname="..dump(minetest.get_current_modname())) +minetest.log("experimental modpath="..dump(minetest.get_modpath("experimental"))) +minetest.log("experimental worldpath="..dump(minetest.get_worldpath())) + +-- END diff --git a/mods/experimental/textures/experimental_dummyball.png b/mods/experimental/textures/experimental_dummyball.png new file mode 100644 index 0000000000000000000000000000000000000000..0846765528b0c40fe3a5adbc6a732203dfd35e11 GIT binary patch literal 838 zcmeAS@N?(olHy`uVBq!ia0y~yU=UznU@+idV_;yAi2oJNz`(#*9OUlAuLV0FMhJw4NZ$OG(Dmw!M(_Bv%#}JR>YeQ{2 zgdHVnH&=6(?_}-fV7z&#Irm-8n>D&EH*Q2kX>({EUCnZPGY3ca(y3ud>N8fvD4RvS zkX={)NGMq6A=7L(bNlkRG95Exb7SkxD#!Sp($el%-=BT+{cP50JV{j!noETy2pCOg zP-b&HaD9x{qHMhx$;c>6MtyMw{I6qGwa^|%iim-`syUH zH-C@c+_&3y-!=c7D|0j%5*{DxyUBQ3s;v5hUfcw}FNd$&B`THAfAf@;<@A;lj0{G1 zclEk0UbvRI^NxRx-#hhfEf=>M&y8d~aL~qBc%^0V5&8K+&*FCRAIjr5Wlu88Tr>N* zS0oF^?`fz1WSGPoue>?w;f)&kmb-C%3)(jCnt1&6ue7nj6M}Z924zIMtA_j)_e!+L7=04lstMv2o6BoOVqRtMbTm9M$d;b4v zWjc^owasjSL+Ph>rUPY5eR@h4Okyu_Q@d%;@TMmvJ?3q!L!jAQhI+Y?xh87K01qOtIKcZs5_m{J>yaqmi1+-ZMsrxu)TT4 zsRXk=-}DW!n!;{L32EV~@wzu%UO#YL>LOvlR^YKYUT4DlHR~oEic3&(oV9eXNw$L7 pf5WBEem|&my=FX7UT*%?-|=6oifkU;sM-fg!Je*uF6*2UngGG(ZSDX7 literal 0 HcmV?d00001 diff --git a/mods/give_initial_stuff/depends.txt b/mods/give_initial_stuff/depends.txt new file mode 100644 index 0000000..3a7daa1 --- /dev/null +++ b/mods/give_initial_stuff/depends.txt @@ -0,0 +1,2 @@ +default + diff --git a/mods/give_initial_stuff/init.lua b/mods/give_initial_stuff/init.lua new file mode 100644 index 0000000..9cf6b51 --- /dev/null +++ b/mods/give_initial_stuff/init.lua @@ -0,0 +1,12 @@ +minetest.register_on_newplayer(function(player) + print("on_newplayer") + if minetest.setting_getbool("give_initial_stuff") then + print("giving give_initial_stuff to player") + player:get_inventory():add_item('main', 'default:pick_steel') + player:get_inventory():add_item('main', 'default:torch 99') + player:get_inventory():add_item('main', 'default:axe_steel') + player:get_inventory():add_item('main', 'default:shovel_steel') + player:get_inventory():add_item('main', 'default:cobble 99') + end +end) + diff --git a/mods/legacy/depends.txt b/mods/legacy/depends.txt new file mode 100644 index 0000000..3a7daa1 --- /dev/null +++ b/mods/legacy/depends.txt @@ -0,0 +1,2 @@ +default + diff --git a/mods/legacy/init.lua b/mods/legacy/init.lua new file mode 100644 index 0000000..7f9088c --- /dev/null +++ b/mods/legacy/init.lua @@ -0,0 +1,132 @@ +-- legacy (Minetest 0.4 mod) +-- Provides as much backwards-compatibility as feasible + +-- +-- Aliases to support loading 0.3 and old 0.4 worlds and inventories +-- + +minetest.register_alias("stone", "default:stone") +minetest.register_alias("stone_with_coal", "default:stone_with_coal") +minetest.register_alias("stone_with_iron", "default:stone_with_iron") +minetest.register_alias("dirt_with_grass", "default:dirt_with_grass") +minetest.register_alias("dirt_with_grass_footsteps", "default:dirt_with_grass_footsteps") +minetest.register_alias("dirt", "default:dirt") +minetest.register_alias("sand", "default:sand") +minetest.register_alias("gravel", "default:gravel") +minetest.register_alias("sandstone", "default:sandstone") +minetest.register_alias("clay", "default:clay") +minetest.register_alias("brick", "default:brick") +minetest.register_alias("tree", "default:tree") +minetest.register_alias("jungletree", "default:jungletree") +minetest.register_alias("junglegrass", "default:junglegrass") +minetest.register_alias("leaves", "default:leaves") +minetest.register_alias("cactus", "default:cactus") +minetest.register_alias("papyrus", "default:papyrus") +minetest.register_alias("bookshelf", "default:bookshelf") +minetest.register_alias("glass", "default:glass") +minetest.register_alias("wooden_fence", "default:fence_wood") +minetest.register_alias("rail", "default:rail") +minetest.register_alias("ladder", "default:ladder") +minetest.register_alias("wood", "default:wood") +minetest.register_alias("mese", "default:mese") +minetest.register_alias("cloud", "default:cloud") +minetest.register_alias("water_flowing", "default:water_flowing") +minetest.register_alias("water_source", "default:water_source") +minetest.register_alias("lava_flowing", "default:lava_flowing") +minetest.register_alias("lava_source", "default:lava_source") +minetest.register_alias("torch", "default:torch") +minetest.register_alias("sign_wall", "default:sign_wall") +minetest.register_alias("furnace", "default:furnace") +minetest.register_alias("chest", "default:chest") +minetest.register_alias("locked_chest", "default:chest_locked") +minetest.register_alias("cobble", "default:cobble") +minetest.register_alias("mossycobble", "default:mossycobble") +minetest.register_alias("steelblock", "default:steelblock") +minetest.register_alias("nyancat", "default:nyancat") +minetest.register_alias("nyancat_rainbow", "default:nyancat_rainbow") +minetest.register_alias("sapling", "default:sapling") +minetest.register_alias("apple", "default:apple") + +minetest.register_alias("WPick", "default:pick_wood") +minetest.register_alias("STPick", "default:pick_stone") +minetest.register_alias("SteelPick", "default:pick_steel") +minetest.register_alias("MesePick", "default:pick_mese") +minetest.register_alias("WShovel", "default:shovel_wood") +minetest.register_alias("STShovel", "default:shovel_stone") +minetest.register_alias("SteelShovel", "default:shovel_steel") +minetest.register_alias("WAxe", "default:axe_wood") +minetest.register_alias("STAxe", "default:axe_stone") +minetest.register_alias("SteelAxe", "default:axe_steel") +minetest.register_alias("WSword", "default:sword_wood") +minetest.register_alias("STSword", "default:sword_stone") +minetest.register_alias("SteelSword", "default:sword_steel") + +minetest.register_alias("Stick", "default:stick") +minetest.register_alias("paper", "default:paper") +minetest.register_alias("book", "default:book") +minetest.register_alias("lump_of_coal", "default:coal_lump") +minetest.register_alias("lump_of_iron", "default:iron_lump") +minetest.register_alias("lump_of_clay", "default:clay_lump") +minetest.register_alias("steel_ingot", "default:steel_ingot") +minetest.register_alias("clay_brick", "default:clay_brick") +minetest.register_alias("scorched_stuff", "default:scorched_stuff") + +-- +-- Old items +-- + +minetest.register_craftitem(":rat", { + description = "Rat", + inventory_image = "rat.png", + on_drop = function(item, dropper, pos) + minetest.env:add_rat(pos) + item:take_item() + return item + end, + on_place = function(item, dropped, pointed) + pos = minetest.get_pointed_thing_position(pointed, true) + if pos ~= nil then + minetest.env:add_rat(pos) + item:take_item() + return item + end + end +}) + +minetest.register_craftitem(":cooked_rat", { + description = "Cooked rat", + inventory_image = "cooked_rat.png", + on_use = minetest.item_eat(6), +}) + +minetest.register_craftitem(":firefly", { + description = "Firefly", + inventory_image = "firefly.png", + on_drop = function(item, dropper, pos) + minetest.env:add_firefly(pos) + item:take_item() + return item + end, + on_place = function(item, dropped, pointed) + pos = minetest.get_pointed_thing_position(pointed, true) + if pos ~= nil then + minetest.env:add_firefly(pos) + item:take_item() + return item + end + end +}) + +minetest.register_craft({ + type = "cooking", + output = "cooked_rat", + recipe = "rat", +}) + +minetest.register_craft({ + type = "cooking", + output = "scorched_stuff", + recipe = "cooked_rat", +}) + +-- END diff --git a/mods/legacy/textures/apple_iron.png b/mods/legacy/textures/apple_iron.png new file mode 100644 index 0000000000000000000000000000000000000000..2dffdf014384dc17d0b646c294c15ce0436692d4 GIT binary patch literal 207 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7SkfJR9T^xl_H+M9WMyDr z;4JWnEM{QfI|Ravq8eTe3=9mCC9V-A!TD(=<%vb93;~Imc_n&&t|1C##(JiD7UtFs zu?!3hKAtX)Ar}702@HJ!I)wt|enSA|Z?Hqo?4 o;cQcy?k98JQ(9m5^L+tRu)W@od+PaZ3=9kmp00i_>zopr0K#%s{r~^~ literal 0 HcmV?d00001 diff --git a/mods/legacy/textures/dungeon_master.png b/mods/legacy/textures/dungeon_master.png new file mode 100644 index 0000000000000000000000000000000000000000..3457c8228fce6572daa79e219e0bb22f568062ea GIT binary patch literal 6636 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 X<=xvK2bvfd7#KWV{an^LB{Ts5Tr+~h literal 0 HcmV?d00001 diff --git a/mods/legacy/textures/fireball.png b/mods/legacy/textures/fireball.png new file mode 100644 index 0000000000000000000000000000000000000000..52314285004054d0eb1088c1772ffbec2315e8c2 GIT binary patch literal 603 zcmeAS@N?(olHy`uVBq!ia0y~yU=UznU@+idV_;yAi2oJNz`(##?Bp53!NI{%!;#X# zz`(#+;1OBOz`!jG!i)^F=14FwF#h#)aSZY3TpDKG*J8j^yFfGi7W0`qt<$6n1iGd; z%xr2t!<(`5bV0+_yz^oY60G@z%XD3nj6R;;{5byN_lS+&*QJ65{bA;nv7FCpH{`k^R19vU}SE<@n!z(LpAmyt5W~Z zXn3f~nD^+_^4l8B3^HoB?jKww^+IjoLIx@R8p|`~4fAK0Wgn7MJH&qYMMLJ|n9YBs z9KJqoJb!j!CY#Ty*1&kP$xZx0JPmId)L7IGHgal~Xs`z>%k<76 z)oBWmT`@O%nCG&~JkfEUymNx~Gvgxpf;6$oLE4$@LBBrz|FJz`f$Y-!ZGVa`cR6aL zNcX=}oN9U6{wgzH*r(ogUmYv=$#XlfC^4|SO*?PZGR2~SXM)9qqF0S(jyI-7@-Lbt zF=GOA;f?j#i(WQ=FcE*{c)co{=N8yTTIwNZ3?T5>9jfT{!BY4 zYFPa6KEs~>uY;D?&t`2E7hD}wJYmHWSKG#C%`L^=b=e8ULHvH~J#(rS%sg@Jn?uI^ z&&Lhr1Jc5{7fqP9-r+N2Fk4El!EAP44$rj JF6*2UngEGP{yG2v literal 0 HcmV?d00001 diff --git a/mods/legacy/textures/firefly.png b/mods/legacy/textures/firefly.png new file mode 100644 index 0000000000000000000000000000000000000000..40df7fa1cc62fd8daf90ba6ae24a93992551b9fd GIT binary patch literal 116 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s77>k44ofy`glX=O&z@X>p z;uvCaIypgt^)Q3Mqe&Nx4S%0MaNs~e-gI+j5a(3n$?gbzYa#wmYbjr>aMl{j^|EG<*S4(v?IfA?WsZFBS|;Iy zVmZ@tmJ;?frJj4N9Su`E7L_s1baH>z*C78WzSz&2*-I@Ia%e0v1B~mBzb_h<}D7*abuh{ugzkfWD zOG+27DxS99<@aKB)vf+-E*Ev3Th?~w_OG;So6?1k^))Q_t1Lb&zv*tYPRs#en~n9V u2b5V|CNnMaWW2bfAtT7aL{njwx#;m0>F4_M9x*U5FnGH9xvX{0D*Cw{LITwr$d+Nx8YXo}Qj6Dk`@b7`8DmOk!ZjWnl1RU{GOTV89T%eVbw1 zHik))7;)$V zGgn3B|D;K`b91+OdQMVN`JbD6+tYKKipqaa&)X_0|5a3O|G&NM_O?meCgo1b_008D z@l@INf7_(nlXAD^dQS3G$yJ&3e^T!4T+eNuDw9-l|L1z%_Eg!X;`!fG1+4$}Z8Y0F zw{1hVFn7`