From 810c5ac2682117860ec363377bd712377b59a722 Mon Sep 17 00:00:00 2001 From: okx-code Date: Thu, 11 Aug 2022 17:06:31 +0100 Subject: [PATCH] add support for using EntityType.valueOf instead of EntityType.fromName --- .../requirement/MobKillsRequirement.java | 11 ++++++- .../MobKillsRequirementsTest.java | 30 +++++++++++++++++++ .../mobkillsrequirements/rankups.yml | 6 ++++ 3 files changed, 46 insertions(+), 1 deletion(-) create mode 100644 src/test/java/sh/okx/rankup/requirements/MobKillsRequirementsTest.java create mode 100644 src/test/resources/mobkillsrequirements/rankups.yml diff --git a/src/main/java/sh/okx/rankup/requirements/requirement/MobKillsRequirement.java b/src/main/java/sh/okx/rankup/requirements/requirement/MobKillsRequirement.java index 77ef457..4406c6e 100644 --- a/src/main/java/sh/okx/rankup/requirements/requirement/MobKillsRequirement.java +++ b/src/main/java/sh/okx/rankup/requirements/requirement/MobKillsRequirement.java @@ -21,7 +21,16 @@ public class MobKillsRequirement extends ProgressiveRequirement { @SuppressWarnings("deprecation") @Override public double getProgress(Player player) { - EntityType entity = Objects.requireNonNull(EntityType.fromName(getSub()), "Invalid entity type '" + getSub() + "' in mob-kills requirement."); + EntityType entity = EntityType.fromName(getSub()); + if (entity == null) { + EntityType entityFromId; + try { + entityFromId = EntityType.valueOf(getSub().toUpperCase()); + } catch (IllegalArgumentException e) { + entityFromId = null; + } + entity = Objects.requireNonNull(entityFromId, "Invalid entity type '" + getSub() + "' in mob-kills requirement."); + } return player.getStatistic(Statistic.KILL_ENTITY, entity); } diff --git a/src/test/java/sh/okx/rankup/requirements/MobKillsRequirementsTest.java b/src/test/java/sh/okx/rankup/requirements/MobKillsRequirementsTest.java new file mode 100644 index 0000000..b078df1 --- /dev/null +++ b/src/test/java/sh/okx/rankup/requirements/MobKillsRequirementsTest.java @@ -0,0 +1,30 @@ +package sh.okx.rankup.requirements; + +import static org.junit.jupiter.api.Assertions.*; + +import be.seeseemelk.mockbukkit.entity.PlayerMock; +import org.bukkit.Statistic; +import org.bukkit.entity.EntityType; +import org.junit.jupiter.api.Test; +import sh.okx.rankup.RankupTest; +import sh.okx.rankup.ranks.Rank; + +public class MobKillsRequirementsTest extends RankupTest { + + public MobKillsRequirementsTest() { + super("mobkillsrequirements"); + } + + @Test + public void testPrestigeRequirements() { + PlayerMock player = server.addPlayer(); + + player.setStatistic(Statistic.KILL_ENTITY, EntityType.SNOWMAN, 2); + player.setStatistic(Statistic.KILL_ENTITY, EntityType.MUSHROOM_COW, 1); + + Rank rank = plugin.getRankups().getFirst(); + + assertEquals(3 - 2, rank.getRequirement(player, "mob-kills#snow_golem").getRemaining(player)); + assertEquals(3 - 1, rank.getRequirement(player, "mob-kills#mushroom_cow").getRemaining(player)); + } +} diff --git a/src/test/resources/mobkillsrequirements/rankups.yml b/src/test/resources/mobkillsrequirements/rankups.yml new file mode 100644 index 0000000..b86adaa --- /dev/null +++ b/src/test/resources/mobkillsrequirements/rankups.yml @@ -0,0 +1,6 @@ +a: + rank: 'A' + next: 'B' + requirements: + - 'mob-kills snow_golem 3' # entity name + - 'mob-kills mushroom_cow 3' # entity enum value \ No newline at end of file