Jump to content

Recommended Posts

Posted

I have been looking for a way to prevent an item from being placed in all contains which I do not approve (as they need to be constantly ticking).

 

However, I could not see any method which I could override, or any event to cancel, which would allow me to do this. Does Forge allow it, or is it something I will have to deal with in some other way.

 

Alternatively, could I simply do something to the ItemStack when it is placed in any invalid inventory?

 

Also, I have noticed that an item held by the cursor does not tick, is there something I need to do to have the item held update? Note that it may result in the ItemStack being replaced by another ItemStack or completely destroyed.

Posted

I have been looking for a way to prevent an item from being placed in all contains which I do not approve (as they need to be constantly ticking).

 

However, I could not see any method which I could override, or any event to cancel, which would allow me to do this. Does Forge allow it, or is it something I will have to deal with in some other way.

 

Alternatively, could I simply do something to the ItemStack when it is placed in any invalid inventory?

 

Also, I have noticed that an item held by the cursor does not tick, is there something I need to do to have the item held update? Note that it may result in the ItemStack being replaced by another ItemStack or completely destroyed.

Use TickEvent.WorldTickEvent loop through the TileEntities access there ItemStacks and call Item#onUpdate(...).

VANILLA MINECRAFT CLASSES ARE THE BEST RESOURCES WHEN MODDING

I will be posting 1.15.2 modding tutorials on this channel. If you want to be notified of it do the normal YouTube stuff like subscribing, ect.

Forge and vanilla BlockState generator.

Posted

Use TickEvent.WorldTickEvent loop through the TileEntities access there ItemStacks and call Item#onUpdate(...).
This is a terrible idea :D

I agree this is very resource intensive, but it definitely gets the job done. It is more of a "brute force" method.

VANILLA MINECRAFT CLASSES ARE THE BEST RESOURCES WHEN MODDING

I will be posting 1.15.2 modding tutorials on this channel. If you want to be notified of it do the normal YouTube stuff like subscribing, ect.

Forge and vanilla BlockState generator.

Posted

Depending on what you mean by "the itemstack needs to tick all the time" is it something like:

Item auto repairs?

Item Generates some sort of value overtime?

 

I believe there is a "PlayerOpenContainerEvent" if you're ok with designing your system of where every player tick the item gets updated, but have a "last updated" value on the itemstack, you can then use this during "update calls" including when the container is opened (event) and do some math differences to make it "appear" that it was updating the whole time, even tho it just calculated from "last update" and "current time"

 

If they need to be constantly ticking, you could add in the tooltip that it must always be on a player?

Posted

Take a look at using "PlayerContainerEvent.Close".  You can determine what inventory your item is in and the maybe you can force the item to pop out of the chest into the world, or maybe back into player inventory.

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



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • I will keep adding to this thread with more information in case anyone can help, or at the very least I can keep my troubleshooting organized. I decided to downgrade to 54.1.0 in the hopes that this would fix the issue but it didn't. At least now I am on a "recommended" version. The crash report did confirm my earlier post that the Exception is coming from effectiveDescriptionId(). I'll continue to see if I can find a way to set the ID manually.   Caused by: java.lang.NullPointerException: Item id not set         at java.base/java.util.Objects.requireNonNull(Objects.java:259) ~[?:?]         at TRANSFORMER/[email protected]/net.minecraft.world.item.Item$Properties.effectiveDescriptionId(Item.java:465) ~[forge-1.21.4-54.1.0-client.jar!/:?]         at TRANSFORMER/[email protected]/net.minecraft.world.item.Item.<init>(Item.java:111) ~[forge-1.21.4-54.1.0-client.jar!/:?]         at TRANSFORMER/[email protected]/com.example.shotgunmod.ShotgunItem.<init>(ShotgunItem.java:19) ~[shotgunmod-1.0.0.jar!/:1.0.0]         at TRANSFORMER/[email protected]/com.example.shotgunmod.ModItems.lambda$static$0(ModItems.java:15) ~[shotgunmod-1.0.0.jar!/:1.0.0]         at TRANSFORMER/[email protected]/net.minecraftforge.registries.DeferredRegister$EventDispatcher.lambda$handleEvent      
    • It just randomly stop working after a rebooted my dedicated server PLEASE HELP!   com.google.gson   Failed to start the minecraft server com.google.gson.JsonSyntaxException: Expected a com.google.gson.JsonObject but was com.google.gson.JsonPrimitive; at path $  
    • It was working perfectly fine last night but now I'm getting an exit code -1 with the textbox: The game crashed: rendering overlay Error: net.minecraftforge.fml.ModLoadingException: Supplementaries (supplementaries) encountered an error during the done event phase Here's the crash log: https://pastebin.com/KmesArYS Any help is apricated
    • Link to Crashlog: https://pastebin.com/bKqH9fx2 Trying to set up a custom mod pack, was going smoothly up until recently as the WorldLoader screen, (the one that appears when you select "create new world" in Singleplayer), was clicked to test that it was running fine. Most Recent Few mods added were; - Create (+ its addons) - Immersive Weathering [Forge] I've tried all I could think of since loading up the game worked fine and I've never had this issue before.  Any help is appreciated.  
    • Digging in to the source, in this case net.minecraft.world.item.Item.Properties, I see these functions are the error source:         protected String effectiveDescriptionId() {             return this.descriptionId.get(Objects.requireNonNull(this.id, "Item id not set"));         }         public ResourceLocation effectiveModel() {             return this.model.get(Objects.requireNonNull(this.id, "Item id not set"));         } Can anyone share more information on how to set the Id properly? Is this something I have to do explicitly by calling the setId() function? My understanding is the ID is set implictly with these calls:       public static final DeferredRegister<Item> ITEMS = DeferredRegister.create(ForgeRegistries.ITEMS, ShotgunMod.MODID);     private static final Item.Properties p = new Item.Properties().durability(100).stacksTo(1);     public static final RegistryObject<Item> SHOTGUN = ITEMS.register("shotgun", () -> new ShotgunItem(p)); From net.minecraft.world.item.Item.Properties;  public Item.Properties setId(ResourceKey<Item> pId) {             this.id = pId;             return this;   } Thank you for your help
  • Topics

×
×
  • Create New...

Important Information

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