【问题标题】:Using Bukkit and Java to create a 'repeating task' code on a Minecraft spigot plugin使用 Bukkit 和 Java 在 Minecraft spigot 插件上创建“重复任务”代码
【发布时间】:2022-11-22 20:14:39
【问题描述】:

我正在创建一个龙头插件(使用爪哇布吉语言),这将使我能够将玩家的坐标存储在我的世界(Java版)实时。

我想用一个'调度程序'用一个来做到这一点'重复任务'结构体。

我有以下代码:

Bukkit.getServer().getScheduler().scheduleSyncRepeatingTask((Plugin)this, (Runnable)new Runnable() {
            @Override
            public void run() {
                if (main.this.stopRepeater) {
                    main.this.logToFile(thePlayer, thePlayer.getLocation());
                }
            }
        }, 0L, 20L);
    }

但是,我不是 100% 确定'@Override''新的可运行()'部分代码实际上在这里播放。这是我第一次在项目中使用 Java/Bukkit/Spigot。

我知道'新的可运行()'用于创建一个新的可运行代码线程,并且'@Override'方法用于覆盖父类 - 但什么是'家长班'在上面的这种情况下?

由于不同的网站有不同的说法,我一直无法找到明确的解释。

如果有人能为我澄清这一点,我将不胜感激!

【问题讨论】:

    标签: java plugins minecraft bukkit spigot


    【解决方案1】:

    我正在创建一个 spigot 插件(使用 Java 和 Bukkit 语言)

    Bukkit 不是一种语言;它是 Minecraft 的 API。 Spigot 是另一个构建在 Bukkit 之上的 Minecraft API。

    @Override 行是 annotation 并且对代码没有任何功能影响。

    来自docs

    @Override 注释通知编译器该元素旨在覆盖超类中声明的元素。

    您正在覆盖 Runnable 中的 run() 方法。 Runnable 类是一个接口,run() 方法是抽象的,这意味着它没有主体。因此,它的实现必须由子类定义,除非它本身是抽象的。

    您尝试执行的代码很危险,因为它会在主线程(同步)上每 20 个滴答声(1 秒)执行一次文件 I/O 操作。这可能会导致延迟峰值并损害用户体验。

    Spigot 做得很好beginner's tutorial,您应该阅读它。此外,还有许多其他在线资源可用于学习 Java 编程,您应该加以利用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-03
      相关资源
      最近更新 更多