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
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.
To pickup a node simply right click on it. If the node contains a formspec, you will need to shift+right click instead.
supported_nodes
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)
To pickup a node simply right click on it. If the node contains a formspec,
you will need to shift+right click instead.
--]]
local supported_nodes = {
["default:chest"] = {
name="wrench:default_chest",
lists={"main"},
metas={},
},
["default:chest_locked"] = {
name="wrench:default_chest_locked",
lists={"main"},
metas={{string="owner"},{string="infotext"}},
owner_protection=1,
},
["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,
}
wrench = {}
local modpath = minetest.get_modpath(minetest.get_current_modname())
dofile(modpath.."/support.lua")
dofile(modpath.."/technic.lua")
local function get_meta_type(name, metaname)
local def = wrench.registered_nodes[name]
if not def or not def.metas or not def.metas[metaname] then
return nil
end
for i=0,8,1 do
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,
}
return def.metas[metaname]
end
local function convert_to_original_name(name)
for key,value in pairs(supported_nodes) do
if name == value.name then return key end
end
local function get_pickup_name(name)
return "wrench:picked_up_"..(name:gsub(":", "_"))
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]
if olddef ~= nil then
if olddef then
local newdef = {}
for key, value in pairs(olddef) do
newdef[key] = value
@ -289,33 +63,8 @@ for name,info in pairs(supported_nodes) do
newdef.groups.not_in_creative_inventory = 1
newdef.on_construct = nil
newdef.on_destruct = nil
newdef.after_place_node = function(pos, placer, itemstack)
minetest.set_node(pos, {name = convert_to_original_name(itemstack:get_name()),
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)
newdef.after_place_node = restore
minetest.register_node(":"..get_pickup_name(name), newdef)
end
end
@ -328,75 +77,76 @@ minetest.register_tool("wrench:wrench", {
groupcaps = {
crumbly = {times={[2]=3.00, [3]=0.70}, 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},
},
on_place = function(itemstack, placer, pointed_thing)
if not placer:is_player() then return end
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 support = supported_nodes[name]
if support == nil then return end
local def = wrench.registered_nodes[name]
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)
if support.owner_protection ~= nil then
if def.owned then
local owner = meta:get_string("owner")
if owner ~= nil then
if owner ~= placer:get_player_name() then
if owner and owner ~= placer:get_player_name() then
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 "..
minetest.pos_to_string(pos))
return
end
end
end
local lists = support.lists
local metadata = {}
metadata.name = name
local inv = meta:get_inventory()
local empty = true
local metadata_str = {}
local list_str = {}
for i=1,#lists,1 do
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()
local lists = {}
for _, listname in pairs(def.lists or {}) do
if not inv:is_empty(listname) then
empty = false
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
metadata_str.lists = list_str
lists[listname] = list
end
metadata.lists = lists
local metas = support.metas
local meta_str = {}
for i=1,#metas,1 do
local temp = metas[i]
if temp.string ~= nil then
meta_str[i] = {string = temp.string, value = meta:get_string(temp.string)}
end
if temp.int ~= nil then
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)}
local metas = {}
for name, meta_type in pairs(def.metas or {}) do
if meta_type == wrench.META_TYPE_INT then
metas[name] = meta:get_int(name)
elseif meta_type == wrench.META_TYPE_FLOAT then
metas[name] = meta:get_float(name)
elseif meta_type == wrench.META_TYPE_STRING then
metas[name] = meta:get_string(name)
end
end
metadata_str.metas = meta_str
metadata.metas = metas
local player_inv = placer:get_inventory()
local stack = {name = name}
if player_inv:room_for_item("main", stack) then
stack:set_metadata(minetest.serialize(metadata))
minetest.remove_node(pos)
itemstack:add_wear(65535 / 20)
if empty and #lists > 0 and support.store_meta_always == nil then
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
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