Java Bukkit传送-nullPointerException

Java Bukkit传送-nullPointerException,java,bukkit,Java,Bukkit,我正在尝试使用以下代码将用户传送到他们自己的领域: @EventHandler public static void onPortalTravel(PlayerPortalEvent event) throws Exception { if(event.getCause() == PlayerPortalEvent.TeleportCause.END_PORTAL) { int x = event.getPlayer().getLocation().getBlockX()

我正在尝试使用以下代码将用户传送到他们自己的领域:

@EventHandler
public static void onPortalTravel(PlayerPortalEvent event) throws Exception {
    if(event.getCause() == PlayerPortalEvent.TeleportCause.END_PORTAL) {
        int x = event.getPlayer().getLocation().getBlockX();
        int y = event.getPlayer().getLocation().getBlockY();
        int z = event.getPlayer().getLocation().getBlockZ();

        String[] data = getPageData("http://example.com/game.php?type=getRealm&location="+x+":"+y+":"+z ).split(":"); // THIS RETURNS <username>:<oldblockid>

        String realm = data[0];
        int oldID = Integer.parseInt(data[1].trim());

        Bukkit.getServer().getWorld("world").getBlockAt(x, y, z).setTypeId(oldID);
 *err*  event.getPlayer().teleport(new Location(Bukkit.getWorld("realms/" + realm), 1, 65, 16.5));
    }

}

似乎这个世界还没有加载。你必须先加载它

这段代码检查世界是否为空。如果为空,则加载(如果世界已存在) 或者创造(如果世界还不存在的话)世界

@EventHandler
public static void onPortalTravel(PlayerPortalEvent event) throws Exception {
    if (event.getCause() == PlayerPortalEvent.TeleportCause.END_PORTAL) {
        int x = event.getPlayer().getLocation().getBlockX();
        int y = event.getPlayer().getLocation().getBlockY();
        int z = event.getPlayer().getLocation().getBlockZ();

        String[] data = getPageData("http://example.com/game.php?type=getRealm&location="+x+":"+y+":"+z).split(":"); // THIS RETURNS <username>:<oldblockid>
        String realm = data[0];
        int oldID = Integer.parseInt(data[1].trim());

        Bukkit.getServer().getWorld("world").getBlockAt(x, y, z).setTypeId(oldID);
        World world = Bukkit.getWorld("realms/" + realm);
        if(world == null){
            //Loads a world with the name given in the constructor
            WorldCreator wc = new WorldCreator("realms/" + realm);
            world = Bukkit.createWorld(wc);

        }
        event.getPlayer().teleport(new Location(world, 1, 65,16.5));
    }

}
@EventHandler
PortalTravel上的公共静态void(PlayerPortalEvent事件)引发异常{
if(event.getCause()==PlayerPortalEvent.TeleportCause.END\u门户){
int x=event.getPlayer().getLocation().getBlockX();
int y=event.getPlayer().getLocation().getBlockY();
int z=event.getPlayer().getLocation().getBlockZ();
字符串[]数据=getPageData(“http://example.com/game.php?type=getRealm&location=“+x+”:“+y+”:“+z).拆分(“:”)//返回:
字符串领域=数据[0];
int oldID=Integer.parseInt(数据[1].trim());
Bukkit.getServer().getWorld(“world”).getBlockAt(x,y,z).setTypeId(oldID);
World-World=Bukkit.getWorld(“领域/”+领域);
if(world==null){
//使用构造函数中给定的名称加载世界
WorldCreator wc=新WorldCreator(“领域/”+领域);
world=Bukkit.createWorld(wc);
}
event.getPlayer().teleport(新位置(world,1,65,16.5));
}
}

似乎这个世界还没有加载。你必须先加载它

这段代码检查世界是否为空。如果为空,则加载(如果世界已存在) 或者创造(如果世界还不存在的话)世界

@EventHandler
public static void onPortalTravel(PlayerPortalEvent event) throws Exception {
    if (event.getCause() == PlayerPortalEvent.TeleportCause.END_PORTAL) {
        int x = event.getPlayer().getLocation().getBlockX();
        int y = event.getPlayer().getLocation().getBlockY();
        int z = event.getPlayer().getLocation().getBlockZ();

        String[] data = getPageData("http://example.com/game.php?type=getRealm&location="+x+":"+y+":"+z).split(":"); // THIS RETURNS <username>:<oldblockid>
        String realm = data[0];
        int oldID = Integer.parseInt(data[1].trim());

        Bukkit.getServer().getWorld("world").getBlockAt(x, y, z).setTypeId(oldID);
        World world = Bukkit.getWorld("realms/" + realm);
        if(world == null){
            //Loads a world with the name given in the constructor
            WorldCreator wc = new WorldCreator("realms/" + realm);
            world = Bukkit.createWorld(wc);

        }
        event.getPlayer().teleport(new Location(world, 1, 65,16.5));
    }

}
@EventHandler
PortalTravel上的公共静态void(PlayerPortalEvent事件)引发异常{
if(event.getCause()==PlayerPortalEvent.TeleportCause.END\u门户){
int x=event.getPlayer().getLocation().getBlockX();
int y=event.getPlayer().getLocation().getBlockY();
int z=event.getPlayer().getLocation().getBlockZ();
字符串[]数据=getPageData(“http://example.com/game.php?type=getRealm&location=“+x+”:“+y+”:“+z).拆分(“:”)//返回:
字符串领域=数据[0];
int oldID=Integer.parseInt(数据[1].trim());
Bukkit.getServer().getWorld(“world”).getBlockAt(x,y,z).setTypeId(oldID);
World-World=Bukkit.getWorld(“领域/”+领域);
if(world==null){
//使用构造函数中给定的名称加载世界
WorldCreator wc=新WorldCreator(“领域/”+领域);
world=Bukkit.createWorld(wc);
}
event.getPlayer().teleport(新位置(world,1,65,16.5));
}
}

CraftPlayer第395行有没有Bukkit源代码可以查看发生了什么?是的,我会查看CraftPlayer.java:395=WorldServer toWorld=((CraftWorld)to.getWorld()).getHandle();***位于CraftEntity.java的行:199=返回传送(location,TeleportCause.PLUGIN);你检查过你自己代码中的
Bukkit.getWorld
没有返回空值吗?这里的人不会像那里的人那样知道那么多。你有Bukkit源代码来查看CraftPlayer第395行的情况吗?是的,我会查看CraftPlayer.java:395=WorldServer toWorld=((CraftWorld)to.getWorld()).getHandle();***位于CraftEntity.java的行:199=返回传送(location,TeleportCause.PLUGIN);你有没有检查过你自己代码中的
Bukkit.getWorld
没有返回空值?这里的人不会像那里的人那样知道那么多。