🇺🇦 Українська (Ukrainian - Ukraine)
🇺🇦 Українська (Ukrainian - Ukraine)
Зовнішній вигляд
🇺🇦 Українська (Ukrainian - Ukraine)
🇺🇦 Українська (Ukrainian - Ukraine)
Зовнішній вигляд
Ця сторінка написана для версії:
1.21.4
Ця сторінка написана для версії:
1.21.4
Ця сторінка познайомить вас з деякими ключовими поняттями, пов’язаними з предметами, а також з тим, як їх можна реєструвати, текстурувати, моделювати та називати.
Якщо ви не знаєте, все в Minecraft зберігається в реєстрах, і предмети не є винятком.
Щоб спростити реєстрацію предметів, ви можете створити метод, який приймає екземпляр предмета та ідентифікатор рядка.
Цей метод створить предмет із наданим ідентифікатором і зареєструє його в реєстрі предметів гри.
Ви можете помістити цей метод у клас під назвою ModItems
(або будь-яку іншу назву класу).
Mojang також робить це зі своїми предметами! Щоб отримати натхнення, перегляньте клас Items
.
public class ModItems {
public static Item register(Item item, RegistryKey<Item> registryKey) {
// Register the item.
Item registeredItem = Registry.register(Registries.ITEM, registryKey.getValue(), item);
// Return the registered item!
return registeredItem;
}
Тепер ви можете зареєструвати товар за допомогою методу зараз.
Конструктор предмета приймає екземпляр класу Items.Settings
як параметр. Цей клас дозволяє вам налаштовувати властивості предмета за допомогою різних методів конструктора.
TIP
If you want to change your item's stack size, you can use the maxCount
method in the Items.Settings
/FabricItemSettings
class.
Це не спрацює, якщо ви позначили предмет як такий, що може бути пошкоджений, оскільки розмір стосу завжди дорівнює 1 для предметів, які можна пошкодити, щоб запобігти повторюваним експлойтам.
public static final RegistryKey<Item> SUSPICIOUS_SUBSTANCE_KEY = RegistryKey.of(RegistryKeys.ITEM, Identifier.of(FabricDocsReference.MOD_ID, "suspicious_substance"));
public static final Item SUSPICIOUS_SUBSTANCE = register(
new Item(new Item.Settings().registryKey(SUSPICIOUS_SUBSTANCE_KEY)),
SUSPICIOUS_SUBSTANCE_KEY
);
Однак, якщо ви зараз спробуєте запустити модифікований клієнт, ви побачите, що наш предмет ще не існує в грі! Це тому, що ви не ініціалізували клас статично.
Для цього ви можете додати загальнодоступний статичний метод ініціалізації до свого класу та викликати його з класу ініціалізатора мода. Наразі цей метод не потребує нічого всередині.
public static void initialize() {
}
public class FabricDocsReferenceItems implements ModInitializer {
@Override
public void onInitialize() {
ModItems.initialize();
}
}
Виклик методу в класі статично ініціалізує його, якщо він не був попередньо завантажений - це означає, що всі статичні
поля оцінюються. Ось для чого цей фіктивний метод ініціалізації
.
INFO
Якщо ви хочете додати предмет до спеціальної ItemGroup
, перегляньте сторінку власні групи предметів для отримання додаткової інформації.
Для прикладу ми додамо цей предмет до інгредієнтів ItemGroup
, вам потрібно буде використовувати події групи предметів Fabric API, зокрема ItemGroupEvents.modifyEntriesEvent
Це можна зробити за допомогою методу ініціалізації
вашого класу предметів.
// Get the event for modifying entries in the ingredients group.
// And register an event handler that adds our suspicious item to the ingredients group.
ItemGroupEvents.modifyEntriesEvent(ItemGroups.INGREDIENTS)
.register((itemGroup) -> itemGroup.add(ModItems.SUSPICIOUS_SUBSTANCE));
Завантажуючись у гру, ви бачите, що наш предмет зареєстровано та знаходиться в групі предметів «Інгредієнти»:
Однак у ньому відсутнє таке:
Предмет наразі не має перекладу, тому його потрібно буде додати. Ключ перекладу вже надав Minecraft: item.mod_id.suspicious_substance
.
Створіть новий файл JSON за адресою: src/main/resources/assets/mod-id/lang/en_us.json
і введіть ключ перекладу та його значення:
{
"item.mod_id.suspicious_substance": "Suspicious Substance"
}
Ви можете перезапустити гру або створити свій мод і натиснути F3+T, щоб застосувати зміни.
Щоб надати вашому предмету текстуру та модель, просто створіть зображення текстури 16x16 для свого предмета та збережіть його в теці assets/mod-id/textures/item
. Назвіть файл текстури так само, як ідентифікатор предмета, але з розширенням .png
.
Для прикладу ви можете використовувати цей приклад текстури для suspicious_substance.png
Під час перезавантаження/перезавантаження гри ви повинні побачити, що предмет все ще не має текстури, тому що вам потрібно буде додати модель, яка використовує цю текстуру.
Ви збираєтеся створити просту модель item/generated
, яка приймає вхідну текстуру і нічого більше.
Створіть модель JSON в теці assets/mod-id/models/item
з такою самою назвою, як у предмета; suspicious_substance.json
{
"parent": "minecraft:item/generated",
"textures": {
"layer0": "fabric-docs-reference:item/suspicious_substance"
}
}
parent
: це батьківська модель, яку ця модель успадкує. У цьому випадку це модель item/generated
.textures
: тут ви визначаєте текстури для моделі. Ключ layer0
— це текстура, яку використовуватиме модель.Більшість предметів використовуватимуть модель item/generated
як батьківську, оскільки це проста модель, яка лише показує текстуру.
Існують альтернативи, такі як item/handheld
, який використовується для предметів, які "тримаються" в руці гравця, наприклад інструментів.
Minecraft не визначає автоматично, де можна знайти файли моделей ваших предметів, нам потрібно надати опис моделі предмета.
Створіть JSON опису предмета в assets/mod-id/items
з тією ж назвою файлу, що й ідентифікатор предмета: suspicious_substance.json
.
{
"model": {
"type": "minecraft:model",
"model": "fabric-docs-reference:item/suspicious_substance"
}
}
model
: це властивість, яка містить посилання на нашу модель. type
: це тип нашої моделі. Для більшості предметів це має бути minecraft:модель
model
: це ідентифікатор моделі. Він повинен мати таку форму: mod-id:item/item_name
Тепер ваш предмет у грі має виглядати так:
API Fabric надає різні реєстри, які можна використовувати для додавання додаткових властивостей до вашого предмета.
Наприклад, якщо ви хочете зробити свій предмет компостованим, ви можете використати CompostableItemRegistry
:
// Add the suspicious substance to the composting registry with a 30% chance of increasing the composter's level.
CompostingChanceRegistry.INSTANCE.add(ModItems.SUSPICIOUS_SUBSTANCE, 0.3f);
Крім того, якщо ви хочете зробити свій предмет паливом, ви можете використати подію FuelRegistryEvents.BUILD
:
// Add the suspicious substance to the registry of fuels, with a burn time of 30 seconds.
// Remember, Minecraft deals with logical based-time using ticks.
// 20 ticks = 1 second.
FuelRegistryEvents.BUILD.register((builder, context) -> {
builder.add(ModItems.SUSPICIOUS_SUBSTANCE, 30 * 20);
});
Якщо ви хочете додати рецепт виготовлення для свого предмета, вам потрібно буде розмістити JSON-файл рецепту в теці data/mod-id/recipe
.
Щоб дізнатися більше про формат рецепта, перегляньте ці ресурси:
Якщо ви хочете, щоб ваш предмет мав спеціальну підказку, вам потрібно буде створити клас, який розширює Item
і перевизначає метод appendTooltip
.
INFO
У цьому прикладі використовується клас LightningStick
, створений на сторінці власні інтерактивні предмети.
@Override
public void appendTooltip(ItemStack stack, TooltipContext context, List<Text> tooltip, TooltipType type) {
tooltip.add(Text.translatable("itemTooltip.fabric-docs-reference.lightning_stick").formatted(Formatting.GOLD));
}
Кожен виклик add()
додаватиме один рядок до підказки.