Rewrite wrench. INCOMPATIBLE WITH OLD ITEMS

You must place all of your picked up nodes before
updating and pick them back up after.
This commit is contained in:
ShadowNinja 2013-12-20 17:07:39 -05:00
parent 0d32e05b52
commit 731a82169b
3 changed files with 461 additions and 354 deletions

View File

@ -1,284 +1,58 @@
--[[ --[[
Wrench mod Wrench mod
Adds a wrench that allows the player to pickup nodes that contain an inventory with items or metadata that needs perserving.
Adds a wrench that allows the player to pickup nodes that contain an inventory
with items or metadata that needs perserving.
The wrench has the same tool capability as the normal hand. The wrench has the same tool capability as the normal hand.
To pickup a node simply right click on it. If the node contains a formspec, you will need to shift+right click instead. To pickup a node simply right click on it. If the node contains a formspec,
supported_nodes you will need to shift+right click instead.
This table stores all nodes that are compatible with the wrench mod.
Syntax:
[<node name>] = {
name = "wrench:<temporary node name>",
lists = {"<inventory list name>"},
metas = {{string="<meta name>"},{int="<meta name>"},{float="<meta name>"}},
owner_protection[optional] = 1,
store_meta_always[optional] = 1,
}
<temporary node name> - can be anything as long as it is unique
[optional] - parameters do not have to be included
owner_protection - nodes that are protected by owner requirements (Ex. locked chests)
store_meta_always - when nodes are broken this ensures metadata and inventory is always stored (Ex. active state for machines)
--]] --]]
local supported_nodes = {
["default:chest"] = { wrench = {}
name="wrench:default_chest",
lists={"main"}, local modpath = minetest.get_modpath(minetest.get_current_modname())
metas={}, dofile(modpath.."/support.lua")
}, dofile(modpath.."/technic.lua")
["default:chest_locked"] = {
name="wrench:default_chest_locked", local function get_meta_type(name, metaname)
lists={"main"}, local def = wrench.registered_nodes[name]
metas={{string="owner"},{string="infotext"}}, if not def or not def.metas or not def.metas[metaname] then
owner_protection=1, return nil
},
["default:furnace"] = {
name="wrench:default_furnace",
lists={"fuel", "src", "dst"},
metas={{string="infotext"},{float="fuel_totaltime"},{float="fuel_time"},{float="src_totaltime"},{float="src_time"}},
},
["default:furnace_active"] = {
name="wrench:default_furnace",
lists={"fuel", "src", "dst"},
metas={{string="infotext"},{float="fuel_totaltime"},{float="fuel_time"},{float="src_totaltime"},{float="src_time"}},
store_meta_always=1,
},
["default:sign_wall"] = {
name="wrench:default_sing_wall",
lists={},
metas={{string="infotext"},{string="text"}},
},
["technic:iron_chest"] = {
name="wrench:technic_iron_chest",
lists={"main"},
metas={},
},
["technic:iron_locked_chest"] = {
name="wrench:technic_iron_locked_chest",
lists={"main"},
metas={{string="infotext"},{string="owner"}},
owner_protection=1,
},
["technic:copper_chest"] = {
name="wrench:technic_copper_chest",
lists={"main"},
metas={},
},
["technic:copper_locked_chest"] = {
name="wrench:technic_copper_locked_chest",
lists={"main"},
metas={{string="infotext"},{string="owner"}},
owner_protection=1,
},
["technic:silver_chest"] = {
name="wrench:technic_silver_chest",
lists={"main"},
metas={{string="infotext"},{string="formspec"}},
},
["technic:silver_locked_chest"] = {
name="wrench:technic_silver_locked_chest",
lists={"main"},
metas={{string="infotext"},{string="owner"},{string="formspec"}},
owner_protection=1,
},
["technic:gold_chest"] = {
name="wrench:technic_gold_chest",
lists={"main"},
metas={{string="infotext"},{string="formspec"}},
},
["technic:gold_locked_chest"] = {
name="wrench:technic_gold_locked_chest",
lists={"main"},
metas={{string="infotext"},{string="owner"},{string="formspec"}},
owner_protection=1,
},
["technic:mithril_chest"] = {
name="wrench:technic_mithril_chest",
lists={"main"},
metas={{string="infotext"},{string="formspec"}},
},
["technic:mithril_locked_chest"] = {
name="wrench:technic_mithril_locked_chest",
lists={"main"},
metas={{string="infotext"},{string="owner"},{string="formspec"}},
owner_protection=1,
},
["technic:electric_furnace"] = {
name="wrench:technic_electric_furnace",
lists={"src", "dst"},
metas={{string="infotext"},{string="formspec"},{int="state"},{int="LV_EU_demand"},{int="LV_EU_input"},{int="src_time"}},
},
["technic:electric_furnace_active"] = {
name="wrench:technic_electric_furnace_active",
lists={"src", "dst"},
metas={{string="infotext"},{string="formspec"},{int="state"},{int="LV_EU_demand"},{int="LV_EU_input"},{int="src_time"}},
store_meta_always=1,
},
["technic:mv_electric_furnace"] = {
name="wrench:technic_mv_electric_furnace",
lists={"src", "dst", "upgrade1", "upgrade2"},
metas={{string="infotext"},{string="formspec"},{int="state"},{int="MV_EU_demand"},{int="MV_EU_input"},{int="tube_time"},{int="src_time"}},
},
["technic:mv_electric_furnace_active"] = {
name="wrench:technic_mv_electric_furnace_active",
lists={"src", "dst", "upgrade1", "upgrade2"},
metas={{string="infotext"},{string="formspec"},{int="state"},{int="MV_EU_demand"},{int="MV_EU_input"},{int="tube_time"},{int="src_time"}},
store_meta_always=1,
},
["technic:coal_alloy_furnace"] = {
name="wrench:technic_coal_alloy_furnace",
lists={"fuel", "src", "src2", "dst"},
metas={{string="infotext"},{float="fuel_totaltime"},{float="fuel_time"},{float="src_totaltime"},{float="src_time"}},
},
["technic:coal_alloy_furnace_active"] = {
name="wrench:technic_coal_alloy_furnace_active",
lists={"fuel", "src", "src2", "dst"},
metas={{string="infotext"},{float="fuel_totaltime"},{float="fuel_time"},{float="src_totaltime"},{float="src_time"}},
store_meta_always=1,
},
["technic:alloy_furnace"] = {
name="wrench:technic_alloy_furnace",
lists={"src", "src2", "dst"},
metas={{string="infotext"},{string="formspec"},{int="state"},{int="LV_EU_demand"},{int="LV_EU_input"},{int="tube_time"},{int="src_time"}},
},
["technic:alloy_furnace_active"] = {
name="wrench:technic_alloy_furnace_active",
lists={"src", "src2", "dst"},
metas={{string="infotext"},{string="formspec"},{int="state"},{int="LV_EU_demand"},{int="LV_EU_input"},{int="tube_time"},{int="src_time"}},
store_meta_always=1,
},
["technic:mv_alloy_furnace"] = {
name="wrench:technic_mv_alloy_furnace",
lists={"src", "src2", "dst", "upgrade1", "upgrade2"},
metas={{string="infotext"},{string="formspec"},{int="state"},{int="MV_EU_demand"},{int="MV_EU_input"},{int="tube_time"},{int="src_time"}},
},
["technic:mv_alloy_furnace_active"] = {
name="wrench:technic_mv_alloy_furnace_active",
lists={"src", "src2", "dst", "upgrade1", "upgrade2"},
metas={{string="infotext"},{string="formspec"},{int="state"},{int="MV_EU_demand"},{int="MV_EU_input"},{int="tube_time"},{int="src_time"}},
store_meta_always=1,
},
["technic:tool_workshop"] = {
name="wrench:technic_tool_workshop",
lists={"src"},
metas={{string="infotext"},{string="formspec"},{int="state"},{int="LV_EU_demand"},{int="LV_EU_input"}},
},
["technic:grinder"] = {
name="wrench:technic_grinder",
lists={"src", "dst"},
metas={{string="infotext"},{string="formspec"},{int="state"},{int="LV_EU_demand"},{int="LV_EU_input"},{int="src_time"}},
},
["technic:grinder_active"] = {
name="wrench:technic_grinder_active",
lists={"src", "dst"},
metas={{string="infotext"},{string="formspec"},{int="state"},{int="LV_EU_demand"},{int="LV_EU_input"},{int="src_time"}},
store_meta_always=1,
},
["technic:mv_grinder"] = {
name="wrench:technic_mv_grinder",
lists={"src", "dst", "upgrade1", "upgrade2"},
metas={{string="infotext"},{string="formspec"},{int="state"},{int="MV_EU_demand"},{int="MV_EU_input"},{int="tube_time"},{int="src_time"}},
},
["technic:mv_grinder_active"] = {
name="wrench:technic_mv_grinder_active",
lists={"src", "dst", "upgrade1", "upgrade2"},
metas={{string="infotext"},{string="formspec"},{int="state"},{int="MV_EU_demand"},{int="MV_EU_input"},{int="tube_time"},{int="src_time"}},
store_meta_always=1,
},
["technic:extractor"] = {
name="wrench:technic_extractor",
lists={"src", "dst"},
metas={{string="infotext"},{string="formspec"},{int="state"},{int="LV_EU_demand"},{int="LV_EU_input"},{int="src_time"}},
},
["technic:extractor_active"] = {
name="wrench:technic_extractor_active",
lists={"src", "dst"},
metas={{string="infotext"},{string="formspec"},{int="state"},{int="LV_EU_demand"},{int="LV_EU_input"},{int="src_time"}},
store_meta_always=1,
},
["technic:compressor"] = {
name="wrench:technic_compressor",
lists={"src", "dst"},
metas={{string="infotext"},{string="formspec"},{int="state"},{int="LV_EU_demand"},{int="LV_EU_input"},{int="src_time"}},
},
["technic:compressor_active"] = {
name="wrench:technic_compressor_active",
lists={"src", "dst"},
metas={{string="infotext"},{string="formspec"},{int="state"},{int="LV_EU_demand"},{int="LV_EU_input"},{int="src_time"}},
store_meta_always=1,
},
["technic:cnc"] = {
name="wrench:technic_cnc",
lists={"src", "dst"},
metas={{string="infotext"},{string="formspec"},{int="state"},{int="LV_EU_demand"},{int="LV_EU_input"},{int="src_time"},{string="cnc_product"}},
},
["technic:cnc_active"] = {
name="wrench:technic_cnc_active",
lists={"src", "dst"},
metas={{string="infotext"},{string="formspec"},{int="state"},{int="LV_EU_demand"},{int="LV_EU_input"},{int="src_time"},{string="cnc_product"}},
store_meta_always=1,
},
}
local chest_mark_colors = {
{'_black','Black'},
{'_blue','Blue'},
{'_brown','Brown'},
{'_cyan','Cyan'},
{'_dark_green','Dark Green'},
{'_dark_grey','Dark Grey'},
{'_green','Green'},
{'_grey','Grey'},
{'_magenta','Magenta'},
{'_orange','Orange'},
{'_pink','Pink'},
{'_red','Red'},
{'_violet','Violet'},
{'_white','White'},
{'_yellow','Yellow'},
{'','None'}
}
for i=1,15,1 do
supported_nodes["technic:gold_chest"..chest_mark_colors[i][1]] = {
name="wrench:technic_gold_chest"..chest_mark_colors[i][1],
lists={"main"},
metas={{string="infotext"},{string="formspec"}},
}
supported_nodes["technic:gold_locked_chest"..chest_mark_colors[i][1]] = {
name="wrench:technic_gold_locked_chest"..chest_mark_colors[i][1],
lists={"main"},
metas={{string="infotext"},{string="owner"},{string="formspec"}},
owner_protection=1,
}
end end
for i=0,8,1 do return def.metas[metaname]
if i==0 then i="" end
supported_nodes["technic:battery_box"..i] = {
name="wrench:technic_battery_box"..i,
lists={"src", "dst"},
metas={{string="infotext"},{string="formspec"},{int="LV_EU_demand"},{int="LV_EU_supply"},{int="LV_EU_input"},{int="internal_EU_charge"},{float="last_side_shown"}},
store_meta_always=1,
}
supported_nodes["technic:mv_battery_box"..i] = {
name="wrench:technic_mv_battery_box"..i,
lists={"src", "dst"},
metas={{string="infotext"},{string="formspec"},{int="MV_EU_demand"},{int="MV_EU_supply"},{int="MV_EU_input"},{int="internal_EU_charge"},{float="last_side_shown"}},
store_meta_always=1,
}
supported_nodes["technic:hv_battery_box"..i] = {
name="wrench:technic_hv_battery_box"..i,
lists={"src", "dst"},
metas={{string="infotext"},{string="formspec"},{int="HV_EU_demand"},{int="HV_EU_supply"},{int="HV_EU_input"},{int="internal_EU_charge"},{float="last_side_shown"}},
store_meta_always=1,
}
end end
local function convert_to_original_name(name) local function get_pickup_name(name)
for key,value in pairs(supported_nodes) do return "wrench:picked_up_"..(name:gsub(":", "_"))
if name == value.name then return key end
end
end end
for name,info in pairs(supported_nodes) do local function restore(pos, placer, itemstack)
local name = itemstack:get_name()
local meta = minetest.get_meta(pos)
local inv = meta:get_inventory()
local data = minetest.deserialize(itemstack:get_metadata())
minetest.set_node(pos, {name = data.name})
local lists = data.lists
for listname, list in pairs(lists) do
inv:set_list(listname, list)
end
for name, value in pairs(data.metas) do
local meta_type = get_meta_type(data.name, name)
if meta_type == wrench.META_TYPE_INT then
meta:set_int(name, value)
elseif meta_type == wrench.META_TYPE_FLOAT then
meta:set_float(name, value)
elseif meta_type == wrench.META_TYPE_STRING then
meta:set_string(name, value)
end
end
itemstack:take_item()
return itemstack
end
for name, info in pairs(wrench.registered_nodes) do
local olddef = minetest.registered_nodes[name] local olddef = minetest.registered_nodes[name]
if olddef ~= nil then if olddef then
local newdef = {} local newdef = {}
for key, value in pairs(olddef) do for key, value in pairs(olddef) do
newdef[key] = value newdef[key] = value
@ -289,33 +63,8 @@ for name,info in pairs(supported_nodes) do
newdef.groups.not_in_creative_inventory = 1 newdef.groups.not_in_creative_inventory = 1
newdef.on_construct = nil newdef.on_construct = nil
newdef.on_destruct = nil newdef.on_destruct = nil
newdef.after_place_node = function(pos, placer, itemstack) newdef.after_place_node = restore
minetest.set_node(pos, {name = convert_to_original_name(itemstack:get_name()), minetest.register_node(":"..get_pickup_name(name), newdef)
param2 = minetest.get_node(pos).param2})
local meta = minetest.get_meta(pos)
local inv = meta:get_inventory()
local item_meta =itemstack:to_table()
local data = minetest.deserialize(item_meta["metadata"])
local lists = data.lists
for listname,list in pairs(lists) do
inv:set_list(listname, list)
end
local metas = data.metas
local temp = nil
for i=1,#metas,1 do
temp = metas[i]
if temp.string ~= nil then
meta:set_string(temp.string, temp.value)
end
if temp.int ~= nil then
meta:set_int(temp.int, temp.value)
end
if temp.float ~= nil then
meta:set_float(temp.float, temp.value)
end
end
end
minetest.register_node(info.name, newdef)
end end
end end
@ -328,75 +77,76 @@ minetest.register_tool("wrench:wrench", {
groupcaps = { groupcaps = {
crumbly = {times={[2]=3.00, [3]=0.70}, uses=0, maxlevel=1}, crumbly = {times={[2]=3.00, [3]=0.70}, uses=0, maxlevel=1},
snappy = {times={[3]=0.40}, uses=0, maxlevel=1}, snappy = {times={[3]=0.40}, uses=0, maxlevel=1},
oddly_breakable_by_hand = {times={[1]=7.00,[2]=4.00,[3]=1.40}, uses=0, maxlevel=3} oddly_breakable_by_hand = {times={[1]=7.00,[2]=4.00,[3]=1.40},
uses=0, maxlevel=3}
}, },
damage_groups = {fleshy=1}, damage_groups = {fleshy=1},
}, },
on_place = function(itemstack, placer, pointed_thing) on_place = function(itemstack, placer, pointed_thing)
if not placer:is_player() then return end
local pos = pointed_thing.under local pos = pointed_thing.under
if pos == nil then return end if not placer or not pos then
return
end
if minetest.is_protected(pos, placer:get_player_name()) then
minetest.record_protection_violation(pos, placer:get_player_name())
return
end
local name = minetest.get_node(pos).name local name = minetest.get_node(pos).name
local support = supported_nodes[name] local def = wrench.registered_nodes[name]
if support == nil then return end if not def then
return
end
local stack = ItemStack(get_pickup_name(name))
local player_inv = placer:get_inventory()
if not player_inv:room_for_item("main", stack) then
return
end
local meta = minetest.get_meta(pos) local meta = minetest.get_meta(pos)
if support.owner_protection ~= nil then if def.owned then
local owner = meta:get_string("owner") local owner = meta:get_string("owner")
if owner ~= nil then if owner and owner ~= placer:get_player_name() then
if owner ~= placer:get_player_name() then
minetest.log("action", placer:get_player_name().. minetest.log("action", placer:get_player_name()..
" tried to destroy a locked chest belonging to ".. " tried to pick up a owned node belonging to "..
owner.." at ".. owner.." at "..
minetest.pos_to_string(pos)) minetest.pos_to_string(pos))
return return
end end
end end
end
local lists = support.lists local metadata = {}
metadata.name = name
local inv = meta:get_inventory() local inv = meta:get_inventory()
local empty = true local lists = {}
local metadata_str = {} for _, listname in pairs(def.lists or {}) do
local list_str = {} if not inv:is_empty(listname) then
for i=1,#lists,1 do empty = false
if not inv:is_empty(lists[i]) then empty = false end
local list = inv:get_list(lists[i])
for j=1,#list,1 do
list[j] = list[j]:to_string()
end end
list_str[lists[i]] = list local list = inv:get_list(listname)
for i, stack in pairs(list) do
list[i] = stack:to_string()
end end
metadata_str.lists = list_str lists[listname] = list
end
metadata.lists = lists
local metas = support.metas local metas = {}
local meta_str = {} for name, meta_type in pairs(def.metas or {}) do
for i=1,#metas,1 do if meta_type == wrench.META_TYPE_INT then
local temp = metas[i] metas[name] = meta:get_int(name)
if temp.string ~= nil then elseif meta_type == wrench.META_TYPE_FLOAT then
meta_str[i] = {string = temp.string, value = meta:get_string(temp.string)} metas[name] = meta:get_float(name)
end elseif meta_type == wrench.META_TYPE_STRING then
if temp.int ~= nil then metas[name] = meta:get_string(name)
meta_str[i] = {int = temp.int, value = meta:get_int(temp.int)}
end
if temp.float ~= nil then
meta_str[i] = {float = temp.float, value = meta:get_float(temp.float)}
end end
end end
metadata_str.metas = meta_str metadata.metas = metas
local player_inv = placer:get_inventory() stack:set_metadata(minetest.serialize(metadata))
local stack = {name = name}
if player_inv:room_for_item("main", stack) then
minetest.remove_node(pos) minetest.remove_node(pos)
itemstack:add_wear(65535 / 20) itemstack:add_wear(65535 / 20)
if empty and #lists > 0 and support.store_meta_always == nil then
player_inv:add_item("main", stack) player_inv:add_item("main", stack)
else
stack.name = supported_nodes[name].name
stack.metadata = minetest.serialize(metadata_str)
player_inv:add_item("main", stack)
end
end
return itemstack return itemstack
end, end,
}) })

