Mirror von
https://github.com/PaperMC/Paper.git
synchronisiert 2024-12-15 19:10:09 +01:00
37 Zeilen
2.3 KiB
Diff
37 Zeilen
2.3 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Jake Potrebic <jake.m.potrebic@gmail.com>
|
|
Date: Tue, 26 Sep 2023 18:32:49 -0700
|
|
Subject: [PATCH] Fix creating the reverse map for loot table keys
|
|
|
|
|
|
diff --git a/src/main/java/net/minecraft/world/level/storage/loot/LootDataManager.java b/src/main/java/net/minecraft/world/level/storage/loot/LootDataManager.java
|
|
index dd375fffa727db76fa989248b9b836960974c372..3563fdb8f8d3dbaabc611ab5cdba1d771406b336 100644
|
|
--- a/src/main/java/net/minecraft/world/level/storage/loot/LootDataManager.java
|
|
+++ b/src/main/java/net/minecraft/world/level/storage/loot/LootDataManager.java
|
|
@@ -30,7 +30,7 @@ public class LootDataManager implements PreparableReloadListener, LootDataResolv
|
|
public static final LootDataId<LootTable> EMPTY_LOOT_TABLE_KEY = new LootDataId<>(LootDataType.TABLE, BuiltInLootTables.EMPTY);
|
|
private Map<LootDataId<?>, ?> elements = Map.of();
|
|
private Multimap<LootDataType<?>, ResourceLocation> typeKeys = ImmutableMultimap.of();
|
|
- public Map<?, ResourceLocation> lootTableToKey = ImmutableMap.of(); // CraftBukkit
|
|
+ public Map<LootTable, ResourceLocation> lootTableToKey = ImmutableMap.of(); // CraftBukkit // Paper - only store loot tables because those don't override equals and hashCode
|
|
|
|
public LootDataManager() {}
|
|
|
|
@@ -101,8 +101,14 @@ public class LootDataManager implements PreparableReloadListener, LootDataResolv
|
|
this.elements = map1;
|
|
this.typeKeys = com_google_common_collect_immutablemultimap_builder.build();
|
|
// CraftBukkit start - build a reversed registry map
|
|
- ImmutableMap.Builder<Object, ResourceLocation> lootTableToKeyBuilder = ImmutableMap.builder();
|
|
- this.elements.forEach((key, lootTable) -> lootTableToKeyBuilder.put((Object) lootTable, key.location()));
|
|
+ // Paper start - only create a map for loot tables
|
|
+ ImmutableMap.Builder<LootTable, ResourceLocation> lootTableToKeyBuilder = ImmutableMap.builder();
|
|
+ this.elements.forEach((lootDataId, value) -> {
|
|
+ if (lootDataId.type() == LootDataType.TABLE && value instanceof LootTable lootTable) {
|
|
+ lootTableToKeyBuilder.put(lootTable, lootDataId.location());
|
|
+ }
|
|
+ });
|
|
+ // Paper end
|
|
this.lootTableToKey = lootTableToKeyBuilder.build();
|
|
// CraftBukkit end
|
|
}
|