Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

[1.15.x] Trying to insert a custom item into vanilla dungeon chests using Global Loot Modifiers


Recommended Posts

Hello there!

 

I'm currently working on a personal mod, and I have a number of custom items I want to show up as loot in dungeon chests. I've taken a look at the Global Loot Modifier documentation, as well as the 1.13.x loot table documentation. I have a couple of problems:

1. In my hour of internet searching I cannot find anything on conditions (as part of the serialized json) related to dungeon chests.

2. The import statements:

import net.minecraftforge.common.loot.GlobalLootModifierSerializer;
import net.minecraftforge.common.loot.LootModifier;

...Are not importing correctly, and are showing up red wherever I use them.

 

Some further information:

I'm currently using VSCode as a development environment.

The Items in question are simple items, and their only purpose is to be crafted into other items.

 

If there is an easier way that does not interfere with other potential mods, I will get on my knees and beg you for the documentation.

 

If there is any more information I need to provide, please reply and let me know.

 

As a side note, this is a very simple action I'm trying to do. It should not in any way require the confusing mess that is the Global Loot Modifier, especially when the documentation is barebones. If this is the only way to do it, there should be significantly more documentation. Such a simple action should not require this much work.

Link to post
Share on other sites
21 minutes ago, Salthin said:

In my hour of internet searching I cannot find anything on conditions (as part of the serialized json) related to dungeon chests.

Dungeon chests are not marked in a special way. They are simply chests, inside the dungeon structure, which have a loot table set on them.

You would have to write your own loot table condition which checks that you are inside the dungeon structure.

Link to post
Share on other sites
7 minutes ago, Ommina said:

There is the LootTableLoad event, in which you can add itemstacks to dungeon loot tables.  Perhaps that would be less fussy?

 

LootTableLoad event is the old, deprecated way of modifying loot.

Loot modifiers should be used.

Link to post
Share on other sites

Thanks for all the feedback, everyone. One thing that has come out of this is that there needs to be a comprehensive, easy to understand tutorial on altering/creating loot. I still don't quite understand how to implement some of this advice, but I will ponder over it and reply again with updates.

Edited by Salthin
typo
Link to post
Share on other sites

Found a better way:

BlockPos pos = context.get(LootParameters.POSITION);
TileEntity te = pos == null ? null : context.getWorld().getTileEntity(pos);
ResourceLocation ltName = te instanceof LockableLootTileEntity ? te.lootTable : null;

Then check if the loot table name is equal to the dungeon chest loot table name. You'll need reflection for LockableLootTileEntity#lootTable.

 

You can do something similar for chest minecarts (which I think spawn in mineshafts). The minecart entity will be stored in LootParameters.KILLER_ENTITY.

  • Like 1
Link to post
Share on other sites
3 hours ago, diesieben07 said:

LootTableLoad event is the old, deprecated way of modifying loot.

Loot modifiers should be used.

 

It is?  Even in 1.16.1, there's no indication anywhere that LootTableLoad event is deprecated.  It's not that I disbelieve you, I just can't help but think that if there is a preference for modders to use one method over another, 'telling them' might be useful.

 

But now I'm veering off-topic, and as @Salthin seems content, I'll step away.

Link to post
Share on other sites

Modifying loot tables directly is not inter-mod compatible.

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 post
Share on other sites
10 hours ago, Ommina said:

 

It is?  Even in 1.16.1, there's no indication anywhere that LootTableLoad event is deprecated.  It's not that I disbelieve you, I just can't help but think that if there is a preference for modders to use one method over another, 'telling them' might be useful.

 

But now I'm veering off-topic, and as @Salthin seems content, I'll step away.

It's not directly deprecated, but it has problems, such as the one given by Draco.

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.   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.



×
×
  • Create New...

Important Information

By using this site, you agree to our Privacy Policy.