mirror of
https://github.com/sys4-fr/server-nalc.git
synced 2025-06-28 06:11:47 +02:00
Updated Mesecons and Pipeworks mods
- Updated pipeworks because of a bug related to vacuuming tubes, which has caused at least 5 crashs. - Updated mesecons too, because the mods are often used together.
This commit is contained in:
@ -6,18 +6,6 @@ function mesecon.move_node(pos, newpos)
|
||||
minetest.get_meta(pos):from_table(meta)
|
||||
end
|
||||
|
||||
--[[ new functions:
|
||||
mesecon.flattenrules(allrules)
|
||||
mesecon.rule2bit(findrule, allrules)
|
||||
mesecon.rule2meta(findrule, allrules)
|
||||
dec2bin(n)
|
||||
mesecon.getstate(nodename, states)
|
||||
mesecon.getbinstate(nodename, states)
|
||||
mesecon.get_bit(binary, bit)
|
||||
mesecon.set_bit(binary, bit, value)
|
||||
mesecon.invertRule(r)
|
||||
--]]
|
||||
|
||||
function mesecon.flattenrules(allrules)
|
||||
--[[
|
||||
{
|
||||
@ -71,7 +59,6 @@ end
|
||||
|
||||
function mesecon.rule2metaindex(findrule, allrules)
|
||||
--get the metarule the rule is in, or allrules
|
||||
|
||||
if allrules[1].x then
|
||||
return nil
|
||||
end
|
||||
@ -90,6 +77,8 @@ function mesecon.rule2metaindex(findrule, allrules)
|
||||
end
|
||||
|
||||
function mesecon.rule2meta(findrule, allrules)
|
||||
if #allrules == 0 then return {} end
|
||||
|
||||
local index = mesecon.rule2metaindex(findrule, allrules)
|
||||
if index == nil then
|
||||
if allrules[1].x then
|
||||
@ -101,21 +90,12 @@ function mesecon.rule2meta(findrule, allrules)
|
||||
return allrules[index]
|
||||
end
|
||||
|
||||
if convert_base then
|
||||
print(
|
||||
"base2dec is tonumber(num,base1)\n"..
|
||||
"commonlib needs dec2base(num,base2)\n"..
|
||||
"and it needs base2base(num,base1,base2),\n"..
|
||||
"which is dec2base(tonumber(num,base1),base2)"
|
||||
)
|
||||
else
|
||||
function dec2bin(n)
|
||||
local x, y = math.floor(n / 2), n % 2
|
||||
if (n > 1) then
|
||||
return dec2bin(x)..y
|
||||
else
|
||||
return ""..y
|
||||
end
|
||||
function mesecon.dec2bin(n)
|
||||
local x, y = math.floor(n / 2), n % 2
|
||||
if (n > 1) then
|
||||
return mesecon.dec2bin(x)..y
|
||||
else
|
||||
return ""..y
|
||||
end
|
||||
end
|
||||
|
||||
@ -129,7 +109,7 @@ function mesecon.getstate(nodename, states)
|
||||
end
|
||||
|
||||
function mesecon.getbinstate(nodename, states)
|
||||
return dec2bin(mesecon.getstate(nodename, states)-1)
|
||||
return mesecon.dec2bin(mesecon.getstate(nodename, states)-1)
|
||||
end
|
||||
|
||||
function mesecon.get_bit(binary,bit)
|
||||
@ -141,11 +121,11 @@ end
|
||||
function mesecon.set_bit(binary,bit,value)
|
||||
if value == "1" then
|
||||
if not mesecon.get_bit(binary,bit) then
|
||||
return dec2bin(tonumber(binary,2)+math.pow(2,bit-1))
|
||||
return mesecon.dec2bin(tonumber(binary,2)+math.pow(2,bit-1))
|
||||
end
|
||||
elseif value == "0" then
|
||||
if mesecon.get_bit(binary,bit) then
|
||||
return dec2bin(tonumber(binary,2)-math.pow(2,bit-1))
|
||||
return mesecon.dec2bin(tonumber(binary,2)-math.pow(2,bit-1))
|
||||
end
|
||||
end
|
||||
return binary
|
||||
|
@ -78,7 +78,7 @@ function register_gate(name, inputnumber, assess, recipe)
|
||||
},{
|
||||
tiles = {"jeija_microcontroller_bottom.png^".."jeija_gate_off.png^"..
|
||||
"jeija_gate_"..name..".png"},
|
||||
groups = {dig_immediate = 2},
|
||||
groups = {dig_immediate = 2, overheat = 1},
|
||||
mesecons = { receptor = {
|
||||
state = "off",
|
||||
rules = gate_get_output_rules
|
||||
@ -89,7 +89,7 @@ function register_gate(name, inputnumber, assess, recipe)
|
||||
},{
|
||||
tiles = {"jeija_microcontroller_bottom.png^".."jeija_gate_on.png^"..
|
||||
"jeija_gate_"..name..".png"},
|
||||
groups = {dig_immediate = 2, not_in_creative_inventory = 1},
|
||||
groups = {dig_immediate = 2, not_in_creative_inventory = 1, overheat = 1},
|
||||
mesecons = { receptor = {
|
||||
state = "on",
|
||||
rules = gate_get_output_rules
|
||||
|
@ -559,7 +559,6 @@ for d = 0, 1 do
|
||||
node_box = node_box,
|
||||
on_construct = reset_meta,
|
||||
on_receive_fields = on_receive_fields,
|
||||
on_timer = handle_timer,
|
||||
sounds = default.node_sound_stone_defaults(),
|
||||
mesecons = mesecons,
|
||||
digiline = digiline,
|
||||
@ -600,7 +599,7 @@ minetest.register_node(BASENAME .. "_burnt", {
|
||||
groups = {dig_immediate=2, not_in_creative_inventory=1},
|
||||
drop = BASENAME.."0000",
|
||||
sunlight_propagates = true,
|
||||
selection_box = selectionbox,
|
||||
selection_box = selection_box,
|
||||
node_box = node_box,
|
||||
on_construct = reset_meta,
|
||||
on_receive_fields = on_receive_fields,
|
||||
|
@ -22,18 +22,12 @@ pp_on_timer = function (pos, elapsed)
|
||||
if objs[1] == nil and node.name == basename .. "_on" then
|
||||
minetest.add_node(pos, {name = basename .. "_off"})
|
||||
mesecon.receptor_off(pos, mesecon.rules.pplate)
|
||||
-- force deactivation of mesecon two blocks below (hacky)
|
||||
if not mesecon.connected_to_receptor(two_below) then
|
||||
mesecon.turnoff(two_below)
|
||||
end
|
||||
else
|
||||
for k, obj in pairs(objs) do
|
||||
local objpos = obj:getpos()
|
||||
if objpos.y > pos.y-1 and objpos.y < pos.y then
|
||||
minetest.add_node(pos, {name = basename .. "_on"})
|
||||
mesecon.receptor_on(pos, mesecon.rules.pplate )
|
||||
-- force activation of mesecon two blocks below (hacky)
|
||||
mesecon.turnon(two_below)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
Reference in New Issue
Block a user