Jump to content

[1.16.4] Edit Vanilla Items e.g. stackSize


Pallemann

Recommended Posts

Hey,

I am fairly new to working on mods on the Minecraft Version 1.16.4. I have dabbled a little in an older version, MC 1.8 to be specific, and created a mod with a friend there.

I am now trying to convert my 1.8 mod into one that works with the newest Forge and MC version 1.16.4. I am trying to redo everything I did in the old mod by myself.

I have read and sorted through a lot of tutorials and guides on how to create new items and blocks and how to add logic to them etc. for MinecraftForge 1.16.4. I dont have any issues regarding that. I do have issues though with trying to edit the Vanilla Items of the game. In the pervious build of my mod, I modified the stack limit of eggs for example, so that one stack can hold 64 eggs. I would like to change the Vanilla items myself and not install any external mod for that.

The line of code was rather simple back then:

Items.egg.setMaxStackSize(64);

I have tried around a little and somewhere I found a post saying I could just override the Item.Properties by naming the item the same as in the Vanilla game and then only these properties would be overwritten and the rest would stay the same.

public static final DeferredRegister<Item> VANILLA_ITEMS = DeferredRegister.create(ForgeRegistries.ITEMS, "minecraft");
public static final RegistryObject<Item> EGG = VANILLA_ITEMS.register("egg",
            () -> new Item((new Item.Properties()).maxStackSize(64)));

Unfortunately this didn't work. When launching the game I didn't get any error messages or anything like that, but it just didn't do anything. The egg stack size didn't change and stayed at 16.

 

Is this the right way to approach this or is it maybe more complicated or maybe even less complicated to change these properties?

Help would be much appreciated. Thank you in advance.

Link to comment
Share on other sites

Did you attach the register to the mod event bus? Also, you should probably check what class the "egg" is using and update accordingly. This will remove all the features associated with the egg. Another thing to note is that you shouldn't replace vanilla entries unless absolutely necessary. It could lead to compatibility issues and a few others (although, since you're only modifying a property, it should be fine).

  • Thanks 1
Link to comment
Share on other sites

3 hours ago, Pallemann said:

Is this the right way to approach this or is it maybe more complicated or maybe even less complicated to change these properties?

Haven't tested this, but have you tried using reflection to change the Item#maxStackSize field?

  • Thanks 1

Some tips:

Spoiler

Modder Support:

Spoiler

1. Do not follow tutorials on YouTube, especially TechnoVision (previously called Loremaster) and HarryTalks, due to their promotion of bad practice and usage of outdated code.

2. Always post your code.

3. Never copy and paste code. You won't learn anything from doing that.

4. 

Quote

Programming via Eclipse's hotfixes will get you nowhere

5. Learn to use your IDE, especially the debugger.

6.

Quote

The "picture that's worth 1000 words" only works if there's an obvious problem or a freehand red circle around it.

Support & Bug Reports:

Spoiler

1. Read the EAQ before asking for help. Remember to provide the appropriate log(s).

2. Versions below 1.11 are no longer supported due to their age. Update to a modern version of Minecraft to receive support.

 

 

Link to comment
Share on other sites

14 hours ago, ChampionAsh5357 said:

Did you attach the register to the mod event bus? Also, you should probably check what class the "egg" is using and update accordingly. This will remove all the features associated with the egg. Another thing to note is that you shouldn't replace vanilla entries unless absolutely necessary. It could lead to compatibility issues and a few others (although, since you're only modifying a property, it should be fine).

Thank you for your help. Stupidly I have forgotten to register the event bus for the vanilla items. Now that registered the event bus for the vanilla items it works and the stack size is overwritten. I did however, as you mentioned, lose all the properties the egg had, like the sound it made when throwing it and the particle effect when hitting the ground.

I did find a solution for that though. I changed this

public static final RegistryObject<Item> EGG = VANILLA_ITEMS.register("egg",
            () -> new Item((new Item.Properties()).maxStackSize(64)));

into this

public static final RegistryObject<EggItem> EGG = VANILLA_ITEMS.register("egg",
            () -> new EggItem((new Item.Properties()).maxStackSize(64).group(ItemGroup.MATERIALS)));

and now the egg regained all its properties when throwing and the particle effects etc, but the stacksize is increased to 64. Just as I was hoping to achieve.

I haven't done extensive testing, only crafting a cake and throwing the eggs, but it seems that this did not break the game or any properties with the EggItem.

 

Thank you again for your help.

Link to comment
Share on other sites

13 hours ago, DavidM said:

Haven't tested this, but have you tried using reflection to change the Item#maxStackSize field?

Thank you for your suggestion.

I have read about using reflection, but haven't tried it myself either. I did find a solution without using reflection though, which seems to work as intended.

Link to comment
Share on other sites

@diessieben07 what would be the correct way to do this then? I have just started modding myself and have found little to no info on how to adjust vanilla items/blocks. From what I am gathering, in general its not suggested. I personally am looking to make logs unbreakable by hand and was aiming down an override path as described in this post but I am guessing this isnt the right idea. Would love some insight.

Link to comment
Share on other sites

3 hours ago, redspecsgaming said:

I personally am looking to make logs unbreakable by hand

BreakSpeedEvent

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.