From 04a9cb53b0093d63fb1ff7261ef485e5d3da7b05 Mon Sep 17 00:00:00 2001 From: user Date: Thu, 28 Jun 2012 21:11:58 +0000 Subject: [PATCH] Factored out hydroponics and multinode, and moved seasons into the nature mod. Uses the new port builtin to convert old blocks as they are activated. --- buildings/aztec.bld | 0 buildings/aztectower.bld | 0 buildings/bighome.bld | 0 crafts.lua | 10 - hydroponics.lua | 4 +- init.lua | 30 +- items.lua | 209 +++------ lights.lua | 35 +- like.lua | 165 +++++++ misc.lua | 68 +-- multinode.lua | 399 ----------------- nature.lua | 413 ------------------ nocrafts.lua | 67 +-- portHydroponics.lua | 40 ++ portSeasons.lua | 20 + sound.lua | 49 +++ textures/madblocks_bird.png | Bin 4254 -> 0 bytes textures/madblocks_cactus_wsnow_side.png | Bin 1166 -> 0 bytes textures/madblocks_cactus_wsnow_top.png | Bin 1166 -> 0 bytes textures/madblocks_dandylions.png | Bin 1166 -> 0 bytes textures/madblocks_desertsand_w_snow_side.png | Bin 1166 -> 0 bytes textures/madblocks_grass_autumn.png | Bin 1166 -> 0 bytes textures/madblocks_grass_autumn_side.png | Bin 1166 -> 0 bytes textures/madblocks_grass_spring.png | Bin 1166 -> 0 bytes textures/madblocks_grass_spring_side.png | Bin 1166 -> 0 bytes textures/madblocks_grass_w_snow_side.png | Bin 1166 -> 0 bytes textures/madblocks_hydroponics_coffee.png | Bin 1166 -> 0 bytes textures/madblocks_hydroponics_coffee1.png | Bin 1179 -> 0 bytes textures/madblocks_hydroponics_coffee2.png | Bin 1179 -> 0 bytes textures/madblocks_hydroponics_coffee3.png | Bin 1179 -> 0 bytes textures/madblocks_hydroponics_coffee4.png | Bin 1166 -> 0 bytes textures/madblocks_hydroponics_cyanflower.png | Bin 1179 -> 0 bytes .../madblocks_hydroponics_cyanflower1.png | Bin 1179 -> 0 bytes .../madblocks_hydroponics_cyanflower2.png | Bin 1179 -> 0 bytes .../madblocks_hydroponics_cyanflower3.png | Bin 1179 -> 0 bytes .../madblocks_hydroponics_cyanflower4.png | Bin 1179 -> 0 bytes textures/madblocks_hydroponics_grapes.png | Bin 1179 -> 0 bytes textures/madblocks_hydroponics_grapes1.png | Bin 1179 -> 0 bytes textures/madblocks_hydroponics_grapes2.png | Bin 1179 -> 0 bytes textures/madblocks_hydroponics_grapes3.png | Bin 1179 -> 0 bytes textures/madblocks_hydroponics_grapes4.png | Bin 1166 -> 0 bytes textures/madblocks_hydroponics_growlamp.png | Bin 1179 -> 0 bytes textures/madblocks_hydroponics_habanero.png | Bin 1179 -> 0 bytes textures/madblocks_hydroponics_habanero1.png | Bin 1179 -> 0 bytes textures/madblocks_hydroponics_habanero2.png | Bin 1179 -> 0 bytes textures/madblocks_hydroponics_habanero3.png | Bin 1179 -> 0 bytes textures/madblocks_hydroponics_habanero4.png | Bin 1179 -> 0 bytes .../madblocks_hydroponics_magentaflower.png | Bin 1179 -> 0 bytes .../madblocks_hydroponics_magentaflower1.png | Bin 1179 -> 0 bytes .../madblocks_hydroponics_magentaflower2.png | Bin 1179 -> 0 bytes .../madblocks_hydroponics_magentaflower3.png | Bin 1179 -> 0 bytes .../madblocks_hydroponics_magentaflower4.png | Bin 1179 -> 0 bytes textures/madblocks_hydroponics_peas.png | Bin 1179 -> 0 bytes textures/madblocks_hydroponics_peas1.png | Bin 1179 -> 0 bytes textures/madblocks_hydroponics_peas2.png | Bin 1179 -> 0 bytes textures/madblocks_hydroponics_peas3.png | Bin 1179 -> 0 bytes textures/madblocks_hydroponics_peas4.png | Bin 1179 -> 0 bytes textures/madblocks_hydroponics_promix.png | Bin 1179 -> 0 bytes textures/madblocks_hydroponics_roses1.png | Bin 1179 -> 0 bytes textures/madblocks_hydroponics_roses2.png | Bin 1179 -> 0 bytes textures/madblocks_hydroponics_roses3.png | Bin 1179 -> 0 bytes textures/madblocks_hydroponics_roses4.png | Bin 1179 -> 0 bytes .../madblocks_hydroponics_rubberplant.png | Bin 4267 -> 0 bytes .../madblocks_hydroponics_rubberplant1.png | Bin 4267 -> 0 bytes .../madblocks_hydroponics_rubberplant2.png | Bin 4267 -> 0 bytes .../madblocks_hydroponics_rubberplant3.png | Bin 4267 -> 0 bytes .../madblocks_hydroponics_rubberplant4.png | Bin 4267 -> 0 bytes textures/madblocks_hydroponics_seedlings.png | Bin 1179 -> 0 bytes textures/madblocks_hydroponics_seeds.png | Bin 1179 -> 0 bytes .../madblocks_hydroponics_sproutlings.png | Bin 1179 -> 0 bytes textures/madblocks_hydroponics_tomato.png | Bin 1179 -> 0 bytes textures/madblocks_hydroponics_tomato1.png | Bin 1179 -> 0 bytes textures/madblocks_hydroponics_tomato2.png | Bin 1179 -> 0 bytes textures/madblocks_hydroponics_tomato3.png | Bin 1179 -> 0 bytes textures/madblocks_hydroponics_tomato4.png | Bin 1179 -> 0 bytes textures/madblocks_hydroponics_wildplant.png | Bin 1179 -> 0 bytes .../madblocks_hydroponics_yellowflower.png | Bin 1179 -> 0 bytes .../madblocks_hydroponics_yellowflower1.png | Bin 1179 -> 0 bytes .../madblocks_hydroponics_yellowflower2.png | Bin 1179 -> 0 bytes .../madblocks_hydroponics_yellowflower3.png | Bin 1179 -> 0 bytes .../madblocks_hydroponics_yellowflower4.png | Bin 1179 -> 0 bytes textures/madblocks_ice.png | Bin 1166 -> 0 bytes textures/madblocks_leaves.png | Bin 451 -> 0 bytes textures/madblocks_leaves_autumn.png | Bin 1166 -> 0 bytes textures/madblocks_leaves_spring.png | Bin 1166 -> 0 bytes textures/madblocks_leaves_with_snow.png | Bin 1166 -> 0 bytes textures/madblocks_leaves_with_snow_top.png | Bin 1166 -> 0 bytes textures/madblocks_m1.png | Bin 234 -> 0 bytes textures/madblocks_m2.png | Bin 249 -> 0 bytes textures/madblocks_mushroom.png | Bin 4254 -> 0 bytes textures/madblocks_pasteref.png | Bin 1207 -> 0 bytes textures/madblocks_sand_w_snow_side.png | Bin 1166 -> 0 bytes textures/madblocks_slimtree.png | Bin 358 -> 0 bytes textures/madblocks_snow.png | Bin 1166 -> 0 bytes textures/madblocks_snowflakes.png | Bin 1166 -> 0 bytes textures/madblocks_tree.png | Bin 706 -> 0 bytes 96 files changed, 372 insertions(+), 1137 deletions(-) delete mode 100644 buildings/aztec.bld delete mode 100644 buildings/aztectower.bld delete mode 100644 buildings/bighome.bld create mode 100644 like.lua delete mode 100644 multinode.lua delete mode 100644 nature.lua create mode 100644 portHydroponics.lua create mode 100644 portSeasons.lua create mode 100644 sound.lua delete mode 100644 textures/madblocks_bird.png delete mode 100644 textures/madblocks_cactus_wsnow_side.png delete mode 100644 textures/madblocks_cactus_wsnow_top.png delete mode 100644 textures/madblocks_dandylions.png delete mode 100644 textures/madblocks_desertsand_w_snow_side.png delete mode 100644 textures/madblocks_grass_autumn.png delete mode 100644 textures/madblocks_grass_autumn_side.png delete mode 100644 textures/madblocks_grass_spring.png delete mode 100644 textures/madblocks_grass_spring_side.png delete mode 100644 textures/madblocks_grass_w_snow_side.png delete mode 100644 textures/madblocks_hydroponics_coffee.png delete mode 100644 textures/madblocks_hydroponics_coffee1.png delete mode 100644 textures/madblocks_hydroponics_coffee2.png delete mode 100644 textures/madblocks_hydroponics_coffee3.png delete mode 100644 textures/madblocks_hydroponics_coffee4.png delete mode 100644 textures/madblocks_hydroponics_cyanflower.png delete mode 100644 textures/madblocks_hydroponics_cyanflower1.png delete mode 100644 textures/madblocks_hydroponics_cyanflower2.png delete mode 100644 textures/madblocks_hydroponics_cyanflower3.png delete mode 100644 textures/madblocks_hydroponics_cyanflower4.png delete mode 100644 textures/madblocks_hydroponics_grapes.png delete mode 100644 textures/madblocks_hydroponics_grapes1.png delete mode 100644 textures/madblocks_hydroponics_grapes2.png delete mode 100644 textures/madblocks_hydroponics_grapes3.png delete mode 100644 textures/madblocks_hydroponics_grapes4.png delete mode 100644 textures/madblocks_hydroponics_growlamp.png delete mode 100644 textures/madblocks_hydroponics_habanero.png delete mode 100644 textures/madblocks_hydroponics_habanero1.png delete mode 100644 textures/madblocks_hydroponics_habanero2.png delete mode 100644 textures/madblocks_hydroponics_habanero3.png delete mode 100644 textures/madblocks_hydroponics_habanero4.png delete mode 100644 textures/madblocks_hydroponics_magentaflower.png delete mode 100644 textures/madblocks_hydroponics_magentaflower1.png delete mode 100644 textures/madblocks_hydroponics_magentaflower2.png delete mode 100644 textures/madblocks_hydroponics_magentaflower3.png delete mode 100644 textures/madblocks_hydroponics_magentaflower4.png delete mode 100644 textures/madblocks_hydroponics_peas.png delete mode 100644 textures/madblocks_hydroponics_peas1.png delete mode 100644 textures/madblocks_hydroponics_peas2.png delete mode 100644 textures/madblocks_hydroponics_peas3.png delete mode 100644 textures/madblocks_hydroponics_peas4.png delete mode 100644 textures/madblocks_hydroponics_promix.png delete mode 100644 textures/madblocks_hydroponics_roses1.png delete mode 100644 textures/madblocks_hydroponics_roses2.png delete mode 100644 textures/madblocks_hydroponics_roses3.png delete mode 100644 textures/madblocks_hydroponics_roses4.png delete mode 100644 textures/madblocks_hydroponics_rubberplant.png delete mode 100644 textures/madblocks_hydroponics_rubberplant1.png delete mode 100644 textures/madblocks_hydroponics_rubberplant2.png delete mode 100644 textures/madblocks_hydroponics_rubberplant3.png delete mode 100644 textures/madblocks_hydroponics_rubberplant4.png delete mode 100644 textures/madblocks_hydroponics_seedlings.png delete mode 100644 textures/madblocks_hydroponics_seeds.png delete mode 100644 textures/madblocks_hydroponics_sproutlings.png delete mode 100644 textures/madblocks_hydroponics_tomato.png delete mode 100644 textures/madblocks_hydroponics_tomato1.png delete mode 100644 textures/madblocks_hydroponics_tomato2.png delete mode 100644 textures/madblocks_hydroponics_tomato3.png delete mode 100644 textures/madblocks_hydroponics_tomato4.png delete mode 100644 textures/madblocks_hydroponics_wildplant.png delete mode 100644 textures/madblocks_hydroponics_yellowflower.png delete mode 100644 textures/madblocks_hydroponics_yellowflower1.png delete mode 100644 textures/madblocks_hydroponics_yellowflower2.png delete mode 100644 textures/madblocks_hydroponics_yellowflower3.png delete mode 100644 textures/madblocks_hydroponics_yellowflower4.png delete mode 100644 textures/madblocks_ice.png delete mode 100644 textures/madblocks_leaves.png delete mode 100644 textures/madblocks_leaves_autumn.png delete mode 100644 textures/madblocks_leaves_spring.png delete mode 100644 textures/madblocks_leaves_with_snow.png delete mode 100644 textures/madblocks_leaves_with_snow_top.png delete mode 100644 textures/madblocks_m1.png delete mode 100644 textures/madblocks_m2.png delete mode 100644 textures/madblocks_mushroom.png delete mode 100644 textures/madblocks_pasteref.png delete mode 100644 textures/madblocks_sand_w_snow_side.png delete mode 100644 textures/madblocks_slimtree.png delete mode 100644 textures/madblocks_snow.png delete mode 100644 textures/madblocks_snowflakes.png delete mode 100644 textures/madblocks_tree.png diff --git a/buildings/aztec.bld b/buildings/aztec.bld deleted file mode 100644 index e69de29..0000000 diff --git a/buildings/aztectower.bld b/buildings/aztectower.bld deleted file mode 100644 index e69de29..0000000 diff --git a/buildings/bighome.bld b/buildings/bighome.bld deleted file mode 100644 index e69de29..0000000 diff --git a/crafts.lua b/crafts.lua index 776d1ab..a874c0a 100644 --- a/crafts.lua +++ b/crafts.lua @@ -426,16 +426,6 @@ minetest.register_craft({ output = 'madblocks:signs_cafe 1', recipe = { {'','default:sign_wall',''}, {'','default:torch',''}, }}) -minetest.register_craft({ output = 'madblocks:signs_drpepper 1', recipe = { - {'','madblocks:dye_black',''}, - {'','default:sign_wall',''}, - {'','madblocks:dye_red',''}, - }}) -minetest.register_craft({ output = 'madblocks:signs_enjoycoke 1', recipe = { - {'','madblocks:sheetmetal',''}, - {'','default:sign_wall',''}, - {'','madblocks:dye_red',''}, - }}) minetest.register_craft({ output = 'madblocks:signs_hucksfoodfuel 1', recipe = { {'','madblocks:dye_red',''}, {'','default:sign_wall',''}, diff --git a/hydroponics.lua b/hydroponics.lua index 0d32a21..9b30641 100644 --- a/hydroponics.lua +++ b/hydroponics.lua @@ -218,7 +218,7 @@ end -- WILD PLANTS/SEEDS GENERATING minetest.register_abm({ nodenames = { "default:dirt_with_grass" }, - interval = NATURE_GROWSPEED, + interval = NATURE_GROW_INTERVAL, chance = 80, action = function(pos, node, active_object_count, active_object_count_wider) local air = { x=pos.x, y=pos.y+1,z=pos.z } @@ -233,7 +233,7 @@ minetest.register_abm({ }) minetest.register_abm({ nodenames = get_wildplants, - interval = NATURE_GROWSPEED, + interval = NATURE_GROW_INTERVAL, chance = 2, action = function(pos, node, active_object_count, active_object_count_wider) minetest.env:remove_node({x=pos.x,y=pos.y,z=pos.z}) diff --git a/init.lua b/init.lua index cbde767..a6817c4 100644 --- a/init.lua +++ b/init.lua @@ -1,38 +1,16 @@ local madblocks_modpath = minetest.get_modpath("madblocks") math.randomseed(os.time()) -SEASON_LENGTH = 1500 -- max tested 1500 -WEATHER_CHANGE_INTERVAL = 60 -NATURE_GROW_INTERVAL = 700 -HYDRO_GROW_INTERVAL = 100 -BIRDS = false--true - -NATURE_PLANTS = { 'madblocks:hydroponics_cyanflower','madblocks:hydroponics_magentaflower','madblocks:hydroponics_yellowflower', - 'madblocks:dandylions','madblocks:mushroom'} -HYDROPONICS_PLANTS = { - tomato = {name='tomato',growtype='growtall'}, - peas = {name='peas',growtype='growtall'}, - habanero = {name='habanero',growtype='growtall'}, - cyanflower = {name='cyanflower',growtype='growtall'}, - magentaflower = {name='magentaflower',growtype='growtall'}, - yellowflower = {name='yellowflower',growtype='growtall'}, - rubberplant = {name='rubberplant',growtype='growshort', give_on_harvest='madblocks:rubber'}, - grapes = {name='grapes',growtype='permaculture'}, - coffee = {name='coffee',growtype='permaculture'}, - roses = {name='roses',growtype='growtall',give_on_harvest='madblocks:rosebush'} -} - -- fixed git-120603 dofile (madblocks_modpath .. "/items.lua") dofile (madblocks_modpath .. "/lights.lua") -dofile (madblocks_modpath .. "/nature.lua") -dofile (madblocks_modpath .. "/hydroponics.lua") dofile (madblocks_modpath .. "/misc.lua") dofile (madblocks_modpath .. "/crafts.lua") dofile (madblocks_modpath .. "/bookmarks.lua") -dofile (madblocks_modpath .. "/multinode.lua") -dofile (madblocks_modpath .. "/nocrafts.lua") -- new stuff, look in file for giveme names +dofile (madblocks_modpath .. "/nocrafts.lua") +minetest.require("madblocks","portSeasons") +minetest.require("madblocks","portHydroponics") print('mAdBlOcKs 12.6.12 loaded') ---next: get rid of rubber, rubberplant (5 or 6 nodes), fix crafts +--next: get rid of rubber, rubberplant (5 or 6 nodes), fix crafts \ No newline at end of file diff --git a/items.lua b/items.lua index fb9030a..89305d0 100644 --- a/items.lua +++ b/items.lua @@ -1,156 +1,67 @@ --- *********************************************************************************** --- FUNCTIONS ************************************************** --- *********************************************************************************** -BRICKLIKE = function(nodeid, nodename) - minetest.register_node("madblocks:"..nodeid, { - description = nodename, - tile_images = {"madblocks_"..nodeid..'.png'}, - inventory_image = minetest.inventorycube("madblocks_"..nodeid..'.png'), - is_ground_content = true, - groups = {cracky=3}, - sounds = default.node_sound_stone_defaults(), - }) -end -WOODLIKE = function(nodeid, nodename,fence) - minetest.register_node("madblocks:"..nodeid, { - description = nodename, - tile_images = {"madblocks_"..nodeid..".png"}, - inventory_image = minetest.inventorycube("madblocks_"..nodeid..".png"), - is_ground_content = true, - groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2,flammable=3}, - sounds = default.node_sound_wood_defaults(), - }) - if fence == true then - minetest.register_node("madblocks:"..nodeid.."_fence", { - description = nodename.." Fence", - drawtype = "fencelike", - tile_images = {"madblocks_"..nodeid..".png"}, - inventory_image = "madblocks_"..nodeid.."_fence.png", - wield_image = "madblocks_"..nodeid.."_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,flammable=3}, - sounds = default.node_sound_wood_defaults(), - }) - end -end -SIGNLIKE = function(nodeid, light) - light = light or 0 - minetest.register_node("madblocks:signs_"..nodeid, { - description = "Sign", - drawtype = "signlike", - tile_images = {"madblocks_signs_"..nodeid..".png"}, - inventory_image = "madblocks_signs_"..nodeid..".png", - wield_image = "madblocks_signs_"..nodeid..".png", - paramtype = "light", - paramtype2 = "wallmounted", - is_ground_content = true, - walkable = false, - climbable = false, - selection_box = { - type = "wallmounted", - }, - light_source = light , - light_propagates = true, - sunlight_propagates = true, - - groups = {snappy=2,choppy=2,oddly_breakable_by_hand=3,flammable=2}, - legacy_wallmounted = true, - sounds = default.node_sound_stone_defaults(), - }) -end -PLANTLIKE = function(nodeid, nodename,type,option) - if option == nil then option = false end - - local params ={ description = nodename, drawtype = "plantlike", tile_images = {"madblocks_"..nodeid..'.png'}, - inventory_image = "madblocks_"..nodeid..'.png', wield_image = "madblocks_"..nodeid..'.png', paramtype = "light", } - - if type == 'veg' then - params.groups = {snappy=2,dig_immediate=3,flammable=2} - params.sounds = default.node_sound_leaves_defaults() - if option == false then params.walkable = false end - elseif type == 'met' then -- metallic - params.groups = {cracky=3} - params.sounds = default.node_sound_stone_defaults() - elseif type == 'cri' then -- craft items - params.groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2,flammable=3} - params.sounds = default.node_sound_wood_defaults() - if option == false then params.walkable = false end - elseif type == 'eat' then -- edible - params.groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2,flammable=3} - params.sounds = default.node_sound_wood_defaults() - params.walkable = false - params.on_use = minetest.item_eat(option) - end - minetest.register_node("madblocks:"..nodeid, params) -end +local like = minetest.require("madblocks","like")("madblocks") -- *********************************************************************************** -- STANDARD DEFS ************************************************** -- *********************************************************************************** -BRICKLIKE('bluecyanbrick', 'Blue-Cyan Odd Brick') -BRICKLIKE('magentabrick','Magenta Brick') -BRICKLIKE('greenbrick','Green Brick') -BRICKLIKE('blackbrick','Black Brick') -BRICKLIKE('bluebrick','Blue Brick') -BRICKLIKE('yellowbrick','Yellow Brick') -BRICKLIKE('brownbrick','Brown Brick') -BRICKLIKE('cyanbrick','Cyan Brick') -BRICKLIKE('oddbrick','Oddly Coloured Brick') -BRICKLIKE('mossystonebrick','Mossy Stone Brick') -BRICKLIKE('culturedstone','Cultured Stone') -BRICKLIKE('marblestonebrick','Marble Stone Brick') -BRICKLIKE('shinystonebrick','Sand-Blasted Stone Brick') -BRICKLIKE('cinderblock','Cinderblock') -BRICKLIKE('blackstonebrick','Black Stonebrick') -BRICKLIKE('roundstonebrick','Round Stonebrick') -BRICKLIKE('slimstonebrick','Slim Stonebrick') -BRICKLIKE('greystonebrick','Grey Stonebrick') -BRICKLIKE('medistonebrick','Mediterranean Stonebrick') -BRICKLIKE('whitestonebrick','White Stonebrick') -BRICKLIKE('cement','Cement') -BRICKLIKE('countrystonebrick','Country Stonebrick') -BRICKLIKE('asphalte','Asphalte') -WOODLIKE('woodshingles','Wood Shingles') -WOODLIKE('magentawood','Magenta Stained Wood',true) -WOODLIKE('bluewood','Blue Stained Wood',true) -WOODLIKE('blackwood','Black Stained Wood',true) -WOODLIKE('yellowwood','Yellow Stained Wood',true) -WOODLIKE('cyanwood','Cyan Stained Wood',true) -WOODLIKE('greenwood','Green Stained Wood',true) -WOODLIKE('redwood','Red Stained Wood',true) -WOODLIKE('dye_cyan','Cyan Dye') -WOODLIKE('dye_magenta','Magenta Dye') -WOODLIKE('dye_yellow','Yellow Dye') -WOODLIKE('dye_red','Red Dye') -WOODLIKE('dye_blue','Blue Dye') -WOODLIKE('dye_green','Green Dye') -WOODLIKE('dye_black','Black Dye') -SIGNLIKE('park') -SIGNLIKE('cliff') -SIGNLIKE('interdit') -SIGNLIKE('montreal') -SIGNLIKE('420') -SIGNLIKE('chicken') -SIGNLIKE('obscene') -SIGNLIKE('cafe',7) -SIGNLIKE('drpepper') -SIGNLIKE('dangermines') -SIGNLIKE('hucksfoodfuel') -SIGNLIKE('enjoycoke') -PLANTLIKE('flowers1','Flower Arrangement #1','veg') -PLANTLIKE('flowers2','Flower Arrangement #2','veg') -PLANTLIKE('hangingflowers','Hanging Flower Basket','cri') -PLANTLIKE('stool','Bar Stool','cri',true) -PLANTLIKE('gnome','Garden Gnome','cri') -PLANTLIKE('statue','Statuette','cri') -PLANTLIKE('gargoyle','Gargoyle','cri') -PLANTLIKE('wine','Wine Bottle','eat',1) -PLANTLIKE('coffeecup','Coffee Cup','eat',2) +like.brick('bluecyanbrick', 'Blue-Cyan Odd Brick') +like.brick('magentabrick','Magenta Brick') +like.brick('greenbrick','Green Brick') +like.brick('blackbrick','Black Brick') +like.brick('bluebrick','Blue Brick') +like.brick('yellowbrick','Yellow Brick') +like.brick('brownbrick','Brown Brick') +like.brick('cyanbrick','Cyan Brick') +like.brick('oddbrick','Oddly Coloured Brick') +like.brick('mossystonebrick','Mossy Stone Brick') +like.brick('culturedstone','Cultured Stone') +like.brick('marblestonebrick','Marble Stone Brick') +like.brick('shinystonebrick','Sand-Blasted Stone Brick') +like.brick('cinderblock','Cinderblock') +like.brick('blackstonebrick','Black Stonebrick') +like.brick('roundstonebrick','Round Stonebrick') +like.brick('slimstonebrick','Slim Stonebrick') +like.brick('greystonebrick','Grey Stonebrick') +like.brick('medistonebrick','Mediterranean Stonebrick') +like.brick('whitestonebrick','White Stonebrick') +like.brick('cement','Cement') +like.brick('countrystonebrick','Country Stonebrick') +like.brick('asphalte','Asphalte') +like.wood('woodshingles','Wood Shingles') +like.wood('magentawood','Magenta Stained Wood',true) +like.wood('bluewood','Blue Stained Wood',true) +like.wood('blackwood','Black Stained Wood',true) +like.wood('yellowwood','Yellow Stained Wood',true) +like.wood('cyanwood','Cyan Stained Wood',true) +like.wood('greenwood','Green Stained Wood',true) +like.wood('redwood','Red Stained Wood',true) +like.wood('dye_cyan','Cyan Dye') +like.wood('dye_magenta','Magenta Dye') +like.wood('dye_yellow','Yellow Dye') +like.wood('dye_red','Red Dye') +like.wood('dye_blue','Blue Dye') +like.wood('dye_green','Green Dye') +like.wood('dye_black','Black Dye') +like.sign('park') +like.sign('cliff') +like.sign('interdit') +like.sign('montreal') +like.sign('420') +like.sign('chicken') +like.sign('obscene') +like.sign('cafe',{light=7}) +like.sign('drpepper') +like.sign('dangermines') +like.sign('hucksfoodfuel') +like.sign('enjoycoke') +like.plant('flowers1','Flower Arrangement #1','veg') +like.plant('flowers2','Flower Arrangement #2','veg') +like.plant('hangingflowers','Hanging Flower Basket','cri') +like.plant('stool','Bar Stool','cri',true) +like.plant('gnome','Garden Gnome','cri') +like.plant('statue','Statuette','cri') +like.plant('gargoyle','Gargoyle','cri') +like.plant('wine','Wine Bottle','eat',1) +like.plant('coffeecup','Coffee Cup','eat',2) -- *********************************************************************************** -- ASSORTED DEFS ************************************************** diff --git a/lights.lua b/lights.lua index de48582..479c8cb 100644 --- a/lights.lua +++ b/lights.lua @@ -1,3 +1,5 @@ +local like = minetest.require("madblocks","like")("madblocks") + -- *********************************************************************************** -- FUNCTIONS ************************************************** -- *********************************************************************************** @@ -73,37 +75,16 @@ spotlight_off = function(pos,node) end end -GLOWLIKE = function(nodeid,nodename,drawtype) - if drawtype == nil then - drawtype = 'glasslike' - inv_image = minetest.inventorycube("madblocks_"..nodeid..".png") - else - inv_image = "madblocks_"..nodeid..".png" - end - minetest.register_node("madblocks:"..nodeid, { - description = nodename, - drawtype = drawtype, - tile_images = {"madblocks_"..nodeid..".png"}, - inventory_image = inv_image, - light_propagates = true, - paramtype = "light", - sunlight_propagates = true, - light_source = 15 , - is_ground_content = true, - groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3}, - sounds = default.node_sound_glass_defaults(), - }) -end -- *********************************************************************************** -- DEFS ************************************************** -- *********************************************************************************** -GLOWLIKE('glowyellow','Yellow Glow Glass') -GLOWLIKE('glowgreen','Green Glow Glass') -GLOWLIKE('glowblue','Blue Glow Glass') -GLOWLIKE('glowred','Red Glow Glass') -GLOWLIKE('glowtron','Tron Glow Glass') -GLOWLIKE('fancylamp','Fancy Lamp','plantlike') +like.glow('glowyellow','Yellow Glow Glass') +like.glow('glowgreen','Green Glow Glass') +like.glow('glowblue','Blue Glow Glass') +like.glow('glowred','Red Glow Glass') +like.glow('glowtron','Tron Glow Glass') +like.glow('fancylamp','Fancy Lamp','plantlike') minetest.register_node("madblocks:light", { drawtype = "glasslike", diff --git a/like.lua b/like.lua new file mode 100644 index 0000000..6eb7655 --- /dev/null +++ b/like.lua @@ -0,0 +1,165 @@ +local function normalize(nodeid,nodename) + if nodename == nil then + nodename = nodeid[1]:upper()..nodeid:sub(2) + end + return nodename +end + +local function moduleSpecific(module) + local function fence(nodeid,nodename) + nodename = normalize(nodeid,nodename) + minetest.register_node( + module..":"..nodeid.."_fence", { + description = nodename.." Fence", + drawtype = "fencelike", + tile_images = {module.."_"..nodeid..".png"}, + inventory_image = module.."_"..nodeid.."_fence.png", + wield_image = module.."_"..nodeid.."_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 = {cracky=3}, + sounds = default.node_sound_wood_defaults(), + }) + end + + local function metal(nodeid, nodename,hasFence) + nodename = normalize(nodeid,nodename) + minetest.register_node( + module..":"..nodeid, { + description = nodename, + tile_images = {module.."_"..nodeid..".png"}, + inventory_image = minetest.inventorycube(module.."_"..nodeid..".png"), + is_ground_content = true, + groups = {cracky=3}, + sounds = default.node_sound_wood_defaults(), + }) + if hasFence == true then + fence(nodeid,nodename) + end + end + local function glow(nodeid,nodename,drawtype) + nodename = normalize(nodeid,nodename) + if drawtype == nil then + drawtype = 'glasslike' + inv_image = minetest.inventorycube(module.."_"..nodeid..".png") + else + inv_image = module.."_"..nodeid..".png" + end + minetest.register_node( + module..":"..nodeid, + { + description = nodename, + drawtype = drawtype, + tile_images = {module.."_"..nodeid..".png"}, + inventory_image = inv_image, + light_propagates = true, + paramtype = "light", + sunlight_propagates = true, + light_source = 15 , + is_ground_content = true, + groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3}, + sounds = default.node_sound_glass_defaults(), + }) + end + local function brick (nodeid, nodename) + nodename = normalize(nodeid,nodename) + minetest.register_node( + module..":"..nodeid, + { + description = nodename, + tile_images = {module.."_"..nodeid..'.png'}, + inventory_image = minetest.inventorycube(module.."_"..nodeid..'.png'), + is_ground_content = true, + groups = {cracky=3}, + sounds = default.node_sound_stone_defaults(), + }) + end + local function wood (nodeid, nodename,hasFence) + nodename = normalize(nodeid,nodename) + minetest.register_node( + module..":"..nodeid, + { + description = nodename, + tile_images = {module.."_"..nodeid..".png"}, + inventory_image = minetest.inventorycube(module.."_"..nodeid..".png"), + is_ground_content = true, + groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2,flammable=3}, + sounds = default.node_sound_wood_defaults(), + }) + if hasFence == true then + fence(nodeid,nodename) + end + end + local function sign (nodeid, arg) + if arg == nil then arg = {} end + local light = arg['light'] or 0 + local infix = arg['infix'] or "signs_" + minetest.register_node( + module..":"..infix..nodeid, + { + description = arg['description'] or "Sign", + drawtype = "signlike", + tile_images = {module.."_"..infix..nodeid..".png"}, + inventory_image = module.."_"..infix..nodeid..".png", + wield_image = module.."_"..infix..nodeid..".png", + paramtype = "light", + paramtype2 = "wallmounted", + is_ground_content = true, + walkable = false, + climbable = false, + selection_box = { + type = "wallmounted", + }, + light_source = light , + light_propagates = true, + sunlight_propagates = true, + on_punch = arg['on_punch'], + after_dig_node = arg['after_dig_node'], + groups = {snappy=2,choppy=2,oddly_breakable_by_hand=3,flammable=2}, + legacy_wallmounted = true, + sounds = default.node_sound_stone_defaults(), + }) + end + local function plant (nodeid, nodename, type, option, arg) + + if option == nil then option = false end + if arg == nil then arg = {} end + + local params ={ description = nodename, + drawtype = "plantlike", + tile_images = {module.."_"..nodeid..'.png'}, + inventory_image = module.."_"..nodeid..'.png', + wield_image = module.."_"..nodeid..'.png', + paramtype = "light", + on_punch = arg['on_punch'], + after_dig_node = arg['after_dig_node'] + } + + if type == 'veg' then + params.groups = {snappy=2,dig_immediate=3,flammable=2} + params.sounds = default.node_sound_leaves_defaults() + if option == false then params.walkable = false end + elseif type == 'met' then -- metallic + params.groups = {cracky=3} + params.sounds = default.node_sound_stone_defaults() + elseif type == 'cri' then -- craft items + params.groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2,flammable=3} + params.sounds = default.node_sound_wood_defaults() + if option == false then params.walkable = false end + elseif type == 'eat' then -- edible + params.groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2,flammable=3} + params.sounds = default.node_sound_wood_defaults() + params.walkable = false + params.on_use = minetest.item_eat(option) + end + minetest.register_node(module..":"..nodeid, params) + end + + return {fence=fence,metal=metal,glow=glow,brick=brick,wood=wood,sign=sign,plant=plant} +end + +return moduleSpecific \ No newline at end of file diff --git a/misc.lua b/misc.lua index 1ffd344..dda5447 100644 --- a/misc.lua +++ b/misc.lua @@ -1,73 +1,11 @@ -- *********************************************************************************** -- SOUND NODES ************************************************** -- *********************************************************************************** -SOUNDS = {} -SOUNDNODE = function(nodeid, nodename,drawtype) - SOUNDS[nodeid] = {} - SOUNDS[nodeid].sounds = {} - local on_punch = function(pos,node) - local sound = SOUNDS[nodeid].sounds[minetest.hash_node_position(pos)] - if sound == nil then - local wanted_sound = {name=nodeid, gain=1.5} - SOUNDS[nodeid].sounds[minetest.hash_node_position(pos)] = { handle = minetest.sound_play(wanted_sound, {pos=pos, loop=true}), name = wanted_sound.name, } - else - minetest.sound_stop(sound.handle) - SOUNDS[nodeid].sounds[minetest.hash_node_position(pos)] = nil - end +local soundNode = minetest.require("madblocks","sound")("madblocks") - end - after_dig_node = function(pos,node) - local sound = SOUNDS[nodeid].sounds[minetest.hash_node_position(pos)] - if sound ~= nil then - minetest.sound_stop(sound.handle) - SOUNDS[nodeid].sounds[minetest.hash_node_position(pos)] = nil - nodeupdate(pos) - end - end - if drawtype == 'signlike' then - minetest.register_node("madblocks:"..nodeid, { - description = nodename, - drawtype = "signlike", - tile_images = {"madblocks_"..nodeid..'.png'}, - inventory_image = "madblocks_"..nodeid..'.png', - wield_image = "madblocks_"..nodeid..'.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(), - on_punch = on_punch, - after_dig_node = after_dig_node, - }) - elseif drawtype == '' then - minetest.register_node("madblocks:"..nodeid, { - description = nodename, - drawtype = 'plantlike', - tile_images = {"madblocks_"..nodeid..'.png'}, - inventory_image = "madblocks_"..nodeid..'.png', - wield_image = "madblocks_"..nodeid..'.png', - paramtype = "light", - groups = {cracky=3}, - sounds = default.node_sound_stone_defaults(), - on_punch = on_punch, - after_dig_node = after_dig_node, - }) - end -end - - -SOUNDNODE('siren','Loud Siren') -SOUNDNODE('churchbells','Church Bells') +soundNode('siren','Loud Siren') +soundNode('churchbells','Church Bells') local bigben = {} bigben.sounds = {} diff --git a/multinode.lua b/multinode.lua deleted file mode 100644 index 906e998..0000000 --- a/multinode.lua +++ /dev/null @@ -1,399 +0,0 @@ -MN1 = {} -MN2 = {} -MN1CACHE = {} -MN2CACHE = {} -COPY = {} -COPYREF = {} -PASTEREF ={} -REPLACE = {} -WITH = {} - -ACTIONNODE = function(nodeid, nodename,onplace,ondig) - local params = { - description = nodename, - tile_images = {"madblocks_"..nodeid..".png"}, - inventory_image = minetest.inventorycube("madblocks_"..nodeid..".png"), - is_ground_content = true, - groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2,flammable=3}, - sounds = default.node_sound_wood_defaults(), - } - if onplace ~= nil then params.after_place_node = onplace end - if ondig ~= nil then params.after_dig_node = ondig end - minetest.register_node("madblocks:"..nodeid, params) -end -ACTIONNODE('m1','Multinode Marker 1', function(pos,placer) - local player = placer:get_player_name()-- or "" - if player == '' then print('errorm1') end - if MN1[player] == nil then MN1[player] = {} end - table.insert(MN1[player], pos) - minetest.chat_send_player(player, "marker 1 set") -end) -ACTIONNODE('m2','Multinode Marker 2', function(pos,placer) - local player = placer:get_player_name()-- or "" - if player == '' then print('errorm2') end - if MN2[player] == nil then MN2[player] = {} end - table.insert(MN2[player], pos) - minetest.chat_send_player(player, "marker 2 set") -end) -ACTIONNODE('pasteref','Paste Reference Marker', function(pos,placer) - local player = placer:get_player_name()-- or "" - if player == '' then print('errorm2') end - PASTEREF[player] = pos - minetest.chat_send_player(player, "paste reference set") -end) - --- *********************************************************************************** --- FUNCTIONS ************************************************** --- *********************************************************************************** -compare = function(p1,p2) - result = {} - if p1 > p2 then - result.high = p1 - result.low = p2 - result.diff = p1 - p2 - elseif p2 > p1 then - result.high = p2 - result.low = p1 - result.diff = p2 - p1 - else - result.high = p2 - result.low = p1 - result.diff = 0 - end - if result.diff < 0 then - result.diff = -result.diff - result.mul = -1 - else result.mul = 1 end - return result -end - -local fixlight = function(p) - local no = minetest.env:get_node(p) - no.param1 = 13 - minetest.env:add_node(p, no) -end -local fillnode = function(pos,param) - if param == '-light' then - fixlight(pos) - else - minetest.env:add_node(pos,{type="node",name=param}) - end -end -local removenode = function(pos,param) - if param == '-a' then - minetest.env:remove_node(pos) - else - local node = minetest.env:get_node_or_nil(pos) - if node and node.name == param then minetest.env:remove_node(pos) end - end -end -local copynode = function(pos,param) - local node = minetest.env:get_node_or_nil(pos) - if node then table.insert(COPY[param],{pos=pos,name=node.name}) end -end -local replacenode = function(pos,param) - local node = minetest.env:get_node_or_nil(pos) - if node and node.name == REPLACE[param] then minetest.env:add_node(pos,{type="node",name=WITH[param]}) end -end - -local multinode = function(p1,p2,mutation,param) - local xdif = compare(p1.x,p2.x) - local ydif = compare(p1.y,p2.y) - local zdif = compare(p1.z,p2.z) - if mutation == copynode then COPYREF[param] = p1 end - - if xdif.diff > 0 then - for q =0,xdif.diff,1 do - mutation({x=xdif.high-q*xdif.mul,y=ydif.high,z=zdif.high},param) - if ydif.diff > 0 then - for m =0,ydif.diff,1 do - mutation({x=xdif.high-q*xdif.mul,y=ydif.high-m*ydif.mul,z=zdif.high},param) - if zdif.diff > 0 then - for i =0,zdif.diff,1 do - mutation({x=xdif.high-q*xdif.mul,y=ydif.high-m*ydif.mul,z=zdif.high-i*zdif.mul},param) - end - end - end - elseif zdif.diff > 0 then - for i =0,zdif.diff,1 do - mutation({x=xdif.high-q*xdif.mul,y=ydif.high,z=zdif.high-i*zdif.mul},param) - end - end - - end - elseif ydif.diff > 0 then - for m =0,ydif.diff,1 do - mutation({x=xdif.high,y=ydif.high-m*ydif.mul,z=zdif.high},param) - if zdif.diff > 0 then - for i =0,zdif.diff,1 do - mutation({x=xdif.high,y=ydif.high-m*ydif.mul,z=zdif.high-i*zdif.mul},param) - end - end - end - elseif zdif.diff > 0 then - for i =0,zdif.diff,1 do - mutation({x=xdif.high,y=ydif.high,z=zdif.high-i*zdif.mul},param) - end - else - return false - end -end - --- *********************************************************************************** --- CHATCOMMANDS ************************************************** --- *********************************************************************************** -minetest.register_chatcommand("reload", { - params = "", - description = "restore last multinode list", - privs = {server=true}, - func = function(name, param) - MN1[name] = MN1CACHE[name] - MN2[name] = MN2CACHE[name] - end, -}) -minetest.register_chatcommand("clear", { - params = "", - description = "clear", - privs = {server=true}, - func = function(name, param) - COPY[name] = {} - COPYREF[name] = {} - PASTEREF[name] = {} - REPLACE[name] = {} - WITH[name] = {} - MN1[name] = {} - MN2[name] = {} - end, -}) -minetest.register_chatcommand("p1", { - params = ",,", - description = "first corner", - privs = {server=true}, - func = function(name, param) - if MN1[name] == nil then MN1[name] = {} end - local p = {} - p.x, p.y, p.z = string.match(param, "^([%d.-]+)[, ] *([%d.-]+)[, ] *([%d.-]+)$") - if p.x and p.y and p.z then - table.insert(MN1[name], p) - minetest.chat_send_player(name, "p1 set") - return - else - local target = minetest.env:get_player_by_name(name) - if target then - table.insert(MN1[name],target:getpos()) - minetest.chat_send_player(name, "p1 set") - return - end - end - end, -}) -minetest.register_chatcommand("p2", { - params = ",,", - description = "opposite corner", - privs = {server=true}, - func = function(name, param) - if MN2[name] == nil then MN2[name] = {} end - local p = {} - p.x, p.y, p.z = string.match(param, "^([%d.-]+)[, ] *([%d.-]+)[, ] *([%d.-]+)$") - if p.x and p.y and p.z then - table.insert(MN2[name], p) - minetest.chat_send_player(name, "p2 set") - return - else - local target = minetest.env:get_player_by_name(name) - if target then - table.insert(MN2[name], target:getpos()) - minetest.chat_send_player(name, "p2 set") - return - end - end - end, -}) - -minetest.register_chatcommand("fill", { - params = "", - description = "fill with given node", - privs = {server=true}, - func = function(name, param) - if table.getn(MN1[name]) == 0 or table.getn(MN2[name]) == 0 or param == nil then - print('failed check 1') - return end - MN1CACHE[name] = MN1[name]--LASTFILL1 = FILL1 - MN2CACHE[name] = MN2[name]--LASTFILL2 = FILL2 - MN1[name] = {} - MN2[name] = {} - for a = 1,table.getn(MN1CACHE[name]),1 do - if MN1CACHE[name][a] == nil or MN2CACHE[name][a] == nil then print('failed check 2') return end - if multinode(MN1CACHE[name][a],MN2CACHE[name][a],fillnode,param) == false then minetest.chat_send_player(name, "there is no fill only zuul") end - end - end, -}) -minetest.register_chatcommand("remove", { - params = "", - description = "to remove specific node or use flag '-a'", - privs = {server=true}, - func = function(name, param) - if table.getn(MN1[name]) == 0 or table.getn(MN2[name]) == 0 or param == nil then - print('failed check 1') - return end - MN1CACHE[name] = MN1[name]--LASTFILL1 = FILL1 - MN2CACHE[name] = MN2[name]--LASTFILL2 = FILL2 - MN1[name] = {} - MN2[name] = {} - for a = 1,table.getn(MN1CACHE[name]),1 do - if MN1CACHE[name][a] == nil or MN2CACHE[name][a] == nil then print('failed check 2') return end - if multinode(MN1CACHE[name][a],MN2CACHE[name][a],removenode,param) == false then minetest.chat_send_player(name, "there is no remove only zuul") end - end - end, -}) -minetest.register_chatcommand("copy", { - params = "", - description = "copy", - privs = {server=true}, - func = function(name, param) - if MN1[name] == nil or MN2[name] == nil then minetest.chat_send_player(name, "a klingon that kills without showing his face, has no honor") return end - if table.getn(MN1[name]) == 0 or table.getn(MN2[name]) == 0 or param == nil then - print('failed check 1') - return end - MN1CACHE[name] = MN1[name] - MN2CACHE[name] = MN2[name] - MN1[name] = {} - MN2[name] = {} - if COPY[name] == nil then COPY[name] = {} end - if COPYREF[name] == nil then COPYREF[name] = {} end - for a = 1,table.getn(MN1CACHE[name]),1 do - if MN1CACHE[name][a] == nil or MN2CACHE[name][a] == nil then print('failed check 2') return end - if multinode(MN1CACHE[name][a],MN2CACHE[name][a],copynode,name) == false then minetest.chat_send_player(name, "there is no copy only zuul") end - end - end, -}) -minetest.register_chatcommand("paste", { - params = "", - description = "paste", - privs = {server=true}, - func = function(name, param) - if PASTEREF[name] then - newpos = PASTEREF[name] - else - local target = minetest.env:get_player_by_name(name) - if target then - newpos = target:getpos() - end - end - - difx = COPYREF[name].x - newpos.x - dify = COPYREF[name].y - newpos.y - difz = COPYREF[name].z - newpos.z - - for a = 1,table.getn(COPY[name]),1 do - if param ~= '+90' and param ~= '-90' and param ~= '+180' then - pastepos = {x=COPY[name][a].pos.x-difx,y=COPY[name][a].pos.y-dify,z=COPY[name][a].pos.z-difz} - else - local x = COPY[name][a].pos.x -COPYREF[name].x - local y = COPY[name][a].pos.y - local z = COPY[name][a].pos.z -COPYREF[name].z - local newx,newz = nil - if param == '+90' then - newx = z - newz = -(x) - elseif param == '-90' then - newx = -(z) - newz = x - elseif param == '+180' then - newx = -(x) - newz = -(z) - else - return - end - x = newx + COPYREF[name].x - z = newz + COPYREF[name].z - pastepos = {x=x-difx,y=y-dify,z=z-difz} - end - minetest.env:add_node(pastepos,{type="node",name=COPY[name][a].name}) - end - PASTEREF[name] = nil - end, -}) -minetest.register_chatcommand("replace", { - params = "", - description = "clear", - privs = {server=true}, - func = function(name, param) - REPLACE[name] = param - end, -}) -minetest.register_chatcommand("with", { - params = "", - description = "clear", - privs = {server=true}, - func = function(name, param) - WITH[name] = param - end, -}) -minetest.register_chatcommand("doit", { - params = "", - description = "clear", - privs = {server=true}, - func = function(name, param) - if table.getn(MN1[name]) == 0 or table.getn(MN2[name]) == 0 then - print('failed check 1') - return end - MN1CACHE[name] = MN1[name] - MN2CACHE[name] = MN2[name] - MN1[name] = {} - MN2[name] = {} - for a = 1,table.getn(MN1CACHE[name]),1 do - if MN1CACHE[name][a] == nil or MN2CACHE[name][a] == nil then print('failed check 2') return end - if multinode(MN1CACHE[name][a],MN2CACHE[name][a],replacenode,name) == false then minetest.chat_send_player(name, "there is no replace only zuul") end - end - REPLACE[name] = nil - WITH[name] = nil - end, -}) -minetest.register_chatcommand("saveas", { - params = "", - description = "paste", - privs = {server=true}, - func = function(name, param) - if COPY[name] == nil then minetest.chat_send_player(name, "a klingon that kills without showing his face, has no honor") return end - - local output = '' -- WRITE CHANGES TO FILE - local f = io.open(minetest.get_modpath('madblocks')..'/buildings/'..param..'.bld', "w") - if f == nil then minetest.chat_send_player(name, "a klingon that kills without showing his face, has no honor") return end - for a = 1,table.getn(COPY[name]),1 do - local x = COPY[name][a].pos.x -COPYREF[name].x - local y = COPY[name][a].pos.y -COPYREF[name].y - local z = COPY[name][a].pos.z -COPYREF[name].z - output = output..COPY[name][a].name..'~'..x..','..y..','..z..';' - end - f:write(output) - io.close(f) - minetest.chat_send_player(name, param.." saved") - - end, -}) -minetest.register_chatcommand("load", { - params = "", - description = "paste", - privs = {server=true}, - func = function(name, param) - local bldfile = io.open(minetest.get_modpath('madblocks')..'/buildings/'..param..'.bld', "r") - if bldfile then - COPY[name] = {} - COPYREF[name] = {x=0,y=0,z=0} - local contents = bldfile:read() - io.close(bldfile) - if contents ~= nil then - local entries = contents:split(";") - for i,entry in pairs(entries) do - local nodename, coords = unpack(entry:split("~")) - local p = {} - p.x, p.y, p.z = string.match(coords, "^([%d.-]+)[, ] *([%d.-]+)[, ] *([%d.-]+)$") - if p.x and p.y and p.z then - table.insert(COPY[name],{name = nodename, pos = {x = tonumber(p.x),y= tonumber(p.y),z = tonumber(p.z)}}) - end - end - end - end - end, -}) diff --git a/nature.lua b/nature.lua deleted file mode 100644 index 8765cca..0000000 --- a/nature.lua +++ /dev/null @@ -1,413 +0,0 @@ - --- *********************************************************************************** --- SEASONAL CHANGES ************************************************** --- *********************************************************************************** -SEASON_FILE = minetest.get_worldpath()..'/madblocks.season' - -local function set_season(t) - CURRENT_SEASON = t - -- write to file - local f = io.open(SEASON_FILE, "w") - f:write(CURRENT_SEASON) - io.close(f) -end - -local f = io.open(SEASON_FILE, "r") -if f ~= nil then - CURRENT_SEASON = f:read("*n") - io.close(f) -else - print('could not find season file, creating one (setting winter).') - set_season(1) - -end - -switch_seasons = function() - if CURRENT_SEASON == 1 then - set_season(2) -- set to spring - print('changing to spring') - minetest.after(SEASON_LENGTH,switch_seasons) - elseif CURRENT_SEASON == 2 then - set_season(3) -- set to summer - print('changing to summer') - minetest.after(SEASON_LENGTH,switch_seasons) - elseif CURRENT_SEASON == 3 then - set_season(4) -- set to autumn - print('changing to autumn') - minetest.after(SEASON_LENGTH,switch_seasons) - elseif CURRENT_SEASON == 4 then - set_season(1) -- set to winter - print('changing to winter') - minetest.after(SEASON_LENGTH,switch_seasons) - - end -end - -minetest.after(SEASON_LENGTH,switch_seasons) - -minetest.register_chatcommand("season", { - params = "", - description = "set the season", - func = function(name, param) - if param == 'winter' or param == 'Winter' then set_season(1) - elseif param == 'spring' or param == 'Spring' then set_season(2) - elseif param == 'summer' or param == 'Summer' then set_season(3) - elseif param == 'fall' or param == 'Fall' then set_season(4) - elseif param == 'pause' or param == 'Pause' then set_season(0) - minetest.chat_send_player(name, "Season paused.") - return - else - minetest.chat_send_player(name, "Invalid paramater '"..param.."', try 'winter','spring','summer' or 'fall'.") - return - end - minetest.chat_send_player(name, "Season changed.") - end, -}) - - -minetest.register_abm({ - nodenames = { "default:dirt_with_grass","madblocks:grass_autumn",'madblocks:grass_winter',"madblocks:grass_spring", - 'default:leaves','madblocks:leaves_autumn','madblocks:leaves_winter','madblocks:leaves_spring', - "default:water_source","default:water_flowing", "default:cactus","default:desert_sand","default:sand","madblocks:desertsand_winter", "madblocks:sand_winter","madblocks:cactus_winter",'madblocks:ice_source','madblocks:ice_flowing' }, - interval = WEATHER_CHANGE_INTERVAL, - chance = 6, - - action = function(pos, node, active_object_count, active_object_count_wider) - if CURRENT_SEASON == 1 then - if node.name == 'madblocks:grass_autumn' or node.name == 'default:dirt_with_grass' or node.name == 'madblocks:grass_spring' then - minetest.env:add_node(pos,{type="node",name='madblocks:grass_winter'}) - elseif node.name == 'madblocks:leaves_autumn' or node.name == 'default:leaves' or node.name == 'madblocks:leaves_spring' then - minetest.env:add_node(pos,{type="node",name='madblocks:leaves_winter'}) - - elseif node.name == 'default:desert_sand' then - above = minetest.env:get_node_or_nil({x=pos.x,y=pos.y+1,z=pos.z}) - if above ~= nil and above.name == 'air' then - minetest.env:add_node(pos,{type="node",name='madblocks:desertsand_winter'}) - end - elseif node.name == 'default:sand' then - above = minetest.env:get_node_or_nil({x=pos.x,y=pos.y+1,z=pos.z}) - if above ~= nil and above.name == 'air' then - minetest.env:add_node(pos,{type="node",name='madblocks:sand_winter'}) - end - elseif node.name == 'default:cactus' then - above = minetest.env:get_node_or_nil({x=pos.x,y=pos.y+1,z=pos.z}) - if above ~= nil and above.name == 'air' then - minetest.env:add_node(pos,{type="node",name='madblocks:cactus_winter'}) - end - elseif node.name == 'default:water_source' then - above = minetest.env:get_node_or_nil({x=pos.x,y=pos.y+1,z=pos.z}) - if above ~= nil and above.name == 'air' then - minetest.env:add_node(pos,{type="node",name='madblocks:ice_source'}) - end - elseif node.name == 'default:water_flowing' then - above = minetest.env:get_node_or_nil({x=pos.x,y=pos.y+1,z=pos.z}) - if above ~= nil and above.name == 'air' then - minetest.env:add_node(pos,{type="node",name='madblocks:ice_flowing'}) - end - end - elseif CURRENT_SEASON == 2 then - if node.name == 'madblocks:grass_winter' or node.name == 'madblocks:grass_autumn' or node.name == 'default:dirt_with_grass' then - minetest.env:add_node(pos,{type="node",name='madblocks:grass_spring'}) - elseif node.name == 'madblocks:leaves_winter' or node.name == 'madblocks:leaves_autumn' or node.name == 'default:leaves' then - minetest.env:add_node(pos,{type="node",name='madblocks:leaves_spring'}) - elseif node.name == 'madblocks:desertsand_winter' then - minetest.env:add_node(pos,{type="node",name='default:desert_sand'}) - elseif node.name == 'madblocks:sand_winter' then - minetest.env:add_node(pos,{type="node",name='default:sand'}) - elseif node.name == 'madblocks:cactus_winter' then - minetest.env:add_node(pos,{type="node",name='default:cactus'}) - elseif node.name == 'madblocks:ice_source' then - minetest.env:add_node(pos,{type="node",name='default:water_source'}) - elseif node.name == 'madblocks:ice_flowing' then - minetest.env:add_node(pos,{type="node",name='default:water_flowing'}) - end - elseif CURRENT_SEASON == 3 then - if node.name == 'madblocks:leaves_spring' or node.name == 'madblocks:leaves_winter' or node.name == 'madblocks:leaves_autumn' then - minetest.env:add_node(pos,{type="node",name='default:leaves'}) - elseif node.name == 'madblocks:grass_spring' or node.name == 'madblocks:grass_winter' or node.name == 'madblocks:grass_autumn' then - minetest.env:add_node(pos,{type="node",name='default:dirt_with_grass'}) - elseif node.name == 'madblocks:desertsand_winter' then - minetest.env:add_node(pos,{type="node",name='default:desert_sand'}) - elseif node.name == 'madblocks:sand_winter' then - minetest.env:add_node(pos,{type="node",name='default:sand'}) - elseif node.name == 'madblocks:cactus_winter' then - minetest.env:add_node(pos,{type="node",name='default:cactus'}) - elseif node.name == 'madblocks:ice_source' then - minetest.env:add_node(pos,{type="node",name='default:water_source'}) - elseif node.name == 'madblocks:ice_flowing' then - minetest.env:add_node(pos,{type="node",name='default:water_flowing'}) - end - elseif CURRENT_SEASON == 4 then - if node.name == 'default:leaves' or node.name == 'madblocks:leaves_spring' or node.name == 'madblocks:leaves_winter' then - minetest.env:add_node(pos,{type="node",name='madblocks:leaves_autumn'}) - elseif node.name == 'default:dirt_with_grass' or node.name == 'madblocks:grass_spring' or node.name == 'madblocks:grass_winter' then - minetest.env:add_node(pos,{type="node",name='madblocks:grass_autumn'}) - elseif node.name == 'madblocks:desertsand_winter' then - minetest.env:add_node(pos,{type="node",name='default:desert_sand'}) - elseif node.name == 'madblocks:sand_winter' then - minetest.env:add_node(pos,{type="node",name='default:sand'}) - elseif node.name == 'madblocks:cactus_winter' then - minetest.env:add_node(pos,{type="node",name='default:cactus'}) - elseif node.name == 'madblocks:ice_source' then - minetest.env:add_node(pos,{type="node",name='default:water_source'}) - elseif node.name == 'madblocks:ice_flowing' then - minetest.env:add_node(pos,{type="node",name='default:water_flowing'}) - end - end - end -}) - --- *********************************************************************************** --- BIRDS SPRING/SUMMER ************************************************** --- *********************************************************************************** -if BIRDS == true then - local bird = {} - bird.sounds = {} - bird_sound = function(p) - local wanted_sound = {name="bird", gain=0.6} - bird.sounds[minetest.hash_node_position(p)] = { - handle = minetest.sound_play(wanted_sound, {pos=p, loop=true}), - name = wanted_sound.name, } - end - - bird_stop = function(p) - local sound = bird.sounds[minetest.hash_node_position(p)] - if sound ~= nil then - minetest.sound_stop(sound.handle) - bird.sounds[minetest.hash_node_position(p)] = nil - end - end - minetest.register_on_dignode(function(p, node) - if node.name == "madblocks:bird" then - bird_stop(p) - - end - end) - minetest.register_abm({ - nodenames = { "madblocks:leaves_spring",'default:leaves' }, - interval = NATURE_GROW_INTERVAL, - chance = 200, - action = function(pos, node, active_object_count, active_object_count_wider) - local air = { x=pos.x, y=pos.y+1,z=pos.z } - local is_air = minetest.env:get_node_or_nil(air) - if is_air ~= nil and is_air.name == 'air' then - minetest.env:add_node(air,{type="node",name='madblocks:bird'}) - bird_sound(air) - end - end - }) - minetest.register_abm({ - nodenames = {'madblocks:bird' }, - interval = NATURE_GROW_INTERVAL, - chance = 2, - action = function(pos, node, active_object_count, active_object_count_wider) - minetest.env:remove_node(pos) - bird_stop(pos) - end - }) -end --- *********************************************************************************** --- NATURE_GROW ************************************************** --- *********************************************************************************** -minetest.register_abm({ - nodenames = { "default:dirt_with_grass",'madblocks:grass_spring' }, - interval = NATURE_GROW_INTERVAL, - chance = 200, - action = function(pos, node, active_object_count, active_object_count_wider) - local air = { x=pos.x, y=pos.y+1,z=pos.z } - local is_air = minetest.env:get_node_or_nil(air) - if is_air ~= nil and is_air.name == 'air' then - local count = table.getn(NATURE_PLANTS) - local random_plant = math.random(1,count) - minetest.env:add_node({x=pos.x,y=pos.y+1,z=pos.z},{type="node",name=NATURE_PLANTS[random_plant]}) - end - end -}) - -minetest.register_abm({ - nodenames = NATURE_PLANTS, - interval = NATURE_GROW_INTERVAL, - chance = 2, - action = function(pos, node, active_object_count, active_object_count_wider) - minetest.env:remove_node({x=pos.x,y=pos.y,z=pos.z}) - end -}) - --- *********************************************************************************** --- SLIMTREES ************************************************** --- *********************************************************************************** -minetest.register_abm({ - nodenames = { "madblocks:slimtree" }, - interval = 60, - chance = 1, - - action = function(pos, node, active_object_count, active_object_count_wider) - minetest.env:add_node({x=pos.x,y=pos.y,z=pos.z},{type="node",name="madblocks:slimtree_wood"}) - minetest.env:add_node({x=pos.x,y=pos.y+1,z=pos.z},{type="node",name="madblocks:slimtree_wood"}) - minetest.env:add_node({x=pos.x,y=pos.y+2,z=pos.z},{type="node",name="madblocks:slimtree_wood"}) - - minetest.env:add_node({x=pos.x,y=pos.y+3,z=pos.z},{type="node",name="madblocks:slimtree_wood"}) - minetest.env:add_node({x=pos.x+1,y=pos.y+3,z=pos.z},{type="node",name="default:leaves"}) - minetest.env:add_node({x=pos.x-1,y=pos.y+3,z=pos.z},{type="node",name="default:leaves"}) - minetest.env:add_node({x=pos.x,y=pos.y+3,z=pos.z+1},{type="node",name="default:leaves"}) - minetest.env:add_node({x=pos.x,y=pos.y+3,z=pos.z-1},{type="node",name="default:leaves"}) - - - minetest.env:add_node({x=pos.x,y=pos.y+4,z=pos.z},{type="node",name="default:leaves"}) - minetest.env:add_node({x=pos.x+1,y=pos.y+4,z=pos.z},{type="node",name="default:leaves"}) - minetest.env:add_node({x=pos.x-1,y=pos.y+4,z=pos.z},{type="node",name="default:leaves"}) - minetest.env:add_node({x=pos.x,y=pos.y+4,z=pos.z+1},{type="node",name="default:leaves"}) - minetest.env:add_node({x=pos.x,y=pos.y+4,z=pos.z-1},{type="node",name="default:leaves"}) - - - minetest.env:add_node({x=pos.x,y=pos.y+5,z=pos.z},{type="node",name="default:leaves"}) - minetest.env:add_node({x=pos.x+1,y=pos.y+5,z=pos.z},{type="node",name="default:leaves"}) - minetest.env:add_node({x=pos.x-1,y=pos.y+5,z=pos.z},{type="node",name="default:leaves"}) - minetest.env:add_node({x=pos.x,y=pos.y+5,z=pos.z+1},{type="node",name="default:leaves"}) - minetest.env:add_node({x=pos.x,y=pos.y+5,z=pos.z-1},{type="node",name="default:leaves"}) - - minetest.env:add_node({x=pos.x,y=pos.y+6,z=pos.z},{type="node",name="default:leaves"}) - minetest.env:add_node({x=pos.x+1,y=pos.y+6,z=pos.z},{type="node",name="default:leaves"}) - minetest.env:add_node({x=pos.x-1,y=pos.y+6,z=pos.z},{type="node",name="default:leaves"}) - minetest.env:add_node({x=pos.x,y=pos.y+6,z=pos.z+1},{type="node",name="default:leaves"}) - minetest.env:add_node({x=pos.x,y=pos.y+6,z=pos.z-1},{type="node",name="default:leaves"}) - end -}) - --- *********************************************************************************** --- NODES ************************************************** --- *********************************************************************************** -PLANTLIKE('slimtree','Slimtree Sapling','veg') -PLANTLIKE('bird','Bird','veg') -PLANTLIKE('dandylions','Dandylions','veg') -PLANTLIKE('mushroom','Wild Mushroom','veg') -minetest.register_node("madblocks:slimtree_wood", { - description = "Slimtree", - drawtype = "fencelike", - tile_images = {"madblocks_tree.png"}, - inventory_image = "madblocks_tree.png", - wield_image = "madblocks_tree.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 = {tree=1,snappy=2,choppy=2,oddly_breakable_by_hand=2,flammable=2}, - sounds = default.node_sound_wood_defaults(), - drop = 'default:fence_wood', -}) -minetest.register_node("madblocks:ice_source", { - description = "Ice", - tile_images = {"madblocks_ice.png"}, - is_ground_content = true, - groups = {snappy=2,choppy=3}, - sounds = default.node_sound_stone_defaults(), -}) -minetest.register_node("madblocks:ice_flowing", { - description = "Ice", - tile_images = {"madblocks_ice.png"}, - is_ground_content = true, - groups = {snappy=2,choppy=3}, - sounds = default.node_sound_stone_defaults(), -}) -minetest.register_node("madblocks:leaves_autumn", { - description = "Leaves", - drawtype = "allfaces_optional", - visual_scale = 1.3, - tile_images = {"madblocks_leaves_autumn.png"}, - paramtype = "light", - groups = {snappy=3, leafdecay=3, flammable=2}, - drop = { - max_items = 1, items = { - {items = {'default:sapling'}, rarity = 20,}, - {items = {'madblocks:leaves_autumn'},} - }}, - sounds = default.node_sound_leaves_defaults(), -}) -minetest.register_node("madblocks:leaves_spring", { - description = "Leaves", - drawtype = "allfaces_optional", - visual_scale = 1.3, - tile_images = {"madblocks_leaves_spring.png"}, - paramtype = "light", - groups = {snappy=3, leafdecay=3, flammable=2}, - drop = { - max_items = 1, items = { - {items = {'default:sapling'}, rarity = 20,}, - {items = {'madblocks:leaves_spring'},} - }}, - sounds = default.node_sound_leaves_defaults(), -}) -minetest.register_node("madblocks:grass_spring", { - description = "Dirt with snow", - tile_images = {"madblocks_grass_spring.png", "default_dirt.png", "default_dirt.png^madblocks_grass_spring_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("madblocks:grass_autumn", { - description = "Dirt with snow", - tile_images = {"madblocks_grass_autumn.png", "default_dirt.png", "default_dirt.png^madblocks_grass_autumn_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("madblocks:grass_winter", { - description = "Dirt with snow", - tile_images = {"madblocks_snow.png", "default_dirt.png", "default_dirt.png^madblocks_grass_w_snow_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("madblocks:leaves_winter", { - description = "Leaves", - drawtype = "allfaces_optional", - visual_scale = 1.3, - tile_images = {"madblocks_leaves_with_snow.png"}, - paramtype = "light", - groups = {snappy=3, leafdecay=3, flammable=2}, - drop = { - max_items = 1, items = { - {items = {'default:sapling'}, rarity = 20,}, - {items = {'madblocks:leaves_winter'},} - }}, - sounds = default.node_sound_leaves_defaults(), -}) -minetest.register_node("madblocks:cactus_winter", { - description = "Cactus", - tile_images = {"madblocks_cactus_wsnow_top.png", "madblocks_cactus_wsnow_top.png", "madblocks_cactus_wsnow_side.png"}, - is_ground_content = true, - groups = {snappy=2,choppy=3,flammable=2}, - sounds = default.node_sound_wood_defaults(), -}) -minetest.register_node("madblocks:sand_winter", { - description = "Sand with snow", - tile_images = {"madblocks_snow.png", "default_sand.png", "default_sand.png^madblocks_sand_w_snow_side.png"}, - is_ground_content = true, - groups = {crumbly=3}, - drop = 'default:sand', - sounds = default.node_sound_dirt_defaults({ - footstep = {name="default_grass_footstep", gain=0.4}, - }), -}) -minetest.register_node("madblocks:desertsand_winter", { - description = "Desert Sand with snow", - tile_images = {"madblocks_snow.png", "default_desert_sand.png", "default_desert_sand.png^madblocks_desertsand_w_snow_side.png"}, - is_ground_content = true, - groups = {crumbly=3}, - drop = 'default:desert_sand', - sounds = default.node_sound_dirt_defaults({ - footstep = {name="default_grass_footstep", gain=0.4}, - }), -}) - diff --git a/nocrafts.lua b/nocrafts.lua index 545ab85..c726f68 100644 --- a/nocrafts.lua +++ b/nocrafts.lua @@ -1,58 +1,33 @@ -METALLIKE = function(nodeid, nodename,fence) - minetest.register_node("madblocks:"..nodeid, { - description = nodename, - tile_images = {"madblocks_"..nodeid..".png"}, - inventory_image = minetest.inventorycube("madblocks_"..nodeid..".png"), - is_ground_content = true, - groups = {cracky=3}, - sounds = default.node_sound_wood_defaults(), - }) - if fence == true then - minetest.register_node("madblocks:"..nodeid.."_fence", { - description = nodename.." Fence", - drawtype = "fencelike", - tile_images = {"madblocks_"..nodeid..".png"}, - inventory_image = "madblocks_"..nodeid.."_fence.png", - wield_image = "madblocks_"..nodeid.."_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 = {cracky=3}, - sounds = default.node_sound_wood_defaults(), - }) - end -end +local like = minetest.require("madblocks","like")("madblocks") +local soundNode = minetest.require("madblocks","sound")("madblocks") -- *********************************************************************************** -- NEW METALLIC ITEMS ************************************************** -- *********************************************************************************** -METALLIKE('brushedmetal','Brushed Metal',true) -METALLIKE('yellow_rustedmetal','Yellow Painted Rusted Metal',true) -METALLIKE('texturedmetal','Textured Metal') -METALLIKE('metalbulkhead','Metal Bulkhead') -METALLIKE('stripedmetal','Caution Striped Metal') -BRICKLIKE('brownmedistonebrick','Mediterranean Stonebrick (Brown Tones)') +like.metal('brushedmetal','Brushed Metal',true) +like.metal('yellow_rustedmetal','Yellow Painted Rusted Metal',true) +like.metal('texturedmetal','Textured Metal') +like.metal('metalbulkhead','Metal Bulkhead') +like.metal('stripedmetal','Caution Striped Metal') +like.brick('brownmedistonebrick','Mediterranean Stonebrick (Brown Tones)') -- *********************************************************************************** -- RIVEN/MYST (DECO) NODES ************************************************** -- *********************************************************************************** -SOUNDNODE('riven1','Riven Art (1)','signlike') -SOUNDNODE('riven2','Riven Art (2)','signlike') -SOUNDNODE('riven3','Riven Art (3)','signlike') -METALLIKE('rivenwood','Riven Wood') -METALLIKE('rivenwoodblue','Riven Wood (Blue)') -METALLIKE('rivenstone1','Riven Stone (1)') -METALLIKE('rivenstone2','Riven Stone (2)') -METALLIKE('rivenstoneblue','Riven Stone (Blue)') -METALLIKE('rivenmetal','Riven Rusted Metal') -METALLIKE('rivenbulkhead','Riven Metal Bulkhead') -METALLIKE('rivengoldstone1','Riven Gold Stone (1)') -METALLIKE('rivengoldstone2','Riven Gold Stone (2)') +soundNode('riven1','Riven Art (1)','signlike') +soundNode('riven2','Riven Art (2)','signlike') +soundNode('riven3','Riven Art (3)','signlike') +like.metal('rivenwood','Riven Wood') +like.metal('rivenwoodblue','Riven Wood (Blue)') +like.metal('rivenstone1','Riven Stone (1)') +like.metal('rivenstone2','Riven Stone (2)') +like.metal('rivenstoneblue','Riven Stone (Blue)') +like.metal('rivenmetal','Riven Rusted Metal') +like.metal('rivenbulkhead','Riven Metal Bulkhead') +like.metal('rivengoldstone1','Riven Gold Stone (1)') +like.metal('rivengoldstone2','Riven Gold Stone (2)') minetest.register_node("madblocks:rivenbeetle", { description = "Sign", @@ -300,7 +275,7 @@ minetest.register_node("madblocks:palmleaves", { }, groups = {bendy=2,snappy=1,dig_immediate=2}, }) -PLANTLIKE('palmtree','Palmtree Sapling','veg') +like.plant('palmtree','Palmtree Sapling','veg') minetest.register_abm({ nodenames = { "madblocks:palmtree" }, interval = 120, diff --git a/portHydroponics.lua b/portHydroponics.lua new file mode 100644 index 0000000..aa61a36 --- /dev/null +++ b/portHydroponics.lua @@ -0,0 +1,40 @@ +local port = minetest.require("__builtin","port") + +local plants = { + tomato = {}, + peas = {}, + habanero = {}, + cyanflower = {}, + magentaflower = {}, + yellowflower = {}, + rubberplant = {short=true, give_on_harvest='hydroponics:rubber'}, + grapes = {permaculture=true}, + coffee = {permaculture=true}, + roses = {give_on_harvest='hydroponics:rosebush'} +} + +local stages = { + "seeds", + "seedlings", + "sproutlings", + 1, + 2, + 3, + 4 +} + +for plant,eh in pairs(plants) do + port("madblocks","hydroponics","hydroponics_"..plant,plant) + port("madblocks","hydroponics","hydroponics_wild_"..plant,"wild_"..plant) + for i,stage in ipairs(stages) do + local name = "hydroponics" + local n = tonumber(stage) + if n ~= nil then + name = name .. '_' .. plant .. stage + else + name = name .. '_' .. stage .. '_' .. plant + end + local toname = plant..'_'..stage + port("madblocks","hydroponics",name,toname) + end +end \ No newline at end of file diff --git a/portSeasons.lua b/portSeasons.lua new file mode 100644 index 0000000..8f390f5 --- /dev/null +++ b/portSeasons.lua @@ -0,0 +1,20 @@ +local port = minetest.require("__builtin","port") +-- sigh... +local seasons = { + [1]= "winter", + [2]= "spring", + [3]= "summer", + [4]= "autumn" +} +for season = 1,4,1 do + if season ~= 3 then + port("madblocks","nature","grass_"..seasons[season]) + port("madblocks","nature","leaves_"..seasons[season]) + end +end +port("madblocks","nature","cactus_winter") +port("madblocks","nature","ice_flowing") +port("madblocks","nature","ice_source") +port("madblocks","nature","dandylions") +port("madblocks","nature","mushroom") + diff --git a/sound.lua b/sound.lua new file mode 100644 index 0000000..c3c892d --- /dev/null +++ b/sound.lua @@ -0,0 +1,49 @@ +local like = minetest.require("madblocks","like")("madblocks") + +-- *********************************************************************************** +-- SOUND NODES ************************************************** +-- *********************************************************************************** + +local function moduleSpecific(module) + local SOUNDS = {} + function register(nodeid, nodename,drawtype) + SOUNDS[nodeid] = {} + SOUNDS[nodeid].sounds = {} + local function on_punch(pos,node) + local sound = SOUNDS[nodeid].sounds[minetest.hash_node_position(pos)] + if sound == nil then + local wanted_sound = {name=nodeid, gain=1.5} + SOUNDS[nodeid].sounds[minetest.hash_node_position(pos)] = { handle = minetest.sound_play(wanted_sound, {pos=pos, loop=true}), name = wanted_sound.name, } + + else + minetest.sound_stop(sound.handle) + SOUNDS[nodeid].sounds[minetest.hash_node_position(pos)] = nil + end + + end + local function after_dig_node(pos,node) + local sound = SOUNDS[nodeid].sounds[minetest.hash_node_position(pos)] + if sound ~= nil then + minetest.sound_stop(sound.handle) + SOUNDS[nodeid].sounds[minetest.hash_node_position(pos)] = nil + nodeupdate(pos) + end + end + if drawtype == 'signlike' then + like.sign(nodeid,{ + description=nodename, + on_punch = on_punch, + after_dig_node = after_dig_node, + }) + elseif drawtype == nil or drawtype == '' then + like.plant(nodeid,nodename,"met",true,{ + on_punch = on_punch, + after_dig_node = after_dig_node + }) + end + + end + return register +end + +return moduleSpecific \ No newline at end of file diff --git a/textures/madblocks_bird.png b/textures/madblocks_bird.png deleted file mode 100644 index b6cd64b577ef5067f808896d0558ed5d0769c6ca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4254 zcmeHKdrVtZ9R6+}w=I`GpryU*%4nIqI%XM+AZBFNwGL2;y5SxP4nY$pG1-EdrZGC) zA8K@JT(WFRbX!c+s3d0M5*aZjZp>xLf{u-`tp!#JeLzd!EiKn}3CXgAwl4f<&&|2# zp7Z_g`M&f0?#(^-!{=JI3v-k?0EA7Ah8Gg8I$8N-;@o30`4bJ<@$_~BnB;M4=-Xq7 z5y64RJv{&=O;!S5^wEhy-WyHN8hN+5QjwM#*;c;~kZfo&=y&cG5Ne6VoruVmtOHpG zvJPY&$U5*pcYs)p^*40>LW;#KV*yQWlL)C$V9Jue6moyk_gVL?bn~x@07Kh18xp&M zYa*!#l_fN|h{Nld@-p#&?&v$66RAXSQi18PGp7b~ru{tO;Dxbku1J_+f=*)0?}VmW z2d8^UE>Xi3rK|zT(u5{;>@hkSjC8gV}$SOQB+Kv05dWG2`7#UjVjgc_ppa@ zz_{bsaev5L7Yxa&hlVX!r^q8J68krfBY+0^9VmD|;Lpi?%rEj*UqJoNBd_KcDfeo4 z#p3Iew-MqHxank|icr{13t){2a96Vn95oBMJ|FPo`II95QwnMu59n)3N=>>_iCCCN zfJ zX2NMFg5DU~w4>-SSTS+Oj&q|njK>8ayz!qDbJu%Y-~K$3l05-tBw+uc!<$9<+K&`+ znaW|Ghk4pgOwY`NWP4Cicndi!57cE!lyA}C((jg=l6?2it)HGxOP&;$Q3{5KZFvjs zu-NAhV|4s3tTqqkJQ2v3>?q(m5sC4@=d-cdK;!u?J=5`S>r%RvFXL$)=r$b@a9I^b zL5^Up+2Vq2HVjW7f;cw{C1r+`WUv_HBjyf3DCDB7M$4O9EK2+SXDr~?a|?{FI=m#H zqHx)LnD;V>E`=cFETCRF12I1e?|cLycbExMr36bXJYCsx=;AU#x;Cu?HPuCYn`>Gs z2vUeG`oI-Lk?Y~3PCA4VX%HTV46$4dLfklEb&)5V+dk+`M|wY=_8FjMoK1x^?-e$i z&G2&9fCxwNi0C&wwcd<1B0gArIrwrq?iZ@gG#@$~Q8zzJjr;myT;QA$%}q#T01Eiz%z!)o=HP6)JWV zBKBYCEdK+IYAeJ92^NnJhLT76M-Y7N@WYWO#jKcuhOLb|bXEEqy`d9jMGSLLKhL~a zLxD|caMrBA4OYeXY}H!^n_u`C>_pi6_dW^&64%15d{Wp6*Hf2J*920n^%VgH{ QG$;E_#uh{WlkM;Q3!Ey3xBvhE diff --git a/textures/madblocks_cactus_wsnow_side.png b/textures/madblocks_cactus_wsnow_side.png deleted file mode 100644 index e88e366b3235281ccbcda855259373f0af49b60a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1166 zcmYLHNla5w6g~fU9zH@TGMPA}niy9O3lrl4Qvzj*sV2sG+PKjWG3wftXxyj^g9H^t zqlqsd8aKLegBugqPBChfQiK8p3T^-Q-1lQ>^ZtA9-h19X_uSjNx2wepH-rILsn%qg zd!?+PpWn4}&Pi_mQ|&EDIP$;$_Q@?;Lfx$gdw@u_ECYT0bu^Z66;W*N;jP0VWa&olMv+EiJ(mx`jdk6B82}oX_VmH#Y|X#^Z5aPA-?z z!2*zEvMkGj&*y_zXbF|~`C*KWy+rq>ySO}h1~Cel9RcF&fU7M}bxFcDo6TZ=ejXJS z6*{3&+W}{|Tj9iuGz>3ruT5d!KpLS4kpBxr*^=BOP`?o{*~8vluW@!Hh2I~6U^}zfz zGqVJtKKTo%UC-H|e>MXO2+aJXFUprpUTnwBVhW4Zv~d?5gtE=d5i%2-{GJ_EY`Z(M zW=JygBF?UUm$JpN=V0Q|0fjQPxZj}=u{0J2OY6Mj3NB}(z6(yIk&3d;e2%Y1-N0f2 z$b157Hn?4=V;7hQc8PH;jdO$ocT=5Hu&HvH4xub!6?qrI!enAn+-MEKL<_jTMIl5s zHcKn!X%B3HQ^ytt7%Xkdexra5Zotq%h2z6%_<}Ag>ZiqwlW~DF^7shbC<2O55B9DI zqua=gsT-_SGXEEtHCtrk5z)zJ_i6ga-Y6%1o5RAOhRrV3@vmf2%Qnug0J1-TI_hB% fTw0_qWIA|w5FfTDUM5Qq&I`v>b5~OBIdSD516f1X diff --git a/textures/madblocks_cactus_wsnow_top.png b/textures/madblocks_cactus_wsnow_top.png deleted file mode 100644 index fee349a17210e53559f93523f854422bcf3b2530..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1166 zcmZ9LyKWOv5Qb-u*D)lrWT1giP(-3jk3`|yu6J!jgi)GwfhRyB;sKB-XibM)(9z+} zlI5G+^9X(e3JOYJHs>2>Rx8Gu-7|CM|Nl92)?eRTB-P{7V-cx#)99^#*YJBs{`u@* z_RhbK-oHvB$@u-4|NQ1N_dldpA4N_c;emV~KK9AVP4{(NS(j_ovxhfNUV3Esv>P=q zUpxqE;onU#7!0yg=6AcDH~?%?Y)))m zuh(-D1m^R(5<2HpG+3|K8H^B_7dwFzD+)nQ42he~X1bt=;#RArtx{yhy4aoNmBiFw zBQcpwgtOsxjApZ$#|B1-eaC|!Z^;vNIvrIs61v2wF<&ee2Mn!QKsPuuAs&Z`8C_I=md-d3>yZ30xV5ajeEUbJ`3Hrdq99W*dYMeXfzbW z2E#;QJRTG3z6nrgLLPgVK8$o@8-V#b>A(aaz?aKqP8#a!KLyC>45OGe#DK9PpU4Om> D5)zXT diff --git a/textures/madblocks_dandylions.png b/textures/madblocks_dandylions.png deleted file mode 100644 index 284f24058da2cf54f5e6b7e46f265f3252e35852..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1166 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmPaE4P56(r1CrPYet!(w;7kAr^v+0xa);164qP-z+v3 z7@HUxs2*q!g#cs-6NP55Q>cGbJ8eSX*Z-XV-++k|gh6a{TL{TBfHeMp2f-jVx&egb z!Rmo2?7vAG3x;NxVaW1K*qkKv#*E?2tUrt}4d^tAJi3#BHZy^2fZBr90u0xI1V9>K zHX$oOw*aIDSst93K+b)3<{wNy3eCmHz-U^*!r;G#jRC|4NlKX@^5E4y?Q0l%7*>G9 NJzf1=);T3K0RY|Irl0@- diff --git a/textures/madblocks_desertsand_w_snow_side.png b/textures/madblocks_desertsand_w_snow_side.png deleted file mode 100644 index 51887c195b5efeed7e295b8b500708f208ba7f46..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1166 zcmX|BJ!n%=7(MsC`+kx%Y0^{>9SYJ#+=Pm&lG+BbsC04i2WJr!!PQMC#X%6EZVrOr z;v!D2;wVL2g{Fa;kmTk4U(a`Iec|Tb_ucR3ob!Fj)2mw>&H9NtfM$QQcb$7%Ruu4i zWnyo03+`Or=)ub8?U#2iX{p`cyzu~NbY&^Lesi40@L~VTdicw4FPuC37_XiI=48Kj zVf%bXwauSg?dqA0Mmw1l!OA!lnX@;ry{`^*6ME@xv5lu~YuMk5zv#IatlBaUMP zLEtXMQ3529B%IIZsMTu!->a%}z6S>f&{9F18jXev4#Ut@lFRXUjBdBT=oXbew%}Zx51Gib#^x)m2wa(57h$?Rg%OB*Fgvz6+jCrzbTo~?5`JsNPb}_!#OGtzu>Si!d!tYd0Z%J@J98I8Nze|5 zL(FC~v|6o0QGYzTWJBM=3p_`mDhai+D3ynZraZIE0{EVS)gE@&?%~we=cJ{O=86;y zFQ~SAYz4-WuSUdO?0%qJFqDS!EKYxaLFFqHa<58gV+&US63q4_IfDg^f$NG(EWsot zNNiRTj>arjFl7a;L*s;!;L(KhsVbpz3P0teN^+RY(;N_Bu}LFQl&PYCJeTYPA#1HEByB{n z5D6_!wk(>Kh?&sLXBLr9?y<)K@(_d-LjDBUJqjeGD|l3#9Ne;`AV`jcHV3F)>&aiPczr(r diff --git a/textures/madblocks_grass_autumn.png b/textures/madblocks_grass_autumn.png deleted file mode 100644 index a20810f5faeaeee726b600836bb01d331b236a43..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1166 zcmX9;yN?_-9R6nPd3k1bcXmVWLIS5q^yv_7&_&4!5k-iG4(MnQQYfh?kf_rk3OX7@ zN11;FXgEc;<9-qV5-!CtJeZiIFn0{tk*Fd%ynS&))!f_u~BF zrymsFOm2Gb`Bx82Bn7n5&{{(Xfud)TAt29Oc% zEDD67gfBc~N?|^kxP$BMfwOUilQ_YlYvGq=hwZLH)ig+x0Q0Hhp_m0LTrO9bq%qpI zM@3qJh`1+l#j=Fx9zkrynK=cc8=9%kB$ZOVBAn)Mp`vI(&Oh5 zfef5rK_EB}xW3t<(#SN4sFvTp}0k!V$1zf(TYReI`JCXHfVCKE0#0l-Jxj)EOLRI`qW)d zn?2kvW*Emeoye=}trIUM$~@ySlVEqOakYBw1iXLm1U|h#($=~m&ks4^8yLB}rIL8IrTyj5VH zDyR7Jza3sJZ(Q-S(*>;*xcqm8*XsjmFxO>O;Z`vrV+{!A&;yn49I6o1fvwx*{q@fh z(=rc4}ju|6Ep^#k>a5Qn5UYC09e z@A{6sI%qBoBcp6@1Gz76b_iHxV7#s3CyOZ-MGoU@q$)r_EAuRXymvBpp|P7Rl0{F` zh&L|A&9>yFF%&g%5w<`=D(uSI1ulv__;Dl=27DcOd2F&~6UBg(P9Tp7w2Jraj#m%I kw#It1gP>6M9jRN5ukU~No__X+eK~OP=;`_IAAbJ*|H{;w^Z)<= diff --git a/textures/madblocks_grass_autumn_side.png b/textures/madblocks_grass_autumn_side.png deleted file mode 100644 index a1165cce7fbbb5ce0b7f68ce045a33529700c46f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1166 zcmXYwOH5p47>1v7nai1(GZ&%U87Lx@wkc4;B_;7fAwWqRG`b*hQHg77qHAN^xprq< zxO3MSci6O1yJ?D+pv59JK!>@&+%L@a%$egq6aO#Y`E&k1-}&D6{oeES`kiIn)#C#6 z)s@Bf#O`mV(=MI^1?wZR**Djg7qOc0{lg!=5hvQGD;uAIyRDfL-+tF64jrGb-d=M2 zYYPPQuIp>jAy9i)7vFh*E+F~Uj3I4)IA~=G5_3~t%4v&&VPI7(()l{R4jZxzwLAoT z3Lf2#WJ=gv7P|*IrY>JVPR1Jabvii?Rj3PmN<%?&YV-$n9I{5kkO?O$IGs+6sztt0 zBNjCXXb!fYCqx4UibaE9j~B_1Xzz03)m5JUnq=>H(PgxoHi5*nmq}KuJbHLaxn}Yz zRHaMzB6oK>$b=1KQ$|uOJgQ7AS!8n7&v~XI3PN! zOJ_~vgLmgScy`Khq=+J@bm;DufP2s5Oiy%jxRXU6bQ3;H^Vd$Cx)8cyIRt`~f>AMe zu(g9-^Dx-n!AO4(7kfKNWeR+Fp^30U!5&`i1ji ziSCZJmQ&5TMJiXsvV_sfWu*VZrb@``D>t~iv4SLtW0Bcxo-4xxn5IP{TcB<fHEj(D!Lqq?0)CxPG)}W)U2r=&OSO6_vV>oE3B#3f zY0ehCiLoFjrzzBC*Je>Pmc}VA1G*-Ptyb~O)nS_SR7FNrRh~TC$M10xO=Q{LeaS$t z_!pXrH;YZd@9Ib&nL?3VzR1k@Fc;c=97Pf>?g+u$ZjG7imsnq(!y`0{H4(()Y22D7 zV3{B$vM@iBMEfPl}Kb*xN(gKk9SdT-Cncm8Q2JB#-h?tb+j DjU1ck diff --git a/textures/madblocks_grass_spring.png b/textures/madblocks_grass_spring.png deleted file mode 100644 index 6e9f2a68f493334e6c848b7ec43b836e79972d18..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1166 zcmX9-yOP{Q6g@4qq}F3Jl4oI;#o$jMCB?PI-lA|(E+E-#_AHMqS1t8zPy!hbp z`?<*EUW-qky=Ma7fi@GSd4%go=wZb9=>}#pI9AQFm#;(o`R{8uj)Q2y0jSu6teXy} zXD86w;E$^tIA+Fr6+m|*q;g=4L0QyLp1`}=8AcY7o{MfApr!ya&lHp|QI;ioR(3HW z4l;O**=H3+*sNEW=NY@A1n)xrvHL9XT-E{~fiIh;|I6!f1@b~o&iABT2 zT{}UE5J?zfCf$he73n%Nd2Vk?{!vI}f;?QIt_BRGut`!t80-&6OiTivB|zjJ&lEje z?m0$G2wV@-IK!0=#&N`UUo3RuNWm5WD`6(=RAFTGb|7?WBZPoFNfH=W@S=mJ?s1$n z@+d_RdK9lm*|$U$FNpe9W6~NP#kEwM;{YkylCoh&OlVqzo)v1ZW>p^Gg^|!@CJ-e) zTGDc~!0Beah-#6@o0|dw#Z%vRy9XquB=K$Yl{B{Q4b@A8L4!hSCok|g_uEDJ=1=(^fXz8}WqK1((hUWk7 z{Ql}1SrSpS2ze$KeYV>Qa$**3Tg4kuQz&>_ht_WSyABJ)3yf>(PPD_(Hg4l(_c~B`ueCsqv&&&jjihZ@l zQmhgyg#(Ak=1ka)BvebG#EnsvOhYlLEE5Gbn;|!y+qFxRI892EhQ8FashU&?q7M?16t#*fSagG0c5DC%R^7Eb zHn4ydLV_KvB2*p{AS9#;sZcd2q*4QoaN;C({7B+Q{PxV{j_=W#qq(E=`2YXRNAovk zEPt;bu;yl`Zps*T-RF_dfwH(GgXitnXQmLYef8_tpUNBa{n=X|Kp^V6!slOf%S-Qv zbJwT6t41W!b@-j&m3Kjp&rMx<<6=Y!>w7I__OpJ`$a#rR=maYYJNs<{ieNtvt&j$q zAlOjw9gvx(fmczedmPr6YYdKrP`z25=wXdg!lqy=1XUfs?k6b656kGaHF6s^Uc*Fb zLrOMir3JCDhtKN0H#n-q6S7tK|Cp=KCN@=crQv!CBr`Xe2dH{IqEe* zEg?8^&_WONs(8{4fkBm`>JSZT?5s90&-&QHUE*dCz z?hlG^&ckTWC{G?PlPr|5TLRNC2z3Q`mPm2=Zk+A!_bAl@G#V{-ibY<$8Aks@^77W? zu-Gj(IS}#F9SzfNwb679T~m3UO!MaaCBFOdcWSa|yX`Rj@(C7xTI5(y2*YEdT0x6f z&L0O`C7H~kYC5X4LZQm5<0E8KyUbo1FjRUvHo zsZ?tCOg3su8sGl>h(l5Nx2cen%xCijEIFNfa=AUOPMqPFhfC zEv>8*kuvtjV{$IYJCT IuHL@?KP@wvoB#j- diff --git a/textures/madblocks_grass_w_snow_side.png b/textures/madblocks_grass_w_snow_side.png deleted file mode 100644 index 2329908fe4d509acec948d297e3531e543fb37b3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1166 zcmYjQTWAzl82;w6mzmw!OLncX3E8l$iMJ-E(o~HP8WNHvDAD%Cmtqyc7pq{vu zr4>Z5Ppy!?`6gl!K@kK&MA4FBX@sjZUm0mjZ zeVRTz?fcUc2^u3ue@Z!k+LxX>^#0zc6j9gP(!#=m+v#-B)6)aTalm`mbNH;g@OpKR;#dW8ypyq$H8{S%g($QGB3k01Wc9NVtmPD5;wj* zkDc$G#jPt}Ln98tp#Yx!mBG0$zXLGjLpC6^N4Jr2P$9S<;M37`>zmD65G(Vbj6-7cQsAKxz9%4U?Yd7wpTB~Er8!@51 zAY&9{qBY}yrVQdft zL-*m`(XEg^O26YK`ZuFuRS_lpD{BQ2+#zhM`I4xl$PyxkE@0}K9}Z#Ny?p?y*%DM9 zAP&mpNG38y4GkS~;NbCHDVhUGD8d8w@aYmFK|eBP1&Bhj}BvMk9Wm`U3;)Q@$$ z2J3YVe!U6#e<8N=n{LEeiiL-2uIw%y%2+$xoUHVZ;k;#eOLXGRU zA7XPXOcg*K7EvfxX!==1`=dMC`(Xx)Ce!ru1O<&{P!Md>re4hXb2{(&c0NAOIOjd@&-0w~z0cYGlm4zM z$2JFmDqpvDid#3$3L9T{F0o78*e)OI(!l69Ha+o}M=Ec2_x1x$FHHsU(Rv=VM|{US z?ddIc*Z#e4V|!Ksb-PbHbmo9ZajOg5HH{N-8)};K!P4><{Qfg52zmypu~Gt46ej!+54PqV zp+P-&+X;290-rU(h6qU&NCk#G0MSe6}6ce z0+b2L0Ng5k#nHbHaW{})*vkbWUZ=hkPAhueCb70ZqbYparX;>0Ny8_ zi+FqBoY==g1!Y%!2oo3*aX~=fAE78H!B00p{B*qu1~u>v{R)8zBS}PB-XIDWPw6ug zxXu#rGHFR-QcKnvyfWY~zXJ{c2NDr8Pak-q?I@*Xdixq=IJXa z)}>H<_X+>7fgED|yxm5Qxl_oWokHX2;AROWiBy3IUtY|J?=|P>cJemTQr;LOQEOwJ g@TtIDM0?87A?A2TEVsjwKhi=VU#DMtakww~A7mN|g8%>k diff --git a/textures/madblocks_hydroponics_coffee1.png b/textures/madblocks_hydroponics_coffee1.png deleted file mode 100644 index a3c5be71c66cf748b4ec40188549c728b6687530..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1179 zcmZuwO=uHA6n-<=CN(iJv8`w=NHvHBDT1Z-AfjbU8d{@NFCK)}Lp58etD4_>^L`h!}mA|+JqK@WwPrY2gAn~d+x_H8z?FYN5T`DWhty`S7Un@WU( z?LhztCkM?Dd`IbN_T##*sK)Rm#zzwUF!Q!!6&?Sjp@a#Fe$&q$-N&76*9I?)1B6=W z5nxU3#?3$`d3qqQ+$5uiI_KXXz6)UNO`509AB%~ovGx~F)a;DqH`?MmRc*)lIyVtf z=9Q2l49{Tvno0f~y>%R7xn7%neh=S>s6S=&gcEl*UHvqQH?r&~0SuuUvgwIAn0xS3UxX=uIMu}G z15)()Wtqr?R=_M>C!|>44v<@0P^5^0uu+O+(GDp{kzrJ|uLBUv!2?G{aruZ=z%1s~ zpbo;9DfrT2NzPAgh^O~{Yh`W`KdiifeCsQqLr-r1sAFNQvueO=%XX+W{}xN{{#~jk zZAfP2Biv%z_hPOBI+(Kj@I~rQR!NQ5Fc%H58pd=N$f03be^&vLxu-{lvEM~L#2ERQ z0)WK`fL5@@u(+2SF`5Gk$RTt9ZeyWb7Mm$B4ql9Aq_IOf1$S5wr(x+smOzsaTDqjL zE*6|YLaZ$g&>HC$*-vj&B#-R-;go_p^7o!>d{cHwL>W4$uMgTlb z^a(KMTJW%LG<>eN?%O`icdG01itZWh+iHWZ=>U9!Jq2fVVl?fyAASh9xYMAU5w?|?H~$ZbkPsl&Cl}ZujQ)f zzt;+oMyB^>t}D#`+a9T}x>B*HR3OZUrY~;`5-2uCIj{-PhiquX#}bfuvL)WgnCup& zXm7#v91b8x-F6 zDNja`4*qkw9e6dnZ9RTDpOkHZKaK|v2MYwsZ`Iln(;;FyfhtX4T{r7xXxOD#u&?uY zv&E|7vE86c_&_5N`#HCmQsH#SZ?%yOV(>#l?f}K9NAU`Zh^8DXtM4Fv@IBp8Lv?|6 zB$mvl0vs#qaJWPBV!yMcD`g+qA56qC*|W=_hFGk}dwrw>3dRssZQMM|FN#KKWnZS1SnA*)ba+2q_;*?c8eQwQWL8tDohSY6=iQVM(3#=i8nYJ^rL lB2JhD!(w6D?4y-@)N1>ff9_doI^CL~vv6<3SO`S#{|94%EtCKN diff --git a/textures/madblocks_hydroponics_coffee3.png b/textures/madblocks_hydroponics_coffee3.png deleted file mode 100644 index 033beacc20925f6cd41b262449cc7ddc1bbe2aeb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1179 zcmZuvF-%io5Wd$w+S1b6YA^&yNC=w=lR;v1kUY{h)Pm@M2?J`nq(Qq>+|rp?^r!zVa!cNM`(Gycb^T<iFPpN&17BMMx>Yf%1m z7hihQ@w=nmoiuEs2 z$1#lGI4)6VvbQKw7^;dbGO-X+|#PfhMfBFikH)s(54?f%9YKl;st6VA(jWHXXrOa2lZRCwFDy1L?y7>3pZUUp- zwF-(Ent`**Q3p}sa6^HSM&XZuz?N9kJQa6cq6+$eD){e2nj81buR+9zCSFgOF4*U? zalsCPL=fc7C+#XW>(hboCG#E{>c6Ue=aR(`R0OrEA|nP%iIrSiqKYtp?hF*4u(6Xw zk!1k`t`>AAix1!uFVcX5reTaHCsiuG@1XCyzx92yZ*$d0H|~|m+vcWs*`kiQFvcG) zEJWk{-LKh;gdLGRkO|q5LRpWIw+*!UPW#0t{c%pn29WNe2hKe}veVaULK;N6+o}pc pFa@v^HX>~XPyhl3(3=Bb!`D3COsUWPY3<`@O^H8FRj8}{Gnn6=|QlEqBlWL zi-MrwO{gaYJ&1>@2!-N7q|}0VP-B`Jg*NRv&NtyrhV6uzH#6Ux?|u8;%k2~8fsWMX z6cKflivCGuJ2Ab4TDR5Zuri5rM+bb8_&t2}N|f%x6cpayq%M=ArDOfc z*>zrad+PI*vpAgA8=`O4&kJdOICfxPCdD*&Y?oN$mn?w_gPUfioXGVVgHoYc#;nrWODy0YSEo;uf zYia4udzIi3azdmDK21d?N>=$n4JO77ibU~2Lt9|vI0Qv=?;1LoCa|L{CW$Hw(-Mk6 zFiwsH2`tX+>$?ANY%1U=a})c79mT(xGLM0Q{8=CzD0+TpNf-jKD?scVo04#fM*&vt zeos3*m&&1xY(-iI79+85gWMgsZG2`2E-`XrV>$=80Bbo+(3hoE9pyvlnC}LON`Nl$ z$N9GejET(#%~D&8sQx-lJ(p{lT|x94q;Od|kVtTjcB}aK91C29={{r^=&$nv}&?FIc2AI#frrT~_daNB8 zLm9abY?USos$fScj(DaUfk7RsVXGhWqUuit)dx7o9dHH)A{*P&*Y&bz<4QN)l={p5 J)5AmK{{iGrF&+Q_ diff --git a/textures/madblocks_hydroponics_cyanflower.png b/textures/madblocks_hydroponics_cyanflower.png deleted file mode 100644 index 918ddc28b6e76e0ad77f51c7b862b45e254359af..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1179 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|*pj^6T^Rm@ z;DWu&Cj&(|3p^r=85p>QL70(Y)*K0-AbW|YuPgf<79l2OqsvZv*E2A%NPD_ChFAzP z3b4HY4OB6}fDxPh&FjAW2Z?jDGcpu;bA#3NZT$)s`}*@gLv0WbTpyf)ZcyB`kN*wi zS>VDK9{vHd7iICI=wX7ZKwN2n|AYJq0{U{y3{?SK3=0qcgxS98!Gi~2IT(TBADAF45cxP67;ZoN!Js4o zWIzEdP+@!w7l0&EEI)${HW$3Y_~m5)gBZ_WN02zkWiZ1*d=S8D07wF4$m7S4K}-f` zwXX-PgfBC~3 nhBLGN;8hFLgF%D5fFXz^Am>qg=D}Q>4eAL4}F*?Hfa_xF8yHkC?* zdIov`Ae5YlPvdUVbHb1Bvn6>4H!(Mz7=ui9FpmfS-N{58B>k3OuPvg*xIb}Y4xslG zJp!DiC>jIv$*bdm9o-7qk;lc^41j(*86UlNDJ)F=*D-oDSIY70{jomTv^2gJURg4| zVoJi$2je%F#-B4!FGJstks6$O_DuCwmd09>#0!(5xw3Z*fh1J=Dn;Rg8GeKW) zE236~N=I3~@BM{5Qiqg(7Pz9VNy=tl; ze3^o8ZE2XcCTWxp*8W9Os}ADvoVrT*V*-;O<&L h{(*GBK|6QCi0an$D0>*SZvOs2w&Zv!o*A2Y@(;im7?S`1 diff --git a/textures/madblocks_hydroponics_cyanflower2.png b/textures/madblocks_hydroponics_cyanflower2.png deleted file mode 100644 index 002bd02ddbdd0a44e3bb2e44a9a6411bc00fa086..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1179 zcmYjQO-xfk5T1Q~{FN5^gG~h@f2j$r@l**WaF7(C8mkg7CM1F}BwmOHHHgMT6AdO_ z)Wief;Kgt;9Pla!6Ay*}F-D3uMbQ{5*ixWHp>6uyZ|ZwGFT1mEc6a8R`DX8*3H4ab zwPqr+273d2Qrj@fOXb{<)&`{#BYizxG`(2ACVxsVp6m&bhVSX@)MII>xYB!mgs9Sq zA!uUKEsbT@f~UI6VyesPcMa#QVIs9I7&vyW-7aiuDktO-me52g$scv;jwR;}XAJv~ zaT|Fqn6%VpmZDP{`NEl+__!_U9^Iswp)9GmJ#epsD8YX6L=j#%5^bzY`(xT(w!rHx z3z0q1mZZ@+r$&@SPz5_Rz9q`#R%hFzy_p5Jcqh^kh@f;-*GE!?=RA-2`(;qcU z+?jA!pjcFNu)0uYM1c{}4>h)9Nnc-R;#td0p(9dCOaw&V7EKy#j6jdla&%7sCZYh5 ze(7{jxkUW$QP@_ClprRYl}9mk{=`=P=vI?N`G4H7Kfx1zyKuqE6)fdJ$bNjR}FFQx;FYC7hmCK zX)2g#zhALRzSB5#*8G4xb^El`a#p(2=vID)fVA$@4GzF5WOn~G3#<>1N7Kmrvh6k< z=vNGib%xNHd|OWJK&NqiXG?5I$dKn_G1S6nB5v^m`D^|ZOF+&c!PZ%}OokS+1GK#|8mXh7(G@Cd`u^v$r zRFRYlpd-&*F$Ls{fyyI=|GQ0R0rmKso+4i?$HQwh#6P4GMq9JXC=fQ~fAO^z*BV|R ZY|xOmM>^MDJ(=IaI@lcwOm_{0{{U$LVSNAq diff --git a/textures/madblocks_hydroponics_cyanflower3.png b/textures/madblocks_hydroponics_cyanflower3.png deleted file mode 100644 index 97ed686d4311194be2a6d949710a74dd3ae4fa82..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1179 zcmZ`&T}YEr7=F+Ew$Dvxb5nE6R5GIM2U$OOQ5V`om$*b!h$7SrDF`YJ8z~iHVP4cl z(vNvzK^R^b8QoP{7ZyfgU`a#L4O1tZTW)Ien>(HN%&i4=#yRizo%24=yZ1cLcca`= ztX3IR0H8LPm?~J*;EY$WHOoh9Ss;xS#f8xSDZ|NL6m_M=CZPE1dDVNH?I_Qc9BTwf z(BUM|)t$~Z#S7-LB5^`U)1~G-I#rPmAZ#+53M%uHiAL~9grz`1XCB2U6J%h&It96{ zezFwW#rHzN5HYx&;PI|fTQ7y3t^SnRc8xpT>V<*&Rp10aIy#_AdPtQz5qbDnaR)FG zL%RmB8g%g$MeJWP=}I z(f5re&gwWgO28gw*rW(_e)MqQI$4#2RUN$V;s2BaS7zbxJtI#DlkAWi z$y#tStaHuvgS;v(U%PEI^8~wF){+FlR{{Tf12977rA((Jb{ Pj^ner$YSa*tZDrXL*{Cc diff --git a/textures/madblocks_hydroponics_cyanflower4.png b/textures/madblocks_hydroponics_cyanflower4.png deleted file mode 100644 index 5a18f54aca474e61433696e42c2c4a64280f3b49..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1179 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 diff --git a/textures/madblocks_hydroponics_grapes3.png b/textures/madblocks_hydroponics_grapes3.png deleted file mode 100644 index 033beacc20925f6cd41b262449cc7ddc1bbe2aeb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1179 zcmZuvF-%io5Wd$w+S1b6YA^&yNC=w=lR;v1kUY{h)Pm@M2?J`nq(Qq>+|rp?^r!zVa!cNM`(Gycb^T<iFPpN&17BMMx>Yf%1m z7hihQ@w=nmoiuEs2 z$1#lGI4)6VvbQKw7^;dbGO-X+|#PfhMfBFikH)s(54?f%9YKl;st6VA(jWHXXrOa2lZRCwFDy1L?y7>3pZUUp- zwF-(Ent`**Q3p}sa6^HSM&XZuz?N9kJQa6cq6+$eD){e2nj81buR+9zCSFgOF4*U? zalsCPL=fc7C+#XW>(hboCG#E{>c6Ue=aR(`R0OrEA|nP%iIrSiqKYtp?hF*4u(6Xw zk!1k`t`>AAix1!uFVcX5reTaHCsiuG@1XCyzx92yZ*$d0H|~|m+vcWs*`kiQFvcG) zEJWk{-LKh;gdLGRkO|q5LRpWIw+*!UPW#0t{c%pn29WNe2hKe}veVaULK;N6+o}pc pFa@v^HX>~XPyhl3(3=Bb!`D3COsUWPY3<`@@D)B1QCIU28&PD%Ojhtc69e1;Gd^;=zO3vmPWU z2t9ZZ1i_Qw$wTQyp_lehs!}`@;(rfmYMjnD_H8!NPMFNR`QH1!H}l@U?@n|Ed=Gp? z6o^Hw9=TRx8eaMT=t{hni+Auvr$qw4)t$8kc~U+S?HeWXS7B&f;7y1W!Pk#DN2TJ_BxHk$u|(6_la&dz0wa%ykkR)~StX_j+$tBLOG=;Z3uFX> zA({~&!3vvwb^Qire!u~$kx;$Bz2iw!SZ{p}2{1fjqpg=PnG=lz2`DuAHW8N>{yvs jhX5Ot2vxwo*a0@M;__~V_2$yKx*%d=9SLjW*}%+So>U+f diff --git a/textures/madblocks_hydroponics_growlamp.png b/textures/madblocks_hydroponics_growlamp.png deleted file mode 100644 index 86c2a177d8967b00a937c7b67ccf3a63ab8a6a4c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1179 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|*pj^6T^Rm@ z;DWu&Cj&(|3p^r=85p>QL70(Y)*K0-AbW|YuPgf<77-BPV7%w|@hx{rdAi zLv0Wbk_-;!s(=6C0K|@)_K^XE(E$s(0EpkW^(%@n$R$tYAxama$S^Qq^`NsS7dYT9 z0Z9Sa`2&MsK5DdV?6ciL-LSP!h0FWq5 zBS;gB4H5^%0LX>N0ILDW3Sc&a3`(*5j4TCaW5fc;kC>5#(1)G|FkArgBeJt$T464M z@nJNE0U!x%ib00{{P~lCU@U+P04auH7$0OPdJKT%@PdoLBn(Q%CTSQ!g;yVnBq7aq Ws^NhL?#xR7Y4UXSb6Mw<&;$Su6?zr` diff --git a/textures/madblocks_hydroponics_habanero.png b/textures/madblocks_hydroponics_habanero.png deleted file mode 100644 index 47fabaa8d174abd993e7589748ff99c6a97ac742..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1179 zcmZ`&ODKd<6h2pfGajk&DxqwoY!MP=G#Zl(iG_voC|OBSYF4sPwrn&}Qx=j^l%*^N zAz3LK3kxabu~3xPxZnNfyNwynbpLbDIp6o)bN>I%VsAK@pIeqIBKe`tK%e$LtZa{d zR=y-gv{Tc4!FJicsJPdGXS6FAkOY3Q{f%Xv$(iaLoEFI|!cr1lE!9cyOsKoVd+n5D zdFxIh{na8)c_`rTZz@ne=lMe;Tnk5WP^R^)pruSBUQMp~GpjnYGH>15;}#FfNI!BZ`^#;gEG;K>A_11{FOt`6;pMnKO*{4Wn8PbZn4 zK-)pO2+0Kg=dA$0>wm!XJYGD^3Jk^H?Of^L)EJ$?*s&|)=FGg<{?$H-do?ZQ4v4sy z%XW~|FfR2)fk-kg)aA{IJQbf=_@4r-lBh3_insaA$!wjNUn4L{B4QAmSxEZAhX%cK zM@Y^ivNfdt*D1ymk-{b8$^2S(=ier01pq{Gcl_P_xe&u{zK%@Jjoc@3h@!DMU(IcN O6Z=p{II!J5JpTjP9->bG diff --git a/textures/madblocks_hydroponics_habanero1.png b/textures/madblocks_hydroponics_habanero1.png deleted file mode 100644 index d4a099854bff2a9f77dd5bbd5b32e10465d5033e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1179 zcmZ`&O=uHA6#iz}ByO9OO-+|j6|s?C1o04x2QQYCG!}ytQAEV*AqVjww0IEo;6YHl z^%i<4v>;vzdJqx3hzC&#QdA_A>Ol%AR%7#1O+&`_COexS;)LDVdEcA&_kFp4CY=oR z4fg>Er6v>8wA=jb@zeWYNnW8%%uXlAv69C^jftmgd*(7mmy< z*^)8xq4=$3=+BvZCouS9tgg>`zxm9O)hfjlP0Q0vZL2+q$>zByVOUmP778^wc`?mrmmHzO8~JD#OQiMkp8_a8r!M{5vIA(fO~6! h_y_Ai2kqV&W2)QNom?gAT>SlxZK;WLVr6{h?mx{r7?uD4 diff --git a/textures/madblocks_hydroponics_habanero2.png b/textures/madblocks_hydroponics_habanero2.png deleted file mode 100644 index 9d7f1619a0d6dd472a45144f0d281029043d2363..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1179 zcmYjQUr1A76hGhHb#vE0T{qLE!u*qhn}oqo1A9?CM16={HI`Y4n$17+PR+ZqukRe&&2#y_^WF2E@BI6n^PtV&oTU^f z0FdQt@wN-D;z~D*-Kp_T!B}s5b0dt+6#WuE=8LV(Uf}pWpBQ~2B-YCIhqNO zZ&f1s13E1407It|-sHMxAs+wASAKuuq$#$K^Y39TcM?{Y;t+`lPn8-w5EFiaX|OeC zWx;-7O%NHFpSBoYQ0TBKd}BNtkMQFSXD`ZbvQ$J;nh8WiyduCj%E&;jC+N)M}w>kI>*Kg6V; zuNhm6YE)<{BIb)!;6Zztpck#N&FKuDEwZpHX;crqvneV#JW^76D^eJ=%9RZuM;s}Tv&NbVSl$F3aNVhOHUFL yOYU$Q4f1r!fUBl7&nOUHivPW7-8*xfK$IazVs~o;4O0tu@a${yd&e3(2LA$hG+E04 diff --git a/textures/madblocks_hydroponics_habanero3.png b/textures/madblocks_hydroponics_habanero3.png deleted file mode 100644 index 81c5e0b396e1c1c137b8d6432f12b746a8698c27..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1179 zcmZ8gT}V_>5dO~H>+ZT)Z5nD86s0|+P>88XP?=`i&n6N=VP#?VNB<$3QYa`^P*g7^ zK}CrVg_6=s5S0&685Nj5sGybUTB~lfy1KjWY33|z)?DsAb7tnuH}jpjmvZenvn_EJ z0JCkIv+`)Q@@qEIckyqzpB8a8FDDa?9~KSK#&}?BP8K9T_ntT0Bun_I&AZM5v!eJF zsJjzOM$%<&%dGE(7{PTh@l1>GOnDAN2_eQDUz%f;Q%k3lW|bRqkoK zqt=RqeFiz|@}jFjBC*Q7e6ZHq9b4)`bFmjXpZiFK$|N~AMYt;T{LIq40s zE`CKo#)MnCVk*6Gcpw;5C17uf=bA!co#k`i8$5}xLBZf9NG%}hmz80iyB5yQFj2PK zCJmZJPIw*AIQXRd>NE=PW5X>nX-PVcSS#?gMT!@aT%<%f>L^7Y4Dx#e^eQkO={9d*V9 zJR6ciXZqt~BPH7@MkV2o_CH~4yuPVxkXL4Zrk@50$49S7o=o<$XnZ9h!qRs6FhV7> z`113yqv!lTgmMcs2ZAS)s#Qs}^=Ykw3G+Fe1!b$ydH4| zPN!GsdH{trYlDNtq)i#7F!nK#ZlQ}%G!P1NqKITdqobzCXO>iz9+#r|2i^w+65a)G z;dQeMZ<~HAwz-8qhf@#=2t__E3gCQu8H!$3gxb^Tk5!fO-#9HP#X9)qTbMSI!i;mN eEbQZXVH>Y3tqB`X+`ZVeh;>`GJ*zRZu<8#y2xZ>@ diff --git a/textures/madblocks_hydroponics_habanero4.png b/textures/madblocks_hydroponics_habanero4.png deleted file mode 100644 index 8053f3df74828edb31b81ee9d441bb0fd4812927..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1179 zcmY*YZAg<*6n^e}opa5aPWrX+%3MKj#L_t(Y27OQ_WMyvZ+!Uv4+pD*Gu59RedG9^67#T zqAUgGVlf-(*J;JLVU`~k6RR!G&xP&7+HtYao;Z+i2B+`di-$LaCGu>+(OO`YiGGIe zo&;fxIBz+a7cs2Ftxn&1?9rZj3H;fF%ee>*yWX?f1Sy=aq4j5Ax#+R|a}^DmOl zW(?r*k@}(dW+)JRwrgV>YIX zG)ol(vt$V5MVX)s9e+GB0|kwVD>kZqq+)xK3g_emTrL+_MC1|%c~t_y0EcHTAj@2y zfr5g;q}%RHD}{&#p;EDXRMa5E@hgDQaUZl10a~ueVA3lH;t?bCT~?!7=F_sr4L-?K zh%Q2uC=e1YAb5pa0aT=ql&z)+tqP zoSIi98-hMBv5-_(M{%JU{P}G@QJKN*hvRv}YZJ0J#qq*!Z6fss)v?^aIU$CVUF?yE z(4Zl}xX&vo3D(xRZ^%wgLVvlR7&_y=%BeHSPoh~)34!PmC6fe7N>Di5umVuJg6IQA zow@&8=I}J6U&Qz2|R@S@%uP+tYiq4#$SJ~t@o%F?-7VzwdjxU;B;Ypbqb!=b}VqRi_uN%j^ zC$kc5y26OVDf?e!fosrx8zyPw%oFo|2Ii;m;e9( diff --git a/textures/madblocks_hydroponics_magentaflower.png b/textures/madblocks_hydroponics_magentaflower.png deleted file mode 100644 index 9e3eea5593346c1b90e607e256fd16b7e4a7fc4a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1179 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|*pj^6T^Rm@ z;DWu&Cj&(|3p^r=85p>QL70(Y)*K0-AbW|YuPgf<79l28S-q3$1q=)<(w;7kAr^v+ z0xa);162$#V8mwsyVi^ULE?<;%nX7hI$$;Ld#-@R{{Q^TAXKdn*9T{y8}vHo#D5kA z9=PzI2VcN!(J2-vdRX8pkQhMQBtcw|CXgX88c7M9$pmMiGM<6BKTf=6xZ8gmZU|5) z3{@G>o9F__{)gH8WyO64o(M&-(vKlLj0y@0aBUa{fMj5XFaQ(P&*!fgIK;p{0&9W= zD$E3|Uig_L1~&MX<#)zPfkuX3BHtWA8bC1sHymmLRs%qCAVVHMehgOj&t3MwO`9)_ zFoU6b!4!r84<0;V`1$iESW;G27EB*Ga)d!%ULMRwP6HqT3R1TtjCzLNj%L{2em zy*&|}h`=TgOMqMg0w!rJ|DQj9&H%z7F%TvR_|0NNu^rt2tkDRw0jBxcnSTstX8pmd h7N!S-26+KP5J_P2?3y*gY^#hwLY}UEF6*2UngG-goyq_J diff --git a/textures/madblocks_hydroponics_magentaflower1.png b/textures/madblocks_hydroponics_magentaflower1.png deleted file mode 100644 index d5f6d1b54240113cfae6539d506f385b8eb27dd7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1179 zcmZ`&O=uHA6n?X861PocQ`05XifEu0L3&t<2QMutX)K0PL=X|Hha98_p~Ztx5f6f1 zds})av`~5p)Po1Xi+B)~AVo_FrFxJ;iq)8;siq<0dy{>eAL4}F*?Hfa_xF8yHkC?* zdIov`Ae5YlPvdUVbHb1Bvn6>4H!(Mz7=ui9FpmfS-N{58B>k3OuPvg*xIb}Y4xslG zJp!DiC>jIv$*bdm9o-7qk;lc^41j(*86UlNDJ)F=*D-oDSIY70{jomTv^2gJURg4| zVoJi$2je%F#-B4!FGJstks6$O_DuCwmd09>#0!(5xw3Z*fh1J=Dn;Rg8GeKW) zE236~N=I3~@BM{5Qiqg(7Pz9VNy=tl; ze3^o8ZE2XcCTWxp*8W9Os}ADvoVrT*V*-;O<&L h{(*GBK|6QCi0an$D0>*SZvOs2w&Zv!o*A2Y@(;im7?S`1 diff --git a/textures/madblocks_hydroponics_magentaflower2.png b/textures/madblocks_hydroponics_magentaflower2.png deleted file mode 100644 index 002bd02ddbdd0a44e3bb2e44a9a6411bc00fa086..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1179 zcmYjQO-xfk5T1Q~{FN5^gG~h@f2j$r@l**WaF7(C8mkg7CM1F}BwmOHHHgMT6AdO_ z)Wief;Kgt;9Pla!6Ay*}F-D3uMbQ{5*ixWHp>6uyZ|ZwGFT1mEc6a8R`DX8*3H4ab zwPqr+273d2Qrj@fOXb{<)&`{#BYizxG`(2ACVxsVp6m&bhVSX@)MII>xYB!mgs9Sq zA!uUKEsbT@f~UI6VyesPcMa#QVIs9I7&vyW-7aiuDktO-me52g$scv;jwR;}XAJv~ zaT|Fqn6%VpmZDP{`NEl+__!_U9^Iswp)9GmJ#epsD8YX6L=j#%5^bzY`(xT(w!rHx z3z0q1mZZ@+r$&@SPz5_Rz9q`#R%hFzy_p5Jcqh^kh@f;-*GE!?=RA-2`(;qcU z+?jA!pjcFNu)0uYM1c{}4>h)9Nnc-R;#td0p(9dCOaw&V7EKy#j6jdla&%7sCZYh5 ze(7{jxkUW$QP@_ClprRYl}9mk{=`=P=vI?N`G4H7Kfx1zyKuqE6)fdJ$bNjR}FFQx;FYC7hmCK zX)2g#zhALRzSB5#*8G4xb^El`a#p(2=vID)fVA$@4GzF5WOn~G3#<>1N7Kmrvh6k< z=vNGib%xNHd|OWJK&NqiXG?5I$dKn_G1S6nB5v^m`D^|ZOF+&c!PZ%}OokS+1GK#|8mXh7(G@Cd`u^v$r zRFRYlpd-&*F$Ls{fyyI=|GQ0R0rmKso+4i?$HQwh#6P4GMq9JXC=fQ~fAO^z*BV|R ZY|xOmM>^MDJ(=IaI@lcwOm_{0{{U$LVSNAq diff --git a/textures/madblocks_hydroponics_magentaflower3.png b/textures/madblocks_hydroponics_magentaflower3.png deleted file mode 100644 index 97ed686d4311194be2a6d949710a74dd3ae4fa82..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1179 zcmZ`&T}YEr7=F+Ew$Dvxb5nE6R5GIM2U$OOQ5V`om$*b!h$7SrDF`YJ8z~iHVP4cl z(vNvzK^R^b8QoP{7ZyfgU`a#L4O1tZTW)Ien>(HN%&i4=#yRizo%24=yZ1cLcca`= ztX3IR0H8LPm?~J*;EY$WHOoh9Ss;xS#f8xSDZ|NL6m_M=CZPE1dDVNH?I_Qc9BTwf z(BUM|)t$~Z#S7-LB5^`U)1~G-I#rPmAZ#+53M%uHiAL~9grz`1XCB2U6J%h&It96{ zezFwW#rHzN5HYx&;PI|fTQ7y3t^SnRc8xpT>V<*&Rp10aIy#_AdPtQz5qbDnaR)FG zL%RmB8g%g$MeJWP=}I z(f5re&gwWgO28gw*rW(_e)MqQI$4#2RUN$V;s2BaS7zbxJtI#DlkAWi z$y#tStaHuvgS;v(U%PEI^8~wF){+FlR{{Tf12977rA((Jb{ Pj^ner$YSa*tZDrXL*{Cc diff --git a/textures/madblocks_hydroponics_magentaflower4.png b/textures/madblocks_hydroponics_magentaflower4.png deleted file mode 100644 index a62a2bb744c1efa527a1811589a46aba53896d2d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1179 zcmZ`&e@N3&5Wly5x9M`WHWjrfZB}5QWhq7_Y05N9M8pz;)IgGunu=M5g`}8B{$U}R zMExO#ft5i-mO_7|DVUKITKS7|)23Ux%l1 z)Evm1s*;o=NvcmmfPRZ?r?KP)fUrI#F+MYP9nlIlk+2Y$t9naO6O|mI>*651(n0Rd z4{#rKE<>R^nb_D2?{wlT`Sc6K|>quS3to2u}|#Z zE7l(jA)(;7HwHe(LSdVI!Nih^rdW&R?hed{sB||`s}wLZ$BZ7Dsf%f9>8C;G$$Uz$R?k5rLN5SQ{7>~gS+F#gBhsJxMN=O5p zS^&$02w$e1pj3$*&(m94lM*a7S{ReLsp)}=5Rro8hX}=3or4N>&-=VVp{Qbra)vREIu>uBHTjHk7j%>nTAWG6+&`iJT0 hliJs&uu*3{g5o(Gn$fcBb^;O`Qj*dV+Y@pse*y3rbIJe! diff --git a/textures/madblocks_hydroponics_peas.png b/textures/madblocks_hydroponics_peas.png deleted file mode 100644 index be738acbead15d067ccb2b90a80b1e0ee52468ba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1179 zcmZuw%`Zbi5Z_06luGL(p(OkPP9oJ%2U4jQQBp20QeQpNgbNpm1Cclg7by}qHwSld z@DZeO>d~PmA`wmK#b?cLn^~*RG`q7i^PAtBncc1rheIx>*C~W>S^dEXX*X6`DecX# zxd~Fnd?eH>j&7SC$tay12n9tBzk`#*ZSs`I`^V;msHnj*L}IU=oaTZx*k|53>I|QA zWP0X82uGt8>>2fY47VfmL5RGB6Znu_hIUYrT^Mi7?)T*EVIj7rPL1elK!y&M&i{i5 zkQj)7*}JnI@6E zv=n#!X%TICp4$MI!US0Y%XXM#V{H?FDs1|kQt2!4Tzdnz6iJXwd_IuXz$Az)EXD;$ z$oG3yh`O1J_99$H)c9FS#$gro$UUPbkj4=yQ+02AfXs14Z;gQ$uupBdL4bNnUX ztHQN0Skoq-8ON=t3NT%i#sE$z)Qn?)z7Dc5U2nVML;RZ-JMbptEDCW9uuYfdpkkCP z-wA0OP6x>r0K)$O8iIGhZzJy!3I|&OF_mIzc#!N9$FzzRlvgoP*29Ka56ri X<6!S*_5-Q$xn-QKzHsoUH@flz*j&Hm diff --git a/textures/madblocks_hydroponics_peas1.png b/textures/madblocks_hydroponics_peas1.png deleted file mode 100644 index b428df4c174be717f9eec94bfb4ae1d79488365a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1179 zcmZ`&J!n%=6#nk>CGoXMd8z3mRHbO3i%=Xwad5Guq_G&Jh#(?XhYacGIyeX};vgzPii(6%9i)(AH8yFgX~^}Qn|EJ+h&Q}<-#y>C=kNP+|7KW_-5K2uXrf9eM+3%SQtj$-l*ykLSr^-JG~E1N0u? zMRRTdqy3*<{t_Xl;kTd%ZKPvRb(#}p#m5_pO>X?2biR4crDJo#`2A#n;VGHOvo2* zMck@T={U>xjlT%^Yht?>h#dPQ56AOuv)~qak*{!l)ma7LELL$ul-7=eE6`ao%eD%l zFLUrOt7YTKwQVtfzN{+q8vgk04Sq)6f}I|m-fYXFu_MyN`)sYQQvdHYdeo8ejA`hs z+D}u=_EyZRfE~#RUxi|_&ee1*1?XxtrdZ$ui-l?AGNW-LM0}UDlg9W=EdW`KxTJRx zi+8ybV;yin9iolK+^e#1ThKVurYL5t8$+svPO)5e)kZC`+B_i*#DL8Y!(!K7l}@BV zhBpH}+0P4k(gE7k){4;(jlsAE=d1g7L9FHf(X;xXu#dI iK>UMspo4bqj4{=%>rQSb>RkN&j%}&&bYf*}`tCmh^%rvh diff --git a/textures/madblocks_hydroponics_peas2.png b/textures/madblocks_hydroponics_peas2.png deleted file mode 100644 index edef1805342ab4c70d00745c0b7041ddf82b7b93..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1179 zcmYjQUr3Wt6hHU-J~#cGHaC-{!px=MR^h`iBYQ|@x}s$gkr1d6f-jO-Q5Hf%VJ|@i zQQ|`{;Y$eGYrgdmranYkja6o#W%JM6)ZE5y=N#Ra=i}aUzjMw#|9m{xfyvkXDduaUFX4UIoyK{JsfEI zv`hjfCn%^wntabRBobfc;-62FEphue`wo`#$6;w90pT!4s)&j`F@VEuDjexBiH*hvydcX2k9uTqg#T~+=&7U4~yB! z*-#I2+A<6N3eHGNafa-`xxYe`I6Wd7ssu_i9c8aS!WR#gR2vRHe~2kRM}(Mpl&`bU-5HDU9Ym?bB7pt)A8Qc%j*>o#7yh=)WqY>vjyiW`y`7%Lf(>0i%NGX&N zl&!N7Wk3*rSCT+=yRVcpH+n!;)VSr1q$DGx6d^#gw2_3jk7o$J1eJGB3vlge&Ltdh z*ccid78xE=-Ukrz$H|+n;06F;P&WbFiL&t zu-*aZg$)B@LTD}eMbc!ZZP`H@#>MrBz%p3(swYIfpg|(o1nG7m1gE;}?8KOPy5+)B zP#|dzvNAQuF5MJk*A+P4>1L diff --git a/textures/madblocks_hydroponics_peas3.png b/textures/madblocks_hydroponics_peas3.png deleted file mode 100644 index b4f9085bed4fb5306d04acbbebb32452dea7c014..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1179 zcmY*YZAg<*6h8Oe+g7&O+CEtgh(6S!h-5Y`oF9Y`1gY3cA}b9u6@N&D8uURw z%+-(j<)1Jx>R%KTVj>lk1v1E@{D{p>HWjzm-R^VceXBF>d+$B>obx>AV_jt)w=F3n ziHK~)MXn05+p$)f#dl+bSBs4`R=5kO|NZ)DaWU5%bGwM+_vmHcJ)v23vFJo2(P}3a zBj3X`p|o5sE-AG5)zoCihWr=PSBTVg#jeB0^Vc%F8j3SvBE{n~lenm(?bdi!N7T?y zb=qmmDHDalF+SGEDZ3+@GTCVlrZtCYz#AhK-oLuLiNZ3Dc8EIV!4b%nyZNM_7GnvH z%dC}100f9M666>_6=@|tO$)dA>B%l>2;JxLA-b-5C^#ACfk2ENq+elcqC`8YO)Rg@ z!g99Tq^%5aA$p4o6!=N%U)rraCo`Yw>}~Yp8E3D0Lq z?G%*|wt9C1eQij#RZfpFbx7qN4vC#z-Zf0KN-xN(pk%qx}O?CtGf%Gz(n&4;b z@^WW1om$>Fxmc9DDV3M{%r?vh3Lx(C?dT;ZZBBD==%Ld^GFVt#Zi~+C?vb$w3{d^@ zCyHzt?@&`plX)I|o++k(Q0G~`>nvXV;uEk<$CV!cC{OfZ7T0D4={8c0L$Uf%k6 zAC34l(%%er)&_>jRMiBpx^dud5rrR{`;bj&73Sby6uf~Q-UKTpdG{Qfn2oTRl;Pz7 zg9Bmq?rB6;8!3!W1#}d8UYlSopRQ8v>oz?-MRWv2<-buL@Y&;4r8uDCpbEho b<^?+Jkdd>QH9g*QZ*eXz^tk#9syhAv`5i*k diff --git a/textures/madblocks_hydroponics_peas4.png b/textures/madblocks_hydroponics_peas4.png deleted file mode 100644 index 618b14920ef9d349e92d970d4cc04bd7cdf0281d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1179 zcmYjQYe-Z<6h53v!P{+=a@{e_ z@9#0e!HaqbM-p^;kV2k2mcGjQ}JcjS}M!x!d2A)mzyv#^m! zQnn#0MxZP~06+!?j$l$9k7A#;wFhu{sTTveee;dNUBLyxB?$t71U$>Q3ELR{L-l%6 z)MOyP-&lDpf8c8DzLo`VPj(w={@!9}GIhcHYYOiM!dgkXO?nVQ`TX*e$Q=a%%R*Te za+opCVDcfH$H<= zM7@kJ3_XqL2;Bke8+aNQ@4-KOh&_Y z7(jG-YT`Jpah^e)-othO4_d_KRrA-ANuLvCMV$Y^X%=5W!ec{nmTnEFq1q5 z9zV^{rg3HZ$RT4z?N5%6pW9>Z2h`m3#DNog6C$owU6D(Ke9H_W5D1`H*+hg2M$9mR z!5}_;{sy541Zeu6kHKsbz7Xj3dMH)5;C4MI0orIZ9Vk?c&JiAgdZUHKrKeC71=;=t zwhh|IWs>-^R)*j6u~}=-X;4u?F_eHSls0Pc=+A@|m4RnY9)U&&VzDsV?Y2ast11em zDz5x>m+0Vv3WOcgea^~AuHRY0-&Zd(4A2(Ar56n=V#+m2t%kw|{{8q>Cg;t-u6*id zv)M-6ilDr@0$o#K#Uj*316GtI@ddintEvXja$M?JL8s+lbl65B7KO?!=(-9!JAhKD zA_Ezbpr_+@B`?IEREwxYu~?NYw%QK18ciq+mFK>rvqVl^vdz%W&fSpYj*blC@ypj} zI~_SkhHP}aE;K@<5*o21ZTX3qiS_aZLG8klBm(VL2Lq`-D&2z-3Zb^Sg+j56G^ujz z^aVVBbVo`rcBW&#({bUtq$z31EiuEorX!Pzqe6k)5_^La7=|Iww3;m{WoNm<7_tZ8b$zK;E}McFv*W%MHQ`VNuD)4sNXTp|{=InrAr|H?z|b^wNtFPR z$0L*Ola6F0@?fb_!`ga92G9OEhZ;$g&-CNTy#=}hDWp?`ibk03%C%b$u==eCl}Ho2 z2|=yil>O!Hej=*Mq9d8K5GF+53uS3CRaH<}uVVXXUMBkQ|J9#9;fte^`!tQ9Q6TF) zLN4P#o~#TPn3+89j-pudhGt-A=CSD!eAL4}F*?Hfa_xF8yHkC?* zdIov`Ae5YlPvdUVbHb1Bvn6>4H!(Mz7=ui9FpmfS-N{58B>k3OuPvg*xIb}Y4xslG zJp!DiC>jIv$*bdm9o-7qk;lc^41j(*86UlNDJ)F=*D-oDSIY70{jomTv^2gJURg4| zVoJi$2je%F#-B4!FGJstks6$O_DuCwmd09>#0!(5xw3Z*fh1J=Dn;Rg8GeKW) zE236~N=I3~@BM{5Qiqg(7Pz9VNy=tl; ze3^o8ZE2XcCTWxp*8W9Os}ADvoVrT*V*-;O<&L h{(*GBK|6QCi0an$D0>*SZvOs2w&Zv!o*A2Y@(;im7?S`1 diff --git a/textures/madblocks_hydroponics_roses2.png b/textures/madblocks_hydroponics_roses2.png deleted file mode 100644 index 002bd02ddbdd0a44e3bb2e44a9a6411bc00fa086..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1179 zcmYjQO-xfk5T1Q~{FN5^gG~h@f2j$r@l**WaF7(C8mkg7CM1F}BwmOHHHgMT6AdO_ z)Wief;Kgt;9Pla!6Ay*}F-D3uMbQ{5*ixWHp>6uyZ|ZwGFT1mEc6a8R`DX8*3H4ab zwPqr+273d2Qrj@fOXb{<)&`{#BYizxG`(2ACVxsVp6m&bhVSX@)MII>xYB!mgs9Sq zA!uUKEsbT@f~UI6VyesPcMa#QVIs9I7&vyW-7aiuDktO-me52g$scv;jwR;}XAJv~ zaT|Fqn6%VpmZDP{`NEl+__!_U9^Iswp)9GmJ#epsD8YX6L=j#%5^bzY`(xT(w!rHx z3z0q1mZZ@+r$&@SPz5_Rz9q`#R%hFzy_p5Jcqh^kh@f;-*GE!?=RA-2`(;qcU z+?jA!pjcFNu)0uYM1c{}4>h)9Nnc-R;#td0p(9dCOaw&V7EKy#j6jdla&%7sCZYh5 ze(7{jxkUW$QP@_ClprRYl}9mk{=`=P=vI?N`G4H7Kfx1zyKuqE6)fdJ$bNjR}FFQx;FYC7hmCK zX)2g#zhALRzSB5#*8G4xb^El`a#p(2=vID)fVA$@4GzF5WOn~G3#<>1N7Kmrvh6k< z=vNGib%xNHd|OWJK&NqiXG?5I$dKn_G1S6nB5v^m`D^|ZOF+&c!PZ%}OokS+1GK#|8mXh7(G@Cd`u^v$r zRFRYlpd-&*F$Ls{fyyI=|GQ0R0rmKso+4i?$HQwh#6P4GMq9JXC=fQ~fAO^z*BV|R ZY|xOmM>^MDJ(=IaI@lcwOm_{0{{U$LVSNAq diff --git a/textures/madblocks_hydroponics_roses3.png b/textures/madblocks_hydroponics_roses3.png deleted file mode 100644 index 6f5944cea409fe1ad9faa2a074af0ad1bb70db3e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1179 zcmZ`&Ur3Wt6hC)<+uU?EH?3`zMun7R$kgbe9$XV$JHM45$sWLX^2518_q@}vt1OuP8xYQv&CFmb0Cwb1)oTm3zXh1L<15*LY>#9A-_FH zmZN(q?nNU}V(_}b=MPgyAB8>b!7Nv&+N-nsVX!F-oZv@S7u1T6sX{A93~#I65L#jg zc>&faU0I31hZhu%Hs%vw)~J@TvjcW14yQ7n>KT}_jD4D|13oy@TiTO)(G24hu(DCJUESY(S47Q)b(G2ADN1e96@h@NO1%=dAK zgK-X0DXfMlPu^*DTPz0!+h+OMA)|v#^v=K$qn`gVlIFDK!1(lgxGq>hqZDA?DZ;Ef z1TwkEF^Sl$-7=W(RKt`cLN7d%6CzRwE{ibyc`M{Dr31^nFx-_cjy2g67-Zm8;8bkD z+G0z-Wu{|>-_FVw!73PRHtrL*oDFqgTfI%0Siti<1@v}*#yx*W0G&*KiR@joov^Z_ z$avm3LCqB%Wnuvo3lj9d870zwEC9f{;4PSwYyT;-;npv)5Z1*)7M6dKMMi>6tgD0L zlb69*sY%vFvdFm9|47IVod(N8_cf$|B2^$yuDamx10#1tZHR$2*i@9sNp?$(WGylk zdkgh94)R-Z_}b&3IVV|eSx8=etep7B;_^-s8Kg zWQo^^Ud2rUcb2@;(9!P;iO}|M-w0{V2FesmvUh4|iEUSDDEjLyl45)5u^g)_EINyG MOPSR?V5)Eb4UbJ~VgLXD diff --git a/textures/madblocks_hydroponics_roses4.png b/textures/madblocks_hydroponics_roses4.png deleted file mode 100644 index d480a3b5a302b89a843e0859e9471dcea4d10b42..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1179 zcmZuwT}YE*6h7aaTTO;bS?#YMYFByF3bNbDWUgq%SQk+jCDdgoc2hx+&_!25-IN7( z6N3;z0&gP9iy#Xc2Hw;RBEO}%A8jJ~X}-PB`SyO!wQszC&w0;z&w0+X2j`Pva zi?+3I9A=l7>Gkxq=_rHg`}>E0zk5=) zGPN}~5i&wau(5&bbV#z1fqZp#W`>S*bihvTsVU1D{N(0K)){s?CjJbAw!(+V5CzLw znJ(S)i}I2|Uo-ruf_Y^Q+}SKgZJm6t9nCM&pA&&7tav?r*C*DEExz35+J29LMw2&e zwo$b!dd;j=p6$xk$j`!X2~1l+%|>aY1~N$mpz17)H_?I1va-K|M(;0ZN=PJ0j{NvW zAQ1wC4@%_PQ70TA76kbC{r3*08;J}8Ll9=A_-ljSJ}oj(pQe1xkBh3s)~f3aa~G5| zBXX+aAP>A=WHRst;5$+UaPsh8p*R?s2mq3Q-2X+U1jZSdx6HXDc^Dm>*Pwr;52}i6 t&ADWWOc7b@%X?%{52{X}#UE~D`e0Ysi`)4x)RNo;mgr8##=5Qy{sYgy348zm diff --git a/textures/madblocks_hydroponics_rubberplant.png b/textures/madblocks_hydroponics_rubberplant.png deleted file mode 100644 index 3c02e7ea8335374fc15a111b7dacb2017e700850..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4267 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 diff --git a/textures/madblocks_hydroponics_rubberplant1.png b/textures/madblocks_hydroponics_rubberplant1.png deleted file mode 100644 index 5dc82223155b8eae548ecd2b762d0e525ef88cab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4267 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 diff --git a/textures/madblocks_hydroponics_rubberplant4.png b/textures/madblocks_hydroponics_rubberplant4.png deleted file mode 100644 index 42ebb348e3a96ece0e6ea49981d8b8c3d484b833..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4267 zcma)9eQ*@z9e&<--`(5WyIhVWBu5A#e18hm53q=Q2_k-0L`z3&v90{kanu=W+i@%j zw6;^Nc51QH58J^yj8I_fDi%+Nw{1tm&;~v_ucpHZx8TeVjbVi zo4woH-QU;qJip)m>KoUusBr2X02M2*TDFRgP0_Y3`hVX84;1OZ?pw8DDYou!=%z2$ zcduEo3_AMT{Ms|Wqcib)ulm+~K%zR@41anuLnmWDTzTE{*ikX2VrF7Z+j;{?&se!^ z$?7$6)|5Wp$F$aT)mK{~INy4+W;^SVIGM!_fsY{W;Em^>W+y`h7(BooI|O_3a>fj( z@T)xaD?7kLFlA7dI&#L4(>d*ANOqBperNe z%^MgeM-V-NbFg7{&Yk$e3`93!Em%VlWZR{bCCeUTHxG7zOrGs#*uugAbFm_>hoaq__)au_(4KqRl&my{}g6oDV6U3 ztl=4;5=201Bg}9AD|AyHPRCI!2$F0bQkD&0SHlf!nHx?UVWUziw7U-4D}Zk4p~G^J z>g6!NZ5uN9FMb}rfQ5k6j7|>6!xuULnB;E&DB}~)6N}gax4<4YEPW=l*#HWd!91O* zv~ak-0lVT!6uNp)JtmEk$MMR$T~43f={9%;UXNModHuSMh&*f&gg(D`U|_we*oJRb z#jT6_781R_7D_XZRO$>wFc20>v*Bu=bKR>XD{-Nxkl~tXz}{IYlw=C>z(LGKHWYD= z!&SGbe@Az{twGQgaI*5o8ab;kj6?lCWoRZBuhc?A)cvBmSb%M?SO!TujcLQCJSxFw*DxK3yj!wC@FhEh9<-Vml-)^2E2#Dj5R}YF z-h98(I8+=Fs>;7OO1TwT9Jh0*ClN~2W*})-q>|`^u%^Qj6JQOg$Ey&q`4l~qpV*JU zILv|Q1f; zb&)1X4txjBxCWenB|oBan2`LkM`xm{+)F+~?I_q`7&z}<>N<8CIBv8#k})6epLX$5 z*lFDjThv0z%%n!YyDp8>K4oR^8<G?_k=6TOutR;0UcG<|JqUC^YzYqm%#IwET(+5}Xt5@OvdS zq#AP{_XFnTW8+JzRGswDL;b^!tFW#v85VjybPaT2m1{XJEXyq+%^*7$SMEi3xdc(G zJs?HE(eKvbKEe(Sfx*z^F#?h!!&Q(ZdvSo+l;^<}u3j&^e(B+3}5NpK)dI zi*;$WMQ_d@;ueyaMoP1oJ`ryw6!w+g#lhV^Zd6sVDU`oa5Tp_!AYqFig0P>(!+md+ zGY}a!xk8|*6W*GvKwD}Fs*;yMSq5zVF*-Xs46m<$PA%@F>R0VKiqXtPRyE?fX=z;g zaXU8of|4wdt3*(F#RwFsbNu1ew{WqqFqcbWnT7U1VlcGKvGhy|$T)*s>HabcBI-5k zX6`Jf+g#)KM3srip6P%uOVoN7p-^(D)oeP@sjCwXMo=^bm1GXf>DCYP@e-Vv1xxo* zi=G@)fwtnV#1dGNcu*q>2jjU;ll!w&x)PZi!Ac#-uQW&Q=9&I22wiDedO;G`MWGG>y7 zPk=Cp?^cXNxfZU!mwJCYO^ZvYp1ucGO*KC=Y3c>n^yc2%O>;Q4UXcTrGzZ8S^1idWZ>K(~meqT@r-LBU1b8Kyz5;q)K#IsWN5&(b(*P1unO|i$j`sj-axOKpRRJBSm5Sh4gMGf`5qYvX+Y_;yn%-< z>aZ|9zHc!ZeuE@CB#qpOnTeO!9gIi)K3WmR(aFw{|Ae@$Z7xp diff --git a/textures/madblocks_hydroponics_seedlings.png b/textures/madblocks_hydroponics_seedlings.png deleted file mode 100644 index ae7cb6222b2884c4bad09f504b73e0449db5f932..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1179 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|*pj^6T^Rm@ z;DWu&Cj&(|3p^r=85p>QL70(Y)*K0-AbW|YuPgf<7BOB$o+a8sZx|R@q&;06Lo5Ut z1z6tyW&|n$1HV~pEI`H|D3=&YcvIT1x5x$%qX}J&FcZ26iF|fS4R}VW0SrUWfdA-$ z4EF*sPEq6-89)gTKLF{08vs(u_>TpIK?#`mKLf--kQfXIy)k2WcIMxIkQmHDxB&@m zHVlIAjQ;;;`tyF0+pW(teIGJ_GyugIVg;9i*kI@DC|EFp#9#n!{FMhMz+zG&5Ho-N z{K)_klQLmq*m`>+Sni$3DVRPu4R^trS${x^!AV;|K>@4)BnATQiK{^vp6tPbPy+4( z5Fg}Z2spw3GXx|iDJcmS26+U{qD~1o_o&uopbKsxp=g~ zTjM37ideJWB6lBFnOlBqe^{60Cc0XpjWqsh*H@{yubhtRWZ^e5b$>`ATdy`>>>?@; zUuCG5tjAkt*TS*8WHfTjD7KJ#K68 zMxUkhx1Z-Iw>?7vuSV$y2E)Kcw_F#qGtUK_etBGGXModVMRQx{FGf-+~jOprmO@3km;GKI6HMHD1&U}qfM8g z$m}j5I%m4`iqv6J_ln5I0a95UEjYf z6ou^AcW&*0_I>OCcq!&kKy@dcJQb)kqCn85)x1gITlqf787fS5i5;LY{*?%~tS0Ot zqocqM6b1!d!W<|pw0?@)$P~aWT*Oz=`T4sbN^4MThkFhMR3GVLKvcwHOcfSbZ%;Rm zGwgVj@n=3|%Ap~`fDB9yaAw)D4Gcr0>}a^8jqrZF{Gg!sr2dM0GN6oZ1^8j&)KLq TBX?ii?!j5CDXxzyu&J>jXl@BlJt(#_A98|J0Yi z&6`s$WR~gjVe*YHp`DeCM?QYloAVQ92KKUBWun12mP3`ZaVEq2xz%*|$sLW(^gVxH zWQp8~oVT>O5Oapzk6%`_kgtS@mn(PK*G?nIqXVq-p$B@za#i{vUJcwKz+OCBq}co1 zr_I4OQlAGEM-UAF2CxM5_;O3{i95r?3AWe!CRGn=4wGSHu>Uw+eO-9GB0vCWumqYx zkgiExjNpQFO*!DXB%hZ^NSlUqfn-8sYWk^?Ys!HQx@4-Y(bIjU0Rw7Nps@gK43k~A zMgu^Bbg}qFEk#P;Adc9DgO9!#G|M=0r+e9<369Trq{%O<4R<&rGYtU33Npm$e+eh0 zU<%9`AK|o#=s49|b@H5zbHK4r4O8&hZlPw*8bGIDb=dAWpB*W~iqifPQBQY=!3pfM zaM=Hyf-SH+jx#sae9rhb0BxexK!|h-5b+(^{W}HN6$lb^x`UGoY=K57+MT@~oAx#y NLFCeT?{c|#_yeAL4}F*?Hfa_xF8yHkC?* zdIov`Ae5YlPvdUVbHb1Bvn6>4H!(Mz7=ui9FpmfS-N{58B>k3OuPvg*xIb}Y4xslG zJp!DiC>jIv$*bdm9o-7qk;lc^41j(*86UlNDJ)F=*D-oDSIY70{jomTv^2gJURg4| zVoJi$2je%F#-B4!FGJstks6$O_DuCwmd09>#0!(5xw3Z*fh1J=Dn;Rg8GeKW) zE236~N=I3~@BM{5Qiqg(7Pz9VNy=tl; ze3^o8ZE2XcCTWxp*8W9Os}ADvoVrT*V*-;O<&L h{(*GBK|6QCi0an$D0>*SZvOs2w&Zv!o*A2Y@(;im7?S`1 diff --git a/textures/madblocks_hydroponics_tomato2.png b/textures/madblocks_hydroponics_tomato2.png deleted file mode 100644 index 002bd02ddbdd0a44e3bb2e44a9a6411bc00fa086..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1179 zcmYjQO-xfk5T1Q~{FN5^gG~h@f2j$r@l**WaF7(C8mkg7CM1F}BwmOHHHgMT6AdO_ z)Wief;Kgt;9Pla!6Ay*}F-D3uMbQ{5*ixWHp>6uyZ|ZwGFT1mEc6a8R`DX8*3H4ab zwPqr+273d2Qrj@fOXb{<)&`{#BYizxG`(2ACVxsVp6m&bhVSX@)MII>xYB!mgs9Sq zA!uUKEsbT@f~UI6VyesPcMa#QVIs9I7&vyW-7aiuDktO-me52g$scv;jwR;}XAJv~ zaT|Fqn6%VpmZDP{`NEl+__!_U9^Iswp)9GmJ#epsD8YX6L=j#%5^bzY`(xT(w!rHx z3z0q1mZZ@+r$&@SPz5_Rz9q`#R%hFzy_p5Jcqh^kh@f;-*GE!?=RA-2`(;qcU z+?jA!pjcFNu)0uYM1c{}4>h)9Nnc-R;#td0p(9dCOaw&V7EKy#j6jdla&%7sCZYh5 ze(7{jxkUW$QP@_ClprRYl}9mk{=`=P=vI?N`G4H7Kfx1zyKuqE6)fdJ$bNjR}FFQx;FYC7hmCK zX)2g#zhALRzSB5#*8G4xb^El`a#p(2=vID)fVA$@4GzF5WOn~G3#<>1N7Kmrvh6k< z=vNGib%xNHd|OWJK&NqiXG?5I$dKn_G1S6nB5v^m`D^|ZOF+&c!PZ%}OokS+1GK#|8mXh7(G@Cd`u^v$r zRFRYlpd-&*F$Ls{fyyI=|GQ0R0rmKso+4i?$HQwh#6P4GMq9JXC=fQ~fAO^z*BV|R ZY|xOmM>^MDJ(=IaI@lcwOm_{0{{U$LVSNAq diff --git a/textures/madblocks_hydroponics_tomato3.png b/textures/madblocks_hydroponics_tomato3.png deleted file mode 100644 index 90ebe67682e28eaaf7c95c28b257b35cccad2328..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1179 zcmZ8gTS$~a6#i!S-&MEO*4+>cvtL!wcoA?Ydr8MR(oloY8-?&d>a3=FFLM&V1*ahP>RYNK3p0 zKx9s~vw*aXN4S~(n`dPSDN$aKm4UV|8^>v3K7S<33CZ7!H?2>}5^*j2bUCoj!9$?A zC68axEjd5B439-;GUKXkIOIJ?j<~ryCv59fSK9v(&}<} zbU#(WRbLaZ96AfmZchX*+Nv?~+A0Rdycne-Sqvs4S0n>{kt(PPus1ItEny~1Oak4n zSF%KeYaEEM=%vGrxD)790mv7+FWwVq%4#xUVNo)O;4)XUz&q8)WeNT8|Gr$I3NSY8 z$Fgx5F^*;O(Xcj)yF&xx(UDY#d`mz6^2ff# za!XLd@aRlbRnKivlR6_D7EQI7QDj0twaSNvVh1UCg!HaB$dqKFD%6Ifhq=6rk^oj4?V6m9g>Hy(~BVq0m6%I zv354dT_r{k55&v6F4XnJN#U39&H3@_q{O=$mE!D=`!XsDutz5g6`;5-ozE-jZRwX> zHZya6J|L0~3aPia>r^;`&Pii@iXk}qDG1Ul7;v9;?(-Ff#@vGWuW3Pal?DX^TKcwH zzn+0!tV+hOF(fHv8hE5`jrsd1XqVQ|E95=q3)@(;HUE-LGyE|i&yq+)g<1ZkAr7A9DMp^#WNQG(hK z@+vO^p})(hiwIlNRVw~~+C@(1Hl07=_O;Xdp3S8_AK!P*dB6AndC#Nj%2JCd*95>) zUgoZ$HIv`;RQm2)kqxwnrkc`X41V7`PlwcN6{T)Se)>NQbdkh(tE{dG$Z+s0;OTRc zFzrtH#geosE!&E`@rt25K-*L9E~-6i6Pa2lDo914(vu20Xd|uWXny-@Qts=_gzIVw zLQ4@jF(6UUzM3`HnHg}lEa6RK1R7gQ{?LJ-yErPrzF4T%k@ZpJMTAmWHUqZB!T?&l z4iW@7sB*xXSK4w^6i^h#kC`ES^XMqP;lScz1RtM=gv)7{;gxYIvpCr}lmkB1Mq+VG z+H-XKexSJw4Lj+Y8<2!wE|i9L1Qfu_H1Z zRiPR>&H>Lx@hay561p5vs0qBW z1(P%D3hWihftw;TS zv3q)2I82(N_;q|vls%WiY4EEYTyAwrZdyWyrxzwx_^=83Co66{BoET1yStKf^MBkFM<&T*11wqsxNOysVHqecY*($^8HmV*B ylOcm^wo}*n{E03P*T*dI81tV0<(@L=ETff8&^>glxnrZIh4gatpa__8X&)4twJLh@cm0`c9vb?^Wh$?+vH6XkVR#qzh zoo{?vI2Hx9LvH2K0;oQbfKA7zpUe@+BtOygqwC$R=Y6N(zw$ z5y#VJJ}&%bI6%?mxQK{GIxN)GXeRW47p1QQ#g=AOOTw3@yqA}-g-DPfd~k72$=o~7 zq;d?eJ7FLEmx&&7 z1F0~PODy!j{Yu9CFx()4xD^Ebm-$IRn?-(}d^S&RtHQ7(ED`e}hu4(F9~LQNcte60 o0E~q}Odgp}Dh~FfWVQ0n<*VkmCU#xHTjwDXpWCk{`ll8@0d=y|VE_OC diff --git a/textures/madblocks_hydroponics_yellowflower.png b/textures/madblocks_hydroponics_yellowflower.png deleted file mode 100644 index db30a29def8feb112ff71cd7955e802ccdcd5d0c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1179 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|*pj^6T^Rm@ z;DWu&Cj&(|3p^r=85p>QL70(Y)*K0-AbW|YuPgf<79l1TRrw3+)-y1$NPD_ChFAzP z3b4HY4OB6}fDxPhk4|R)2Z=MY@-j#pb%518Jy!u1`}_MdgPi$PxIQ=o-Jn~$9RG8R zn8Ss?zBvhItGVq*(Zd2)fy4mXCJEw#G=U6((GVs3kyJ7;Frn}eoM#~By?c)sHg8x8 zHv}jYhEM`wp*RO5gzSHq&6iKDX3#YY1?%`Nl)zopr0Oi=67XSbN diff --git a/textures/madblocks_hydroponics_yellowflower1.png b/textures/madblocks_hydroponics_yellowflower1.png deleted file mode 100644 index d5f6d1b54240113cfae6539d506f385b8eb27dd7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1179 zcmZ`&O=uHA6n?X861PocQ`05XifEu0L3&t<2QMutX)K0PL=X|Hha98_p~Ztx5f6f1 zds})av`~5p)Po1Xi+B)~AVo_FrFxJ;iq)8;siq<0dy{>eAL4}F*?Hfa_xF8yHkC?* zdIov`Ae5YlPvdUVbHb1Bvn6>4H!(Mz7=ui9FpmfS-N{58B>k3OuPvg*xIb}Y4xslG zJp!DiC>jIv$*bdm9o-7qk;lc^41j(*86UlNDJ)F=*D-oDSIY70{jomTv^2gJURg4| zVoJi$2je%F#-B4!FGJstks6$O_DuCwmd09>#0!(5xw3Z*fh1J=Dn;Rg8GeKW) zE236~N=I3~@BM{5Qiqg(7Pz9VNy=tl; ze3^o8ZE2XcCTWxp*8W9Os}ADvoVrT*V*-;O<&L h{(*GBK|6QCi0an$D0>*SZvOs2w&Zv!o*A2Y@(;im7?S`1 diff --git a/textures/madblocks_hydroponics_yellowflower2.png b/textures/madblocks_hydroponics_yellowflower2.png deleted file mode 100644 index 002bd02ddbdd0a44e3bb2e44a9a6411bc00fa086..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1179 zcmYjQO-xfk5T1Q~{FN5^gG~h@f2j$r@l**WaF7(C8mkg7CM1F}BwmOHHHgMT6AdO_ z)Wief;Kgt;9Pla!6Ay*}F-D3uMbQ{5*ixWHp>6uyZ|ZwGFT1mEc6a8R`DX8*3H4ab zwPqr+273d2Qrj@fOXb{<)&`{#BYizxG`(2ACVxsVp6m&bhVSX@)MII>xYB!mgs9Sq zA!uUKEsbT@f~UI6VyesPcMa#QVIs9I7&vyW-7aiuDktO-me52g$scv;jwR;}XAJv~ zaT|Fqn6%VpmZDP{`NEl+__!_U9^Iswp)9GmJ#epsD8YX6L=j#%5^bzY`(xT(w!rHx z3z0q1mZZ@+r$&@SPz5_Rz9q`#R%hFzy_p5Jcqh^kh@f;-*GE!?=RA-2`(;qcU z+?jA!pjcFNu)0uYM1c{}4>h)9Nnc-R;#td0p(9dCOaw&V7EKy#j6jdla&%7sCZYh5 ze(7{jxkUW$QP@_ClprRYl}9mk{=`=P=vI?N`G4H7Kfx1zyKuqE6)fdJ$bNjR}FFQx;FYC7hmCK zX)2g#zhALRzSB5#*8G4xb^El`a#p(2=vID)fVA$@4GzF5WOn~G3#<>1N7Kmrvh6k< z=vNGib%xNHd|OWJK&NqiXG?5I$dKn_G1S6nB5v^m`D^|ZOF+&c!PZ%}OokS+1GK#|8mXh7(G@Cd`u^v$r zRFRYlpd-&*F$Ls{fyyI=|GQ0R0rmKso+4i?$HQwh#6P4GMq9JXC=fQ~fAO^z*BV|R ZY|xOmM>^MDJ(=IaI@lcwOm_{0{{U$LVSNAq diff --git a/textures/madblocks_hydroponics_yellowflower3.png b/textures/madblocks_hydroponics_yellowflower3.png deleted file mode 100644 index 97ed686d4311194be2a6d949710a74dd3ae4fa82..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1179 zcmZ`&T}YEr7=F+Ew$Dvxb5nE6R5GIM2U$OOQ5V`om$*b!h$7SrDF`YJ8z~iHVP4cl z(vNvzK^R^b8QoP{7ZyfgU`a#L4O1tZTW)Ien>(HN%&i4=#yRizo%24=yZ1cLcca`= ztX3IR0H8LPm?~J*;EY$WHOoh9Ss;xS#f8xSDZ|NL6m_M=CZPE1dDVNH?I_Qc9BTwf z(BUM|)t$~Z#S7-LB5^`U)1~G-I#rPmAZ#+53M%uHiAL~9grz`1XCB2U6J%h&It96{ zezFwW#rHzN5HYx&;PI|fTQ7y3t^SnRc8xpT>V<*&Rp10aIy#_AdPtQz5qbDnaR)FG zL%RmB8g%g$MeJWP=}I z(f5re&gwWgO28gw*rW(_e)MqQI$4#2RUN$V;s2BaS7zbxJtI#DlkAWi z$y#tStaHuvgS;v(U%PEI^8~wF){+FlR{{Tf12977rA((Jb{ Pj^ner$YSa*tZDrXL*{Cc diff --git a/textures/madblocks_hydroponics_yellowflower4.png b/textures/madblocks_hydroponics_yellowflower4.png deleted file mode 100644 index e71e0a46ebb1c066ac4447aa38355d808d27ae51..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1179 zcmZ`&ZAg<*6h2qqZ91J!r!p-Tm9LVeV`yFW}!dC zL=*ClNoty!6qrd6l@?McNfKt3-&04MihHNGd#-Lp)E)0V?>U_3Iqx~=*{wufj6&`w z2LMG}tTu^RB|c74cJDLMOlC+yQcM(dj_h4vjx;MiMhg^w%>%8qEaH4QHnjl2MTHN6 z#wIlj%C5vEM9aPiKB^#jZBTDJfUqY{8>v6$L6pL(NLUI?59Ly{juHi&JktolWoA+z zn$Kffq6w}(>m;j23!P}CaG=cWHCL%zRu>zgC))y?V5X`H))SU0=7tyIu%jy|Ekw>>vBY z{{8(ma40MsMu*#(O=kH+@d%n_Enc_w;42(Wv=X^Y0*fomdBa-Jgx7I)Bym!mfCaMDt6&+@%&jO@@y-?>TGRR+=5?WAgt%3EEx^6G>YeuXM>=4HXeV{}fr^=|Li37K(*BY!fpz zfpOi9vx_MypsxskzS!mvtJfG8nN4hHch2CBly^PYulB?MJ)G$X&Q1bpDV>9vkz!7W z+L)TPKtf^~Cv)FSt0@|7&gU&;R7BV~;8W8C)ugl8vX-iKdLBoS+2s9OWB@tus|nu% z?%B5M6*h;dc>_WHU+j3m3;a)H_J1Rm3C-r?0Eg$Eba--+12G=v?*kpJ$rKgq9pFj( g8+z)zJ)YzuDW2P>lF}dfmmb9TxM-cWGb*F(7u?Eov;Y7A diff --git a/textures/madblocks_ice.png b/textures/madblocks_ice.png deleted file mode 100644 index 7fc94d70f7a0601f4e4f1080055f0cd35aa3cd6e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1166 zcmYk4J#W)s5XaB<wC(RCHj4N**(@* z^5o85AswHOUp~FnlhL#NhtEaE=Xe5n|KWljrY~l9chm3jbo1twtGCa;6LFVj#m<8p zTfx*F)xqn-Z=H(*Xm&>UseLQcNg_?#NmVy?m!**`PijR}%p|mT5=Y|JRU_Ne z%#wdDO1sEYXN9rr6IZ1dNG9Xh?!!QggtsF((qE+lsQ`=E1wwJ4YGB#c9Mr5!RijCO zQB&2egeW*whDv2~I8v!2E#UmuvXW5}S+Uo93KIp!E;))XA&ASBH}9DylK`M^Is-!z z-pS)3P`Fxq`)wv+Cc@sb0U|H`!#?x^JAhz^h@w#3nUOPgF3PHvx@m>8p)Xi7*?Nx+ zlwk#M`sPTieUC^nDgk0t17My(GITyrf_@qXHdlXxcP2tGw)s&lc^1jpjnvMtL;>NI z$R?nc`wBfoD$)on0LoG!pFn|c8k>LZ0|Uc$IP_o`4~^O!Cz8f};X)Pis8`w2?TnNJ z)h9ZIMiqstHI3+*2PV2qhY8jirXTZCr&F6EtU`FKAb%~83=rN}BINVmMUlxpuDneM zYn-D5m9|JU2bLiyUMSlT+->Bs^#<8Yj+~f1;KBfOJxkx%lE8w@Q{8>+Fb#Uc9^{My{#S&CtRw<5@DZ6)j=64f@4fc7g^*iRQ zQ`0w!%oCHiC3yO5(xIihS+;+cExjqh&@p#=(!Dd+kN-}uv5e&vi8xZJ4U}QH5Ni8s zli|5&#s&_CC((~erYqR%tOSZcgmWw*y|@#-oU zkyM%bEk0*$!!`)P^kx#*MKJ{g^r0=LqRaI2VHYY+WkwIz9j(>gtA z;f;@s&u>}me5K%?7l$CjCne#sR6U(j#_nqT$yZvo3A?zeeg2U5{P%wm51ZLc+~;%s zmNkgqkl%jDX5QNq7y4#&e13F&{=a1v`=&l*-ScA4)Sru9TnyS{pXZt`^wNIf=ch_9 rTNUTO6MA89ajp6<*PC+-O4aNQ6D030`+IsjC@wr*{an^LB{Ts5?Mb^^ diff --git a/textures/madblocks_leaves_autumn.png b/textures/madblocks_leaves_autumn.png deleted file mode 100644 index baeab0f7037d0aa3c8e790dd63e25a93e1bd94c7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1166 zcmZ`%&ubG=5T4y^k|rjaq%>PvZK;wr@uY^T1TU79BuHxzFTJUMKoKnn9z6)2Jt>0T zywzL5gLgq%6v0GkNKO2egk&LEjBQe$`@MAH>%m#xo7vgVeUx9$1pO0!A`0fR z>1&P;VU2j4eYzuVI?i+JN+wML&xA3$i(xHfSUt@tq5JW;fQLOS7PYAfQ;fOX)Y$J4{ATsrFn7Y|qb<8l zl^->UHD0AsVlUe3e<*egfCn^#ok{YuF#!;)+U-j4y@iMr)sghn-Nt+*LK)K(AOt(q zu~-RpoI|`(@xqbuuGOMV%c5jBEEDR+V5o98>i5rGg#h5B>sF*EC}Q diff --git a/textures/madblocks_leaves_spring.png b/textures/madblocks_leaves_spring.png deleted file mode 100644 index d69b564c07a63ec18fc0194d0d9b6534ee0d1f85..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1166 zcmZ9LJugH-6o${L;EQXoLC}1Z#Q<1O}#-1z~F^ozzAa0Q}Hp<4S4Lp*wBp^f1 z>?sZXVDifG--s~uwX>%T%27#pkb#CTGg31kB8neGRITV#iZFaa6Fmt8GE_MtZ4H3m zUlYwXcPf))XGDaI!zo+T fJe|FSgtHp$U*&99ar|N7a1(t}U8ZJ%p3e1_Z{NL1cThncB*VFxu?&5bj=R4;+-|u&S_dDNxdabt7kerna zz))RfyP^108cAAZKJky+6{o#(rP2mY&+8AvJxWCXpsMa6a3qZeLtlTU64W(UU#-y1 zCYnvwLVfY|X+X-Zwq3e;!OT*ntteAcFg!fW$&=O9)v@;WcCORu5Q#)U-r;blF}+?7 zpU;Qp=4OGFMn^}vEXy&!-!BoENY=bwBx^}5u(`K~{{DVWAhJ*>B)~&ML*k_p_xq7x zGD#MT1x}}vTXS0f9+T+}79EU@;^^`qa{bIYm}^c{vt?K^&i$ zi06R7v{~|aL~Lhw7qM7WtcQ9#VKvBLl^Gel%xuQ^))vT2i8 z5Eq|1#)&{0^?I2yKtyry;NTz+1OftTG#X*I+u6~CM3wJaK|X&w^NT?t(F_a>2p|!W zinv9>VMtuY?2KE4*5xP`l>!nGsUZ6?yULjJSu58_THI@Tq{_CHo#Ek~9g*}m9K%n~ zf?8A}*w~9e8dmFovaQr3c>FMFrdD?@nR1cKJ;KXk>w-toSNQWhb z1$=UPMvdiVXK+i({`GAJqwp;6H`ZYyksL1`9nhU0PKc9?yO%`V<#O?`a>Y$eO=2%S z@9N|cMRqizh3}wwUb$ZK4WA!rCIjv^Iv5lsMB3ZY#x=2!_$OR0CvRwIWb9(mNlq0{ zOOn)UyMHc~zhBd$Dt#9(zWG!|r}HwoRWGXo-%YKvm5;a1`uY-!C|F%lYkPC~_T&Ge CGj#p{ diff --git a/textures/madblocks_leaves_with_snow_top.png b/textures/madblocks_leaves_with_snow_top.png deleted file mode 100644 index 71d6fa265e4a4df996910b850c4cf1dee414891f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1166 zcmZ9Lu}Z^m5XS!rG1X`x;vy>4+0D&WNoj+$h`6|E<_^;O1a4glVkeQJlbdhg8~6zB zjuxaHY9Z#A^2zCyn1+sG0JnuQTy20hS`-jZ}tX!w9dgXm7UfbQD-}XM73%1kb@a$mSi-XT^uSjvj z;V{QzoleIa31(aSFt=GredC1jd&dMCjQ#* z&JvDfyE8>umU##*0fkZHOAPI8`AO8SOrTYSQB#U&Ngz<7))6Tr)~NdxkpLs9t3;C) z^5pQWrsV_{fQU2QY!SFM)?mW&Ef4^ptHxHbI>`$cng1V90FUz0!{R(s$CTv?7ObK;jYPo!ca0tR`ZnvikV;pQtYEOCesPLduzs2~%BAo{F2q)7g6IB%zr| V_SV|jd+OJ^oYQ(cc{#ec`2kl`I=BD; diff --git a/textures/madblocks_m1.png b/textures/madblocks_m1.png deleted file mode 100644 index db8b148944c974bc01effb4d19546739233b41ad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 234 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmPa8;g((qxucLYd|5{%#er@=ltB<)VvZPmw~~#C^fMp zHASI3vm`^o-P1Q9MK6^dDDLO!;uvCaIyogF;m3Ig#)QNKAmhKre4VpBMZ%IZBs5rj ze)yzMne8!;@kqvz>;wPZf4a1Dzde+2g+WVICFv5&QN4tNs*X8MNlQ$unHlaJ;cr}g Re1#IoN>5immvv4FO#tzrM|J=J diff --git a/textures/madblocks_m2.png b/textures/madblocks_m2.png deleted file mode 100644 index e2dd15fd753481fd7a3c2bb0acc01d87482665d4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 249 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 stW3@to;z>O@BqP_-{zopr06KJ<5&!@I diff --git a/textures/madblocks_snow.png b/textures/madblocks_snow.png deleted file mode 100644 index 1d11a2d6611211ad324b000c9f96005b7ee4bc26..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1166 zcmXxjyN(kv6b4|=WHPytCq?s z@D3=-{W{F&#V7LEK9~RhkL`SYb$Qi@*D9 zI-ORHMkAa~r%+W@$g(UPkH^sO_oHvO+eLq?)e6hyGRBLdsF6cxHk+Z?@AskC>&4{x zd>#X3S%$;m5CF67b{q0Mk9kO}k(dj}7Lqs_WX052x7+PVu-R;)8Zj!6=RRa&}dN`!>E0V*Hz&cMoVKtawdR%+}oxIzK zvj3}~rqC}C0ZeAdhSvtbx!5NK)bML1C&$9f9G*fzlt?rf0)MD}Up+>XU3 Mxthi1(c9^|}KaK5^K0XjJn#Ys_uE+%MP3=OTCE1N(-qh0bo`#2wT;yr4iIP>DgjH01%HMgx~)5(;nTMcZl$SVV*;u-Tkuv8~%T#71|{q6EDxw-~iM!Nsz$k zUpO9vQ&0ls(le$umgbioy<*H{=Hjdi!_c=3=37KfB7m5tjpr6HyvkM^@B(_)v`K1y zd>$}VZW4}w4D$D{oBuA=(01!jBvrv#dxWSkkRkzY#meP!{;DXGImB^nX`1GEcfKbf zL^Y_&bjEA)is4mFj_m{_ioniTPLdL(?skhrMCg7qU-s0zIV3e5&|%?AGHy DTcuBu diff --git a/textures/madblocks_tree.png b/textures/madblocks_tree.png deleted file mode 100644 index ab1250123c0bec828df1dd9d7bd22f6b2ab67bc5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 706 zcmV;z0zLhSP)N<2DpT4=*WFlw`Mi5Cq5qvj1fT^ASvsEr}FgHy>^w8z|JNQ|9l#9_rl0 zZHqW-Sz;gtPaB;n%>4Z4Cx86;$=C0LB}OJOd_4~^%GdKi2H?X)&XqbkV+?Ysz#ur` z>$wwsz&nR?4mFn28rB-L4@3<3U=b%6V>nZ$)J7YFp@X4HN*A{^GJ4~69stzZ!GK@{ z=PcF=lUN4O#-Nl=Rq$?lhqlI*3quD0y$^7e&cx-P^BVnB>4;)HZ&T5pWr5bM~sm97J|f~wM033GV! zk4_(*0dI{VOg#6@x<>Lpd81Evx0RK z!P~b50iMsqdfWK-*OSl3jn|%W&SKQCYzqKK%3wfMN$2@KmMYSR@_HTIZwo11oL9jb zLur*(8*z&~KJUEtMDU(%nMqe8=kne_QF?9UBQeI{$``eDj2KjvI5~_lqH2L<{9