Working hotfix for 1.8 island disappear

This commit is contained in:
Fabrizio La Rosa 2020-06-17 15:10:33 +02:00
parent 652a53010c
commit 1055f755d8

View File

@ -230,23 +230,20 @@ public class Move implements Listener {
} }
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onTeleport(PlayerTeleportEvent e) { public void onTeleport(PlayerTeleportEvent e) { // TODO We should wait for the player island to be loaded in 1.8.8 - Fabrimat
final Player player = e.getPlayer(); final Player player = e.getPlayer();
final WorldManager worldManager = skyblock.getWorldManager(); final WorldManager worldManager = skyblock.getWorldManager();
if(e.getTo() != null && e.getTo().getWorld() != null){
if (e.getTo() == null || e.getTo().getWorld().loadChunk(e.getTo().getChunk());
!worldManager.isIslandWorld(e.getTo().getWorld()) || if(worldManager.isIslandWorld(e.getTo().getWorld()) && e.getTo().distance(e.getFrom()) > 1.0d){ // We should not care of self block tp
skyblock.getIslandManager().getIslandAtLocation(e.getTo()) != null) if(skyblock.getIslandManager().getIslandAtLocation(e.getTo()) == null){
return;
e.setCancelled(true); e.setCancelled(true);
Bukkit.getScheduler().runTaskLater(skyblock, () -> {
if (e.getTo() != null && worldManager.isIslandWorld(e.getTo().getWorld()) && skyblock.getIslandManager().getIslandAtLocation(e.getTo()) == null)
skyblock.getMessageManager().sendMessage(player, skyblock.getMessageManager().sendMessage(player,
skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")).getFileConfiguration().getString("Island.WorldBorder.Disappeared.Message")); skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml"))
.getFileConfiguration().getString("Island.WorldBorder.Disappeared.Message"));
skyblock.getSoundManager().playSound(player, CompatibleSound.ENTITY_ENDERMAN_TELEPORT.getSound(), 1.0F, 1.0F); skyblock.getSoundManager().playSound(player, CompatibleSound.ENTITY_ENDERMAN_TELEPORT.getSound(), 1.0F, 1.0F);
}, 10L); // 2 ticks are good, 10 because we don't know the cause yet }
}
}
} }
} }