Java/bukkit : Run "For" method 1 time in runnable?

标签 java minecraft bukkit

所以我有这个代码:

                           ProtectedRegion region = WGBukkit.getRegionManager(p.getWorld()).getRegion("afk1mine");
                       Vector max = region.getMaximumPoint();
                       Vector min = region.getMinimumPoint();
                           for (int i = min.getBlockX(); i <= max.getBlockX();i++) {
                                 for (int j = min.getBlockY(); j <= max.getBlockY(); j++) {
                                   for (int k = min.getBlockZ(); k <= max.getBlockZ();k++) {
                                     final Block kasamas = Bukkit.getServer().getWorld("paradise").getBlockAt(i,j,k);
                                         //Bukkit.getPluginManager().callEvent(new BlockBreakEvent(kasamas, p));
                                         p.sendMessage(" kitas: " + kasamas); 
                                   }
                                 }
                               }   

我确实只想发送第一个 block 的消息,然后在 1 秒内重复可运行并发送第二个 block 的消息等。

最佳答案

您需要增加 BukkitRunnable 中的坐标。像这样的东西会起作用,尽管我承认它看起来不太好。

BukkitRunnable sendMessage = new BukkitRunnable() {
    final int minI = min.getBlockX(), minJ = min.getBlockY(), minK = min.getBlockZ();
    final int maxI = max.getBlockX(), maxJ = max.getBlockY(), maxK = max.getBlockZ();
    int i = minI, j = minJ, k = minK;

    @Override
    public void run() {
        final Block kasamas = Bukkit.getServer().getWorld("paradise").getBlockAt(i, j, k);
        p.sendMessage(" kitas: " + kasamas);
        if (k > maxK) {
            if (j > maxJ) {
                if (i > maxI) {
                    cancel();
                } else {
                    i++;
                    j = minJ;
                    k = minK;
                }
            } else {
                j++;
                k = minK;
            }
        } else {
            k++;
        }
    }
};
sendMessage.runTaskTimer(plugin, 0, 20);

这假设peffectively final ;否则,您可能需要创建一个有效的最终变量来捕获它。将 plugin 替换为您的插件类的实例。

关于Java/bukkit : Run "For" method 1 time in runnable?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48129882/

相关文章:

java - 如何向现有进程发送另一个命令?

Java 套接字监听器问题?

java - 为什么 "EntityDamageByEntityEvent"没有被激活?

java - 尝试参加另一个类时出现问题

java - 可以打开随机java源文件并提供智能感知的编辑器/IDE

java - Gradle 传递依赖项排除未按预期工作。 (如何摆脱 com.google.guava :guava-jdk5:13. 0 ?)

windows - 导致 Minecraft 使用不同目录的批处理文件?

java - 使用 Vagrant 时为 Chef 预缓存下载

java - 特殊字符破坏Json

java - 有没有办法在没有 AsyncPlayerChatEvent 的情况下捕获玩家聊天输入?