NetherPortals.java 文件源码

java
阅读 26 收藏 0 点赞 0 评论 0

项目:askygrid 作者:
@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;
}
   }
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号