Browse Source

misc optimization

nossr50 2 weeks ago
parent
commit
2f624e329d
1 changed files with 19 additions and 6 deletions
  1. 19 6
      src/main/java/com/gmail/nossr50/listeners/EntityListener.java

+ 19 - 6
src/main/java/com/gmail/nossr50/listeners/EntityListener.java

@@ -90,13 +90,18 @@ import org.bukkit.potion.PotionEffectType;
 import org.bukkit.projectiles.ProjectileSource;
 
 public class EntityListener implements Listener {
+    private static final String MULTISHOT = "multishot";
+    private static final String PIERCING = "piercing";
+    private static final String DEEPSLATE_REDSTONE_ORE = "deepslate_redstone_ore";
+    private static final Set<String> ARMOR_STAND = Set.of("ARMOR_STAND", "armor_stand");
+    private static final Set<String> MANNEQUIN = Set.of("mannequin", "MANNEQUIN");
     private final mcMMO pluginRef;
 
     /**
      * We can use this {@link NamespacedKey} for {@link Enchantment} comparisons to check if a
      * {@link Player} has a {@link Trident} enchanted with "Piercing".
      */
-    private final NamespacedKey piercingEnchantment = NamespacedKey.minecraft("piercing");
+    private final NamespacedKey piercingEnchantment = NamespacedKey.minecraft(PIERCING);
     private final static Set<EntityType> TRANSFORMABLE_ENTITIES
             = Set.of(EntityType.SLIME, EntityType.MAGMA_CUBE);
 
@@ -206,7 +211,7 @@ public class EntityListener implements Listener {
                 CombatUtils.delayArrowMetaCleanup(arrow);
 
                 // If fired from an item with multi-shot, we need to track
-                if (ItemUtils.doesPlayerHaveEnchantmentInHands(player, "multishot")) {
+                if (ItemUtils.doesPlayerHaveEnchantmentInHands(player, MULTISHOT)) {
                     arrow.setMetadata(MetadataConstants.METADATA_KEY_MULTI_SHOT_ARROW,
                             MetadataConstants.MCMMO_METADATA_VALUE);
                 }
@@ -222,7 +227,7 @@ public class EntityListener implements Listener {
                 }
 
                 //Check both hands
-                if (ItemUtils.doesPlayerHaveEnchantmentInHands(player, "piercing")) {
+                if (ItemUtils.doesPlayerHaveEnchantmentInHands(player, PIERCING)) {
                     return;
                 }
 
@@ -283,7 +288,7 @@ public class EntityListener implements Listener {
                 entity.removeMetadata(MetadataConstants.METADATA_KEY_TRAVELING_BLOCK, pluginRef);
             }
         } else if ((block.getType() == Material.REDSTONE_ORE || block.getType().getKey().getKey()
-                .equalsIgnoreCase("deepslate_redstone_ore"))) {
+                .equalsIgnoreCase(DEEPSLATE_REDSTONE_ORE))) {
             //Redstone ore fire this event and should be ignored
         } else {
             if (mcMMO.getUserBlockTracker().isIneligible(block)) {
@@ -354,12 +359,12 @@ public class EntityListener implements Listener {
         }
 
         if (ExperienceConfig.getInstance().isArmorStandInteractionPrevented()
-                && attacker.getType().toString().toLowerCase(Locale.ENGLISH).equals("armor_stand")) {
+                && isArmorStandEntity(attacker)) {
             return;
         }
 
         if (ExperienceConfig.getInstance().isMannequinInteractionPrevented()
-                && attacker.getType().toString().toLowerCase(Locale.ENGLISH).equals("mannequin")) {
+                && isMannequinEntity(attacker)) {
             return;
         }
 
@@ -1199,4 +1204,12 @@ public class EntityListener implements Listener {
             }
         }
     }
+
+    private static boolean isMannequinEntity(Entity attacker) {
+        return MANNEQUIN.contains(attacker.getType().toString());
+    }
+
+    private static boolean isArmorStandEntity(Entity attacker) {
+        return ARMOR_STAND.contains(attacker.getType().toString());
+    }
 }