Топливо для печки

1,057
50
234
Добрый день.

Не могу понять, как из итема сделать топливо для печки.
Не подскажите?
 
Спасибо, выручили.
[merge_posts_bbcode]Добавлено: 23.12.2014 23:34:58[/merge_posts_bbcode]

Что-то на 1.7.10 не хочет....
 
К примеру:
В главном классе:
Код:
GameRegistry.registerFuelHandler(new FuelHandler());
В новом созданном классе "FuelHandler":
Код:
public class FuelHandler implements IFuelHandler {

    @Override
    public int getBurnTime(ItemStack fuel) {
        if (fuel.getItem() == Core.item_fuel) return 200;
        return 0;
    }

}
"return 200;" время горения в тиках.
 
Эвента я не нашёл, не в Эвентах Forge'а и не Интернете, для 1.7.10.
То что я показал, это работает на Minecraft 1.7.10 Forge 10.13.2.1272.
 
Код:
package blessentumble.moons.io.items;

import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import blessentumble.BlesseAddon;
import blessentumble.CreativeTabsBlesse;
import cpw.mods.fml.common.IFuelHandler;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;

public class ItemMytryl extends Item implements IFuelHandler{
 
 public ItemMytryl()
 {
 super();
 this.setUnlocalizedName("Mytryl");
 this.setMaxStackSize(64);
 this.setMaxDamage(0);
 this.setTextureName(BlesseAddon.ASSET_PREFIX + ":" + "Mytryl");
 }
 
 @SideOnly(Side.CLIENT)
 @Override
 public CreativeTabs getCreativeTab()
 {
 return CreativeTabsBlesse.BlesseItemsTab;
 }

 @Override
 public int getBurnTime(ItemStack fuel) {
 // TODO Auto-generated method stub
  return 1;
 }

}
Я создаю такой итем.
Регистрирую его тут:
Код:
package blessentumble.core.items;

import micdoodle8.mods.galacticraft.core.Constants;
import net.minecraft.item.Item;
import blessentumble.moons.io.items.ItemMytryl;
import cpw.mods.fml.common.IFuelHandler;
import cpw.mods.fml.common.registry.GameRegistry;

public class ItemsAddon
{
    public static Item Mytryl;
 


 public static void initItems()
 {
    Mytryl = new ItemMytryl();
 
 registerItems();
 }

 private static void registerItems()
 {
    registerItem(Mytryl);
     GameRegistry.registerFuelHandler(new ItemMytryl() );
 
 }

 private static void registerItem(Item item)
 {
 GameRegistry.registerItem(item, item.getUnlocalizedName(), Constants.MOD_ID_PLANETS);
 }
 
 
}
И нифига. Клиент крашит.
 
Я ни чего не понял, что ты сделал (так как не вижу всего что надо). Регистрировать "registerFuelHandler" в:
Код:
@EventHandler
    public void preInit(FMLPreInitializationEvent event) {
... после регистрации предмета.
И "getBurnTime" не правильно написан. Попробую у себя подобное сделать.
 
@EventHandler

public void preInit(FMLPreInitializationEvent event) {

new PlanetsConfig(new File(event.getModConfigurationDirectory(), "Galacticraft/planets.conf"));
FMLCommonHandler.instance().bus().register(new SkyProviderHandlerBA());
ItemsAddon.initItems();
BlocksAddon.initialize();
proxy.preload();

}
Весь файл регистрируется в preinit
 
Для "IFuelHandler", лучше создать отдельный файл.
Но если хочешь в предмете, то "getBurnTime" выглядеть с условием:
Код:
    @Override
    public int getBurnTime(ItemStack fuel) {
        if (fuel.getItem() instanceof ItemMytryl) return 200;
        return 0;
    }
 
Код:
        @EventHandler
    public void Init(FMLInitializationEvent event){
        GameRegistry.registerFuelHandler(new FuelHandler());
    }

FuelHandler - отдельный класс в отдельном паке (к примеру, в паке с топливом). В нём
Код:
public class FuelHandler implements IFuelHandler {

    @Override
    public int getBurnTime(ItemStack fuel) {
        if (fuel.getItem() == FuelsList.SolidFuel /** Откуда будет брать топливо **/) return 10000;
        return 0;
    }
}
У меня так в 1.7.10 - работает.
 
Назад
Сверху