Fix antisabotage bugs and make to work with paxel(#731)
* Fix crucial bugs with antisabotage Fix possible crashes, infinite items, and any related issues * Make sabotage into function to be used with paxel * Fix paxel to work with antisabotage * Fix whitespace for luacheck * Update mods/pvp/antisabotage/init.lua Remove unnecessary newline Co-authored-by: David Leal <halfpacho@gmail.com> * Update function * Update function name * Add check for antisabotage * Remove whitespace for luacheck * Add antisabotage as an optional dependency * Remove more whitespace Co-authored-by: David Leal <halfpacho@gmail.com> * Fix optional depends dev wiki lied to me :( Co-authored-by: David Leal <halfpacho@gmail.com> * Fix up a comment P.1 * Move a line in mod.conf * Fix up comments and spacing Co-authored-by: David Leal <halfpacho@gmail.com> Co-authored-by: LoneWolfHT <lonewolf04361@gmail.com>
This commit is contained in:
parent
88c326f13d
commit
10881d4211
3 changed files with 26 additions and 8 deletions
|
@ -151,9 +151,15 @@ local function remove_pillar(pos, pname)
|
||||||
local name = minetest.get_node(pos).name
|
local name = minetest.get_node(pos).name
|
||||||
|
|
||||||
if name:find("default") and isdiggable(name) then
|
if name:find("default") and isdiggable(name) then
|
||||||
|
local player = minetest.get_player_by_name(pname)
|
||||||
|
|
||||||
|
if minetest.get_modpath("antisabotage") then
|
||||||
|
-- Fix paxel being capable of mining blocks under teammates
|
||||||
|
if antisabotage.is_sabotage(pos, minetest.get_node(pos), player) then return end
|
||||||
|
end
|
||||||
|
|
||||||
minetest.dig_node(pos)
|
minetest.dig_node(pos)
|
||||||
|
|
||||||
local player = minetest.get_player_by_name(pname)
|
|
||||||
if player and diggers[pname] and type(diggers[pname]) ~= "table" then
|
if player and diggers[pname] and type(diggers[pname]) ~= "table" then
|
||||||
if vector.distance(player:get_pos(), pos) <= DIG_DIST_LIMIT then
|
if vector.distance(player:get_pos(), pos) <= DIG_DIST_LIMIT then
|
||||||
pos.y = pos.y + 1
|
pos.y = pos.y + 1
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
name = ctf_classes
|
name = ctf_classes
|
||||||
depends = ctf, ctf_flag, ctf_colors, ctf_map_core, ctf_stats, ctf_bandages, physics, shooter, hpregen, give_initial_stuff, dropondie, crafting, sniper_rifles, grenades, furnace, ctf_respawn_immunity, ctf_marker, ctf_match
|
|
||||||
description = Adds classes, including knight, shooter, and medic
|
description = Adds classes, including knight, shooter, and medic
|
||||||
|
depends = ctf, ctf_flag, ctf_colors, ctf_map_core, ctf_stats, ctf_bandages, physics, shooter, hpregen, give_initial_stuff, dropondie, crafting, sniper_rifles, grenades, furnace, ctf_respawn_immunity, ctf_marker, ctf_match
|
||||||
|
optional_depends = antisabotage
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
-- Code by Apelta. Mutelated by Lone_Wolf
|
-- Code by Apelta. Mutelated by Lone_Wolf. Mutelated again by Apelta.
|
||||||
|
antisabotage = {}
|
||||||
minetest.register_on_dignode(function(pos, oldnode, digger)
|
|
||||||
if not digger:is_player() then return end
|
|
||||||
|
|
||||||
|
function antisabotage.is_sabotage(pos, oldnode, digger) -- used for paxel
|
||||||
local dname = digger:get_player_name()
|
local dname = digger:get_player_name()
|
||||||
|
|
||||||
for _, player in pairs(minetest.get_connected_players()) do
|
for _, player in pairs(minetest.get_connected_players()) do
|
||||||
local name = player:get_player_name()
|
local name = player:get_player_name()
|
||||||
|
|
||||||
|
@ -12,10 +12,21 @@ minetest.register_on_dignode(function(pos, oldnode, digger)
|
||||||
|
|
||||||
if math.floor(player_pos.y) == pos.y and vector.distance(player_pos, pos) <= 1.5 then
|
if math.floor(player_pos.y) == pos.y and vector.distance(player_pos, pos) <= 1.5 then
|
||||||
minetest.set_node(pos, oldnode)
|
minetest.set_node(pos, oldnode)
|
||||||
digger:get_inventory():remove_item("main", ItemStack(oldnode))
|
|
||||||
|
-- Remove all node drops
|
||||||
|
for _, item in pairs(minetest.get_node_drops(oldnode)) do
|
||||||
|
digger:get_inventory():remove_item("main", ItemStack(item))
|
||||||
|
end
|
||||||
|
|
||||||
minetest.chat_send_player(dname, "You can't mine blocks under your teammates!")
|
minetest.chat_send_player(dname, "You can't mine blocks under your teammates!")
|
||||||
return
|
return true
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
minetest.register_on_dignode(function(pos, oldnode, digger)
|
||||||
|
if not digger:is_player() then return end
|
||||||
|
|
||||||
|
antisabotage.is_sabotage(pos, oldnode, digger)
|
||||||
end)
|
end)
|
||||||
|
|
Loading…
Reference in a new issue