是否可以将此 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
相当慢,因此您最好采用只执行一次的模式。另外,您可以在 enable
和 disable
!
之间共享数据
有关更多详细信息和其他选项(例如将 Jython 的东西放在一个文件中并通过 pi.exec
调用它)请参阅 Jython Book 中的 Chapter 10: Jython and Java Integration。
编码时还要记住:Jython 只有 Python 2.7!!!
我正在观看此视频以查找有关制作 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 中编写一个精简包装器 ,然后调用您的 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
相当慢,因此您最好采用只执行一次的模式。另外,您可以在 enable
和 disable
!
有关更多详细信息和其他选项(例如将 Jython 的东西放在一个文件中并通过 pi.exec
调用它)请参阅 Jython Book 中的 Chapter 10: Jython and Java Integration。
编码时还要记住:Jython 只有 Python 2.7!!!