Skip to content

Commit

Permalink
Merge pull request #3 from S-S-X/nodegroups
Browse files Browse the repository at this point in the history
Check node compatibility, add some messages for user
  • Loading branch information
S-S-X committed May 10, 2020
2 parents 418b1ac + 117c714 commit 6dcacbb
Show file tree
Hide file tree
Showing 6 changed files with 38 additions and 7 deletions.
21 changes: 17 additions & 4 deletions api.lua
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,13 @@ tubetool = {
nodes = {},
register_node = function(self, name, definition, override)
if override or not self.nodes[name] then
if type(definition.copy) == 'function' and type(definition.paste) == 'function' then
if type(definition) ~= 'table' then
print(string.format('tubetool:register_node invalid definition, must be table but was %s', type(definition)))
elseif not definition.group then
print('tubetool:register_node invalid definition, group must be defined')
elseif type(definition.copy) == 'function' and type(definition.paste) == 'function' then
self.nodes[name] = definition
print(string.format('tubetool:register_node registered %s', name))
print(string.format('tubetool:register_node registered %s for group %s', name, definition.group))
else
print('tubetool:register_node invalid definition, copy or paste function not defined')
end
Expand Down Expand Up @@ -59,13 +63,22 @@ tubetool = {
copy = function(self, node, pos, player)
local definition = self.nodes[node.name]
if definition then
return definition.copy(node, pos, player)
minetest.chat_send_player(player:get_player_name(), string.format('copying data for group %s', definition.group))
return definition.copy(node, pos, player), definition.group
end
end,

paste = function(self, node, pos, player, data)
paste = function(self, node, pos, player, data, group)
local definition = self.nodes[node.name]
if definition.group ~= group then
minetest.chat_send_player(
player:get_player_name(),
string.format('tubetool wand contains data for %s, cannot apply for %s', group, definition.group)
)
return
end
if definition and data then
minetest.chat_send_player(player:get_player_name(), string.format('applying data for group %s', definition.group))
return definition.paste(node, pos, player, data)
end
end,
Expand Down
7 changes: 7 additions & 0 deletions nodes/injector.lua
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,19 @@

--luacheck: ignore unused argument node player
local tooldef = {
group = 'injector',

copy = function(node, pos, player)
-- useless stuff to remove luacheck warnings
print(type(pos))
-- return data required for replicating this tube settings
return { description = 'Not implemented' }
end,

paste = function(node, pos, player, data)
-- useless stuff to remove luacheck warnings
print(type(pos))
print(type(data))
end,
}

Expand Down
2 changes: 2 additions & 0 deletions nodes/mese_tube.lua
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,8 @@ local inv_size = 6

--luacheck: ignore unused argument node player
local tooldef = {
group = 'sorting tube',

copy = function(node, pos, player)
local meta = minetest.get_meta(pos)
local inv = meta:get_inventory()
Expand Down
7 changes: 7 additions & 0 deletions nodes/sand_tube.lua
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,19 @@

--luacheck: ignore unused argument node player
local tooldef = {
group = 'vacuum tube',

copy = function(node, pos, player)
-- useless stuff to remove luacheck warnings
print(type(pos))
-- return data required for replicating this tube settings
return { description = 'Not implemented' }
end,

paste = function(node, pos, player, data)
-- useless stuff to remove luacheck warnings
print(type(pos))
print(type(data))
end,
}

Expand Down
2 changes: 2 additions & 0 deletions nodes/teleport_tube.lua
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ local nodenameprefix = "pipeworks:teleport_tube_"

--luacheck: ignore unused argument node player
local tooldef = {
group = 'teleport tube',

copy = function(node, pos, player)
local meta = minetest.get_meta(pos)

Expand Down
6 changes: 3 additions & 3 deletions tool.lua
Original file line number Diff line number Diff line change
Expand Up @@ -47,12 +47,12 @@ minetest.register_craftitem('tubetool:wand', {
local controls = player:get_player_control()

if controls.aux1 or controls.sneak then
local data = tubetool:copy(node, pos, player)
local data, group = tubetool:copy(node, pos, player)
local description = type(data) == 'table' and data.description or ('Data from ' .. minetest.pos_to_string(pos))
write_wand(itemstack, data, description)
write_wand(itemstack, {data = data, group = group}, description)
else
local data = read_wand(itemstack)
tubetool:paste(node, pos, player, data)
tubetool:paste(node, pos, player, data.data, data.group)
end

return itemstack
Expand Down

0 comments on commit 6dcacbb

Please sign in to comment.