Premium Lib's Disguises [Paid]

Discussion in 'Resource Discussion' started by libraryaddict, Nov 30, 2016.

  1. It's Lib's Disguises v9.9.7
    thank you for support.
     
  2. libraryaddict

    Patron

    What version is the client? You're not using viaversion or some sort are you?
     
  3. No I don't use viaversion or any other version support plugins.

    My game client version is vanilla " release 1.15.2 "
    and my server is Spigot 1.15.2-R0.1-SNAPSHOT : git-Spigot-b9baf71-e82b547 (MC: 1.15.2)
    and this is my plugins list :
    dynmap, Vault, VoxelSniper, ProtocolLib, neoPaintingSwitch, LibsDisguises, WorldEdit, and My own plugins.

    I developed NPC system in my own plugin.
    like this.

    1. NpcSpawningAndSettings.class
    Code (Text):

    package me.Npc;

    import java.util.ArrayList;
    import java.util.EnumMap;
    import java.util.EnumSet;
    import java.util.HashMap;
    import java.util.LinkedHashSet;

    import org.bukkit.Location;
    import org.bukkit.World;
    import org.bukkit.command.CommandSender;
    import org.bukkit.craftbukkit.v1_15_R1.entity.CraftWanderingTrader;
    import org.bukkit.entity.EntityType;
    import org.bukkit.entity.WanderingTrader;

    import me.WonderPathfinder.PathfinderGoalWalkToLoc;
    import me.WonderPathfinder.PathfinderUtil;
    import me.libraryaddict.disguise.DisguiseAPI;
    import me.libraryaddict.disguise.disguisetypes.Disguise;
    import me.libraryaddict.disguise.disguisetypes.DisguiseType;
    import me.libraryaddict.disguise.disguisetypes.MobDisguise;
    import me.libraryaddict.disguise.disguisetypes.PlayerDisguise;
    import net.minecraft.server.v1_15_R1.EntityCreature;
    import net.minecraft.server.v1_15_R1.EntityHuman;
    import net.minecraft.server.v1_15_R1.PathfinderGoal.Type;
    import net.minecraft.server.v1_15_R1.PathfinderGoalLookAtPlayer;
    import net.minecraft.server.v1_15_R1.PathfinderGoalSelector;
    import net.minecraft.server.v1_15_R1.PathfinderGoalWrapped;

    public class NpcSpawningAndSettings {
     
        public static HashMap<String, WanderingTrader> allNpcs = new HashMap<String, WanderingTrader>();

        public static WanderingTrader spawnNewNpc(CommandSender sender, String npcName, World world, Location spawnLoc) {
            // sender is Player or ConsoleCommandSender
            // npcName is "Miza"
            // world is npc spawn world
            // spawnLoc is npc spawn location
            if ( world == null ) {
                return null;
            }
            WanderingTrader npc = (WanderingTrader) world.spawnEntity(spawnLoc, EntityType.WANDERING_TRADER);
            DisguiseAPI.undisguiseToAll(npc);
     
            npc.setCustomName(npcName);
            npc.addScoreboardTag(npcName);
            setNpcAI(npc, spawnLoc);
       
            allNpcs.put(npcName, npc); // connecting npcName with living WanderingTrader
       
            // String skinName = npcConfig.getString("Npc." + npcName + ".Skin");
            // in the case of my screenshot, skinName is "preset:Miza"
            // and this will be connect to Miza disguise data on disguises.yml file
            // Miza: 'player §aMiza setSkin {"id":"459aa24a10184af3aab26cb5c032e39b","name":"08MoonLight80","properties":[{"name":"textures","value":"eyJ0aW1lc3RhbXAiOjE1NjI4MDY2MzI4NjAsInByb2ZpbGVJZCI6IjQ1OWFhMjRhMTAxODRhZjNhYWIyNmNiNWMwMzJlMzliIiwicHJvZmlsZU5hbWUiOiIwOE1vb25MaWdodDgwIiwic2lnbmF0dXJlUmVxdWlyZWQiOnRydWUsInRleHR1cmVzIjp7IlNLSU4iOnsidXJsIjoiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS84MzgzYmM3MDg2ZDA3ZjhhNzk1YjFlZjQxMzMyMjQyNjlmNDk2ZmQ2MThjNTQ1Zjg3NTY2NGYyNmNkYmEyNDZlIn19fQ==","signature":"nK3gFIHFBLa1MUDnAzNZHrBJPQzu9ft0t5EpONzNRJW/IXJe4LvOk7ANaOkCrJirdi06ijsQLPN9FWx903PQoj0c3inz6podEQ68KZR5D9NLJRZoWT4nkISiOekij3/6XQEQolJivLJ8FXml48X0dDCEod4MtdYPcZ97JJkpv5Lfz7n3u9X8K4dXB0gZNTKYJMsruX69cWswTng7APGb9Npu2Q80LyfFrt9+NmGfCksjWiIYEsaWtVYgbndjV/ft7u46vDSv+lEr2cIX8IV1PJYtVPJ46rwoNPDTrJjIRFn2MN69IwHk7tz/jwsG3X53RRyEKxXa0+51VadgoaFPshdSMKA4w/iuZc16+BZxYCWZrf+/lEbT0ufAXNo68YBYWIY5VHpj4A7h8ExO0CGdItWUk+kAv9tb+qsHETAlSxk+txq87wuOzVvISPWSfhPmhQbQnekUrR56m05MwXE3IebJVg3ypRKBKb+SU8ok51fhph8Emxq5vLBPFoa9RJifY2y/fIAQMwmxKyN6cdUvWwuIIpyNR3RH/jPlBpaeUtDB9zpaA6jpMVsOSh3UFQXdzib7rJY6pfQGyn0eMSXGaJAYqID7n/QpAXeWG+dWU/3MlGRnF3IdDrSyJxnQDhYbOmtd2GmtsbE13fLYYnHPUl53V7JLpBPmN3LHZtiay6Q="}]}'
            String skinName = "preset:Miza";
            if ( skinName != null ) {
                applyNpcSkin(sender, npcName, skinName);
            }
       
            return npc;
        }
       
        public static void applyNpcSkin(CommandSender sender, String npcName, String skinName) {
            // sender is Player or ConsoleCommandSender
            // npcName is "Miza"
            // skinName is "preset:Miza"
            for ( int i = 0 ; i < allNpcs.size() ; i++ ) {
                WanderingTrader npc = new ArrayList<WanderingTrader>(allNpcs.values()).get(i); // get living npc from HashMap
                String npcRawName = npc.getCustomName();
                if ( npcRawName.equalsIgnoreCase(npcName) == true ) { // checked npc
                    try {
                        if ( skinName.equals("null") == true ) {
                            DisguiseAPI.undisguiseToAll(npc);
                        } else {
                            if ( skinName.contains("preset:") == true ) {
                                skinName = skinName.replace("preset:", ""); // skinName result is "Miza"
                                Disguise customDisguise = DisguiseAPI.getCustomDisguise(skinName);
                                DisguiseAPI.disguiseEntity(npc, customDisguise );
                            } else if ( skinName.contains("mob:") == true ) {
                                String entityName = skinName.replace("mob:", "");
                                MobDisguise mobDisguise = new MobDisguise( DisguiseType.valueOf(entityName) );
                                mobDisguise.setShowName(true);
                                DisguiseAPI.disguiseEntity(npc, mobDisguise );
                            } else { // if skinName doesn't contains "preset:" string, bring the real player's skin.
                                PlayerDisguise playerDisguise = new PlayerDisguise("§a" + npcName, skinName);
                                DisguiseAPI.disguiseEntity(npc, playerDisguise );
                            }
                        }
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                    return;
                }
            }
        }
       
        public static void setNpcAI(WanderingTrader npc, Location spawnLoc) {
            // npc is Miza's WanderingTrader from allNpcs HashMap
            // spawnLoc is npc spawn location
            npc.setCustomNameVisible(true);
            npc.setMaxHealth(1000);
            if ( npc.isDead() == false && npc.getHealth() > 0 ) {
                npc.setHealth(1000);
            }
            npc.setCanPickupItems(false);
            npc.setSilent(true);
            npc.setPersistent(true);
            npc.getEquipment().setItemInMainHand(null);
            npc.getEquipment().setItemInOffHand(null);
       
            EntityCreature nmsEntity = ((CraftWanderingTrader) npc).getHandle();
            Object goalSelector = nmsEntity.goalSelector;
       
            EnumSet<Type> setB = ( (PathfinderGoalWrapped) PathfinderUtil.getPrivateField("b", PathfinderGoalSelector.class, goalSelector) ).i();
            setB.clear();
            EnumMap<Type,Object> setC = (EnumMap<Type,Object>) PathfinderUtil.getPrivateField("c", PathfinderGoalSelector.class, goalSelector);
            setC.clear();
            LinkedHashSet<?> setD = (LinkedHashSet<?>) PathfinderUtil.getPrivateField("d", PathfinderGoalSelector.class, goalSelector);
            setD.clear();
       
            nmsEntity.goalSelector.a(99, new PathfinderGoalWalkToLoc(nmsEntity, spawnLoc, 0.5F)); // npc must return to spawn location
            nmsEntity.goalSelector.a(8, new PathfinderGoalLookAtPlayer(nmsEntity, EntityHuman.class, 12.0F, 1F));
        }
       
    }
     
    2. PathfinderGoalWalkToLoc.class
    Code (Text):

    package me.Pathfinder;

    import org.bukkit.Location;

    import net.minecraft.server.v1_15_R1.EntityInsentient;
    import net.minecraft.server.v1_15_R1.Navigation;
    import net.minecraft.server.v1_15_R1.PathEntity;
    import net.minecraft.server.v1_15_R1.PathfinderGoal;

    public class PathfinderGoalWalkToLoc extends PathfinderGoal { // this is custom PathfinderGoal

        private float speed;

        private EntityInsentient entity;

        private Location loc;

        private Navigation navigation;

        public PathfinderGoalWalkToLoc(EntityInsentient entity, Location loc, float speed) {
            this.entity = entity;
            this.loc = loc;
            this.navigation = (Navigation) this.entity.getNavigation();
            this.speed = speed;
        }

        @Override
        public boolean a() {
            return true;
        }

        @Override
        public boolean b() {
            return false;
        }

        @Override
        public void c() {
            //PathEntity pathEntity = this.navigation.a(loc.getX(), loc.getY(), loc.getZ()); // 1.14.2
            PathEntity pathEntity = this.navigation.a(loc.getX(), loc.getY(), loc.getZ(), 0);
            this.navigation.a(pathEntity, speed);
        }
     
    }
     
    this is only things about Npc spawning and settings.
    Thank you for support.
     
    #1223 Warak, Feb 29, 2020
    Last edited: Feb 29, 2020
  4. libraryaddict

    Patron

    Interesting way of doing things. Not sure if your disguise is valid, can you use /disguise ingame and disguise as it fine?
    You can use /savedisguise to re-grab the disguise.
     
  5. Of course disguise to online player is no problem. head rotation works, body rotation works.
    I think disguise to WanderingTrader is the problem.
    when WanderingTrader move to other location, body rotation working.
    but when the npc move to other position only.

    I didn't use /savedisguise command. I put the disguise information to disguises.yml directly.
    like this :
    Code (Text):

    Miza: 'player §aMiza setSkin {"id":"459aa24a10184af3aab26cb5c032e39b","name":"08MoonLight80","properties":[{"name":"textures","value":"eyJ0aW1lc3RhbXAiOjE1NjI4MDY2MzI4NjAsInByb2ZpbGVJZCI6IjQ1OWFhMjRhMTAxODRhZjNhYWIyNmNiNWMwMzJlMzliIiwicHJvZmlsZU5hbWUiOiIwOE1vb25MaWdodDgwIiwic2lnbmF0dXJlUmVxdWlyZWQiOnRydWUsInRleHR1cmVzIjp7IlNLSU4iOnsidXJsIjoiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS84MzgzYmM3MDg2ZDA3ZjhhNzk1YjFlZjQxMzMyMjQyNjlmNDk2ZmQ2MThjNTQ1Zjg3NTY2NGYyNmNkYmEyNDZlIn19fQ==","signature":"nK3gFIHFBLa1MUDnAzNZHrBJPQzu9ft0t5EpONzNRJW/IXJe4LvOk7ANaOkCrJirdi06ijsQLPN9FWx903PQoj0c3inz6podEQ68KZR5D9NLJRZoWT4nkISiOekij3/6XQEQolJivLJ8FXml48X0dDCEod4MtdYPcZ97JJkpv5Lfz7n3u9X8K4dXB0gZNTKYJMsruX69cWswTng7APGb9Npu2Q80LyfFrt9+NmGfCksjWiIYEsaWtVYgbndjV/ft7u46vDSv+lEr2cIX8IV1PJYtVPJ46rwoNPDTrJjIRFn2MN69IwHk7tz/jwsG3X53RRyEKxXa0+51VadgoaFPshdSMKA4w/iuZc16+BZxYCWZrf+/lEbT0ufAXNo68YBYWIY5VHpj4A7h8ExO0CGdItWUk+kAv9tb+qsHETAlSxk+txq87wuOzVvISPWSfhPmhQbQnekUrR56m05MwXE3IebJVg3ypRKBKb+SU8ok51fhph8Emxq5vLBPFoa9RJifY2y/fIAQMwmxKyN6cdUvWwuIIpyNR3RH/jPlBpaeUtDB9zpaA6jpMVsOSh3UFQXdzib7rJY6pfQGyn0eMSXGaJAYqID7n/QpAXeWG+dWU/3MlGRnF3IdDrSyJxnQDhYbOmtd2GmtsbE13fLYYnHPUl53V7JLpBPmN3LHZtiay6Q="}]}'
     
    It was fine when minecraft 1.14 version. I found this problem since minecraft 1.15 version.
     
  6. libraryaddict

    Patron

    Ah wait, your only issue is with the body not rotating when the entity disguised as a player, looks at something?
    Use the latest dev build and see if that works for you.
     
  7. Wow, Build #433 working great! body rotation working!
    You're really brilliant! Thank you so much!
     
  8. libraryaddict

    Patron

    libraryaddict updated Lib's Disguises with a new update entry:

    Released 9.9.8 for 1.12, 1.13, 1.14 and 1.15

    Read the rest of this update entry...
     
  9. libraryaddict

    Patron

  10. Quick Question Can i update my current Libs or need to download a new copy Current

    LibsDisguise v9.9.8
     
  11. libraryaddict

    Patron

    I don't understand the question.

    You have to redownload Lib's Disguises to update it, there's no automatic updates.
     
  12. Heya, I just happened to see this in my console. I don't actually see any players running disguise commands or anything around it (if that helps).

    9.9.9 libs, paper 1.15.2


    Code (Text):
    >.... [08:54:26 WARN]: java.lang.IllegalArgumentException: No suitable constructor could be found.
    >.... [08:54:26 WARN]: at com.comphenix.protocol.injector.PacketConstructor.withPacket(PacketConstructor.java:179)
    >.... [08:54:26 WARN]: at com.comphenix.protocol.injector.PacketFilterManager.createPacketConstructor(PacketFilterManager.java:902)
    >.... [08:54:26 WARN]: at me.libraryaddict.disguise.utilities.DisguiseUtilities.sendSelfDisguise(DisguiseUtilities.java:1780)
    >.... [08:54:26 WARN]: at me.libraryaddict.disguise.utilities.DisguiseUtilities.setupFakeDisguise(DisguiseUtilities.java:1915)
    >.... [08:54:26 WARN]: at me.libraryaddict.disguise.DisguiseListener$4.run(DisguiseListener.java:763)
    >.... [08:54:26 WARN]: at org.bukkit.craftbukkit.v1_15_R1.scheduler.CraftTask.run(CraftTask.java:84)
    >.... [08:54:26 WARN]: at org.bukkit.craftbukkit.v1_15_R1.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:452)
    >.... [08:54:26 WARN]: at net.minecraft.server.v1_15_R1.MinecraftServer.b(MinecraftServer.java:1185)
    >.... [08:54:26 WARN]: at net.minecraft.server.v1_15_R1.DedicatedServer.b(DedicatedServer.java:430)
    >.... [08:54:26 WARN]: at net.minecraft.server.v1_15_R1.MinecraftServer.a(MinecraftServer.java:1112)
    >.... [08:54:26 WARN]: at net.minecraft.server.v1_15_R1.MinecraftServer.run(MinecraftServer.java:934)
    >.... [08:54:26 WARN]: at java.lang.Thread.run(Thread.java:748)
    >.... [08:54:26 WARN]: Caused by: java.lang.NullPointerException
    >.... [08:54:26 WARN]: at com.comphenix.protocol.wrappers.BukkitConverters.lambda$asUnwrapper$0(BukkitConverters.java:1023)
    >.... [08:54:26 WARN]: at com.comphenix.protocol.injector.PacketConstructor.withPacket(PacketConstructor.java:143)
    >.... [08:54:26 WARN]: ... 11 more
     
  13. libraryaddict

    Patron

    Should be fixed in latest build, semi-rare apparently. Not sure why it was caused exactly, but it would've effected self disguises slightly, noticeably for the armor.
     
  14. Aw thanks lib! Fast reply :D
     
  15. Hi there is an error message on spigot 1.12.2.

    Code (Text):
    [20:31:38 INFO]: Server version: 11202
    [20:31:38 INFO]: [LibsDisguises] Enabling LibsDisguises v9.9.9
    [20:31:39 INFO]: [LibsDisguises] Discovered nms version: v1_12_R1
    [20:31:39 INFO]: [LibsDisguises] Jenkins Build: #444
    [20:31:39 INFO]: [LibsDisguises] Build Date: 08/03/2020 20:05
    [20:31:39 INFO]: [LibsDisguises] Registered to: 397758 (39)
    [20:31:39 INFO]: [LibsDisguises] Premium enabled, thank you for supporting Lib's Disguises!
    [20:31:40 WARN]: java.lang.NoClassDefFoundError: org/bukkit/entity/Villager$Type
    [20:31:40 WARN]:        at java.lang.Class.getDeclaredMethods0(Native Method)
    [20:31:40 WARN]:        at java.lang.Class.privateGetDeclaredMethods(Class.java:2701)
    [20:31:40 WARN]:        at java.lang.Class.privateGetMethodRecursive(Class.java:3048)
    [20:31:40 WARN]:        at java.lang.Class.getMethod0(Class.java:3018)
    [20:31:40 WARN]:        at java.lang.Class.getMethod(Class.java:1784)
    [20:31:40 WARN]:        at me.libraryaddict.disguise.utilities.watchers.DisguiseMethods.<init>(DisguiseMethods.java:92)
    [20:31:40 WARN]:        at me.libraryaddict.disguise.utilities.params.ParamInfoManager.<clinit>(ParamInfoManager.java:86)
    [20:31:40 WARN]:        at me.libraryaddict.disguise.utilities.translations.TranslateFiller.fillConfigs(TranslateFiller.java:20)
    [20:31:40 WARN]:        at me.libraryaddict.disguise.utilities.translations.TranslateType.refreshTranslations(TranslateType.java:44)
    [20:31:40 WARN]:        at me.libraryaddict.disguise.DisguiseConfig.setUseTranslations(DisguiseConfig.java:293)
    [20:31:40 WARN]:        at me.libraryaddict.disguise.DisguiseConfig.loadConfig(DisguiseConfig.java:380)
    [20:31:40 WARN]:        at me.libraryaddict.disguise.LibsDisguises.onEnable(LibsDisguises.java:104)
    [20:31:40 WARN]:        at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:264)
    [20:31:40 WARN]:        at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:337)
    [20:31:40 WARN]:        at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:403)
    [20:31:40 WARN]:        at org.bukkit.craftbukkit.v1_12_R1.CraftServer.enablePlugin(CraftServer.java:381)
    [20:31:40 WARN]:        at org.bukkit.craftbukkit.v1_12_R1.CraftServer.enablePlugins(CraftServer.java:330)
    [20:31:40 WARN]:        at net.minecraft.server.v1_12_R1.MinecraftServer.t(MinecraftServer.java:422)
    [20:31:40 WARN]:        at net.minecraft.server.v1_12_R1.MinecraftServer.l(MinecraftServer.java:383)
    [20:31:40 WARN]:        at net.minecraft.server.v1_12_R1.MinecraftServer.a(MinecraftServer.java:338)
    [20:31:40 WARN]:        at net.minecraft.server.v1_12_R1.DedicatedServer.init(DedicatedServer.java:272)
    [20:31:40 WARN]:        at net.minecraft.server.v1_12_R1.MinecraftServer.run(MinecraftServer.java:545)
    [20:31:40 WARN]:        at java.lang.Thread.run(Thread.java:748)
    [20:31:40 WARN]: Caused by: java.lang.ClassNotFoundException: org.bukkit.entity.Villager$Type
    [20:31:40 WARN]:        at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:105)
    [20:31:40 WARN]:        at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:100)
    [20:31:40 WARN]:        at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    [20:31:40 WARN]:        at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    [20:31:40 WARN]:        ... 23 more
    [20:31:40 ERROR]: [LibsDisguises] §cError while loading custom disguise 'libraryaddict': §cCannot find the option 'setSkin'
    [20:31:40 ERROR]: [LibsDisguises] Failed to load 1 custom disguises
     
    Code (Text):
    [20:38:06 WARN]: java.lang.reflect.InvocationTargetException
    [20:38:06 WARN]:        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    [20:38:06 WARN]:        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    [20:38:06 WARN]:        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    [20:38:06 WARN]:        at java.lang.reflect.Method.invoke(Method.java:498)
    [20:38:06 WARN]:        at me.libraryaddict.disguise.utilities.parser.DisguiseParser.callMethods(DisguiseParser.java:852)
    [20:38:06 WARN]:        at me.libraryaddict.disguise.utilities.parser.DisguiseParser.parseDisguise(DisguiseParser.java:765)
    [20:38:06 WARN]:        at me.libraryaddict.disguise.utilities.parser.DisguiseParser.parseTestDisguise(DisguiseParser.java:525)
    [20:38:06 WARN]:        at me.libraryaddict.disguise.DisguiseConfig.addCustomDisguise(DisguiseConfig.java:506)
    [20:38:06 WARN]:        at me.libraryaddict.disguise.DisguiseConfig.loadCustomDisguises(DisguiseConfig.java:475)
    [20:38:06 WARN]:        at me.libraryaddict.disguise.DisguiseConfig.loadConfig(DisguiseConfig.java:413)
    [20:38:06 WARN]:        at me.libraryaddict.disguise.commands.LibsDisguisesCommand.onCommand(LibsDisguisesCommand.java:106)
    [20:38:06 WARN]:        at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44)
    [20:38:06 WARN]:        at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:141)
    [20:38:06 WARN]:        at org.bukkit.craftbukkit.v1_12_R1.CraftServer.dispatchCommand(CraftServer.java:648)
    [20:38:06 WARN]:        at org.bukkit.craftbukkit.v1_12_R1.CraftServer.dispatchServerCommand(CraftServer.java:634)
    [20:38:06 WARN]:        at net.minecraft.server.v1_12_R1.DedicatedServer.aP(DedicatedServer.java:444)
    [20:38:06 WARN]:        at net.minecraft.server.v1_12_R1.DedicatedServer.D(DedicatedServer.java:407)
    [20:38:06 WARN]:        at net.minecraft.server.v1_12_R1.MinecraftServer.C(MinecraftServer.java:679)
    [20:38:06 WARN]:        at net.minecraft.server.v1_12_R1.MinecraftServer.run(MinecraftServer.java:577)
    [20:38:06 WARN]:        at java.lang.Thread.run(Thread.java:748)
    [20:38:06 WARN]: Caused by: java.lang.IllegalArgumentException: You can't do that in this version of Minecraft! I can't use ENTITY_POSE!
    [20:38:06 WARN]:        at me.libraryaddict.disguise.disguisetypes.FlagWatcher.setData(FlagWatcher.java:636)
    [20:38:06 WARN]:        at me.libraryaddict.disguise.disguisetypes.FlagWatcher.setEntityPose(FlagWatcher.java:205)
    [20:38:06 WARN]:        at me.libraryaddict.disguise.disguisetypes.FlagWatcher.updatePose(FlagWatcher.java:624)
    [20:38:06 WARN]:        at me.libraryaddict.disguise.disguisetypes.FlagWatcher.setSneaking(FlagWatcher.java:402)
    [20:38:06 WARN]:        ... 20 more
     
  16. libraryaddict

    Patron

    Can you provide the entire startup log please
     
  17. Code (Text):
      ExplicitDisguises: true
    Does not seem to work on version 9.9.9 running paper 1.15.2. Players can still use things like sethealth -1 to make themselves invisible or set their state to burning.
     
  18. libraryaddict

    Patron

    What are their permissions though?
     
  19. libsdisguises.disguise.pillager
    libsdisguises.disguise.panda
    libsdisguises.seecmd.viewself (true)
    libsdisguises.undisguise (true)
     
  20. libraryaddict

    Patron

    Going to have to ask you to verify that, as well as verify explicit permission is enabled.
    The plugin has a test case which passes.