add support for using EntityType.valueOf instead of EntityType.fromName

This commit is contained in:
okx-code
2022-08-11 17:06:31 +01:00
parent bae18cf5a5
commit 810c5ac268
3 changed files with 46 additions and 1 deletions
@@ -21,7 +21,16 @@ public class MobKillsRequirement extends ProgressiveRequirement {
@SuppressWarnings("deprecation") @SuppressWarnings("deprecation")
@Override @Override
public double getProgress(Player player) { 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); return player.getStatistic(Statistic.KILL_ENTITY, entity);
} }
@@ -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));
}
}
@@ -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