Переопределить вызовы Java в JavaScript Nashorn - PullRequest
0 голосов
/ 12 октября 2018

Я сейчас пытаюсь включить поддержку JavaScript для игры "Minecraft", используя Nashorn .Моя цель - дать пользователям возможность создавать свои собственные команды и функции.По большей части это работает нормально, но проблема в том, что код Minecraft запутывается при использовании его с Forge .

По этой причине все вызовы полей и методов должны быть перезаписаны.сопоставлены с соответствующими им именами srg .

Пример: mc.thePlayer.swingItem(); до mc.field_71439_g.func_71038_i();

Я могу ввести код в библиотеку Nashorn, используя Mixin и я уже сделал парсер для файла srg.Короче говоря, мне нужен метод, который я могу использовать, чтобы заменить thePlayer на field_71439_g или swingItem()V на func_71038_i()V до фактического выполнения кода.

Я уже пытался найти подходящие методыпо часам.

https://github.com/CCBlueX/LiquidBounce1.8-Issues/issues/2649

Ответы [ 2 ]

0 голосов
/ 15 октября 2018

Решение

Просто добавьте в этот метод "jdk.internal.dynalink.beans.AbstractJavaLinker"

Методы преобразования:

addMember(Ljava/lang/String;Ljava/lang/reflect/AccessibleObject;Ljava/util/Map;)V

Remap поля:

addMember(Ljava/lang/String;Ljdk/internal/dynalink/beans/SingleDynamicMethod;Ljava/util/Map;)V

setPropertyGetter(Ljava/lang/String;Ljdk/internal/dynalink/beans/SingleDynamicMethod;Ljdk/internal/dynalink/beans/GuardedInvocationComponent$ValidationType;)V

0 голосов
/ 12 октября 2018

Вам нужен MCPbot

Вернее, экспорт его сопоставлений.

Обратите внимание, что MCPbot, как следует из его названия, является ботом. В частности, один на канале IRC, чтобы разработчики модов могли сказать «эй, я понял, что делает func_12345_a» и сообщить боту, дав ему удобочитаемое имя, именованные параметры и javadoc, и следующая сборка Forge будет включать этиобновлены сопоставления для использования моддерами.

(часть "MCP" означает "Minecraft Coder Pack.")

Вы можете найти экспорт сопоставлений имен SRG на веб-сайте MCPbot из которых вам понадобятся оба csv-файла: поля и методы (так как они экспортируются отдельно).

Однако отмечу, что включение этих отображений в ваш мод, вероятно, нарушит авторские права, и выпрежде чем использовать их таким образом, следует проконсультироваться с профессором Мобиусом.

...