Equipment API: Система слотов для экипировки
Данное API предоставляет разработчикам модификаций возможность создавать собственные слоты для снаряжения. Основанное на концепции украшений, это решение позволяет регистрировать специализированные ячейки для различных типов предметов.
Для доступа к интерфейсу снаряжения нажмите клавишу R или кликните по иконке кирки в углу инвентаря игрока.
В окне снаряжения отображаются все зарегистрированные слоты. При наличии более 8 ячеек используйте стрелки навигации для переключения между страницами.
Примечание: Все показанные слоты предназначены исключительно для демонстрации и не включены в основную модификацию.
Руководство по использованию API
Работа с API максимально упрощена и в основном сводится к регистрации типа EquipmentType, который определяет совместимые предметы, внешний вид слота и обработчики изменений.
EquipmentApi.registerEquipment(YOUR_EQUIPMENT_ID, new EquipmentType() {
ResourceLocation overlay = new ResourceLocation(YOURMODID, "textures/YOUR_SLOT_OVERLAY.png");
@Override
/ Текстура для наложения на слот (отображается под предметом) /
public ResourceLocation getSlotOverlay(ItemStack stack) {
return overlay;
// альтернативно можно использовать return stack == null ? null : overlay;
// это скроет фоновое изображение при размещении предмета в слоте
}
@Override
/ Может ли игрок извлечь указанный стак из слота /
public boolean canRemoveStack(ItemStack stack, EntityPlayer player) {
return true;
}
@Override
/ Может ли игрок поместить указанный стак в слот /
public boolean canPlaceStack(ItemStack stack) {
return stack != null && stack.getItem() != null && stack.getItem() == Items.arrow;
}
@Override
/ Максимальный размер стака в этом слоте /
public int getStackLimit() {
return 64;
}
@Override
/ Текстовое описание при наведении курсора, поддерживает перевод строки /
public String getSlotDescription(EntityPlayer player) {
return "Стрелы";
}
@Override
/ Вызывается при любом изменении содержимого слота /
public void onChange(ItemStack from, ItemStack to, EntityPlayer player) {
}
});