Помогите Добавление нового типа энтити

  • Автор темы Автор темы reZero
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

reZero

Активный участник
Пользователь
Баллы
76
Всем привет
Появилась у меня нужда взаимодействовать с сущностями из мода MrCrayfish's Vehicle Mod
Решил я проверить - а будет ли вообще клик по сущности "откликаться" на стороне сервера (в модах вообще не шарю, поэтому для меня это был резонный вопрос)
И действительно, при клике на сущность из мода мне отправлялось сообщение, всё клёво
Но я решил проверить кое-что для себя, а конкретнее - отправил в консоль тип энтити, на который я собсна кликаю, вывелось "VEHICLE_GOKART". На этом я не остановился и вызвал метод EntityType#ordinal(), который вывел мне в консоль "107"
Вопрос заключается в следующем... Похоже, что я не понимаю чего-то элементарного из джавы, ведь я не понял, каким образом мне выводится тип энтити и его ординал, которых нет в дефолтном
EntityType классе от бакита.
Кто шарит, можете пожалуйста объяснить как это было сделано технически, мне правда это очень интересно
upload_2021-3-15_19-17-26.png
 
Тебе будет намного быстрее спросить это у разработчиков твоего ядра. Но, в конце концов, enum это по сути EnumObject extends Enum<EnumObject>. Если упороться, можно вручную это сделать и добавить какой-нибудь регистратор. Вот небольшой ответ на SOF.
 
Последнее редактирование:
Тебе будет намного быстрее спросить это у разработчиков твоего ядра. Но, в конце концов, enum это по сути EnumObject implements Enum<EnumObject>. Если упороться, можно вручную это сделать и добавить какой-нибудь регистратор. Вот небольшой ответ на SOF.
Стало понятнее, спасибо за ответ!
Подожду еще, мб @alexandrage что-нибудь от себя напишет
 
Да, в энамы действительно можно добавлять новые значения в рантайме. Самый распространённый и наглядный пример - форж, который добавляет новые материалы из модов. Можешь поиграться и перебором вывести в консоль список всех своих EntityType - увидишь там и VEHICLE_GOKART, и все остальные виды, которые добавляет этот плагин/мод (и любые другие, если таковые имеются)
 
Стало понятнее, спасибо за ответ!
Подожду еще, мб @alexandrage что-нибудь от себя напишет
Рефлексией enum добавляется. Потому в коде ты его можешь получить только через EntityType .valueOf(string)
Но такое делает только ведро, в самом майне это хешмап.
 
Рефлексией enum добавляется. Потому в коде ты его можешь получить только через EntityType .valueOf(string)
Но такое делает только ведро, в самом майне это хешмап.
Именно так. Единственно надо понимать что добавления ещё одного мембера enum в рантайме это хак, который приходится делать по разному в зависимости от версии жабы.
 
Всем спасибо! теперь знаю в какую сторону копать)
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх