mirror of
https://github.com/minetest-mods/digtron.git
synced 2024-10-05 17:13:08 +02:00
give builder items a little love
This commit is contained in:
parent
f83f5cba11
commit
61be57ed45
@ -14,10 +14,10 @@ local listname_to_title =
|
||||
|
||||
-- Sequencer commands
|
||||
-- Yes, this indexing scheme is complicated. It's necessary in order to make sequences
|
||||
-- language-agnostic, and saves a bit of storage space in the process by shortening and
|
||||
-- language-agnostic, and saves a bit of storage space in the process by shortening and
|
||||
-- standardizing command tags.
|
||||
-- Also makes it future-proof, we can add new commands without disrupting existing stored sequences
|
||||
local sequencer_commands =
|
||||
local sequencer_commands =
|
||||
{
|
||||
seq = S("Sequence"),
|
||||
dmb = S("Dig Move Build"),
|
||||
@ -37,7 +37,7 @@ local sequencer_commands =
|
||||
}
|
||||
|
||||
-- This sets the order in which they'll be shown on the dropdown menu
|
||||
local sequencer_dropdown_order =
|
||||
local sequencer_dropdown_order =
|
||||
{
|
||||
"seq", "dmb", "dmd", "mup", "mdn", "mlt", "mrt", "mfw", "mbk", "rlt", "rrt", "rup", "rdn", "rcl", "rcc"
|
||||
}
|
||||
|
23
entities.lua
23
entities.lua
@ -158,6 +158,7 @@ digtron.remove_builder_item = function(pos)
|
||||
end
|
||||
end
|
||||
|
||||
-- Used by unassembled builders
|
||||
digtron.update_builder_item = function(pos)
|
||||
local node = minetest.get_node(pos)
|
||||
if minetest.get_node_group(node.name, "digtron") ~= 4 then
|
||||
@ -169,7 +170,27 @@ digtron.update_builder_item = function(pos)
|
||||
local item = meta:get_string("item")
|
||||
if item ~= "" then
|
||||
digtron.create_builder_item = item
|
||||
minetest.add_entity(target_pos,"digtron:builder_item")
|
||||
safe_add_entity(target_pos,"digtron:builder_item")
|
||||
end
|
||||
end
|
||||
|
||||
-- Updates entire Digtron
|
||||
digtron.update_builder_items = function(digtron_id)
|
||||
local layout = digtron.get_layout(digtron_id)
|
||||
local root_pos = digtron.get_pos(digtron_id)
|
||||
|
||||
for hash, data in pairs(layout) do
|
||||
local node = data.node
|
||||
if minetest.get_node_group(node.name, "digtron") == 4 then
|
||||
local item = data.meta.fields.item
|
||||
local pos = vector.add(minetest.get_position_from_hash(hash), root_pos)
|
||||
local target_pos = vector.add(pos, minetest.facedir_to_dir(node.param2))
|
||||
digtron.remove_builder_item(target_pos)
|
||||
if item ~= "" then
|
||||
digtron.create_builder_item = item
|
||||
safe_add_entity(target_pos,"digtron:builder_item")
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -191,7 +191,6 @@ end
|
||||
local persist_layout, retrieve_layout = get_table_functions("layout")
|
||||
local persist_pos, retrieve_pos, dispose_pos = get_table_functions("pos")
|
||||
local persist_sequence, retrieve_sequence = get_table_functions("sequence")
|
||||
local persist_step, retrieve_step = get_table_functions("step") -- actually just an integer, but table_functions works for that too
|
||||
|
||||
-------------------------------------------------------------------------------------------------------
|
||||
-- Layout creation helpers
|
||||
@ -1383,8 +1382,6 @@ digtron.get_bounding_box = retrieve_bounding_box
|
||||
digtron.get_inventory = retrieve_inventory
|
||||
digtron.set_sequence = persist_sequence
|
||||
digtron.get_sequence = retrieve_sequence
|
||||
digtron.set_step = persist_step
|
||||
digtron.get_step = retrieve_step
|
||||
|
||||
-- Used by duplicator
|
||||
digtron.get_layout = retrieve_layout
|
||||
|
@ -128,6 +128,7 @@ local builder_on_rightclick = function(pos, node, clicker, itemstack, pointed_th
|
||||
if digtron_id ~= "" then
|
||||
minetest.sound_play({name = "digtron_error", gain = 0.1}, {to_player=player_name})
|
||||
minetest.chat_send_player(player_name, S("This Digtron is active, interact with it via the controller node."))
|
||||
digtron.update_builder_items(digtron_id)
|
||||
return
|
||||
end
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user