+ Added isSign check to prevent joining on non BlockHunt sign.

This commit is contained in:
Steffion 2013-08-10 20:45:42 +02:00
parent a40a56fbb3
commit 872cd6aef0
2 changed files with 33 additions and 15 deletions

View File

@ -2,6 +2,7 @@ package nl.Steffion.BlockHunt.Listeners;
import nl.Steffion.BlockHunt.Arena; import nl.Steffion.BlockHunt.Arena;
import nl.Steffion.BlockHunt.ArenaHandler; import nl.Steffion.BlockHunt.ArenaHandler;
import nl.Steffion.BlockHunt.SignsHandler;
import nl.Steffion.BlockHunt.W; import nl.Steffion.BlockHunt.W;
import nl.Steffion.BlockHunt.Managers.ConfigC; import nl.Steffion.BlockHunt.Managers.ConfigC;
import nl.Steffion.BlockHunt.Managers.MessageM; import nl.Steffion.BlockHunt.Managers.MessageM;
@ -86,21 +87,25 @@ public class OnPlayerInteractEvent implements Listener {
.equals(Material.SIGN_POST) .equals(Material.SIGN_POST)
|| event.getClickedBlock().getType() || event.getClickedBlock().getType()
.equals(Material.WALL_SIGN)) { .equals(Material.WALL_SIGN)) {
Sign sign = (Sign) event.getClickedBlock().getState(); if (SignsHandler.isSign(new LocationSerializable(event
if (sign.getLine(1) != null) { .getClickedBlock().getLocation()))) {
if (sign.getLine(1).contains("LEAVE")) { Sign sign = (Sign) event.getClickedBlock().getState();
if (PlayerM.hasPerm(player, PermsC.joinsign, true)) { if (sign.getLine(1) != null) {
ArenaHandler.playerLeaveArena(player, true, if (sign.getLine(1).contains("LEAVE")) {
true); if (PlayerM.hasPerm(player, PermsC.joinsign,
} true)) {
} else { ArenaHandler.playerLeaveArena(player, true,
for (Arena arena : W.arenaList) { true);
if (sign.getLines()[1] }
.contains(arena.arenaName)) { } else {
if (PlayerM.hasPerm(player, for (Arena arena : W.arenaList) {
PermsC.joinsign, true)) { if (sign.getLines()[1]
ArenaHandler.playerJoinArena(player, .contains(arena.arenaName)) {
arena.arenaName); if (PlayerM.hasPerm(player,
PermsC.joinsign, true)) {
ArenaHandler.playerJoinArena(
player, arena.arenaName);
}
} }
} }
} }

View File

@ -68,6 +68,19 @@ public class SignsHandler {
} }
} }
public static boolean isSign(LocationSerializable location) {
for (String sign : W.signs.getFile().getKeys(false)) {
LocationSerializable loc = new LocationSerializable(
(LocationSerializable) W.signs.getFile().get(
sign + ".location"));
if (loc.equals(location)) {
return true;
}
}
return false;
}
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
public static void updateSigns() { public static void updateSigns() {
W.signs.load(); W.signs.load();