mirror of
https://github.com/PaperMC/Paper.git
synced 2024-11-22 07:08:47 +01:00
ac554ad46d
Updated Upstream (Bukkit/CraftBukkit) Upstream has released updates that appear to apply and compile correctly. This update has not been tested by PaperMC and as with ANY update, please do your own testing Bukkit Changes: fa99e752 PR-1007: Add ItemMeta#getAsComponentString() 94a91782 Fix copy-pasted BlockType.Typed documentation 9b34ac8c Largely restore deprecated PotionData API 51a6449b PR-1008: Deprecate ITEMS_TOOLS, removed in 1.20.5 702d15fe Fix Javadoc reference 42f6cdf4 PR-919: Add internal ItemType and BlockType, delegate Material methods to them 237bb37b SPIGOT-1166, SPIGOT-7647: Expose Damager BlockState in EntityDamageByBlockEvent 035ea146 SPIGOT-6993: Allow #setVelocity to change the speed of a fireball and add a note to #setDirection about it 8c7880fb PR-1004: Improve field rename handling and centralize conversion between bukkit and string more 87c90e93 SPIGOT-7650: Add DamageSource for EntityDeathEvent and PlayerDeathEvent CraftBukkit Changes: 4af0f22e8 SPIGOT-7664: Item meta should prevail over block states c2ccc46ec SPIGOT-7666: Fix access to llama and horse special slot 124ac66d7 SPIGOT-7665: Fix ThrownPotion#getEffects() implementation only bringing custom effects 66f1f439a Restore null page behaviour of signed books even though not strictly allowed by API 6118e5398 Fix regression listening to minecraft:brand custom payloads c1a26b366 Fix unnecessary and potential not thread-safe chat visibility check 12360a7ec Remove unused imports 147b098b4 PR-1397: Add ItemMeta#getAsComponentString() 428aefe0e Largely restore deprecated PotionData API afe5b5ee9 PR-1275: Add internal ItemType and BlockType, delegate Material methods to them 8afeafa7d SPIGOT-1166, SPIGOT-7647: Expose Damager BlockState in EntityDamageByBlockEvent 4e7d749d4 SPIGOT-6993: Allow #setVelocity to change the speed of a fireball and add a note to #setDirection about it 441880757 Support both entity_data and bucket_entity_data on axolotl/fish buckets 0e22fdd1e Fix custom direct BlockState being not correctly set in DamageSource f2182ed47 SPIGOT-7659: TropicalFishBucketMeta should use BUCKET_ENTITY_DATA 2a6207fe1 PR-1393: Improve field rename handling and centralize conversion between bukkit and string more c024a5039 SPIGOT-7650: Add DamageSource for EntityDeathEvent and PlayerDeathEvent 741b84480 PR-1390: Improve internal handling of damage sources 0364df4e1 SPIGOT-7657: Error when loading angry entities
173 lines
7.3 KiB
Diff
173 lines
7.3 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Jake Potrebic <jake.m.potrebic@gmail.com>
|
|
Date: Wed, 20 Dec 2023 02:03:10 -0800
|
|
Subject: [PATCH] Improve Registry
|
|
|
|
Adds Registry#getKey(Object) which should be the
|
|
primary way people get the key for an object. Registry
|
|
items need to exist without having a key and so
|
|
getKey() methods on Keyed objects that have a registry
|
|
are marked as Deprecated or Obsolete.
|
|
|
|
diff --git a/src/main/java/org/bukkit/MusicInstrument.java b/src/main/java/org/bukkit/MusicInstrument.java
|
|
index 62d2b3f950860dee0898d77b0a29635c3f9a7e23..704dba92f9246ef398ed8d162ebee3cf305960e1 100644
|
|
--- a/src/main/java/org/bukkit/MusicInstrument.java
|
|
+++ b/src/main/java/org/bukkit/MusicInstrument.java
|
|
@@ -53,6 +53,16 @@ public abstract class MusicInstrument implements Keyed, net.kyori.adventure.tran
|
|
return instrument;
|
|
}
|
|
|
|
+ // Paper start - deprecate getKey
|
|
+ /**
|
|
+ * @deprecated use {@link Registry#getKey(Keyed)} and {@link Registry#INSTRUMENT}. MusicInstruments
|
|
+ * can exist without a key.
|
|
+ */
|
|
+ @Deprecated
|
|
+ @Override
|
|
+ public abstract @NotNull NamespacedKey getKey();
|
|
+ // Paper end - deprecate getKey
|
|
+
|
|
// Paper start - translation key
|
|
@Override
|
|
public @NotNull String translationKey() {
|
|
diff --git a/src/main/java/org/bukkit/Registry.java b/src/main/java/org/bukkit/Registry.java
|
|
index f301f81817409f0a6799885d4f0972ed9bf3e4df..88bb3b9ae99fae97ec21972b75ec43cb6b7b22b5 100644
|
|
--- a/src/main/java/org/bukkit/Registry.java
|
|
+++ b/src/main/java/org/bukkit/Registry.java
|
|
@@ -353,6 +353,49 @@ public interface Registry<T extends Keyed> extends Iterable<T> {
|
|
@Nullable
|
|
T get(@NotNull NamespacedKey key);
|
|
|
|
+ // Paper start - improve Registry
|
|
+ /**
|
|
+ * Gets the key for this object or throws if it doesn't exist.
|
|
+ * <p>
|
|
+ * Some types can exist without being in a registry
|
|
+ * and such will have no key associated with them. This
|
|
+ * method throw an exception if it isn't in this registry.
|
|
+ *
|
|
+ * @param value the value to get the key of in this registry
|
|
+ * @return the key for the value
|
|
+ * @throws java.util.NoSuchElementException if the value doesn't exist in this registry
|
|
+ * @see #getKey(Keyed)
|
|
+ */
|
|
+ default @NotNull NamespacedKey getKeyOrThrow(final @NotNull T value) {
|
|
+ Preconditions.checkArgument(value != null, "value cannot be null");
|
|
+ final NamespacedKey key = this.getKey(value);
|
|
+ if (key == null) {
|
|
+ throw new java.util.NoSuchElementException(value + " has no key in " + this);
|
|
+ }
|
|
+ return key;
|
|
+ }
|
|
+
|
|
+ /**
|
|
+ * Get the key for this object.
|
|
+ * <p>
|
|
+ * Some types can exist without being in a registry
|
|
+ * and such will have no key associated with them. This
|
|
+ * method will return null.
|
|
+ *
|
|
+ * @param value the value to get the key of in this registry
|
|
+ * @return the key for the value or null if not in the registry
|
|
+ * @see #getKeyOrThrow(Keyed)
|
|
+ */
|
|
+ default @Nullable NamespacedKey getKey(final @NotNull T value) {
|
|
+ Preconditions.checkArgument(value != null, "value cannot be null");
|
|
+ //noinspection ConstantValue (it might not be in the future...)
|
|
+ if (value instanceof Keyed) {
|
|
+ return value.getKey();
|
|
+ }
|
|
+ return null;
|
|
+ }
|
|
+ // Paper end - improve Registry
|
|
+
|
|
/**
|
|
* Returns a new stream, which contains all registry items, which are registered to the registry.
|
|
*
|
|
@@ -427,5 +470,12 @@ public interface Registry<T extends Keyed> extends Iterable<T> {
|
|
public Class<T> getType() {
|
|
return this.type;
|
|
}
|
|
+
|
|
+ // Paper start - improve Registry
|
|
+ @Override
|
|
+ public @NotNull NamespacedKey getKey(final @NotNull T value) {
|
|
+ return value.getKey();
|
|
+ }
|
|
+ // Paper end - improve Registry
|
|
}
|
|
}
|
|
diff --git a/src/main/java/org/bukkit/block/banner/PatternType.java b/src/main/java/org/bukkit/block/banner/PatternType.java
|
|
index 9951cf6780ae47649625b8fe0ed72d87ad0417b2..2a245735ac902d55681880dc80b12ddef65c0124 100644
|
|
--- a/src/main/java/org/bukkit/block/banner/PatternType.java
|
|
+++ b/src/main/java/org/bukkit/block/banner/PatternType.java
|
|
@@ -75,6 +75,13 @@ public enum PatternType implements Keyed {
|
|
this.key = NamespacedKey.minecraft(key);
|
|
}
|
|
|
|
+ // Paper start - deprecate getKey
|
|
+ /**
|
|
+ * @deprecated use {@link Registry#getKey(Keyed)} and {@link Registry#BANNER_PATTERN}. PatternTypes
|
|
+ * can exist without a key.
|
|
+ */
|
|
+ @Deprecated
|
|
+ // Paper end - deprecate getKey
|
|
@Override
|
|
@NotNull
|
|
public NamespacedKey getKey() {
|
|
diff --git a/src/main/java/org/bukkit/generator/structure/Structure.java b/src/main/java/org/bukkit/generator/structure/Structure.java
|
|
index 94092a5882180cca7905388184de1f91633f0df1..46e510e67b156b469d1413e616a5ff6a6487fdbf 100644
|
|
--- a/src/main/java/org/bukkit/generator/structure/Structure.java
|
|
+++ b/src/main/java/org/bukkit/generator/structure/Structure.java
|
|
@@ -64,4 +64,13 @@ public abstract class Structure implements Keyed {
|
|
*/
|
|
@NotNull
|
|
public abstract StructureType getStructureType();
|
|
+ // Paper start - deprecate getKey
|
|
+ /**
|
|
+ * @deprecated use {@link Registry#getKey(Keyed)} and {@link Registry#STRUCTURE}. Structures
|
|
+ * can exist without a key.
|
|
+ */
|
|
+ @Override
|
|
+ @Deprecated
|
|
+ public abstract @NotNull NamespacedKey getKey();
|
|
+ // Paper end - deprecate getKey
|
|
}
|
|
diff --git a/src/main/java/org/bukkit/inventory/meta/trim/TrimMaterial.java b/src/main/java/org/bukkit/inventory/meta/trim/TrimMaterial.java
|
|
index 941fac4eee338870d8c30cb1f64cab572cf54548..74816d6da4d7c8d2fa8a7b93fdc4bf29c8d12803 100644
|
|
--- a/src/main/java/org/bukkit/inventory/meta/trim/TrimMaterial.java
|
|
+++ b/src/main/java/org/bukkit/inventory/meta/trim/TrimMaterial.java
|
|
@@ -68,4 +68,14 @@ public interface TrimMaterial extends Keyed, Translatable {
|
|
@Deprecated(forRemoval = true)
|
|
@org.jetbrains.annotations.NotNull String getTranslationKey();
|
|
// Paper end - adventure
|
|
+
|
|
+ // Paper start - Registry#getKey
|
|
+ /**
|
|
+ * @deprecated use {@link Registry#getKey(Keyed)} and {@link Registry#TRIM_MATERIAL}. TrimMaterials
|
|
+ * can exist without a key.
|
|
+ */
|
|
+ @Deprecated(forRemoval = true, since = "1.20.4")
|
|
+ @Override
|
|
+ org.bukkit.@org.jetbrains.annotations.NotNull NamespacedKey getKey();
|
|
+ // Paper end - Registry#getKey
|
|
}
|
|
diff --git a/src/main/java/org/bukkit/inventory/meta/trim/TrimPattern.java b/src/main/java/org/bukkit/inventory/meta/trim/TrimPattern.java
|
|
index 9133a889c1936b4cf7dbf17f744ee926d57362a3..6079bd05a056153c9d66f37396c96dbad9dca7a1 100644
|
|
--- a/src/main/java/org/bukkit/inventory/meta/trim/TrimPattern.java
|
|
+++ b/src/main/java/org/bukkit/inventory/meta/trim/TrimPattern.java
|
|
@@ -104,4 +104,14 @@ public interface TrimPattern extends Keyed, Translatable {
|
|
@Deprecated(forRemoval = true)
|
|
@org.jetbrains.annotations.NotNull String getTranslationKey();
|
|
// Paper end - adventure
|
|
+
|
|
+ // Paper start - Registry#getKey
|
|
+ /**
|
|
+ * @deprecated use {@link Registry#getKey(Keyed)} and {@link Registry#TRIM_PATTERN}. TrimPatterns
|
|
+ * can exist without a key.
|
|
+ */
|
|
+ @Deprecated(forRemoval = true, since = "1.20.4")
|
|
+ @Override
|
|
+ org.bukkit.@org.jetbrains.annotations.NotNull NamespacedKey getKey();
|
|
+ // Paper end - Registry#getKey
|
|
}
|