From 8d2a08c421df133509f4f5d2f5ec2947d65a8296 Mon Sep 17 00:00:00 2001 From: nossr50 Date: Mon, 13 May 2024 10:59:57 -0700 Subject: [PATCH] fix REGEN potion not loading --- Changelog.txt | 3 +- pom.xml | 2 +- .../com/gmail/nossr50/util/PotionUtil.java | 36 ++++++++-------- .../gmail/nossr50/util/PotionUtilTest.java | 42 ++++++++++--------- 4 files changed, 43 insertions(+), 40 deletions(-) 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