Created
December 20, 2013 20:48
-
-
Save ShadowNinja/8061302 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git a/wrench/init.lua b/wrench/init.lua | |
index 214544c..f127c15 100644 | |
--- a/wrench/init.lua | |
+++ b/wrench/init.lua | |
@@ -1,286 +1,60 @@ | |
--[[ | |
- Wrench mod | |
- 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) | |
+Wrench mod | |
+ | |
+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. | |
--]] | |
-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 | |
+ return def.metas[metaname] | |
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, | |
- } | |
+ | |
+local function get_pickup_name(name) | |
+ return "wrench:picked_up_"..(name:gsub(":", "_")) | |
end | |
-local function convert_to_original_name(name) | |
- for key,value in pairs(supported_nodes) do | |
- if name == value.name then return key end | |
+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(supported_nodes) do | |
+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 | |
+ for key, value in pairs(olddef) do | |
newdef[key] = value | |
end | |
newdef.stack_max = 1 | |
@@ -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,74 +77,70 @@ 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 | |
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 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 | |
- minetest.log("action", placer:get_player_name().. | |
- " tried to destroy a locked chest belonging to ".. | |
+ if owner and owner ~= placer:get_player_name() then | |
+ minetest.log("action", placer:get_player_name().. | |
+ " tried to pick up a owned node belonging to ".. | |
owner.." at ".. | |
minetest.pos_to_string(pos)) | |
- return | |
- end | |
+ return | |
end | |
end | |
+ | |
+ local metadata = {} | |
+ metadata.name = name | |
- local lists = support.lists | |
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 | |
+ local list = inv:get_list(listname) | |
+ for i, stack in pairs(list) do | |
+ list[i] = stack:to_string() | |
end | |
- list_str[lists[i]] = list | |
+ lists[listname] = list | |
end | |
- metadata_str.lists = list_str | |
+ 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 stack = ItemStack(get_pickup_name(name)) | |
+ stack:set_metadata(minetest.serialize(metadata)) | |
local player_inv = placer:get_inventory() | |
- local stack = {name = name} | |
if player_inv:room_for_item("main", stack) then | |
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 | |
+ itemstack:add_wear(65535 / 20) | |
+ player_inv:add_item("main", stack) | |
end | |
return itemstack | |
end, | |
@@ -404,8 +149,8 @@ minetest.register_tool("wrench:wrench", { | |
minetest.register_craft({ | |
output = "wrench:wrench", | |
recipe = { | |
- {"default:steel_ingot","","default:steel_ingot"}, | |
- {"","default:steel_ingot",""}, | |
- {"","default:steel_ingot",""}, | |
+ {"default:steel_ingot", "", "default:steel_ingot"}, | |
+ {"", "default:steel_ingot", ""}, | |
+ {"", "default:steel_ingot", ""}, | |
}, | |
}) | |
diff --git a/wrench/support.lua b/wrench/support.lua | |
new file mode 100644 | |
index 0000000..dc0cace | |
--- /dev/null | |
+++ b/wrench/support.lua | |
@@ -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_STRING = 1 | |
+wrench.META_TYPE_FLOAT = 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 | |
+ | |
diff --git a/wrench/technic.lua b/wrench/technic.lua | |
new file mode 100644 | |
index 0000000..4122e35 | |
--- /dev/null | |
+++ b/wrench/technic.lua | |
@@ -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 | |
+ |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment