@@ -14,23 +14,23 @@ diff --git a/src/main/java/io/papermc/paper/registry/PaperRegistries.java b/src/
14
14
index c6969f968b45eff2aeb44e647712abda10c7c113..d34ffad8a36abbb215491d74ae8d9b490a0bc64f 100644
15
15
--- a/src/main/java/io/papermc/paper/registry/PaperRegistries.java
16
16
+++ b/src/main/java/io/papermc/paper/registry/PaperRegistries.java
17
- @@ -2 ,6 +2 ,7 @@ package io.papermc.paper.registry;
18
-
17
+ @@ -3 ,6 +3 ,7 @@ package io.papermc.paper.registry;
18
+ import com.google.common.base.Preconditions;
19
19
import io.papermc.paper.adventure.PaperAdventure;
20
20
import io.papermc.paper.registry.entry.RegistryEntry;
21
21
+ import io.papermc.paper.registry.tag.TagKey;
22
22
import java.util.Collections;
23
23
import java.util.IdentityHashMap;
24
24
import java.util.List;
25
- @@ -68 ,6 +69 ,7 @@ import org.checkerframework.framework.qual.DefaultQualifier;
25
+ @@ -69 ,6 +70 ,7 @@ import org.checkerframework.framework.qual.DefaultQualifier;
26
26
27
27
import static io.papermc.paper.registry.entry.RegistryEntry.apiOnly;
28
28
import static io.papermc.paper.registry.entry.RegistryEntry.entry;
29
29
+ import static io.papermc.paper.registry.entry.RegistryEntry.writable;
30
30
31
31
@DefaultQualifier(NonNull.class)
32
32
public final class PaperRegistries {
33
- @@ -151 ,6 +153 ,15 @@ public final class PaperRegistries {
33
+ @@ -152 ,6 +154 ,15 @@ public final class PaperRegistries {
34
34
return ResourceKey.create((ResourceKey<? extends Registry<M>>) PaperRegistries.registryToNms(typedKey.registryKey()), PaperAdventure.asVanilla(typedKey.key()));
35
35
}
36
36
@@ -286,6 +286,38 @@ index 0000000000000000000000000000000000000000..69e946173407eb05b18a2b19b0d45cbb
286
286
+ return this.freezeEventTypes.getOrCreate(type.registryKey(), RegistryLifecycleEventType::new);
287
287
+ }
288
288
+ }
289
+ diff --git a/src/main/java/io/papermc/paper/registry/PaperSimpleRegistry.java b/src/main/java/io/papermc/paper/registry/PaperSimpleRegistry.java
290
+ index 6d134ace042758da722960cbcb48e52508dafd61..cc39bc68d29055ef6429f08f975412bd9fe68dbc 100644
291
+ --- a/src/main/java/io/papermc/paper/registry/PaperSimpleRegistry.java
292
+ +++ b/src/main/java/io/papermc/paper/registry/PaperSimpleRegistry.java
293
+ @@ -1,6 +1,10 @@
294
+ package io.papermc.paper.registry;
295
+
296
+ + import io.papermc.paper.registry.set.NamedRegistryKeySetImpl;
297
+ + import io.papermc.paper.registry.tag.Tag;
298
+ + import io.papermc.paper.registry.tag.TagKey;
299
+ import java.util.function.Predicate;
300
+ + import net.minecraft.core.HolderSet;
301
+ import net.minecraft.core.registries.BuiltInRegistries;
302
+ import org.bukkit.Keyed;
303
+ import org.bukkit.Particle;
304
+ @@ -35,4 +39,16 @@ public class PaperSimpleRegistry<T extends Enum<T> & Keyed, M> extends Registry.
305
+ super(type, predicate);
306
+ this.nmsRegistry = nmsRegistry;
307
+ }
308
+ +
309
+ + @Override
310
+ + public boolean hasTag(final TagKey<T> key) {
311
+ + final net.minecraft.tags.TagKey<M> nmsKey = PaperRegistries.toNms(key);
312
+ + return this.nmsRegistry.get(nmsKey).isPresent();
313
+ + }
314
+ +
315
+ + @Override
316
+ + public Tag<T> getTag(final TagKey<T> key) {
317
+ + final HolderSet.Named<M> namedHolderSet = this.nmsRegistry.get(PaperRegistries.toNms(key)).orElseThrow();
318
+ + return new NamedRegistryKeySetImpl<>(key, namedHolderSet);
319
+ + }
320
+ }
289
321
diff --git a/src/main/java/io/papermc/paper/registry/WritableCraftRegistry.java b/src/main/java/io/papermc/paper/registry/WritableCraftRegistry.java
290
322
new file mode 100644
291
323
index 0000000000000000000000000000000000000000..78317c7ab42a666f19634593a8f3b696700764c8
@@ -1365,32 +1397,6 @@ index 45c78c113e881b277e1216293ad918ee40b44325..8314059455d91f01b986c5c0a239f418
1365
1397
+ }
1366
1398
+ // Paper end - RegistrySet API
1367
1399
}
1368
- diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
1369
- index f0556a207f6d9d1766ef0d9753355f7fa5052dc1..f55733b7a56ac21cb297971b9e854ef54001ca26 100644
1370
- --- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
1371
- +++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
1372
- @@ -666,6 +666,21 @@ public final class CraftMagicNumbers implements UnsafeValues {
1373
- }
1374
- // Paper end - lifecycle event API
1375
-
1376
- + // Paper start - hack to get tags for non server-backed registries
1377
- + @Override
1378
- + public <A extends Keyed, M> io.papermc.paper.registry.tag.Tag<A> getTag(final io.papermc.paper.registry.tag.TagKey<A> tagKey) { // TODO remove Keyed
1379
- + if (tagKey.registryKey() != io.papermc.paper.registry.RegistryKey.ENTITY_TYPE && tagKey.registryKey() != io.papermc.paper.registry.RegistryKey.FLUID) {
1380
- + throw new UnsupportedOperationException(tagKey.registryKey() + " doesn't have tags");
1381
- + }
1382
- + final net.minecraft.resources.ResourceKey<? extends net.minecraft.core.Registry<M>> nmsKey = io.papermc.paper.registry.PaperRegistries.registryToNms(tagKey.registryKey());
1383
- + final net.minecraft.core.Registry<M> nmsRegistry = org.bukkit.craftbukkit.CraftRegistry.getMinecraftRegistry().lookupOrThrow(nmsKey);
1384
- + return nmsRegistry
1385
- + .get(io.papermc.paper.registry.PaperRegistries.toNms(tagKey))
1386
- + .map(named -> new io.papermc.paper.registry.set.NamedRegistryKeySetImpl<>(tagKey, named))
1387
- + .orElse(null);
1388
- + }
1389
- + // Paper end - hack to get tags for non server-backed registries
1390
- +
1391
- /**
1392
- * This helper class represents the different NBT Tags.
1393
- * <p>
1394
1400
diff --git a/src/main/resources/META-INF/services/io.papermc.paper.registry.event.RegistryEventTypeProvider b/src/main/resources/META-INF/services/io.papermc.paper.registry.event.RegistryEventTypeProvider
1395
1401
new file mode 100644
1396
1402
index 0000000000000000000000000000000000000000..8bee1a5ed877a04e4d027593df1f42cefdd824e7
0 commit comments