Skip to content

Commit a26881c

Browse files
committed
Improve error handling and ensure logging is clear.
1 parent 42e9fec commit a26881c

File tree

1 file changed

+8
-3
lines changed

1 file changed

+8
-3
lines changed

common/src/main/java/noobanidus/mods/lootr/common/api/data/DefaultLootFiller.java

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,15 +31,19 @@ public static LootFillerState getFillerState () {
3131
@Override
3232
public void unpackLootTable(ILootrInfoProvider provider, Player player, Container inventory) {
3333
Level level = provider.getInfoLevel();
34+
if (level == null || level.isClientSide() || level.getServer() == null) {
35+
LootrAPI.LOG.error("Unable to fill loot container as the level is null, client-side, or the server is null!");
36+
return;
37+
}
3438
BlockPos pos = provider.getInfoPos();
3539
ResourceKey<LootTable> lootTable = provider.getInfoLootTable();
36-
if (provider.isInfoReferenceInventory()) {
40+
if (provider.isInfoReferenceInventory() && provider.getInfoReferenceInventory() != null) {
3741
for (int i = 0; i < provider.getInfoReferenceInventory().size(); i++) {
3842
inventory.setItem(i, provider.getInfoReferenceInventory().get(i).copy());
3943
}
4044
} else if (lootTable == null) {
41-
LootrAPI.LOG.error("Unable to fill loot container in " + level.dimension().location() + " at " + pos + " as the loot table is null and the provider is not a reference inventory!");
42-
// Unknown TODO: what exactly was supposed to be done here?
45+
LootrAPI.LOG.error("Unable to fill loot container in {} at {} as the loot table is null and the provider is not a reference inventory!", level.dimension()
46+
.location(), pos);
4347
} else {
4448
long seed = LootrAPI.getLootSeed(provider.getInfoLootSeed());
4549
LootTable loottable = level.getServer().reloadableRegistries().getLootTable(lootTable);
@@ -66,6 +70,7 @@ public void unpackLootTable(ILootrInfoProvider provider, Player player, Containe
6670
}
6771
}
6872

73+
// This is used to allow for storing the state during the loot filling process, allowing for our loot table mixin to apply
6974
public static void performFill (ILootrInfoProvider provider, Player player, ResourceKey<LootTable> lootTableKey, LootTable lootTable, Container container, LootParams parameters, long seed) {
7075
state = new LootFillerState(provider, player, lootTableKey, lootTable, container, parameters, seed);
7176
lootTable.fill(container, parameters, seed);

0 commit comments

Comments
 (0)