Bukkit teleport - nullPointerException

后端 未结 1 1922
名媛妹妹
名媛妹妹 2021-01-28 04:30

I am trying to teleport a user to their own realm using the following code:

@EventHandler
public static void onPortalTravel(PlayerPortalEvent event) throws Excep         


        
相关标签:
1条回答
  • 2021-01-28 05:15

    It seems like this world is not loaded yet. You have to load it first.

    This snippets checks if the world is null. If it is null, it loads(if the world already exists) or creates(if the world doesn't exist yet) the world.

    @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));
        }
    
    }
    
    0 讨论(0)
提交回复
热议问题