Added permission for border bypass

Allows players with permission "worldborder.bypass" to bypass border checks.
This commit is contained in:
guyag 2012-10-10 21:30:30 +02:00
parent ca7e2bbde7
commit fe61b045d9
1 changed files with 30 additions and 28 deletions

View File

@ -46,37 +46,39 @@ public class BorderCheckTask implements Runnable
if (border.insideBorder(loc.getX(), loc.getZ(), Config.ShapeRound()))
return null;
Location newLoc = newLocation(player, loc, border);
if(!player.hasPermission("worldborder.bypass") {
Location newLoc = newLocation(player, loc, border);
if (Config.whooshEffect())
{ // give some particle and sound effects where the player was beyond the border
world.playEffect(loc, Effect.ENDER_SIGNAL, 0);
world.playEffect(loc, Effect.ENDER_SIGNAL, 0);
world.playEffect(loc, Effect.SMOKE, 4);
world.playEffect(loc, Effect.SMOKE, 4);
world.playEffect(loc, Effect.SMOKE, 4);
world.playEffect(loc, Effect.GHAST_SHOOT, 0);
}
if (returnLocationOnly)
return newLoc;
if (!player.isInsideVehicle())
player.teleport(newLoc);
else
{
Entity ride = player.getVehicle();
if (ride != null)
{ // vehicles need to be offset vertically and have velocity stopped
double vertOffset = ride.getLocation().getY() - loc.getY();
newLoc.setY(newLoc.getY() + vertOffset);
ride.setVelocity(new Vector(0, 0, 0));
ride.teleport(newLoc);
if (Config.whooshEffect())
{ // give some particle and sound effects where the player was beyond the border
world.playEffect(loc, Effect.ENDER_SIGNAL, 0);
world.playEffect(loc, Effect.ENDER_SIGNAL, 0);
world.playEffect(loc, Effect.SMOKE, 4);
world.playEffect(loc, Effect.SMOKE, 4);
world.playEffect(loc, Effect.SMOKE, 4);
world.playEffect(loc, Effect.GHAST_SHOOT, 0);
}
else
{ // if player.getVehicle() returns null (when riding a pig on older Bukkit releases, for instance), player has to be ejected
player.leaveVehicle();
if (returnLocationOnly)
return newLoc;
if (!player.isInsideVehicle())
player.teleport(newLoc);
else
{
Entity ride = player.getVehicle();
if (ride != null)
{ // vehicles need to be offset vertically and have velocity stopped
double vertOffset = ride.getLocation().getY() - loc.getY();
newLoc.setY(newLoc.getY() + vertOffset);
ride.setVelocity(new Vector(0, 0, 0));
ride.teleport(newLoc);
}
else
{ // if player.getVehicle() returns null (when riding a pig on older Bukkit releases, for instance), player has to be ejected
player.leaveVehicle();
player.teleport(newLoc);
}
}
}