From efd4b9938e5c8ea40326e2a6a32884561e024767 Mon Sep 17 00:00:00 2001 From: Brianna O'Keefe Date: Sat, 2 Feb 2019 11:39:51 -0500 Subject: [PATCH] teleportation will now correctly reset fly/upgrades. --- .../skyblock/listeners/Teleport.java | 271 +++++++++--------- 1 file changed, 136 insertions(+), 135 deletions(-) diff --git a/src/main/java/me/goodandevil/skyblock/listeners/Teleport.java b/src/main/java/me/goodandevil/skyblock/listeners/Teleport.java index 2bd5c376..66baf379 100644 --- a/src/main/java/me/goodandevil/skyblock/listeners/Teleport.java +++ b/src/main/java/me/goodandevil/skyblock/listeners/Teleport.java @@ -1,8 +1,22 @@ package me.goodandevil.skyblock.listeners; -import java.io.File; -import java.util.UUID; - +import me.goodandevil.skyblock.SkyBlock; +import me.goodandevil.skyblock.api.event.player.PlayerIslandEnterEvent; +import me.goodandevil.skyblock.api.event.player.PlayerIslandExitEvent; +import me.goodandevil.skyblock.api.event.player.PlayerIslandSwitchEvent; +import me.goodandevil.skyblock.config.FileManager; +import me.goodandevil.skyblock.config.FileManager.Config; +import me.goodandevil.skyblock.island.Island; +import me.goodandevil.skyblock.island.IslandManager; +import me.goodandevil.skyblock.island.IslandWorld; +import me.goodandevil.skyblock.message.MessageManager; +import me.goodandevil.skyblock.playerdata.PlayerData; +import me.goodandevil.skyblock.playerdata.PlayerDataManager; +import me.goodandevil.skyblock.sound.SoundManager; +import me.goodandevil.skyblock.utils.version.NMSUtil; +import me.goodandevil.skyblock.utils.version.Sounds; +import me.goodandevil.skyblock.visit.Visit; +import me.goodandevil.skyblock.world.WorldManager; import org.bukkit.Bukkit; import org.bukkit.OfflinePlayer; import org.bukkit.configuration.file.FileConfiguration; @@ -12,175 +26,162 @@ import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerTeleportEvent; import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause; -import me.goodandevil.skyblock.SkyBlock; -import me.goodandevil.skyblock.api.event.player.PlayerIslandEnterEvent; -import me.goodandevil.skyblock.api.event.player.PlayerIslandExitEvent; -import me.goodandevil.skyblock.api.event.player.PlayerIslandSwitchEvent; -import me.goodandevil.skyblock.config.FileManager; -import me.goodandevil.skyblock.config.FileManager.Config; -import me.goodandevil.skyblock.island.Island; -import me.goodandevil.skyblock.message.MessageManager; -import me.goodandevil.skyblock.island.IslandManager; -import me.goodandevil.skyblock.island.IslandWorld; -import me.goodandevil.skyblock.playerdata.PlayerData; -import me.goodandevil.skyblock.playerdata.PlayerDataManager; -import me.goodandevil.skyblock.sound.SoundManager; -import me.goodandevil.skyblock.utils.version.NMSUtil; -import me.goodandevil.skyblock.utils.version.Sounds; -import me.goodandevil.skyblock.visit.Visit; -import me.goodandevil.skyblock.world.WorldManager; +import java.io.File; +import java.util.UUID; public class Teleport implements Listener { - private final SkyBlock skyblock; + private final SkyBlock skyblock; - public Teleport(SkyBlock skyblock) { - this.skyblock = skyblock; - } + public Teleport(SkyBlock skyblock) { + this.skyblock = skyblock; + } - @EventHandler - public void onPlayerTeleport(PlayerTeleportEvent event) { - Player player = event.getPlayer(); + @EventHandler + public void onPlayerTeleport(PlayerTeleportEvent event) { + Player player = event.getPlayer(); - PlayerDataManager playerDataManager = skyblock.getPlayerDataManager(); - MessageManager messageManager = skyblock.getMessageManager(); - IslandManager islandManager = skyblock.getIslandManager(); - SoundManager soundManager = skyblock.getSoundManager(); - WorldManager worldManager = skyblock.getWorldManager(); - FileManager fileManager = skyblock.getFileManager(); + PlayerDataManager playerDataManager = skyblock.getPlayerDataManager(); + MessageManager messageManager = skyblock.getMessageManager(); + IslandManager islandManager = skyblock.getIslandManager(); + SoundManager soundManager = skyblock.getSoundManager(); + WorldManager worldManager = skyblock.getWorldManager(); + FileManager fileManager = skyblock.getFileManager(); - Config config = fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml")); - FileConfiguration configLoad = config.getFileConfiguration(); + Config config = fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml")); + FileConfiguration configLoad = config.getFileConfiguration(); - islandManager.removeUpgrades(player, false); - islandManager.loadPlayer(player); + islandManager.removeUpgrades(player, false); + islandManager.loadPlayer(player); - if (worldManager.isIslandWorld(player.getWorld())) { - boolean isCause = false; + if (worldManager.isIslandWorld(player.getWorld())) { + boolean isCause = false; - if (event.getCause() == TeleportCause.ENDER_PEARL || event.getCause() == TeleportCause.NETHER_PORTAL - || event.getCause() == TeleportCause.END_PORTAL) { - isCause = true; - } else { - if (NMSUtil.getVersionNumber() > 9) { - if (event.getCause() == TeleportCause.END_GATEWAY) { - isCause = true; - } - } - } + if (event.getCause() == TeleportCause.ENDER_PEARL || event.getCause() == TeleportCause.NETHER_PORTAL + || event.getCause() == TeleportCause.END_PORTAL) { + isCause = true; + } else { + if (NMSUtil.getVersionNumber() > 9) { + if (event.getCause() == TeleportCause.END_GATEWAY) { + isCause = true; + } + } + } - if (isCause && !islandManager.hasPermission(player, "Portal")) { - event.setCancelled(true); + if (isCause && !islandManager.hasPermission(player, "Portal")) { + event.setCancelled(true); - messageManager.sendMessage(player, configLoad.getString("Island.Settings.Permission.Message")); - soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); + messageManager.sendMessage(player, configLoad.getString("Island.Settings.Permission.Message")); + soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); - return; - } - } + return; + } + } - if (playerDataManager.hasPlayerData(player)) { - PlayerData playerData = playerDataManager.getPlayerData(player); + if (playerDataManager.hasPlayerData(player)) { + PlayerData playerData = playerDataManager.getPlayerData(player); - Island island = islandManager.getIslandAtLocation(event.getTo()); + Island island = islandManager.getIslandAtLocation(event.getTo()); - if (island != null) { - if (!island.getOwnerUUID().equals(playerData.getOwner())) { - if (!player.hasPermission("fabledskyblock.bypass") && !player.hasPermission("fabledskyblock.bypass.*") - && !player.hasPermission("fabledskyblock.*")) { - if (!island.isOpen() && !island.isCoopPlayer(player.getUniqueId())) { - event.setCancelled(true); + if (island != null) { + islandManager.giveUpgrades(player, island); + islandManager.giveFly(player, island); + if (!island.getOwnerUUID().equals(playerData.getOwner())) { + if (!player.hasPermission("fabledskyblock.bypass") && !player.hasPermission("fabledskyblock.bypass.*") + && !player.hasPermission("fabledskyblock.*")) { + if (!island.isOpen() && !island.isCoopPlayer(player.getUniqueId())) { + event.setCancelled(true); - messageManager.sendMessage(player, - configLoad.getString("Island.Visit.Closed.Plugin.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + messageManager.sendMessage(player, + configLoad.getString("Island.Visit.Closed.Plugin.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - return; - } else if (fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")) - .getFileConfiguration().getBoolean("Island.Visitor.Banning") - && island.getBan().isBanned(player.getUniqueId())) { - event.setCancelled(true); + return; + } else if (fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")) + .getFileConfiguration().getBoolean("Island.Visitor.Banning") + && island.getBan().isBanned(player.getUniqueId())) { + event.setCancelled(true); - messageManager.sendMessage(player, - configLoad.getString("Island.Visit.Banned.Teleport.Message")); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + messageManager.sendMessage(player, + configLoad.getString("Island.Visit.Banned.Teleport.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - return; - } - } - } + return; + } + } + } - if (playerData.getIsland() != null && !playerData.getIsland().equals(island.getOwnerUUID())) { - me.goodandevil.skyblock.api.island.Island exitIsland = null; + if (playerData.getIsland() != null && !playerData.getIsland().equals(island.getOwnerUUID())) { + me.goodandevil.skyblock.api.island.Island exitIsland = null; - OfflinePlayer offlinePlayer = Bukkit.getServer().getOfflinePlayer(playerData.getIsland()); + OfflinePlayer offlinePlayer = Bukkit.getServer().getOfflinePlayer(playerData.getIsland()); - if (islandManager.containsIsland(playerData.getIsland())) { - exitIsland = islandManager.getIsland(offlinePlayer).getAPIWrapper(); - } + if (islandManager.containsIsland(playerData.getIsland())) { + exitIsland = islandManager.getIsland(offlinePlayer).getAPIWrapper(); + } - Bukkit.getServer().getPluginManager().callEvent(new PlayerIslandExitEvent(player, exitIsland)); - Bukkit.getServer().getPluginManager() - .callEvent(new PlayerIslandSwitchEvent(player, exitIsland, island.getAPIWrapper())); + Bukkit.getServer().getPluginManager().callEvent(new PlayerIslandExitEvent(player, exitIsland)); + Bukkit.getServer().getPluginManager() + .callEvent(new PlayerIslandSwitchEvent(player, exitIsland, island.getAPIWrapper())); - playerData.setVisitTime(0); - } + playerData.setVisitTime(0); + } - if (worldManager.getIslandWorld(event.getTo().getWorld()) == IslandWorld.Normal) { - if (!island.isWeatherSynchronized()) { - player.setPlayerTime(island.getTime(), - fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")) - .getFileConfiguration().getBoolean("Island.Weather.Time.Cycle")); - player.setPlayerWeather(island.getWeather()); - } - } + if (worldManager.getIslandWorld(event.getTo().getWorld()) == IslandWorld.Normal) { + if (!island.isWeatherSynchronized()) { + player.setPlayerTime(island.getTime(), + fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")) + .getFileConfiguration().getBoolean("Island.Weather.Time.Cycle")); + player.setPlayerWeather(island.getWeather()); + } + } - UUID islandOwnerUUID = playerData.getIsland(); - playerData.setIsland(island.getOwnerUUID()); + UUID islandOwnerUUID = playerData.getIsland(); + playerData.setIsland(island.getOwnerUUID()); - if (islandOwnerUUID != null && islandManager.containsIsland(islandOwnerUUID) - && (playerData.getOwner() == null || !playerData.getOwner().equals(islandOwnerUUID))) { - islandManager.unloadIsland( - islandManager.getIsland(Bukkit.getServer().getOfflinePlayer(islandOwnerUUID)), null); - } + if (islandOwnerUUID != null && islandManager.containsIsland(islandOwnerUUID) + && (playerData.getOwner() == null || !playerData.getOwner().equals(islandOwnerUUID))) { + islandManager.unloadIsland( + islandManager.getIsland(Bukkit.getServer().getOfflinePlayer(islandOwnerUUID)), null); + } - Visit visit = island.getVisit(); + Visit visit = island.getVisit(); - if (!visit.isVisitor(player.getUniqueId())) { - Bukkit.getServer().getPluginManager() - .callEvent(new PlayerIslandEnterEvent(player, island.getAPIWrapper())); + if (!visit.isVisitor(player.getUniqueId())) { + Bukkit.getServer().getPluginManager() + .callEvent(new PlayerIslandEnterEvent(player, island.getAPIWrapper())); - visit.addVisitor(player.getUniqueId()); - visit.save(); - } + visit.addVisitor(player.getUniqueId()); + visit.save(); + } - return; - } + return; + } - player.resetPlayerTime(); - player.resetPlayerWeather(); + player.resetPlayerTime(); + player.resetPlayerWeather(); - if (playerData.getIsland() != null) { - me.goodandevil.skyblock.api.island.Island islandWrapper = null; - island = islandManager.getIsland(Bukkit.getServer().getOfflinePlayer(playerData.getIsland())); + if (playerData.getIsland() != null) { + me.goodandevil.skyblock.api.island.Island islandWrapper = null; + island = islandManager.getIsland(Bukkit.getServer().getOfflinePlayer(playerData.getIsland())); - if (island != null) { - islandWrapper = island.getAPIWrapper(); - } + if (island != null) { + islandWrapper = island.getAPIWrapper(); + } - Bukkit.getServer().getPluginManager().callEvent(new PlayerIslandExitEvent(player, islandWrapper)); + Bukkit.getServer().getPluginManager().callEvent(new PlayerIslandExitEvent(player, islandWrapper)); - playerData.setVisitTime(0); - } + playerData.setVisitTime(0); + } - UUID islandOwnerUUID = playerData.getIsland(); - playerData.setIsland(null); + UUID islandOwnerUUID = playerData.getIsland(); + playerData.setIsland(null); - if (islandOwnerUUID != null && islandManager.containsIsland(islandOwnerUUID) - && (playerData.getOwner() == null || !playerData.getOwner().equals(islandOwnerUUID))) { - islandManager.unloadIsland( - islandManager.getIsland(Bukkit.getServer().getOfflinePlayer(islandOwnerUUID)), null); - } - } - } + if (islandOwnerUUID != null && islandManager.containsIsland(islandOwnerUUID) + && (playerData.getOwner() == null || !playerData.getOwner().equals(islandOwnerUUID))) { + islandManager.unloadIsland( + islandManager.getIsland(Bukkit.getServer().getOfflinePlayer(islandOwnerUUID)), null); + } + } + } }