forked from minetest-mods/MoreMesecons
Compare commits
4 Commits
Author | SHA1 | Date | |
---|---|---|---|
e5cdeef141 | |||
182eb9822a | |||
021100b3d4 | |||
227cba54b2 |
@ -55,7 +55,7 @@ local function resolve_commands(commands, pos)
|
|||||||
local nearest = nil
|
local nearest = nil
|
||||||
local min_distance = math.huge
|
local min_distance = math.huge
|
||||||
local players = minetest.get_connected_players()
|
local players = minetest.get_connected_players()
|
||||||
for index, player in pairs(players) do
|
for _, player in pairs(players) do
|
||||||
local distance = vector.distance(pos, player:getpos())
|
local distance = vector.distance(pos, player:getpos())
|
||||||
if distance < min_distance then
|
if distance < min_distance then
|
||||||
min_distance = distance
|
min_distance = distance
|
||||||
|
@ -5,7 +5,7 @@ local nodebox = {
|
|||||||
|
|
||||||
local function signalchanger_get_output_rules(node)
|
local function signalchanger_get_output_rules(node)
|
||||||
local rules = {{x=-1, y=0, z=0}}
|
local rules = {{x=-1, y=0, z=0}}
|
||||||
for i = 0, node.param2 do
|
for _ = 0, node.param2 do
|
||||||
rules = mesecon.rotate_rules_left(rules)
|
rules = mesecon.rotate_rules_left(rules)
|
||||||
end
|
end
|
||||||
return rules
|
return rules
|
||||||
@ -13,7 +13,7 @@ end
|
|||||||
|
|
||||||
local function signalchanger_get_input_rules(node)
|
local function signalchanger_get_input_rules(node)
|
||||||
local rules = {{x=0, y=0, z=-1, name="input_on"}, {x=0, y=0, z=1, name="input_off"}, {x=1, y=0, z=0, name="input_signal"}}
|
local rules = {{x=0, y=0, z=-1, name="input_on"}, {x=0, y=0, z=1, name="input_off"}, {x=1, y=0, z=0, name="input_signal"}}
|
||||||
for i = 0, node.param2 do
|
for _ = 0, node.param2 do
|
||||||
rules = mesecon.rotate_rules_left(rules)
|
rules = mesecon.rotate_rules_left(rules)
|
||||||
end
|
end
|
||||||
return rules
|
return rules
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
local function dual_delayer_get_input_rules(node)
|
local function dual_delayer_get_input_rules(node)
|
||||||
local rules = {{x=1, y=0, z=0}}
|
local rules = {{x=1, y=0, z=0}}
|
||||||
for i = 0, node.param2 do
|
for _ = 0, node.param2 do
|
||||||
rules = mesecon.rotate_rules_left(rules)
|
rules = mesecon.rotate_rules_left(rules)
|
||||||
end
|
end
|
||||||
return rules
|
return rules
|
||||||
@ -8,7 +8,7 @@ end
|
|||||||
|
|
||||||
local function dual_delayer_get_output_rules(node)
|
local function dual_delayer_get_output_rules(node)
|
||||||
local rules = {{x=0, y=0, z=1}, {x=0, y=0, z=-1}}
|
local rules = {{x=0, y=0, z=1}, {x=0, y=0, z=-1}}
|
||||||
for i = 0, node.param2 do
|
for _ = 0, node.param2 do
|
||||||
rules = mesecon.rotate_rules_left(rules)
|
rules = mesecon.rotate_rules_left(rules)
|
||||||
end
|
end
|
||||||
return rules
|
return rules
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
local injector_controller_get_output_rules = function(node)
|
local injector_controller_get_output_rules = function(node)
|
||||||
local rules = {{x = 0, y = 0, z = 1}}
|
local rules = {{x = 0, y = 0, z = 1}}
|
||||||
for i = 0, node.param2 do
|
for _ = 0, node.param2 do
|
||||||
rules = mesecon.rotate_rules_left(rules)
|
rules = mesecon.rotate_rules_left(rules)
|
||||||
end
|
end
|
||||||
return rules
|
return rules
|
||||||
@ -10,7 +10,7 @@ local injector_controller_get_input_rules = function(node)
|
|||||||
local rules = {{x = 0, y = 0, z = -1},
|
local rules = {{x = 0, y = 0, z = -1},
|
||||||
{x = 1, y = 0, z = 0},
|
{x = 1, y = 0, z = 0},
|
||||||
{x = -1, y = 0, z = 0}}
|
{x = -1, y = 0, z = 0}}
|
||||||
for i = 0, node.param2 do
|
for _ = 0, node.param2 do
|
||||||
rules = mesecon.rotate_rules_left(rules)
|
rules = mesecon.rotate_rules_left(rules)
|
||||||
end
|
end
|
||||||
return rules
|
return rules
|
||||||
|
@ -2,7 +2,7 @@ local function mesechest_get_output_rules(node)
|
|||||||
local rules = {{x=-1, y=0, z=0},
|
local rules = {{x=-1, y=0, z=0},
|
||||||
{x=0, y=0, z=-1},
|
{x=0, y=0, z=-1},
|
||||||
{x=0, y=0, z=1}}
|
{x=0, y=0, z=1}}
|
||||||
for i = 0, node.param2 do
|
for _ = 0, node.param2 do
|
||||||
rules = mesecon.rotate_rules_left(rules)
|
rules = mesecon.rotate_rules_left(rules)
|
||||||
end
|
end
|
||||||
return rules
|
return rules
|
||||||
|
@ -4,7 +4,7 @@ local kill_nearest_player = function(pos)
|
|||||||
-- Search the nearest player
|
-- Search the nearest player
|
||||||
local nearest
|
local nearest
|
||||||
local min_distance = MAX_DISTANCE
|
local min_distance = MAX_DISTANCE
|
||||||
for index, player in pairs(minetest.get_connected_players()) do
|
for _, player in pairs(minetest.get_connected_players()) do
|
||||||
local distance = vector.distance(pos, player:getpos())
|
local distance = vector.distance(pos, player:getpos())
|
||||||
if distance < min_distance then
|
if distance < min_distance then
|
||||||
min_distance = distance
|
min_distance = distance
|
||||||
|
@ -6,7 +6,7 @@ local nodebox = {
|
|||||||
local function signalchanger_get_output_rules(node)
|
local function signalchanger_get_output_rules(node)
|
||||||
local rules = {{x=-1, y=0, z=0},
|
local rules = {{x=-1, y=0, z=0},
|
||||||
{x=1, y=0, z=0}}
|
{x=1, y=0, z=0}}
|
||||||
for i = 0, node.param2 do
|
for _ = 0, node.param2 do
|
||||||
rules = mesecon.rotate_rules_left(rules)
|
rules = mesecon.rotate_rules_left(rules)
|
||||||
end
|
end
|
||||||
return rules
|
return rules
|
||||||
@ -14,7 +14,7 @@ end
|
|||||||
|
|
||||||
local function signalchanger_get_input_rules(node)
|
local function signalchanger_get_input_rules(node)
|
||||||
local rules = {{x=0, y=0, z=-1, name="input_on"}, {x=0, y=0, z=1, name="input_off"}}
|
local rules = {{x=0, y=0, z=-1, name="input_on"}, {x=0, y=0, z=1, name="input_off"}}
|
||||||
for i = 0, node.param2 do
|
for _ = 0, node.param2 do
|
||||||
rules = mesecon.rotate_rules_left(rules)
|
rules = mesecon.rotate_rules_left(rules)
|
||||||
end
|
end
|
||||||
return rules
|
return rules
|
||||||
|
@ -26,7 +26,7 @@ local function teleport_nearest(pos)
|
|||||||
local nearest = nil
|
local nearest = nil
|
||||||
local min_distance = MAX_PLAYER_DISTANCE
|
local min_distance = MAX_PLAYER_DISTANCE
|
||||||
local players = minetest.get_connected_players()
|
local players = minetest.get_connected_players()
|
||||||
for index, player in pairs(players) do
|
for _, player in pairs(players) do
|
||||||
local distance = vector.distance(pos, player:getpos())
|
local distance = vector.distance(pos, player:getpos())
|
||||||
if distance <= min_distance then
|
if distance <= min_distance then
|
||||||
min_distance = distance
|
min_distance = distance
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
local timegate_get_output_rules = function(node)
|
local timegate_get_output_rules = function(node)
|
||||||
local rules = {{x = 0, y = 0, z = 1}}
|
local rules = {{x = 0, y = 0, z = 1}}
|
||||||
for i = 0, node.param2 do
|
for _ = 0, node.param2 do
|
||||||
rules = mesecon.rotate_rules_left(rules)
|
rules = mesecon.rotate_rules_left(rules)
|
||||||
end
|
end
|
||||||
return rules
|
return rules
|
||||||
@ -8,7 +8,7 @@ end
|
|||||||
|
|
||||||
local timegate_get_input_rules = function(node)
|
local timegate_get_input_rules = function(node)
|
||||||
local rules = {{x = 0, y = 0, z = -1}}
|
local rules = {{x = 0, y = 0, z = -1}}
|
||||||
for i = 0, node.param2 do
|
for _ = 0, node.param2 do
|
||||||
rules = mesecon.rotate_rules_left(rules)
|
rules = mesecon.rotate_rules_left(rules)
|
||||||
end
|
end
|
||||||
return rules
|
return rules
|
||||||
|
@ -339,14 +339,14 @@ local function do_test()
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
local i = 0
|
local i = 0
|
||||||
for pos, v in data:iter({x=-4, y=-4, z=-4}, {x=2, y=2, z=2}) do
|
for pos in data:iter({x=-4, y=-4, z=-4}, {x=2, y=2, z=2}) do
|
||||||
i = i + 1
|
i = i + 1
|
||||||
assert(vector.equals(pos, expected_positions[i]))
|
assert(vector.equals(pos, expected_positions[i]))
|
||||||
end
|
end
|
||||||
|
|
||||||
print("Test if iter works correctly on a corner")
|
print("Test if iter works correctly on a corner")
|
||||||
local found = false
|
local found = false
|
||||||
for pos, v in data:iter({x=-8, y=-7, z=-80}, {x=-5, y=-5, z=-5}) do
|
for pos in data:iter({x=-8, y=-7, z=-80}, {x=-5, y=-5, z=-5}) do
|
||||||
assert(not found)
|
assert(not found)
|
||||||
found = true
|
found = true
|
||||||
assert(vector.equals(pos, {x=-5, y=-5, z=-5}))
|
assert(vector.equals(pos, {x=-5, y=-5, z=-5}))
|
||||||
|
@ -188,7 +188,7 @@ end
|
|||||||
|
|
||||||
function activate_network(owner, channel)
|
function activate_network(owner, channel)
|
||||||
local network = wireless[owner][channel]
|
local network = wireless[owner][channel]
|
||||||
for i, wl_pos in pairs(network.members) do
|
for _, wl_pos in pairs(network.members) do
|
||||||
wireless_receptor_on(wl_pos, id, network)
|
wireless_receptor_on(wl_pos, id, network)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -253,6 +253,9 @@ function wireless_effector_off(pos)
|
|||||||
update_mod_storage()
|
update_mod_storage()
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- This table is required to prevent a message from being sent in loop between wireless nodes
|
||||||
|
local sending_digilines = {}
|
||||||
|
|
||||||
local function on_digiline_receive(pos, node, channel, msg)
|
local function on_digiline_receive(pos, node, channel, msg)
|
||||||
if is_jammed(pos) then
|
if is_jammed(pos) then
|
||||||
return
|
return
|
||||||
@ -264,11 +267,18 @@ local function on_digiline_receive(pos, node, channel, msg)
|
|||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local pos_hash = minetest.hash_node_position(pos)
|
||||||
|
if sending_digilines[pos_hash] then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
sending_digilines[pos_hash] = true
|
||||||
for i, wl_pos in pairs(wireless[wls.owner][wls.channel].members) do
|
for i, wl_pos in pairs(wireless[wls.owner][wls.channel].members) do
|
||||||
if i ~= wls.id and check_wireless_exists(wl_pos) then
|
if i ~= wls.id and check_wireless_exists(wl_pos) then
|
||||||
digiline:receptor_send(wl_pos, digiline.rules.default, channel, msg)
|
digiline:receptor_send(wl_pos, digiline.rules.default, channel, msg)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
sending_digilines[pos_hash] = nil
|
||||||
end
|
end
|
||||||
|
|
||||||
mesecon.register_node("moremesecons_wireless:wireless", {
|
mesecon.register_node("moremesecons_wireless:wireless", {
|
||||||
@ -327,6 +337,15 @@ mesecon.register_node("moremesecons_wireless:wireless", {
|
|||||||
|
|
||||||
minetest.register_alias("moremesecons_wireless:wireless", "moremesecons_wireless:wireless_off")
|
minetest.register_alias("moremesecons_wireless:wireless", "moremesecons_wireless:wireless_off")
|
||||||
|
|
||||||
|
minetest.register_craft({
|
||||||
|
output = "moremesecons_wireless:wireless_off 2",
|
||||||
|
recipe = {
|
||||||
|
{"group:mesecon_conductor_craftable", "", "group:mesecon_conductor_craftable"},
|
||||||
|
{"", "mesecons_torch:mesecon_torch_on", ""},
|
||||||
|
{"group:mesecon_conductor_craftable", "", "group:mesecon_conductor_craftable"},
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
local function remove_jammer(pos)
|
local function remove_jammer(pos)
|
||||||
moremesecons.remove_data_from_pos(jammers, pos)
|
moremesecons.remove_data_from_pos(jammers, pos)
|
||||||
end
|
end
|
||||||
@ -354,6 +373,7 @@ function is_jammed(pos)
|
|||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
|
|
||||||
|
if moremesecons.setting("wireless", "enable_jammer", true) then
|
||||||
mesecon.register_node("moremesecons_wireless:jammer", {
|
mesecon.register_node("moremesecons_wireless:jammer", {
|
||||||
description = "Wireless Jammer",
|
description = "Wireless Jammer",
|
||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
@ -422,15 +442,7 @@ minetest.register_craft({
|
|||||||
{"moremesecons_wireless:wireless", "mesecons_torch:mesecon_torch_on", "moremesecons_wireless:wireless"}
|
{"moremesecons_wireless:wireless", "mesecons_torch:mesecon_torch_on", "moremesecons_wireless:wireless"}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
end
|
||||||
minetest.register_craft({
|
|
||||||
output = "moremesecons_wireless:wireless_off 2",
|
|
||||||
recipe = {
|
|
||||||
{"group:mesecon_conductor_craftable", "", "group:mesecon_conductor_craftable"},
|
|
||||||
{"", "mesecons_torch:mesecon_torch_on", ""},
|
|
||||||
{"group:mesecon_conductor_craftable", "", "group:mesecon_conductor_craftable"},
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
if moremesecons.setting("wireless", "enable_lbm", false) then
|
if moremesecons.setting("wireless", "enable_lbm", false) then
|
||||||
minetest.register_lbm({
|
minetest.register_lbm({
|
||||||
|
@ -63,6 +63,9 @@ moremesecons_teleporter.enable_lbm (Enable Registration LBM) bool false
|
|||||||
|
|
||||||
[Wireless]
|
[Wireless]
|
||||||
|
|
||||||
|
# Whether to enable the wireless jammer node
|
||||||
|
moremesecons_wireless.enable_jammer (Enable wireless jammer) bool true
|
||||||
|
|
||||||
# Wireless Jammer action range
|
# Wireless Jammer action range
|
||||||
# Any value less than or equal to 0 will be changed to 1 and a NaN value will be changed to the default value
|
# Any value less than or equal to 0 will be changed to 1 and a NaN value will be changed to the default value
|
||||||
moremesecons_wireless.jammer_max_distance (Wireless Jammer action range) float 15
|
moremesecons_wireless.jammer_max_distance (Wireless Jammer action range) float 15
|
||||||
|
Reference in New Issue
Block a user