瀏覽代碼

fix REGEN potion not loading

nossr50 1 年之前
父節點
當前提交
8d2a08c421
共有 4 個文件被更改,包括 43 次插入40 次删除
  1. 2 1
      Changelog.txt
  2. 1 1
      pom.xml
  3. 17 19
      src/main/java/com/gmail/nossr50/util/PotionUtil.java
  4. 23 19
      src/test/java/com/gmail/nossr50/util/PotionUtilTest.java

+ 2 - 1
Changelog.txt

@@ -1,6 +1,7 @@
 Version 2.2.010
     # TODO: Fix not moving mcMMO custom ingredients from hopper -> brewing stand
     # TODO: Fix some potions are not rewarding XP ( strength 2, etc )
+    Fixed being unable to load REGEN potion type on new versions of Paper/Spigot 1.20.6
     BrewingStand now remember who owns them, this persists across restarts (see notes)
     Fixed rare NPE in mcMMO events when player data was unable to be retrieved
     Fixed a NPE that could happen when damaging armor with Axes
@@ -39,7 +40,7 @@ Version 2.2.010
 
     NOTES:
     You can now use hoppers and brewing stands and not have to worry about having to re-interact with the brewing stand over and over again
-    This is not an exhaustive list of API changes in this update, but most of them should be documented here.
+    This is not an exhaustive list of API changes in this update, but most of the important ones should be documented here.
 
 Version 2.2.009
     Fixed a bug that prevented mcMMO from loading on MC versions older than 1.20.6

+ 1 - 1
pom.xml

@@ -374,7 +374,7 @@
         <dependency>
             <groupId>org.spigotmc</groupId>
             <artifactId>spigot-api</artifactId>
-            <version>1.20.5-R0.1-SNAPSHOT</version>
+            <version>1.20.6-R0.1-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
         <dependency>

+ 17 - 19
src/main/java/com/gmail/nossr50/util/PotionUtil.java

@@ -71,10 +71,10 @@ public class PotionUtil {
      * @return The potion type
      */
     public static PotionType matchPotionType(String partialName, boolean isUpgraded, boolean isExtended) {
+        String updatedName = convertLegacyNames(partialName).toUpperCase();
         if (COMPATIBILITY_MODE == PotionCompatibilityType.PRE_1_20_5) {
-            return matchLegacyPotionType(partialName);
+            return matchLegacyPotionType(updatedName);
         } else {
-            String updatedName = convertLegacyNames(partialName);
             return Arrays.stream(PotionType.values())
                     .filter(potionType -> getKeyGetKey(potionType).toUpperCase().contains(partialName)
                                 || getKeyGetKey(potionType).toUpperCase().contains(convertLegacyNames(updatedName)))
@@ -84,6 +84,21 @@ public class PotionUtil {
         }
     }
 
+    /**
+     * Legacy matching for {@link PotionType}
+     *
+     * @param name The partial name of the potion
+     * @return The potion type
+     */
+    private static PotionType matchLegacyPotionType(String name) {
+        return Arrays.stream(PotionType.values())
+                .filter(potionType -> getKeyGetKey(potionType).equalsIgnoreCase(name)
+                        || getKeyGetKey(potionType).equalsIgnoreCase(convertLegacyNames(name))
+                        || potionType.name().equalsIgnoreCase(name)
+                        || potionType.name().equalsIgnoreCase(convertLegacyNames(name)))
+                .findAny().orElse(null);
+    }
+
     public static String getKeyGetKey(PotionType potionType) {
         try {
             if (getKeyMethod() != null) {
@@ -201,23 +216,6 @@ public class PotionUtil {
         }
     }
 
-    /**
-     * Legacy matching for {@link PotionType}
-     *
-     * @param partialName The partial name of the potion
-     * @return The potion type
-     */
-    private static PotionType matchLegacyPotionType(String partialName) {
-        String updatedName = convertLegacyNames(partialName);
-
-        return Arrays.stream(PotionType.values())
-                .filter(potionType -> getKeyGetKey(potionType).equalsIgnoreCase(partialName)
-                        || getKeyGetKey(potionType).equalsIgnoreCase(convertLegacyNames(updatedName))
-                        || potionType.name().equalsIgnoreCase(partialName)
-                        || potionType.name().equalsIgnoreCase(convertLegacyNames(updatedName)))
-                .findAny().orElse(null);
-    }
-
     public static String convertPotionConfigName(String legacyName) {
         String replacementName = legacyName;
 

+ 23 - 19
src/test/java/com/gmail/nossr50/util/PotionUtilTest.java

@@ -1,35 +1,39 @@
 package com.gmail.nossr50.util;
 
+import org.bukkit.potion.PotionType;
 import org.junit.jupiter.api.Test;
 
 import static com.gmail.nossr50.util.PotionUtil.convertLegacyNames;
+import static com.gmail.nossr50.util.PotionUtil.matchPotionType;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 
 class PotionUtilTest {
 
-//    @Test
-//    void testMatchPotionType() {
-//        String potionTypeStr = "UNCRAFTABLE";
-//        PotionType potionType = matchPotionType(potionTypeStr, false, false);
-//        assertEquals(PotionType.WATER, potionType);
-//
-//        String potionTypeStr2 = "NIGHT_VISION";
-//        PotionType potionType2 = matchPotionType(potionTypeStr2, false, false);
-//        assertEquals(PotionType.NIGHT_VISION, potionType2);
-//
-//        String nightVisionLong = "NIGHT_VISION";
-//        PotionType potionType3 = matchPotionType(nightVisionLong, false, true);
-//        assertEquals(PotionType.LONG_NIGHT_VISION, potionType3);
-//
-//        nightVisionLong = "LONG_NIGHT_VISION";
-//        potionType3 = matchPotionType(nightVisionLong, false, true);
-//        assertEquals(PotionType.LONG_NIGHT_VISION, potionType3);
-//    }
+    @Test
+    void testMatchPotionTypeRegen() {
+        final String potionTypeStr = "REGEN";
+        final PotionType potionType = matchPotionType(potionTypeStr, false, false);
+        assertEquals(PotionType.REGENERATION, potionType);
+    }
+
+    @Test
+    void testMatchPotionTypeUncraftable() {
+        final String potionTypeStr = "UNCRAFTABLE";
+        final PotionType potionType = matchPotionType(potionTypeStr, false, false);
+        assertEquals(PotionType.MUNDANE, potionType);
+    }
 
     @Test
-    void testConvertLegacyNames() {
+    void testConvertLegacyNamesUncraftable() {
         final String potionTypeStr = "UNCRAFTABLE";
         final String converted = convertLegacyNames(potionTypeStr);
         assertEquals("MUNDANE", converted);
     }
+
+    @Test
+    void testConvertLegacyNamesRegen() {
+        final String potionTypeStr = "REGEN";
+        final String converted = convertLegacyNames(potionTypeStr);
+        assertEquals("REGENERATION", converted);
+    }
 }