Jump to content
  • Home
  • Files
  • Docs
Topics
  • All Content

  • This Topic
  • This Forum

  • Advanced Search
  • Existing user? Sign In  

    Sign In



    • Not recommended on shared computers


    • Forgot your password?

  • Sign Up
  • All Activity
  • Home
  • Mod Developer Central
  • Modder Support
  • [1.16.4] Get Default Item Burn Times
Currently Supported: 1.16.X (Latest) and 1.15.X (LTS)
Sign in to follow this  
Followers 1
ptolemy2002

[1.16.4] Get Default Item Burn Times

By ptolemy2002, November 21, 2020 in Modder Support

  • Reply to this topic
  • Start new topic

Recommended Posts

ptolemy2002    0

ptolemy2002

ptolemy2002    0

  • Tree Puncher
  • ptolemy2002
  • Members
  • 0
  • 27 posts
Posted November 21, 2020

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?

  • Quote

Share this post


Link to post
Share on other sites

Draco18s    2417

Draco18s

Draco18s    2417

  • Reality Controller
  • Draco18s
  • Members
  • 2417
  • 16015 posts
Posted November 21, 2020
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
  • Quote

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.

Share this post


Link to post
Share on other sites

diesieben07    7711

diesieben07

diesieben07    7711

  • Reality Controller
  • diesieben07
  • Forum Team
  • 7711
  • 56563 posts
Posted November 21, 2020

Draco is correct, you have to wait until you are in game and then call ForgeHooks.getBurnTime.

  • Quote

Share this post


Link to post
Share on other sites

ptolemy2002    0

ptolemy2002

ptolemy2002    0

  • Tree Puncher
  • ptolemy2002
  • Members
  • 0
  • 27 posts
Posted November 21, 2020

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) {
    ...
    }
}

 

  • Quote

Share this post


Link to post
Share on other sites

diesieben07    7711

diesieben07

diesieben07    7711

  • Reality Controller
  • diesieben07
  • Forum Team
  • 7711
  • 56563 posts
Posted November 21, 2020

PlayerLoggedInEvent.

  • Thanks 1
  • Quote

Share this post


Link to post
Share on other sites

ptolemy2002    0

ptolemy2002

ptolemy2002    0

  • Tree Puncher
  • ptolemy2002
  • Members
  • 0
  • 27 posts
Posted November 21, 2020

Thank you. My mod is working now.

  • Quote

Share this post


Link to post
Share on other sites

Draco18s    2417

Draco18s

Draco18s    2417

  • Reality Controller
  • Draco18s
  • Members
  • 2417
  • 16015 posts
Posted November 21, 2020
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.

  • Quote

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.

Share this post


Link to post
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.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  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.

    • Insert image from URL
×
  • Desktop
  • Tablet
  • Phone
Sign in to follow this  
Followers 1
Go To Topic Listing



  • Recently Browsing

    No registered users viewing this page.

  • Posts

    • diesieben07
      [1.16] InputEvent.KeyInputEvent never fired

      By diesieben07 · Posted 5 minutes ago

      The correct event for this check is ClientTickEvent. Make sure to check TickEvent#phase.
    • diesieben07
      Question about itemstack capabilities of crafting results

      By diesieben07 · Posted 5 minutes ago

      Yeah, it would be better to just lazily initialize the values in the capability. However AttachCapabilitiesEvent is triggered directly from the ItemStack constructor. So it is impossible to have an ItemStack object and not have AttackCapabilitiesEvent fire for it.
    • Beethoven92
      [1.16] InputEvent.KeyInputEvent never fired

      By Beethoven92 · Posted 10 minutes ago

      They are basically the same. With the annotation method you can also specify the Dist where this event handler will be loaded on. What is wrong with your code is that your method is not declared as static. Take a look here for more info on events: https://mcforge.readthedocs.io/en/latest/events/intro/
    • DARKHAWX
      [1.16] InputEvent.KeyInputEvent never fired

      By DARKHAWX · Posted 23 minutes ago

      Hey there,   I'm trying to setup a basic keybinding, but I can't seem to get the event to fire. Here's my code for subscribing to the event:   @Mod.EventBusSubscriber public class ModKeyInputs { @SubscribeEvent public void onKeyInput(InputEvent.KeyInputEvent event) { if (ModKeyBindings.OPEN_DIVINE_FAVOUR_RELATIONSHIP.isPressed()) { Minecraft.getInstance().displayGuiScreen(new DivineFavourRelationshipsScreen(Minecraft.getInstance().player)); } } }   Now I've put a breakpoint in the method there at the start, and I can never get it to fire. Am I subscribing to this event incorrectly?   As a side note, is there much difference between using @Mod.EventBusSubscriber on a class versus MOD_EVENT_BUS.register(ModKeyInputs.class); in the constructor of the main mod class?
    • Tavi007
      Question about itemstack capabilities of crafting results

      By Tavi007 · Posted 24 minutes ago

      just two maps and two strings. I use json files, so anyone can override them with datapacks. Basically each item, that should have default values, also has a corresponding json file. (if an item does not have a corresponding json file, then it will get default default values.)   The information in the files are loaded into a Map<ResourceLocation, DataFromJson> once when the server starts, so i can get them whenever i need them. When the attach event (or the item craft event) trigger i resolve the resourceLocation, get the DataFromJson and then set the itemstack capability. As long as the Map doesn't get humongous, this method shouldn't be a performance issure.
  • Topics

    • DARKHAWX
      2
      [1.16] InputEvent.KeyInputEvent never fired

      By DARKHAWX
      Started 23 minutes ago

    • Tavi007
      3
      Question about itemstack capabilities of crafting results

      By Tavi007
      Started 58 minutes ago

    • StormyRiley1
      4
      When I generate a world it stays at 100%

      By StormyRiley1
      Started 12 hours ago

    • Fizedi
      0
      Loot table change for chest in plains house

      By Fizedi
      Started 55 minutes ago

    • diseasedworm
      1
      A problem occurred running the Server launcher.java.lang.reflect.InvocationTargetException

      By diseasedworm
      Started 5 hours ago

  • Who's Online (See full list)

    • diesieben07
    • NindyBun
    • EnderiumSmith
    • Tavi007
    • StormyRiley1
    • troublemaker_47
    • samjviana
    • Beethoven92
    • randomdude12300
    • red-pxl
    • DARKHAWX
  • All Activity
  • Home
  • Mod Developer Central
  • Modder Support
  • [1.16.4] Get Default Item Burn Times
  • Theme

Copyright © 2019 ForgeDevelopment LLC · Ads by Longitude Ads LLC Powered by Invision Community