User Tools

Site Tools


ru:tutorial:armor

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
ru:tutorial:armor [2022/03/23 17:01] – created furnygoru:tutorial:armor [2022/03/23 17:09] (current) – external edit 127.0.0.1
Line 3: Line 3:
 ==== Вступление ==== ==== Вступление ====
  
-Хотя броня немного сложнее в реализации, чем обычный блок или предмет, как только вы поймете ее логику, броню станет проще реализовать. Чтобы добавить броню, мы сначала создадим класс CustomArmorMaterial, а затем зарегистрируем предметы. Мы также рассмотрим, как их текстурировать. В конце этого документа есть специальная глава, в которой объясняется, как добавить сопротивление откидыванию к броне, поскольку этот метод доступен только через миксин (начиная с 1.16.3).+Хотя броня немного сложнее в реализации, чем обычный блок или предмет, как только вы поймете ее логику, броню станет проще реализовать. Чтобы добавить броню, мы сначала создадим класс ''CustomArmorMaterial'', а затем зарегистрируем предметы. Мы также рассмотрим, как их текстурировать. В конце этого документа есть специальная глава, в которой объясняется, как добавить сопротивление откидыванию к броне, поскольку этот метод доступен только через миксин (начиная с 1.16.3).
  
 Пример этого документа можно найти в [[https://github.com/gdude2002/Gilded-Netherite|репозитории мода в GitHub'е]].  Пример этого документа можно найти в [[https://github.com/gdude2002/Gilded-Netherite|репозитории мода в GitHub'е]]. 
Line 9: Line 9:
 ==== Создание класса материалов брони ==== ==== Создание класса материалов брони ====
  
-Поскольку новая броня должна быть установлена с новым именем (а также дополнительными функциями, такими как очки брони и прочность), нам придется создать новый класс для нашего CustomArmorMaterial. +Поскольку новая броня должна быть установлена с новым именем (а также дополнительными функциями, такими как очки брони и прочность), нам придется создать новый класс для нашего ''CustomArmorMaterial''
  
-Этот класс будет реализовывать ArmorMaterial, и он начнет с присвоения значений точкам брони (называемых PROTECTION_VALUES). Все его следующие аргументы будут использовать @Override.+Этот класс будет реализовывать ''ArmorMaterial'', и он начнет с присвоения значений точкам брони (называемых ''PROTECTION_VALUES''). Все его следующие аргументы будут использовать ''@Override''.
  
 <code java [enable_line_numbers="true"]> <code java [enable_line_numbers="true"]>
Line 25: Line 25:
 Следующие аргументы определяются таким образом (не беспокойтесь об именах, вы увидите, как мы это реализуем под ними): Следующие аргументы определяются таким образом (не беспокойтесь об именах, вы увидите, как мы это реализуем под ними):
  
-  getDurability: Сколько ударов может выдержать броня, прежде чем сломается. Использует число, которое мы написали для ''BASE_DURABILITY'' для вычисления. Кожа использует 5, Алмаз 33, Незерит 37. +  * **getDurability:** Сколько ударов может выдержать броня, прежде чем сломается. Использует число, которое мы написали для ''BASE_DURABILITY'' для вычисления. Кожа использует 5, Алмаз 33, Незерит 37. 
-  getProtectionAmount: Вызывает число ''PROTECTION_VALUES'', которое мы уже написали. +  * **getProtectionAmount:** Вызывает число ''PROTECTION_VALUES'', которое мы уже написали. 
-  getEnchantability: Это будет зависеть от того, насколько вероятно, что броня может получить высокий уровень или несколько зачарований в книге зачарований. +  * **getEnchantability:** Это будет зависеть от того, насколько вероятно, что броня может получить высокий уровень или несколько зачарований в книге зачарований. 
-  SoundEvent getEquipSound: Стандарт, используемый в ванильной броне - ''SoundEvents.ITEM_ARMOR_EQUIP_X'', где X - тип брони. +  * **SoundEvent getEquipSound:** Стандарт, используемый в ванильной броне - ''SoundEvents.ITEM_ARMOR_EQUIP_X'', где X - тип брони. 
-  Ingredient getRepairIngredient: Какой предмет мы будем использовать для ремонта брони на наковальне. Это может быть как ванильный предмет, так и один из ваших собственных. +  * **Ingredient getRepairIngredient:** Какой предмет мы будем использовать для ремонта брони на наковальне. Это может быть как ванильный предмет, так и один из ваших собственных. 
-  String getName: Какой родительский элемент брони. В алмазной броне это было бы "diamond"+  * **String getName:** Какой родительский элемент брони. В алмазной броне это было бы ''"diamond"''
-  getToughness: Это второе значение защиты, при котором броня более прочна против атак с высоким значением. Отображается как ''X.0F''+  * **getToughness:** Это второе значение защиты, при котором броня более прочна против атак с высоким значением. Отображается как ''X.0F''
  
 И новое значение, введенное на 1.16 И новое значение, введенное на 1.16
-  getKnockbackResistance: Оставим это значение равным 0. Если вы хотите его реализовать, напишите ''0.XF'' (в котором X - это степень защиты от откидывания, которую вы хотите), и я научу вас, как заставить его работать позже.+  * **getKnockbackResistance:** Оставим это значение равным 0. Если вы хотите его реализовать, напишите ''0.XF'' (в котором X - это степень защиты от откидывания, которую вы хотите), и я научу вас, как заставить его работать позже.
  
  
Line 92: Line 92:
 ==== Создание брони в виде предмета ==== ==== Создание брони в виде предмета ====
  
-Мы собираемся создать новый класс под названием RegisterItems для реализации ваших новых элементов брони. Это также будет место, например, для регистрации инструментов, если вы создаете новый предмет, такой как слиток (мы будем называть его "Custom_Material"). . Эта настройка также поместит предметы на новую вкладку предметов в креативе, но вы можете удалить эту часть. +Мы собираемся создать новый класс под названием ''RegisterItems'' для реализации ваших новых элементов брони. Это также будет место, например, для регистрации инструментов, если вы создаете новый предмет, такой как слиток (мы будем называть его ''Custom_Material''). . Эта настройка также поместит предметы на новую вкладку предметов в креативе, но вы можете удалить эту часть. 
  
-Синтаксис групп - //.group(YourModName.YOUR_MOD_NAME_BUT_IN_CAPS_GROUP)//. Я буду ссылаться на это как на ExampleMod:+Синтаксис групп - //.group(YourModName.YOUR_MOD_NAME_BUT_IN_CAPS_GROUP)//. Я буду ссылаться на это как на ''ExampleMod'':
  
 <code java [enable_line_numbers="true"]> <code java [enable_line_numbers="true"]>
Line 138: Line 138:
 </code> </code>
  
-Вот и все! Теперь ваша броня должна существовать в игре, все еще нетекстурированная, но присутствующая и способная быть выданной с помощью / give.+Вот и все! Теперь ваша броня должна существовать в игре, все еще нетекстурированная, но присутствующая и способная быть выданной с помощью /give.
  
 Теперь мы будем присваивать текстуры каждой детали. Теперь мы будем присваивать текстуры каждой детали.
Line 147: Line 147:
  
 Мы предполагаем, что у вас Мы предполагаем, что у вас
-  * Присутствуют текстуры для каждого предмета брони (x_helmet.png, x_chestplate.png и т.д.) +  * Присутствуют текстуры для каждого предмета брони (''x_helmet.png''''x_chestplate.png'' и т.д.) 
-  * Присутствуют текстуры для брони на теле (x_layer_1.png и x_layer_2.png)+  * Присутствуют текстуры для брони на теле (''x_layer_1.png'' и ''x_layer_2.png'')
  
 Нужно назначить их каждому предмету брони. Нужно назначить их каждому предмету брони.
Line 165: Line 165:
 Повторите со всеми предметами брони. Повторите со всеми предметами брони.
  
-Чтобы придать вашей броне текстуру, просто поместите X_layer_1.png и X_layer_2.png (где X - аргумент ''getName'', который вы выбрали в своем классе материалов брони) в ''resources/assets/minecraft/textures/models/armor''.+Чтобы придать вашей броне текстуру, просто поместите ''X_layer_1.png'' и ''X_layer_2.png'' (где X - аргумент ''getName'', который вы выбрали в своем классе материалов брони) в ''resources/assets/minecraft/textures/models/armor''.
  
  
Line 175: Line 175:
 И вот пришли к самому проклятому! И вот пришли к самому проклятому!
  
-Mojang решили, что они не только собираются жестко запрограммировать getKnockbackResistance, но и сделают его неизменяемым! Забавная штука.+Mojang решили, что они не только собираются жестко запрограммировать ''getKnockbackResistance'', но и сделают его неизменяемым! Забавная штука.
  
-Чтобы обойти это, мы собираемся сделать миксин, который войдет в ArmorItem. Если это ваш первый раз, [[ru:tutorial:mixin_registration|здесь о том, как зарегистрировать миксины в вашем fabric.mod.json]]+Чтобы обойти это, мы собираемся сделать миксин, который войдет в ''ArmorItem''. Если это ваш первый раз, [[ru:tutorial:mixin_registration|здесь о том, как зарегистрировать миксины в вашем fabric.mod.json]]
  
-Мы создадим класс под названием ArmorItemMixin и напишем:+Мы создадим класс под названием ''ArmorItemMixin'' и напишем:
  
 <code java [enable_line_numbers:"true"]> <code java [enable_line_numbers:"true"]>
Line 188: Line 188:
 </code> </code>
  
-Теперь мы должны создать @Shadow, чтобы изменить knockbackResistance, который является EntityAttribute+Теперь мы должны создать @Shadow, чтобы изменить ''knockbackResistance'', который является ''EntityAttribute''
  
 <code java [enable_line_numbers:"true"]> <code java [enable_line_numbers:"true"]>
Line 199: Line 199:
 </code> </code>
  
-Затем мы внедряем через @Inject наш GENERIC_KNOCKBACK_RESISTANCE в конструктор ArmorMaterial.+Затем мы внедряем через ''@Inject'' наш ''GENERIC_KNOCKBACK_RESISTANCE'' в конструктор ''ArmorMaterial''.
  
 <code java [enable_line_numbers:"true"]> <code java [enable_line_numbers:"true"]>
Line 234: Line 234:
 </code> </code>
  
-Теперь ваша броня имеет значение сопротивления откидыванию, которое вы присвоили ей еще в CustomArmorMaterial.+Теперь ваша броня имеет значение сопротивления откидыванию, которое вы присвоили ей еще в ''CustomArmorMaterial''.
ru/tutorial/armor.1648054899.txt.gz · Last modified: 2022/03/23 17:01 by furnygo