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

2024-04-28 14:07:18 发布

您现在位置:Python中文网/ 问答频道 /正文

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

在编程Java时,大多数人使用Eclipse,有一个按钮显示“添加外部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的正确方法是什么? 非常感谢


Tags: import插件视频def编程syscodepass
1条回答
网友
1楼 · 发布于 2024-04-28 14:07:18

据我所知,您希望从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书中的Chapter 10: Jython and Java Integration

在编写代码时也要记住:Jython只是Python2.7

相关问题 更多 >