summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShadowNinja <shadowninja@minetest.net>2013-12-10 20:14:39 -0500
committerShadowNinja <shadowninja@minetest.net>2013-12-10 20:14:39 -0500
commitf3d8b47b20feac740057984a70f93f38252619eb (patch)
tree840fe002e0e623b0794770f8bff7bf7883f4a805
parent818a0e5ff048a24570026b5905cd6e2113cd91c9 (diff)
Add support for minetest.swap_node
-rw-r--r--technic/helpers.lua24
-rw-r--r--technic/init.lua21
-rw-r--r--technic/machines/HV/forcefield.lua6
-rw-r--r--technic/machines/HV/nuclear_reactor.lua4
-rw-r--r--technic/machines/LV/cnc.lua6
-rw-r--r--technic/machines/LV/coal_alloy_furnace.lua6
-rw-r--r--technic/machines/LV/compressor.lua6
-rw-r--r--technic/machines/LV/extractor.lua6
-rw-r--r--technic/machines/LV/geothermal.lua4
-rw-r--r--technic/machines/LV/water_mill.lua4
-rw-r--r--technic/machines/MV/power_radiator.lua6
-rw-r--r--technic/machines/other/constructor.lua12
-rw-r--r--technic/machines/other/frames.lua2
-rw-r--r--technic/machines/register/alloy_furnace.lua6
-rw-r--r--technic/machines/register/battery_box.lua2
-rw-r--r--technic/machines/register/electric_furnace.lua6
-rw-r--r--technic/machines/register/generator.lua6
-rw-r--r--technic/machines/register/grinder.lua6
-rw-r--r--technic/tools/sonic_screwdriver.lua9
19 files changed, 71 insertions, 71 deletions
diff --git a/technic/helpers.lua b/technic/helpers.lua
index 3fee5bb..459b482 100644
--- a/technic/helpers.lua
+++ b/technic/helpers.lua
@@ -8,3 +8,27 @@ end
function set_item_meta (table)
return minetest.serialize(table)
end
+
+function has_locked_chest_privilege(meta, player)
+ if player:get_player_name() ~= meta:get_string("owner") then
+ return false
+ end
+ return true
+end
+
+minetest.swap_node = minetest.swap_node or function(pos, node)
+ local oldmeta = minetest.get_meta(pos):to_table()
+ minetest.set_node(pos, node)
+ minetest.get_meta(pos):from_table(oldmeta)
+end
+
+-- Only changes name, keeps other params
+function technic.swap_node(pos, name)
+ local node = minetest.get_node(pos)
+ if node.name ~= name then
+ node.name = name
+ minetest.swap_node(pos, node)
+ end
+ return node.name
+end
+
diff --git a/technic/init.lua b/technic/init.lua
index 001ae5f..7d41b89 100644
--- a/technic/init.lua
+++ b/technic/init.lua
@@ -40,27 +40,6 @@ dofile(modpath.."/tools/init.lua")
-- Aliases for legacy node/item names
dofile(modpath.."/legacy.lua")
-function has_locked_chest_privilege(meta, player)
- if player:get_player_name() ~= meta:get_string("owner") then
- return false
- end
- return true
-end
-
--- Swap nodes out. Return the node name.
-function hacky_swap_node(pos, name)
- local node = minetest.get_node(pos)
- if node.name ~= name then
- local meta = minetest.get_meta(pos)
- local meta_table = meta:to_table()
- node.name = name
- minetest.set_node(pos, node)
- meta = minetest.get_meta(pos)
- meta:from_table(meta_table)
- end
- return node.name
-end
-
if minetest.setting_get("log_mod") then
print(S("[Technic] Loaded in %f seconds"):format(os.clock() - load_start))
end
diff --git a/technic/machines/HV/forcefield.lua b/technic/machines/HV/forcefield.lua
index 1c5e39e..41adf94 100644
--- a/technic/machines/HV/forcefield.lua
+++ b/technic/machines/HV/forcefield.lua
@@ -178,7 +178,7 @@ minetest.register_abm({
if node.name == "technic:forcefield_emitter_on" then
meta:set_int("HV_EU_demand", 0)
update_forcefield(pos, meta:get_int("range"), false)
- hacky_swap_node(pos, "technic:forcefield_emitter_off")
+ technic.swap_node(pos, "technic:forcefield_emitter_off")
meta:set_string("infotext", S("%s Disabled"):format(machine_name))
return
end
@@ -186,11 +186,11 @@ minetest.register_abm({
meta:set_string("infotext", S("%s Unpowered"):format(machine_name))
if node.name == "technic:forcefield_emitter_on" then
update_forcefield(pos, meta:get_int("range"), false)
- hacky_swap_node(pos, "technic:forcefield_emitter_off")
+ technic.swap_node(pos, "technic:forcefield_emitter_off")
end
elseif eu_input >= power_requirement then
if node.name == "technic:forcefield_emitter_off" then
- hacky_swap_node(pos, "technic:forcefield_emitter_on")
+ technic.swap_node(pos, "technic:forcefield_emitter_on")
meta:set_string("infotext", S("%s Active"):format(machine_name))
end
update_forcefield(pos, meta:get_int("range"), true)
diff --git a/technic/machines/HV/nuclear_reactor.lua b/technic/machines/HV/nuclear_reactor.lua
index afe0b5a..248d0c0 100644
--- a/technic/machines/HV/nuclear_reactor.lua
+++ b/technic/machines/HV/nuclear_reactor.lua
@@ -214,7 +214,7 @@ minetest.register_abm({
if correct_fuel_count == 6 and
check_reactor_structure(pos) then
meta:set_int("burn_time", 1)
- hacky_swap_node(pos, "technic:hv_nuclear_reactor_core_active")
+ technic.swap_node(pos, "technic:hv_nuclear_reactor_core_active")
meta:set_int("HV_EU_supply", power_supply)
for idx, srcstack in pairs(srclist) do
srcstack:take_item()
@@ -226,7 +226,7 @@ minetest.register_abm({
meta:set_int("HV_EU_supply", 0)
meta:set_int("burn_time", 0)
meta:set_string("infotext", S("%s Idle"):format(machine_name))
- hacky_swap_node(pos, "technic:hv_nuclear_reactor_core")
+ technic.swap_node(pos, "technic:hv_nuclear_reactor_core")
elseif burn_time > 0 then
damage_nearby_players(pos)
if not check_reactor_structure(pos) then
diff --git a/technic/machines/LV/cnc.lua b/technic/machines/LV/cnc.lua
index 146c1a4..10e9391 100644
--- a/technic/machines/LV/cnc.lua
+++ b/technic/machines/LV/cnc.lua
@@ -200,17 +200,17 @@ minetest.register_abm({
if inv:is_empty("src") or
(not minetest.registered_nodes[result]) or
(not inv:room_for_item("dst", result)) then
- hacky_swap_node(pos, machine_node)
+ technic.swap_node(pos, machine_node)
meta:set_string("infotext", S("%s Idle"):format(machine_name))
meta:set_string("cnc_product", "")
return
end
if eu_input < demand then
- hacky_swap_node(pos, machine_node)
+ technic.swap_node(pos, machine_node)
meta:set_string("infotext", S("%s Unpowered"):format(machine_name))
elseif eu_input >= demand then
- hacky_swap_node(pos, machine_node.."_active")
+ technic.swap_node(pos, machine_node.."_active")
meta:set_string("infotext", S("%s Active"):format(machine_name))
meta:set_int("src_time", meta:get_int("src_time") + 1)
if meta:get_int("src_time") >= 3 then -- 3 ticks per output
diff --git a/technic/machines/LV/coal_alloy_furnace.lua b/technic/machines/LV/coal_alloy_furnace.lua
index ad34208..36307b7 100644
--- a/technic/machines/LV/coal_alloy_furnace.lua
+++ b/technic/machines/LV/coal_alloy_furnace.lua
@@ -121,7 +121,7 @@ minetest.register_abm({
local percent = math.floor(meta:get_float("fuel_time") /
meta:get_float("fuel_totaltime") * 100)
meta:set_string("infotext", S("%s Active"):format(machine_name).." ("..percent.."%)")
- hacky_swap_node(pos, "technic:coal_alloy_furnace_active")
+ technic.swap_node(pos, "technic:coal_alloy_furnace_active")
meta:set_string("formspec",
"size[8,9]"..
"label[0,0;"..machine_name.."]"..
@@ -144,7 +144,7 @@ minetest.register_abm({
if recipe then
if was_active then
meta:set_string("infotext", "Furnace is empty")
- hacky_swap_node(pos, "technic:coal_alloy_furnace")
+ technic.swap_node(pos, "technic:coal_alloy_furnace")
meta:set_string("formspec", formspec)
end
return
@@ -160,7 +160,7 @@ minetest.register_abm({
if fuel.time <= 0 then
meta:set_string("infotext", S("%s Out Of Fuel"):format(machine_name))
- hacky_swap_node(pos, "technic:coal_alloy_furnace")
+ technic.swap_node(pos, "technic:coal_alloy_furnace")
meta:set_string("formspec", formspec)
return
end
diff --git a/technic/machines/LV/compressor.lua b/technic/machines/LV/compressor.lua
index dd8c792..91b2e1d 100644
--- a/technic/machines/LV/compressor.lua
+++ b/technic/machines/LV/compressor.lua
@@ -125,7 +125,7 @@ minetest.register_abm({
end
if empty or (not result) or
(not inv:room_for_item("dst", result)) then
- hacky_swap_node(pos, machine_node)
+ technic.swap_node(pos, machine_node)
meta:set_string("infotext", S("%s Idle"):format(machine_name))
meta:set_int("LV_EU_demand", 0)
meta:set_int("src_time", 0)
@@ -133,10 +133,10 @@ minetest.register_abm({
end
if eu_input < demand then
- hacky_swap_node(pos, machine_node)
+ technic.swap_node(pos, machine_node)
meta:set_string("infotext", S("%s Unpowered"):format(machine_name))
elseif eu_input >= demand then
- hacky_swap_node(pos, machine_node.."_active")
+ technic.swap_node(pos, machine_node.."_active")
meta:set_string("infotext", S("%s Active"):format(machine_name))
meta:set_int("src_time", meta:get_int("src_time") + 1)
diff --git a/technic/machines/LV/extractor.lua b/technic/machines/LV/extractor.lua
index f6df532..c4d8ad3 100644
--- a/technic/machines/LV/extractor.lua
+++ b/technic/machines/LV/extractor.lua
@@ -132,7 +132,7 @@ minetest.register_abm({
end
if inv:is_empty("src") or (not recipe) or (not result) or
(not inv:room_for_item("dst", result)) then
- hacky_swap_node(pos, machine_node)
+ technic.swap_node(pos, machine_node)
meta:set_string("infotext", S("%s Idle"):format(machine_name))
meta:set_int("LV_EU_demand", 0)
return
@@ -140,11 +140,11 @@ minetest.register_abm({
if eu_input < demand then
-- unpowered - go idle
- hacky_swap_node(pos, machine_node)
+ technic.swap_node(pos, machine_node)
meta:set_string("infotext", S("%s Unpowered"):format(machine_name))
elseif eu_input >= demand then
-- Powered
- hacky_swap_node(pos, machine_node.."_active")
+ technic.swap_node(pos, machine_node.."_active")
meta:set_string("infotext", S("%s Active"):format(machine_name))
meta:set_int("src_time", meta:get_int("src_time") + 1)
diff --git a/technic/machines/LV/geothermal.lua b/technic/machines/LV/geothermal.lua
index 6066192..855593c 100644
--- a/technic/machines/LV/geothermal.lua
+++ b/technic/machines/LV/geothermal.lua
@@ -99,11 +99,11 @@ minetest.register_abm({
S("Geothermal Generator").." ("..production_level.."%)")
if production_level > 0 and minetest.get_node(pos).name == "technic:geothermal" then
- hacky_swap_node (pos, "technic:geothermal_active")
+ technic.swap_node (pos, "technic:geothermal_active")
return
end
if production_level == 0 then
- hacky_swap_node(pos, "technic:geothermal")
+ technic.swap_node(pos, "technic:geothermal")
meta:set_int("LV_EU_supply", 0)
end
end
diff --git a/technic/machines/LV/water_mill.lua b/technic/machines/LV/water_mill.lua
index bf67268..90a5bae 100644
--- a/technic/machines/LV/water_mill.lua
+++ b/technic/machines/LV/water_mill.lua
@@ -89,12 +89,12 @@ minetest.register_abm({
if production_level > 0 and
minetest.get_node(pos).name == "technic:water_mill" then
- hacky_swap_node (pos, "technic:water_mill_active")
+ technic.swap_node (pos, "technic:water_mill_active")
meta:set_int("LV_EU_supply", 0)
return
end
if production_level == 0 then
- hacky_swap_node(pos, "technic:water_mill")
+ technic.swap_node(pos, "technic:water_mill")
end
end
})
diff --git a/technic/machines/MV/power_radiator.lua b/technic/machines/MV/power_radiator.lua
index 2617578..6462606 100644
--- a/technic/machines/MV/power_radiator.lua
+++ b/technic/machines/MV/power_radiator.lua
@@ -43,7 +43,7 @@ end
technic.inductive_on_punch_off = function(pos, eu_charge, swapnode)
local meta = minetest.get_meta(pos)
if meta:get_string("has_supply") ~= "" then
- hacky_swap_node(pos, swapnode)
+ technic.swap_node(pos, swapnode)
meta:set_int("active", 1)
meta:set_int("EU_charge",eu_charge)
--print("-----------")
@@ -56,7 +56,7 @@ end
technic.inductive_on_punch_on = function(pos, eu_charge, swapnode)
local meta = minetest.get_meta(pos)
- hacky_swap_node(pos, swapnode)
+ technic.swap_node(pos, swapnode)
meta:set_int("active", 0)
meta:set_int("EU_charge",eu_charge)
--print("-----------")
@@ -82,7 +82,7 @@ local shutdown_inductive_appliances = function(pos)
local nodename = minetest.get_node(pos1).name
-- Swap the node and make sure it is off and unpowered
if string.sub(nodename, -7) == "_active" then
- hacky_swap_node(pos1, string.sub(nodename, 1, -8))
+ technic.swap_node(pos1, string.sub(nodename, 1, -8))
meta1:set_int("active", 0)
meta1:set_int("EU_charge", 0)
end
diff --git a/technic/machines/other/constructor.lua b/technic/machines/other/constructor.lua
index f4ccd09..f4f541f 100644
--- a/technic/machines/other/constructor.lua
+++ b/technic/machines/other/constructor.lua
@@ -34,7 +34,7 @@ mk1_on = function(pos, node)
if node.param2==0 then pos1.z=pos1.z-1 end
if node.name == "technic:constructor_mk1_off" then
- hacky_swap_node(pos,"technic:constructor_mk1_on")
+ technic.swap_node(pos,"technic:constructor_mk1_on")
nodeupdate(pos)
local node1=minetest.get_node(pos1)
deploy_node (inv,"slot1",pos1,node1,node)
@@ -43,7 +43,7 @@ end
mk1_off = function(pos, node)
if node.name == "technic:constructor_mk1_on" then
- hacky_swap_node(pos,"technic:constructor_mk1_off")
+ technic.swap_node(pos,"technic:constructor_mk1_off")
nodeupdate(pos)
end
end
@@ -114,7 +114,7 @@ mk2_on = function(pos, node)
if node.param2==0 then pos1.z=pos1.z-1 pos2.z=pos2.z-2 end
if node.name == "technic:constructor_mk2_off" then
- hacky_swap_node(pos,"technic:constructor_mk2_on")
+ technic.swap_node(pos,"technic:constructor_mk2_on")
nodeupdate(pos)
local node1=minetest.get_node(pos1)
deploy_node (inv,"slot1",pos1,node1,node)
@@ -125,7 +125,7 @@ end
mk2_off = function(pos, node)
if node.name == "technic:constructor_mk2_on" then
- hacky_swap_node(pos,"technic:constructor_mk2_off")
+ technic.swap_node(pos,"technic:constructor_mk2_off")
nodeupdate(pos)
end
end
@@ -212,7 +212,7 @@ mk3_on = function(pos, node)
if node.param2==0 then pos1.z=pos1.z-1 pos2.z=pos2.z-2 pos3.z=pos3.z-3 pos4.z=pos4.z-4 end
if node.name == "technic:constructor_mk3_off" then
- hacky_swap_node(pos,"technic:constructor_mk3_on")
+ technic.swap_node(pos,"technic:constructor_mk3_on")
nodeupdate(pos)
local node1=minetest.get_node(pos1)
deploy_node (inv,"slot1",pos1,node1,node)
@@ -227,7 +227,7 @@ end
mk3_off = function(pos, node)
if node.name == "technic:constructor_mk3_on" then
- hacky_swap_node(pos,"technic:constructor_mk3_off")
+ technic.swap_node(pos,"technic:constructor_mk3_off")
nodeupdate(pos)
end
end
diff --git a/technic/machines/other/frames.lua b/technic/machines/other/frames.lua
index 46cf7bf..9eaf63e 100644
--- a/technic/machines/other/frames.lua
+++ b/technic/machines/other/frames.lua
@@ -342,7 +342,7 @@ local function swap_template(pos, new)
local meta = minetest.get_meta(pos)
local saved_node = meta:get_string("saved_node")
meta:set_string("saved_node", "")
- hacky_swap_node(pos, new)
+ technic.swap_node(pos, new)
local meta = minetest.get_meta(pos)
meta:set_string("saved_node", saved_node)
end
diff --git a/technic/machines/register/alloy_furnace.lua b/technic/machines/register/alloy_furnace.lua
index 4bb61fd..64080c1 100644
--- a/technic/machines/register/alloy_furnace.lua
+++ b/technic/machines/register/alloy_furnace.lua
@@ -205,7 +205,7 @@ function technic.register_alloy_furnace(data)
end
if not result or
not inv:room_for_item("dst", result) then
- hacky_swap_node(pos, machine_node)
+ technic.swap_node(pos, machine_node)
meta:set_string("infotext", S("%s Idle"):format(machine_name))
meta:set_int(tier.."_EU_demand", 0)
return
@@ -213,11 +213,11 @@ function technic.register_alloy_furnace(data)
if eu_input < machine_demand[EU_upgrade+1] then
-- Unpowered - go idle
- hacky_swap_node(pos, machine_node)
+ technic.swap_node(pos, machine_node)
meta:set_string("infotext", S("%s Unpowered"):format(machine_name))
elseif eu_input >= machine_demand[EU_upgrade+1] then
-- Powered
- hacky_swap_node(pos, machine_node.."_active")
+ technic.swap_node(pos, machine_node.."_active")
meta:set_string("infotext", S("%s Active"):format(machine_name))
meta:set_int("src_time", meta:get_int("src_time") + 1)
if meta:get_int("src_time") == data.cook_time then
diff --git a/technic/machines/register/battery_box.lua b/technic/machines/register/battery_box.lua
index 3124635..f9bc893 100644
--- a/technic/machines/register/battery_box.lua
+++ b/technic/machines/register/battery_box.lua
@@ -126,7 +126,7 @@ function technic.register_battery_box(data)
charge_count = math.max(charge_count, 0)
local last_count = meta:get_float("last_side_shown")
if charge_count ~= last_count then
- hacky_swap_node(pos,"technic:"..ltier.."_battery_box"..charge_count)
+ technic.swap_node(pos,"technic:"..ltier.."_battery_box"..charge_count)
meta:set_float("last_side_shown", charge_count)
end
diff --git a/technic/machines/register/electric_furnace.lua b/technic/machines/register/electric_furnace.lua
index 7420ffe..36e4f6d 100644
--- a/technic/machines/register/electric_furnace.lua
+++ b/technic/machines/register/electric_furnace.lua
@@ -142,18 +142,18 @@ function technic.register_electric_furnace(data)
if not result or result.time == 0 or
not inv:room_for_item("dst", result.item) then
meta:set_int(tier.."_EU_demand", 0)
- hacky_swap_node(pos, machine_node)
+ technic.swap_node(pos, machine_node)
meta:set_string("infotext", S("%s Idle"):format(machine_name))
return
end
if eu_input < machine_demand[EU_upgrade+1] then
-- Unpowered - go idle
- hacky_swap_node(pos, machine_node)
+ technic.swap_node(pos, machine_node)
meta:set_string("infotext", S("%s Unpowered"):format(machine_name))
elseif eu_input >= machine_demand[EU_upgrade+1] then
-- Powered
- hacky_swap_node(pos, machine_node.."_active")
+ technic.swap_node(pos, machine_node.."_active")
meta:set_string("infotext", S("%s Active"):format(machine_name))
technic.smelt_item(meta, result, data.speed)
diff --git a/technic/machines/register/generator.lua b/technic/machines/register/generator.lua
index 0d2ecd3..3f2f118 100644
--- a/technic/machines/register/generator.lua
+++ b/technic/machines/register/generator.lua
@@ -99,7 +99,7 @@ function technic.register_generator(data)
fuel = minetest.get_craft_result({method = "fuel", width = 1, items = fuellist})
if not fuel or fuel.time == 0 then
meta:set_string("infotext", S("%s Out Of Fuel"):format(desc))
- hacky_swap_node(pos, "technic:"..ltier.."_generator")
+ technic.swap_node(pos, "technic:"..ltier.."_generator")
return
end
meta:set_int("burn_time", fuel.time)
@@ -107,10 +107,10 @@ function technic.register_generator(data)
local stack = inv:get_stack("src", 1)
stack:take_item()
inv:set_stack("src", 1, stack)
- hacky_swap_node(pos, "technic:"..ltier.."_generator_active")
+ technic.swap_node(pos, "technic:"..ltier.."_generator_active")
meta:set_int(tier.."_EU_supply", data.supply)
else
- hacky_swap_node(pos, "technic:"..ltier.."_generator")
+ technic.swap_node(pos, "technic:"..ltier.."_generator")
meta:set_int(tier.."_EU_supply", 0)
end
end
diff --git a/technic/machines/register/grinder.lua b/technic/machines/register/grinder.lua
index 66f4771..24072e1 100644
--- a/technic/machines/register/grinder.lua
+++ b/technic/machines/register/grinder.lua
@@ -120,7 +120,7 @@ function technic.register_grinder(data)
local result = technic.get_grinder_recipe(inv:get_stack("src", 1))
if not result then
- hacky_swap_node(pos, machine_node)
+ technic.swap_node(pos, machine_node)
meta:set_string("infotext", S("%s Idle"):format(machine_name))
meta:set_int(tier.."_EU_demand", 0)
return
@@ -128,11 +128,11 @@ function technic.register_grinder(data)
if eu_input < machine_demand[EU_upgrade+1] then
-- Unpowered - go idle
- hacky_swap_node(pos, machine_node)
+ technic.swap_node(pos, machine_node)
meta:set_string("infotext", S("%s Unpowered"):format(machine_name))
elseif eu_input >= machine_demand[EU_upgrade+1] then
-- Powered
- hacky_swap_node(pos, machine_node.."_active")
+ technic.swap_node(pos, machine_node.."_active")
meta:set_string("infotext", S("%s Active"):format(machine_name))
meta:set_int("src_time", meta:get_int("src_time") + 1)
diff --git a/technic/tools/sonic_screwdriver.lua b/technic/tools/sonic_screwdriver.lua
index 32f29d6..1639834 100644
--- a/technic/tools/sonic_screwdriver.lua
+++ b/technic/tools/sonic_screwdriver.lua
@@ -44,12 +44,8 @@ minetest.register_tool("technic:sonic_screwdriver", {
if minetest.is_protected(pos, user:get_player_name()) then
minetest.record_protection_violation(pos, user:get_player_name())
else
- local meta = minetest.get_meta(pos)
- local meta0 = meta:to_table()
node.param2 = p
- minetest.set_node(pos, node)
- meta = minetest.get_meta(pos)
- meta:from_table(meta0)
+ minetest.swap_node(pos, node)
meta1.charge = meta1.charge - 100
itemstack:set_metadata(set_item_meta(meta1))
@@ -66,5 +62,6 @@ minetest.register_craft({
{"default:diamond"},
{"technic:battery"},
{"technic:stainless_steel_ingot"}
- }
+ }
})
+