Minecraft插件 - 随机传送片的块发电滞后



我正在制作一个UHC插件,当我想传送所有播放器时,我有问题。球员没有为球员装载。然后,他们滞后约7秒钟,落入空隙之前,然后才能移动。经过一番研究,我已经看到块的加载范围为10,可以在server.properties中进行修改。

所以这是我的代码:

public class RTPCommand implements CommandExecutor {
Main main;
int i, j, x, z;
World world;
Player player;
public RTPCommand(Main main) {
    this.main = main;
    world = Bukkit.getWorld("world");
}
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
    if(label.equalsIgnoreCase("rtp") && sender instanceof Player){
        player = (Player) sender;
        Random random = new Random();
        x = random.nextInt(10000);
        z = random.nextInt(10000);
        Bukkit.broadcastMessage("X : " + x + " // Z: " + z);
        i = x - 160;j = z - 160;
        new TaskTimer().runTaskTimer(main, 0, 2);
    }
    return false;
}
class TaskTimer extends BukkitRunnable{
    @Override
    public void run() {
        Chunk chunk = world.getChunkAt(i, j);
        chunk.load(true);
        j += 16;
        if(j == (z + 160)){
            if(i == (x + 160)){
                cancel();
                System.out.println("FINI.");
                player.teleport(new Location(world, x, world.getHighestBlockYAt(x, z), z));
            }else{
                i += 16;
                j = z - 160;
            }
        }
    }
}
}

执行命令/RTP时,它会将块的块加载到播放器周围的10个范围。我还注册了Chunkloadevent,并在每个加载的块上制作了System.out.println(chunk);。因此,例如x = 6600z=7520;我加载了所有块,并且可以正常工作,并且当播放器被传送时,我看到块将块加载到控制台中(带有ChunkLoadEvent)。但这是x=40的块,z=150。这根本不符合逻辑。我该怎么办来解决此问题?

块不是位置。

块是该位置的1/16,因此您的示例x = 6600,z = 7520将是X = 412 z = 470

类似地,x = 40的块坐标,z = 150
等于x = 640-656 z = 2400-2416

的世界中的x/z范围

最新更新