TechDudie
2021-02-09 43acec290067f9aca534647d46ba1f13cfeb377a
technic/machines/HV/forcefield.lua
@@ -17,7 +17,7 @@
minetest.register_craft({
   output = "technic:forcefield_emitter_off",
   recipe = {
      {"default:mese",         "technic:motor",          "default:mese"        },
      {"default:mese",         "basic_materials:motor",          "default:mese"        },
      {"technic:deployer_off", "technic:machine_casing", "technic:deployer_off"},
      {"default:mese",         "technic:hv_cable",       "default:mese"        },
   }
@@ -42,7 +42,7 @@
--  |          |
--   \___/\___/
local function update_forcefield(pos, meta, active, first)
local function update_forcefield(pos, meta, active)
   local shape = meta:get_int("shape")
   local range = meta:get_int("range")
   local vm = VoxelManip()
@@ -86,11 +86,6 @@
   vm:set_data(data)
   vm:update_liquids()
   vm:write_to_map()
   -- update_map is very slow, but if we don't call it we'll
   -- get phantom blocks on the client.
   if not active or first then
      vm:update_map()
   end
end
local function set_forcefield_formspec(meta)
@@ -126,6 +121,12 @@
end
local forcefield_receive_fields = function(pos, formname, fields, sender)
   local player_name = sender:get_player_name()
   if minetest.is_protected(pos, player_name) then
      minetest.chat_send_player(player_name, "You are not allowed to edit this!")
      minetest.record_protection_violation(pos, player_name)
      return
   end
   local meta = minetest.get_meta(pos)
   local range = nil
   if fields.range then
@@ -273,13 +274,11 @@
         technic.swap_node(pos, "technic:forcefield_emitter_off")
      end
   elseif eu_input >= power_requirement then
      local first = false
      if node.name == "technic:forcefield_emitter_off" then
         first = true
         technic.swap_node(pos, "technic:forcefield_emitter_on")
         meta:set_string("infotext", S("%s Active"):format(machine_name))
      end
      update_forcefield(pos, meta, true, first)
      update_forcefield(pos, meta, true)
   end
end