Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

New sticky and slippy blocks #489

Open
wants to merge 4 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions mesecons_slippyblocks/depends.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
mesecons
mesecons_mvps
69 changes: 69 additions & 0 deletions mesecons_slippyblocks/init.lua
Original file line number Diff line number Diff line change
@@ -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
}
},

})

Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 2 additions & 0 deletions mesecons_stickyblocks_flat/depends.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
mesecons
mesecons_mvps
169 changes: 169 additions & 0 deletions mesecons_stickyblocks_flat/init.lua
Original file line number Diff line number Diff line change
@@ -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},
}
Copy link
Contributor

@Desour Desour Oct 12, 2019

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If they want to merge the change it's indeed a good idea to move them back in preset. I placed them there originally. But I moved them so that it can work as stand alone with older/unmodified version of mesecon.



minetest.register_craft({
output = "mesecons_stickyblocks_flat:sticky_block_xz",
recipe = {
{"mesecons_materials:glue","group:wood", "mesecons_materials:glue"},
}
})

Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 2 additions & 0 deletions mesecons_stickyblocks_linear/depends.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
mesecons
mesecons_mvps
Loading