71
wrench/support.lua Normal file
View File

@ -0,0 +1,71 @@
--[[
supported_nodes
This table stores all nodes that are compatible with the wrench mod.
Syntax:
[<node name>] = {
lists = {"<inventory list name>"},
metas = {["<meta name>"] = STRING,
["<meta name>"] = INT,
["<meta name>"] = FLOAT},
owned = true,
store_meta_always = true,
}
owned - nodes that are protected by owner requirements (Ex. locked chests)
store_meta_always - when nodes are broken this ensures metadata and
inventory is always stored (Ex. active state for machines)
--]]
wrench.META_TYPE_INT = 0
wrench.META_TYPE_FLOAT = 1
wrench.META_TYPE_STRING = 2
local INT, STRING, FLOAT =
wrench.META_TYPE_INT,
wrench.META_TYPE_STRING,
wrench.META_TYPE_FLOAT
wrench.registered_nodes = {
["default:chest"] = {
lists = {"main"},
},
["default:chest_locked"] = {
lists = {"main"},
metas = {owner = STRING,
infotext = STRING},
owned = true,
},
["default:furnace"] = {
lists = {"fuel", "src", "dst"},
metas = {infotext = STRING,
fuel_totaltime = FLOAT,
fuel_time = FLOAT,
src_totaltime = FLOAT,
src_time = FLOAT},
},
["default:furnace_active"] = {
lists = {"fuel", "src", "dst"},
metas = {infotext = STRING,
fuel_totaltime = FLOAT,
fuel_time = FLOAT,
src_totaltime = FLOAT,
src_time = FLOAT},
store_meta_always = true,
},
["default:sign_wall"] = {
metas = {infotext = STRING,
text = STRING},
},
}
function wrench:original_name(name)
for key, value in pairs(self.registered_nodes) do
if name == value.name then
return key
end
end
end
function wrench:register_node(name, def)
self.registered_nodes[name] = def
end

