From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: SoSeDiK Date: Sun, 16 Oct 2022 15:28:49 +0300 Subject: [PATCH] Add EquipmentSlot convenience methods diff --git a/src/main/java/org/bukkit/inventory/EquipmentSlot.java b/src/main/java/org/bukkit/inventory/EquipmentSlot.java index 5642d8af60b6649497aba9b0f6ab7bba7702b9ee..c1c69ba4c361740f0ad422a7840a7f0f055c186a 100644 --- a/src/main/java/org/bukkit/inventory/EquipmentSlot.java +++ b/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 }