diff --git a/mesecons_slippyblocks/depends.txt b/mesecons_slippyblocks/depends.txt new file mode 100644 index 0000000..01f085b --- /dev/null +++ b/mesecons_slippyblocks/depends.txt @@ -0,0 +1,2 @@ +mesecons +mesecons_mvps diff --git a/mesecons_slippyblocks/init.lua b/mesecons_slippyblocks/init.lua new file mode 100644 index 0000000..cfdcb39 --- /dev/null +++ b/mesecons_slippyblocks/init.lua @@ -0,0 +1,69 @@ +-- Stippy blocks can be used together with pistons or movestones + + minetest.register_node("mesecons_slippyblocks:slippy_block", { + description = "Slippy block)", + drawtype = "nodebox", + tiles = {"mesecons_slippyblocks.png"}, + buildable_to = true, + groups = {cracky = 3, oddly_breakable_by_hand = 3}, + drop = "mesecons_slippyblocks:slippy_block", + node_box = { + type = "fixed", + fixed = { + {-0.4375, -0.4375, -0.4375, 0.4375, 0.4375, 0.4375}, -- MiddleBox + {0.4375, 0.4375, -0.5, 0.5, 0.5, 0.5}, -- f1 + {0.4375, -0.5, -0.5, 0.5, -0.4375, 0.5}, -- f2 + {-0.5, 0.4375, -0.5, -0.4375, 0.5, 0.5}, -- f3 + {-0.5, -0.5, -0.5, -0.4375, -0.4375, 0.5}, -- f4 + {-0.5, -0.5, -0.5, 0.5, -0.4375, -0.4375}, -- r1 + {-0.5, 0.4375, -0.5, 0.5, 0.5, -0.4375}, -- r2 + {-0.5, 0.4375, 0.4375, 0.5, 0.5, 0.5}, -- r3 + {-0.5, -0.5, 0.4375, 0.5, -0.4375, 0.5}, -- r4 + {0.4375, -0.5, -0.5, 0.5, 0.5, -0.4375}, -- t1 + {-0.5, -0.5, -0.5, -0.4375, 0.5, -0.4375}, -- t2 + {-0.5, -0.5, 0.4375, -0.4375, 0.5, 0.5}, -- t3 + {0.4375, -0.5, 0.4375, 0.5, 0.5, 0.5}, -- t4 + } + }, + on_destruct = function(pos) + minetest.add_item(pos, "mesecons_slippyblocks:slippy_block") + end, + -- Swap the node to a normal one while diging or building node. + on_dig = function(pos, node, player) + minetest.swap_node(pos, {name = "mesecons_slippyblocks:slippy_block_temp" }) + minetest.node_dig(pos, node, player) + end, + on_rightclick = function(pos, node, player, itemstack, pointed_thing) + minetest.swap_node(pos, {name = "mesecons_slippyblocks:slippy_block_temp" }) + minetest.item_place_node(itemstack, placer, pointed_thing, param2) + minetest.swap_node(pos, {name = "mesecons_slippyblocks:slippy_block" }) + end, +}) + + minetest.register_node("mesecons_slippyblocks:slippy_block_temp", { + description = "Slippy block)", + drawtype = "nodebox", + tiles = {"mesecons_slippyblocks.png"}, + groups = {cracky = 3,oddly_breakable_by_hand = 3, not_in_creative_inventory = 1}, + drop = "mesecons_slippyblocks:slippy_block", + node_box = { + type = "fixed", + fixed = { + {-0.4375, -0.4375, -0.4375, 0.4375, 0.4375, 0.4375}, -- MiddleBox + {0.4375, 0.4375, -0.5, 0.5, 0.5, 0.5}, -- f1 + {0.4375, -0.5, -0.5, 0.5, -0.4375, 0.5}, -- f2 + {-0.5, 0.4375, -0.5, -0.4375, 0.5, 0.5}, -- f3 + {-0.5, -0.5, -0.5, -0.4375, -0.4375, 0.5}, -- f4 + {-0.5, -0.5, -0.5, 0.5, -0.4375, -0.4375}, -- r1 + {-0.5, 0.4375, -0.5, 0.5, 0.5, -0.4375}, -- r2 + {-0.5, 0.4375, 0.4375, 0.5, 0.5, 0.5}, -- r3 + {-0.5, -0.5, 0.4375, 0.5, -0.4375, 0.5}, -- r4 + {0.4375, -0.5, -0.5, 0.5, 0.5, -0.4375}, -- t1 + {-0.5, -0.5, -0.5, -0.4375, 0.5, -0.4375}, -- t2 + {-0.5, -0.5, 0.4375, -0.4375, 0.5, 0.5}, -- t3 + {0.4375, -0.5, 0.4375, 0.5, 0.5, 0.5}, -- t4 + } + }, + +}) + diff --git a/mesecons_slippyblocks/textures/mesecons_slippyblocks.png b/mesecons_slippyblocks/textures/mesecons_slippyblocks.png new file mode 100644 index 0000000..8cdba3a Binary files /dev/null and b/mesecons_slippyblocks/textures/mesecons_slippyblocks.png differ diff --git a/mesecons_stickyblocks_flat/depends.txt b/mesecons_stickyblocks_flat/depends.txt new file mode 100644 index 0000000..01f085b --- /dev/null +++ b/mesecons_stickyblocks_flat/depends.txt @@ -0,0 +1,2 @@ +mesecons +mesecons_mvps diff --git a/mesecons_stickyblocks_flat/init.lua b/mesecons_stickyblocks_flat/init.lua new file mode 100644 index 0000000..636ba0a --- /dev/null +++ b/mesecons_stickyblocks_flat/init.lua @@ -0,0 +1,169 @@ +-- Sticky blocks can be used together with pistons or movestones to push / pull +-- structures that are "glued" together using sticky blocks + + -- Flat sticky block not Y +minetest.register_node("mesecons_stickyblocks_flat:sticky_block_xz", { + description = "Flat Sticky Block", + drawtype = "nodebox", + paramtype2 = "facedir", + tiles = { + "mesecons_stickyblocks_flat.png", + "mesecons_stickyblocks_flat.png", + "mesecons_stickyblocks_flat_sticky.png", + "mesecons_stickyblocks_flat_sticky.png", + "mesecons_stickyblocks_flat_sticky.png", + "mesecons_stickyblocks_flat_sticky.png", + }, + is_ground_content = false, + groups = {choppy = 3, oddly_breakable_by_hand = 2, sticky = 1}, + mvps_sticky = function (pos, node) + local connected = {} + for _, r in ipairs(mesecon.rules.xz) do + table.insert(connected, vector.add(pos, r)) + end + return connected + end, + node_box = { + type = "fixed", + fixed = { + {-0.4375, -0.4375, -0.4375, 0.4375, 0.4375, 0.4375}, + {-0.5, -0.5, 0.375, 0.5, 0.5, 0.5}, + {-0.5, -0.5, -0.5, 0.5, 0.5, -0.375}, + {-0.5, -0.5, -0.375, -0.375, 0.5, 0.375}, + {0.375, -0.5, -0.5, 0.5, 0.5, 0.5}, + } + }, + sounds = default.node_sound_wood_defaults(), + on_punch = function(pos, node, player, pointed_thing) + if string.find(player:get_wielded_item():get_name(), "sticky_") then + minetest.swap_node(pos, {name = "mesecons_stickyblocks_flat:sticky_block_xy" }) + end + end, + on_rotate = function(pos, node, player, pointed_thing) + minetest.swap_node(pos, {name = "mesecons_stickyblocks_flat:sticky_block_xy" }) + return true + end, +}) + + -- Flat sticky block not Z +minetest.register_node("mesecons_stickyblocks_flat:sticky_block_xy", { + description = "Flat XY Sticky Block", + drawtype = "nodebox", + paramtype2 = "facedir", + drop = "mesecons_stickyblocks_flat:sticky_block_xz", + tiles = { --+Y, -Y, +X, -X, +Z, -Z + "mesecons_stickyblocks_flat_sticky.png", + "mesecons_stickyblocks_flat_sticky.png", + "mesecons_stickyblocks_flat_sticky.png", + "mesecons_stickyblocks_flat_sticky.png", + "mesecons_stickyblocks_flat.png", + "mesecons_stickyblocks_flat.png", + }, + is_ground_content = false, + groups = {choppy = 3, oddly_breakable_by_hand = 2, sticky = 1, not_in_creative_inventory = 1}, + mvps_sticky = function (pos, node) + local connected = {} + for _, r in ipairs(mesecon.rules.xy) do + table.insert(connected, vector.add(pos, r)) + end + return connected + end, + node_box = { + type = "fixed", + fixed = { + {-0.4375, -0.4375, -0.4375, 0.4375, 0.4375, 0.4375}, + {-0.5, -0.5, -0.5, 0.5, -0.375, 0.5}, + {-0.5, 0.375, -0.5, 0.5, 0.5, 0.5}, + {-0.5, -0.375, -0.5, -0.375, 0.375, 0.5}, + {0.375, -0.5, -0.5, 0.5, 0.5, 0.5}, + } + }, + sounds = default.node_sound_wood_defaults(), + on_punch = function(pos, node, player, pointed_thing) + if string.find(player:get_wielded_item():get_name(), "sticky_") then + minetest.swap_node(pos, {name = "mesecons_stickyblocks_flat:sticky_block_yz" }) + end + end, + on_rotate = function(pos, node, player, pointed_thing) + minetest.swap_node(pos, {name = "mesecons_stickyblocks_flat:sticky_block_yz" }) + return true + end, +}) + + -- Flat sticky block not X +minetest.register_node("mesecons_stickyblocks_flat:sticky_block_yz", { + description = "Flat YZ Sticky Block", + drawtype = "nodebox", + paramtype2 = "facedir", + drop = "mesecons_stickyblocks_flat:sticky_block_xz", + tiles = { + "mesecons_stickyblocks_flat_sticky.png", + "mesecons_stickyblocks_flat_sticky.png", + "mesecons_stickyblocks_flat.png", + "mesecons_stickyblocks_flat.png", + "mesecons_stickyblocks_flat_sticky.png", + "mesecons_stickyblocks_flat_sticky.png", + }, + is_ground_content = false, + groups = {choppy = 3, oddly_breakable_by_hand = 2, sticky = 1, not_in_creative_inventory = 1}, + mvps_sticky = function (pos, node) + local connected = {} + for _, r in ipairs(mesecon.rules.yz) do + table.insert(connected, vector.add(pos, r)) + end + return connected + end, + node_box = { + type = "fixed", + fixed = { + {-0.4375, -0.4375, -0.4375, 0.4375, 0.4375, 0.4375}, + {-0.5, -0.5, -0.5, 0.5, -0.375, 0.5}, + {-0.5, 0.375, -0.5, 0.5, 0.5, 0.5}, + {-0.5, -0.375, 0.375, 0.5, 0.375, 0.5}, + {-0.5, -0.5, -0.5, 0.5, 0.5, -0.375}, + } + }, + sounds = default.node_sound_wood_defaults(), + on_punch = function(pos, node, player, pointed_thing) + local wilded_item_nane = player:get_wielded_item():get_name() + if string.find(player:get_wielded_item():get_name(), "sticky_") then + minetest.swap_node(pos, {name = "mesecons_stickyblocks_flat:sticky_block_xz" }) + end + end, + on_rotate = function(pos, node, player, pointed_thing) + minetest.swap_node(pos, {name = "mesecons_stickyblocks_flat:sticky_block_xz" }) + return true + end, +}) + + + +mesecon.rules.xz = { + {x = 1, y = 0, z = 0}, + {x = -1, y = 0, z = 0}, + {x = 0, y = 0, z = 1}, + {x = 0, y = 0, z = -1}, +} + +mesecon.rules.xy = { + {x = 1, y = 0, z = 0}, + {x = -1, y = 0, z = 0}, + {x = 0, y = 1, z = 0}, + {x = 0, y = -1, z = 0}, +} + +mesecon.rules.yz = { + {x = 0, y = 1, z = 0}, + {x = 0, y = -1, z = 0}, + {x = 0, y = 0, z = 1}, + {x = 0, y = 0, z = -1}, +} + + +minetest.register_craft({ + output = "mesecons_stickyblocks_flat:sticky_block_xz", + recipe = { + {"mesecons_materials:glue","group:wood", "mesecons_materials:glue"}, + } +}) + diff --git a/mesecons_stickyblocks_flat/textures/mesecons_stickyblocks_flat.png b/mesecons_stickyblocks_flat/textures/mesecons_stickyblocks_flat.png new file mode 100644 index 0000000..ec16bf1 Binary files /dev/null and b/mesecons_stickyblocks_flat/textures/mesecons_stickyblocks_flat.png differ diff --git a/mesecons_stickyblocks_flat/textures/mesecons_stickyblocks_flat_sticky.png b/mesecons_stickyblocks_flat/textures/mesecons_stickyblocks_flat_sticky.png new file mode 100644 index 0000000..3a5f6f1 Binary files /dev/null and b/mesecons_stickyblocks_flat/textures/mesecons_stickyblocks_flat_sticky.png differ diff --git a/mesecons_stickyblocks_linear/depends.txt b/mesecons_stickyblocks_linear/depends.txt new file mode 100644 index 0000000..01f085b --- /dev/null +++ b/mesecons_stickyblocks_linear/depends.txt @@ -0,0 +1,2 @@ +mesecons +mesecons_mvps diff --git a/mesecons_stickyblocks_linear/init.lua b/mesecons_stickyblocks_linear/init.lua new file mode 100644 index 0000000..e011d6e --- /dev/null +++ b/mesecons_stickyblocks_linear/init.lua @@ -0,0 +1,153 @@ +-- Sticky blocks can be used together with pistons or movestones to push / pull +-- structures that are "glued" together using sticky blocks + + -- X sticky block linear +minetest.register_node("mesecons_stickyblocks_linear:sticky_block_x", { + description = "X Sticky Block", + drawtype = "nodebox", + drop = "mesecons_stickyblocks_linear:sticky_block_y", + paramtype2 = "facedir", + tiles = { + "mesecons_stickyblocks_linear.png", + "mesecons_stickyblocks_linear.png", + "mesecons_stickyblocks_linear_sticky.png", + "mesecons_stickyblocks_linear_sticky.png", + "mesecons_stickyblocks_linear.png", + "mesecons_stickyblocks_linear.png", + }, + is_ground_content = false, + groups = {choppy = 3, oddly_breakable_by_hand = 2, sticky = 1, not_in_creative_inventory = 1}, + mvps_sticky = function (pos, node) + local connected = {} + for _, r in ipairs(mesecon.rules.x) do + table.insert(connected, vector.add(pos, r)) + end + return connected + end, + node_box = { + type = "fixed", + fixed = { + {-0.375, -0.375, -0.375, 0.375, 0.375, 0.375}, + {0.375, -0.5, -0.5, 0.5, 0.5, 0.5}, + {-0.5, -0.5, -0.5, -0.375, 0.5, 0.5}, + } + }, + sounds = default.node_sound_wood_defaults(), + on_punch = function(pos, node, player, pointed_thing) + if string.find(player:get_wielded_item():get_name(), "sticky_") then + minetest.swap_node(pos, {name = "mesecons_stickyblocks_linear:sticky_block_y" }) + end + end, + on_rotate = function(pos, node, player, pointed_thing) + minetest.swap_node(pos, {name = "mesecons_stickyblocks_linear:sticky_block_y" }) + return true + end, +}) + + -- Y sticky block +minetest.register_node("mesecons_stickyblocks_linear:sticky_block_y", { + description = "Linear Sticky Block", + drawtype = "nodebox", + paramtype2 = "facedir", + tiles = { + "mesecons_stickyblocks_linear_sticky.png", + "mesecons_stickyblocks_linear_sticky.png", + "mesecons_stickyblocks_linear.png", + "mesecons_stickyblocks_linear.png", + "mesecons_stickyblocks_linear.png", + "mesecons_stickyblocks_linear.png", + }, + is_ground_content = false, + groups = {choppy = 3, oddly_breakable_by_hand = 2, sticky= 1}, + mvps_sticky = function (pos, node) + local connected = {} + for _, r in ipairs(mesecon.rules.y) do + table.insert(connected, vector.add(pos, r)) + end + return connected + end, + node_box = { + type = "fixed", + fixed = { + {-0.375, -0.375, -0.375, 0.375, 0.375, 0.375}, + {-0.5, 0.375, -0.5, 0.5, 0.5, 0.5}, + {-0.5, -0.5, -0.5, 0.5, -0.375, 0.5}, + } + }, + sounds = default.node_sound_wood_defaults(), + on_punch = function(pos, node, player, pointed_thing) + if string.find(player:get_wielded_item():get_name(), "sticky_") then + minetest.swap_node(pos, {name = "mesecons_stickyblocks_linear:sticky_block_z" }) + end + end, + on_rotate = function(pos, node, player, pointed_thing) + minetest.swap_node(pos, {name = "mesecons_stickyblocks_linear:sticky_block_z" }) + return true + end, +}) + + -- Z sticky block +minetest.register_node("mesecons_stickyblocks_linear:sticky_block_z", { + description = "Z Sticky Block", + drawtype = "nodebox", + paramtype2 = "facedir", + drop = "mesecons_stickyblocks_linear:sticky_block_y", + tiles = { + "mesecons_stickyblocks_linear.png", + "mesecons_stickyblocks_linear.png", + "mesecons_stickyblocks_linear.png", + "mesecons_stickyblocks_linear.png", + "mesecons_stickyblocks_linear_sticky.png", + "mesecons_stickyblocks_linear_sticky.png", + }, + is_ground_content = false, + groups = {choppy = 3, oddly_breakable_by_hand = 2, sticky = 1, not_in_creative_inventory = 1}, + mvps_sticky = function (pos, node) + local connected = {} + for _, r in ipairs(mesecon.rules.z) do + table.insert(connected, vector.add(pos, r)) + end + return connected + end, + node_box = { + type = "fixed", + fixed = { + {-0.375, -0.375, -0.375, 0.375, 0.375, 0.375}, + {-0.5, -0.5, 0.375, 0.5, 0.5, 0.5}, + {-0.5, -0.5, -0.5, 0.5, 0.5, -0.375}, + } + }, + sounds = default.node_sound_wood_defaults(), + on_punch = function(pos, node, player, pointed_thing) + if string.find(player:get_wielded_item():get_name(), "sticky_") then + minetest.swap_node(pos, {name = "mesecons_stickyblocks_linear:sticky_block_x" }) + end + end, + on_rotate = function(pos, node, player, pointed_thing) + minetest.swap_node(pos, {name = "mesecons_stickyblocks_linear:sticky_block_x" }) + return true + end, +}) + +mesecon.rules.y = { + {x = 0, y = 1, z = 0}, + {x = 0, y = -1, z = 0}, +} + +mesecon.rules.x = { + {x = 1, y = 0, z = 0}, + {x = -1, y = 0, z = 0}, +} + +mesecon.rules.z = { + {x = 0, y = 0, z = 1}, + {x = 0, y = 0, z = -1}, +} + +minetest.register_craft({ + output = "mesecons_stickyblocks_linear:sticky_block_y", + recipe = { + {"group:wood"}, + {"mesecons_materials:glue"}, + } +}) diff --git a/mesecons_stickyblocks_linear/textures/mesecons_stickyblocks_linear.png b/mesecons_stickyblocks_linear/textures/mesecons_stickyblocks_linear.png new file mode 100644 index 0000000..e9647cf Binary files /dev/null and b/mesecons_stickyblocks_linear/textures/mesecons_stickyblocks_linear.png differ diff --git a/mesecons_stickyblocks_linear/textures/mesecons_stickyblocks_linear_sticky.png b/mesecons_stickyblocks_linear/textures/mesecons_stickyblocks_linear_sticky.png new file mode 100644 index 0000000..3a5f6f1 Binary files /dev/null and b/mesecons_stickyblocks_linear/textures/mesecons_stickyblocks_linear_sticky.png differ