286
wrench/technic.lua Normal file
View File

@ -0,0 +1,286 @@
local INT, STRING, FLOAT =
wrench.META_TYPE_INT,
wrench.META_TYPE_STRING,
wrench.META_TYPE_FLOAT
wrench:register_node("technic:iron_chest", {
lists = {"main"},
})
wrench:register_node("technic:iron_locked_chest", {
lists = {"main"},
metas = {infotext = STRING,
owner = STRING},
owned = true,
})
wrench:register_node("technic:copper_chest", {
lists = {"main"},
})
wrench:register_node("technic:copper_locked_chest", {
lists = {"main"},
metas = {infotext = STRING,
owner = STRING},
owned = true,
})
wrench:register_node("technic:silver_chest", {
lists = {"main"},
metas = {infotext = STRING,
formspec = STRING},
})
wrench:register_node("technic:silver_locked_chest", {
lists = {"main"},
metas = {infotext = STRING,
owner = STRING,
formspec = STRING},
owned = true,
})
wrench:register_node("technic:gold_chest", {
lists = {"main"},
metas = {infotext = STRING,
formspec = STRING},
})
wrench:register_node("technic:gold_locked_chest", {
lists = {"main"},
metas = {infotext = STRING,
owner = STRING,
formspec = STRING},
owned = true,
})
wrench:register_node("technic:mithril_chest", {
lists = {"main"},
metas = {infotext = STRING,
formspec = STRING},
})
wrench:register_node("technic:mithril_locked_chest", {
lists = {"main"},
metas = {infotext = STRING,
owner = STRING,
formspec = STRING},
owned = true,
})
wrench:register_node("technic:lv_electric_furnace", {
lists = {"src", "dst"},
metas = {infotext = STRING,
formspec = STRING,
LV_EU_demand = INT,
LV_EU_input = INT,
src_time = INT},
})
wrench:register_node("technic:lv_electric_furnace_active", {
lists = {"src", "dst"},
metas = {infotext = STRING,
formspec = STRING,
LV_EU_demand = INT,
LV_EU_input = INT,
src_time = INT},
})
wrench:register_node("technic:mv_electric_furnace", {
lists = {"src", "dst", "upgrade1", "upgrade2"},
metas = {infotext = STRING,
formspec = STRING,
MV_EU_demand = INT,
MV_EU_input = INT,
tube_time = INT,
src_time = INT},
})
wrench:register_node("technic:mv_electric_furnace_active", {
lists = {"src", "dst", "upgrade1", "upgrade2"},
metas = {infotext = STRING,
formspec = STRING,
MV_EU_demand = INT,
MV_EU_input = INT,
tube_time = INT,
src_time = INT},
})
wrench:register_node("technic:coal_alloy_furnace", {
lists = {"fuel", "src", "src2", "dst"},
metas = {infotext = STRING,
fuel_totaltime = FLOAT,
fuel_time = FLOAT,
src_totaltime = FLOAT,
src_time = FLOAT},
})
wrench:register_node("technic:coal_alloy_furnace_active", {
lists = {"fuel", "src", "src2", "dst"},
metas = {infotext = STRING,
fuel_totaltime = FLOAT,
fuel_time = FLOAT,
src_totaltime = FLOAT,
src_time = FLOAT},
})
wrench:register_node("technic:alloy_furnace", {
lists = {"src", "src2", "dst"},
metas = {infotext = STRING,
formspec = STRING,
LV_EU_demand = INT,
LV_EU_input = INT,
tube_time = INT,
src_time = INT},
})
wrench:register_node("technic:alloy_furnace_active", {
lists = {"src", "src2", "dst"},
metas = {infotext = STRING,
formspec = STRING,
LV_EU_demand = INT,
LV_EU_input = INT,
tube_time = INT,
src_time = INT},
})
wrench:register_node("technic:mv_alloy_furnace", {
lists = {"src", "src2", "dst", "upgrade1", "upgrade2"},
metas = {infotext = STRING,
formspec = STRING,
MV_EU_demand = INT,
MV_EU_input = INT,
tube_time = INT,
src_time = INT},
})
wrench:register_node("technic:mv_alloy_furnace_active", {
lists = {"src", "src2", "dst", "upgrade1", "upgrade2"},
metas = {infotext = STRING,
formspec = STRING,
MV_EU_demand = INT,
MV_EU_input = INT,
tube_time = INT,
src_time = INT},
})
wrench:register_node("technic:tool_workshop", {
lists = {"src"},
metas = {infotext = STRING,
formspec = STRING,
LV_EU_demand = INT,
LV_EU_input = INT},
})
wrench:register_node("technic:grinder", {
lists = {"src", "dst"},
metas = {infotext = STRING,
formspec = STRING,
LV_EU_demand = INT,
LV_EU_input = INT,
src_time = INT},
})
wrench:register_node("technic:grinder_active", {
lists = {"src", "dst"},
metas = {infotext = STRING,
formspec = STRING,
LV_EU_demand = INT,
LV_EU_input = INT,
src_time = INT},
})
wrench:register_node("technic:mv_grinder", {
lists = {"src", "dst", "upgrade1", "upgrade2"},
metas = {infotext = STRING,
formspec = STRING,
MV_EU_demand = INT,
MV_EU_input = INT,
tube_time = INT,
src_time = INT},
})
wrench:register_node("technic:mv_grinder_active", {
lists = {"src", "dst", "upgrade1", "upgrade2"},
metas = {infotext = STRING,
formspec = STRING,
MV_EU_demand = INT,
MV_EU_input = INT,
tube_time = INT,
src_time = INT},
})
wrench:register_node("technic:extractor", {
lists = {"src", "dst"},
metas = {infotext = STRING,
formspec = STRING,
LV_EU_demand = INT,
LV_EU_input = INT,
src_time = INT},
})
wrench:register_node("technic:extractor_active", {
lists = {"src", "dst"},
metas = {infotext = STRING,
formspec = STRING,
LV_EU_demand = INT,
LV_EU_input = INT,
src_time = INT},
})
wrench:register_node("technic:compressor", {
lists = {"src", "dst"},
metas = {infotext = STRING,
formspec = STRING,
LV_EU_demand = INT,
LV_EU_input = INT,
src_time = INT},
})
wrench:register_node("technic:compressor_active", {
lists = {"src", "dst"},
metas = {infotext = STRING,
formspec = STRING,
LV_EU_demand = INT,
LV_EU_input = INT,
src_time = INT},
})
wrench:register_node("technic:cnc", {
lists = {"src", "dst"},
metas = {infotext = STRING,
formspec = STRING,
LV_EU_demand = INT,
LV_EU_input = INT,
src_time = INT,
cnc_product = STRING},
})
wrench:register_node("technic:cnc_active", {
lists = {"src", "dst"},
metas = {infotext = STRING,
formspec = STRING,
LV_EU_demand = INT,
LV_EU_input = INT,
src_time = INT,
cnc_product = STRING},
})
local chest_mark_colors = {
'_black',
'_blue',
'_brown',
'_cyan',
'_dark_green',
'_dark_grey',
'_green',
'_grey',
'_magenta',
'_orange',
'_pink',
'_red',
'_violet',
'_white',
'_yellow',
'',
}
for i = 1, 15 do
wrench:register_node("technic:gold_chest"..chest_mark_colors[i], {
lists = {"main"},
metas = {infotext = STRING,formspec = STRING},
})
wrench:register_node("technic:gold_locked_chest"..chest_mark_colors[i], {
lists = {"main"},
metas = {infotext = STRING,owner = STRING,formspec = STRING},
owned = true,
})
end
for tier, _ in pairs(technic.machines) do
local ltier = tier:lower()
for i = 0, 8 do
wrench:register_node("technic:"..ltier.."_battery_box"..i, {
lists = {"src", "dst"},
metas = {infotext = STRING,
formspec = STRING,
[tier.."_EU_demand"] = INT,
[tier.."_EU_supply"] = INT,
[tier.."_EU_input"] = INT,
internal_EU_charge = INT,
last_side_shown = INT},
})
end
end