是否可以将此 Java 代码转换为 Jython 以用于 Minecraft 插件?

Is it possible to convert this Java code to Jython for a Minecraft Plugin?

我正在观看此视频以查找有关制作 Minecraft 插件的一些信息。 https://youtu.be/r4W4drYdb4Q 所有插件都是用 Java 制作的。由于我使用 Python 进行编程,我想知道是否可以使用 Jython 制作一个类似于视频中看到的插件。我不确定这是否可行,但我开始尝试了。

编程时 Java 大多数人使用 Eclipse,并且有一个按钮显示 "Add external Jar",您可以在此处输入 spigot jar 文件。据我了解,我可以这样做:

import sys
sys.path.append("spigot-1.15.2.jar")

在 Jython 中。然后是棘手的部分。我将如何转换它: Code Part 1

Code Part 2

根据我的想法,我需要做的是:

from org.bukkit.plugin.java import JavaPlugin

class Main(JavaPlugin):
    def onEnable():
        pass
        #what do I put here?
    def onDisable():
        pass
        #what do I put here?

但我认为我没有正确地将 Java 代码转换为 Jython。将代码从 Java 转换为 Jython 的正确方法是什么? 非常感谢!

根据我的理解,您想从 Jython 代码与扩展 JavaPlugin.

的 Java class 进行交互

为此,我建议您在 Java 中编写一个精简包装器 ,然后调用您的 Jython 代码,您可以使用熟悉的语言完成繁重的工作。包装器的骨架可能如下所示:

package {$GroupName}.{$ArtifactName};

import org.bukkit.plugin.java.JavaPlugin;
import org.python.util.PythonInterpreter;

public final class {$ArtifactName} extends JavaPlugin {
    @Override
    public void onEnable() {
        PythonInterpreter pi = new PythonInterpreter();
        pi.execfile("enable.py"); // enable.py is the Jython file with the enable stuff
    }

    @Override
    public void onDisable() {
        PythonInterpreter pi = new PythonInterpreter();
        pi.execfile("disable.py"); // enable.py is the Jython file with the disable stuff
    }

}

请注意,实例化 PythonInterpreter 相当慢,因此您最好采用只执行一次的模式。另外,您可以在 enabledisable!

之间共享数据

有关更多详细信息和其他选项(例如将 Jython 的东西放在一个文件中并通过 pi.exec 调用它)请参阅 Jython Book 中的 Chapter 10: Jython and Java Integration

编码时还要记住:Jython 只有 Python 2.7!!!