Можно ли преобразовать этот код Java в Jython для подключаемого модуля Minecraft? - PullRequest
0 голосов
/ 18 июня 2020

Я просматривал это видео, чтобы найти информацию о создании плагинов для Minecraft. https://youtu.be/r4W4drYdb4Q Все плагины сделаны с Java. Поскольку я программирую с помощью Python, мне было интересно, можно ли создать плагин, похожий на тот, который показан в видео, но с Jython. Я не уверен, возможно ли это, но я начал пробовать.

При программировании Java большинство людей используют Eclipse, и есть кнопка с надписью «Добавить внешний Jar», и именно здесь вы вводите файл jar spigot . Насколько я понимаю, я могу сделать это с помощью:

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

в Jython. Затем наступает сложная часть. Как мне go преобразовать это: Часть кода 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? Большое спасибо!

1 Ответ

1 голос
/ 18 июня 2020

Насколько я понимаю, вы хотите взаимодействовать из своего кода Jython с классом Java, который расширяет 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) посмотрите Глава 10: Jython и Java Интеграция в Jython Book.

Также имейте в виду при написании кода: Jython - это только Python 2.7 !!!

...