- Версия(и) Minecraft
- 1.7, 1.12
Привет.
Данный мини-ресурс дает возможность добавить свой предмет как вид топлива для печки или механизма, который использует
Почти вся основная информация расписана в самом коде.
Как минимум нужно знать как зарегистрировать эвент/предмет/блок!
Начнем.
Для добавления времени топлива к предмету есть 3 разных варианта.
Разберем все 3. Но какой лучше - скорее всего 1-ый.
Вариант 1.
Переопределение метода
Вариант 2.
Изменение через эвент получения времени горения.
Вариант 3.
Изменение через унаследования
В 1.12.2 данный метод считается Deprecated.
Для данного метода нужно создать класс, который будет наследован от
Класс:
И сама регистарция.
Она должна быть в инициализации мода. (
Так же что бы удалить предмет как топливо можно использовать вариант 2.
Для проверки можно использовать JEI или же просто попробовать "запустить" печку.
Скрины:
Для добавление блоку время горения нужно заменить:
На
В место BLOCK указать Ваш блок.
Если делать через вариант 1, то переопределять метод нужно у ItemBlock'а блока.
Для добавления времени топлива к предмету есть 2 разных варианта.
Разберем все 2.
Вариант 1.
Изменение через эвент получения времени горения.
Хоть в 1.7 этот метод считается Deprecated, но этот метод нормально работает, как и должен.
Вариант 2.
Изменение через унаследования
Для данного метода нужно создать класс, который будет наследован от
Класс:
И сама регистарция.
Она должна быть в инициализации мода. (
Так же для удаления подходит вариант 1. (Вариант 2 работает только на добавление!)
На этом все. Спасибо за внимание.
Данный мини-ресурс дает возможность добавить свой предмет как вид топлива для печки или механизма, который использует
TileEntityFurnace#getItemBurnTime
.Почти вся основная информация расписана в самом коде.
Как минимум нужно знать как зарегистрировать эвент/предмет/блок!
Начнем.
1.12.2
Для добавления времени топлива к предмету есть 3 разных варианта.
Разберем все 3. Но какой лучше - скорее всего 1-ый.
Вариант 1.
Переопределение метода
getItemBurnTime
у предмета.
Java:
@Override
public int getItemBurnTime(ItemStack itemStack) { // Переопределение времени горения.
return 200; //200 - это кол-во тиков за 1 предмет. 400 - это 2 предмета, 600 - это 3 и так далее!
}
Вариант 2.
Изменение через эвент получения времени горения.
Java:
@SubscribeEvent
public static void fuel(FurnaceFuelBurnTimeEvent e) { // Эвент получения времени горения.
if (e.getItemStack().getItem() == TMRegistry.itemWithFuel) // Проверка на наш предмет.
e.setBurnTime(200); // Установка времени горения. Отменять эвент не нужно, т.к. он сам это уже делает.
}
Вариант 3.
Изменение через унаследования
IFuelHandler
.В 1.12.2 данный метод считается Deprecated.
Для данного метода нужно создать класс, который будет наследован от
IFuelHandler
, так же его нужно регистрировать.Класс:
Java:
public class FuelHandler implements IFuelHandler { // Унаследование от обработчика времени топлива.
@Override
public int getBurnTime(ItemStack fuel) { // Сюда передается сам предмет, который проверяется на горение.
if (fuel.getItem() == TMRegistry.itemWithFuel) // Проверка на наш предмет.
return 200; // Установка времени горения.
return 0;
}
}
Она должна быть в инициализации мода. (
FMLInitializationEvent
)
Java:
GameRegistry.registerFuelHandler(new FuelHandler()); // Регистрация самого обработчика времени топлива.
Так же что бы удалить предмет как топливо можно использовать вариант 2.
Java:
@SubscribeEvent
public static void fuel(FurnaceFuelBurnTimeEvent e) { // Эвент получения времени горения.
if (e.getItemStack().getItem() == Items.COAL) // Проверка на удаляемый предмет.
e.setBurnTime(0); // Установка времени горения.
}
Для проверки можно использовать JEI или же просто попробовать "запустить" печку.
Скрины:
Для добавление блоку время горения нужно заменить:
if (fuel.getItem() == TMRegistry.itemWithFuel)
На
if (fuel.getItem() == Item.getItemFromBlock(BLOCK))
В место BLOCK указать Ваш блок.
Если делать через вариант 1, то переопределять метод нужно у ItemBlock'а блока.
1.7.10
Для добавления времени топлива к предмету есть 2 разных варианта.
Разберем все 2.
Вариант 1.
Изменение через эвент получения времени горения.
Хоть в 1.7 этот метод считается Deprecated, но этот метод нормально работает, как и должен.
Java:
@SubscribeEvent
public void event(FuelBurnTimeEvent e) { // Сам эвент получения топлива.
if (e.fuel.getItem() == Items.apple) { // Проверяем, что нужный нам предмет.
e.burnTime = 200; // Устанавливаем время горения.
e.setResult(Result.ALLOW); // ОБЯЗАТЕЛЬНО изменяем результат эвента. Можно и DENY, главное что бы он был не DEFAUL.
}
}
Вариант 2.
Изменение через унаследования
IFuelHandler
.Для данного метода нужно создать класс, который будет наследован от
IFuelHandler
, так же его нужно регистрировать.Класс:
Java:
public class FuelHandler implements IFuelHandler { // Унаследование от обработчика времени топлива.
@Override
public int getBurnTime(ItemStack fuel) { // Сюда передается сам предмет, который проверяется на горение.
if (fuel.getItem() == Items.apple) // Проверка на наш предмет.
return 200; // Установка времени горения.
return 0;
}
}
Она должна быть в инициализации мода. (
FMLInitializationEvent
)
Java:
GameRegistry.registerFuelHandler(new FuelHandler()); // Регистрация самого обработчика времени топлива.
Так же для удаления подходит вариант 1. (Вариант 2 работает только на добавление!)
Java:
@SubscribeEvent
public void event(FuelBurnTimeEvent e) { // Сам эвент получения топлива.
if (e.fuel.getItem() == Items.coal) { // Проверяем, что нужный нам предмет.
e.burnTime = 0; // Устанавливаем время горения.
e.setResult(Result.ALLOW); // ОБЯЗАТЕЛЬНО изменяем результат эвента. Можно и DENY, главное что бы он был не DEFAUL.
}
}
На этом все. Спасибо за внимание.
Мод на 1.12.2.
Все работает.
Новые версии? Хм.. Под 1.13 Forge еще нету!