summaryrefslogtreecommitdiffstats
path: root/MCServer/Plugins/Core/onbreakplaceblock.lua
diff options
context:
space:
mode:
authorAlexander Harkness <bearbin@gmail.com>2013-08-02 08:48:47 +0200
committerAlexander Harkness <bearbin@gmail.com>2013-08-02 08:48:47 +0200
commit207a45217115e19d25df5dbadb3ac38b7f6dadf1 (patch)
tree293b9fa520e5b55c176fa5d398b585d9762b5c8d /MCServer/Plugins/Core/onbreakplaceblock.lua
parentImplemented OnPlayerRightClickingEntity() hook (diff)
downloadcuberite-207a45217115e19d25df5dbadb3ac38b7f6dadf1.tar
cuberite-207a45217115e19d25df5dbadb3ac38b7f6dadf1.tar.gz
cuberite-207a45217115e19d25df5dbadb3ac38b7f6dadf1.tar.bz2
cuberite-207a45217115e19d25df5dbadb3ac38b7f6dadf1.tar.lz
cuberite-207a45217115e19d25df5dbadb3ac38b7f6dadf1.tar.xz
cuberite-207a45217115e19d25df5dbadb3ac38b7f6dadf1.tar.zst
cuberite-207a45217115e19d25df5dbadb3ac38b7f6dadf1.zip
Diffstat (limited to 'MCServer/Plugins/Core/onbreakplaceblock.lua')
-rw-r--r--MCServer/Plugins/Core/onbreakplaceblock.lua184
1 files changed, 92 insertions, 92 deletions
diff --git a/MCServer/Plugins/Core/onbreakplaceblock.lua b/MCServer/Plugins/Core/onbreakplaceblock.lua
index 49b3226c2..5eddc1511 100644
--- a/MCServer/Plugins/Core/onbreakplaceblock.lua
+++ b/MCServer/Plugins/Core/onbreakplaceblock.lua
@@ -4,116 +4,116 @@ function OnPlayerPlacingBlock(Player, BlockX, BlockY, BlockZ, BlockFace, CursorX
return false
end
- local PROTECTRADIUS = WorldsSpawnProtect[Player:GetWorld():GetName()];
+ local PROTECTRADIUS = WorldsSpawnProtect[Player:GetWorld():GetName()];
if not (Player:HasPermission("core.build")) then
return true
else
- if not (Player:HasPermission("core.spawnprotect.bypass")) and not (PROTECTRADIUS == 0) then
- local World = Player:GetWorld()
- local xcoord = World:GetSpawnX()
- local ycoord = World:GetSpawnY()
- local zcoord = World:GetSpawnZ()
+ if not (Player:HasPermission("core.spawnprotect.bypass")) and not (PROTECTRADIUS == 0) then
+ local World = Player:GetWorld()
+ local xcoord = World:GetSpawnX()
+ local ycoord = World:GetSpawnY()
+ local zcoord = World:GetSpawnZ()
- if not ((BlockX <= (xcoord + PROTECTRADIUS)) and (BlockX >= (xcoord - PROTECTRADIUS))) then
- return false -- Not in spawn area.
- end
- if not ((BlockY <= (ycoord + PROTECTRADIUS)) and (BlockY >= (ycoord - PROTECTRADIUS))) then
- return false -- Not in spawn area.
- end
- if not ((BlockZ <= (zcoord + PROTECTRADIUS)) and (BlockZ >= (zcoord - PROTECTRADIUS))) then
- return false -- Not in spawn area.
- end
+ if not ((BlockX <= (xcoord + PROTECTRADIUS)) and (BlockX >= (xcoord - PROTECTRADIUS))) then
+ return false -- Not in spawn area.
+ end
+ if not ((BlockY <= (ycoord + PROTECTRADIUS)) and (BlockY >= (ycoord - PROTECTRADIUS))) then
+ return false -- Not in spawn area.
+ end
+ if not ((BlockZ <= (zcoord + PROTECTRADIUS)) and (BlockZ >= (zcoord - PROTECTRADIUS))) then
+ return false -- Not in spawn area.
+ end
- --WriteLog(1, BlockX, BlockY, BlockZ, Player:GetName(), id, meta)
+ --WriteLog(1, BlockX, BlockY, BlockZ, Player:GetName(), id, meta)
- WarnPlayer(Player)
+ WarnPlayer(Player)
- return true
- else
- if BlockType == "50" or BlockType == "76" then
- local X = BlockX
- local Y = BlockY
- local Z = BlockZ
- X, Y, Z = AddFaceDirection(X, Y, Z, BlockFace)
- if (Y >= 256 or Y < 0) then
- return true
- end
-
- local CheckCollision = function(Player)
- -- drop the decimals, we only care about the full block X,Y,Z
- local PlayerX = math.floor(Player:GetPosX(), 0)
- local PlayerY = math.floor(Player:GetPosY(), 0)
- local PlayerZ = math.floor(Player:GetPosZ(), 0)
-
- local collision = false
- if ((BlockFace == BLOCK_FACE_TOP) and (PlayerY == BlockY - 2) and (PlayerX == BlockX) and (PlayerZ == BlockZ)) then
- collision = true
- end
-
- if ((BlockFace == BLOCK_FACE_BOTTOM) and (PlayerY == BlockY + 1) and (PlayerX == BlockX) and (PlayerZ == BlockZ)) then
- collision = true
- end
-
- if ((BlockFace == BLOCK_FACE_NORTH) and (PlayerX == BlockX) and (PlayerZ == BlockZ - 1)) then
- if ((PlayerY == BlockY) or (PlayerY + 1 == BlockY)) then collision = true end
- end
-
- if ((BlockFace == BLOCK_FACE_SOUTH) and (PlayerX == BlockX) and (PlayerZ == BlockZ + 1)) then
- if ((PlayerY == BlockY) or (PlayerY + 1 == BlockY)) then collision = true end
- end
-
- if ((BlockFace == BLOCK_FACE_WEST) and (PlayerX == BlockX - 1) and (PlayerZ == BlockZ)) then
- if ((PlayerY == BlockY) or (PlayerY + 1 == BlockY)) then collision = true end
- end
-
- if ((BlockFace == BLOCK_FACE_EAST) and (PlayerX == BlockX + 1) and (PlayerZ == BlockZ)) then
- if ((PlayerY == BlockY) or (PlayerY + 1 == BlockY)) then collision = true end
- end
- return collision
- end
- if (Player:GetWorld():ForEachPlayer(CheckCollision) == false) then
- return true
- end
- end
- end
- end
- return false
+ return true
+ else
+ if BlockType == "50" or BlockType == "76" then
+ local X = BlockX
+ local Y = BlockY
+ local Z = BlockZ
+ X, Y, Z = AddFaceDirection(X, Y, Z, BlockFace)
+ if (Y >= 256 or Y < 0) then
+ return true
+ end
+
+ local CheckCollision = function(Player)
+ -- drop the decimals, we only care about the full block X,Y,Z
+ local PlayerX = math.floor(Player:GetPosX(), 0)
+ local PlayerY = math.floor(Player:GetPosY(), 0)
+ local PlayerZ = math.floor(Player:GetPosZ(), 0)
+
+ local collision = false
+ if ((BlockFace == BLOCK_FACE_TOP) and (PlayerY == BlockY - 2) and (PlayerX == BlockX) and (PlayerZ == BlockZ)) then
+ collision = true
+ end
+
+ if ((BlockFace == BLOCK_FACE_BOTTOM) and (PlayerY == BlockY + 1) and (PlayerX == BlockX) and (PlayerZ == BlockZ)) then
+ collision = true
+ end
+
+ if ((BlockFace == BLOCK_FACE_NORTH) and (PlayerX == BlockX) and (PlayerZ == BlockZ - 1)) then
+ if ((PlayerY == BlockY) or (PlayerY + 1 == BlockY)) then collision = true end
+ end
+
+ if ((BlockFace == BLOCK_FACE_SOUTH) and (PlayerX == BlockX) and (PlayerZ == BlockZ + 1)) then
+ if ((PlayerY == BlockY) or (PlayerY + 1 == BlockY)) then collision = true end
+ end
+
+ if ((BlockFace == BLOCK_FACE_WEST) and (PlayerX == BlockX - 1) and (PlayerZ == BlockZ)) then
+ if ((PlayerY == BlockY) or (PlayerY + 1 == BlockY)) then collision = true end
+ end
+
+ if ((BlockFace == BLOCK_FACE_EAST) and (PlayerX == BlockX + 1) and (PlayerZ == BlockZ)) then
+ if ((PlayerY == BlockY) or (PlayerY + 1 == BlockY)) then collision = true end
+ end
+ return collision
+ end
+ if (Player:GetWorld():ForEachPlayer(CheckCollision) == false) then
+ return true
+ end
+ end
+ end
+ end
+ return false
end
function OnPlayerBreakingBlock(Player, BlockX, BlockY, BlockZ, BlockFace, Status, OldBlockType, OldBlockMeta)
- -- dont check if the direction is in the air
+ -- dont check if the direction is in the air
if (BlockFace ~= -1) then
- local PROTECTRADIUS = WorldsSpawnProtect[Player:GetWorld():GetName()];
+ local PROTECTRADIUS = WorldsSpawnProtect[Player:GetWorld():GetName()];
if not (Player:HasPermission("core.build")) then
return true
else
- if not (Player:HasPermission("core.spawnprotect.bypass")) and not (PROTECTRADIUS == 0) then
- local World = Player:GetWorld()
- local xcoord = World:GetSpawnX()
- local ycoord = World:GetSpawnY()
- local zcoord = World:GetSpawnZ()
-
- if not ((BlockX <= (xcoord + PROTECTRADIUS)) and (BlockX >= (xcoord - PROTECTRADIUS))) then
- return false -- Not in spawn area.
- end
- if not ((BlockY <= (ycoord + PROTECTRADIUS)) and (BlockY >= (ycoord - PROTECTRADIUS))) then
- return false -- Not in spawn area.
- end
- if not ((BlockZ <= (zcoord + PROTECTRADIUS)) and (BlockZ >= (zcoord - PROTECTRADIUS))) then
- return false -- Not in spawn area.
- end
-
- --WriteLog(0, BlockX, BlockY, BlockZ, Player:GetName(), id, meta)
-
- WarnPlayer(Player)
+ if not (Player:HasPermission("core.spawnprotect.bypass")) and not (PROTECTRADIUS == 0) then
+ local World = Player:GetWorld()
+ local xcoord = World:GetSpawnX()
+ local ycoord = World:GetSpawnY()
+ local zcoord = World:GetSpawnZ()
+
+ if not ((BlockX <= (xcoord + PROTECTRADIUS)) and (BlockX >= (xcoord - PROTECTRADIUS))) then
+ return false -- Not in spawn area.
+ end
+ if not ((BlockY <= (ycoord + PROTECTRADIUS)) and (BlockY >= (ycoord - PROTECTRADIUS))) then
+ return false -- Not in spawn area.
+ end
+ if not ((BlockZ <= (zcoord + PROTECTRADIUS)) and (BlockZ >= (zcoord - PROTECTRADIUS))) then
+ return false -- Not in spawn area.
+ end
+
+ --WriteLog(0, BlockX, BlockY, BlockZ, Player:GetName(), id, meta)
+
+ WarnPlayer(Player)
- return true
- end
- end
- end
+ return true
+ end
+ end
+ end
return false
end \ No newline at end of file