Merged Standard and Island Nethers portal handling in the same method

This commit is contained in:
Florian CUNY 2019-02-16 22:48:05 +01:00
parent 781676a90f
commit edd774d979

View File

@ -89,23 +89,6 @@ public class PortalTeleportationListener implements Listener {
} }
} }
/**
* When returning from the standard nether, teleport to the player's island
* @param e
*/
@EventHandler(priority = EventPriority.LOW, ignoreCancelled = true)
public void onNetherPortalStandardNether(PlayerPortalEvent e) {
World fromWorld = e.getFrom().getWorld();
if (e.getCause().equals(TeleportCause.NETHER_PORTAL)
&& plugin.getIWM().inWorld(Util.getWorld(fromWorld))
&& !plugin.getIWM().isNetherIslands(fromWorld)
&& fromWorld.getEnvironment().equals(Environment.NETHER)
&& plugin.getPlayers().isKnown(e.getPlayer().getUniqueId())) {
e.setCancelled(true);
plugin.getIslands().homeTeleport(Util.getWorld(fromWorld), e.getPlayer());
}
}
/** /**
* Handles nether portals * Handles nether portals
* @param e - event * @param e - event
@ -116,26 +99,30 @@ public class PortalTeleportationListener implements Listener {
return false; return false;
} }
World fromWorld = e.getFrom().getWorld(); World fromWorld = e.getFrom().getWorld();
if (!e.getCause().equals(TeleportCause.NETHER_PORTAL) || !plugin.getIWM().inWorld(e.getFrom()) if (e.getCause() != TeleportCause.NETHER_PORTAL || !plugin.getIWM().isNetherGenerate(fromWorld)) {
|| !plugin.getIWM().isNetherGenerate(fromWorld)) {
// Do nothing special // Do nothing special
return false; return false;
} }
// STANDARD NETHER // STANDARD NETHER
if (plugin.getIWM().isNetherGenerate(fromWorld) && !plugin.getIWM().isNetherIslands(fromWorld)) { if (plugin.getIWM().isNetherGenerate(fromWorld) && !plugin.getIWM().isNetherIslands(fromWorld)) {
if (fromWorld.getEnvironment().equals(Environment.NORMAL)) { if (fromWorld.getEnvironment() == Environment.NORMAL) {
// To Standard Nether // To Standard Nether
e.setTo(plugin.getIWM().getNetherWorld(fromWorld).getSpawnLocation()); e.setTo(plugin.getIWM().getNetherWorld(fromWorld).getSpawnLocation());
e.useTravelAgent(true); e.useTravelAgent(true);
} }
// From standard nether
else if (fromWorld.getEnvironment() == Environment.NETHER) {
e.setCancelled(true);
plugin.getIslands().homeTeleport(Util.getWorld(fromWorld), e.getPlayer());
}
return false; return false;
} }
// FROM NETHER // FROM NETHER
World overWorld = Util.getWorld(fromWorld); World overWorld = Util.getWorld(fromWorld);
// If entering a nether portal in the nether, teleport to portal in overworld if there is one // If entering a nether portal in the nether, teleport to portal in overworld if there is one
if (fromWorld.getEnvironment().equals(Environment.NETHER)) { if (fromWorld.getEnvironment() == Environment.NETHER) {
// If this is from the island nether, then go to the same vector, otherwise try island home location // If this is from the island nether, then go to the same vector, otherwise try island home location
Location to = plugin.getIslands().getIslandAt(e.getFrom()).map(i -> i.getSpawnPoint(Environment.NORMAL)).orElse(e.getFrom().toVector().toLocation(overWorld)); Location to = plugin.getIslands().getIslandAt(e.getFrom()).map(i -> i.getSpawnPoint(Environment.NORMAL)).orElse(e.getFrom().toVector().toLocation(overWorld));
e.setCancelled(true); e.setCancelled(true);