User Tools

Site Tools


ru:tutorial:modding_tips

Советы разработчикам

Вот коллекция разнообразных советов по моддингу, связанных с Fabric API, почерпнутых из опыта консультирования пользователей.

Основы (API)

  • Из-за подхода к разработке Fabric API, основанного на внедрении, мы не склонны напрямую исправлять классы таким образом, чтобы они были видны конечному пользователю. Таким образом, вы можете иногда находить расширения структуры ванильных классов, когда сталкиваетесь с чем-то, что вы не можете сделать. Для примера:
    • Block.SettingsFabricBlockSettings
    • EntityType.BuilderFabricEntityTypeBuilder
  • Для встроенного ресурспака или датапака, пожалуйста, убедитесь, что путь к каталогу assets/[mod id] или data/[mod id] присутствует соответственно! Пользователи IDEA могут случайно обнаружить, что создают папку assets.[mod id] - это не сработает.

Миксины

  • Чтобы привести класс к интерфейсу, который он не реализует, или привести конечный класс, или привести миксин к вашему целевому классу, вы можете использовать (TargetClass) (Object) sourceClassObject.
  • Миксины @Redirect и @ModifyConstant в настоящее время не могут быть вложенными (применяются более чем одним модом в одной и той же области одновременно). Это может измениться позже в процессе разработки - однако на данный момент, наряду с @Overwrite, пожалуйста, избегайте их, если это возможно (или обсудите перенос хука в Fabric API, или - для более нишевых вещей - рассмотрите возможность размещения его в небольшом JAR-in-JAR API)
  • Если вы добавляете непубличные пользовательские поля или методы, добавьте к ним префикс [modid]$ или другую уникальную строку и прокомментируйте их с помощью @Unique. По сути, mymod$secretValue вместо secretValue. Это делается для того, чтобы избежать конфликтов между модами, добавляющими поле или метод с одинаковым именем.

Сеть

  • Пакеты всегда начинают выполнение в сетевом потоке, однако доступ к большинству вещей Minecraft не является потокобезопасным. В общем, если вы не совсем уверены в том, что делаете, вам нужно проанализировать пакет в сетевом потоке (прочитать все значения), затем используйте очередь задач для выполнения дополнительных операций в главном потоке сервера/клиента.

Подводные камни

  • Избегайте использования пакета java.awt и его подпакетов. AWT не работает хорошо во всех системах. Несколько пользователей сообщили, что на нем зависает Minecraft.
ru/tutorial/modding_tips.txt · Last modified: 2022/03/07 17:30 by 127.0.0.1