diff --git a/src/de/warking/schematicsystem/commands/CheckCommand.java b/src/de/warking/schematicsystem/commands/CheckCommand.java index 146510a..2b4760d 100644 --- a/src/de/warking/schematicsystem/commands/CheckCommand.java +++ b/src/de/warking/schematicsystem/commands/CheckCommand.java @@ -6,6 +6,7 @@ import com.sk89q.worldedit.bukkit.BukkitWorld; import com.sk89q.worldedit.world.World; import de.warking.hunjy.MySQL.Schematic; import de.warking.hunjy.MySQL.SchematicType; +import de.warking.hunjy.MySQL.UserGroup; import de.warking.hunjy.MySQL.WarkingUser; import de.warking.schematicsystem.SchematicSystem; import de.warking.schematicsystem.check.CheckSession; @@ -19,6 +20,7 @@ import org.bukkit.entity.Player; import java.io.File; import java.io.IOException; import java.util.HashMap; +import java.util.List; import java.util.Map; import java.util.UUID; @@ -80,6 +82,18 @@ public class CheckCommand implements CommandExecutor { return false; } } + + if(args[0].equalsIgnoreCase("cancel")) { + if(CheckSession.doesPlayerCheck(player)) { + CheckSession checkSession = CheckSession.getCheckSession(player); + checkSession.removeSchematic(); + checkSession.remove(); + player.sendMessage(SchematicSystem.PREFIX + "§aDer Prüfvorgang wurde abgebrochen!"); + return false; + } else + player.sendMessage(SchematicSystem.PREFIX + "§cDu prüfst momentan keine Schematic!"); + return false; + } return false; } @@ -132,6 +146,19 @@ public class CheckCommand implements CommandExecutor { player.sendMessage(SchematicSystem.PREFIX + "§cZum Prüfen musst du dich auf deinem Bauserver befinden!"); return false; } + + List worldPlayers = player.getWorld().getPlayers(); + for(Player players : worldPlayers) { + if(!players.getUniqueId().toString().equals(player.getWorld().getName())) { + WarkingUser warkingUsers = WarkingUser.get(players.getUniqueId()); + if(!CheckUtils.allowedToCheck(players) && + !warkingUsers.getUUID().toString().equals(WarkingUser.get(schematic.getSchemOwner()).getUUID().toString())) { + player.sendMessage(SchematicSystem.PREFIX + "§cZum Prüfen darf sich niemand außer dir, " + + "der Schematic Owner oder ein anderes zum Prüfen befähigtes Teammitglied auf deinem Bauserver befinden!"); + return false; + } + } + } for(CheckSession checkSession : CheckSession.checkSessions) { if(checkSession.getSchematic().getSchemName().equals(schematic.getSchemName()) && checkSession.getSchematic().getSchemOwner() == schematic.getSchemOwner()) { @@ -215,6 +242,7 @@ public class CheckCommand implements CommandExecutor { player.sendMessage("§8/ckeck schematic - §6Zum Checken einer Schematic"); player.sendMessage("§8/ckeck allow - §6Schematic freigeben"); player.sendMessage("§8/ckeck decline - §6Schematic nicht freigeben"); + player.sendMessage("§8/check cancel - §6Bricht das Prüfen ab"); } } } diff --git a/src/de/warking/schematicsystem/listener/PlayerJoinListener.java b/src/de/warking/schematicsystem/listener/PlayerJoinListener.java index e02975e..4d7ce83 100644 --- a/src/de/warking/schematicsystem/listener/PlayerJoinListener.java +++ b/src/de/warking/schematicsystem/listener/PlayerJoinListener.java @@ -4,8 +4,10 @@ import de.warking.hunjy.MySQL.Schematic; import de.warking.hunjy.MySQL.SchematicType; import de.warking.hunjy.MySQL.WarkingUser; import de.warking.schematicsystem.SchematicSystem; +import de.warking.schematicsystem.check.CheckSession; import de.warking.schematicsystem.check.CheckUtils; import de.warking.schematicsystem.utils.CheckedSchematic; +import org.bukkit.Bukkit; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; @@ -20,6 +22,21 @@ public class PlayerJoinListener implements Listener { @EventHandler public void handlePlayerJoin(PlayerJoinEvent event) { Player player = event.getPlayer(); + + CheckSession currentChecking = null; + for(Player players : player.getWorld().getPlayers()) { + if(CheckSession.doesPlayerCheck(players)) + currentChecking = CheckSession.getCheckSession(players); + } + if(currentChecking != null) { + if(!CheckUtils.allowedToCheck(player) && !WarkingUser.get( + currentChecking.getSchematic().getSchemOwner()).getUUID().toString() + .equals(player.getUniqueId().toString())) { + player.sendMessage(SchematicSystem.PREFIX + "§cAuf diesem Server wird momentan eine Schematic geprüft!"); + player.kickPlayer(""); + return; + } + } File file = new File(SchematicSystem.SCHEM_DIR + player.getUniqueId() + "/"); File[] files = file.listFiles();