Skip to content

Commit 8788bf7

Browse files
fix datapacks not being able to modify nether/end (#7588)
1 parent f0d0078 commit 8788bf7

File tree

2 files changed

+43
-1
lines changed

2 files changed

+43
-1
lines changed

patches/server/0005-MC-Dev-fixes.patch

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -182,6 +182,30 @@ index 2a6969baca7c07c52223672de58886dd05c032eb..a620e53021e02da1663b8d8b68d429b2
182182
@Override
183183
public void write(FriendlyByteBuf buf) {
184184
buf.writeInt(this.playerId);
185+
diff --git a/src/main/java/net/minecraft/resources/RegistryLoader.java b/src/main/java/net/minecraft/resources/RegistryLoader.java
186+
index 858037070db0b0fed07bf542294b76028f0018f9..75f72b568ee2b27c5042da688b62d4e3c5732e09 100644
187+
--- a/src/main/java/net/minecraft/resources/RegistryLoader.java
188+
+++ b/src/main/java/net/minecraft/resources/RegistryLoader.java
189+
@@ -73,7 +73,7 @@ public class RegistryLoader {
190+
}
191+
192+
private <E> RegistryLoader.ReadCache<E> readCache(ResourceKey<? extends Registry<E>> registryRef) {
193+
- return this.readCache.computeIfAbsent(registryRef, (ref) -> {
194+
+ return (RegistryLoader.ReadCache<E>) this.readCache.computeIfAbsent(registryRef, (ref) -> { // Paper - decompile fix
195+
return new RegistryLoader.ReadCache();
196+
});
197+
}
198+
@@ -83,10 +83,6 @@ public class RegistryLoader {
199+
}
200+
201+
public static record Bound(RegistryAccess.Writable access, RegistryLoader loader) {
202+
- public Bound(RegistryAccess.Writable writable, RegistryLoader registryLoader) {
203+
- this.access = writable;
204+
- this.loader = registryLoader;
205+
- }
206+
207+
public <E> DataResult<? extends Registry<E>> overrideRegistryFromResources(ResourceKey<? extends Registry<E>> registryRef, Codec<E> codec, DynamicOps<JsonElement> ops) {
208+
WritableRegistry<E> writableRegistry = this.access.ownedWritableRegistryOrThrow(registryRef);
185209
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
186210
index ef128de5fe17231b39edb12a7014291d03cf79ec..868f6799a0e406401eecf18bc939fbdf88f534a2 100644
187211
--- a/src/main/java/net/minecraft/server/MinecraftServer.java

patches/server/0754-Use-correct-LevelStem-registry-when-loading-default-.patch

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,27 @@ Date: Sat, 16 Oct 2021 17:38:35 -0700
44
Subject: [PATCH] Use correct LevelStem registry when loading default
55
end/nether
66

7+
Co-authored-by: Jake Potrebic <jake.m.potrebic@gmail.com>
78

9+
diff --git a/src/main/java/net/minecraft/resources/RegistryLoader.java b/src/main/java/net/minecraft/resources/RegistryLoader.java
10+
index 75f72b568ee2b27c5042da688b62d4e3c5732e09..8c3555842202d67793d818c96feda4daa2f08a0c 100644
11+
--- a/src/main/java/net/minecraft/resources/RegistryLoader.java
12+
+++ b/src/main/java/net/minecraft/resources/RegistryLoader.java
13+
@@ -42,6 +42,12 @@ public class RegistryLoader {
14+
RegistryLoader.ReadCache<E> readCache = this.readCache(registryRef);
15+
DataResult<Holder<E>> dataResult = readCache.values.get(entryKey);
16+
if (dataResult != null) {
17+
+ // Paper start - register in registry due to craftbukkit running this 3 times instead of once
18+
+ if (registryRef == (ResourceKey) Registry.LEVEL_STEM_REGISTRY && dataResult.result().isPresent()) {
19+
+ // OptionalInt.empty() because the LevelStem registry is only loaded from the resource manager, not the InMemory resource access
20+
+ registry.registerOrOverride(java.util.OptionalInt.empty(), entryKey, dataResult.result().get().value(), dataResult.lifecycle());
21+
+ }
22+
+ // Paper end
23+
return dataResult;
24+
} else {
25+
Holder<E> holder = registry.getOrCreateHolder(entryKey);
826
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
9-
index a279368fe144bd41d15e5fe5e565412f8b4ef9f7..f877b956859643b4f3d969992f2e515dc490f90c 100644
27+
index fddb279d161b30d6944495f0de9f6b7e21761a80..df955666723a8cb1e612311f0b8e77fb577d6be5 100644
1028
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
1129
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
1230
@@ -563,7 +563,14 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa

0 commit comments

Comments
 (0)