@@ -12,10 +12,10 @@ public net.minecraft.server.RegistryLayer STATIC_ACCESS
12
12
13
13
diff --git a/src/main/java/io/papermc/paper/registry/PaperRegistries.java b/src/main/java/io/papermc/paper/registry/PaperRegistries.java
14
14
new file mode 100644
15
- index 0000000000000000000000000000000000000000..2f22f46f80b80be43a2cc1cd8afb51f4d1fd0e91
15
+ index 0000000000000000000000000000000000000000..cd8a6a4c2a63029f8f859765088c227bbd456813
16
16
--- /dev/null
17
17
+++ b/src/main/java/io/papermc/paper/registry/PaperRegistries.java
18
- @@ -0,0 +1,157 @@
18
+ @@ -0,0 +1,154 @@
19
19
+ package io.papermc.paper.registry;
20
20
+
21
21
+ import com.google.common.base.Preconditions;
@@ -81,14 +81,11 @@ index 0000000000000000000000000000000000000000..2f22f46f80b80be43a2cc1cd8afb51f4
81
81
+ import org.bukkit.inventory.meta.trim.TrimPattern;
82
82
+ import org.bukkit.map.MapCursor;
83
83
+ import org.bukkit.potion.PotionEffectType;
84
- + import org.checkerframework.checker.nullness.qual.NonNull;
85
- + import org.checkerframework.checker.nullness.qual.Nullable;
86
- + import org.checkerframework.framework.qual.DefaultQualifier;
84
+ + import org.jspecify.annotations.Nullable;
87
85
+
88
86
+ import static io.papermc.paper.registry.entry.RegistryEntry.apiOnly;
89
87
+ import static io.papermc.paper.registry.entry.RegistryEntry.entry;
90
88
+
91
- + @DefaultQualifier(NonNull.class)
92
89
+ public final class PaperRegistries {
93
90
+
94
91
+ static final List<RegistryEntry<?, ?>> REGISTRY_ENTRIES;
@@ -175,10 +172,10 @@ index 0000000000000000000000000000000000000000..2f22f46f80b80be43a2cc1cd8afb51f4
175
172
+ }
176
173
diff --git a/src/main/java/io/papermc/paper/registry/PaperRegistryAccess.java b/src/main/java/io/papermc/paper/registry/PaperRegistryAccess.java
177
174
new file mode 100644
178
- index 0000000000000000000000000000000000000000..35b6a7c5bac9640332a833bd3627f2bcb1bbf2f3
175
+ index 0000000000000000000000000000000000000000..4bf7915867dbe762ef0b070d67d5f7b7d1ee4f03
179
176
--- /dev/null
180
177
+++ b/src/main/java/io/papermc/paper/registry/PaperRegistryAccess.java
181
- @@ -0,0 +1,127 @@
178
+ @@ -0,0 +1,122 @@
182
179
+ package io.papermc.paper.registry;
183
180
+
184
181
+ import io.papermc.paper.registry.entry.ApiRegistryEntry;
@@ -194,14 +191,9 @@ index 0000000000000000000000000000000000000000..35b6a7c5bac9640332a833bd3627f2bc
194
191
+ import net.minecraft.resources.ResourceKey;
195
192
+ import org.bukkit.Keyed;
196
193
+ import org.bukkit.Registry;
197
- + import org.checkerframework.checker.nullness.qual.NonNull;
198
- + import org.checkerframework.checker.nullness.qual.Nullable;
199
- + import org.checkerframework.framework.qual.DefaultQualifier;
200
194
+ import org.jetbrains.annotations.VisibleForTesting;
195
+ + import org.jspecify.annotations.Nullable;
201
196
+
202
- + import static java.util.Objects.requireNonNull;
203
- +
204
- + @DefaultQualifier(NonNull.class)
205
197
+ public class PaperRegistryAccess implements RegistryAccess {
206
198
+
207
199
+ // We store the API registries in a memoized supplier, so they can be created on-demand.
@@ -224,14 +216,14 @@ index 0000000000000000000000000000000000000000..35b6a7c5bac9640332a833bd3627f2bc
224
216
+ @Deprecated(forRemoval = true)
225
217
+ @Override
226
218
+ public <T extends Keyed> @Nullable Registry<T> getRegistry(final Class<T> type) {
227
- + final @Nullable RegistryKey<T> registryKey = byType(type);
219
+ + final RegistryKey<T> registryKey = byType(type);
228
220
+ // If our mapping from Class -> RegistryKey did not contain the passed type it was either a completely invalid type or a registry
229
221
+ // that merely exists as a SimpleRegistry in the org.bukkit.Registry type. We cannot return a registry for these, return null
230
222
+ // as per method contract in Bukkit#getRegistry.
231
223
+ if (registryKey == null) return null;
232
224
+
233
- + final @Nullable RegistryEntry<?, T> entry = PaperRegistries.getEntry(registryKey);
234
- + final @Nullable RegistryHolder<T> registry = (RegistryHolder<T>) this.registries.get(registryKey);
225
+ + final RegistryEntry<?, T> entry = PaperRegistries.getEntry(registryKey);
226
+ + final RegistryHolder<T> registry = (RegistryHolder<T>) this.registries.get(registryKey);
235
227
+ if (registry != null) {
236
228
+ // if the registry exists, return right away. Since this is the "legacy" method, we return DelayedRegistry
237
229
+ // for the non-builtin Registry instances stored as fields in Registry.
@@ -352,10 +344,10 @@ index 0000000000000000000000000000000000000000..6d134ace042758da722960cbcb48e525
352
344
+ }
353
345
diff --git a/src/main/java/io/papermc/paper/registry/RegistryHolder.java b/src/main/java/io/papermc/paper/registry/RegistryHolder.java
354
346
new file mode 100644
355
- index 0000000000000000000000000000000000000000..a31bdd9f02fe75a87fceb2ebe8c36b3232a561cc
347
+ index 0000000000000000000000000000000000000000..1b52d4bc868e1e5f84c8416301e193bb9cd315b2
356
348
--- /dev/null
357
349
+++ b/src/main/java/io/papermc/paper/registry/RegistryHolder.java
358
- @@ -0,0 +1,47 @@
350
+ @@ -0,0 +1,44 @@
359
351
+ package io.papermc.paper.registry;
360
352
+
361
353
+ import com.google.common.base.Suppliers;
@@ -364,10 +356,7 @@ index 0000000000000000000000000000000000000000..a31bdd9f02fe75a87fceb2ebe8c36b32
364
356
+ import java.util.function.Supplier;
365
357
+ import org.bukkit.Keyed;
366
358
+ import org.bukkit.Registry;
367
- + import org.checkerframework.checker.nullness.qual.NonNull;
368
- + import org.checkerframework.framework.qual.DefaultQualifier;
369
359
+
370
- + @DefaultQualifier(NonNull.class)
371
360
+ public interface RegistryHolder<B extends Keyed> {
372
361
+
373
362
+ Registry<B> get();
@@ -471,10 +460,10 @@ index 0000000000000000000000000000000000000000..ceb217dbbb84e8bd51365dd47bf91971
471
460
+ }
472
461
diff --git a/src/main/java/io/papermc/paper/registry/entry/CraftRegistryEntry.java b/src/main/java/io/papermc/paper/registry/entry/CraftRegistryEntry.java
473
462
new file mode 100644
474
- index 0000000000000000000000000000000000000000..9bb4aa926978f117901c9f99c45a6862a1d5ce30
463
+ index 0000000000000000000000000000000000000000..45cbc425da64f0bd3290600869ad425d9e6e912b
475
464
--- /dev/null
476
465
+++ b/src/main/java/io/papermc/paper/registry/entry/CraftRegistryEntry.java
477
- @@ -0,0 +1,51 @@
466
+ @@ -0,0 +1,48 @@
478
467
+ package io.papermc.paper.registry.entry;
479
468
+
480
469
+ import com.google.common.base.Preconditions;
@@ -487,10 +476,7 @@ index 0000000000000000000000000000000000000000..9bb4aa926978f117901c9f99c45a6862
487
476
+ import org.bukkit.NamespacedKey;
488
477
+ import org.bukkit.craftbukkit.CraftRegistry;
489
478
+ import org.bukkit.craftbukkit.util.ApiVersion;
490
- + import org.checkerframework.checker.nullness.qual.NonNull;
491
- + import org.checkerframework.framework.qual.DefaultQualifier;
492
479
+
493
- + @DefaultQualifier(NonNull.class)
494
480
+ public class CraftRegistryEntry<M, B extends Keyed> extends BaseRegistryEntry<M, B> { // TODO remove Keyed
495
481
+
496
482
+ private static final BiFunction<NamespacedKey, ApiVersion, NamespacedKey> EMPTY = (namespacedKey, apiVersion) -> namespacedKey;
@@ -528,10 +514,10 @@ index 0000000000000000000000000000000000000000..9bb4aa926978f117901c9f99c45a6862
528
514
+ }
529
515
diff --git a/src/main/java/io/papermc/paper/registry/entry/RegistryEntry.java b/src/main/java/io/papermc/paper/registry/entry/RegistryEntry.java
530
516
new file mode 100644
531
- index 0000000000000000000000000000000000000000..15991bf13894d850f360a520d1815711d25973ec
517
+ index 0000000000000000000000000000000000000000..2889d87f0989ae5744cd4c1e57240830aa574155
532
518
--- /dev/null
533
519
+++ b/src/main/java/io/papermc/paper/registry/entry/RegistryEntry.java
534
- @@ -0,0 +1,51 @@
520
+ @@ -0,0 +1,48 @@
535
521
+ package io.papermc.paper.registry.entry;
536
522
+
537
523
+ import io.papermc.paper.registry.RegistryHolder;
@@ -544,10 +530,7 @@ index 0000000000000000000000000000000000000000..15991bf13894d850f360a520d1815711
544
530
+ import org.bukkit.Keyed;
545
531
+ import org.bukkit.NamespacedKey;
546
532
+ import org.bukkit.craftbukkit.util.ApiVersion;
547
- + import org.checkerframework.checker.nullness.qual.NonNull;
548
- + import org.checkerframework.framework.qual.DefaultQualifier;
549
533
+
550
- + @DefaultQualifier(NonNull.class)
551
534
+ public interface RegistryEntry<M, B extends Keyed> extends RegistryEntryInfo<M, B> { // TODO remove Keyed
552
535
+
553
536
+ RegistryHolder<B> createRegistryHolder(Registry<M> nmsRegistry);
@@ -603,42 +586,37 @@ index 0000000000000000000000000000000000000000..0ae855e80fc9fddfc1feb33c7a974820
603
586
+ }
604
587
diff --git a/src/main/java/io/papermc/paper/registry/entry/package-info.java b/src/main/java/io/papermc/paper/registry/entry/package-info.java
605
588
new file mode 100644
606
- index 0000000000000000000000000000000000000000..e4c94d6860e0f5b643cde1ded20b5503c02a4866
589
+ index 0000000000000000000000000000000000000000..f04e93aa5ca41ce1cf3b152f827911fdf0dd10cb
607
590
--- /dev/null
608
591
+++ b/src/main/java/io/papermc/paper/registry/entry/package-info.java
609
- @@ -0,0 +1,5 @@
610
- + @DefaultQualifier(NonNull.class)
592
+ @@ -0,0 +1,4 @@
593
+ + @NullMarked
611
594
+ package io.papermc.paper.registry.entry;
612
595
+
613
- + import org.checkerframework.checker.nullness.qual.NonNull;
614
- + import org.checkerframework.framework.qual.DefaultQualifier;
596
+ + import org.jspecify.annotations.NullMarked;
615
597
diff --git a/src/main/java/io/papermc/paper/registry/legacy/DelayedRegistry.java b/src/main/java/io/papermc/paper/registry/legacy/DelayedRegistry.java
616
598
new file mode 100644
617
- index 0000000000000000000000000000000000000000..9400fed345344a0a8e4fb301cca6a1867adf625b
599
+ index 0000000000000000000000000000000000000000..ca829b162d4369f845e59b62bb8779fd83fe2ef3
618
600
--- /dev/null
619
601
+++ b/src/main/java/io/papermc/paper/registry/legacy/DelayedRegistry.java
620
- @@ -0,0 +1,61 @@
602
+ @@ -0,0 +1,57 @@
621
603
+ package io.papermc.paper.registry.legacy;
622
604
+
623
605
+ import java.util.Iterator;
624
606
+ import java.util.function.Supplier;
625
607
+ import java.util.stream.Stream;
626
- + import net.kyori.adventure.key.Key;
627
608
+ import org.bukkit.Keyed;
628
609
+ import org.bukkit.NamespacedKey;
629
610
+ import org.bukkit.Registry;
630
- + import org.bukkit.craftbukkit.CraftRegistry;
631
- + import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
632
- + import org.checkerframework.checker.nullness.qual.Nullable;
633
- + import org.jetbrains.annotations.NotNull;
611
+ + import org.jspecify.annotations.Nullable;
634
612
+
635
613
+ /**
636
614
+ * This is to support the now-deprecated fields in {@link Registry} for
637
615
+ * data-driven registries.
638
616
+ */
639
617
+ public final class DelayedRegistry<T extends Keyed, R extends Registry<T>> implements Registry<T> {
640
618
+
641
- + private @MonotonicNonNull Supplier<? extends R> delegate;
619
+ + private @Nullable Supplier<? extends R> delegate;
642
620
+
643
621
+ public void load(final Supplier<? extends R> registry) {
644
622
+ if (this.delegate != null) {
@@ -660,7 +638,7 @@ index 0000000000000000000000000000000000000000..9400fed345344a0a8e4fb301cca6a186
660
638
+ }
661
639
+
662
640
+ @Override
663
- + public @NotNull T getOrThrow(@NotNull final NamespacedKey key) {
641
+ + public T getOrThrow(final NamespacedKey key) {
664
642
+ return this.delegate().getOrThrow(key);
665
643
+ }
666
644
+
@@ -675,7 +653,7 @@ index 0000000000000000000000000000000000000000..9400fed345344a0a8e4fb301cca6a186
675
653
+ }
676
654
+
677
655
+ @Override
678
- + public NamespacedKey getKey(final T value) {
656
+ + public @Nullable NamespacedKey getKey(final T value) {
679
657
+ return this.delegate().getKey(value);
680
658
+ }
681
659
+ }
@@ -752,15 +730,24 @@ index 0000000000000000000000000000000000000000..83870816cd4c54f94a3c603ffe41c11e
752
730
+ }
753
731
diff --git a/src/main/java/io/papermc/paper/registry/legacy/package-info.java b/src/main/java/io/papermc/paper/registry/legacy/package-info.java
754
732
new file mode 100644
755
- index 0000000000000000000000000000000000000000..4396982af55872fafbfeaf8161ad6f392726c773
733
+ index 0000000000000000000000000000000000000000..063a8d7a7313d5d685d51df54d9502d72266da49
756
734
--- /dev/null
757
735
+++ b/src/main/java/io/papermc/paper/registry/legacy/package-info.java
758
- @@ -0,0 +1,5 @@
759
- + @DefaultQualifier(NonNull.class)
736
+ @@ -0,0 +1,4 @@
737
+ + @NullMarked
760
738
+ package io.papermc.paper.registry.legacy;
761
739
+
762
- + import org.checkerframework.checker.nullness.qual.NonNull;
763
- + import org.checkerframework.framework.qual.DefaultQualifier;
740
+ + import org.jspecify.annotations.NullMarked;
741
+ diff --git a/src/main/java/io/papermc/paper/registry/package-info.java b/src/main/java/io/papermc/paper/registry/package-info.java
742
+ new file mode 100644
743
+ index 0000000000000000000000000000000000000000..ca07ef31161e938d48214992b34cafb712a51513
744
+ --- /dev/null
745
+ +++ b/src/main/java/io/papermc/paper/registry/package-info.java
746
+ @@ -0,0 +1,4 @@
747
+ + @NullMarked
748
+ + package io.papermc.paper.registry;
749
+ +
750
+ + import org.jspecify.annotations.NullMarked;
764
751
diff --git a/src/main/java/net/minecraft/core/registries/BuiltInRegistries.java b/src/main/java/net/minecraft/core/registries/BuiltInRegistries.java
765
752
index 3f72e30b57fb2a4231e22a2234729408c1240af4..4638ba98dbbdb0f880337347be85a6e0fbed2191 100644
766
753
--- a/src/main/java/net/minecraft/core/registries/BuiltInRegistries.java
0 commit comments