Jump to content

[1.16.4] Get Default Item Burn Times


ptolemy2002

Recommended Posts

I'm trying to develop a simple mod that will export certain properties of every registered item to an external file. Most of my properties are working, but I'm having trouble trying to implement the burnTime property. First, I tried using 

item.getBurnTime(new ItemStack(item, 1))

and found that method was repeatedly returning "-1" because the value was to be determined by the vanilla Minecraft Logic. I then did some research and found that I could use this:

ForgeHooks.getBurnTime(new ItemStack(item, 1))

I found that this was continuously returning "0" instead of my desired value, presumably because the map "VANILLA_BURNS" has no entry for the item. Finally, I tried using the deprecated

FurnaceTileEntity.getBurnTimes().get(item)

where I got the error

 java.lang.IllegalStateException: Tag minecraft:non_flammable_wood used before it was bound
Stacktrace:
	at net.minecraft.tags.TagRegistry$NamedTag.getTag(TagRegistry.java:131) ~[forge-1.16.4-35.0.18_mapped_snapshot_20201028-1.16.3-recomp.jar:?] {re:classloading,pl:accesstransformer:B}
	at net.minecraft.tags.TagRegistry$NamedTag.contains(TagRegistry.java:142) ~[forge-1.16.4-35.0.18_mapped_snapshot_20201028-1.16.3-recomp.jar:?] {re:classloading,pl:accesstransformer:B}
	at net.minecraft.tileentity.AbstractFurnaceTileEntity.isNonFlammable(AbstractFurnaceTileEntity.java:161) ~[forge-1.16.4-35.0.18_mapped_snapshot_20201028-1.16.3-recomp.jar:?] {re:classloading}
	at net.minecraft.tileentity.AbstractFurnaceTileEntity.addItemBurnTime(AbstractFurnaceTileEntity.java:175) ~[forge-1.16.4-35.0.18_mapped_snapshot_20201028-1.16.3-recomp.jar:?] {re:classloading}
	at net.minecraft.tileentity.AbstractFurnaceTileEntity.getBurnTimes(AbstractFurnaceTileEntity.java:97) ~[forge-1.16.4-35.0.18_mapped_snapshot_20201028-1.16.3-recomp.jar:?] {re:classloading}
	at com.example.examplemod.ExampleMod.setup(ExampleMod.java:104) ~[main/:?] {re:classloading}
	at net.minecraftforge.eventbus.EventBus.doCastFilter(EventBus.java:247) ~[eventbus-3.0.5-service.jar:?] {}
	at net.minecraftforge.eventbus.EventBus.lambda$addListener$11(EventBus.java:239) ~[eventbus-3.0.5-service.jar:?] {}
	at net.minecraftforge.eventbus.EventBus.post(EventBus.java:297) ~[eventbus-3.0.5-service.jar:?] {}
	at net.minecraftforge.fml.javafmlmod.FMLModContainer.acceptEvent(FMLModContainer.java:120) ~[forge:?] {re:classloading}
	at net.minecraftforge.fml.ModContainer.lambda$buildTransitionHandler$4(ModContainer.java:121) ~[forge:?] {re:classloading}
	at java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1800) ~[?:?] {}
	at java.util.concurrent.CompletableFuture$AsyncRun.exec(CompletableFuture.java:1792) ~[?:?] {}
	at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:290) ~[?:?] {}
	at java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1016) ~[?:?] {}
	at java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1665) ~[?:?] {}
	at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1598) ~[?:?] {}
	at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:183) ~[?:?] {}

Which seems to indicate that the burn times cannot be generated yet. I was generating my file during the "FMLCommonSetupEvent" event. How can I successfully retrieve the correct value for burnTime?

Link to comment
Share on other sites

4 hours ago, ptolemy2002 said:

I was generating my file during the "FMLCommonSetupEvent" event. How can I successfully retrieve the correct value for burnTime?

You need to wait until after tags have been read and generated. There's an event for that too, but I'm blanking on its name.

IIRC it doesn't happen until after you start or load a save though.

  • Thanks 1

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Link to comment
Share on other sites

Which event should I be using to accomplish this? Currently I am trying to subscribe to the TagsUpdatedEvent, but it doesn't appear to be called at all.

@Mod.EventBusSubscriber(bus=Bus.FORGE)
public static class GenericEvents {
  	@SubscribeEvent
    public static void onTagsUpdated(TagsUpdatedEvent event) {
    ...
    }
}

 

Link to comment
Share on other sites

1 hour ago, ptolemy2002 said:

but it doesn't appear to be called at all.

Probably the wrong bus. But I'd go with D7's suggestion of the player logged in event.

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Announcements



×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.