From f52d0fa17ddb473fbe0233531b69552bade43557 Mon Sep 17 00:00:00 2001 From: libraryaddict Date: Sun, 23 Feb 2020 11:30:56 +1300 Subject: [PATCH] Use another method to get entity classes, due to inferior jar system someone is using --- .../commands/DisguiseRadiusCommand.java | 11 +++++-- .../translations/TranslateFiller.java | 29 ++++++++++++------- 2 files changed, 27 insertions(+), 13 deletions(-) diff --git a/src/main/java/me/libraryaddict/disguise/commands/DisguiseRadiusCommand.java b/src/main/java/me/libraryaddict/disguise/commands/DisguiseRadiusCommand.java index 7460f4d0..4a133f9f 100644 --- a/src/main/java/me/libraryaddict/disguise/commands/DisguiseRadiusCommand.java +++ b/src/main/java/me/libraryaddict/disguise/commands/DisguiseRadiusCommand.java @@ -33,9 +33,16 @@ public class DisguiseRadiusCommand extends DisguiseBaseCommand implements TabCom public DisguiseRadiusCommand(int maxRadius) { this.maxRadius = maxRadius; - for (Class c : ClassGetter.getClassesForPackage("org.bukkit.entity")) { - if (c != Entity.class && Entity.class.isAssignableFrom(c) && c.getAnnotation(Deprecated.class) == null) { + + validClasses.add(Entity.class); + + for (EntityType type : EntityType.values()) { + Class c = type.getEntityClass(); + + while (!validClasses.contains(c)) { validClasses.add(c); + + c = c.getSuperclass(); } } } diff --git a/src/main/java/me/libraryaddict/disguise/utilities/translations/TranslateFiller.java b/src/main/java/me/libraryaddict/disguise/utilities/translations/TranslateFiller.java index ede54d8c..fb844d29 100644 --- a/src/main/java/me/libraryaddict/disguise/utilities/translations/TranslateFiller.java +++ b/src/main/java/me/libraryaddict/disguise/utilities/translations/TranslateFiller.java @@ -7,8 +7,10 @@ import me.libraryaddict.disguise.utilities.params.ParamInfoManager; import me.libraryaddict.disguise.utilities.reflection.ClassGetter; import org.apache.commons.lang.StringUtils; import org.bukkit.entity.Entity; +import org.bukkit.entity.EntityType; import java.lang.reflect.Method; +import java.util.ArrayList; /** * Created by libraryaddict on 10/06/2017. @@ -81,19 +83,24 @@ public class TranslateFiller { TranslateType.DISGUISE_OPTIONS.save("baby", "Used as a shortcut for setBaby when disguising an entity"); TranslateType.DISGUISE_OPTIONS.save("adult", "Used as a shortcut for setBaby(false) when disguising an entity"); - try { - for (Class c : ClassGetter.getClassesForPackage("org.bukkit.entity")) { - if (c != Entity.class && Entity.class.isAssignableFrom(c) && - c.getAnnotation(Deprecated.class) == null) { - TranslateType.DISGUISES.save(c.getSimpleName(), - "Name for the " + c.getSimpleName() + " EntityType, " + "this is used in radius commands"); - } + ArrayList validClasses = new ArrayList<>(); + validClasses.add(Entity.class); + + for (EntityType type : EntityType.values()) { + Class c = type.getEntityClass(); + + while (!validClasses.contains(c)) { + validClasses.add(c); + + c = c.getSuperclass(); } } - catch (Exception ex) { - DisguiseUtilities.getLogger() - .severe("Error while trying to read entity types, assuming you're using a weird jar loader and " + - "not making this fatal.."); + + for (Class c : validClasses) { + if (c != Entity.class && Entity.class.isAssignableFrom(c) && c.getAnnotation(Deprecated.class) == null) { + TranslateType.DISGUISES.save(c.getSimpleName(), + "Name for the " + c.getSimpleName() + " EntityType, " + "this is used in radius commands"); + } } TranslateType.DISGUISES.save("EntityType", "Used for the disgiuse radius command to list all entitytypes");