From 9f30eb105f0799ed30726d912960f3db069664ec Mon Sep 17 00:00:00 2001 From: Vanessa Ezekowitz Date: Sun, 17 Mar 2013 21:52:33 -0400 Subject: [PATCH] Initial commit; removed obsidian block, aliased it to default version. --- depends.txt | 2 + init.lua | 1051 ++++++++++++++++++++++++ init.lua~ | 1051 ++++++++++++++++++++++++ textures/Thumbs.db | Bin 0 -> 36352 bytes textures/gloopblocks_basalt.png | Bin 0 -> 575 bytes textures/gloopblocks_cement.png | Bin 0 -> 441 bytes textures/gloopblocks_cement_axe.png | Bin 0 -> 117 bytes textures/gloopblocks_cement_pick.png | Bin 0 -> 188 bytes textures/gloopblocks_cement_shovel.png | Bin 0 -> 126 bytes textures/gloopblocks_cement_sword.png | Bin 0 -> 152 bytes textures/gloopblocks_evil_axe.png | Bin 0 -> 160 bytes textures/gloopblocks_evil_block.png | Bin 0 -> 449 bytes textures/gloopblocks_evil_pick.png | Bin 0 -> 159 bytes textures/gloopblocks_evil_shovel.png | Bin 0 -> 138 bytes textures/gloopblocks_evil_stick.png | Bin 0 -> 254 bytes textures/gloopblocks_evil_sword.png | Bin 0 -> 167 bytes textures/gloopblocks_pavement.png | Bin 0 -> 325 bytes textures/gloopblocks_pumice.png | Bin 0 -> 809 bytes textures/gloopblocks_rainbow_block.png | Bin 0 -> 114 bytes textures/gloopblocks_scaffold.png | Bin 0 -> 244 bytes textures/gloopblocks_wet_cement.png | Bin 0 -> 300 bytes 21 files changed, 2104 insertions(+) create mode 100644 depends.txt create mode 100644 init.lua create mode 100644 init.lua~ create mode 100644 textures/Thumbs.db create mode 100644 textures/gloopblocks_basalt.png create mode 100644 textures/gloopblocks_cement.png create mode 100644 textures/gloopblocks_cement_axe.png create mode 100644 textures/gloopblocks_cement_pick.png create mode 100644 textures/gloopblocks_cement_shovel.png create mode 100644 textures/gloopblocks_cement_sword.png create mode 100644 textures/gloopblocks_evil_axe.png create mode 100644 textures/gloopblocks_evil_block.png create mode 100644 textures/gloopblocks_evil_pick.png create mode 100644 textures/gloopblocks_evil_shovel.png create mode 100644 textures/gloopblocks_evil_stick.png create mode 100644 textures/gloopblocks_evil_sword.png create mode 100644 textures/gloopblocks_pavement.png create mode 100644 textures/gloopblocks_pumice.png create mode 100644 textures/gloopblocks_rainbow_block.png create mode 100644 textures/gloopblocks_scaffold.png create mode 100644 textures/gloopblocks_wet_cement.png diff --git a/depends.txt b/depends.txt new file mode 100644 index 0000000..89caf33 --- /dev/null +++ b/depends.txt @@ -0,0 +1,2 @@ +default +glooptest diff --git a/init.lua b/init.lua new file mode 100644 index 0000000..8cc5183 --- /dev/null +++ b/init.lua @@ -0,0 +1,1051 @@ +--[[ +GloopBlocks +written by GloopMaster +Version "Whatever you wanna call it" +Licensed under WTFPL. + +Updates by VanessaE 2013-03-17. + +--]] + +minetest.register_node("gloopblocks:rainbow_block", { + description = "Rainbow Block", + tiles = {"gloopblocks_rainbow_block.png"}, + is_ground_content = true, + groups = {cracky=3}, + sounds = default.node_sound_defaults(), +}) + +minetest.register_craft( { + type = "shapeless", + output = "gloopblocks:rainbow_block", + recipe = { + "group:basecolor_red", + "group:excolor_orange", + "group:basecolor_yellow", + "group:basecolor_green", + "group:basecolor_blue", + "group:excolor_violet", + "default:stone", + "default:mese_crystal", + }, +}) + +minetest.register_craft({ + output = "default:nyancat", + recipe = { + {"gloopblocks:rainbow_block", "gloopblocks:rainbow_block", "gloopblocks:rainbow_block"}, + {"gloopblocks:rainbow_block", "gloopblocks:rainbow_block", "gloopblocks:rainbow_block"}, + {"gloopblocks:rainbow_block", "gloopblocks:rainbow_block", "gloopblocks:rainbow_block"}, + } +}) + +minetest.register_craft({ + output = "default:nyancat_rainbow", + recipe = { + {"gloopblocks:rainbow_block", "gloopblocks:rainbow_block", "gloopblocks:rainbow_block"}, + } +}) + +minetest.register_node("gloopblocks:cement", { + description = "Cement", + tiles = {"gloopblocks_cement.png"}, + is_ground_content = true, + groups = {cracky=2}, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_craftitem("gloopblocks:wet_cement", { + description = "Wet Cement", + inventory_image = "gloopblocks_wet_cement.png", +}) + +minetest.register_craft({ + type = "shapeless", + output = "gloopblocks:wet_cement", + recipe = { + "bucket:bucket_water", + "default:gravel", + }, + replacements = {{'bucket:bucket_water', 'bucket:bucket_empty'},}, +}) + +minetest.register_craft({ + type = "cooking", + output = "gloopblocks:cement", + recipe = "gloopblocks:wet_cement", + cooktime = 8 +}) + +minetest.register_craft({ + output = "default:gravel 2", + recipe = { + {"gloopblocks:cement"}, + }, +}) + +minetest.register_craft({ + output = "wool:white", + recipe = { + {"default:dry_shrub","flowers:cotton"}, + {"flowers:cotton","default:dry_shrub"}, + }, +}) + +minetest.register_craft({ + output = "wool:white", + recipe = { + {"flowers:cotton","default:dry_shrub"}, + {"default:dry_shrub","flowers:cotton"}, + }, +}) + +minetest.register_craftitem("gloopblocks:evil_stick", { + description = "Evil Stick", + inventory_image = "gloopblocks_evil_stick.png", +}) + +minetest.register_craft({ + type = "shapeless", + output = "gloopblocks:evil_stick", + recipe = { + "gloopores:kalite_lump", + "default:coal_lump", + "default:stick" + } +}) + +minetest.register_node("gloopblocks:evil_block", { + description = "Evil Block", + tiles = {"gloopblocks_evil_block.png"}, + light_source = 5, + is_ground_content = true, + groups = {cracky=2}, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_craft({ + output = "gloopblocks:evil_block", + recipe = { + {"gloopblocks:evil_stick", "gloopblocks:evil_stick"}, + {"gloopblocks:evil_stick", "gloopblocks:evil_stick"}, + } +}) + +minetest.register_craft({ + output = "gloopblocks:evil_stick 4", + recipe = { + {"gloopblocks:evil_block"} + } +}) + +minetest.register_node("gloopblocks:rainbow_block", { + description = "Rainbow Block", + tiles = {"gloopblocks_rainbow_block.png"}, + is_ground_content = true, + groups = {cracky=3}, + sounds = default.node_sound_defaults(), +}) + +minetest.register_craft({ + output = "default:nyancat", + recipe = { + {"gloopblocks:rainbow_block", "gloopblocks:rainbow_block", "gloopblocks:rainbow_block"}, + {"gloopblocks:rainbow_block", "gloopblocks:rainbow_block", "gloopblocks:rainbow_block"}, + {"gloopblocks:rainbow_block", "gloopblocks:rainbow_block", "gloopblocks:rainbow_block"}, + } +}) + +minetest.register_craft({ + output = "default:nyancat_rainbow", + recipe = { + {"gloopblocks:rainbow_block", "gloopblocks:rainbow_block", "gloopblocks:rainbow_block"}, + } +}) + +minetest.register_tool("gloopblocks:pick_cement", { + description = "Cement Pickaxe", + inventory_image = "gloopblocks_cement_pick.png", + tool_capabilities = { + max_drop_level=1, + groupcaps={ + cracky={times={[1]=3.50, [2]=1.40, [3]=0.90}, uses=25, maxlevel=2} + } + }, +}) + +minetest.register_tool("gloopblocks:shovel_cement", { + description = "Cement Shovel", + inventory_image = "gloopblocks_cement_shovel.png", + tool_capabilities = { + max_drop_level=1, + groupcaps={ + crumbly={times={[1]=1.50, [2]=0.60, [3]=0.45}, uses=25, maxlevel=2} + } + }, +}) + +minetest.register_tool("gloopblocks:axe_cement", { + description = "Cement Axe", + inventory_image = "gloopblocks_cement_axe.png", + tool_capabilities = { + max_drop_level=1, + groupcaps={ + choppy={times={[1]=3.00, [2]=1.30, [3]=0.80}, uses=25, maxlevel=2}, + fleshy={times={[2]=1.20, [3]=0.65}, uses=30, maxlevel=1} + } + }, +}) + +minetest.register_tool("gloopblocks:sword_cement", { + description = "Cement Sword", + inventory_image = "gloopblocks_cement_sword.png", + tool_capabilities = { + full_punch_interval = 1.0, + max_drop_level=1, + groupcaps={ + fleshy={times={[1]=1.60, [2]=0.80, [3]=0.40}, uses=15, maxlevel=2}, + snappy={times={[2]=0.75, [3]=0.35}, uses=30, maxlevel=1}, + choppy={times={[3]=0.80}, uses=30, maxlevel=0} + } + } +}) + +minetest.register_tool("gloopblocks:pick_evil", { + description = "Evil Pickaxe", + inventory_image = "gloopblocks_evil_pick.png", + tool_capabilities = { + max_drop_level=3, + groupcaps={ + cracky={times={[1]=0.10, [2]=0.10, [3]=0.10}, uses=10, maxlevel=3} + } + }, +}) + +minetest.register_tool("gloopblocks:shovel_evil", { + description = "Evil Shovel", + inventory_image = "gloopblocks_evil_shovel.png", + tool_capabilities = { + max_drop_level=3, + groupcaps={ + crumbly={times={[1]=0.05, [2]=0.05, [3]=0.05}, uses=10, maxlevel=3} + } + }, +}) + +minetest.register_tool("gloopblocks:axe_evil", { + description = "Evil Axe", + inventory_image = "gloopblocks_evil_axe.png", + tool_capabilities = { + max_drop_level=3, + groupcaps={ + choppy={times={[1]=0.15, [2]=0.15, [3]=0.15}, uses=10, maxlevel=3}, + fleshy={times={[1]=0.15, [2]=0.15, [3]=0.15}, uses=10, maxlevel=3} + } + }, +}) + +minetest.register_tool("gloopblocks:sword_evil", { + description = "Evil Sword", + inventory_image = "gloopblocks_evil_sword.png", + tool_capabilities = { + full_punch_interval = 1.0, + max_drop_level=3, + groupcaps={ + fleshy={times={[1]=0.20, [2]=0.20, [3]=0.20}, uses=10, maxlevel=3}, + snappy={times={[1]=0.20, [2]=0.20, [3]=0.20}, uses=10, maxlevel=3}, + choppy={times={[1]=0.20, [2]=0.20, [3]=0.20}, uses=10, maxlevel=3} + } + } +}) + +minetest.register_craft({ + output = "gloopblocks:pick_cement", + recipe = { + {"gloopblocks:cement", "gloopblocks:cement", "gloopblocks:cement"}, + {"", "default:stick", ""}, + {"", "default:stick", ""}, + } +}) + +minetest.register_craft({ + output = "gloopblocks:axe_cement", + recipe = { + {"gloopblocks:cement", "gloopblocks:cement"}, + {"gloopblocks:cement", "default:stick"}, + {"", "default:stick"}, + } +}) + +minetest.register_craft({ + output = "gloopblocks:axe_cement", + recipe = { + {"gloopblocks:cement", "gloopblocks:cement"}, + {"default:stick", "gloopblocks:cement"}, + {"default:stick", ""}, + } +}) + +minetest.register_craft({ + output = "gloopblocks:shovel_cement", + recipe = { + {"gloopblocks:cement"}, + {"default:stick"}, + {"default:stick"}, + } +}) + +minetest.register_craft({ + output = "gloopblocks:sword_cement", + recipe = { + {"gloopblocks:cement"}, + {"gloopblocks:cement"}, + {"default:stick"}, + } +}) + +minetest.register_craft({ + output = "gloopblocks:pick_evil", + recipe = { + {"gloopblocks:evil_block", "gloopblocks:evil_block", "gloopblocks:evil_block"}, + {"", "gloopblocks:evil_stick", ""}, + {"", "gloopblocks:evil_stick", ""}, + } +}) + +minetest.register_craft({ + output = "gloopblocks:axe_evil", + recipe = { + {"gloopblocks:evil_block", "gloopblocks:evil_block"}, + {"gloopblocks:evil_block", "gloopblocks:evil_stick"}, + {"", "gloopblocks:evil_stick"}, + } +}) + +minetest.register_craft({ + output = "gloopblocks:axe_evil", + recipe = { + {"gloopblocks:evil_block", "gloopblocks:evil_block"}, + {"gloopblocks:evil_stick", "gloopblocks:evil_block"}, + {"gloopblocks:evil_stick", ""}, + } +}) + +minetest.register_craft({ + output = "gloopblocks:shovel_evil", + recipe = { + {"gloopblocks:evil_block"}, + {"gloopblocks:evil_stick"}, + {"gloopblocks:evil_stick"}, + } +}) + +minetest.register_craft({ + output = "gloopblocks:sword_evil", + recipe = { + {"gloopblocks:evil_block"}, + {"gloopblocks:evil_block"}, + {"gloopblocks:evil_stick"}, + } +}) + +minetest.register_craft({ + output = "default:wood", + recipe = { + {"default:stick", "default:stick"}, + {"default:stick", "default:stick"}, + } +}) + +minetest.register_abm({ + nodenames = {"default:cobble"}, + neighbors = {"default:water_source", "default:water_flowing"}, + interval = 30, + chance = 20, + action = function(pos) + minetest.env:add_node (pos, {name = "default:mossycobble"}) + end, +}) + +gloopblocks = {} + +function gloopblocks.register_stair(subname, recipeitem, groups, images, description, drop) + minetest.register_node("gloopblocks:stair_" .. subname, { + description = description, + drawtype = "nodebox", + tiles = images, + paramtype = "light", + paramtype2 = "facedir", + is_ground_content = true, + groups = groups, + node_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, 0, 0.5}, + {-0.5, 0, 0, 0.5, 0.5, 0.5}, + }, + }, + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, 0, 0.5}, + {-0.5, 0, 0, 0.5, 0.5, 0.5}, + }, + }, + sounds = default.node_sound_stone_defaults(), + }) + + minetest.register_node(":stairs:stair_" .. subname, { + description = description, + drawtype = "nodebox", + tiles = images, + paramtype = "light", + paramtype2 = "facedir", + is_ground_content = true, + groups = groups, + node_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, 0, 0.5}, + {-0.5, 0, 0, 0.5, 0.5, 0.5}, + }, + }, + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, 0, 0.5}, + {-0.5, 0, 0, 0.5, 0.5, 0.5}, + }, + }, + sounds = default.node_sound_stone_defaults(), + }) + + minetest.register_node("gloopblocks:stair_" .. subname .. "_inverted", { + description = description, + drawtype = "nodebox", + tiles = images, + drop = "gloopblocks:stair_" .. drop .. "_inverted", + paramtype = "light", + paramtype2 = "facedir", + is_ground_content = true, + groups = groups, + node_box = { + type = "fixed", + fixed = { + {-0.5, 0, -0.5, 0.5, 0.5, 0.5}, + {-0.5, -0.5, 0, 0.5, 0, 0.5}, + }, + }, + selection_box = { + type = "fixed", + fixed = { + {-0.5, 0, -0.5, 0.5, 0.5, 0.5}, + {-0.5, -0.5, 0, 0.5, 0, 0.5}, + }, + }, + sounds = default.node_sound_stone_defaults(), + }) + + minetest.register_node("gloopblocks:stair_" .. subname .. "_wall", { + description = description, + drawtype = "nodebox", + tiles = images, + drop = "gloopblocks:stair_" .. drop .. "_wall", + paramtype = "light", + paramtype2 = "facedir", + is_ground_content = true, + groups = groups, + node_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, 0, 0.5, 0.5, 0.5}, + {-0.5, -0.5, -0.5, 0, 0.5, 0}, + }, + }, + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, 0, 0.5, 0.5, 0.5}, + {-0.5, -0.5, -0.5, 0, 0.5, 0}, + }, + }, + sounds = default.node_sound_stone_defaults(), + }) + + minetest.register_node("gloopblocks:stair_" .. subname .. "_wall_half", { + description = description, + drawtype = "nodebox", + tiles = images, + drop = "gloopblocks:stair_" .. drop .. "_wall_half", + paramtype = "light", + paramtype2 = "facedir", + is_ground_content = true, + groups = groups, + node_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, 0, 0.5, 0, 0.5}, + {-0.5, -0.5, -0.5, 0, 0, 0}, + }, + }, + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, 0, 0.5, 0, 0.5}, + {-0.5, -0.5, -0.5, 0, 0, 0}, + }, + }, + sounds = default.node_sound_stone_defaults(), + }) + + minetest.register_node("gloopblocks:stair_" .. subname .. "_wall_half_inverted", { + description = description, + drawtype = "nodebox", + tiles = images, + drop = "gloopblocks:stair_" .. drop .. "_wall_half_inverted", + paramtype = "light", + paramtype2 = "facedir", + is_ground_content = true, + groups = groups, + node_box = { + type = "fixed", + fixed = { + {-0.5, 0, 0, 0.5, 0.5, 0.5}, + {-0.5, 0, -0.5, 0, 0.5, 0}, + }, + }, + selection_box = { + type = "fixed", + fixed = { + {-0.5, 0, 0, 0.5, 0.5, 0.5}, + {-0.5, 0, -0.5, 0, 0.5, 0}, + }, + }, + sounds = default.node_sound_stone_defaults(), + }) + + minetest.register_node("gloopblocks:stair_" .. subname .. "_inner", { + description = description, + drawtype = "nodebox", + tiles = images, + drop = "gloopblocks:stair_" .. drop .. "_inner", + paramtype = "light", + paramtype2 = "facedir", + is_ground_content = true, + groups = groups, + node_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, 0, 0.5}, + {-0.5, 0, 0, 0.5, 0.5, 0.5}, + {-0.5, 0, -0.5, 0, 0.5, 0}, + }, + }, + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, 0, 0.5}, + {-0.5, 0, 0, 0.5, 0.5, 0.5}, + {-0.5, 0, -0.5, 0, 0.5, 0}, + }, + }, + sounds = default.node_sound_stone_defaults(), + }) + + minetest.register_node("gloopblocks:stair_" .. subname .. "_outer", { + description = description, + drawtype = "nodebox", + tiles = images, + drop = "gloopblocks:stair_" .. drop .. "_outer", + paramtype = "light", + paramtype2 = "facedir", + is_ground_content = true, + groups = groups, + node_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, 0, 0.5}, + {-0.5, 0, 0, 0, 0.5, 0.5}, + }, + }, + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, 0, 0.5}, + {-0.5, 0, 0, 0, 0.5, 0.5}, + }, + }, + sounds = default.node_sound_stone_defaults(), + }) + + minetest.register_craft({ + output = "gloopblocks:stair_" .. subname .. " 8", + recipe = { + {recipeitem, "", ""}, + {recipeitem, recipeitem, ""}, + {recipeitem, recipeitem, recipeitem}, + }, + }) + + minetest.register_craft({ + output = "gloopblocks:stair_" .. subname .. " 8", + recipe = { + {"", "", recipeitem}, + {"", recipeitem, recipeitem}, + {recipeitem, recipeitem, recipeitem}, + }, + }) + + minetest.register_craft({ + output = "gloopblocks:stair_" .. subname .. "_inverted" .. " 8", + recipe = { + {recipeitem, recipeitem, recipeitem}, + {recipeitem, recipeitem, ""}, + {recipeitem, "", ""}, + }, + }) + + minetest.register_craft({ + output = "gloopblocks:stair_" .. subname .. "_inverted" .. " 8", + recipe = { + {recipeitem, recipeitem, recipeitem}, + {"", recipeitem, recipeitem}, + {"", "", recipeitem}, + }, + }) + + minetest.register_craft({ + output = "gloopblocks:stair_" .. subname .. "_inverted" .. " 1", + recipe = { + {"gloopblocks:stair_" .. subname}, + }, + }) + + minetest.register_craft({ + output = "gloopblocks:stair_" .. subname .. "_inner" .. " 1", + recipe = { + {"gloopblocks:micro_" .. subname .. "_bottom", "gloopblocks:stair_" .. subname}, + }, + }) + + minetest.register_craft({ + output = "gloopblocks:stair_" .. subname .. "_outer 1", + recipe = { + {"gloopblocks:micro_" .. subname .. "_bottom"}, + {"gloopblocks:slab_" .. subname}, + }, + }) + + minetest.register_craft({ + output = "gloopblocks:stair_" .. subname .. "_wall_half" .. " 1", + recipe = { + {"gloopblocks:stair_" .. subname .. "_wall"}, + }, + }) + + minetest.register_craft({ + output = "gloopblocks:stair_" .. subname .. "_wall_half_inverted" .. " 1", + recipe = { + {"gloopblocks:stair_" .. subname .. "_wall_half"}, + }, + }) + + minetest.register_craft({ + output = "gloopblocks:stair_" .. subname .. "_wall_half" .. " 1", + recipe = { + {"gloopblocks:stair_" .. subname .. "_wall_half_inverted"}, + }, + }) + + minetest.register_craft({ + output = "gloopblocks:stair_" .. subname .. "_inverted" .. " 1", + recipe = { + {"gloopblocks:stair_" .. subname}, + }, + }) + + minetest.register_craft({ + output = "gloopblocks:stair_" .. subname .. " 1", + recipe = { + {"gloopblocks:stair_" .. subname .. "_inverted"}, + }, + }) + + minetest.register_craft({ + output = "gloopblocks:stair_" .. subname .. "_wall" .. " 7", + recipe = { + {recipeitem, recipeitem, recipeitem}, + {"", "", recipeitem}, + {"", "", recipeitem}, + }, + }) + + minetest.register_craft({ + output = "gloopblocks:stair_" .. subname .. "_wall" .. " 7", + recipe = { + {recipeitem, recipeitem, recipeitem}, + {recipeitem, "" , ""}, + {recipeitem, "", ""}, + }, + }) +end + +-- Node will be called gloopblocks:slab_ +function gloopblocks.register_slab(subname, recipeitem, groups, images, description, drop) + minetest.register_node("gloopblocks:slab_" .. subname, { + description = description, + drawtype = "nodebox", + tiles = images, + drop = "gloopblocks:slab_" .. drop, + paramtype = "light", + is_ground_content = true, + groups = groups, + node_box = { + type = "fixed", + fixed = {-0.5, -0.5, -0.5, 0.5, 0, 0.5}, + }, + selection_box = { + type = "fixed", + fixed = {-0.5, -0.5, -0.5, 0.5, 0, 0.5}, + }, + sounds = default.node_sound_stone_defaults(), + }) + + minetest.register_node("gloopblocks:slab_" .. subname .. "_inverted", { + description = description, + drawtype = "nodebox", + tiles = images, + drop = "gloopblocks:slab_" .. drop .. "_inverted", + paramtype = "light", + is_ground_content = true, + groups = groups, + node_box = { + type = "fixed", + fixed = {-0.5, 0, -0.5, 0.5, 0.5, 0.5}, + }, + selection_box = { + type = "fixed", + fixed = {-0.5, 0, -0.5, 0.5, 0.5, 0.5}, + }, + sounds = default.node_sound_stone_defaults(), + }) + + minetest.register_node("gloopblocks:slab_" .. subname .. "_wall", { + description = description, + drawtype = "nodebox", + tiles = images, + drop = "gloopblocks:slab_" .. drop .. "_wall", + paramtype = "light", + paramtype2 = "facedir", + is_ground_content = true, + groups = groups, + node_box = { + type = "fixed", + fixed = {-0.5, -0.5, 0, 0.5, 0.5, 0.5}, + }, + selection_box = { + type = "fixed", + fixed = {-0.5, -0.5, 0, 0.5, 0.5, 0.5}, + }, + sounds = default.node_sound_stone_defaults(), + }) + + minetest.register_craft({ + output = "gloopblocks:slab_" .. subname .. " 6", + recipe = { + {recipeitem, recipeitem, recipeitem}, + }, + }) + + minetest.register_craft({ + output = "gloopblocks:slab_" .. subname .. "_wall" .. " 6", + recipe = { + {recipeitem}, + {recipeitem}, + {recipeitem}, + }, + }) + + minetest.register_craft({ + output = "gloopblocks:slab_" .. subname .. "_inverted" .. " 1", + recipe = { + {"gloopblocks:slab_" .. subname}, + }, + }) + + minetest.register_craft({ + output = "gloopblocks:slab_" .. subname .. " 1", + recipe = { + {"gloopblocks:slab_" .. subname .. "_inverted"}, + }, + }) + + minetest.register_craft({ + output = recipeitem .. " 1", + recipe = { + {"gloopblocks:slab_" .. subname}, + {"gloopblocks:slab_" .. subname}, + }, + }) + + minetest.register_craft({ + output = recipeitem .. " 1", + recipe = { + {"gloopblocks:slab_" .. subname .. "_inverted"}, + {"gloopblocks:slab_" .. subname .. "_inverted"}, + }, + }) + + minetest.register_craft({ + output = recipeitem .. " 1", + recipe = { + {"gloopblocks:slab_" .. subname .. "_wall", "gloopblocks:slab_" .. subname .. "_wall"}, + }, + }) +end + +-- Node will be called gloopblocks:panel_ +function gloopblocks.register_panel(subname, recipeitem, groups, images, description, drop) + minetest.register_node("gloopblocks:panel_" .. subname .. "_bottom", { + description = description, + drawtype = "nodebox", + tiles = images, + drop = "gloopblocks:panel_" .. drop .. "_bottom", + paramtype = "light", + paramtype2 = "facedir", + is_ground_content = true, + groups = groups, + node_box = { + type = "fixed", + fixed = {-0.5, -0.5, 0, 0.5, 0, 0.5}, + }, + selection_box = { + type = "fixed", + fixed = {-0.5, -0.5, 0, 0.5, 0, 0.5}, + }, + sounds = default.node_sound_stone_defaults(), + }) + + minetest.register_node("gloopblocks:panel_" .. subname .. "_top", { + description = description, + drawtype = "nodebox", + tiles = images, + drop = "gloopblocks:panel_" .. drop .. "_top", + paramtype = "light", + paramtype2 = "facedir", + is_ground_content = true, + groups = groups, + node_box = { + type = "fixed", + fixed = {-0.5, 0, 0, 0.5, 0.5, 0.5}, + }, + selection_box = { + type = "fixed", + fixed = {-0.5, 0, 0, 0.5, 0.5, 0.5}, + }, + sounds = default.node_sound_stone_defaults(), + }) + + minetest.register_node("gloopblocks:panel_" .. subname .. "_vertical", { + description = description, + drawtype = "nodebox", + tiles = images, + drop = "gloopblocks:panel_" .. drop .. "_vertical", + paramtype = "light", + paramtype2 = "facedir", + is_ground_content = true, + groups = groups, + node_box = { + type = "fixed", + fixed = {-0.5, -0.5, 0, 0, 0.5, 0.5}, + }, + selection_box = { + type = "fixed", + fixed = {-0.5, -0.5, 0, 0, 0.5, 0.5}, + }, + sounds = default.node_sound_stone_defaults(), + }) + + minetest.register_craft({ + output = "gloopblocks:panel_" .. subname .. "_bottom" .. " 8", + recipe = { + {recipeitem, recipeitem}, + }, + }) + + minetest.register_craft({ + output = "gloopblocks:panel_" .. subname .. "_vertical" .. " 8", + recipe = { + {recipeitem}, + {recipeitem}, + }, + }) + + minetest.register_craft({ + output = "gloopblocks:panel_" .. subname .. "_top" .. " 1", + recipe = { + {"gloopblocks:panel_" .. subname .. "_bottom"}, + }, + }) + + minetest.register_craft({ + output = "gloopblocks:panel_" .. subname .. "_bottom" .. " 1", + recipe = { + {"gloopblocks:panel_" .. subname .. "_top"}, + }, + }) + + minetest.register_craft({ + output = "gloopblocks:panel_" .. subname .. "_vertical" .. " 2", + recipe = { + {"gloopblocks:panel_" .. subname .. "_bottom"}, + {"gloopblocks:panel_" .. subname .. "_bottom"}, + }, + }) + + minetest.register_craft({ + output = "gloopblocks:panel_" .. subname .. "_bottom" .. " 2", + recipe = { + {"gloopblocks:panel_" .. subname .. "_vertical", "gloopblocks:panel_" .. subname .. "_vertical"}, + }, + }) +end + +-- Node will be called gloopblocks:micro_ +function gloopblocks.register_micro(subname, recipeitem, groups, images, description, drop) + minetest.register_node("gloopblocks:micro_" .. subname .. "_bottom", { + description = description, + drawtype = "nodebox", + tiles = images, + drop = "gloopblocks:micro_" .. drop .. "_bottom", + paramtype = "light", + paramtype2 = "facedir", + is_ground_content = true, + groups = groups, + node_box = { + type = "fixed", + fixed = {-0.5, -0.5, 0, 0, 0, 0.5}, + }, + selection_box = { + type = "fixed", + fixed = {-0.5, -0.5, 0, 0, 0, 0.5}, + }, + sounds = default.node_sound_stone_defaults(), + }) + + minetest.register_node("gloopblocks:micro_" .. subname .. "_top", { + description = description, + drawtype = "nodebox", + tiles = images, + drop = "gloopblocks:micro_" .. drop .. "_top", + paramtype = "light", + paramtype2 = "facedir", + is_ground_content = true, + groups = groups, + node_box = { + type = "fixed", + fixed = {-0.5, 0, 0, 0, 0.5, 0.5}, + }, + selection_box = { + type = "fixed", + fixed = {-0.5, 0, 0, 0, 0.5, 0.5}, + }, + sounds = default.node_sound_stone_defaults(), + }) + + minetest.register_craft({ + output = "gloopblocks:micro_" .. subname .. "_bottom 8", + recipe = { + {"default:stick"}, + {recipeitem}, + }, + }) + + minetest.register_craft({ + output = "gloopblocks:micro_" .. subname .. "_top 1", + recipe = { + {"gloopblocks:micro_" .. subname .. "_bottom"}, + }, + }) + + minetest.register_craft({ + output = "gloopblocks:micro_" .. subname .. "_bottom 1", + recipe = { + {"gloopblocks:micro_" .. subname .. "_top"}, + }, + }) +end + +-- Nodes will be called gloopblocks:{stair,slab}_ +function gloopblocks.register_stair_and_slab_and_panel_and_micro(subname, recipeitem, groups, images, desc_stair, desc_slab, desc_panel, desc_micro, drop) + gloopblocks.register_stair(subname, recipeitem, groups, images, desc_stair, drop) + gloopblocks.register_slab(subname, recipeitem, groups, images, desc_slab, drop) + gloopblocks.register_panel(subname, recipeitem, groups, images, desc_panel, drop) + gloopblocks.register_micro(subname, recipeitem, groups, images, desc_micro, drop) +end + +gloopblocks.register_stair_and_slab_and_panel_and_micro("cement", "gloopblocks:cement", {cracky=2}, {"gloopblocks_cement.png"}, "Cement Stairs", "Cement Slab", "Cement Panel", "Cement Microblock", "cement") +gloopblocks.register_stair_and_slab_and_panel_and_micro("evil", "gloopblocks:evil_block", {cracky=3}, {"gloopblocks_evil_block.png"}, "Evil Stairs", "Evil Slab", "Evil Panel", "Evil Microblock", "evil") + +minetest.register_alias("gloopblocks:obsidian", "default:obsidian") + +minetest.register_node("gloopblocks:basalt", { + description = "Basalt", + tiles = {"gloopblocks_basalt.png"}, + groups = {cracky=2}, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node("gloopblocks:pumice", { + description = "Pumice", + tiles = {"gloopblocks_pumice.png"}, + groups = {cracky=3}, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_abm({ + nodenames = {"default:lava_flowing"}, + neighbors = {"default:water_source"}, + interval = 1.0, + chance = 1, + action = function(pos) + minetest.env:add_node(pos,{name="gloopblocks:basalt"}) + end, +}) + +minetest.register_abm({ + nodenames = {"default:lava_flowing"}, + neighbors = {"default:water_flowing"}, + interval = 1.0, + chance = 1, + action = function(pos) + minetest.env:add_node(pos,{name="gloopblocks:pumice"}) + end, +}) + +minetest.register_node("gloopblocks:pavement", { + description = "Pavement", + tiles = {"gloopblocks_pavement.png"}, + groups = {cracky=3, oddly_breakable_by_hand=3}, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_craft({ + output = "gloopblocks:pavement 5", + recipe = { + {"gloopblocks:basalt", "gloopblocks:wet_cement","gloopblocks:basalt"}, + {"gloopblocks:wet_cement","gloopblocks:basalt", "gloopblocks:wet_cement"}, + {"gloopblocks:basalt", "gloopblocks:wet_cement","gloopblocks:basalt"}, + } +}) + +minetest.register_craft({ + output = "gloopblocks:pavement 5", + recipe = { + {"gloopblocks:wet_cement","gloopblocks:basalt", "gloopblocks:wet_cement"}, + {"gloopblocks:basalt", "gloopblocks:wet_cement","gloopblocks:basalt"}, + {"gloopblocks:wet_cement","gloopblocks:basalt", "gloopblocks:wet_cement"}, + } +}) + + diff --git a/init.lua~ b/init.lua~ new file mode 100644 index 0000000..c625746 --- /dev/null +++ b/init.lua~ @@ -0,0 +1,1051 @@ +--[[ +GloopBlocks +written by GloopMaster +Version "Whatever you wanna call it" +Licensed under WTFPL. + +Updates by VanessaE 2013-03-17. + +--]] + +minetest.register_node("gloopblocks:rainbow_block", { + description = "Rainbow Block", + tiles = {"gloopblocks_rainbow_block.png"}, + is_ground_content = true, + groups = {cracky=3}, + sounds = default.node_sound_defaults(), +}) + +minetest.register_craft( { + type = "shapeless", + output = "gloopblocks:rainbow_block", + recipe = { + "group:basecolor_red", + "group:excolor_orange", + "group:basecolor_yellow", + "group:basecolor_green", + "group:basecolor_blue", + "group:excolor_violet", + "default:stone", + "default:mese_crystal", + }, +}) + +minetest.register_craft({ + output = "default:nyancat", + recipe = { + {"gloopblocks:rainbow_block", "gloopblocks:rainbow_block", "gloopblocks:rainbow_block"}, + {"gloopblocks:rainbow_block", "gloopblocks:rainbow_block", "gloopblocks:rainbow_block"}, + {"gloopblocks:rainbow_block", "gloopblocks:rainbow_block", "gloopblocks:rainbow_block"}, + } +}) + +minetest.register_craft({ + output = "default:nyancat_rainbow", + recipe = { + {"gloopblocks:rainbow_block", "gloopblocks:rainbow_block", "gloopblocks:rainbow_block"}, + } +}) + +minetest.register_node("gloopblocks:cement", { + description = "Cement", + tiles = {"gloopblocks_cement.png"}, + is_ground_content = true, + groups = {cracky=2}, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_craftitem("gloopblocks:wet_cement", { + description = "Wet Cement", + inventory_image = "gloopblocks_wet_cement.png", +}) + +minetest.register_craft({ + type = "shapeless", + output = "gloopblocks:wet_cement", + recipe = { + "bucket:bucket_water", + "default:gravel", + }, + replacements = {{'bucket:bucket_water', 'bucket:bucket_empty'},}, +}) + +minetest.register_craft({ + type = "cooking", + output = "gloopblocks:cement", + recipe = "gloopblocks:wet_cement", + cooktime = 8 +}) + +minetest.register_craft({ + output = "default:gravel 2", + recipe = { + {"gloopblocks:cement"}, + }, +}) + +minetest.register_craft({ + output = "wool:white", + recipe = { + {"default:dry_shrub","flowers:cotton"}, + {"flowers:cotton","default:dry_shrub"}, + }, +}) + +minetest.register_craft({ + output = "wool:white", + recipe = { + {"flowers:cotton","default:dry_shrub"}, + {"default:dry_shrub","flowers:cotton"}, + }, +}) + +minetest.register_craftitem("gloopblocks:evil_stick", { + description = "Evil Stick", + inventory_image = "gloopblocks_evil_stick.png", +}) + +minetest.register_craft({ + type = "shapeless", + output = "gloopblocks:evil_stick", + recipe = { + "gloopores:kalite_lump", + "default:coal_lump", + "default:stick" + } +}) + +minetest.register_node("gloopblocks:evil_block", { + description = "Evil Block", + tiles = {"gloopblocks_evil_block.png"}, + light_source = 5, + is_ground_content = true, + groups = {cracky=2}, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_craft({ + output = "gloopblocks:evil_block", + recipe = { + {"gloopblocks:evil_stick", "gloopblocks:evil_stick"}, + {"gloopblocks:evil_stick", "gloopblocks:evil_stick"}, + } +}) + +minetest.register_craft({ + output = "gloopblocks:evil_stick 4", + recipe = { + {"gloopblocks:evil_block"} + } +}) + +minetest.register_node("gloopblocks:rainbow_block", { + description = "Rainbow Block", + tiles = {"gloopblocks_rainbow_block.png"}, + is_ground_content = true, + groups = {cracky=3}, + sounds = default.node_sound_defaults(), +}) + +minetest.register_craft({ + output = "default:nyancat", + recipe = { + {"gloopblocks:rainbow_block", "gloopblocks:rainbow_block", "gloopblocks:rainbow_block"}, + {"gloopblocks:rainbow_block", "gloopblocks:rainbow_block", "gloopblocks:rainbow_block"}, + {"gloopblocks:rainbow_block", "gloopblocks:rainbow_block", "gloopblocks:rainbow_block"}, + } +}) + +minetest.register_craft({ + output = "default:nyancat_rainbow", + recipe = { + {"gloopblocks:rainbow_block", "gloopblocks:rainbow_block", "gloopblocks:rainbow_block"}, + } +}) + +minetest.register_tool("gloopblocks:pick_cement", { + description = "Cement Pickaxe", + inventory_image = "gloopblocks_cement_pick.png", + tool_capabilities = { + max_drop_level=1, + groupcaps={ + cracky={times={[1]=3.50, [2]=1.40, [3]=0.90}, uses=25, maxlevel=2} + } + }, +}) + +minetest.register_tool("gloopblocks:shovel_cement", { + description = "Cement Shovel", + inventory_image = "gloopblocks_cement_shovel.png", + tool_capabilities = { + max_drop_level=1, + groupcaps={ + crumbly={times={[1]=1.50, [2]=0.60, [3]=0.45}, uses=25, maxlevel=2} + } + }, +}) + +minetest.register_tool("gloopblocks:axe_cement", { + description = "Cement Axe", + inventory_image = "gloopblocks_cement_axe.png", + tool_capabilities = { + max_drop_level=1, + groupcaps={ + choppy={times={[1]=3.00, [2]=1.30, [3]=0.80}, uses=25, maxlevel=2}, + fleshy={times={[2]=1.20, [3]=0.65}, uses=30, maxlevel=1} + } + }, +}) + +minetest.register_tool("gloopblocks:sword_cement", { + description = "Cement Sword", + inventory_image = "gloopblocks_cement_sword.png", + tool_capabilities = { + full_punch_interval = 1.0, + max_drop_level=1, + groupcaps={ + fleshy={times={[1]=1.60, [2]=0.80, [3]=0.40}, uses=15, maxlevel=2}, + snappy={times={[2]=0.75, [3]=0.35}, uses=30, maxlevel=1}, + choppy={times={[3]=0.80}, uses=30, maxlevel=0} + } + } +}) + +minetest.register_tool("gloopblocks:pick_evil", { + description = "Evil Pickaxe", + inventory_image = "gloopblocks_evil_pick.png", + tool_capabilities = { + max_drop_level=3, + groupcaps={ + cracky={times={[1]=0.10, [2]=0.10, [3]=0.10}, uses=10, maxlevel=3} + } + }, +}) + +minetest.register_tool("gloopblocks:shovel_evil", { + description = "Evil Shovel", + inventory_image = "gloopblocks_evil_shovel.png", + tool_capabilities = { + max_drop_level=3, + groupcaps={ + crumbly={times={[1]=0.05, [2]=0.05, [3]=0.05}, uses=10, maxlevel=3} + } + }, +}) + +minetest.register_tool("gloopblocks:axe_evil", { + description = "Evil Axe", + inventory_image = "gloopblocks_evil_axe.png", + tool_capabilities = { + max_drop_level=3, + groupcaps={ + choppy={times={[1]=0.15, [2]=0.15, [3]=0.15}, uses=10, maxlevel=3}, + fleshy={times={[1]=0.15, [2]=0.15, [3]=0.15}, uses=10, maxlevel=3} + } + }, +}) + +minetest.register_tool("gloopblocks:sword_evil", { + description = "Evil Sword", + inventory_image = "gloopblocks_evil_sword.png", + tool_capabilities = { + full_punch_interval = 1.0, + max_drop_level=3, + groupcaps={ + fleshy={times={[1]=0.20, [2]=0.20, [3]=0.20}, uses=10, maxlevel=3}, + snappy={times={[1]=0.20, [2]=0.20, [3]=0.20}, uses=10, maxlevel=3}, + choppy={times={[1]=0.20, [2]=0.20, [3]=0.20}, uses=10, maxlevel=3} + } + } +}) + +minetest.register_craft({ + output = "gloopblocks:pick_cement", + recipe = { + {"gloopblocks:cement", "gloopblocks:cement", "gloopblocks:cement"}, + {"", "default:stick", ""}, + {"", "default:stick", ""}, + } +}) + +minetest.register_craft({ + output = "gloopblocks:axe_cement", + recipe = { + {"gloopblocks:cement", "gloopblocks:cement"}, + {"gloopblocks:cement", "default:stick"}, + {"", "default:stick"}, + } +}) + +minetest.register_craft({ + output = "gloopblocks:axe_cement", + recipe = { + {"gloopblocks:cement", "gloopblocks:cement"}, + {"default:stick", "gloopblocks:cement"}, + {"default:stick", ""}, + } +}) + +minetest.register_craft({ + output = "gloopblocks:shovel_cement", + recipe = { + {"gloopblocks:cement"}, + {"default:stick"}, + {"default:stick"}, + } +}) + +minetest.register_craft({ + output = "gloopblocks:sword_cement", + recipe = { + {"gloopblocks:cement"}, + {"gloopblocks:cement"}, + {"default:stick"}, + } +}) + +minetest.register_craft({ + output = "gloopblocks:pick_evil", + recipe = { + {"gloopblocks:evil_block", "gloopblocks:evil_block", "gloopblocks:evil_block"}, + {"", "gloopblocks:evil_stick", ""}, + {"", "gloopblocks:evil_stick", ""}, + } +}) + +minetest.register_craft({ + output = "gloopblocks:axe_evil", + recipe = { + {"gloopblocks:evil_block", "gloopblocks:evil_block"}, + {"gloopblocks:evil_block", "gloopblocks:evil_stick"}, + {"", "gloopblocks:evil_stick"}, + } +}) + +minetest.register_craft({ + output = "gloopblocks:axe_evil", + recipe = { + {"gloopblocks:evil_block", "gloopblocks:evil_block"}, + {"gloopblocks:evil_stick", "gloopblocks:evil_block"}, + {"gloopblocks:evil_stick", ""}, + } +}) + +minetest.register_craft({ + output = "gloopblocks:shovel_evil", + recipe = { + {"gloopblocks:evil_block"}, + {"gloopblocks:evil_stick"}, + {"gloopblocks:evil_stick"}, + } +}) + +minetest.register_craft({ + output = "gloopblocks:sword_evil", + recipe = { + {"gloopblocks:evil_block"}, + {"gloopblocks:evil_block"}, + {"gloopblocks:evil_stick"}, + } +}) + +minetest.register_craft({ + output = "default:wood", + recipe = { + {"default:stick", "default:stick"}, + {"default:stick", "default:stick"}, + } +}) + +minetest.register_abm({ + nodenames = {"default:cobble"}, + neighbors = {"default:water_source", "default:water_flowing"}, + interval = 30, + chance = 20, + action = function(pos) + minetest.env:add_node (pos, {name = "default:mossycobble"}) + end, +}) + +gloopblocks = {} + +function gloopblocks.register_stair(subname, recipeitem, groups, images, description, drop) + minetest.register_node("gloopblocks:stair_" .. subname, { + description = description, + drawtype = "nodebox", + tiles = images, + paramtype = "light", + paramtype2 = "facedir", + is_ground_content = true, + groups = groups, + node_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, 0, 0.5}, + {-0.5, 0, 0, 0.5, 0.5, 0.5}, + }, + }, + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, 0, 0.5}, + {-0.5, 0, 0, 0.5, 0.5, 0.5}, + }, + }, + sounds = default.node_sound_stone_defaults(), + }) + + minetest.register_node(":stairs:stair_" .. subname, { + description = description, + drawtype = "nodebox", + tiles = images, + paramtype = "light", + paramtype2 = "facedir", + is_ground_content = true, + groups = groups, + node_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, 0, 0.5}, + {-0.5, 0, 0, 0.5, 0.5, 0.5}, + }, + }, + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, 0, 0.5}, + {-0.5, 0, 0, 0.5, 0.5, 0.5}, + }, + }, + sounds = default.node_sound_stone_defaults(), + }) + + minetest.register_node("gloopblocks:stair_" .. subname .. "_inverted", { + description = description, + drawtype = "nodebox", + tiles = images, + drop = "gloopblocks:stair_" .. drop .. "_inverted", + paramtype = "light", + paramtype2 = "facedir", + is_ground_content = true, + groups = groups, + node_box = { + type = "fixed", + fixed = { + {-0.5, 0, -0.5, 0.5, 0.5, 0.5}, + {-0.5, -0.5, 0, 0.5, 0, 0.5}, + }, + }, + selection_box = { + type = "fixed", + fixed = { + {-0.5, 0, -0.5, 0.5, 0.5, 0.5}, + {-0.5, -0.5, 0, 0.5, 0, 0.5}, + }, + }, + sounds = default.node_sound_stone_defaults(), + }) + + minetest.register_node("gloopblocks:stair_" .. subname .. "_wall", { + description = description, + drawtype = "nodebox", + tiles = images, + drop = "gloopblocks:stair_" .. drop .. "_wall", + paramtype = "light", + paramtype2 = "facedir", + is_ground_content = true, + groups = groups, + node_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, 0, 0.5, 0.5, 0.5}, + {-0.5, -0.5, -0.5, 0, 0.5, 0}, + }, + }, + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, 0, 0.5, 0.5, 0.5}, + {-0.5, -0.5, -0.5, 0, 0.5, 0}, + }, + }, + sounds = default.node_sound_stone_defaults(), + }) + + minetest.register_node("gloopblocks:stair_" .. subname .. "_wall_half", { + description = description, + drawtype = "nodebox", + tiles = images, + drop = "gloopblocks:stair_" .. drop .. "_wall_half", + paramtype = "light", + paramtype2 = "facedir", + is_ground_content = true, + groups = groups, + node_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, 0, 0.5, 0, 0.5}, + {-0.5, -0.5, -0.5, 0, 0, 0}, + }, + }, + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, 0, 0.5, 0, 0.5}, + {-0.5, -0.5, -0.5, 0, 0, 0}, + }, + }, + sounds = default.node_sound_stone_defaults(), + }) + + minetest.register_node("gloopblocks:stair_" .. subname .. "_wall_half_inverted", { + description = description, + drawtype = "nodebox", + tiles = images, + drop = "gloopblocks:stair_" .. drop .. "_wall_half_inverted", + paramtype = "light", + paramtype2 = "facedir", + is_ground_content = true, + groups = groups, + node_box = { + type = "fixed", + fixed = { + {-0.5, 0, 0, 0.5, 0.5, 0.5}, + {-0.5, 0, -0.5, 0, 0.5, 0}, + }, + }, + selection_box = { + type = "fixed", + fixed = { + {-0.5, 0, 0, 0.5, 0.5, 0.5}, + {-0.5, 0, -0.5, 0, 0.5, 0}, + }, + }, + sounds = default.node_sound_stone_defaults(), + }) + + minetest.register_node("gloopblocks:stair_" .. subname .. "_inner", { + description = description, + drawtype = "nodebox", + tiles = images, + drop = "gloopblocks:stair_" .. drop .. "_inner", + paramtype = "light", + paramtype2 = "facedir", + is_ground_content = true, + groups = groups, + node_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, 0, 0.5}, + {-0.5, 0, 0, 0.5, 0.5, 0.5}, + {-0.5, 0, -0.5, 0, 0.5, 0}, + }, + }, + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, 0, 0.5}, + {-0.5, 0, 0, 0.5, 0.5, 0.5}, + {-0.5, 0, -0.5, 0, 0.5, 0}, + }, + }, + sounds = default.node_sound_stone_defaults(), + }) + + minetest.register_node("gloopblocks:stair_" .. subname .. "_outer", { + description = description, + drawtype = "nodebox", + tiles = images, + drop = "gloopblocks:stair_" .. drop .. "_outer", + paramtype = "light", + paramtype2 = "facedir", + is_ground_content = true, + groups = groups, + node_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, 0, 0.5}, + {-0.5, 0, 0, 0, 0.5, 0.5}, + }, + }, + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, 0, 0.5}, + {-0.5, 0, 0, 0, 0.5, 0.5}, + }, + }, + sounds = default.node_sound_stone_defaults(), + }) + + minetest.register_craft({ + output = "gloopblocks:stair_" .. subname .. " 8", + recipe = { + {recipeitem, "", ""}, + {recipeitem, recipeitem, ""}, + {recipeitem, recipeitem, recipeitem}, + }, + }) + + minetest.register_craft({ + output = "gloopblocks:stair_" .. subname .. " 8", + recipe = { + {"", "", recipeitem}, + {"", recipeitem, recipeitem}, + {recipeitem, recipeitem, recipeitem}, + }, + }) + + minetest.register_craft({ + output = "gloopblocks:stair_" .. subname .. "_inverted" .. " 8", + recipe = { + {recipeitem, recipeitem, recipeitem}, + {recipeitem, recipeitem, ""}, + {recipeitem, "", ""}, + }, + }) + + minetest.register_craft({ + output = "gloopblocks:stair_" .. subname .. "_inverted" .. " 8", + recipe = { + {recipeitem, recipeitem, recipeitem}, + {"", recipeitem, recipeitem}, + {"", "", recipeitem}, + }, + }) + + minetest.register_craft({ + output = "gloopblocks:stair_" .. subname .. "_inverted" .. " 1", + recipe = { + {"gloopblocks:stair_" .. subname}, + }, + }) + + minetest.register_craft({ + output = "gloopblocks:stair_" .. subname .. "_inner" .. " 1", + recipe = { + {"gloopblocks:micro_" .. subname .. "_bottom", "gloopblocks:stair_" .. subname}, + }, + }) + + minetest.register_craft({ + output = "gloopblocks:stair_" .. subname .. "_outer 1", + recipe = { + {"gloopblocks:micro_" .. subname .. "_bottom"}, + {"gloopblocks:slab_" .. subname}, + }, + }) + + minetest.register_craft({ + output = "gloopblocks:stair_" .. subname .. "_wall_half" .. " 1", + recipe = { + {"gloopblocks:stair_" .. subname .. "_wall"}, + }, + }) + + minetest.register_craft({ + output = "gloopblocks:stair_" .. subname .. "_wall_half_inverted" .. " 1", + recipe = { + {"gloopblocks:stair_" .. subname .. "_wall_half"}, + }, + }) + + minetest.register_craft({ + output = "gloopblocks:stair_" .. subname .. "_wall_half" .. " 1", + recipe = { + {"gloopblocks:stair_" .. subname .. "_wall_half_inverted"}, + }, + }) + + minetest.register_craft({ + output = "gloopblocks:stair_" .. subname .. "_inverted" .. " 1", + recipe = { + {"gloopblocks:stair_" .. subname}, + }, + }) + + minetest.register_craft({ + output = "gloopblocks:stair_" .. subname .. " 1", + recipe = { + {"gloopblocks:stair_" .. subname .. "_inverted"}, + }, + }) + + minetest.register_craft({ + output = "gloopblocks:stair_" .. subname .. "_wall" .. " 7", + recipe = { + {recipeitem, recipeitem, recipeitem}, + {"", "", recipeitem}, + {"", "", recipeitem}, + }, + }) + + minetest.register_craft({ + output = "gloopblocks:stair_" .. subname .. "_wall" .. " 7", + recipe = { + {recipeitem, recipeitem, recipeitem}, + {recipeitem, "" , ""}, + {recipeitem, "", ""}, + }, + }) +end + +-- Node will be called gloopblocks:slab_ +function gloopblocks.register_slab(subname, recipeitem, groups, images, description, drop) + minetest.register_node("gloopblocks:slab_" .. subname, { + description = description, + drawtype = "nodebox", + tiles = images, + drop = "gloopblocks:slab_" .. drop, + paramtype = "light", + is_ground_content = true, + groups = groups, + node_box = { + type = "fixed", + fixed = {-0.5, -0.5, -0.5, 0.5, 0, 0.5}, + }, + selection_box = { + type = "fixed", + fixed = {-0.5, -0.5, -0.5, 0.5, 0, 0.5}, + }, + sounds = default.node_sound_stone_defaults(), + }) + + minetest.register_node("gloopblocks:slab_" .. subname .. "_inverted", { + description = description, + drawtype = "nodebox", + tiles = images, + drop = "gloopblocks:slab_" .. drop .. "_inverted", + paramtype = "light", + is_ground_content = true, + groups = groups, + node_box = { + type = "fixed", + fixed = {-0.5, 0, -0.5, 0.5, 0.5, 0.5}, + }, + selection_box = { + type = "fixed", + fixed = {-0.5, 0, -0.5, 0.5, 0.5, 0.5}, + }, + sounds = default.node_sound_stone_defaults(), + }) + + minetest.register_node("gloopblocks:slab_" .. subname .. "_wall", { + description = description, + drawtype = "nodebox", + tiles = images, + drop = "gloopblocks:slab_" .. drop .. "_wall", + paramtype = "light", + paramtype2 = "facedir", + is_ground_content = true, + groups = groups, + node_box = { + type = "fixed", + fixed = {-0.5, -0.5, 0, 0.5, 0.5, 0.5}, + }, + selection_box = { + type = "fixed", + fixed = {-0.5, -0.5, 0, 0.5, 0.5, 0.5}, + }, + sounds = default.node_sound_stone_defaults(), + }) + + minetest.register_craft({ + output = "gloopblocks:slab_" .. subname .. " 6", + recipe = { + {recipeitem, recipeitem, recipeitem}, + }, + }) + + minetest.register_craft({ + output = "gloopblocks:slab_" .. subname .. "_wall" .. " 6", + recipe = { + {recipeitem}, + {recipeitem}, + {recipeitem}, + }, + }) + + minetest.register_craft({ + output = "gloopblocks:slab_" .. subname .. "_inverted" .. " 1", + recipe = { + {"gloopblocks:slab_" .. subname}, + }, + }) + + minetest.register_craft({ + output = "gloopblocks:slab_" .. subname .. " 1", + recipe = { + {"gloopblocks:slab_" .. subname .. "_inverted"}, + }, + }) + + minetest.register_craft({ + output = recipeitem .. " 1", + recipe = { + {"gloopblocks:slab_" .. subname}, + {"gloopblocks:slab_" .. subname}, + }, + }) + + minetest.register_craft({ + output = recipeitem .. " 1", + recipe = { + {"gloopblocks:slab_" .. subname .. "_inverted"}, + {"gloopblocks:slab_" .. subname .. "_inverted"}, + }, + }) + + minetest.register_craft({ + output = recipeitem .. " 1", + recipe = { + {"gloopblocks:slab_" .. subname .. "_wall", "gloopblocks:slab_" .. subname .. "_wall"}, + }, + }) +end + +-- Node will be called gloopblocks:panel_ +function gloopblocks.register_panel(subname, recipeitem, groups, images, description, drop) + minetest.register_node("gloopblocks:panel_" .. subname .. "_bottom", { + description = description, + drawtype = "nodebox", + tiles = images, + drop = "gloopblocks:panel_" .. drop .. "_bottom", + paramtype = "light", + paramtype2 = "facedir", + is_ground_content = true, + groups = groups, + node_box = { + type = "fixed", + fixed = {-0.5, -0.5, 0, 0.5, 0, 0.5}, + }, + selection_box = { + type = "fixed", + fixed = {-0.5, -0.5, 0, 0.5, 0, 0.5}, + }, + sounds = default.node_sound_stone_defaults(), + }) + + minetest.register_node("gloopblocks:panel_" .. subname .. "_top", { + description = description, + drawtype = "nodebox", + tiles = images, + drop = "gloopblocks:panel_" .. drop .. "_top", + paramtype = "light", + paramtype2 = "facedir", + is_ground_content = true, + groups = groups, + node_box = { + type = "fixed", + fixed = {-0.5, 0, 0, 0.5, 0.5, 0.5}, + }, + selection_box = { + type = "fixed", + fixed = {-0.5, 0, 0, 0.5, 0.5, 0.5}, + }, + sounds = default.node_sound_stone_defaults(), + }) + + minetest.register_node("gloopblocks:panel_" .. subname .. "_vertical", { + description = description, + drawtype = "nodebox", + tiles = images, + drop = "gloopblocks:panel_" .. drop .. "_vertical", + paramtype = "light", + paramtype2 = "facedir", + is_ground_content = true, + groups = groups, + node_box = { + type = "fixed", + fixed = {-0.5, -0.5, 0, 0, 0.5, 0.5}, + }, + selection_box = { + type = "fixed", + fixed = {-0.5, -0.5, 0, 0, 0.5, 0.5}, + }, + sounds = default.node_sound_stone_defaults(), + }) + + minetest.register_craft({ + output = "gloopblocks:panel_" .. subname .. "_bottom" .. " 8", + recipe = { + {recipeitem, recipeitem}, + }, + }) + + minetest.register_craft({ + output = "gloopblocks:panel_" .. subname .. "_vertical" .. " 8", + recipe = { + {recipeitem}, + {recipeitem}, + }, + }) + + minetest.register_craft({ + output = "gloopblocks:panel_" .. subname .. "_top" .. " 1", + recipe = { + {"gloopblocks:panel_" .. subname .. "_bottom"}, + }, + }) + + minetest.register_craft({ + output = "gloopblocks:panel_" .. subname .. "_bottom" .. " 1", + recipe = { + {"gloopblocks:panel_" .. subname .. "_top"}, + }, + }) + + minetest.register_craft({ + output = "gloopblocks:panel_" .. subname .. "_vertical" .. " 2", + recipe = { + {"gloopblocks:panel_" .. subname .. "_bottom"}, + {"gloopblocks:panel_" .. subname .. "_bottom"}, + }, + }) + + minetest.register_craft({ + output = "gloopblocks:panel_" .. subname .. "_bottom" .. " 2", + recipe = { + {"gloopblocks:panel_" .. subname .. "_vertical", "gloopblocks:panel_" .. subname .. "_vertical"}, + }, + }) +end + +-- Node will be called gloopblocks:micro_ +function gloopblocks.register_micro(subname, recipeitem, groups, images, description, drop) + minetest.register_node("gloopblocks:micro_" .. subname .. "_bottom", { + description = description, + drawtype = "nodebox", + tiles = images, + drop = "gloopblocks:micro_" .. drop .. "_bottom", + paramtype = "light", + paramtype2 = "facedir", + is_ground_content = true, + groups = groups, + node_box = { + type = "fixed", + fixed = {-0.5, -0.5, 0, 0, 0, 0.5}, + }, + selection_box = { + type = "fixed", + fixed = {-0.5, -0.5, 0, 0, 0, 0.5}, + }, + sounds = default.node_sound_stone_defaults(), + }) + + minetest.register_node("gloopblocks:micro_" .. subname .. "_top", { + description = description, + drawtype = "nodebox", + tiles = images, + drop = "gloopblocks:micro_" .. drop .. "_top", + paramtype = "light", + paramtype2 = "facedir", + is_ground_content = true, + groups = groups, + node_box = { + type = "fixed", + fixed = {-0.5, 0, 0, 0, 0.5, 0.5}, + }, + selection_box = { + type = "fixed", + fixed = {-0.5, 0, 0, 0, 0.5, 0.5}, + }, + sounds = default.node_sound_stone_defaults(), + }) + + minetest.register_craft({ + output = "gloopblocks:micro_" .. subname .. "_bottom 8", + recipe = { + {"default:stick"}, + {recipeitem}, + }, + }) + + minetest.register_craft({ + output = "gloopblocks:micro_" .. subname .. "_top 1", + recipe = { + {"gloopblocks:micro_" .. subname .. "_bottom"}, + }, + }) + + minetest.register_craft({ + output = "gloopblocks:micro_" .. subname .. "_bottom 1", + recipe = { + {"gloopblocks:micro_" .. subname .. "_top"}, + }, + }) +end + +-- Nodes will be called gloopblocks:{stair,slab}_ +function gloopblocks.register_stair_and_slab_and_panel_and_micro(subname, recipeitem, groups, images, desc_stair, desc_slab, desc_panel, desc_micro, drop) + gloopblocks.register_stair(subname, recipeitem, groups, images, desc_stair, drop) + gloopblocks.register_slab(subname, recipeitem, groups, images, desc_slab, drop) + gloopblocks.register_panel(subname, recipeitem, groups, images, desc_panel, drop) + gloopblocks.register_micro(subname, recipeitem, groups, images, desc_micro, drop) +end + +gloopblocks.register_stair_and_slab_and_panel_and_micro("cement", "gloopblocks:cement", {cracky=2}, {"gloopblocks_cement.png"}, "Cement Stairs", "Cement Slab", "Cement Panel", "Cement Microblock", "cement") +gloopblocks.register_stair_and_slab_and_panel_and_micro("evil", "gloopblocks:evil_block", {cracky=3}, {"gloopblocks_evil_block.png"}, "Evil Stairs", "Evil Slab", "Evil Panel", "Evil Microblock", "evil") + +minetest.register_alias("default:obsidian","gloopblocks:obsidian") + +minetest.register_node("gloopblocks:basalt", { + description = "Basalt", + tiles = {"gloopblocks_basalt.png"}, + groups = {cracky=2}, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node("gloopblocks:pumice", { + description = "Pumice", + tiles = {"gloopblocks_pumice.png"}, + groups = {cracky=3}, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_abm({ + nodenames = {"default:lava_flowing"}, + neighbors = {"default:water_source"}, + interval = 1.0, + chance = 1, + action = function(pos) + minetest.env:add_node(pos,{name="gloopblocks:basalt"}) + end, +}) + +minetest.register_abm({ + nodenames = {"default:lava_flowing"}, + neighbors = {"default:water_flowing"}, + interval = 1.0, + chance = 1, + action = function(pos) + minetest.env:add_node(pos,{name="gloopblocks:pumice"}) + end, +}) + +minetest.register_node("gloopblocks:pavement", { + description = "Pavement", + tiles = {"gloopblocks_pavement.png"}, + groups = {cracky=3, oddly_breakable_by_hand=3}, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_craft({ + output = "gloopblocks:pavement 5", + recipe = { + {"gloopblocks:basalt", "gloopblocks:wet_cement","gloopblocks:basalt"}, + {"gloopblocks:wet_cement","gloopblocks:basalt", "gloopblocks:wet_cement"}, + {"gloopblocks:basalt", "gloopblocks:wet_cement","gloopblocks:basalt"}, + } +}) + +minetest.register_craft({ + output = "gloopblocks:pavement 5", + recipe = { + {"gloopblocks:wet_cement","gloopblocks:basalt", "gloopblocks:wet_cement"}, + {"gloopblocks:basalt", "gloopblocks:wet_cement","gloopblocks:basalt"}, + {"gloopblocks:wet_cement","gloopblocks:basalt", "gloopblocks:wet_cement"}, + } +}) + + diff --git a/textures/Thumbs.db b/textures/Thumbs.db new file mode 100644 index 0000000000000000000000000000000000000000..dc13a511eef47836309e2fbf700ad5a1156446ef GIT binary patch literal 36352 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 N@@d>YQlGD-{{ck4;(`DG literal 0 HcmV?d00001 diff --git a/textures/gloopblocks_basalt.png b/textures/gloopblocks_basalt.png new file mode 100644 index 0000000000000000000000000000000000000000..bf44e7f7788e3d43304b0899d97d2ddf911bb68b GIT binary patch literal 575 zcmV-F0>J%=P)vGya42AbuS|Du#cx}M=e!~XJYkR?^WqM{Ad4srV?A zuHQ)zdTIJr(ma#0u7uneZ_~v7^UGbFY$YplaYa>XQzPLjlDoxRCX=bf6fKv5Y__ok zfwu+#^0E-`L(37n;)+f~UKMh=yjn6^ucX^|60Rf3w2(aPybpw-UWc^1P8=v8Gie=f zWDzW-8Cs=RNLf`9D|i@r%Q0v-^s?HlO%^?lW)8HO8tWx7elW>$8YfpTB4sqanHhZm z4ZsSoCJ~dwpt^0|a@tIB(NyyD<;6hABi~g`Z3Z>E1x!TibUL%m5CaNj8a_-uO4GG+ z{`zcrGm%6XDP`5pC0fUI8Fh`(O|hA$HNXGRPG-i%*@ebGcjjnTEIbq zS4p+S>nnI<4-8KRmBaM?@t`sSajAMh6FR+LS}|)JpK+lkGl^4mwKb2D&BREH(aRs` za@Ys}_TI}(zWw#h-J=46TO znM(@eBr#dMk=du4_ZXQBK_Wo*l(`__00I-V!fb5h9^moGkDoZd{{S?(tJzW44p#sG N002ovPDHLkV1jbV3(Wuk literal 0 HcmV?d00001 diff --git a/textures/gloopblocks_cement.png b/textures/gloopblocks_cement.png new file mode 100644 index 0000000000000000000000000000000000000000..02aeb8faddaff85eea42c4380fab7dce789219ef GIT binary patch literal 441 zcmV;q0Y?6bP)B`lWX-j;s?hn1PFq1`5rHI9**_vajwH@6YHtPdB3c?)mz=K z-|KeyT94b$I^GU-zMmrZcfQs8d0WfRbgg2%?&CYOLxAgXT@Ra&_}&_^K&;^7vJ0^M zV&iaX?7;W72fQ3s5mQ%0nIeD`z=Q$>q+^pvD%r@aB}q=n;Y?@mzWfc`A0yz)zM(B=0Dv+eX z?uyN`k48)hXjPF&;*YyIr_k=;C@WJ>aFL1OaI2VxPW_z#P~r>ctmGjN9HenbR7peU zt|}iL43Z)lINt&lJaCSH3dU(C3uLQs#T&>?j!RWQAYeYoL7Zv@vhW}sj-<9WK49bI zwibr|baSLhRFX{#7~^I3*Tz7jL}IO_p|_I1KmoFFAyR>4U+tusLw{5`iI_sl3UD_M jP-S1$b8kI#A9D2nEa6wEvJmrS00000NkvXXu0mjf-n+*Y literal 0 HcmV?d00001 diff --git a/textures/gloopblocks_cement_axe.png b/textures/gloopblocks_cement_axe.png new file mode 100644 index 0000000000000000000000000000000000000000..2da3c4a05132e3a96b0bbb6cb94c85a21149ecfd GIT binary patch literal 117 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Hl8kyAr*6y6C}PQJU=)0|H*56 zQch0#ui!IHaqHHt{}b7GLKB`|O>9Q^H1>4TZSO5FBhAQ4QnBl0v?676BkowCu39rIG?#EOz*({|~Rxe`_ zzrku<{!Zl{!;CZudku|_3g-)^hZzFd9$exnW{qS1kg4{9E6L<=45JZ?>x3&BOp;EU m&PFgsb}~y&$Tb#WUFVdQ&MBb@0K*P5 Ar~m)} literal 0 HcmV?d00001 diff --git a/textures/gloopblocks_evil_axe.png b/textures/gloopblocks_evil_axe.png new file mode 100644 index 0000000000000000000000000000000000000000..8ef2240c21885111673056084d2171261a12c0b8 GIT binary patch literal 160 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`>7Fi*Ar-fh6C}PQES+|(zRP5N zLc$OGc*n-(l(U@1jbncy-TXqxmQGR zdoma8(7Al&kIR~~5{%vf#=FkGXq%8@e6vo?e9Oxm~om(C4Z?P&`JhRS3j3^ HP6q zYcoPo6oz->t{Mg-LQ!dq@m-8cg>LRbQqvSt{;6NZyYlQAAD(meK6_o?y^h;(?#IEB z2#7iMI}m4|5R+m>ta-nE7FE#}P4O(g#HTppTTWC&mv2cC{PT4`uc9Q*S@$q9M&d=> ziH^u)GZ1MDu&75(#3;RoL5FPDWIq-ys+|=#V%_#Z3@!4u2xHVH%ZSPX5FyaJm@?at z9=BvP5u*g!5@kyFA}{d1rE0TxaYV9A7pVMwa4N> z1GdaPztcjWb(4U3uFLlwj?z-mrjW#}PXn|+<1$^J^` rr)!m8*D;A{);6y5BE+?M9EpDc(-b<^@3)5&00000NkvXXu0mjfWTVR{ literal 0 HcmV?d00001 diff --git a/textures/gloopblocks_evil_pick.png b/textures/gloopblocks_evil_pick.png new file mode 100644 index 0000000000000000000000000000000000000000..80f8ec397f4c8cac097bc002d41d08a91f1da28e GIT binary patch literal 159 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`X`U{QAr-fh6BdYBtX%wAUUG77 z05kL9`c)Ebc>)0(Z6}R6mi#P>ldEh~xaqfxkpdE~u7{;13CTvz`nZ!x<$$BtuLF{|o~Q}2dGRPnGcY*(j!Nx3Ag~Q+BZH@_pUXO@ GgeCwMh%w0k literal 0 HcmV?d00001 diff --git a/textures/gloopblocks_evil_shovel.png b/textures/gloopblocks_evil_shovel.png new file mode 100644 index 0000000000000000000000000000000000000000..4431bb00203cda8ae00b00f725da882c72cce056 GIT binary patch literal 138 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`fu1goAr-fh6BdYfBqjXdKb(>| zue0ssr85qFj0z2TzkM_{jba$CxNJ(B!59>v9=v3xiU32e-X>FH2Lt6=)5CvwmROv) l<}+dSRagI?sjW?%A<3$$ z|8w>AQ51&?3;)m7)g|5)DQar}(=|2!2Ld(1#QX#Vh&R9l=x;wBp8wIZvj4*+CI1&1 z8~=}$mnS_O?12Uu1FQKlUCJU?1;#QRUe|V3}mdg`O4j*O_+2G_5r^u`<|GD&>>Gj7XSZ1$ Q1=`Hu>FVdQ&MBb@0F}u)BLDyZ literal 0 HcmV?d00001 diff --git a/textures/gloopblocks_pavement.png b/textures/gloopblocks_pavement.png new file mode 100644 index 0000000000000000000000000000000000000000..b734c46905862e094d968f90c6e6c0fc5faafbac GIT binary patch literal 325 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4(FKVC3<1aSW-L(>iG*SBnFW%je`I zMGXy&48@E@AWD4rfAV8iHl25Ru6ORH7D>I=&#ssLER?Z3zj=G^>)-p_ zb0pd<4mL?1H~df`m#u)$)V+Yt-Fte$NcA=Oc9q&@(d2$`Cc2+#KGjl z@_N^?=+-NVB?=Cqp@{;W3=7&?G_ON^O<6!Zng@J#454@T1 z>6zc^gdNExE^{_28irb&H)c?o#9*!N;PGLyhx(n9ig`>Q8d?-ST|66|Wbn)Umw3Y4 zw?CF`=JE&=T`0^IxvY4b`m~omN9(JTW}dq_Pol5hDjmX{@$BzXu;iS#C)s0Tem-3B T`0smQ@Gy9~`njxgN@xNA25gZ8 literal 0 HcmV?d00001 diff --git a/textures/gloopblocks_pumice.png b/textures/gloopblocks_pumice.png new file mode 100644 index 0000000000000000000000000000000000000000..4ff6077064bb08fd53e77a50901d34a94fdb6a3e GIT binary patch literal 809 zcmV+^1J?YBP)2lL7=`)t1=_0uU4Xi2;lxQKYcnZv-}gnLWQme3S+3=zt#i?fqHpl^w{k(uU}kt` z&ZcDE65~2%k>6oxF@aGLJ9DgY#xgw;It5j-#vB*;Hw}yUfT_wkyQ25IhLXl5wjOg^ zJYe<`yjd;z*F<4h9zZw!<=?1=P+Wqu^~8ut4mo|=%! zyiT@knmu*geI1J}ZGO)p>)7q?DZ?$wD+RUhV*48X3!liYvGfFAZOHvww#!E{cTM9T zP)8<<;Dj@tQ`mcoq(v#cEs6ZJuAkYrUuf$&zFiXgCFUqaA6uv&Ba)~Pz&Uj!n&}>a z*2+ud1$ELf8@dd78iNZ*I44B2<_ypTk8J7_wut6Va|Z8p*^lwe6l0jO5K2lBbhQ3w zUa5R}`j2h*hs@_BVM*cK)5ec@TEQwmu`W+!#+uArWA{sLt38TqL>Pkl{ZHS}`@uk$ z+pI~3eO)pd=oDdleqrFGTwht@M!<9!Gn@J>$~%n_mQz;Gk*{}T|5by z+7D6gZ=dM4N1k^tIBvxFy~is3#B^fwQaEdN8_C1a;n4hpFEkXr z7xMm6Ed13)8+wxYnBD40GV#K^*ihsv)N7M4OaPiPb=DfSO!5-zf!;0PZfFu1#)0)|3!C~_!tMY*2J28Vdj#%YO8>4d@Uo(+; zE!*}p54&e+V<&Chqg|%7&0NY=P*)A=hXCcaI>_OUG;E|{_18K}v|kf>PMwxg_!}a( nA`;;i(pqC6(e@Y2dMW<{PvJjem&A|G00000NkvXXu0mjftlW_> literal 0 HcmV?d00001 diff --git a/textures/gloopblocks_rainbow_block.png b/textures/gloopblocks_rainbow_block.png new file mode 100644 index 0000000000000000000000000000000000000000..8b1bfaeaff526b52cbf3cfd6ec880480f18bb584 GIT binary patch literal 114 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`mYyz-Ar*6y6Mp>vZ-2O+TyVd?Ep{Y6`>;y++Rd?8Y*PBNjK@H5QX_SEQz)=4Il+&kZytx)*4 zy(SfpP}LPMD&-UCY8gL