0 голосов 1369 просмотров 17.09.2016 / 06:21
Death
Вот захотелось сделать что-то на подобии модов для моей игры, или модули. Что бы я просто выпустил само приложение, и оставалось только другим скачать одновлённый модуль и запихнуть его в папку с модулями, или же в самой программе, выбрать модуль, а там уже сама программа его разместит, там где нужно. Вопрос: как сделать так что бы эти модули влияли на код?Например у нас есть в главной программе класс со списком врагов, там есть 3 типа врага, когда подключен модуль, то сначала загрузится сама программы, а потом модули, как модуль загрузился, то добавилось ещё 5 типов врагов. Ответы
2 голоса При запуске app.jar нужно добавить модули в classpath:
Написав скрипт или программу для запуска приложения, ты можешь просканировать файлы в нужной папке и сделать автоматическое добавление модулей в classpath, сделав запуск программы ещё проще. Там же можно сделать и включение/отключение модулей. Следующая часть — создание интерфейса для модулей в программе. Нужен единый интерфейс, который предоставляет всем модулям необходимые данные и получает от них информацию.
Программа передаёт String type модулю, а взамен получает список строк. Методов в интерфейсе может быть много, самих интерфейсов тоже может быть много, какие данные передавать в модули, а какие получать решаешь сам в зависимости от задачи. Реализация плагина может быть такая:
Далее, основное приложение должно знать, где в модуле находится класс, реализующий интерфейс Module. Это может быть заранее прописано в основном приложении, либо читаться из файла конфигурации, либо обусловить пакет, в котором будут храниться модули, как сам решишь. Когда мы знаем, где находится класс модуля, мы можем его запустить. Для этого используется Reflection API.
Изм. aNNiMON
от 17.09.2016 / 12:13
0 голосов
18.09.2016 / 05:56
Death
Я делал моды для майнкрафта. Так что знаю как там идёт загрузка. Но сборка самого файла .jar будет ручной, так как в forge там есть батнки собирающие.
0 голосов
17.09.2016 / 10:39
Death
Можно по подробней? Как и что подключать и где?
Всего: 3
|
Реклама |