mirror of
https://notabug.org/TenPlus1/protector.git
synced 2025-01-09 18:47:33 +01:00
Flipped horizontal AND vertical thanks to auouymous
This commit is contained in:
parent
f5dd6da563
commit
04166fc7e4
21
README.md
21
README.md
@ -56,3 +56,24 @@ remove all names from list
|
||||
|
||||
Whenever a player is near any protectors with name1 or name2 then it will be
|
||||
replaced by an air block.
|
||||
|
||||
|
||||
The following lines can be added to your minetest.conf file to configure specific features of the mod:
|
||||
|
||||
protector_radius = 5
|
||||
- Sets the area around each protection node so that other players cannot dig, place or enter through protected doors or chests.
|
||||
|
||||
protector_pvp = true
|
||||
- true or false this setting disabled pvp inside of protected areas for all players apart from those listed on the protector node.
|
||||
|
||||
protector_pvp_spawn = 10
|
||||
- Sets an area 10 nodes around spawn where pvp is disabled completely.
|
||||
|
||||
protector_drop = true
|
||||
- When true players who dig inside a protected area will automatically drop tools to stop them going any further.
|
||||
|
||||
protector_hurt = 2
|
||||
- When set to above 0, players digging in protected areas will be hurt by 2 health points (or whichever number it's set to)
|
||||
|
||||
protector_flip = true
|
||||
- When true players who dig inside a protected area will flipped around to stop them using lag to grief into someone else's build
|
||||
|
34
init.lua
34
init.lua
@ -247,26 +247,32 @@ function minetest.is_protected(pos, digger)
|
||||
player:set_hp(player:get_hp() - protector.hurt)
|
||||
end
|
||||
|
||||
-- flip player around when protection violated
|
||||
-- flip player when protection violated
|
||||
if protector.flip
|
||||
and player then
|
||||
|
||||
-- yaw + 180°
|
||||
local yaw = player:get_look_yaw() + math.pi
|
||||
|
||||
if yaw > 2 * math.pi then
|
||||
yaw = yaw - 2 * math.pi
|
||||
end
|
||||
|
||||
player:set_look_yaw(yaw)
|
||||
|
||||
-- invert pitch
|
||||
player:set_look_vertical(-player:get_look_vertical())
|
||||
|
||||
-- if digging below player, move up 1 block
|
||||
local pla_pos = player:getpos()
|
||||
local vec = {
|
||||
x = pos.x - pla_pos.x,
|
||||
y = pos.y - pla_pos.y,
|
||||
z = pos.z - pla_pos.z
|
||||
}
|
||||
if vec.x ~= 0
|
||||
and vec.z ~= 0 then
|
||||
|
||||
local yaw = math.atan(vec.z / vec.x) + 3 * math.pi / 2
|
||||
if pos.y < pla_pos.y then
|
||||
|
||||
if pos.x > pla_pos.x then
|
||||
yaw = yaw + math.pi
|
||||
end
|
||||
|
||||
player:set_look_yaw(yaw)
|
||||
player:setpos({
|
||||
x = pla_pos.x,
|
||||
y = pla_pos.y + 1,
|
||||
z = pla_pos.z
|
||||
})
|
||||
end
|
||||
end
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user