@EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true)
public void onPlayerPortal(PlayerPortalEvent event) {
// If the nether is disabled then quit immediately
if (!Settings.createNether) {
return;
}
Location currentLocation = event.getFrom().clone();
String currentWorld = currentLocation.getWorld().getName();
if (!currentWorld.equalsIgnoreCase(Settings.worldName) && !currentWorld.equalsIgnoreCase(Settings.worldName + "_nether")
&& !currentWorld.equalsIgnoreCase(Settings.worldName + "_the_end")) {
return;
}
// Determine what portal it is
switch (event.getCause()) {
case END_PORTAL:
if (Settings.createEnd) {
// Same action for all worlds except the end itself
if (!event.getFrom().getWorld().getEnvironment().equals(Environment.THE_END)) {
if (ASkyGrid.getEndWorld() != null) {
// The end exists
event.setCancelled(true);
// Convert current location to end world location
Location end_place = event.getPlayer().getLocation().toVector().toLocation(ASkyGrid.getEndWorld());
// Set the height to the top of the end grid
end_place.setY(Settings.gridHeight);
if (GridManager.isSafeLocation(end_place)) {
event.getPlayer().teleport(end_place);
return;
} else {
end_place = plugin.getGrid().bigScan(end_place, 10);
if (end_place != null) {
event.getPlayer().teleport(end_place);
} else {
// Try the spawn
end_place = ASkyGrid.getEndWorld().getSpawnLocation();
if (GridManager.isSafeLocation(end_place)) {
event.getPlayer().teleport(end_place);
return;
} else {
event.getPlayer().sendMessage(ChatColor.RED + plugin.myLocale(event.getPlayer().getUniqueId()).warpserrorNotSafe);
}
}
return;
}
}
} else {
// Returning from the end - just go home
event.setCancelled(true);
plugin.getGrid().homeTeleport(event.getPlayer());
}
}
break;
case NETHER_PORTAL:
// Get the home world of this player
if (event.getFrom().getWorld().getEnvironment().equals(Environment.NORMAL)) {
// Going to Nether
event.setTo(event.getFrom().toVector().toLocation(ASkyGrid.getNetherWorld()));
event.useTravelAgent(true);
} else {
// Returning
event.setTo(event.getFrom().toVector().toLocation(ASkyGrid.getGridWorld()));
event.useTravelAgent(true);
}
break;
default:
break;
}
}
NetherPortals.java 文件源码
java
阅读 26
收藏 0
点赞 0
评论 0
项目:askygrid
作者:
评论列表
文章目录