Compare commits
7 Commits
Author | SHA1 | Date |
---|---|---|
tour | 93384188d5 | |
tour | b24feb4073 | |
HybridDog | 31a98e2c9b | |
fluxionary | cbae2c7f88 | |
luk3yx | 464699e78b | |
fluxionary | 13645134a6 | |
sys4-fr | e47e855baf |
|
@ -0,0 +1,10 @@
|
|||
name: luacheck
|
||||
on: [push, pull_request]
|
||||
jobs:
|
||||
luacheck:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@master
|
||||
- name: Luacheck
|
||||
uses: lunarmodules/luacheck@master
|
15
.luacheckrc
15
.luacheckrc
|
@ -1,22 +1,9 @@
|
|||
read_globals = {
|
||||
-- Defined by Minetest
|
||||
"vector", "PseudoRandom", "VoxelArea", "table",
|
||||
"minetest", "vector", "PseudoRandom", "VoxelArea", "table",
|
||||
|
||||
-- Mods
|
||||
"digiline", "default", "creative",
|
||||
|
||||
-- Required for the mesechest registration
|
||||
minetest = {
|
||||
fields = {
|
||||
register_lbm = {read_only = false},
|
||||
register_node = {read_only = false},
|
||||
registered_on_player_receive_fields = {
|
||||
read_only = false,
|
||||
other_fields = true,
|
||||
},
|
||||
},
|
||||
other_fields = true
|
||||
}
|
||||
}
|
||||
globals = {"moremesecons", "mesecon"}
|
||||
ignore = {"212", "631", "422", "432"}
|
||||
|
|
|
@ -1,3 +0,0 @@
|
|||
mesecons
|
||||
moremesecons_utils
|
||||
craft_guide?
|
|
@ -0,0 +1,3 @@
|
|||
name = moremesecons_adjustable_blinkyplant
|
||||
depends = mesecons,moremesecons_utils
|
||||
optional_depends = craft_guide
|
|
@ -1,2 +0,0 @@
|
|||
mesecons
|
||||
craft_guide?
|
|
@ -4,7 +4,7 @@
|
|||
|
||||
local function make_formspec(meta)
|
||||
meta:set_string("formspec", "size[9,5]" ..
|
||||
"field[0.3, 0;9,2;scanname;Coma-separated list of the names of players to scan for (empty for any):;${scanname}]"..
|
||||
"field[0.3, 0;9,2;scanname;Comma-separated list of the names of players to scan for (empty for any):;${scanname}]"..
|
||||
"field[0.3,1.5;4,2;digiline_channel;Digiline Channel (optional):;${digiline_channel}]"..
|
||||
"field[0.3,3;4,2;radius;Detection radius:;${radius}]"..
|
||||
"button_exit[3.5,3.5;2,3;;Save]")
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
name = moremesecons_adjustable_player_detector
|
||||
depends = mesecons
|
||||
optional_depends = craft_guide
|
|
@ -1,3 +0,0 @@
|
|||
mesecons
|
||||
moremesecons_utils
|
||||
craft_guide?
|
|
@ -4,7 +4,7 @@ local function initialize_data(meta)
|
|||
local commands = meta:get_string("commands")
|
||||
meta:set_string("formspec",
|
||||
"invsize[9,5;]" ..
|
||||
"textarea[0.5,0.5;8.5,4;commands;Commands;"..commands.."]" ..
|
||||
"textarea[0.5,0.5;8.5,4;commands;Commands;"..minetest.formspec_escape(commands).."]" ..
|
||||
"label[1,3.8;@nearest is replaced by the nearest player name ("..tostring(NEAREST_MAX_DISTANCE).." nodes max for the nearest distance)".."]" ..
|
||||
"button_exit[3.3,4.5;2,1;submit;Submit]")
|
||||
local owner = meta:get_string("owner")
|
||||
|
@ -52,11 +52,11 @@ local function receive_fields(pos, _, fields, player)
|
|||
end
|
||||
|
||||
local function resolve_commands(commands, pos)
|
||||
local nearest = nil
|
||||
local nearest = ""
|
||||
local min_distance = math.huge
|
||||
local players = minetest.get_connected_players()
|
||||
for _, player in pairs(players) do
|
||||
local distance = vector.distance(pos, player:getpos())
|
||||
local distance = vector.distance(pos, player:get_pos())
|
||||
if distance < min_distance then
|
||||
min_distance = distance
|
||||
nearest = player:get_player_name()
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
name = moremesecons_commandblock
|
||||
depends = mesecons,moremesecons_utils
|
||||
optional_depends = craft_guide
|
|
@ -1,2 +0,0 @@
|
|||
mesecons
|
||||
craft_guide?
|
|
@ -0,0 +1,3 @@
|
|||
name = moremesecons_conductor_signalchanger
|
||||
depends = mesecons
|
||||
optional_depends = craft_guide
|
|
@ -1,2 +0,0 @@
|
|||
mesecons
|
||||
craft_guide?
|
|
@ -0,0 +1,3 @@
|
|||
name = moremesecons_dual_delayer
|
||||
depends = mesecons
|
||||
optional_depends = craft_guide
|
|
@ -1,2 +0,0 @@
|
|||
mesecons
|
||||
craft_guide?
|
|
@ -4,7 +4,7 @@
|
|||
|
||||
local function make_formspec(meta)
|
||||
meta:set_string("formspec", "size[9,5]" ..
|
||||
"field[0.3, 0;9,2;scanname;Coma-separated list of the names (itemstring) of entities to scan for (empty for any):;${scanname}]"..
|
||||
"field[0.3, 0;9,2;scanname;Comma-separated list of the names (itemstring) of entities to scan for (empty for any):;${scanname}]"..
|
||||
"field[0.3,1.5;4,2;digiline_channel;Digiline Channel (optional):;${digiline_channel}]"..
|
||||
"field[0.3,3;2,2;radius;Detection radius:;${radius}]"..
|
||||
"button_exit[3.5,3.5;2,3;;Save]")
|
||||
|
@ -26,7 +26,8 @@ local function object_detector_on_receive_fields(pos, _, fields, player)
|
|||
meta:set_string("digiline_channel", fields.digiline_channel)
|
||||
local r = tonumber(fields.radius)
|
||||
if r then
|
||||
meta:set_int("radius", r)
|
||||
local max_radius = moremesecons.setting("entity_detector", "max_radius", 16, 0)
|
||||
meta:set_int("radius", math.min(r, max_radius))
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -36,23 +37,19 @@ local object_detector_scan = function (pos)
|
|||
local scanname = meta:get_string("scanname")
|
||||
local scan_all = scanname == ""
|
||||
local scan_names = scanname:split(',')
|
||||
local radius = meta:get_int("radius")
|
||||
if radius == 0 then
|
||||
radius = 6
|
||||
end
|
||||
local max_radius = moremesecons.setting("entity_detector", "max_radius", 16, 0)
|
||||
local radius = math.min(tonumber(meta:get("radius")) or 6, max_radius)
|
||||
for _,obj in pairs(minetest.get_objects_inside_radius(pos, radius)) do
|
||||
if not obj:is_player() then
|
||||
local luaentity = obj:get_luaentity()
|
||||
local luaentity = obj:get_luaentity()
|
||||
if luaentity then
|
||||
if scan_all then
|
||||
return true
|
||||
end
|
||||
local isname = luaentity.name
|
||||
if isname then
|
||||
if scan_all then
|
||||
for _, name in ipairs(scan_names) do
|
||||
if isname == name or (isname == "__builtin:item" and luaentity.itemstring == name) then
|
||||
return true
|
||||
end
|
||||
for _, name in ipairs(scan_names) do
|
||||
if isname == name or (isname == "__builtin:item" and luaentity.itemstring == name) then
|
||||
return true
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
name = moremesecons_entity_detector
|
||||
depends = mesecons
|
||||
optional_depends = craft_guide
|
|
@ -1,3 +0,0 @@
|
|||
mesecons
|
||||
fire
|
||||
craft_guide?
|
|
@ -0,0 +1,3 @@
|
|||
name = moremesecons_igniter
|
||||
depends = mesecons,fire
|
||||
optional_depends = craft_guide
|
|
@ -1,3 +0,0 @@
|
|||
mesecons
|
||||
mesecons_torch
|
||||
default
|
|
@ -0,0 +1,2 @@
|
|||
name = moremesecons_induction_transmitter
|
||||
depends = mesecons,mesecons_torch,default
|
|
@ -1,2 +0,0 @@
|
|||
mesecons
|
||||
craft_guide?
|
|
@ -0,0 +1,3 @@
|
|||
name = moremesecons_injector_controller
|
||||
depends = mesecons
|
||||
optional_depends = craft_guide
|
|
@ -1,3 +0,0 @@
|
|||
mesecons
|
||||
moremesecons_utils
|
||||
craft_guide?
|
|
@ -0,0 +1,3 @@
|
|||
name = moremesecons_jammer
|
||||
depends = mesecons,moremesecons_utils
|
||||
optional_depends = craft_guide
|
|
@ -1,2 +0,0 @@
|
|||
mesecons
|
||||
moremesecons_utils
|
|
@ -0,0 +1,2 @@
|
|||
name = moremesecons_luablock
|
||||
depends = mesecons,moremesecons_utils
|
|
@ -1,3 +0,0 @@
|
|||
mesecons
|
||||
mesecons_luacontroller
|
||||
moremesecons_utils
|
|
@ -0,0 +1,2 @@
|
|||
name = moremesecons_luacontroller_tool
|
||||
depends = mesecons,mesecons_luacontroller,moremesecons_utils
|
|
@ -1,2 +0,0 @@
|
|||
default
|
||||
mesecons
|
|
@ -8,59 +8,8 @@ local function mesechest_get_output_rules(node)
|
|||
return rules
|
||||
end
|
||||
|
||||
|
||||
local open_chests = {}
|
||||
|
||||
-- Override minetest.register_node so it adds a prefix ":"
|
||||
local old_minetest_register_node = minetest.register_node
|
||||
minetest.register_node = function(name, def)
|
||||
local old_on_metadata_inventory_put = def.on_metadata_inventory_put
|
||||
local old_on_metadata_inventory_take = def.on_metadata_inventory_take
|
||||
local old_on_rightclick = def.on_rightclick
|
||||
|
||||
def.on_metadata_inventory_put = function(pos, ...)
|
||||
old_on_metadata_inventory_put(pos, ...)
|
||||
mesecon.receptor_on(pos, {mesechest_get_output_rules(minetest.get_node(pos))[2]})
|
||||
minetest.after(1, function(pos)
|
||||
mesecon.receptor_off(pos, {mesechest_get_output_rules(minetest.get_node(pos))[2]})
|
||||
end, pos)
|
||||
end
|
||||
def.on_metadata_inventory_take = function(pos, ...)
|
||||
old_on_metadata_inventory_take(pos, ...)
|
||||
mesecon.receptor_on(pos, {mesechest_get_output_rules(minetest.get_node(pos))[3]})
|
||||
minetest.after(1, function(pos)
|
||||
mesecon.receptor_off(pos, {mesechest_get_output_rules(minetest.get_node(pos))[3]})
|
||||
end, pos)
|
||||
end
|
||||
def.on_rightclick = function(pos, node, clicker, ...)
|
||||
if old_on_rightclick(pos, node, clicker, ...) == nil then
|
||||
mesecon.receptor_on(pos, {mesechest_get_output_rules(node)[1]})
|
||||
open_chests[clicker:get_player_name()] = pos
|
||||
end
|
||||
end
|
||||
|
||||
old_minetest_register_node(":"..name, def)
|
||||
end
|
||||
local old_minetest_register_lbm = minetest.register_lbm
|
||||
minetest.register_lbm = function() end
|
||||
|
||||
-- Get the on_player_receive_fields function. That's a huge hack
|
||||
for i, f in ipairs(minetest.registered_on_player_receive_fields) do
|
||||
local serialized = minetest.serialize(f)
|
||||
if string.find(serialized, "default:chest") then
|
||||
minetest.registered_on_player_receive_fields[i] = function(player, formname, fields)
|
||||
if f(player, formname, fields) == true then
|
||||
local pn = player:get_player_name()
|
||||
if open_chests[pn] then
|
||||
mesecon.receptor_off(open_chests[pn], {mesechest_get_output_rules(minetest.get_node(open_chests[pn]))[1]})
|
||||
open_chests[pn] = nil
|
||||
end
|
||||
end
|
||||
end
|
||||
break
|
||||
end
|
||||
end
|
||||
|
||||
-- default.chest.register_chest() doesn't allow to register most of the callbacks we need
|
||||
-- we have to override the chest node we registered again
|
||||
default.chest.register_chest("moremesecons_mesechest:mesechest", {
|
||||
description = "Mese Chest",
|
||||
tiles = {
|
||||
|
@ -104,8 +53,55 @@ default.chest.register_chest("moremesecons_mesechest:mesechest_locked", {
|
|||
}
|
||||
})
|
||||
|
||||
minetest.register_node = old_minetest_register_node
|
||||
minetest.register_lbm = old_minetest_register_lbm
|
||||
local moremesecons_chests = {}
|
||||
|
||||
for _, chest in ipairs({"moremesecons_mesechest:mesechest", "moremesecons_mesechest:mesechest_locked",
|
||||
"moremesecons_mesechest:mesechest_open", "moremesecons_mesechest:mesechest_locked_open"}) do
|
||||
local old_def = minetest.registered_nodes[chest]
|
||||
|
||||
local old_on_metadata_inventory_put = old_def.on_metadata_inventory_put
|
||||
local old_on_metadata_inventory_take = old_def.on_metadata_inventory_take
|
||||
local old_on_rightclick = old_def.on_rightclick
|
||||
|
||||
local override = {}
|
||||
override.on_metadata_inventory_put = function(pos, ...)
|
||||
old_on_metadata_inventory_put(pos, ...)
|
||||
mesecon.receptor_on(pos, {mesechest_get_output_rules(minetest.get_node(pos))[2]})
|
||||
minetest.after(1, function(pos)
|
||||
mesecon.receptor_off(pos, {mesechest_get_output_rules(minetest.get_node(pos))[2]})
|
||||
end, pos)
|
||||
end
|
||||
override.on_metadata_inventory_take = function(pos, ...)
|
||||
old_on_metadata_inventory_take(pos, ...)
|
||||
mesecon.receptor_on(pos, {mesechest_get_output_rules(minetest.get_node(pos))[3]})
|
||||
minetest.after(1, function(pos)
|
||||
mesecon.receptor_off(pos, {mesechest_get_output_rules(minetest.get_node(pos))[3]})
|
||||
end, pos)
|
||||
end
|
||||
override.on_rightclick = function(pos, node, clicker, ...)
|
||||
if old_on_rightclick(pos, node, clicker, ...) == nil then
|
||||
mesecon.receptor_on(pos, {mesechest_get_output_rules(node)[1]})
|
||||
end
|
||||
end
|
||||
|
||||
minetest.override_item(chest, override)
|
||||
moremesecons_chests[chest] = true
|
||||
end
|
||||
|
||||
-- if the chest is getting closed, turn the signal off
|
||||
-- luacheck: ignore 122
|
||||
local old_lid_close = default.chest.chest_lid_close
|
||||
function default.chest.chest_lid_close(pn)
|
||||
local pos = default.chest.open_chests[pn].pos
|
||||
-- old_lid_close will return true if the chest won't be closed
|
||||
if old_lid_close(pn) then
|
||||
return true
|
||||
end
|
||||
local node = minetest.get_node(pos)
|
||||
if moremesecons_chests[node.name] then
|
||||
mesecon.receptor_off(pos, {mesechest_get_output_rules(node)[1]})
|
||||
end
|
||||
end
|
||||
|
||||
minetest.register_craft({
|
||||
output = "moremesecons_mesechest:mesechest",
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
name = moremesecons_mesechest
|
||||
depends = default,mesecons
|
|
@ -1,4 +0,0 @@
|
|||
mesecons
|
||||
mesecons_materials
|
||||
moremesecons_utils
|
||||
craft_guide?
|
|
@ -0,0 +1,3 @@
|
|||
name = moremesecons_playerkiller
|
||||
depends = mesecons,mesecons_materials,moremesecons_utils
|
||||
optional_depends = craft_guide
|
|
@ -1,5 +0,0 @@
|
|||
mesecons
|
||||
mesecons_noteblock
|
||||
moremesecons_utils
|
||||
default
|
||||
craft_guide?
|
|
@ -0,0 +1,3 @@
|
|||
name = moremesecons_sayer
|
||||
depends = mesecons,mesecons_noteblock,moremesecons_utils,default
|
||||
optional_depends = craft_guide
|
|
@ -1,2 +0,0 @@
|
|||
mesecons
|
||||
craft_guide?
|
|
@ -0,0 +1,3 @@
|
|||
name = moremesecons_signalchanger
|
||||
depends = mesecons
|
||||
optional_depends = craft_guide
|
|
@ -1,2 +0,0 @@
|
|||
mesecons
|
||||
craft_guide?
|
|
@ -0,0 +1,3 @@
|
|||
name = moremesecons_switchtorch
|
||||
depends = mesecons
|
||||
optional_depends = craft_guide
|
|
@ -1,3 +0,0 @@
|
|||
mesecons
|
||||
moremesecons_utils
|
||||
craft_guide?
|
|
@ -0,0 +1,3 @@
|
|||
name = moremesecons_teleporter
|
||||
depends = mesecons,moremesecons_utils
|
||||
optional_depends = craft_guide
|
|
@ -1,2 +0,0 @@
|
|||
mesecons
|
||||
craft_guide?
|
|
@ -0,0 +1,3 @@
|
|||
name = moremesecons_timegate
|
||||
depends = mesecons
|
||||
optional_depends = craft_guide
|
|
@ -0,0 +1,2 @@
|
|||
name = moremesecons_utils
|
||||
description = Various helping functions for moremesecons
|
|
@ -1,4 +0,0 @@
|
|||
mesecons
|
||||
moremesecons_utils
|
||||
digilines?
|
||||
craft_guide?
|
|
@ -0,0 +1,3 @@
|
|||
name = moremesecons_wireless
|
||||
depends = mesecons,moremesecons_utils
|
||||
optional_depends = digilines,craft_guide
|
|
@ -13,6 +13,10 @@ moremesecons_commandblock.authorized_commands (Authorized commands) string tell
|
|||
# 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_commandblock.nearest_max_distance (Nearest player maximum distance) float 8
|
||||
|
||||
[Entity Detector]
|
||||
|
||||
moremesecons_entity_detector.max_radius (Maximum entity detector radius) float 16 0
|
||||
|
||||
[Signal Jammer]
|
||||
|
||||
# Jammer action range
|
||||
|
|
Loading…
Reference in New Issue