diff options
author | Alexander Harkness <bearbin@gmail.com> | 2013-08-02 08:48:47 +0200 |
---|---|---|
committer | Alexander Harkness <bearbin@gmail.com> | 2013-08-02 08:48:47 +0200 |
commit | 207a45217115e19d25df5dbadb3ac38b7f6dadf1 (patch) | |
tree | 293b9fa520e5b55c176fa5d398b585d9762b5c8d /MCServer/Plugins/Core/onbreakplaceblock.lua | |
parent | Implemented OnPlayerRightClickingEntity() hook (diff) | |
download | cuberite-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.lua | 184 |
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 |