More PotionEffectType API

This commit is contained in:
Jake Potrebic 2021-05-27 21:58:33 -07:00
parent 5746f17f68
commit 5ac3ad3792
3 changed files with 100 additions and 1 deletions

View file

@ -367,6 +367,15 @@ public interface Registry<T extends Keyed> extends Iterable<T> {
* @see GameEvent * @see GameEvent
*/ */
Registry<GameEvent> GAME_EVENT = io.papermc.paper.registry.RegistryAccess.registryAccess().getRegistry(io.papermc.paper.registry.RegistryKey.GAME_EVENT); // Paper Registry<GameEvent> GAME_EVENT = io.papermc.paper.registry.RegistryAccess.registryAccess().getRegistry(io.papermc.paper.registry.RegistryKey.GAME_EVENT); // Paper
// Paper start - potion effect type registry
/**
* Potion effect types.
*
* @see org.bukkit.potion.PotionEffectType
*/
Registry<org.bukkit.potion.PotionEffectType> POTION_EFFECT_TYPE = EFFECT;
// Paper end - potion effect type registry
/** /**
* Get the object by its key. * Get the object by its key.
* *

View file

@ -17,7 +17,7 @@ import org.jetbrains.annotations.Nullable;
/** /**
* Represents a type of potion and its effect on an entity. * Represents a type of potion and its effect on an entity.
*/ */
public abstract class PotionEffectType implements Keyed, Translatable { public abstract class PotionEffectType implements Keyed, Translatable, net.kyori.adventure.translation.Translatable { // Paper - implement Translatable
private static final BiMap<Integer, PotionEffectType> ID_MAP = HashBiMap.create(); private static final BiMap<Integer, PotionEffectType> ID_MAP = HashBiMap.create();
/** /**
@ -360,4 +360,57 @@ public abstract class PotionEffectType implements Keyed, Translatable {
public static PotionEffectType[] values() { public static PotionEffectType[] values() {
return Lists.newArrayList(Registry.EFFECT).toArray(new PotionEffectType[0]); return Lists.newArrayList(Registry.EFFECT).toArray(new PotionEffectType[0]);
} }
// Paper start
/**
* Gets the effect attributes in an immutable map.
*
* @return the attribute map
*/
public abstract @NotNull java.util.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
} }

View file

@ -19,4 +19,41 @@ public abstract class PotionEffectTypeWrapper extends PotionEffectType {
public PotionEffectType getType() { public PotionEffectType getType() {
return this; return this;
} }
@Override
public boolean isInstant() {
return getType().isInstant();
}
@NotNull
@Override
public org.bukkit.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
} }