Custom Fuel en 1.13.2



  • Bonjour, du au faite que la forge 1.13.2 et ressente je n'arrive pas a trouve comme faire un Custom Fuel, car apparemment les Interface et Class, de la version 1.12.2 ne sont plus pressent.
    Des idée sur comment faire un Custom Fuel ? Car je ne trouve pas d'info a propos de ça...


  • Moddeurs confirmés Rédacteurs Administrateurs

    Salut,

    Tu veux faire un fluide ou tu parles d'ajouter un item utilisable comme carburant pour le four ?



  • je veux juste faire un item utilisable comme carburant, c'est tous. 😄


  • Moddeurs confirmés Rédacteurs Administrateurs

    Visiblement cela a été remplacé par l'événement FurnaceFuelBurnTimeEvent.

    Avec event.getItemStack() tu peux récupérer l'item qui a été mis dans le four, donc fait une condition dessus, si l'item est celui voulu appeles la fonction event.setBurnTime(temps) pour donner le temps.



  • Je vien de faire ceci mais je ne peux pas mettre l'item dans le slot du four.
    Au niveau code j'ai ceci.
    j'ai un doute dans mes equalité dans le FurnaceEvent on mes un == ou un .equals(objet)

    import net.minecraft.item.ItemStack;
    import net.minecraftforge.event.furnace.FurnaceFuelBurnTimeEvent;
    import net.minecraftforge.eventbus.api.SubscribeEvent;
    import net.minecraftforge.fml.common.Mod;
    
    @Mod.EventBusSubscriber(modid = SomeCoal.MOD_ID)
    public class FurnaceEvent {
    
        @SubscribeEvent
        public static void onFurnaceFuelBurnTime(FurnaceFuelBurnTimeEvent event) {
            if (event.getItemStack() == new ItemStack(ItemInit.blaze_coal)) {
                event.setBurnTime(4000);
            }
            if (event.getItemStack() == new ItemStack(ItemInit.sugar_coal)) {
                event.setBurnTime(800);
            }
            if (event.getItemStack() == new ItemStack(BlockInit.blaze_coal_block)) {
                event.setBurnTime(36000);
            }
            if (event.getItemStack() == new ItemStack(BlockInit.sugar_coal_block)) {
                event.setBurnTime(7200);
            }
        }
    }
    

    et

    public SomeCoal() {
        [...]
        MinecraftForge.EVENT_BUS.register(FurnaceEvent.class);
    }
    


  • C'est bon j'ai trouvé, en fessant un peux de rétro-ingénierie.
    Enfaite la class Item implemente l'interface IForgeItem et dans cette interface on a une fonction default int getBurnTime(ItemStack itemStack), il sufi juste de l'override.
    Sa donne ça.

    import net.minecraft.item.Item;
    import net.minecraft.item.ItemStack;
    
    public class CustomItem extends Item {
    
        private int burnTime;
    
        public CustomItem(Properties p_i48487_1_, String name, int burnTime) {
            super(p_i48487_1_);
            this.setRegistryName(name);
            this.burnTime = burnTime;
        }
    
        @Override
        public int getBurnTime(ItemStack itemStack) {
            return this.burnTime;
        }
    }
    

    Je passe le topic en résolu.


  • Moddeurs confirmés Rédacteurs Administrateurs

    Ah oui ça fonctionne aussi comme cela.

    Pour ton code avec l'event, il aurait fallut utiliser ItemStack.areItemsEqual(event.getItemStack(), new ItemStack(ItemInit.sugar_coal)) ou tout simplement event.getItemStack().getItem() == ItemInit.sugar_coal et cela aurait été bon.


Log in to reply