From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: SoSeDiK <mrsosedik@gmail.com>
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 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
--- a/src/main/java/org/bukkit/inventory/EquipmentSlot.java
+++ b/src/main/java/org/bukkit/inventory/EquipmentSlot.java
@@ -0,0 +0,0 @@ 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
 }
