diff --git a/Changelog.txt b/Changelog.txt
index c8c2107ae..0cd3c8ce6 100644
--- a/Changelog.txt
+++ b/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
diff --git a/pom.xml b/pom.xml
index 294edc426..38bb18f62 100644
--- a/pom.xml
+++ b/pom.xml
@@ -374,7 +374,7 @@
org.spigotmc
spigot-api
- 1.20.5-R0.1-SNAPSHOT
+ 1.20.6-R0.1-SNAPSHOT
provided
diff --git a/src/main/java/com/gmail/nossr50/util/PotionUtil.java b/src/main/java/com/gmail/nossr50/util/PotionUtil.java
index 0661cd487..739059787 100644
--- a/src/main/java/com/gmail/nossr50/util/PotionUtil.java
+++ b/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;
diff --git a/src/test/java/com/gmail/nossr50/util/PotionUtilTest.java b/src/test/java/com/gmail/nossr50/util/PotionUtilTest.java
index d60c0f7cb..e3e5dae20 100644
--- a/src/test/java/com/gmail/nossr50/util/PotionUtilTest.java
+++ b/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 testConvertLegacyNames() {
+ void testMatchPotionTypeUncraftable() {
+ final String potionTypeStr = "UNCRAFTABLE";
+ final PotionType potionType = matchPotionType(potionTypeStr, false, false);
+ assertEquals(PotionType.MUNDANE, potionType);
+ }
+
+ @Test
+ 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);
+ }
}
\ No newline at end of file