forked from PaperMC/Paper
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add StructuresLocateEvent as replacement for StructureLocateEvent (Pa…
- Loading branch information
1 parent
753bf2c
commit 15b6b3d
Showing
418 changed files
with
1,084 additions
and
267 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,112 @@ | ||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 | ||
From: Jake Potrebic <[email protected]> | ||
Date: Wed, 2 Mar 2022 13:36:21 -0800 | ||
Subject: [PATCH] Add PaperRegistry | ||
|
||
|
||
diff --git a/src/main/java/io/papermc/paper/registry/Reference.java b/src/main/java/io/papermc/paper/registry/Reference.java | ||
new file mode 100644 | ||
index 0000000000000000000000000000000000000000..d880810cbf05bc45051fe29515054211572e33b4 | ||
--- /dev/null | ||
+++ b/src/main/java/io/papermc/paper/registry/Reference.java | ||
@@ -0,0 +1,43 @@ | ||
+package io.papermc.paper.registry; | ||
+ | ||
+import org.bukkit.Keyed; | ||
+import org.bukkit.NamespacedKey; | ||
+import org.bukkit.Registry; | ||
+import org.jetbrains.annotations.NotNull; | ||
+import org.jetbrains.annotations.Nullable; | ||
+ | ||
+/** | ||
+ * Represents a reference to a server-backed registry value that may | ||
+ * change. | ||
+ * | ||
+ * @param <T> type of the value | ||
+ */ | ||
+public interface Reference<T extends Keyed> extends Keyed { | ||
+ | ||
+ /** | ||
+ * Gets the value from the registry with the key. | ||
+ * | ||
+ * @return the value | ||
+ * @throws java.util.NoSuchElementException if there is no value with this key | ||
+ */ | ||
+ @NotNull T value(); | ||
+ | ||
+ /** | ||
+ * Gets the value from the registry with the key. | ||
+ * | ||
+ * @return the value or null if it doesn't exist | ||
+ */ | ||
+ @Nullable T valueOrNull(); | ||
+ | ||
+ /** | ||
+ * Creates a reference to a registered value. | ||
+ * | ||
+ * @param registry the registry the value is located in | ||
+ * @param key the key to the value | ||
+ * @param <T> the type of the value | ||
+ * @return a reference | ||
+ */ | ||
+ static <T extends Keyed> @NotNull Reference<T> create(@NotNull Registry<T> registry, @NotNull NamespacedKey key) { | ||
+ return new ReferenceImpl<>(registry, key); | ||
+ } | ||
+} | ||
diff --git a/src/main/java/io/papermc/paper/registry/ReferenceImpl.java b/src/main/java/io/papermc/paper/registry/ReferenceImpl.java | ||
new file mode 100644 | ||
index 0000000000000000000000000000000000000000..f29e76a6b66ddfec12ddf8db6dcb2df6083b5982 | ||
--- /dev/null | ||
+++ b/src/main/java/io/papermc/paper/registry/ReferenceImpl.java | ||
@@ -0,0 +1,31 @@ | ||
+package io.papermc.paper.registry; | ||
+ | ||
+import org.bukkit.Keyed; | ||
+import org.bukkit.NamespacedKey; | ||
+import org.bukkit.Registry; | ||
+import org.jetbrains.annotations.NotNull; | ||
+import org.jetbrains.annotations.Nullable; | ||
+ | ||
+import java.util.NoSuchElementException; | ||
+ | ||
+record ReferenceImpl<T extends Keyed>(@NotNull Registry<T> registry, @NotNull NamespacedKey key) implements Reference<T> { | ||
+ | ||
+ @Override | ||
+ public @NotNull T value() { | ||
+ final T value = this.registry.get(this.key); | ||
+ if (value == null) { | ||
+ throw new NoSuchElementException("No such value with key " + this.key); | ||
+ } | ||
+ return value; | ||
+ } | ||
+ | ||
+ @Override | ||
+ public @Nullable T valueOrNull() { | ||
+ return this.registry.get(this.key); | ||
+ } | ||
+ | ||
+ @Override | ||
+ public @NotNull NamespacedKey getKey() { | ||
+ return this.key; | ||
+ } | ||
+} | ||
diff --git a/src/main/java/org/bukkit/UnsafeValues.java b/src/main/java/org/bukkit/UnsafeValues.java | ||
index b24439b379be1a90dde4e6f4dbe5ca3fdd8face4..0697214210a6e87f690b9454d9651d06ca57a524 100644 | ||
--- a/src/main/java/org/bukkit/UnsafeValues.java | ||
+++ b/src/main/java/org/bukkit/UnsafeValues.java | ||
@@ -147,5 +147,15 @@ public interface UnsafeValues { | ||
* Use this when sending custom packets, so that there are no collisions on the client or server. | ||
*/ | ||
public int nextEntityId(); | ||
+ | ||
+ /** | ||
+ * Gets the server-backed registry for a type. | ||
+ * | ||
+ * @param classOfT type | ||
+ * @param <T> type | ||
+ * @return the server-backed registry | ||
+ * @throws IllegalArgumentException if there isn't a registry for that type | ||
+ */ | ||
+ <T extends Keyed> @org.jetbrains.annotations.NotNull Registry<T> registryFor(Class<T> classOfT); | ||
// Paper end | ||
} |
This file was deleted.
Oops, something went wrong.
Oops, something went wrong.