mirror of
https://github.com/PaperMC/Paper.git
synced 2024-12-28 03:48:01 +01:00
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.
This commit is contained in:
parent
9a78d17d8e
commit
d513222b59
@ -97,6 +97,26 @@ public interface Art extends OldEnum<Art>, Keyed {
|
|||||||
@Deprecated(since = "1.6.2")
|
@Deprecated(since = "1.6.2")
|
||||||
int getId();
|
int getId();
|
||||||
|
|
||||||
|
// Paper start - deprecate getKey
|
||||||
|
/**
|
||||||
|
* @deprecated use {@link Registry#getKey(Keyed)}, {@link io.papermc.paper.registry.RegistryAccess#getRegistry(io.papermc.paper.registry.RegistryKey)},
|
||||||
|
* and {@link io.papermc.paper.registry.RegistryKey#PAINTING_VARIANT}. Painting variants can exist without a key.
|
||||||
|
*/
|
||||||
|
@Deprecated(since = "1.21", forRemoval = true)
|
||||||
|
@Override
|
||||||
|
@NotNull NamespacedKey getKey();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @deprecated use {@link Registry#getKey(Keyed)}, {@link io.papermc.paper.registry.RegistryAccess#getRegistry(io.papermc.paper.registry.RegistryKey)},
|
||||||
|
* and {@link io.papermc.paper.registry.RegistryKey#PAINTING_VARIANT}. Painting variants can exist without a key.
|
||||||
|
*/
|
||||||
|
@Deprecated(since = "1.21", forRemoval = true)
|
||||||
|
@Override
|
||||||
|
default net.kyori.adventure.key.@org.jetbrains.annotations.NotNull Key key() {
|
||||||
|
return Keyed.super.key();
|
||||||
|
}
|
||||||
|
// Paper end - deprecate getKey
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get a painting by its numeric ID
|
* Get a painting by its numeric ID
|
||||||
*
|
*
|
||||||
|
@ -47,6 +47,27 @@ public abstract class MusicInstrument implements Keyed, net.kyori.adventure.tran
|
|||||||
return Registry.INSTRUMENT.getOrThrow(NamespacedKey.minecraft(key));
|
return Registry.INSTRUMENT.getOrThrow(NamespacedKey.minecraft(key));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Paper start - deprecate getKey
|
||||||
|
/**
|
||||||
|
* @deprecated use {@link Registry#getKey(Keyed)}, {@link io.papermc.paper.registry.RegistryAccess#getRegistry(io.papermc.paper.registry.RegistryKey)},
|
||||||
|
* and {@link io.papermc.paper.registry.RegistryKey#INSTRUMENT}. MusicInstruments can exist without a key.
|
||||||
|
*/
|
||||||
|
@Deprecated(forRemoval = true, since = "1.20.5")
|
||||||
|
@Override
|
||||||
|
public abstract @NotNull NamespacedKey getKey();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @deprecated use {@link Registry#getKey(Keyed)}, {@link io.papermc.paper.registry.RegistryAccess#getRegistry(io.papermc.paper.registry.RegistryKey)},
|
||||||
|
* and {@link io.papermc.paper.registry.RegistryKey#INSTRUMENT}. MusicInstruments can exist without a key.
|
||||||
|
*/
|
||||||
|
@Deprecated(forRemoval = true, since = "1.20.5")
|
||||||
|
@Override
|
||||||
|
public net.kyori.adventure.key.@org.jetbrains.annotations.NotNull Key key() {
|
||||||
|
return Keyed.super.key();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Paper end - deprecate getKey
|
||||||
|
|
||||||
// Paper start - mark translation key as deprecated
|
// Paper start - mark translation key as deprecated
|
||||||
/**
|
/**
|
||||||
* @deprecated this method assumes that the instrument description
|
* @deprecated this method assumes that the instrument description
|
||||||
|
@ -385,6 +385,79 @@ public interface Registry<T extends Keyed> extends Iterable<T> {
|
|||||||
@Nullable
|
@Nullable
|
||||||
T get(@NotNull NamespacedKey key);
|
T get(@NotNull NamespacedKey key);
|
||||||
|
|
||||||
|
// Paper start - improve Registry
|
||||||
|
/**
|
||||||
|
* Gets the object by its key or throws if it doesn't exist.
|
||||||
|
*
|
||||||
|
* @param key the key to get the object of in this registry
|
||||||
|
* @return the object for the key
|
||||||
|
* @throws java.util.NoSuchElementException if the key doesn't point to an object in the registry
|
||||||
|
*/
|
||||||
|
default @NotNull T getOrThrow(final net.kyori.adventure.key.@NotNull Key key) {
|
||||||
|
final T value = this.get(key);
|
||||||
|
if (value == null) {
|
||||||
|
throw new java.util.NoSuchElementException("No value for " + key + " in " + this);
|
||||||
|
}
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the object by its key or throws if it doesn't exist.
|
||||||
|
*
|
||||||
|
* @param key the key to get the object of in this registry
|
||||||
|
* @return the object for the key
|
||||||
|
* @throws java.util.NoSuchElementException if the key doesn't point to an object in the registry
|
||||||
|
*/
|
||||||
|
default @NotNull T getOrThrow(final io.papermc.paper.registry.@NotNull TypedKey<T> key) {
|
||||||
|
final T value = this.get(key);
|
||||||
|
if (value == null) {
|
||||||
|
throw new java.util.NoSuchElementException("No value for " + key + " in " + this);
|
||||||
|
}
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 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
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the object by its key.
|
* Get the object by its key.
|
||||||
*
|
*
|
||||||
@ -481,5 +554,12 @@ public interface Registry<T extends Keyed> extends Iterable<T> {
|
|||||||
public Class<T> getType() {
|
public Class<T> getType() {
|
||||||
return this.type;
|
return this.type;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Paper start - improve Registry
|
||||||
|
@Override
|
||||||
|
public @NotNull NamespacedKey getKey(final @NotNull T value) {
|
||||||
|
return value.getKey();
|
||||||
|
}
|
||||||
|
// Paper end - improve Registry
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1704,6 +1704,16 @@ public interface Sound extends OldEnum<Sound>, Keyed, net.kyori.adventure.sound.
|
|||||||
return sound;
|
return sound;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Paper start - deprecate getKey
|
||||||
|
/**
|
||||||
|
* @deprecated use {@link Registry#getKey(Keyed)} and {@link Registry#SOUNDS}. Sounds
|
||||||
|
* can exist without a key.
|
||||||
|
*/
|
||||||
|
@Deprecated(since = "1.20.5", forRemoval = true)
|
||||||
|
@Override
|
||||||
|
@NotNull NamespacedKey getKey();
|
||||||
|
// Paper end - deprecate getKey
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return an array of all known sounds.
|
* @return an array of all known sounds.
|
||||||
* @deprecated use {@link Registry#iterator()}.
|
* @deprecated use {@link Registry#iterator()}.
|
||||||
@ -1715,6 +1725,11 @@ public interface Sound extends OldEnum<Sound>, Keyed, net.kyori.adventure.sound.
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Paper start
|
// Paper start
|
||||||
|
/**
|
||||||
|
* @deprecated use {@link Registry#getKey(Keyed)} and {@link Registry#SOUNDS}. Sounds
|
||||||
|
* can exist without a key.
|
||||||
|
*/
|
||||||
|
@Deprecated(since = "1.20.5", forRemoval = true)
|
||||||
@Override
|
@Override
|
||||||
default net.kyori.adventure.key.@NotNull Key key() {
|
default net.kyori.adventure.key.@NotNull Key key() {
|
||||||
return this.getKey();
|
return this.getKey();
|
||||||
|
@ -56,6 +56,23 @@ public interface PatternType extends OldEnum<PatternType>, Keyed {
|
|||||||
PatternType FLOW = getType("flow");
|
PatternType FLOW = getType("flow");
|
||||||
PatternType GUSTER = getType("guster");
|
PatternType GUSTER = getType("guster");
|
||||||
|
|
||||||
|
// Paper start - deprecate getKey
|
||||||
|
/**
|
||||||
|
* @deprecated use {@link Registry#getKey(Keyed)}, {@link io.papermc.paper.registry.RegistryAccess#getRegistry(io.papermc.paper.registry.RegistryKey)},
|
||||||
|
* and {@link io.papermc.paper.registry.RegistryKey#BANNER_PATTERN}. PatternTypes can exist without a key.
|
||||||
|
*/
|
||||||
|
@Deprecated(since = "1.20.5", forRemoval = true)
|
||||||
|
@Override
|
||||||
|
default net.kyori.adventure.key.@org.jetbrains.annotations.NotNull Key key() {
|
||||||
|
return org.bukkit.Keyed.super.key();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @deprecated use {@link Registry#getKey(Keyed)}, {@link io.papermc.paper.registry.RegistryAccess#getRegistry(io.papermc.paper.registry.RegistryKey)},
|
||||||
|
* and {@link io.papermc.paper.registry.RegistryKey#BANNER_PATTERN}. PatternTypes can exist without a key.
|
||||||
|
*/
|
||||||
|
@Deprecated(since = "1.20.5", forRemoval = true)
|
||||||
|
// Paper end - deprecate getKey
|
||||||
@Override
|
@Override
|
||||||
@NotNull
|
@NotNull
|
||||||
public NamespacedKey getKey();
|
public NamespacedKey getKey();
|
||||||
|
@ -61,4 +61,24 @@ public abstract class Structure implements Keyed {
|
|||||||
*/
|
*/
|
||||||
@NotNull
|
@NotNull
|
||||||
public abstract StructureType getStructureType();
|
public abstract StructureType getStructureType();
|
||||||
|
// Paper start - deprecate getKey
|
||||||
|
/**
|
||||||
|
* @deprecated use {@link Registry#getKey(Keyed)}, {@link io.papermc.paper.registry.RegistryAccess#getRegistry(io.papermc.paper.registry.RegistryKey)},
|
||||||
|
* and {@link io.papermc.paper.registry.RegistryKey#STRUCTURE}. Structures can exist without a key.
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
@Deprecated(since = "1.20.4", forRemoval = true)
|
||||||
|
public abstract @NotNull NamespacedKey getKey();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @deprecated use {@link Registry#getKey(Keyed)}, {@link io.papermc.paper.registry.RegistryAccess#getRegistry(io.papermc.paper.registry.RegistryKey)},
|
||||||
|
* and {@link io.papermc.paper.registry.RegistryKey#STRUCTURE}. Structures can exist without a key.
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
@Deprecated(since = "1.20.4", forRemoval = true)
|
||||||
|
public net.kyori.adventure.key.@org.jetbrains.annotations.NotNull Key key() {
|
||||||
|
return org.bukkit.Keyed.super.key();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Paper end - deprecate getKey
|
||||||
}
|
}
|
||||||
|
@ -78,4 +78,25 @@ public interface TrimMaterial extends Keyed, Translatable {
|
|||||||
@Deprecated(forRemoval = true)
|
@Deprecated(forRemoval = true)
|
||||||
@org.jetbrains.annotations.NotNull String getTranslationKey();
|
@org.jetbrains.annotations.NotNull String getTranslationKey();
|
||||||
// Paper end - adventure
|
// Paper end - adventure
|
||||||
|
|
||||||
|
// Paper start - Registry#getKey
|
||||||
|
/**
|
||||||
|
* @deprecated use {@link Registry#getKey(Keyed)}, {@link io.papermc.paper.registry.RegistryAccess#getRegistry(io.papermc.paper.registry.RegistryKey)},
|
||||||
|
* and {@link io.papermc.paper.registry.RegistryKey#TRIM_MATERIAL}. TrimMaterials can exist without a key.
|
||||||
|
*/
|
||||||
|
@Deprecated(forRemoval = true, since = "1.20.4")
|
||||||
|
@Override
|
||||||
|
org.bukkit.@org.jetbrains.annotations.NotNull NamespacedKey getKey();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @deprecated use {@link Registry#getKey(Keyed)}, {@link io.papermc.paper.registry.RegistryAccess#getRegistry(io.papermc.paper.registry.RegistryKey)},
|
||||||
|
* and {@link io.papermc.paper.registry.RegistryKey#TRIM_MATERIAL}. TrimMaterials can exist without a key.
|
||||||
|
*/
|
||||||
|
@Deprecated(forRemoval = true, since = "1.20.4")
|
||||||
|
@Override
|
||||||
|
default net.kyori.adventure.key.@org.jetbrains.annotations.NotNull Key key() {
|
||||||
|
return org.bukkit.Keyed.super.key();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Paper end - Registry#getKey
|
||||||
}
|
}
|
||||||
|
@ -106,4 +106,24 @@ public interface TrimPattern extends Keyed, Translatable {
|
|||||||
@Deprecated(forRemoval = true)
|
@Deprecated(forRemoval = true)
|
||||||
@org.jetbrains.annotations.NotNull String getTranslationKey();
|
@org.jetbrains.annotations.NotNull String getTranslationKey();
|
||||||
// Paper end - adventure
|
// Paper end - adventure
|
||||||
|
|
||||||
|
// Paper start - Registry#getKey
|
||||||
|
/**
|
||||||
|
* @deprecated use {@link Registry#getKey(Keyed)}, {@link io.papermc.paper.registry.RegistryAccess#getRegistry(io.papermc.paper.registry.RegistryKey)},
|
||||||
|
* and {@link io.papermc.paper.registry.RegistryKey#TRIM_PATTERN}. TrimPatterns can exist without a key.
|
||||||
|
*/
|
||||||
|
@Deprecated(forRemoval = true, since = "1.20.4")
|
||||||
|
@Override
|
||||||
|
org.bukkit.@org.jetbrains.annotations.NotNull NamespacedKey getKey();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @deprecated use {@link Registry#getKey(Keyed)}, {@link io.papermc.paper.registry.RegistryAccess#getRegistry(io.papermc.paper.registry.RegistryKey)},
|
||||||
|
* and {@link io.papermc.paper.registry.RegistryKey#TRIM_PATTERN}. TrimPatterns can exist without a key.
|
||||||
|
*/
|
||||||
|
@Deprecated(forRemoval = true, since = "1.20.4")
|
||||||
|
@Override
|
||||||
|
default net.kyori.adventure.key.@org.jetbrains.annotations.NotNull Key key() {
|
||||||
|
return org.bukkit.Keyed.super.key();
|
||||||
|
}
|
||||||
|
// Paper end - Registry#getKey
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user