mirror of
https://github.com/minetest-mods/MoreMesecons.git
synced 2025-06-29 23:10:39 +02:00
Compare commits
2 Commits
Author | SHA1 | Date | |
---|---|---|---|
6d278538a9 | |||
23b96b9db6 |
@ -64,3 +64,5 @@ minetest.register_craft({
|
||||
recipe = { {"mesecons_blinkyplant:blinky_plant_off"},
|
||||
{"default:mese_crystal_fragment"},}
|
||||
})
|
||||
|
||||
minetest.log("action", "[moremesecons_adjustable_blinky_plant] loaded.")
|
||||
|
@ -156,3 +156,5 @@ minetest.register_abm({
|
||||
end
|
||||
end,
|
||||
})
|
||||
|
||||
minetest.log("action", "[moremesecons_adjustable_player_detector] loaded.")
|
||||
|
@ -55,7 +55,7 @@ local function resolve_commands(commands, pos)
|
||||
local nearest = nil
|
||||
local min_distance = math.huge
|
||||
local players = minetest.get_connected_players()
|
||||
for _, player in pairs(players) do
|
||||
for index, player in pairs(players) do
|
||||
local distance = vector.distance(pos, player:getpos())
|
||||
if distance < min_distance then
|
||||
min_distance = distance
|
||||
@ -172,3 +172,5 @@ minetest.register_craft({
|
||||
{"group:mesecon_conductor_craftable","default:mese_crystal","group:mesecon_conductor_craftable"}
|
||||
}
|
||||
})
|
||||
|
||||
minetest.log("action", "[moremesecons_commandblock] loaded.")
|
||||
|
@ -5,7 +5,7 @@ local nodebox = {
|
||||
|
||||
local function signalchanger_get_output_rules(node)
|
||||
local rules = {{x=-1, y=0, z=0}}
|
||||
for _ = 0, node.param2 do
|
||||
for i = 0, node.param2 do
|
||||
rules = mesecon.rotate_rules_left(rules)
|
||||
end
|
||||
return rules
|
||||
@ -13,7 +13,7 @@ end
|
||||
|
||||
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"}}
|
||||
for _ = 0, node.param2 do
|
||||
for i = 0, node.param2 do
|
||||
rules = mesecon.rotate_rules_left(rules)
|
||||
end
|
||||
return rules
|
||||
@ -79,3 +79,5 @@ minetest.register_craft({
|
||||
output = "moremesecons_conductor_signalchanger:conductor_signalchanger_off",
|
||||
recipe = {{"group:mesecon_conductor_craftable","moremesecons_signalchanger:signalchanger_off"}}
|
||||
})
|
||||
|
||||
minetest.log("action", "[moremesecons_conductor_signalchanger] loaded.")
|
||||
|
@ -1,6 +1,6 @@
|
||||
local function dual_delayer_get_input_rules(node)
|
||||
local rules = {{x=1, y=0, z=0}}
|
||||
for _ = 0, node.param2 do
|
||||
for i = 0, node.param2 do
|
||||
rules = mesecon.rotate_rules_left(rules)
|
||||
end
|
||||
return rules
|
||||
@ -8,7 +8,7 @@ end
|
||||
|
||||
local function dual_delayer_get_output_rules(node)
|
||||
local rules = {{x=0, y=0, z=1}, {x=0, y=0, z=-1}}
|
||||
for _ = 0, node.param2 do
|
||||
for i = 0, node.param2 do
|
||||
rules = mesecon.rotate_rules_left(rules)
|
||||
end
|
||||
return rules
|
||||
@ -93,3 +93,5 @@ minetest.register_craft({
|
||||
output = "moremesecons_dual_delayer:dual_delayer_00 2",
|
||||
recipe = {"mesecons_delayer:delayer_off_1", "mesecons_delayer:delayer_off_1"}
|
||||
})
|
||||
|
||||
minetest.log("action", "[moremesecons_dual_delayer] loaded.")
|
||||
|
@ -139,3 +139,5 @@ minetest.register_abm({
|
||||
end
|
||||
end,
|
||||
})
|
||||
|
||||
minetest.log("action", "[moremesecons_entity_detector] loaded.")
|
||||
|
@ -46,3 +46,5 @@ minetest.register_craft({
|
||||
recipe = { {"default:torch"},
|
||||
{"default:mese_crystal_fragment"},}
|
||||
})
|
||||
|
||||
minetest.log("action", "[moremesecons_igniter] loaded.")
|
||||
|
@ -102,3 +102,5 @@ minetest.register_craft({
|
||||
{"", "default:mese_crystal_fragment", ""}
|
||||
}
|
||||
})
|
||||
|
||||
minetest.log("action", "[moremesecons_induction_transmitter] loaded.")
|
||||
|
@ -1,6 +1,6 @@
|
||||
local injector_controller_get_output_rules = function(node)
|
||||
local rules = {{x = 0, y = 0, z = 1}}
|
||||
for _ = 0, node.param2 do
|
||||
for i = 0, node.param2 do
|
||||
rules = mesecon.rotate_rules_left(rules)
|
||||
end
|
||||
return rules
|
||||
@ -10,7 +10,7 @@ local injector_controller_get_input_rules = function(node)
|
||||
local rules = {{x = 0, y = 0, z = -1},
|
||||
{x = 1, y = 0, z = 0},
|
||||
{x = -1, y = 0, z = 0}}
|
||||
for _ = 0, node.param2 do
|
||||
for i = 0, node.param2 do
|
||||
rules = mesecon.rotate_rules_left(rules)
|
||||
end
|
||||
return rules
|
||||
@ -82,3 +82,5 @@ minetest.register_craft({
|
||||
output = "moremesecons_injector_controller:injector_controller_off",
|
||||
recipe = {{"mesecons_blinkyplant:blinky_plant_off","mesecons_gates:and_off"}}
|
||||
})
|
||||
|
||||
minetest.log("action", "[moremesecons_injector_controller] loaded.")
|
||||
|
@ -131,3 +131,5 @@ if moremesecons.setting("jammer", "enable_lbm", false) then
|
||||
action = add_jammer
|
||||
})
|
||||
end
|
||||
|
||||
minetest.log("action", "[moremesecons_jammer] loaded.")
|
||||
|
@ -158,3 +158,5 @@ minetest.register_node("moremesecons_luablock:luablock", {
|
||||
end
|
||||
}}
|
||||
})
|
||||
|
||||
minetest.log("action", "[moremesecons_luablock] loaded.")
|
||||
|
@ -352,3 +352,5 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
|
||||
return
|
||||
end
|
||||
end)
|
||||
|
||||
minetest.log("action", "[moremesecons_luacontroller_tool] loaded.")
|
||||
|
@ -2,7 +2,7 @@ local function mesechest_get_output_rules(node)
|
||||
local rules = {{x=-1, y=0, z=0},
|
||||
{x=0, y=0, z=-1},
|
||||
{x=0, y=0, z=1}}
|
||||
for _ = 0, node.param2 do
|
||||
for i = 0, node.param2 do
|
||||
rules = mesecon.rotate_rules_left(rules)
|
||||
end
|
||||
return rules
|
||||
@ -116,3 +116,5 @@ minetest.register_craft({
|
||||
output = "default:mesechest_locked",
|
||||
recipe = {{"group:mesecon_conductor_craftable", "default:chest_locked", "group:mesecon_conductor_craftable"}}
|
||||
})
|
||||
|
||||
minetest.log("action", "[moremesecons_mesechest] loaded.")
|
||||
|
@ -4,7 +4,7 @@ local kill_nearest_player = function(pos)
|
||||
-- Search the nearest player
|
||||
local nearest
|
||||
local min_distance = MAX_DISTANCE
|
||||
for _, player in pairs(minetest.get_connected_players()) do
|
||||
for index, player in pairs(minetest.get_connected_players()) do
|
||||
local distance = vector.distance(pos, player:getpos())
|
||||
if distance < min_distance then
|
||||
min_distance = distance
|
||||
@ -60,3 +60,5 @@ minetest.register_node("moremesecons_playerkiller:playerkiller", {
|
||||
end,
|
||||
sounds = default.node_sound_stone_defaults(),
|
||||
})
|
||||
|
||||
minetest.log("action", "[moremesecons_playerkiller] loaded.")
|
||||
|
@ -121,3 +121,5 @@ minetest.register_craft({
|
||||
recipe = {{"mesecons_luacontroller:luacontroller0000", "mesecons_noteblock:noteblock"},
|
||||
{"group:wood", "group:wood"}}
|
||||
})
|
||||
|
||||
minetest.log("action", "[moremesecons_sayer] loaded.")
|
||||
|
@ -6,7 +6,7 @@ local nodebox = {
|
||||
local function signalchanger_get_output_rules(node)
|
||||
local rules = {{x=-1, y=0, z=0},
|
||||
{x=1, y=0, z=0}}
|
||||
for _ = 0, node.param2 do
|
||||
for i = 0, node.param2 do
|
||||
rules = mesecon.rotate_rules_left(rules)
|
||||
end
|
||||
return rules
|
||||
@ -14,7 +14,7 @@ end
|
||||
|
||||
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"}}
|
||||
for _ = 0, node.param2 do
|
||||
for i = 0, node.param2 do
|
||||
rules = mesecon.rotate_rules_left(rules)
|
||||
end
|
||||
return rules
|
||||
@ -79,3 +79,5 @@ minetest.register_craft({
|
||||
output = "moremesecons_signalchanger:signalchanger_off",
|
||||
recipe = {{"group:mesecon_conductor_craftable","moremesecons_switchtorch:switchtorch_off","group:mesecon_conductor_craftable"}}
|
||||
})
|
||||
|
||||
minetest.log("action", "[moremesecons_signalchanger] loaded.")
|
||||
|
@ -127,3 +127,5 @@ minetest.register_abm({
|
||||
-- 2 = x+1
|
||||
-- 0 = y+1
|
||||
-- 1 = y-1
|
||||
|
||||
minetest.log("action", "[moremesecons_switchtorch] loaded.")
|
||||
|
@ -26,7 +26,7 @@ local function teleport_nearest(pos)
|
||||
local nearest = nil
|
||||
local min_distance = MAX_PLAYER_DISTANCE
|
||||
local players = minetest.get_connected_players()
|
||||
for _, player in pairs(players) do
|
||||
for index, player in pairs(players) do
|
||||
local distance = vector.distance(pos, player:getpos())
|
||||
if distance <= min_distance then
|
||||
min_distance = distance
|
||||
@ -106,3 +106,5 @@ if moremesecons.setting("teleporter", "enable_lbm", false) then
|
||||
action = register
|
||||
})
|
||||
end
|
||||
|
||||
minetest.log("action", "[moremesecons_teleporter] loaded.")
|
||||
|
@ -1,6 +1,6 @@
|
||||
local timegate_get_output_rules = function(node)
|
||||
local rules = {{x = 0, y = 0, z = 1}}
|
||||
for _ = 0, node.param2 do
|
||||
for i = 0, node.param2 do
|
||||
rules = mesecon.rotate_rules_left(rules)
|
||||
end
|
||||
return rules
|
||||
@ -8,7 +8,7 @@ end
|
||||
|
||||
local timegate_get_input_rules = function(node)
|
||||
local rules = {{x = 0, y = 0, z = -1}}
|
||||
for _ = 0, node.param2 do
|
||||
for i = 0, node.param2 do
|
||||
rules = mesecon.rotate_rules_left(rules)
|
||||
end
|
||||
return rules
|
||||
@ -128,3 +128,5 @@ minetest.register_craft({
|
||||
|
||||
minetest.register_alias("moremesecons_temporarygate:temporarygate_off", "moremesecons_timegate:timegate_off")
|
||||
minetest.register_alias("moremesecons_temporarygate:temporarygate_on", "moremesecons_timegate:timegate_on")
|
||||
|
||||
minetest.log("action", "[moremesecons_timegate] loaded.")
|
||||
|
@ -339,14 +339,14 @@ local function do_test()
|
||||
end
|
||||
end
|
||||
local i = 0
|
||||
for pos in data:iter({x=-4, y=-4, z=-4}, {x=2, y=2, z=2}) do
|
||||
for pos, v in data:iter({x=-4, y=-4, z=-4}, {x=2, y=2, z=2}) do
|
||||
i = i + 1
|
||||
assert(vector.equals(pos, expected_positions[i]))
|
||||
end
|
||||
|
||||
print("Test if iter works correctly on a corner")
|
||||
local found = false
|
||||
for pos in data:iter({x=-8, y=-7, z=-80}, {x=-5, y=-5, z=-5}) do
|
||||
for pos, v in data:iter({x=-8, y=-7, z=-80}, {x=-5, y=-5, z=-5}) do
|
||||
assert(not found)
|
||||
found = true
|
||||
assert(vector.equals(pos, {x=-5, y=-5, z=-5}))
|
||||
@ -377,5 +377,6 @@ local function do_test()
|
||||
|
||||
--~ data:iterAll()
|
||||
end
|
||||
--~ do_test()
|
||||
|
||||
--~ do_test()
|
||||
minetest.log("action", "[moremesecons_utils] loaded.")
|
||||
|
@ -188,7 +188,7 @@ end
|
||||
|
||||
function activate_network(owner, channel)
|
||||
local network = wireless[owner][channel]
|
||||
for _, wl_pos in pairs(network.members) do
|
||||
for i, wl_pos in pairs(network.members) do
|
||||
wireless_receptor_on(wl_pos, id, network)
|
||||
end
|
||||
end
|
||||
@ -253,9 +253,6 @@ function wireless_effector_off(pos)
|
||||
update_mod_storage()
|
||||
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)
|
||||
if is_jammed(pos) then
|
||||
return
|
||||
@ -267,18 +264,11 @@ local function on_digiline_receive(pos, node, channel, msg)
|
||||
return
|
||||
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
|
||||
if i ~= wls.id and check_wireless_exists(wl_pos) then
|
||||
digiline:receptor_send(wl_pos, digiline.rules.default, channel, msg)
|
||||
end
|
||||
end
|
||||
sending_digilines[pos_hash] = nil
|
||||
end
|
||||
|
||||
mesecon.register_node("moremesecons_wireless:wireless", {
|
||||
@ -337,15 +327,6 @@ mesecon.register_node("moremesecons_wireless:wireless", {
|
||||
|
||||
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)
|
||||
moremesecons.remove_data_from_pos(jammers, pos)
|
||||
end
|
||||
@ -373,76 +354,83 @@ function is_jammed(pos)
|
||||
return false
|
||||
end
|
||||
|
||||
if moremesecons.setting("wireless", "enable_jammer", true) then
|
||||
mesecon.register_node("moremesecons_wireless:jammer", {
|
||||
description = "Wireless Jammer",
|
||||
paramtype = "light",
|
||||
drawtype = "nodebox",
|
||||
},{
|
||||
tiles = {"mesecons_wire_off.png^moremesecons_jammer_top.png", "moremesecons_jammer_bottom.png", "mesecons_wire_off.png^moremesecons_jammer_side_off.png"},
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
-- connection
|
||||
{-1/16, -0.5, -0.5, 1/16, -7/16, 0.5},
|
||||
{-0.5, -0.5, -1/16, 0.5, -7/16, 1/16},
|
||||
mesecon.register_node("moremesecons_wireless:jammer", {
|
||||
description = "Wireless Jammer",
|
||||
paramtype = "light",
|
||||
drawtype = "nodebox",
|
||||
},{
|
||||
tiles = {"mesecons_wire_off.png^moremesecons_jammer_top.png", "moremesecons_jammer_bottom.png", "mesecons_wire_off.png^moremesecons_jammer_side_off.png"},
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
-- connection
|
||||
{-1/16, -0.5, -0.5, 1/16, -7/16, 0.5},
|
||||
{-0.5, -0.5, -1/16, 0.5, -7/16, 1/16},
|
||||
|
||||
--stabilization
|
||||
{-1/16, -7/16, -1/16, 1/16, -6/16, 1/16},
|
||||
--stabilization
|
||||
{-1/16, -7/16, -1/16, 1/16, -6/16, 1/16},
|
||||
|
||||
-- fields
|
||||
{-7/16, -6/16, -7/16, 7/16, -4/16, 7/16},
|
||||
{-5/16, -4/16, -5/16, 5/16, -3/16, 5/16},
|
||||
{-3/16, -3/16, -3/16, 3/16, -2/16, 3/16},
|
||||
{-1/16, -2/16, -1/16, 1/16, -1/16, 1/16},
|
||||
},
|
||||
-- fields
|
||||
{-7/16, -6/16, -7/16, 7/16, -4/16, 7/16},
|
||||
{-5/16, -4/16, -5/16, 5/16, -3/16, 5/16},
|
||||
{-3/16, -3/16, -3/16, 3/16, -2/16, 3/16},
|
||||
{-1/16, -2/16, -1/16, 1/16, -1/16, 1/16},
|
||||
},
|
||||
groups = {dig_immediate=2},
|
||||
mesecons = {effector = {
|
||||
rules = mesecon.rules.flat,
|
||||
action_on = function(pos)
|
||||
add_jammer(pos)
|
||||
minetest.swap_node(pos, {name="moremesecons_wireless:jammer_on"})
|
||||
end
|
||||
}}
|
||||
},{
|
||||
tiles = {"mesecons_wire_on.png^moremesecons_jammer_top.png", "moremesecons_jammer_bottom.png", "mesecons_wire_on.png^moremesecons_jammer_side_on.png"},
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
-- connection
|
||||
{-1/16, -0.5, -0.5, 1/16, -7/16, 0.5},
|
||||
{-0.5, -0.5, -1/16, 0.5, -7/16, 1/16},
|
||||
},
|
||||
groups = {dig_immediate=2},
|
||||
mesecons = {effector = {
|
||||
rules = mesecon.rules.flat,
|
||||
action_on = function(pos)
|
||||
add_jammer(pos)
|
||||
minetest.swap_node(pos, {name="moremesecons_wireless:jammer_on"})
|
||||
end
|
||||
}}
|
||||
},{
|
||||
tiles = {"mesecons_wire_on.png^moremesecons_jammer_top.png", "moremesecons_jammer_bottom.png", "mesecons_wire_on.png^moremesecons_jammer_side_on.png"},
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
-- connection
|
||||
{-1/16, -0.5, -0.5, 1/16, -7/16, 0.5},
|
||||
{-0.5, -0.5, -1/16, 0.5, -7/16, 1/16},
|
||||
|
||||
--stabilization
|
||||
{-1/16, -7/16, -1/16, 1/16, 5/16, 1/16},
|
||||
--stabilization
|
||||
{-1/16, -7/16, -1/16, 1/16, 5/16, 1/16},
|
||||
|
||||
-- fields
|
||||
{-7/16, -6/16, -7/16, 7/16, -4/16, 7/16},
|
||||
{-5/16, -3/16, -5/16, 5/16, -1/16, 5/16},
|
||||
{-3/16, 0, -3/16, 3/16, 2/16, 3/16},
|
||||
{-1/16, 3/16, -1/16, 1/16, 5/16, 1/16},
|
||||
},
|
||||
-- fields
|
||||
{-7/16, -6/16, -7/16, 7/16, -4/16, 7/16},
|
||||
{-5/16, -3/16, -5/16, 5/16, -1/16, 5/16},
|
||||
{-3/16, 0, -3/16, 3/16, 2/16, 3/16},
|
||||
{-1/16, 3/16, -1/16, 1/16, 5/16, 1/16},
|
||||
},
|
||||
groups = {dig_immediate=2, not_in_creative_inventory=1},
|
||||
mesecons = {effector = {
|
||||
rules = mesecon.rules.flat,
|
||||
action_off = function(pos)
|
||||
remove_jammer(pos)
|
||||
minetest.swap_node(pos, {name="moremesecons_wireless:jammer_off"})
|
||||
end
|
||||
}},
|
||||
on_destruct = remove_jammer,
|
||||
on_construct = add_jammer,
|
||||
})
|
||||
},
|
||||
groups = {dig_immediate=2, not_in_creative_inventory=1},
|
||||
mesecons = {effector = {
|
||||
rules = mesecon.rules.flat,
|
||||
action_off = function(pos)
|
||||
remove_jammer(pos)
|
||||
minetest.swap_node(pos, {name="moremesecons_wireless:jammer_off"})
|
||||
end
|
||||
}},
|
||||
on_destruct = remove_jammer,
|
||||
on_construct = add_jammer,
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "moremesecons_wireless:jammer_off",
|
||||
recipe = {
|
||||
{"moremesecons_wireless:wireless", "mesecons_torch:mesecon_torch_on", "moremesecons_wireless:wireless"}
|
||||
}
|
||||
})
|
||||
end
|
||||
minetest.register_craft({
|
||||
output = "moremesecons_wireless:jammer_off",
|
||||
recipe = {
|
||||
{"moremesecons_wireless:wireless", "mesecons_torch:mesecon_torch_on", "moremesecons_wireless:wireless"}
|
||||
}
|
||||
})
|
||||
|
||||
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
|
||||
minetest.register_lbm({
|
||||
@ -496,3 +484,5 @@ if storage:get_string("wireless_meta_2") == "" then
|
||||
end
|
||||
minetest.log("action", "[moremesecons_wireless] Done!")
|
||||
end
|
||||
|
||||
minetest.log("action", "[moremesecons_wireless] loaded.")
|
||||
|
@ -63,9 +63,6 @@ moremesecons_teleporter.enable_lbm (Enable Registration LBM) bool false
|
||||
|
||||
[Wireless]
|
||||
|
||||
# Whether to enable the wireless jammer node
|
||||
moremesecons_wireless.enable_jammer (Enable wireless jammer) bool true
|
||||
|
||||
# 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
|
||||
moremesecons_wireless.jammer_max_distance (Wireless Jammer action range) float 15
|
||||
|
Reference in New Issue
Block a user