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



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

在编写Java时,大多数人使用Eclipse,并且有一个按钮显示"添加外部Jar",这是您输入spigot jar文件的地方。据我了解,我可以用:

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

在杰通。然后是棘手的部分。我将如何转换它: 代码第 1 部分

代码第 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类进行交互。

为此,我建议你用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书中的第10章:Jython和Java集成。

在编码时也要记住:Jython只是Python 2.7!!

最新更新