From d533ea2226144a86406eda53e7b723ad4e7f8e00 Mon Sep 17 00:00:00 2001 From: SoSeDiK Date: Sun, 16 Oct 2022 15:28:49 +0300 Subject: [PATCH] Add EquipmentSlot convenience methods --- .../org/bukkit/inventory/EquipmentSlot.java | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/paper-api/src/main/java/org/bukkit/inventory/EquipmentSlot.java b/paper-api/src/main/java/org/bukkit/inventory/EquipmentSlot.java index 5642d8af6..c1c69ba4c 100644 --- a/paper-api/src/main/java/org/bukkit/inventory/EquipmentSlot.java +++ b/paper-api/src/main/java/org/bukkit/inventory/EquipmentSlot.java @@ -33,4 +33,42 @@ public enum EquipmentSlot { public EquipmentSlotGroup getGroup() { return group.get(); } + // Paper start + /** + * Checks whether this equipment slot is a hand: + * either {@link #HAND} or {@link #OFF_HAND} + * + * @return whether this is a hand slot + */ + public boolean isHand() { + return this == HAND || this == OFF_HAND; + } + + /** + * Gets the opposite hand + * + * @return the opposite hand + * @throws IllegalArgumentException if this equipment slot is not a hand + * @see #isHand() + */ + public @NotNull EquipmentSlot getOppositeHand() { + return switch (this) { + case HAND -> OFF_HAND; + case OFF_HAND -> HAND; + default -> throw new IllegalArgumentException("Unable to determine an opposite hand for equipment slot: " + name()); + }; + } + + /** + * Checks whether this equipment slot + * is one of the armor slots: + * {@link #HEAD}, {@link #CHEST}, + * {@link #LEGS}, {@link #FEET}, or {@link #BODY} + * + * @return whether this is an armor slot + */ + public boolean isArmor() { + return this == HEAD || this == CHEST || this == LEGS || this == FEET || this == BODY; + } + // Paper end }