mirror of
https://github.com/PaperMC/Paper.git
synced 2024-12-28 15:30:19 +01:00
Fix equipment slot and group API
Adds the following: - Add missing 'body' slot group - Expose LivingEntity#canUseSlot Co-authored-by: SoSeDiK <mrsosedik@gmail.com>
This commit is contained in:
parent
953ba33fc1
commit
962554a0de
6 changed files with 26 additions and 3 deletions
|
@ -130,6 +130,7 @@ public class AttributeModifier implements ConfigurationSerializable, Keyed {
|
||||||
*/
|
*/
|
||||||
@Nullable
|
@Nullable
|
||||||
@Deprecated(since = "1.20.5")
|
@Deprecated(since = "1.20.5")
|
||||||
|
@io.papermc.paper.annotation.DoNotUse // Paper
|
||||||
public EquipmentSlot getSlot() {
|
public EquipmentSlot getSlot() {
|
||||||
return slot == EquipmentSlotGroup.ANY ? null : slot.getExample();
|
return slot == EquipmentSlotGroup.ANY ? null : slot.getExample();
|
||||||
}
|
}
|
||||||
|
|
|
@ -1457,4 +1457,15 @@ public interface LivingEntity extends Attributable, Damageable, ProjectileSource
|
||||||
*/
|
*/
|
||||||
void setBodyYaw(float bodyYaw);
|
void setBodyYaw(float bodyYaw);
|
||||||
// Paper end - body yaw API
|
// Paper end - body yaw API
|
||||||
|
|
||||||
|
// Paper start - Expose canUseSlot
|
||||||
|
/**
|
||||||
|
* Checks whether this entity can use the equipment slot.
|
||||||
|
* <br>For example, not all entities may have {@link org.bukkit.inventory.EquipmentSlot#BODY}.
|
||||||
|
*
|
||||||
|
* @param slot equipment slot
|
||||||
|
* @return whether this entity can use the equipment slot
|
||||||
|
*/
|
||||||
|
boolean canUseEquipmentSlot(org.bukkit.inventory.@NotNull EquipmentSlot slot);
|
||||||
|
// Paper end - Expose canUseSlot
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,6 +15,8 @@ public interface EntityEquipment {
|
||||||
*
|
*
|
||||||
* @param slot the slot to put the ItemStack
|
* @param slot the slot to put the ItemStack
|
||||||
* @param item the ItemStack to set
|
* @param item the ItemStack to set
|
||||||
|
* @throws IllegalArgumentException if the slot is invalid for the entity
|
||||||
|
* @see org.bukkit.entity.LivingEntity#canUseEquipmentSlot(EquipmentSlot)
|
||||||
*/
|
*/
|
||||||
public void setItem(@NotNull EquipmentSlot slot, @Nullable ItemStack item);
|
public void setItem(@NotNull EquipmentSlot slot, @Nullable ItemStack item);
|
||||||
|
|
||||||
|
@ -23,7 +25,9 @@ public interface EntityEquipment {
|
||||||
*
|
*
|
||||||
* @param slot the slot to put the ItemStack
|
* @param slot the slot to put the ItemStack
|
||||||
* @param item the ItemStack to set
|
* @param item the ItemStack to set
|
||||||
* @param silent whether or not the equip sound should be silenced
|
* @param silent whether the equip sound should be silenced
|
||||||
|
* @throws IllegalArgumentException if the slot is invalid for the entity
|
||||||
|
* @see org.bukkit.entity.LivingEntity#canUseEquipmentSlot(EquipmentSlot)
|
||||||
*/
|
*/
|
||||||
public void setItem(@NotNull EquipmentSlot slot, @Nullable ItemStack item, boolean silent);
|
public void setItem(@NotNull EquipmentSlot slot, @Nullable ItemStack item, boolean silent);
|
||||||
|
|
||||||
|
@ -32,6 +36,8 @@ public interface EntityEquipment {
|
||||||
*
|
*
|
||||||
* @param slot the slot to get the ItemStack
|
* @param slot the slot to get the ItemStack
|
||||||
* @return the ItemStack in the given slot
|
* @return the ItemStack in the given slot
|
||||||
|
* @throws IllegalArgumentException if the slot is invalid for the entity
|
||||||
|
* @see org.bukkit.entity.LivingEntity#canUseEquipmentSlot(EquipmentSlot)
|
||||||
*/
|
*/
|
||||||
@NotNull
|
@NotNull
|
||||||
public ItemStack getItem(@NotNull EquipmentSlot slot);
|
public ItemStack getItem(@NotNull EquipmentSlot slot);
|
||||||
|
|
|
@ -15,7 +15,7 @@ public enum EquipmentSlot {
|
||||||
/**
|
/**
|
||||||
* Only for certain entities such as horses and wolves.
|
* Only for certain entities such as horses and wolves.
|
||||||
*/
|
*/
|
||||||
BODY(() -> EquipmentSlotGroup.ARMOR);
|
BODY(() -> EquipmentSlotGroup.BODY); // Paper - add missing slot type
|
||||||
|
|
||||||
private final Supplier<EquipmentSlotGroup> group; // Supplier because of class loading order, since EquipmentSlot and EquipmentSlotGroup reference each other on class init
|
private final Supplier<EquipmentSlotGroup> group; // Supplier because of class loading order, since EquipmentSlot and EquipmentSlotGroup reference each other on class init
|
||||||
|
|
||||||
|
|
|
@ -25,7 +25,8 @@ public final class EquipmentSlotGroup implements Predicate<EquipmentSlot> {
|
||||||
public static final EquipmentSlotGroup LEGS = get("legs", EquipmentSlot.LEGS);
|
public static final EquipmentSlotGroup LEGS = get("legs", EquipmentSlot.LEGS);
|
||||||
public static final EquipmentSlotGroup CHEST = get("chest", EquipmentSlot.CHEST);
|
public static final EquipmentSlotGroup CHEST = get("chest", EquipmentSlot.CHEST);
|
||||||
public static final EquipmentSlotGroup HEAD = get("head", EquipmentSlot.HEAD);
|
public static final EquipmentSlotGroup HEAD = get("head", EquipmentSlot.HEAD);
|
||||||
public static final EquipmentSlotGroup ARMOR = get("armor", (test) -> test == EquipmentSlot.FEET || test == EquipmentSlot.LEGS || test == EquipmentSlot.CHEST || test == EquipmentSlot.HEAD, EquipmentSlot.CHEST);
|
public static final EquipmentSlotGroup ARMOR = get("armor", (test) -> test == EquipmentSlot.FEET || test == EquipmentSlot.LEGS || test == EquipmentSlot.CHEST || test == EquipmentSlot.HEAD || test == EquipmentSlot.BODY, EquipmentSlot.CHEST); // Paper - add missing slot type
|
||||||
|
public static final EquipmentSlotGroup BODY = get("body", EquipmentSlot.BODY); // Paper - add missing slot group
|
||||||
//
|
//
|
||||||
private final String key;
|
private final String key;
|
||||||
private final Predicate<EquipmentSlot> predicate;
|
private final Predicate<EquipmentSlot> predicate;
|
||||||
|
|
|
@ -95,6 +95,8 @@ public interface PlayerInventory extends Inventory {
|
||||||
* @param slot the slot to put the ItemStack
|
* @param slot the slot to put the ItemStack
|
||||||
* @param item the ItemStack to set
|
* @param item the ItemStack to set
|
||||||
*
|
*
|
||||||
|
* @throws IllegalArgumentException if the slot is invalid for the player
|
||||||
|
* @see org.bukkit.entity.LivingEntity#canUseEquipmentSlot(EquipmentSlot)
|
||||||
* @see #setItem(int, ItemStack)
|
* @see #setItem(int, ItemStack)
|
||||||
*/
|
*/
|
||||||
public void setItem(@NotNull EquipmentSlot slot, @Nullable ItemStack item);
|
public void setItem(@NotNull EquipmentSlot slot, @Nullable ItemStack item);
|
||||||
|
@ -105,6 +107,8 @@ public interface PlayerInventory extends Inventory {
|
||||||
* @param slot the slot to get the ItemStack
|
* @param slot the slot to get the ItemStack
|
||||||
*
|
*
|
||||||
* @return the ItemStack in the given slot
|
* @return the ItemStack in the given slot
|
||||||
|
* @throws IllegalArgumentException if the slot is invalid for the player
|
||||||
|
* @see org.bukkit.entity.LivingEntity#canUseEquipmentSlot(EquipmentSlot)
|
||||||
*/
|
*/
|
||||||
@NotNull // Paper
|
@NotNull // Paper
|
||||||
public ItemStack getItem(@NotNull EquipmentSlot slot);
|
public ItemStack getItem(@NotNull EquipmentSlot slot);
|
||||||
|
|
Loading…
Reference in a new issue