From 02a16bbb223ed7b95f708d963ffb516e79683041 Mon Sep 17 00:00:00 2001 From: RedstoneTechnik Date: Mon, 25 Mar 2019 00:14:10 +0100 Subject: [PATCH] =?UTF-8?q?Update=201.12=20MYSQL=20Anbindung=20mit=20Core?= =?UTF-8?q?=20etc.=20Fehler=20die=20noch=20behoben=20werden=20m=C3=BCssen?= =?UTF-8?q?=20TNT=20und=20Feuer=20Schaden=20toggle=20(TNT=20und=20Feuer=20?= =?UTF-8?q?an=20und=20abschalten)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../de/pro_crafting/sawe/RegionListener.java | 47 +- .../warshipfactory/commands/CommandBau.java | 503 +++++++++--------- .../commands/CommandGamemode.java | 16 +- .../warshipfactory/commands/CommandGui.java | 101 ++-- .../commands/CommandTeleport.java | 154 +++--- .../warshipfactory/content/FactoryWorld.java | 87 +-- .../content/LagDetectorRunnable.java | 2 +- .../warshipfactory/main/WarShipFactory.java | 118 ++-- src/main/java/plugin.yml | 7 +- 9 files changed, 460 insertions(+), 575 deletions(-) diff --git a/src/main/java/de/pro_crafting/sawe/RegionListener.java b/src/main/java/de/pro_crafting/sawe/RegionListener.java index 94893dd..cfa1422 100644 --- a/src/main/java/de/pro_crafting/sawe/RegionListener.java +++ b/src/main/java/de/pro_crafting/sawe/RegionListener.java @@ -1,8 +1,13 @@ package de.pro_crafting.sawe; import java.sql.SQLException; +import java.util.UUID; +import de.warking.hunjy.MySQL.Bauwelt; +import de.warking.hunjy.MySQL.BauweltMember; +import net.minecraft.server.v1_12_R1.World; import org.bukkit.Bukkit; +import org.bukkit.Location; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; @@ -10,7 +15,6 @@ import org.bukkit.event.Listener; import org.bukkit.event.block.BlockBreakEvent; import org.bukkit.event.block.BlockBurnEvent; import org.bukkit.event.block.BlockPlaceEvent; -import org.bukkit.event.entity.EntityDamageByEntityEvent; import org.bukkit.event.entity.EntityExplodeEvent; import org.bukkit.event.player.PlayerCommandPreprocessEvent; import org.bukkit.plugin.java.JavaPlugin; @@ -18,7 +22,6 @@ import org.bukkit.plugin.java.JavaPlugin; import com.sk89q.worldedit.bukkit.WorldEditPlugin; import de.quantumnanox.warshipfactory.content.FactoryWorld; -import de.quantumnanox.warshipfactory.content.WorldPlayer; import de.quantumnanox.warshipfactory.main.WarShipFactory; public class RegionListener implements Listener { @@ -41,20 +44,18 @@ public class RegionListener implements Listener { if (p.hasPermission("bau.team")) { return; } - FactoryWorld fw = WarShipFactory.getInstance().getWorldByAddress(p.getWorld().getName()); - if (fw == null) { + if (BauweltMember.getMembers(event.getPlayer().getWorld().getUID()) == null) { p.sendMessage("§cDu darfst hier kein Worldedit benutzen."); event.setCancelled(true); return; } - WorldPlayer wp = fw.getMember(p.getUniqueId()); - if (wp != null) { - if (wp.canWorldEdit == false || fw == null) { + if (BauweltMember.getMembers(p.getUniqueId()) != null) { + if (BauweltMember.getBauMember(event.getPlayer().getWorld().getUID(), p.getUniqueId()).isWorldEdit() == false || Bukkit.getWorld(p.getUniqueId()) == null) { p.sendMessage("§cDu darfst hier kein Worldedit benutzen."); event.setCancelled(true); } } else { - if (fw.getOwner().equals(p.getUniqueId())) { + if (Bauwelt.getBauwelt(p.getUniqueId()).getUUID().equals(p.getUniqueId())) { return; } p.sendMessage("§cDu darfst hier kein Worldedit benutzen."); @@ -72,20 +73,18 @@ public class RegionListener implements Listener { if (p.hasPermission("bau.team")) { return; } - FactoryWorld fw = WarShipFactory.getInstance().getWorldByAddress(p.getWorld().getName()); - if (fw == null) { + if (BauweltMember.getMembers(p.getUniqueId()) == null) { p.sendMessage("§cDu darfst nicht bauen."); e.setCancelled(true); return; } - WorldPlayer wp = fw.getMember(p.getUniqueId()); - if (wp != null) { - if (wp.canBuild == false) { + if (BauweltMember.getMembers(e.getPlayer().getWorld().getUID()) != null) { + if (BauweltMember.getBauMember(e.getPlayer().getWorld().getUID(), p.getUniqueId()).isBuild() == false) { p.sendMessage("§cDu darfst nicht bauen."); e.setCancelled(true); } } else { - if (fw.getOwner().equals(p.getUniqueId())) { + if (Bauwelt.getBauwelt(p.getUniqueId()).getUUID().equals(p.getUniqueId())) { return; } e.setCancelled(true); @@ -102,20 +101,18 @@ public class RegionListener implements Listener { if (p.hasPermission("bau.team")) { return; } - FactoryWorld fw = WarShipFactory.getInstance().getWorldByAddress(p.getWorld().getName()); - if (fw == null) { + if (Bukkit.getWorld(e.getPlayer().getWorld().getUID()) == null) { p.sendMessage("§cDu darfst nicht bauen."); e.setCancelled(true); return; } - WorldPlayer wp = fw.getMember(p.getUniqueId()); - if (wp != null) { - if (wp.canBuild == false) { + if (BauweltMember.getMembers(p.getUniqueId()) != null) { + if (BauweltMember.getBauMember(e.getPlayer().getWorld().getUID(), p.getUniqueId()).isBuild() == false) { p.sendMessage("§cDu darfst nicht bauen."); e.setCancelled(true); } } else { - if (fw.getOwner().equals(p.getUniqueId())) { + if (Bauwelt.getBauwelt(p.getUniqueId()).getUUID().equals(p.getUniqueId())) { return; } e.setCancelled(true); @@ -133,17 +130,15 @@ public class RegionListener implements Listener { @EventHandler public void onExplode(EntityExplodeEvent e) { - FactoryWorld fw = WarShipFactory.getInstance().getWorldByAddress(e.getEntity().getWorld().getName()); - if (fw != null) { - if (fw.isTntDamage() == false) e.setCancelled(true); + if (Bukkit.getWorld(e.getLocation().getWorld().getUID()) != null) { + if (Bauwelt.getBauwelt(Bukkit.getWorld(e.getLocation().getWorld().toString()).getUID()).isTNTDmg() == false) e.setCancelled(true); } } @EventHandler public void onFireDamage(BlockBurnEvent e) { - FactoryWorld fw = WarShipFactory.getInstance().getWorldByAddress(e.getIgnitingBlock().getWorld().getName()); - if (fw != null) { - if (fw.isFireDamage() == false) e.setCancelled(true); + if (Bukkit.getWorld(e.getIgnitingBlock().getWorld().getUID()) != null) { + if (Bauwelt.getBauwelt(e.getIgnitingBlock().getWorld().getUID()).isFireDmg() == false) e.setCancelled(true); } } diff --git a/src/main/java/de/quantumnanox/warshipfactory/commands/CommandBau.java b/src/main/java/de/quantumnanox/warshipfactory/commands/CommandBau.java index 63bd68b..23b2a29 100644 --- a/src/main/java/de/quantumnanox/warshipfactory/commands/CommandBau.java +++ b/src/main/java/de/quantumnanox/warshipfactory/commands/CommandBau.java @@ -15,6 +15,12 @@ import com.sk89q.worldedit.bukkit.BukkitWorld; import com.sk89q.worldedit.schematic.MCEditSchematicFormat; import com.sk89q.worldguard.protection.regions.ProtectedRegion; import de.quantumnanox.warshipfactory.config.Config; +import de.quantumnanox.warshipfactory.content.LagDetectorRunnable; +import de.warking.hunjy.MySQL.Bauwelt; +import de.warking.hunjy.MySQL.BauweltMember; +import de.warking.hunjy.MySQL.WarkingUser; +import lombok.Getter; +import org.apache.commons.io.FileUtils; import org.bukkit.*; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @@ -23,25 +29,29 @@ import de.pro_crafting.commandframework.Command; import de.quantumnanox.warshipfactory.content.UUIDFetcher; import de.pro_crafting.commandframework.CommandArgs; import de.quantumnanox.warshipfactory.content.FactoryWorld; -import de.quantumnanox.warshipfactory.content.WorldPlayer; import de.quantumnanox.warshipfactory.main.WarShipFactory; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; -import sun.security.x509.UniqueIdentity; +import org.bukkit.scheduler.BukkitTask; public class CommandBau { + @Getter + private World wrapped; + @Getter + private boolean loading; + private BukkitTask task; public Config config; - @Command(name = "bau") + @Command(name = "bau", aliases = "gs") public void onBau(CommandArgs args) { CommandSender s = args.getSender(); s.sendMessage(WarShipFactory.S_PREFIX + "BauFactory by Exceptionflug updated by Diamant-ix.de Team v" + "1.2"); s.sendMessage(WarShipFactory.S_PREFIX + "Um eine Liste mit Befehlen zu erhalten, gib §t/bau help §7ein."); } - @Command(name = "bau.help", inGameOnly = true) + @Command(name = "bau.help", aliases = "gs.help", inGameOnly = true) public void onHelp(CommandArgs args) { Player p = args.getPlayer(); p.sendMessage(WarShipFactory.S_PREFIX + "Hilfe Seite 1 von 2:"); @@ -62,7 +72,8 @@ public class CommandBau { p.sendMessage("§8/bau info - §6Zeigt dir Infos über die aktuelle Welt"); p.sendMessage("§8/bau gui - §6Öffnet eine GUI"); } - @Command(name = "bau.help.2", inGameOnly = true) + + @Command(name = "bau.help.2", aliases = "gs.help.2", inGameOnly = true) public void onHelp2(CommandArgs args) { Player p = args.getPlayer(); p.sendMessage(WarShipFactory.S_PREFIX + "Hilfe Seite 2 von 2:"); @@ -75,68 +86,71 @@ public class CommandBau { p.sendMessage("§8/bau togglereplace - §6Ändert den Zustand für : Darf ein Spieler in einer Region replacen"); p.sendMessage("§8/bau togglechgm - §6Ändert den Zustand für: Darf ein Spieler seinen Spielmodus ändern?"); } - @Command(name = "bau.home", inGameOnly = true) + + @Command(name = "bau.home", aliases = "gs.home", inGameOnly = true) public void onHome(CommandArgs args) { Player p = args.getPlayer(); - FactoryWorld fw = WarShipFactory.getInstance().getWorldFromOwner(p.getUniqueId()); - if (fw == null) { - fw = new FactoryWorld(p.getUniqueId()); - WarShipFactory.getInstance().factoryWorlds.register(fw); + if (Bauwelt.getBauwelt(p.getUniqueId()) == null) { + new Bauwelt(p.getUniqueId(), false, false); } - if (fw.isLoading()) { - p.sendMessage(WarShipFactory.S_PREFIX + "§cEinen Moment Geduld! Die Welt lädt..."); - return; - } - if (fw.getWrapped() == null) { + if (Bukkit.getWorld(p.getUniqueId()) == null) try { p.sendMessage(WarShipFactory.S_PREFIX + "§aEinen Moment bitte... Deine Welt wird vorbereitet."); - fw.loadWorld(); + loading = true; + File world = new File("" + p.getUniqueId()); + File region = new File("plugins/WorldGuard/worlds/" + p.getUniqueId()); + if (region.exists() && region.isDirectory()) { + } else { + FileUtils.copyDirectory(new File(WarShipFactory.getInstance().config.regionDir), new File("plugins/WorldGuard/worlds/" + p.getUniqueId())); + } + if (world.exists() && world.isDirectory()) { + wrapped = Bukkit.createWorld(new WorldCreator("" + p.getUniqueId())); + } else { + FileUtils.copyDirectory(new File(WarShipFactory.getInstance().config.backupDir), new File("" + p.getUniqueId())); + wrapped = Bukkit.createWorld(new WorldCreator("" + p.getUniqueId())); + } + loading = false; } catch (Exception e) { p.sendMessage(WarShipFactory.S_PREFIX + "§cBeim Laden der Welt ist ein Fehler aufgetreten."); e.printStackTrace(); } - } - p.teleport(fw.getWrapped().getSpawnLocation()); - p.getInventory().clear(); + p.teleport(Bukkit.getWorld(p.getUniqueId().toString()).getSpawnLocation()); Bukkit.getScheduler().scheduleSyncDelayedTask(WarShipFactory.getInstance(), new Runnable() { - public void run() { - p.setGameMode(GameMode.CREATIVE); - } - }, 20L); + public void run () { + p.setGameMode(GameMode.CREATIVE); + } + },20L); - } - @Command(name = "bau.addmember", inGameOnly = true) +} + @Command(name = "bau.addmember", aliases = "gs.addmember", inGameOnly = true) public void onAdd(CommandArgs args) { Player p = args.getPlayer(); - FactoryWorld fw = WarShipFactory.getInstance().getWorldFromOwner(p.getUniqueId()); - if (fw == null) { - p.sendMessage(WarShipFactory.S_PREFIX + "§cDu hast noch keine Welt."); - return; - } + if (Bauwelt.getBauwelt(p.getUniqueId()).getUUID() == null) { + p.sendMessage(WarShipFactory.S_PREFIX + "§cDu hast noch keine Welt."); + return; + } if (args.length() == 0) { - p.sendMessage(WarShipFactory.S_PREFIX + "§bBenutzung: /bau addmember "); - return; - } - UUID id = UUIDFetcher.getUUID(args.getArgs(0)); + p.sendMessage(WarShipFactory.S_PREFIX + "§bBenutzung: /bau addmember "); + return; + } + UUID id = UUIDFetcher.getUUID(args.getArgs(0)); if (id == null) { - p.sendMessage(WarShipFactory.S_PREFIX + "§cUnbekannter Spieler"); - return; - } - if (fw.getMember(id) != null) { - p.sendMessage(WarShipFactory.S_PREFIX + "§cDieser Spieler ist bereits Mitglied auf deiner Welt"); - return; - } - WorldPlayer wp = new WorldPlayer(id, fw); - wp.canBuild = true; - fw.getMembers().register(wp); + p.sendMessage(WarShipFactory.S_PREFIX + "§cUnbekannter Spieler"); + return; + } + if (BauweltMember.getBauMember(p.getUniqueId(), id) != null) { + p.sendMessage(WarShipFactory.S_PREFIX + "§cDieser Spieler ist bereits Mitglied auf deiner Welt"); + return; + } + new BauweltMember(p.getUniqueId(), id, true, false, false, false, false); p.sendMessage(WarShipFactory.S_PREFIX + "§aDer Spieler wurde zu deiner Welt hinzugefügt."); - wp.getPlayer().sendMessage(WarShipFactory.S_PREFIX + "§aDu wurdest zu der Welt von §6" + p.getName() + " §ahinzugefügt"); -} - @Command(name = "bau.delmember", inGameOnly = true) + Player z = Bukkit.getPlayer(id); + z.sendMessage(WarShipFactory.S_PREFIX + "§aDu wurdest zu der Welt von §6" + p.getName() + " §ahinzugefügt"); + } + @Command(name = "bau.delmember", aliases = "gs.delmember", inGameOnly = true) public void onDel(CommandArgs args) { Player p = args.getPlayer(); - FactoryWorld fw = WarShipFactory.getInstance().getWorldFromOwner(p.getUniqueId()); - if (fw == null) { + if (Bauwelt.getBauwelt(p.getUniqueId()).getUUID() == null) { p.sendMessage(WarShipFactory.S_PREFIX + "§cDu hast noch keine Welt."); return; } @@ -149,22 +163,22 @@ public class CommandBau { p.sendMessage(WarShipFactory.S_PREFIX + "§cUnbekannter Spieler"); return; } - if (fw.getMember(id) == null) { + if (BauweltMember.getBauMember(p.getUniqueId(), id) == null) { p.sendMessage(WarShipFactory.S_PREFIX + "§cDieser Spieler ist kein Mitglied auf deiner Welt"); return; } - fw.getMembers().unregister(fw.getMembers().getID(fw.getMember(id))); + BauweltMember.getBauMember(p.getUniqueId(), id).remove(); p.sendMessage(WarShipFactory.S_PREFIX + "§cDer Spieler wurde entfernt."); Player z = Bukkit.getPlayer(id); - z.sendMessage(WarShipFactory.S_PREFIX + ChatColor.RED + "§4Du wurdest von der Welt §6" + p.getName() + ChatColor.RED + " §4entfernt"); + z.sendMessage(WarShipFactory.S_PREFIX + ChatColor.RED + "§4Du wurdest von der Welt von §6" + p.getName() + ChatColor.RED + " §4entfernt"); if (z != null) { - if (z.getWorld().getUID().equals(fw.getWrapped().getUID())) { + if (z.getWorld().getUID().equals(Bukkit.getWorld(p.getUniqueId().toString()).getUID())) { z.teleport(WarShipFactory.getInstance().config.spawn); z.getInventory().clear(); } } } - @Command(name = "bau.tp", inGameOnly = true) + @Command(name = "bau.tp", aliases = "gs.tp", inGameOnly = true) public void onTp(CommandArgs args) { Player p = args.getPlayer(); if (args.length() == 0) { @@ -177,34 +191,55 @@ public class CommandBau { return; } FactoryWorld fw = WarShipFactory.getInstance().getWorldFromOwner(id); - if (fw == null) { + if (Bauwelt.getBauwelt(p.getUniqueId()) == null) { p.sendMessage(WarShipFactory.S_PREFIX + "§cDer Spieler hat keine Welt"); return; } try { if (!p.hasPermission("bau.team")) { - if (fw.getMember(p.getUniqueId()) == null) { + if (BauweltMember.getBauMember(id, p.getUniqueId()) == null) { p.sendMessage(WarShipFactory.S_PREFIX + "§cDu bist kein Mitglied dieser Welt"); return; } } - if (fw.getWrapped() == null) { - fw.loadWorld(); - } - p.getInventory().clear(); - p.teleport(fw.getWrapped().getSpawnLocation()); + if (Bukkit.getWorld(id) == null) + try { + p.sendMessage(WarShipFactory.S_PREFIX + "§aEinen Moment bitte... Deine Welt wird vorbereitet."); + loading = true; + File world = new File("plugins/WarShipFactory/worlds/" + id); + File region = new File("plugins/WorldGuard/worlds/" + id); + if (region.exists() && region.isDirectory()) { + } else { + FileUtils.copyDirectory(new File(WarShipFactory.getInstance().config.regionDir), new File("plugins/WorldGuard/worlds/" + id)); + } + if (world.exists() && world.isDirectory()) { + FileUtils.moveDirectory(world, new File("" + id)); + wrapped = Bukkit.createWorld(new WorldCreator("" + id)); + } else { + FileUtils.copyDirectory(new File(WarShipFactory.getInstance().config.backupDir), new File("" + id)); + wrapped = Bukkit.createWorld(new WorldCreator("" + id)); + } + loading = false; + } catch (Exception e) { + p.sendMessage(WarShipFactory.S_PREFIX + "§cBeim Laden der Welt ist ein Fehler aufgetreten."); + e.printStackTrace(); + } + p.teleport(Bukkit.getWorld(id.toString()).getSpawnLocation()); Bukkit.getScheduler().scheduleSyncDelayedTask(WarShipFactory.getInstance(), new Runnable() { public void run() { p.setGameMode(GameMode.CREATIVE); + if (!unloadWorld(p.getUniqueId().toString())) { + WarShipFactory.log("FactoryWorld", "Unable to unload " + Bauwelt.getBauwelt(Bukkit.getWorld(p.getUniqueId()).getUID()).getUUID()); + } } }, 20); p.sendMessage(WarShipFactory.S_PREFIX + "§aDu wurdest teleportiert."); - } catch (IOException e) { + } catch (Exception e) { p.sendMessage(WarShipFactory.S_PREFIX + "§cFehla."); e.printStackTrace(); } } - @Command(name = "bau.flyspeed", inGameOnly = true) + @Command(name = "bau.flyspeed", aliases = "gs.flyspeed", inGameOnly = true) public void onflyspeed(CommandArgs args){ final Player player = args.getPlayer(); if (args.length() == 0){ @@ -267,14 +302,9 @@ public class CommandBau { } return; } - @Command(name = "bau.gui", inGameOnly = true) + @Command(name = "bau.gui", aliases = "gs.gui", inGameOnly = true) public boolean ongui(CommandArgs args) { final Player p = args.getPlayer(); - final FactoryWorld fw = WarShipFactory.getInstance().getWorldByAddress(p.getWorld().getName()); - if (fw == null) { - p.sendMessage(WarShipFactory.S_PREFIX + "§cDu stehst auf keiner Bauwelt"); - return false; - } else { Inventory inv = Bukkit.createInventory(null, 9, "§aBau Optionen"); ItemStack bau = new ItemStack(Material.COMPASS); ItemMeta meta = bau.getItemMeta(); @@ -294,12 +324,10 @@ public class CommandBau { p.openInventory(inv); return true; } - } - @Command(name = "bau.togglewe", inGameOnly = true) + @Command(name = "bau.togglewe", aliases = "gs.togglewe", inGameOnly = true) public void onToggleWE(CommandArgs args) { Player p = args.getPlayer(); - FactoryWorld fw = WarShipFactory.getInstance().getWorldFromOwner(p.getUniqueId()); - if (fw == null) { + if (Bauwelt.getBauwelt(p.getUniqueId()).getUUID() == null) { p.sendMessage(WarShipFactory.S_PREFIX + "§cDu hast keine Welt"); return; } @@ -312,31 +340,31 @@ public class CommandBau { p.sendMessage(WarShipFactory.S_PREFIX + "§cUnbekannter Spieler"); return; } - WorldPlayer wp = fw.getMember(id); - if (wp == null) { + if (BauweltMember.getBauMember(p.getUniqueId(), id) == null) { p.sendMessage(WarShipFactory.S_PREFIX + "§cDer Spieler ist kein Mitglied deiner Welt"); return; } - wp.canWorldEdit = !wp.canWorldEdit; + BauweltMember.getBauMember(p.getUniqueId(), id); Player z = Bukkit.getPlayer(id); if (z != null) { - if (wp.canWorldEdit) { + BauweltMember.getBauMember(p.getUniqueId(), id).setWorldEdit(!BauweltMember.getBauMember(p.getUniqueId(), id).isWorldEdit()); + if (BauweltMember.getBauMember(p.getUniqueId(), id).isWorldEdit()) { z.sendMessage(WarShipFactory.S_PREFIX + "§aDu kannst nun auf der Welt von §6" + p.getName() + "§a WorldEdit verwenden."); - } else { + }else { z.sendMessage(WarShipFactory.S_PREFIX + "§cDu kannst nun nicht mehr auf der Welt von §6" + p.getName() + "§c WorldEdit verwenden."); } } - if (wp.canWorldEdit) { + if (BauweltMember.getBauMember(p.getUniqueId(), id).isWorldEdit()) { p.sendMessage(WarShipFactory.S_PREFIX + "§aDer Spieler darf WorldEdit verwenden."); } else { p.sendMessage(WarShipFactory.S_PREFIX + "§cDer Spieler darf kein WorldEdit verwenden."); } } - @Command(name = "bau.toggletp", inGameOnly = true) + @Command(name = "bau.toggletp", aliases = "gs.toggletp", inGameOnly = true) public void onToggleTP(CommandArgs args) { Player p = args.getPlayer(); FactoryWorld fw = WarShipFactory.getInstance().getWorldFromOwner(p.getUniqueId()); - if (fw == null) { + if (Bauwelt.getBauwelt(p.getUniqueId()).getUUID() == null) { p.sendMessage(WarShipFactory.S_PREFIX + "§cDu hast keine Welt"); return; } @@ -349,27 +377,26 @@ public class CommandBau { p.sendMessage(WarShipFactory.S_PREFIX + "§cUnbekannter Spieler"); return; } - WorldPlayer wp = fw.getMember(id); - if (wp == null) { + if (BauweltMember.getMembers(p.getUniqueId()) == null) { p.sendMessage(WarShipFactory.S_PREFIX + "§cDer Spieler ist kein Mitglied deiner Welt"); return; } - wp.canTeleport = !wp.canTeleport; Player z = Bukkit.getPlayer(id); + BauweltMember.getBauMember(p.getUniqueId(), id).setTeleport(!BauweltMember.getBauMember(p.getUniqueId(), id).isTeleport()); if (z != null) { - if (wp.canTeleport) { + if (BauweltMember.getBauMember(p.getUniqueId(), id).isTeleport()) { z.sendMessage(WarShipFactory.S_PREFIX + "§aDu kannst nun auf der Welt von §6" + p.getName() + "§a /tp verwenden."); } else { z.sendMessage(WarShipFactory.S_PREFIX + "§cDu kannst nun nicht mehr auf der Welt von §6" + p.getName() + "§c /tp verwenden."); } } - if (wp.canTeleport) { + if (BauweltMember.getBauMember(p.getUniqueId(), id).isTeleport()) { p.sendMessage(WarShipFactory.S_PREFIX + "§aDer Spieler darf sich teleportieren."); } else { p.sendMessage(WarShipFactory.S_PREFIX + "§cDer Spieler darf sich nicht teleportieren."); } } - @Command(name = "bau.togglebuild", inGameOnly = true) + @Command(name = "bau.togglebuild", aliases = "gs.togglebuild", inGameOnly = true) public void onToggleBD(CommandArgs args) { Player p = args.getPlayer(); FactoryWorld fw = WarShipFactory.getInstance().getWorldFromOwner(p.getUniqueId()); @@ -386,27 +413,26 @@ public class CommandBau { p.sendMessage(WarShipFactory.S_PREFIX + "§cUnbekannter Spieler"); return; } - WorldPlayer wp = fw.getMember(id); - if (wp == null) { + if (BauweltMember.getMembers(p.getUniqueId()) == null) { p.sendMessage(WarShipFactory.S_PREFIX + "§cDer Spieler ist kein Mitglied deiner Welt"); return; } - wp.canBuild = !wp.canBuild; + BauweltMember.getBauMember(p.getUniqueId(), id).setTeleport(!BauweltMember.getBauMember(p.getUniqueId(), id).isTeleport()); Player z = Bukkit.getPlayer(id); if (z != null) { - if (wp.canBuild) { + if (BauweltMember.getBauMember(p.getUniqueId(), id).isBuild()) { z.sendMessage(WarShipFactory.S_PREFIX + "§aDu kannst nun auf der Welt von §6" + p.getName() + "§a bauen."); } else { z.sendMessage(WarShipFactory.S_PREFIX + "§cDu kannst nun nicht mehr auf der Welt von §6" + p.getName() + "§c bauen."); } } - if (wp.canBuild) { + if (BauweltMember.getBauMember(p.getUniqueId(), id).isBuild()) { p.sendMessage(WarShipFactory.S_PREFIX + "§aDer Spieler darf bauen."); } else { p.sendMessage(WarShipFactory.S_PREFIX + "§cDer Spieler darf nicht bauen."); } } - @Command(name = "bau.togglechgm", inGameOnly = true) + @Command(name = "bau.togglechgm", aliases = "gs.togglechgm", inGameOnly = true) public void onToggleCHG(CommandArgs args) { Player p = args.getPlayer(); FactoryWorld fw = WarShipFactory.getInstance().getWorldFromOwner(p.getUniqueId()); @@ -423,27 +449,26 @@ public class CommandBau { p.sendMessage(WarShipFactory.S_PREFIX + "§cUnbekannter Spieler"); return; } - WorldPlayer wp = fw.getMember(id); - if (wp == null) { + if (BauweltMember.getMembers(p.getUniqueId()) == null) { p.sendMessage(WarShipFactory.S_PREFIX + "§cDer Spieler ist kein Mitglied deiner Welt"); return; } - wp.canChangeGamemode = !wp.canChangeGamemode; + BauweltMember.getBauMember(p.getUniqueId(), id).setChangeGM(!BauweltMember.getBauMember(p.getUniqueId(), id).isChangeGM()); Player z = Bukkit.getPlayer(id); if (z != null) { - if (wp.canChangeGamemode) { + if (BauweltMember.getBauMember(p.getUniqueId(), id).isChangeGM()) { z.sendMessage(WarShipFactory.S_PREFIX + "§aDu kannst nun auf der Welt von §6" + p.getName() + "§a deinen Spielmodus ändern."); } else { z.sendMessage(WarShipFactory.S_PREFIX + "§cDu kannst nun nicht mehr auf der Welt von §6" + p.getName() + "§c deinen Spielmodus ändern."); } } - if (wp.canChangeGamemode) { + if (BauweltMember.getBauMember(p.getUniqueId(), id).isChangeGM()) { p.sendMessage(WarShipFactory.S_PREFIX + "§aDer Spieler darf seinen Spielmodus ändern."); } else { p.sendMessage(WarShipFactory.S_PREFIX + "§cDer Spieler darf nicht seinen Spielmodus ändern."); } } - @Command(name = "bau.toggletestblock", inGameOnly = true) + @Command(name = "bau.toggletestblock", aliases = "gs.testblock", inGameOnly = true) public void onToggleTestblock(CommandArgs args) { Player p = args.getPlayer(); FactoryWorld fw = WarShipFactory.getInstance().getWorldFromOwner(p.getUniqueId()); @@ -460,27 +485,26 @@ public class CommandBau { p.sendMessage(WarShipFactory.S_PREFIX + "§cUnbekannter Spieler"); return; } - WorldPlayer wp = fw.getMember(id); - if (wp == null) { + if (BauweltMember.getMembers(p.getUniqueId()) == null) { p.sendMessage(WarShipFactory.S_PREFIX + "§cDer Spieler ist kein Mitglied deiner Welt"); return; } - wp.canTestBlock = !wp.canTestBlock; + BauweltMember.getBauMember(p.getUniqueId(), id).setTestblock(!BauweltMember.getBauMember(p.getUniqueId(), id).isTestblock()); Player z = Bukkit.getPlayer(id); if (z != null) { - if (wp.canTestBlock) { + if (BauweltMember.getBauMember(p.getUniqueId(), id).isTestblock()) { z.sendMessage(WarShipFactory.S_PREFIX + "§aDu kannst nun auf der Welt von §6" + p.getName() + "§a die TestBlöcke erneuern."); } else { z.sendMessage(WarShipFactory.S_PREFIX + "§cDu kannst nun nicht mehr auf der Welt von §6" + p.getName() + "§c die TestBlöcke erneuern."); } } - if (wp.canTestBlock) { + if (BauweltMember.getBauMember(p.getUniqueId(), id).isTestblock()) { p.sendMessage(WarShipFactory.S_PREFIX + "§aDer Spieler darf nun deine TestBlöcke erneuern."); } else { p.sendMessage(WarShipFactory.S_PREFIX + "§cDer Spieler darf keine TestBlöcke mehr reseten."); } } - @Command(name = "bau.togglereset", inGameOnly = true) + @Command(name = "bau.togglereset", aliases = "gs.togglereset", inGameOnly = true) public void onTogglereset(CommandArgs args) { Player p = args.getPlayer(); FactoryWorld fw = WarShipFactory.getInstance().getWorldFromOwner(p.getUniqueId()); @@ -497,64 +521,26 @@ public class CommandBau { p.sendMessage(WarShipFactory.S_PREFIX + "§cUnbekannter Spieler"); return; } - WorldPlayer wp = fw.getMember(id); - if (wp == null) { + if (BauweltMember.getMembers(p.getUniqueId()) == null) { p.sendMessage(WarShipFactory.S_PREFIX + "§cDer Spieler ist kein Mitglied deiner Welt"); return; } - wp.canReset = !wp.canReset; + BauweltMember.getBauMember(p.getUniqueId(), id).setWorldEdit(!BauweltMember.getBauMember(p.getUniqueId(), id).isWorldEdit()); Player z = Bukkit.getPlayer(id); if (z != null) { - if (wp.canReset) { + if (BauweltMember.getBauMember(p.getUniqueId(), id).isWorldEdit()) { z.sendMessage(WarShipFactory.S_PREFIX + "§aDu kannst nun auf der Welt von §6" + p.getName() + "§a die Regionen erneuern."); } else { z.sendMessage(WarShipFactory.S_PREFIX + "§cDu kannst nun nicht mehr auf der Welt von §6" + p.getName() + "§c die Regionen erneuern."); } } - if (wp.canReset) { + if (BauweltMember.getBauMember(p.getUniqueId(), id).isWorldEdit()) { p.sendMessage(WarShipFactory.S_PREFIX + "§aDer Spieler darf nun deine Regionen erneuern."); } else { p.sendMessage(WarShipFactory.S_PREFIX + "§cDer Spieler darf deine Regionen nicht mehr erneuern."); } } - @Command(name = "bau.toggleresetall", inGameOnly = true) - public void onToggleresetall(CommandArgs args) { - Player p = args.getPlayer(); - FactoryWorld fw = WarShipFactory.getInstance().getWorldFromOwner(p.getUniqueId()); - if (fw == null) { - p.sendMessage(WarShipFactory.S_PREFIX + "§cDu hast keine Welt"); - return; - } - if (args.length() == 0) { - p.sendMessage(WarShipFactory.S_PREFIX + "§bBenutzung: /bau toggleresetall "); - return; - } - UUID id = UUIDFetcher.getUUID(args.getArgs(0)); - if (id == null) { - p.sendMessage(WarShipFactory.S_PREFIX + "§cUnbekannter Spieler"); - return; - } - WorldPlayer wp = fw.getMember(id); - if (wp == null) { - p.sendMessage(WarShipFactory.S_PREFIX + "§cDer Spieler ist kein Mitglied deiner Welt"); - return; - } - wp.canResetAll = !wp.canResetAll; - Player z = Bukkit.getPlayer(id); - if (z != null) { - if (wp.canResetAll) { - z.sendMessage(WarShipFactory.S_PREFIX + "§aDu kannst nun auf der Welt von §6" + p.getName() + "§a die Welt erneuern."); - } else { - z.sendMessage(WarShipFactory.S_PREFIX + "§cDu kannst nun nicht mehr auf der Welt von §6" + p.getName() + "§c die Welt erneuern."); - } - } - if (wp.canResetAll) { - p.sendMessage(WarShipFactory.S_PREFIX + "§aDer Spieler darf nun deine Welt erneuern."); - } else { - p.sendMessage(WarShipFactory.S_PREFIX + "§cDer Spieler darf nun deine Welt nicht mehr erneuern."); - } - } - @Command(name = "bau.togglereplace", inGameOnly = true) + @Command(name = "bau.togglereplace", aliases = "gs.togglereplace", inGameOnly = true) public void onTogglereplace(CommandArgs args) { Player p = args.getPlayer(); FactoryWorld fw = WarShipFactory.getInstance().getWorldFromOwner(p.getUniqueId()); @@ -571,76 +557,71 @@ public class CommandBau { p.sendMessage(WarShipFactory.S_PREFIX + "§cUnbekannter Spieler"); return; } - WorldPlayer wp = fw.getMember(id); - if (wp == null) { + if (BauweltMember.getMembers(p.getUniqueId()) == null) { p.sendMessage(WarShipFactory.S_PREFIX + "§cDer Spieler ist kein Mitglied deiner Welt"); return; } - wp.canReplace = !wp.canReplace; + BauweltMember.getBauMember(p.getUniqueId(), id).setWorldEdit(!BauweltMember.getBauMember(p.getUniqueId(), id).isWorldEdit()); Player z = Bukkit.getPlayer(id); if (z != null) { - if (wp.canReplace) { + if (BauweltMember.getBauMember(p.getUniqueId(), id).isWorldEdit()){ z.sendMessage(WarShipFactory.S_PREFIX + "§aDu kannst nun auf der Welt von §6" + p.getName() + "§a TNT und Schleim replacen."); } else { z.sendMessage(WarShipFactory.S_PREFIX + "§cDu kannst nun nicht mehr auf der Welt von §6" + p.getName() + "§c TNT und Schleim replacen."); } } - if (wp.canReplace) { + if (BauweltMember.getBauMember(p.getUniqueId(), id).isWorldEdit()) { p.sendMessage(WarShipFactory.S_PREFIX + "§aDer Spieler darf nun in diener Welt TNT und Schleim replacen."); } else { p.sendMessage(WarShipFactory.S_PREFIX + "§cDer Spieler darf nun in deiner Welt kein TNT und Schleim mehr replacen."); } } - @Command(name = "bau.testblock", inGameOnly = true) + @Command(name = "bau.testblock", aliases = "gs.testblock", inGameOnly = true) public boolean ontestblock(CommandArgs args) { final Player p = args.getPlayer(); - final FactoryWorld fw = WarShipFactory.getInstance().getWorldByAddress(p.getWorld().getName()); - if (fw == null) { + if (Bukkit.getWorld(p.getUniqueId()) == null) { p.sendMessage(WarShipFactory.S_PREFIX + "§cDu stehst auf keiner Bauwelt"); return false; } else { - WorldPlayer wp = fw.getMember(p.getUniqueId()); - if (!fw.getOwner().equals(p.getUniqueId())) { - if (wp.canTestBlock == false) { - p.sendMessage(WarShipFactory.S_PREFIX + "§7Du darfst den TestBlock nicht erneuern"); - return false; - } - } - Location playerLocation = p.getLocation(); - World playerWorld = p.getWorld(); - - @SuppressWarnings("unused") - int count = 0; - for (ProtectedRegion rg : WarShipFactory.getPlugin().getWorldGuard().getRegionManager(playerWorld).getApplicableRegions(playerLocation)) { - count++; - - String rgID = rg.getId().toString(); - - if(rgID.equalsIgnoreCase("resetall")) { - return true; - } - Vector position = new Vector(Integer.parseInt(WarShipFactory.getPlugin().getRegionData.getString("regions." + rgID + ".position.X")), Integer.parseInt(WarShipFactory.getPlugin().getRegionData.getString("regions." + rgID + ".position.Y")), Integer.parseInt(WarShipFactory.getPlugin().getRegionData.getString("regions." + rgID + ".position.Z"))); - File file = new File(WarShipFactory.getPlugin().getRegionData.getString("regions." + rgID + ".schematic.testblock")); - - pasteSchematic(p, file, position); - p.sendMessage(WarShipFactory.S_PREFIX + "Testblock erneuert!"); - - } - + if (!Bauwelt.getBauwelt(Bukkit.getWorld(p.getUniqueId()).getUID()).equals(p.getUniqueId())) { + if (BauweltMember.getBauMember(Bukkit.getWorld(p.getUniqueId()).getUID(), p.getUniqueId()).isWorldEdit() == false) { + p.sendMessage(WarShipFactory.S_PREFIX + "§7Du darfst den TestBlock nicht erneuern"); + return false; } - return false; + } + Location playerLocation = p.getLocation(); + World playerWorld = p.getWorld(); + + @SuppressWarnings("unused") + int count = 0; + for (ProtectedRegion rg : WarShipFactory.getPlugin().getWorldGuard().getRegionManager(playerWorld).getApplicableRegions(playerLocation)) { + count++; + + String rgID = rg.getId().toString(); + + if(rgID.equalsIgnoreCase("resetall")) { + return true; + } + Vector position = new Vector(Integer.parseInt(WarShipFactory.getPlugin().getRegionData.getString("regions." + rgID + ".position.X")), Integer.parseInt(WarShipFactory.getPlugin().getRegionData.getString("regions." + rgID + ".position.Y")), Integer.parseInt(WarShipFactory.getPlugin().getRegionData.getString("regions." + rgID + ".position.Z"))); + File file = new File(WarShipFactory.getPlugin().getRegionData.getString("regions." + rgID + ".schematic.testblock")); + + pasteSchematic(p, file, position); + p.sendMessage(WarShipFactory.S_PREFIX + "Testblock erneuert!"); + + } + } - @Command(name = "bau.reset", inGameOnly = true) + return false; + } + @Command(name = "bau.reset", aliases = "gs.reset", inGameOnly = true) public boolean onReset(CommandArgs args) { final Player p = args.getPlayer(); - final FactoryWorld fw = WarShipFactory.getInstance().getWorldByAddress(p.getWorld().getName()); - if (fw == null) { + if (Bauwelt.getBauwelt(p.getUniqueId()).getUUID() == null) { p.sendMessage(WarShipFactory.S_PREFIX + "§cDu stehst auf keiner Bauwelt"); return false; } else { - WorldPlayer wp = fw.getMember(p.getUniqueId()); - if (!fw.getOwner().equals(p.getUniqueId())) { - if (wp.canReset == false) { + if (!Bauwelt.getBauwelt(Bukkit.getWorld(p.getUniqueId()).getUID()).getUUID().equals(p.getUniqueId())) { + if (BauweltMember.getBauMember(Bukkit.getWorld(p.getUniqueId()).getUID(), p.getUniqueId()).isWorldEdit() == false) { p.sendMessage(WarShipFactory.S_PREFIX + "§7Du darfst keine Regionen erneuern"); return false; } @@ -669,74 +650,70 @@ public class CommandBau { } return false; } - @Command(name = "bau.resetall", inGameOnly = true) + @Command(name = "bau.resetall", aliases = "gs.resetall", inGameOnly = true) public boolean onresetall(CommandArgs args) { final Player p = args.getPlayer(); - final FactoryWorld fw = WarShipFactory.getInstance().getWorldByAddress(p.getWorld().getName()); - if (fw == null) { + if (Bauwelt.getBauwelt(p.getUniqueId()).getUUID() == null) { p.sendMessage(WarShipFactory.S_PREFIX + "§cDu stehst auf keiner Bauwelt"); return false; } else { - WorldPlayer wp = fw.getMember(p.getUniqueId()); - if (!fw.getOwner().equals(p.getUniqueId())) { - if (wp.canResetAll == false) { - p.sendMessage(WarShipFactory.S_PREFIX + "§7Du darfst die Welt nicht erneuern"); - return false; - } - } - - for(Player ap : Bukkit.getOnlinePlayers()) { - if(ap.getWorld().getName() == fw.getWorldAddress()) { + for (Player ap : Bukkit.getOnlinePlayers()) { + if (ap.getWorld().getName() == p.getName()) { Location location = new Location(Bukkit.getWorld("Bauspawn"), 1442, 113, 228, -151.9F, -4.2F); ap.teleport(location); ap.sendMessage(WarShipFactory.S_PREFIX + "Die Welt wird erneuert!"); } } - fw.unloadWorld(); + if (!unloadWorld(p.getUniqueId().toString())) { + WarShipFactory.log("FactoryWorld", "Unable to unload " + Bauwelt.getBauwelt(Bukkit.getWorld(p.getUniqueId()).getUID()).getUUID()); + } - File directory = new File("plugins/WarShipFactory/worlds/" + fw.getWorldAddress()); + File directory = new File("" + p.getUniqueId()); del(directory); - - FactoryWorld fw1 = WarShipFactory.getInstance().getWorldFromOwner(p.getUniqueId()); - if (fw1 == null) { - fw1 = new FactoryWorld(p.getUniqueId()); - WarShipFactory.getInstance().factoryWorlds.register(fw1); - } - if (fw1.isLoading()) { - p.sendMessage(WarShipFactory.S_PREFIX + "§cEinen Moment Geduld! Die Welt wird erneuert..."); - return false; - } - if (fw.getWrapped() == null) { + File directory1 = new File("plugins/WorldGuard/worlds/" + p.getUniqueId()); + del(directory1); + if (Bukkit.getWorld(p.getUniqueId()) == null) try { p.sendMessage(WarShipFactory.S_PREFIX + "§aEinen Moment bitte... Deine Welt wird vorbereitet."); - fw.loadWorld(); + loading = true; + File world = new File("plugins/WarShipFactory/worlds/" + p.getUniqueId()); + File region = new File("plugins/WorldGuard/worlds/" + p.getUniqueId()); + if (region.exists() && region.isDirectory()) { + } else { + FileUtils.copyDirectory(new File(WarShipFactory.getInstance().config.regionDir), new File("plugins/WorldGuard/worlds/" + p.getUniqueId())); + } + if (world.exists() && world.isDirectory()) { + FileUtils.moveDirectory(world, new File("" + p.getUniqueId())); + wrapped = Bukkit.createWorld(new WorldCreator("" + p.getUniqueId())); + } else { + FileUtils.copyDirectory(new File(WarShipFactory.getInstance().config.backupDir), new File("" + p.getUniqueId())); + wrapped = Bukkit.createWorld(new WorldCreator("" + p.getUniqueId())); + } + loading = false; } catch (Exception e) { p.sendMessage(WarShipFactory.S_PREFIX + "§cBeim Laden der Welt ist ein Fehler aufgetreten."); e.printStackTrace(); } - } - p.teleport(fw1.getWrapped().getSpawnLocation()); - p.getInventory().clear(); + p.teleport(Bukkit.getWorld(p.getUniqueId().toString()).getSpawnLocation()); Bukkit.getScheduler().scheduleSyncDelayedTask(WarShipFactory.getInstance(), new Runnable() { - public void run() { + public void run () { p.setGameMode(GameMode.CREATIVE); } - }, 20L); + },20L); } return false; } - @Command(name = "bau.replace", inGameOnly = true) + @Command(name = "bau.replace", aliases = "gs.replace", inGameOnly = true) public boolean onreplace(CommandArgs args) { final Player p = args.getPlayer(); - final FactoryWorld fw = WarShipFactory.getInstance().getWorldByAddress(p.getWorld().getName()); - if (fw == null) { + if (Bauwelt.getBauwelt(p.getUniqueId()).getUUID() == null) { p.sendMessage(WarShipFactory.S_PREFIX + "§cDu stehst auf keiner Bauwelt"); return false; } else { - WorldPlayer wp = fw.getMember(p.getUniqueId()); - if (!fw.getOwner().equals(p.getUniqueId())) { - if (wp.canReplace == false) { + if (!p.getUniqueId().equals(p.getUniqueId())) { + World world = Bukkit.getWorld(p.getUniqueId()); + if (BauweltMember.getBauMember(Bukkit.getWorld(p.getUniqueId()).getUID(), p.getUniqueId()).isWorldEdit() == false) { p.sendMessage("Du darfst in der Welt von " + p.getDisplayName() + " kein TNT und Schleim replacen!"); return false; } @@ -776,11 +753,10 @@ public class CommandBau { } return false; } - @Command(name = "bau.info", inGameOnly = true) + @Command(name = "bau.info", aliases = "gs.info", inGameOnly = true) public void onInfo(CommandArgs args) { final Player p = args.getPlayer(); - final FactoryWorld fw = WarShipFactory.getInstance().getWorldByAddress(p.getWorld().getName()); - if (fw == null) { + if (Bauwelt.getBauwelt(p.getUniqueId()).getUUID() == null) { p.sendMessage(WarShipFactory.S_PREFIX + "§cDu stehst auf keiner Bauwelt"); return; } @@ -789,26 +765,17 @@ public class CommandBau { p.sendMessage(WarShipFactory.S_PREFIX + "§3--- §6Informationen §3---"); p.sendMessage(""); StringBuilder members = new StringBuilder(); - String ownaz = UUIDFetcher.getName(fw.getOwner()); - for (WorldPlayer wp : fw.getMembers().getAll().values()) { - members.append(UUIDFetcher.getName(wp.getUuid()) + ", "); - } - String membas = ""; - if (!members.toString().isEmpty()) { - membas = members.toString().trim().substring(0, members.toString().trim().length() - 1); - } - membas = membas.isEmpty() ? "Keine" : membas; - p.sendMessage("§8Registrierungsnummer: §6" + WarShipFactory.getInstance().factoryWorlds.getID(fw)); - p.sendMessage("§8Adresse: §6" + fw.getWorldAddress()); + String ownaz = UUIDFetcher.getName(p.getUniqueId()); + p.sendMessage("§8Registrierungsnummer: §6" + Bauwelt.getBauwelt(p.getUniqueId()).getUUID().toString()); p.sendMessage("§8Besitzer: §6" + ownaz); - p.sendMessage("§8Mitglieder: §6" + membas); + p.sendMessage("§8Mitglieder: §6" + BauweltMember.getMembers(p.getUniqueId()).get(1)); p.sendMessage(""); - if (fw.isTntDamage()) { + if (Bauwelt.getBauwelt(p.getUniqueId()).isTNTDmg()) { p.sendMessage("§8TNT Schaden: §6" + "§aTNT Schaden erlaubt."); } else { p.sendMessage("§8TNT Schaden: §6" + "§cTNT Schaden verboten."); } - if (fw.isFireDamage()) { + if (Bauwelt.getBauwelt(p.getUniqueId()).isFireDmg()) { p.sendMessage("§8Feuer Schaden: §6" + "§aFeuer Schaden erlaubt."); } else { p.sendMessage("§8Feuer Schaden: §6" + "§cFeuer Schaden verboten."); @@ -817,37 +784,65 @@ public class CommandBau { }); } - @Command(name = "bau.tntdmg", inGameOnly = true) + @Command(name = "bau.tntdmg", aliases = "gs.tntdmg", inGameOnly = true) public void onTntdmg(CommandArgs args) { Player p = args.getPlayer(); FactoryWorld fw = WarShipFactory.getInstance().getWorldFromOwner(p.getUniqueId()); - if (fw == null) { + if (Bauwelt.getBauwelt(p.getUniqueId()).getUUID() == null) { p.sendMessage(WarShipFactory.S_PREFIX + "§cDu hast keine Welt"); return; } - fw.setTntDamage(!fw.isTntDamage()); - if (fw.isTntDamage()) { + Bauwelt.getBauwelt(p.getUniqueId()).setTNTDmg(!Bauwelt.getBauwelt(p.getUniqueId()).isTNTDmg()); + if (Bauwelt.getBauwelt(p.getUniqueId()).isTNTDmg()) { p.sendMessage(WarShipFactory.S_PREFIX + "§aTNT Schaden erlaubt."); } else { p.sendMessage(WarShipFactory.S_PREFIX + "§cTNT Schaden verboten."); } } - @Command(name = "bau.firedmg", inGameOnly = true) + @Command(name = "bau.firedmg", aliases = "gs.firedmg", inGameOnly = true) public void onFiredmg(CommandArgs args) { Player p = args.getPlayer(); FactoryWorld fw = WarShipFactory.getInstance().getWorldFromOwner(p.getUniqueId()); - if (fw == null) { + if (Bauwelt.getBauwelt(p.getUniqueId()).getUUID() == null) { p.sendMessage(WarShipFactory.S_PREFIX + "§cDu hast keine Welt"); return; } - fw.setFireDamage(!fw.isFireDamage()); - if (fw.isFireDamage()) { + Bauwelt.getBauwelt(p.getUniqueId()).setFireDmg(!Bauwelt.getBauwelt(p.getUniqueId()).isFireDmg()); + if (Bauwelt.getBauwelt(p.getUniqueId()).isFireDmg()) { p.sendMessage(WarShipFactory.S_PREFIX + "§aFeuer Schaden erlaubt."); } else { p.sendMessage(WarShipFactory.S_PREFIX + "§cFeuer Schaden verboten."); } } + private boolean isLoaded(String world) { + for (World w : Bukkit.getServer().getWorlds()) { + if (w.getName().equals(world)) { + return true; + } + } + + return false; + } + + private boolean unloadWorld(String world) { + if (isLoaded(world)) { + World w = Bukkit.getWorld(world); + for (Player p : w.getPlayers()) { + p.teleport(WarShipFactory.getInstance().config.spawn); + } + + for (Chunk c : w.getLoadedChunks()) { + c.unload(); + } + + boolean unload = Bukkit.unloadWorld(w, true); + return unload; + } + + return false; + } + private void pasteSchematic(Player player, File schematic, Vector position) { diff --git a/src/main/java/de/quantumnanox/warshipfactory/commands/CommandGamemode.java b/src/main/java/de/quantumnanox/warshipfactory/commands/CommandGamemode.java index 154ddf2..403f60a 100644 --- a/src/main/java/de/quantumnanox/warshipfactory/commands/CommandGamemode.java +++ b/src/main/java/de/quantumnanox/warshipfactory/commands/CommandGamemode.java @@ -3,6 +3,8 @@ package de.quantumnanox.warshipfactory.commands; import java.util.ArrayList; import java.util.List; +import de.warking.hunjy.MySQL.Bauwelt; +import de.warking.hunjy.MySQL.BauweltMember; import org.apache.commons.lang.Validate; import org.bukkit.Bukkit; import org.bukkit.ChatColor; @@ -16,7 +18,6 @@ import org.bukkit.util.StringUtil; import com.google.common.collect.ImmutableList; import de.quantumnanox.warshipfactory.content.FactoryWorld; -import de.quantumnanox.warshipfactory.content.WorldPlayer; import de.quantumnanox.warshipfactory.main.WarShipFactory; public class CommandGamemode extends BukkitCommand { @@ -35,22 +36,15 @@ public class CommandGamemode extends BukkitCommand { if (sender instanceof Player) { Player p = (Player) sender; if (p.hasPermission("bukkit.command.gamemode") == false) { - FactoryWorld fw = WarShipFactory.getInstance().getWorldByAddress(p.getWorld().getName()); - if (fw == null) { + if (Bukkit.getWorld(p.getUniqueId()) == null) { p.sendMessage("Du befindest dich auf keiner Bauwelt!"); return false; } - WorldPlayer wp = fw.getMember(p.getUniqueId()); - if (wp == null && !fw.getOwner().equals(p.getUniqueId())) { + BauweltMember.getMembers(p.getUniqueId()); + if (BauweltMember.getMembers(p.getUniqueId()) == null && !Bauwelt.getBauwelt(Bukkit.getWorld(p.getUniqueId()).getUID()).getUUID().equals(p.getUniqueId())) { p.sendMessage("Du bist kein Mitglied dieser Welt!"); return false; } - if (!fw.getOwner().equals(p.getUniqueId())) { - if (wp.canChangeGamemode == false) { - p.sendMessage("Du darfst deinen Spielmodus nicht ändern!"); - return false; - } - } } } // END diff --git a/src/main/java/de/quantumnanox/warshipfactory/commands/CommandGui.java b/src/main/java/de/quantumnanox/warshipfactory/commands/CommandGui.java index 1af65f5..6b9572c 100644 --- a/src/main/java/de/quantumnanox/warshipfactory/commands/CommandGui.java +++ b/src/main/java/de/quantumnanox/warshipfactory/commands/CommandGui.java @@ -1,27 +1,19 @@ package de.quantumnanox.warshipfactory.commands; -import com.sk89q.worldedit.Vector; -import com.sk89q.worldguard.protection.regions.ProtectedRegion; import de.quantumnanox.warshipfactory.content.FactoryWorld; -import de.quantumnanox.warshipfactory.content.UUIDFetcher; -import de.quantumnanox.warshipfactory.content.WorldPlayer; import de.quantumnanox.warshipfactory.main.WarShipFactory; -import net.md_5.bungee.api.chat.ClickEvent; +import de.warking.hunjy.MySQL.Bauwelt; +import de.warking.hunjy.MySQL.BauweltMember; import org.bukkit.*; -import org.bukkit.block.Skull; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.inventory.InventoryClickEvent; -import org.bukkit.event.player.PlayerTeleportEvent; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; import org.bukkit.inventory.meta.SkullMeta; -import javax.tools.JavaFileManager; -import java.io.File; - public class CommandGui implements Listener { public Location warship1; @@ -226,13 +218,13 @@ public class CommandGui implements Listener { //code Player p = (Player) e.getWhoClicked(); FactoryWorld fw = WarShipFactory.getInstance().getWorldFromOwner(p.getUniqueId()); - if (fw == null) { + if (Bauwelt.getBauwelt(p.getUniqueId()).getUUID() == null) { p.sendMessage(WarShipFactory.S_PREFIX + "§cDu hast keine Welt"); e.setCancelled(true); return; } - fw.setTntDamage(!fw.isTntDamage()); - if (fw.isTntDamage()) { + Bauwelt.getBauwelt(p.getUniqueId()).setTNTDmg(!Bauwelt.getBauwelt(p.getUniqueId()).isTNTDmg()); + if (Bauwelt.getBauwelt(p.getUniqueId()).isTNTDmg()) { p.sendMessage(WarShipFactory.S_PREFIX + "§aAuf deiner Welt ist jetzt TNT Schaden erlaubt."); } else { p.sendMessage(WarShipFactory.S_PREFIX + "§cAuf deiner Welt ist jetzt TNT Schaden verboten."); @@ -245,13 +237,13 @@ public class CommandGui implements Listener { //code Player p = (Player) e.getWhoClicked(); FactoryWorld fw = WarShipFactory.getInstance().getWorldFromOwner(p.getUniqueId()); - if (fw == null) { + if (Bauwelt.getBauwelt(p.getUniqueId()).getUUID() == null) { p.sendMessage(WarShipFactory.S_PREFIX + "§cDu hast keine Welt"); e.setCancelled(true); return; } - fw.setFireDamage(!fw.isFireDamage()); - if (fw.isFireDamage()) { + Bauwelt.getBauwelt(p.getUniqueId()).setFireDmg(!Bauwelt.getBauwelt(p.getUniqueId()).isFireDmg()); + if (Bauwelt.getBauwelt(p.getUniqueId()).isFireDmg()) { p.sendMessage(WarShipFactory.S_PREFIX + "§aAuf deiner Welt ist jetzt Feuer Schaden erlaubt."); } else { p.sendMessage(WarShipFactory.S_PREFIX + "§cAuf deiner Welt ist jetzt Feuer Schaden verboten."); @@ -351,7 +343,7 @@ public class CommandGui implements Listener { if (fw == null) { player.sendMessage(WarShipFactory.S_PREFIX + "§cDu hast keine Welt"); } - if (fw.getMember(target.getUniqueId()) != null) { + if (BauweltMember.getBauMember(player.getUniqueId(), target.getUniqueId()) != null) { if (e.getCurrentItem().getItemMeta().getDisplayName().equals(ChatColor.RED + "§aSpieler hinzufügen")) { //code Player p = (Player) e.getWhoClicked(); @@ -363,8 +355,7 @@ public class CommandGui implements Listener { if (e.getCurrentItem().getItemMeta().getDisplayName().equals(ChatColor.RED + "§aSpieler hinzufügen")) { //code Player p = (Player) e.getWhoClicked(); - WorldPlayer wp1 = new WorldPlayer(target.getUniqueId(), fw); - fw.getMembers().register(wp1); + new BauweltMember(p.getUniqueId(),target.getUniqueId(), true, false, false, false, false); p.sendMessage(WarShipFactory.S_PREFIX + ChatColor.RED + "§aDu hast " + target.getName() + " §azu der Welt §6" + ChatColor.RED + " §ahinzugefügt"); target.sendMessage(WarShipFactory.S_PREFIX + ChatColor.RED + "§aDu wurdest zu der Welt von §6" + p.getName() + ChatColor.RED + " §ahinzugefügt"); p.openInventory(skullOwnerInventory(target, player)); @@ -379,18 +370,17 @@ public class CommandGui implements Listener { player.closeInventory(); player.openInventory(spieleroption(p)); } - WorldPlayer wp = fw.getMember(target.getUniqueId()); - if (wp == null) { + if (BauweltMember.getBauMember(player.getUniqueId(), target.getUniqueId()) == null) { e.setCancelled(true); return; } if (e.getCurrentItem().getItemMeta().getDisplayName().equals(ChatColor.RED + "§aToggle Worldedit")) { //code Player p = (Player) e.getWhoClicked(); - wp.canWorldEdit = !wp.canWorldEdit; + BauweltMember.getBauMember(p.getUniqueId(), target.getUniqueId()).setWorldEdit(!BauweltMember.getBauMember(p.getUniqueId(), target.getUniqueId()).isWorldEdit()); Player z = Bukkit.getPlayer(target.getUniqueId()); if (z != null) { - if (wp.canWorldEdit) { + if (BauweltMember.getBauMember(p.getUniqueId(), target.getUniqueId()).isWorldEdit()) { p.sendMessage(WarShipFactory.S_PREFIX + "§aDer Spieler darf jetzt auf deiner Welt Worldedit benutzten."); z.sendMessage(WarShipFactory.S_PREFIX + "§aDu kannst nun auf der Welt von §6" + p.getName() + "§a WorldEdit verwenden."); p.closeInventory(); @@ -407,11 +397,11 @@ public class CommandGui implements Listener { } if (e.getCurrentItem().getItemMeta().getDisplayName().equals(ChatColor.RED + "§aToggle Teleport")) { //code - wp.canTeleport = !wp.canTeleport; - Player z = Bukkit.getPlayer(target.getUniqueId()); Player p = (Player) e.getWhoClicked(); + BauweltMember.getBauMember(p.getUniqueId(), target.getUniqueId()).setTeleport(!BauweltMember.getBauMember(p.getUniqueId(), target.getUniqueId()).isTeleport()); + Player z = Bukkit.getPlayer(target.getUniqueId()); if (z != null) { - if (wp.canTeleport) { + if ((BauweltMember.getBauMember(p.getUniqueId(), target.getUniqueId()).isTeleport())) { p.sendMessage(WarShipFactory.S_PREFIX + "§aDer Spieler kann sich jetzt auf deiner Welt Teleportieren."); z.sendMessage(WarShipFactory.S_PREFIX + "§aDu kannst nun auf der Welt von §6" + p.getName() + "§a /tp verwenden."); p.closeInventory(); @@ -428,11 +418,11 @@ public class CommandGui implements Listener { } if (e.getCurrentItem().getItemMeta().getDisplayName().equals(ChatColor.RED + "§aToggle Build")) { //code - wp.canBuild = !wp.canBuild; - Player z = Bukkit.getPlayer(target.getUniqueId()); Player p = (Player) e.getWhoClicked(); + BauweltMember.getBauMember(p.getUniqueId(), target.getUniqueId()).setBuild(!BauweltMember.getBauMember(p.getUniqueId(), target.getUniqueId()).isBuild()); + Player z = Bukkit.getPlayer(target.getUniqueId()); if (z != null) { - if (wp.canBuild) { + if ((BauweltMember.getBauMember(p.getUniqueId(), target.getUniqueId()).isBuild())) { p.sendMessage(WarShipFactory.S_PREFIX + "§aDer Spieler darf jetzt Bauen auf deiner Welt."); z.sendMessage(WarShipFactory.S_PREFIX + "§aDu kannst nun auf der Welt von §6" + p.getName() + "§a bauen."); p.closeInventory(); @@ -449,11 +439,11 @@ public class CommandGui implements Listener { } if (e.getCurrentItem().getItemMeta().getDisplayName().equals(ChatColor.RED + "§aToggle ChangeGamemode")) { //code - wp.canChangeGamemode = !wp.canChangeGamemode; - Player z = Bukkit.getPlayer(target.getUniqueId()); Player p = (Player) e.getWhoClicked(); + BauweltMember.getBauMember(p.getUniqueId(), target.getUniqueId()).setChangeGM(!BauweltMember.getBauMember(p.getUniqueId(), target.getUniqueId()).isChangeGM()); + Player z = Bukkit.getPlayer(target.getUniqueId()); if (z != null) { - if (wp.canChangeGamemode) { + if ((BauweltMember.getBauMember(p.getUniqueId(), target.getUniqueId()).isChangeGM())) { p.sendMessage(WarShipFactory.S_PREFIX + "§aDer Spieler darf jetzt sein Gamemode auf deiner Welt wechseln."); z.sendMessage(WarShipFactory.S_PREFIX + "§aDu kannst nun auf der Welt von §6" + p.getName() + "§a deinen Spielmodus ändern."); p.closeInventory(); @@ -471,12 +461,14 @@ public class CommandGui implements Listener { if (e.getCurrentItem().getItemMeta().getDisplayName().equals(ChatColor.RED + "§cSpieler entfernen")) { //code Player p = (Player) e.getWhoClicked(); - fw.getMembers().unregister(fw.getMembers().getID(fw.getMember(target.getUniqueId()))); + BauweltMember.getBauMember(p.getUniqueId(), target.getUniqueId()).remove(); target.sendMessage(WarShipFactory.S_PREFIX + ChatColor.RED + "§aDu wurdest von der Welt §6" + p.getName() + ChatColor.RED + " §aentfernt"); Player z = Bukkit.getPlayer(target.getUniqueId()); p.sendMessage(WarShipFactory.S_PREFIX + ChatColor.RED + "Der Spieler " + target.getName() + ChatColor.RED + " wurde von deiner welt entfernt"); + e.setCancelled(true); + player.openInventory(skullOwnerInventory(target, player)); if (z != null) { - if (z.getWorld().getUID().equals(fw.getWrapped().getUID())) { + if (z.getWorld().getUID().equals(Bukkit.getWorld(p.getUniqueId().toString()).getUID())) { z.teleport(WarShipFactory.getInstance().config.spawn); z.getInventory().clear(); } @@ -486,11 +478,11 @@ public class CommandGui implements Listener { } if (e.getCurrentItem().getItemMeta().getDisplayName().equals(ChatColor.RED + "§aToggle Replace")) { //code - wp.canReplace = !wp.canReplace; - Player z = Bukkit.getPlayer(target.getUniqueId()); Player p = (Player) e.getWhoClicked(); + BauweltMember.getBauMember(p.getUniqueId(), target.getUniqueId()).setWorldEdit(!BauweltMember.getBauMember(p.getUniqueId(), target.getUniqueId()).isWorldEdit()); + Player z = Bukkit.getPlayer(target.getUniqueId()); if (z != null) { - if (wp.canReplace) { + if ((BauweltMember.getBauMember(p.getUniqueId(), target.getUniqueId()).isWorldEdit())) { p.sendMessage(WarShipFactory.S_PREFIX + "§aDer Spieler darf jetzt auf deiner Welt Replacen."); z.sendMessage(WarShipFactory.S_PREFIX + "§cDu kannst nun auf der Welt von §6" + p.getName() + "§c /bau replace verwenden."); p.closeInventory(); @@ -507,11 +499,11 @@ public class CommandGui implements Listener { } if (e.getCurrentItem().getItemMeta().getDisplayName().equals(ChatColor.RED + "§aToggle Reset")) { //code - wp.canReset = !wp.canReset; - Player z = Bukkit.getPlayer(target.getUniqueId()); Player p = (Player) e.getWhoClicked(); + BauweltMember.getBauMember(p.getUniqueId(), target.getUniqueId()).setWorldEdit(!BauweltMember.getBauMember(p.getUniqueId(), target.getUniqueId()).isWorldEdit()); + Player z = Bukkit.getPlayer(target.getUniqueId()); if (z != null) { - if (wp.canReset) { + if ((BauweltMember.getBauMember(p.getUniqueId(), target.getUniqueId()).isWorldEdit())) { p.sendMessage(WarShipFactory.S_PREFIX + "§aDer Spieler darf jetzt auf deiner Welt einzelne Regionen erneuern."); z.sendMessage(WarShipFactory.S_PREFIX + "§cDu kannst nun auf der Welt von §6" + p.getName() + "§c /bau reset verwenden."); p.closeInventory(); @@ -528,11 +520,11 @@ public class CommandGui implements Listener { } if (e.getCurrentItem().getItemMeta().getDisplayName().equals(ChatColor.RED + "§aToggle TestBlock")) { //code - wp.canTestBlock = !wp.canTestBlock; - Player z = Bukkit.getPlayer(target.getUniqueId()); Player p = (Player) e.getWhoClicked(); + BauweltMember.getBauMember(p.getUniqueId(), target.getUniqueId()).setWorldEdit(!BauweltMember.getBauMember(p.getUniqueId(), target.getUniqueId()).isWorldEdit()); + Player z = Bukkit.getPlayer(target.getUniqueId()); if (z != null) { - if (wp.canTestBlock) { + if (BauweltMember.getBauMember(p.getUniqueId(), target.getUniqueId()).isWorldEdit()) { p.sendMessage(WarShipFactory.S_PREFIX + "§aDer Spieler darf jetzt auf deiner Welt TestBlöcke erneuern."); z.sendMessage(WarShipFactory.S_PREFIX + "§cDu kannst nun auf der Welt von §6" + p.getName() + "§c /bau testblock verwenden."); p.closeInventory(); @@ -654,16 +646,15 @@ public class CommandGui implements Listener { FactoryWorld fw = WarShipFactory.getInstance().getWorldFromOwner(player.getUniqueId()); - if (fw == null) { + if (Bauwelt.getBauwelt(p.getUniqueId()).getUUID() == null) { p.sendMessage(WarShipFactory.S_PREFIX + "§cDu hast keine Welt"); } - WorldPlayer wp = fw.getMember(p.getUniqueId()); - if (wp == null) { + if (BauweltMember.getBauMember(p.getUniqueId(), player.getUniqueId()) == null) { p.sendMessage(WarShipFactory.S_PREFIX + "§cDer Spieler ist kein Mitglied deiner Welt"); } else { Player z = Bukkit.getPlayer(p.getUniqueId()); if (z != null) { - if (wp.canWorldEdit) { + if ((BauweltMember.getBauMember(p.getUniqueId(), p.getUniqueId()).isWorldEdit())) { ItemStack tntst = new ItemStack(351, 1, (short) 10); meta = tntst.getItemMeta(); meta.setDisplayName(ChatColor.RED + "§eStatus §2An"); @@ -676,7 +667,7 @@ public class CommandGui implements Listener { tntst1.setItemMeta(meta); inv2.setItem(10, tntst1); } - if (wp.canTeleport) { + if ((BauweltMember.getBauMember(p.getUniqueId(), p.getUniqueId()).isTeleport())) { ItemStack tntst = new ItemStack(351, 1, (short) 10); meta = tntst.getItemMeta(); meta.setDisplayName(ChatColor.RED + "§eStatus §2An"); @@ -689,7 +680,7 @@ public class CommandGui implements Listener { tntst1.setItemMeta(meta); inv2.setItem(11, tntst1); } - if (wp.canBuild) { + if ((BauweltMember.getBauMember(p.getUniqueId(), p.getUniqueId()).isBuild())) { ItemStack tntst = new ItemStack(351, 1, (short) 10); meta = tntst.getItemMeta(); meta.setDisplayName(ChatColor.RED + "§eStatus §2An"); @@ -702,7 +693,7 @@ public class CommandGui implements Listener { tntst1.setItemMeta(meta); inv2.setItem(12, tntst1); } - if (wp.canChangeGamemode) { + if ((BauweltMember.getBauMember(p.getUniqueId(), p.getUniqueId()).isChangeGM())) { ItemStack tntst = new ItemStack(351, 1, (short) 10); meta = tntst.getItemMeta(); meta.setDisplayName(ChatColor.RED + "§eStatus §2An"); @@ -715,7 +706,7 @@ public class CommandGui implements Listener { tntst1.setItemMeta(meta); inv2.setItem(13, tntst1); } - if (wp.canReplace) { + if ((BauweltMember.getBauMember(p.getUniqueId(), p.getUniqueId()).isWorldEdit())) { ItemStack tntst = new ItemStack(351, 1, (short) 10); meta = tntst.getItemMeta(); meta.setDisplayName(ChatColor.RED + "§eStatus §2An"); @@ -728,7 +719,7 @@ public class CommandGui implements Listener { tntst1.setItemMeta(meta); inv2.setItem(14, tntst1); } - if (wp.canReset) { + if ((BauweltMember.getBauMember(p.getUniqueId(), p.getUniqueId()).isWorldEdit())) { ItemStack tntst = new ItemStack(351, 1, (short) 10); meta = tntst.getItemMeta(); meta.setDisplayName(ChatColor.RED + "§eStatus §2An"); @@ -741,7 +732,7 @@ public class CommandGui implements Listener { tntst1.setItemMeta(meta); inv2.setItem(15, tntst1); } - if (wp.canTestBlock) { + if ((BauweltMember.getBauMember(p.getUniqueId(), p.getUniqueId()).isWorldEdit())) { ItemStack tntst = new ItemStack(351, 1, (short) 10); meta = tntst.getItemMeta(); meta.setDisplayName(ChatColor.RED + "§eStatus §2An"); @@ -924,7 +915,7 @@ public class CommandGui implements Listener { fire.setItemMeta(meta); inv2.setItem(8, fire); p.openInventory(inv2); - if (fw.isTntDamage()) { + if (Bauwelt.getBauwelt(p.getUniqueId()).isTNTDmg()) { ItemStack tntst = new ItemStack(351, 1, (short) 10); meta = tntst.getItemMeta(); meta.setDisplayName(ChatColor.RED + "§eStatus §2An"); @@ -941,7 +932,7 @@ public class CommandGui implements Listener { p.closeInventory(); p.openInventory(inv2); } - if (fw.isFireDamage()) { + if (Bauwelt.getBauwelt(p.getUniqueId()).isFireDmg()) { ItemStack tntst = new ItemStack(351, 1, (short) 10); meta = tntst.getItemMeta(); meta.setDisplayName(ChatColor.RED + "§eStatus §2An"); diff --git a/src/main/java/de/quantumnanox/warshipfactory/commands/CommandTeleport.java b/src/main/java/de/quantumnanox/warshipfactory/commands/CommandTeleport.java index 61a437f..619f919 100644 --- a/src/main/java/de/quantumnanox/warshipfactory/commands/CommandTeleport.java +++ b/src/main/java/de/quantumnanox/warshipfactory/commands/CommandTeleport.java @@ -3,6 +3,8 @@ package de.quantumnanox.warshipfactory.commands; import java.util.List; +import de.warking.hunjy.MySQL.Bauwelt; +import de.warking.hunjy.MySQL.BauweltMember; import org.apache.commons.lang.Validate; import org.bukkit.Bukkit; import org.bukkit.ChatColor; @@ -16,95 +18,89 @@ import org.bukkit.event.player.PlayerTeleportEvent; import com.google.common.collect.ImmutableList; import de.quantumnanox.warshipfactory.content.FactoryWorld; -import de.quantumnanox.warshipfactory.content.WorldPlayer; import de.quantumnanox.warshipfactory.main.WarShipFactory; public class CommandTeleport extends BukkitCommand { - public CommandTeleport() { - super("tp"); - this.description = "Teleports the given player (or yourself) to another player or coordinates"; - this.usageMessage = "/tp [player] and/or "; - } - - public boolean execute(CommandSender sender, String currentAlias, String[] args) { - if ((args.length < 1) || (args.length > 4)) { - sender.sendMessage(ChatColor.RED + "Usage: " + this.usageMessage); - return false; + public CommandTeleport() { + super("tp"); + this.description = "Teleports the given player (or yourself) to another player or coordinates"; + this.usageMessage = "/tp [player] and/or "; } - // SEAGIANTS - if (sender instanceof Player) { - Player p = (Player) sender; - if (p.hasPermission("bukkit.command.teleport") == false) { - FactoryWorld fw = WarShipFactory.getInstance().getWorldByAddress(p.getWorld().getName()); - if (fw == null) { - p.sendMessage("Du befindest dich auf keiner Bauwelt!"); - return false; - } - WorldPlayer wp = fw.getMember(p.getUniqueId()); - if (wp == null && !fw.getOwner().equals(p.getUniqueId())) { - p.sendMessage("Du bist kein Mitglied dieser Welt!"); - return false; - } - if (!fw.getOwner().equals(p.getUniqueId())) { - if (wp.canTeleport == false) { - p.sendMessage("Du darfst dich auf dieser Welt nicht teleportieren!"); + public boolean execute(CommandSender sender, String currentAlias, String[] args) { + if ((args.length < 1) || (args.length > 4)) { + sender.sendMessage(ChatColor.RED + "Usage: " + this.usageMessage); return false; - } } - } - } - // END - Player player = Bukkit.getPlayerExact(args[0]); - - if (player == null && args.length != 3) { - sender.sendMessage("Player not found: " + args[0]); - return true; - } - - if (args.length == 1 || args.length == 3) { - if (sender instanceof Player) { - player = (Player) sender; - } - } - - if (args.length < 3) { - Player target = Bukkit.getPlayerExact(args[(args.length - 1)]); - if (target == null) { - sender.sendMessage("Can't find player " + args[(args.length - 1)] + ". No tp."); - return true; - } - - // SEAGIANTS - if (!sender.hasPermission("bukkit.command.teleport")) { - FactoryWorld fw = WarShipFactory.getInstance().getWorldByAddress(player.getWorld().getName()); - if (fw == null) { - sender.sendMessage("Der Spieler befindet sich auf keiner Bauwelt."); - return false; - } - FactoryWorld fwt = WarShipFactory.getInstance().getWorldByAddress(target.getWorld().getName()); - if (fwt == null) { - sender.sendMessage("Der Zielspieler befindet sich auf keiner Bauwelt."); - return false; - } - if (fw.getWrapped().getUID().equals(fwt.getWrapped().getUID()) == false) { - sender.sendMessage("Die Spieler sind nicht auf der selben Bauwelt."); - return false; - } + // SEAGIANTS if (sender instanceof Player) { - Player p = (Player) sender; - FactoryWorld fwp = WarShipFactory.getInstance().getWorldByAddress(p.getWorld().getName()); - if (fwp == null) { - p.sendMessage("Du bist auf keiner Bauwelt"); - return false; - } - if (fwt.getWrapped().getUID().equals(fwp.getWrapped().getUID()) == false) { - p.sendMessage("Das Ziel befindet sich nicht auf deiner Welt"); - return false; - } + Player p = (Player) sender; + if (p.hasPermission("bukkit.command.teleport") == false) { + if (Bukkit.getWorld(p.getUniqueId()).getName() == null) { + p.sendMessage("Du befindest dich auf keiner Bauwelt!"); + return false; + } + if (BauweltMember.getBauMember(Bukkit.getWorld(p.getUniqueId()).getUID(), p.getUniqueId()) == null && !Bauwelt.getBauwelt(Bukkit.getWorld(p.getUniqueId()).getUID()).getUUID().equals(p.getUniqueId())) { + p.sendMessage("Du bist kein Mitglied dieser Welt!"); + return false; + } + if (!Bauwelt.getBauwelt(Bukkit.getWorld(p.getUniqueId()).getUID()).getUUID().equals(p.getUniqueId())) { + if (BauweltMember.getBauMember(Bukkit.getWorld(p.getUniqueId()).getUID(), p.getUniqueId()).isTeleport() == false) { + p.sendMessage("Du darfst dich auf dieser Welt nicht teleportieren!"); + return false; + } + } + } } - } + // END + + Player player = Bukkit.getPlayerExact(args[0]); + + if (player == null && args.length != 3) { + sender.sendMessage("Player not found: " + args[0]); + return true; + } + + if (args.length == 1 || args.length == 3) { + if (sender instanceof Player) { + player = (Player) sender; + } + } + + if (args.length < 3) { + Player target = Bukkit.getPlayerExact(args[(args.length - 1)]); + if (target == null) { + sender.sendMessage("Can't find player " + args[(args.length - 1)] + ". No tp."); + return true; + } + + // SEAGIANTS + if (!sender.hasPermission("bukkit.command.teleport")) { + if (Bukkit.getWorld(player.getUniqueId()) == null) { + sender.sendMessage("Der Spieler befindet sich auf keiner Bauwelt."); + return false; + } + if (Bukkit.getWorld(target.getUniqueId()) == null) { + sender.sendMessage("Der Zielspieler befindet sich auf keiner Bauwelt."); + return false; + } + if (BauweltMember.getBauMember(player.getUniqueId(), target.getUniqueId()).isTeleport() == false){ + sender.sendMessage("Die Spieler sind nicht auf der selben Bauwelt."); + return false; + } + if (sender instanceof Player) { + Player p = (Player) sender; + if (Bukkit.getWorld(p.getUniqueId()) == null) { + p.sendMessage("Du bist auf keiner Bauwelt"); + return false; + } + if (BauweltMember.getBauMember(p.getUniqueId(), target.getUniqueId()).isTeleport() == false) { + p.sendMessage("Das Ziel befindet sich nicht auf deiner Welt"); + return false; + } + } + } // END player.teleport(target, PlayerTeleportEvent.TeleportCause.COMMAND); diff --git a/src/main/java/de/quantumnanox/warshipfactory/content/FactoryWorld.java b/src/main/java/de/quantumnanox/warshipfactory/content/FactoryWorld.java index cee3a02..c540c23 100644 --- a/src/main/java/de/quantumnanox/warshipfactory/content/FactoryWorld.java +++ b/src/main/java/de/quantumnanox/warshipfactory/content/FactoryWorld.java @@ -4,6 +4,9 @@ import java.io.File; import java.io.IOException; import java.util.UUID; +import de.warking.hunjy.MySQL.Bauwelt; +import de.warking.hunjy.MySQL.BauweltMember; +import net.minecraft.server.v1_12_R1.PlayerList; import org.apache.commons.io.FileUtils; import org.bukkit.Bukkit; import org.bukkit.Chunk; @@ -13,38 +16,22 @@ import org.bukkit.WorldCreator; import org.bukkit.entity.Player; import org.bukkit.scheduler.BukkitTask; -import de.quantumnanox.warshipfactory.main.CobixTagFormatSupported; -import de.quantumnanox.warshipfactory.main.Registry; import de.quantumnanox.warshipfactory.main.WarShipFactory; import lombok.Getter; -import lombok.Setter; -import net.thecobix.tag.TagCompound; -public class FactoryWorld extends CobixTagFormatSupported { +public class FactoryWorld { private int regId; @Getter private World wrapped; - @Getter - private Registry members = new Registry<>(WorldPlayer.class, "members"); - - @Getter - private String worldAddress; - @Getter private UUID owner; @Getter private boolean loading; - @Getter - @Setter - private boolean tntDamage; - @Getter - @Setter - private boolean fireDamage; private BukkitTask task; @@ -52,83 +39,51 @@ public class FactoryWorld extends CobixTagFormatSupported { task = Bukkit.getScheduler().runTaskTimer(WarShipFactory.getInstance(), new LagDetectorRunnable(this), 20, 20); } - public FactoryWorld(UUID ownaz) { - this.owner = ownaz; - this.worldAddress = Bukkit.getPlayer(ownaz).getUniqueId().toString(); - task = Bukkit.getScheduler().runTaskTimer(WarShipFactory.getInstance(), new LagDetectorRunnable(this), 20, 20); + public void load(UUID ownaz) { + owner = Bauwelt.getBauwelt(ownaz).getUUID(); } - @Override - public TagCompound save() { - TagCompound out = new TagCompound(regId + ""); - out.put(members.save()); - out.putString("worldAddress", worldAddress); - out.putString("owner", owner.toString()); - out.putShort("tntdmg", (short) (tntDamage ? 1 : 0)); - out.putShort("firedmg", (short) (fireDamage ? 1 : 0)); - return out; - } - - @Override - public void load(TagCompound tc) { - members.load(tc.getTagCompound("members")); - worldAddress = tc.getTagString("worldAddress").getValue(); - owner = UUID.fromString(tc.getTagString("owner").getValue()); - tntDamage = tc.getTagShort("tntdmg").getValue() == 1 ? true : false; - fireDamage = tc.getTagShort("firedmg").getValue() == 1 ? true : false; - } - - public void loadWorld() throws IOException { + public void loadWorld(UUID ownaz) throws IOException { loading = true; - File world = new File("plugins/WarShipFactory/worlds/" + worldAddress); - File region = new File("plugins/WorldGuard/worlds/" + worldAddress); + File world = new File("plugins/WarShipFactory/worlds/" + ownaz); + File region = new File("plugins/WorldGuard/worlds/" + ownaz); if (region.exists() && region.isDirectory()) { } else { - FileUtils.copyDirectory(new File(WarShipFactory.getInstance().config.regionDir), new File("plugins/WorldGuard/worlds/" + worldAddress)); + FileUtils.copyDirectory(new File(WarShipFactory.getInstance().config.regionDir), new File("plugins/WorldGuard/worlds/" + ownaz)); } if (world.exists() && world.isDirectory()) { - FileUtils.moveDirectory(world, new File(worldAddress)); - wrapped = Bukkit.createWorld(new WorldCreator(worldAddress)); + FileUtils.moveDirectory(world, new File("" + ownaz)); + wrapped = Bukkit.createWorld(new WorldCreator("" + ownaz)); } else { - FileUtils.copyDirectory(new File(WarShipFactory.getInstance().config.backupDir), new File(worldAddress)); - wrapped = Bukkit.createWorld(new WorldCreator(worldAddress)); + FileUtils.copyDirectory(new File(WarShipFactory.getInstance().config.backupDir), new File("" + ownaz)); + wrapped = Bukkit.createWorld(new WorldCreator("" + ownaz)); } loading = false; } - public void unloadWorld() { + public void unloadWorld(UUID ownaz) { wrapped.save(); - for (final WorldPlayer wp : members.getAll().values()) { - if (wp.getPlayer() != null) { - if (wp.getPlayer().getWorld().getUID().equals(wrapped.getUID())) { - wp.getPlayer().sendMessage(WarShipFactory.S_PREFIX + "§cDie Welt wurde aus dem Arbeitsspeicher gelöscht..."); - wp.getPlayer().teleport(WarShipFactory.getInstance().config.spawn); + { + if (BauweltMember.getMembers(ownaz) != null) { + if (BauweltMember.getMembers(ownaz).equals(wrapped.getUID())) { Bukkit.getScheduler().scheduleSyncDelayedTask(WarShipFactory.getInstance(), new Runnable() { public void run() { - wp.getPlayer().setGameMode(GameMode.SURVIVAL); } }, 20L); } } } - if (!unloadWorld(worldAddress)) { - WarShipFactory.log("FactoryWorld", "Unable to unload " + worldAddress); + if (!unloadWorld("" + ownaz)) { + WarShipFactory.log("FactoryWorld", "Unable to unload " + ownaz); } wrapped = null; try { - FileUtils.moveDirectory(new File(worldAddress), new File("plugins/WarShipFactory/worlds/" + worldAddress)); + FileUtils.moveDirectory(new File("" + ownaz), new File("plugins/WarShipFactory/worlds/" + ownaz)); } catch (IOException e) { e.printStackTrace(); } } - public WorldPlayer getMember(UUID uuid) { - for (WorldPlayer wp : members.getAll().values()) { - if (wp.getUuid().equals(uuid)) return wp; - } - return null; - } - private boolean isLoaded(String world) { for (World w : Bukkit.getServer().getWorlds()) { diff --git a/src/main/java/de/quantumnanox/warshipfactory/content/LagDetectorRunnable.java b/src/main/java/de/quantumnanox/warshipfactory/content/LagDetectorRunnable.java index a6c0484..9a47e6e 100644 --- a/src/main/java/de/quantumnanox/warshipfactory/content/LagDetectorRunnable.java +++ b/src/main/java/de/quantumnanox/warshipfactory/content/LagDetectorRunnable.java @@ -42,7 +42,7 @@ public class LagDetectorRunnable implements Runnable { } long diff = System.currentTimeMillis() - timerstart; if (players == 0 && timeout && diff > 1000*60) { - world.unloadWorld(); + world.unloadWorld(null); return; } if (other > 1000) { diff --git a/src/main/java/de/quantumnanox/warshipfactory/main/WarShipFactory.java b/src/main/java/de/quantumnanox/warshipfactory/main/WarShipFactory.java index 793c540..bec275c 100644 --- a/src/main/java/de/quantumnanox/warshipfactory/main/WarShipFactory.java +++ b/src/main/java/de/quantumnanox/warshipfactory/main/WarShipFactory.java @@ -7,12 +7,17 @@ import de.pro_crafting.sawe.RegionListener; import de.quantumnanox.warshipfactory.commands.*; import de.quantumnanox.warshipfactory.config.Config; import de.quantumnanox.warshipfactory.content.FactoryWorld; +import de.warking.hunjy.MySQL.Bauwelt; +import de.warking.hunjy.MySQL.BauweltMember; +import de.warking.hunjy.MySQL.WarkingUser; +import lombok.Getter; import net.thecobix.tag.Tag; import net.thecobix.tag.TagCompound; import net.thecobix.tag.TagInputStream; import net.thecobix.tag.TagOutputStream; import org.apache.commons.io.FileUtils; import org.bukkit.Bukkit; +import org.bukkit.World; import org.bukkit.command.CommandSender; import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.configuration.file.YamlConfiguration; @@ -48,8 +53,9 @@ public class WarShipFactory extends JavaPlugin implements Listener { public static final String S_PREFIX = "§8[§3BauFactory§8] §7"; public Config config; + @Getter + private World wrapped; private CommandFramework cmdFramework; - public Registry factoryWorlds = new Registry<>(FactoryWorld.class, "worlds"); private BungeeUtil bungeeUtil; public File regions = new File("plugins/WarShipFactory", "regions.data"); public FileConfiguration getRegionData = YamlConfiguration.loadConfiguration(regions); @@ -100,7 +106,6 @@ public class WarShipFactory extends JavaPlugin implements Listener { try { CommandRemover.removeCommand("tp"); CommandInjector.injectCommand(new CommandTeleport()); - CommandRemover.removeCommand("gamemode"); CommandInjector.injectCommand(new CommandGamemode()); @@ -112,63 +117,6 @@ public class WarShipFactory extends JavaPlugin implements Listener { config = new Config(); config.initConfig(); log("Bootstrap", "§aConfig loaded."); - try { - TagInputStream tis = new TagInputStream(new FileInputStream(new File("plugins/WarShipFactory/backend.ctf")), TagInputStream.GZIP); - List tags = tis.readTags(); - tis.close(); - Tag t = (TagCompound) tags.get(0); - factoryWorlds.load((TagCompound) t); - log("Bootstrap", "§aBackend loaded."); - } catch (IOException e) { - log("Bootstrap", "§cLoading backend failed:"); - e.printStackTrace(); - } - Bukkit.getScheduler().scheduleSyncRepeatingTask(this, new Runnable() { - public void run() { - try { - TagOutputStream tos = new TagOutputStream( - new FileOutputStream(new File("plugins/WarShipFactory/backend.ctf")), TagOutputStream.GZIP); - tos.write(factoryWorlds.save()); - tos.close(); - } catch (IOException e) { - e.printStackTrace(); - } - } - }, 60, 60); - for (FactoryWorld fw : factoryWorlds.getAll().values()) { - File f = new File(fw.getWorldAddress()); - if (f.exists() && f.isDirectory()) { - File bck = new File("plugins/WarShipFactory/worlds/" + fw.getWorldAddress()); - if (bck.exists() && bck.isDirectory()) { - try { - log("Bootstrap", "§9Removing dead world " + fw.getWorldAddress()); - FileUtils.deleteDirectory(f); - } catch (IOException e) { - log("Bootstrap", "§cAn error occured while removing dead world " + fw.getWorldAddress()); - e.printStackTrace(); - } - } else { - File lvlDat = new File(fw.getWorldAddress() + "/level.dat"); - if (lvlDat.exists()) { - try { - log("Bootstrap", "§9Fixing dead world " + fw.getWorldAddress()); - FileUtils.moveDirectory(f, bck); - } catch (IOException e) { - log("Bootstrap", "§cAn error occured while fixing dead world " + fw.getWorldAddress()); - e.printStackTrace(); - } - } else { - log("Bootstrap", "§4Corrupt world " + fw.getWorldAddress() + " :( I'm sorry. I can't do anything to recover it..."); - try { - FileUtils.deleteDirectory(f); - } catch (IOException e) { - log("Bootstrap", "§cAn error occured while removing dead world " + fw.getWorldAddress()); - e.printStackTrace(); - } - } - } - } - } cmdFramework = new CommandFramework(this); cmdFramework.setInGameOnlyMessage(S_PREFIX + "Dieser Befehl darf nur Ingame verwendet werden!"); cmdFramework.setNoPermMessage("Unknown command. Type \"/help\" for help."); @@ -242,11 +190,8 @@ public class WarShipFactory extends JavaPlugin implements Listener { } @Override public void onDisable() { - for (FactoryWorld fw : factoryWorlds.getAll().values()) { - if (fw.getWrapped() != null) { - log("Shutdown", "Unloading world " + fw.getWorldAddress()); - fw.unloadWorld(); - } + { + log("Shutdown", "Unloading world "); } } @@ -258,21 +203,17 @@ public class WarShipFactory extends JavaPlugin implements Listener { return JavaPlugin.getPlugin(WarShipFactory.class); } - public FactoryWorld getWorldByAddress(String address) { - for (FactoryWorld fw : factoryWorlds.getAll().values()) { - if (fw.getWorldAddress().equals(address)) - return fw; + public FactoryWorld getWorldFromOwner(UUID ownaz) { + { + if (Bauwelt.getBauwelt(ownaz).getUUID().equals(ownaz)); } return null; } + public FactoryWorld getWorldByAddress(String address, UUID ownaz) { + if (Bauwelt.getBauwelt(ownaz).getUUID().equals(ownaz)); + return null; + } - public FactoryWorld getWorldFromOwner(UUID ownaz) { - for (FactoryWorld fw : factoryWorlds.getAll().values()) { - if (fw.getOwner().equals(ownaz)) - return fw; - } - return null; - } @Completer(name = "bau") public List completeCommands(CommandArgs args) { @@ -296,6 +237,28 @@ public class WarShipFactory extends JavaPlugin implements Listener { } return ret; } + @Completer(name = "gs") + public List completeCommands1(CommandArgs args) { + List ret = new ArrayList(); + String label = args.getCommand().getLabel(); + for (String arg : args.getArgs()) { + label += " " + arg; + } + for (String currentLabel : this.cmdFramework.getCommandLabels()) { + String current = currentLabel.replace('.', ' '); + if (currentLabel.contains("BauFactory")) + continue; + if (current.contains(label)) { + current = current.substring(label.lastIndexOf(' ')).trim(); + current = current.substring(0, current.indexOf(' ') != -1 ? current.indexOf(' ') : current.length()) + .trim(); + if (!ret.contains(current)) { + ret.add(current); + } + } + } + return ret; + } public static class CommandInjector { private static String packageName = Bukkit.getServer().getClass().getPackage().getName(); @@ -322,9 +285,8 @@ public class WarShipFactory extends JavaPlugin implements Listener { @EventHandler public void onRespawn(PlayerRespawnEvent e) { Player p = e.getPlayer(); - FactoryWorld fw = getWorldByAddress(p.getWorld().getName()); - if (fw != null) { - e.setRespawnLocation(fw.getWrapped().getSpawnLocation()); + if (Bukkit.getWorld(p.getUniqueId()) != null) { + e.setRespawnLocation(Bukkit.getWorld(p.getUniqueId()).getSpawnLocation()); } } diff --git a/src/main/java/plugin.yml b/src/main/java/plugin.yml index 82b489e..102d9f2 100644 --- a/src/main/java/plugin.yml +++ b/src/main/java/plugin.yml @@ -1,9 +1,6 @@ name: WarShipFactory author: Exceptionflug version: 1.1 -depend: [Brew, WorldEdit, WorldGuard, CoreSystem] +depend: [Brew, WorldEdit, WorldGuard] -main: de.quantumnanox.warshipfactory.main.WarShipFactory - -commands: - gs: \ No newline at end of file +main: de.quantumnanox.warshipfactory.main.WarShipFactory \ No newline at end of file