diff --git a/src/main/java/de/fanta/challenges/challenges/WorldBorderLevelChallenge.java b/src/main/java/de/fanta/challenges/challenges/WorldBorderLevelChallenge.java index dbfee06..02979ca 100644 --- a/src/main/java/de/fanta/challenges/challenges/WorldBorderLevelChallenge.java +++ b/src/main/java/de/fanta/challenges/challenges/WorldBorderLevelChallenge.java @@ -26,6 +26,16 @@ private static final Challenges plugin = Challenges.getPlugin(); + private static WorldBorder worldBorder; + private static WorldBorder netherBorder; + private static WorldBorder endBorder; + + public WorldBorderLevelChallenge() { + worldBorder = Bukkit.createWorldBorder(); + netherBorder = Bukkit.createWorldBorder(); + endBorder = Bukkit.createWorldBorder(); + } + @EventHandler public void onExpChange(PlayerExpChangeEvent e) { Player p = e.getPlayer(); @@ -99,7 +109,6 @@ @EventHandler public void onWorldChange(PlayerChangedWorldEvent e) { if (plugin.getConfig().getBoolean("worldborderlevel")) { - e.getPlayer().getWorld().setSpawnLocation(Bukkit.getWorld("world").getSpawnLocation()); borderSync(); } } @@ -116,7 +125,16 @@ plugin.getConfig().set("worldborderlevelnether", true); plugin.saveConfig(); } + Location spawnLocation = nether.getSpawnLocation(); + + if (plugin.getConfig().getString("worldborderlevelnetherspawnlocation.world") == null) { + plugin.getConfig().set("worldborderlevelnetherspawnlocation.world", spawnLocation.getWorld().getName()); + plugin.getConfig().set("worldborderlevelnetherspawnlocation.X", spawnLocation.getBlockX()); + plugin.getConfig().set("worldborderlevelnetherspawnlocation.Z", spawnLocation.getBlockZ()); + plugin.saveConfig(); + } + e.setTo(spawnLocation); borderSync(); } @@ -148,15 +166,35 @@ public static void borderSync() { int level = plugin.getConfig().getInt("worldborderlevellevel"); Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, () -> { - WorldBorder worldBorder = Bukkit.createWorldBorder(); + + Location netherspawnlocation = new Location(Bukkit.getWorld("world_nether"), plugin.getConfig().getDouble("worldborderlevelnetherspawnlocation.X", 0), 0, plugin.getConfig().getDouble("worldborderlevelnetherspawnlocation.Z", 0)); + Bukkit.getLogger().info("Spawn " + netherspawnlocation.getWorld().getName() + ": " + netherspawnlocation.getX() + " " + netherspawnlocation.getY() + " " + netherspawnlocation.getZ()); + netherBorder.setCenter(netherspawnlocation); + Bukkit.getLogger().info("Border: " + netherBorder.getCenter().getX() + " " + netherBorder.getCenter().getY() + " " + netherBorder.getCenter().getZ()); + + endBorder.setCenter(new Location(Bukkit.getWorld("world_the_end"), 0, 0, 0)); + worldBorder.setCenter(Bukkit.getWorld("world").getSpawnLocation()); + for (Player player : Bukkit.getOnlinePlayers()) { if (level > 0) { - worldBorder.setCenter(player.getWorld().getSpawnLocation()); worldBorder.setSize(level * 2); + netherBorder.setSize(level * 2); + endBorder.setSize(level * 2); } else { worldBorder.setSize(1); + netherBorder.setSize(1); + endBorder.setSize(1); } - player.setWorldBorder(worldBorder); + if (player.getWorld().getName().equals("world")) { + player.setWorldBorder(worldBorder); + Bukkit.getLogger().info("world"); + } else if (player.getWorld().getName().equals("world_nether")) { + player.setWorldBorder(netherBorder); + Bukkit.getLogger().info("nether"); + } else { + player.setWorldBorder(endBorder); + Bukkit.getLogger().info("other"); + } } }, 1L); } diff --git a/src/main/java/de/fanta/challenges/guis/settingsgui/ChallengesGui.java b/src/main/java/de/fanta/challenges/guis/settingsgui/ChallengesGui.java index ddaa3e0..6baa4b1 100644 --- a/src/main/java/de/fanta/challenges/guis/settingsgui/ChallengesGui.java +++ b/src/main/java/de/fanta/challenges/guis/settingsgui/ChallengesGui.java @@ -135,6 +135,7 @@ GUIUtils.sendTitleToAll("Challenge", "World Border Level deaktiviert", ChatUtil.RED); } else { GUIUtils.setConfig("worldborderlevel", true); + new WorldBorderLevelChallenge(); WorldBorderLevelChallenge.borderSync(); for (Player pp : Bukkit.getOnlinePlayers()) { pp.teleport(pp.getWorld().getSpawnLocation());