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
没有返回空值?这里的人不会像那里的人那样知道那么多。