More PotionEffectType API (#5737)
This commit is contained in:
parent
f6c7d536a8
commit
7978121c7c
2 changed files with 234 additions and 0 deletions
143
patches/api/0362-More-PotionEffectType-API.patch
Normal file
143
patches/api/0362-More-PotionEffectType-API.patch
Normal file
|
@ -0,0 +1,143 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Jake Potrebic <jake.m.potrebic@gmail.com>
|
||||
Date: Thu, 27 May 2021 21:58:33 -0700
|
||||
Subject: [PATCH] More PotionEffectType API
|
||||
|
||||
|
||||
diff --git a/src/main/java/org/bukkit/Registry.java b/src/main/java/org/bukkit/Registry.java
|
||||
index a696fcaffa03af9e6c92e2ef3e12b38eb59e5db4..6242336de18fdd708cc3d7b745cbbace13140bc0 100644
|
||||
--- a/src/main/java/org/bukkit/Registry.java
|
||||
+++ b/src/main/java/org/bukkit/Registry.java
|
||||
@@ -189,6 +189,27 @@ public interface Registry<T extends Keyed> extends Iterable<T> {
|
||||
return GameEvent.getByKey(key);
|
||||
}
|
||||
};
|
||||
+ // Paper start
|
||||
+ /**
|
||||
+ * Potion effect types.
|
||||
+ *
|
||||
+ * @see org.bukkit.potion.PotionEffectType
|
||||
+ */
|
||||
+ Registry<org.bukkit.potion.PotionEffectType> POTION_EFFECT_TYPE = new Registry<org.bukkit.potion.PotionEffectType>() {
|
||||
+
|
||||
+ @Nullable
|
||||
+ @Override
|
||||
+ public org.bukkit.potion.PotionEffectType get(@NotNull NamespacedKey key) {
|
||||
+ return org.bukkit.potion.PotionEffectType.getByKey(key);
|
||||
+ }
|
||||
+
|
||||
+ @NotNull
|
||||
+ @Override
|
||||
+ public Iterator<org.bukkit.potion.PotionEffectType> iterator() {
|
||||
+ return Arrays.stream(org.bukkit.potion.PotionEffectType.values()).iterator();
|
||||
+ }
|
||||
+ };
|
||||
+ // Paper end
|
||||
|
||||
/**
|
||||
* Get the object by its key.
|
||||
diff --git a/src/main/java/org/bukkit/potion/PotionEffectType.java b/src/main/java/org/bukkit/potion/PotionEffectType.java
|
||||
index 22c28a503732671bc84c51372262e909d035c1fa..06e0f13d658b63b1fa984abb515eb0de704f9215 100644
|
||||
--- a/src/main/java/org/bukkit/potion/PotionEffectType.java
|
||||
+++ b/src/main/java/org/bukkit/potion/PotionEffectType.java
|
||||
@@ -14,7 +14,7 @@ import org.jetbrains.annotations.Nullable;
|
||||
/**
|
||||
* Represents a type of potion and its effect on an entity.
|
||||
*/
|
||||
-public abstract class PotionEffectType implements Keyed {
|
||||
+public abstract class PotionEffectType implements Keyed, net.kyori.adventure.translation.Translatable { // Paper - implement Translatable
|
||||
/**
|
||||
* Increases movement speed.
|
||||
*/
|
||||
@@ -358,4 +358,56 @@ public abstract class PotionEffectType implements Keyed {
|
||||
public static PotionEffectType[] values() {
|
||||
return Arrays.copyOfRange(byId, 1, byId.length);
|
||||
}
|
||||
+ // Paper start
|
||||
+ /**
|
||||
+ * Gets the effect attributes in an immutable map.
|
||||
+ *
|
||||
+ * @return the attribute map
|
||||
+ */
|
||||
+ public abstract @NotNull Map<org.bukkit.attribute.Attribute, org.bukkit.attribute.AttributeModifier> getEffectAttributes();
|
||||
+
|
||||
+ /**
|
||||
+ * Gets the true modifier amount based on the effect amplifier.
|
||||
+ *
|
||||
+ * @param attribute the attribute
|
||||
+ * @param effectAmplifier the effect amplifier (0 indexed)
|
||||
+ * @return the modifier amount
|
||||
+ * @throws IllegalArgumentException if the supplied attribute is not present in the map from {@link #getEffectAttributes()}
|
||||
+ */
|
||||
+ public abstract double getAttributeModifierAmount(@NotNull org.bukkit.attribute.Attribute attribute, int effectAmplifier);
|
||||
+
|
||||
+ /**
|
||||
+ * Gets the category of this effect
|
||||
+ *
|
||||
+ * @return the category
|
||||
+ */
|
||||
+ public abstract @NotNull PotionEffectType.Category getEffectCategory();
|
||||
+
|
||||
+ /**
|
||||
+ * Category of {@link PotionEffectType}s
|
||||
+ */
|
||||
+ public enum Category {
|
||||
+
|
||||
+ BENEFICIAL(net.kyori.adventure.text.format.NamedTextColor.BLUE),
|
||||
+ HARMFUL(net.kyori.adventure.text.format.NamedTextColor.RED),
|
||||
+ NEUTRAL(net.kyori.adventure.text.format.NamedTextColor.BLUE);
|
||||
+
|
||||
+ private final net.kyori.adventure.text.format.TextColor color;
|
||||
+
|
||||
+ Category(net.kyori.adventure.text.format.TextColor color) {
|
||||
+ this.color = color;
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Gets the text color used when displaying potions
|
||||
+ * of this category.
|
||||
+ *
|
||||
+ * @return the text color
|
||||
+ */
|
||||
+ @NotNull
|
||||
+ public net.kyori.adventure.text.format.TextColor getColor() {
|
||||
+ return color;
|
||||
+ }
|
||||
+ }
|
||||
+ // Paper end
|
||||
}
|
||||
diff --git a/src/main/java/org/bukkit/potion/PotionEffectTypeWrapper.java b/src/main/java/org/bukkit/potion/PotionEffectTypeWrapper.java
|
||||
index c3a86bb1910158a8d13a675dfa7236dd6a3f397c..a7653806c0fa76f4b3342ea199fe892c514a4c27 100644
|
||||
--- a/src/main/java/org/bukkit/potion/PotionEffectTypeWrapper.java
|
||||
+++ b/src/main/java/org/bukkit/potion/PotionEffectTypeWrapper.java
|
||||
@@ -40,4 +40,30 @@ public class PotionEffectTypeWrapper extends PotionEffectType {
|
||||
public Color getColor() {
|
||||
return getType().getColor();
|
||||
}
|
||||
+ // Paper start
|
||||
+ @Override
|
||||
+ public @NotNull org.bukkit.NamespacedKey getKey() {
|
||||
+ return this.getType().getKey();
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public @NotNull java.util.Map<org.bukkit.attribute.Attribute, org.bukkit.attribute.AttributeModifier> getEffectAttributes() {
|
||||
+ return this.getType().getEffectAttributes();
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public double getAttributeModifierAmount(@NotNull org.bukkit.attribute.Attribute attribute, int effectAmplifier) {
|
||||
+ return this.getType().getAttributeModifierAmount(attribute, effectAmplifier);
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public @NotNull PotionEffectType.Category getEffectCategory() {
|
||||
+ return this.getType().getEffectCategory();
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public @NotNull String translationKey() {
|
||||
+ return this.getType().translationKey();
|
||||
+ }
|
||||
+ // Paper end
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue