diff --git a/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/Disguise.java b/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/Disguise.java index d324ebc4..31ca5746 100644 --- a/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/Disguise.java +++ b/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/Disguise.java @@ -806,6 +806,8 @@ public abstract class Disguise { removeBossBar(); } + DisguiseUtilities.saveDisguises(getEntity()); + return true; } @@ -1035,6 +1037,7 @@ public abstract class Disguise { } makeBossBar(); + DisguiseUtilities.saveDisguises(getEntity()); return true; } diff --git a/plugin/src/main/java/me/libraryaddict/disguise/utilities/DisguiseUtilities.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/DisguiseUtilities.java index 5f1a9ac8..f157b34b 100644 --- a/plugin/src/main/java/me/libraryaddict/disguise/utilities/DisguiseUtilities.java +++ b/plugin/src/main/java/me/libraryaddict/disguise/utilities/DisguiseUtilities.java @@ -811,6 +811,8 @@ public class DisguiseUtilities { if (disg.getEntity() instanceof Player ? !DisguiseConfig.isSavePlayerDisguises() : !DisguiseConfig.isSaveEntityDisguises()) { + // Save empty array, clear any saved disguises + saveDisguises(disg.getEntity(), new Disguise[0]); break; } @@ -862,11 +864,20 @@ public class DisguiseUtilities { } } + public static void saveDisguises(Entity owningEntity) { + saveDisguises(owningEntity, DisguiseAPI.getDisguises(owningEntity)); + } + public static void saveDisguises(Entity owningEntity, Disguise[] disguise) { if (!LibsPremium.isPremium()) { return; } + // If the disguises should not be saved + if (!(owningEntity instanceof Player ? DisguiseConfig.isSavePlayerDisguises() : DisguiseConfig.isSaveEntityDisguises())) { + disguise = new Disguise[0]; + } + if (!NmsVersion.v1_14.isSupported()) { saveDisguises(owningEntity.getUniqueId(), disguise); return; @@ -932,36 +943,23 @@ public class DisguiseUtilities { } } - @Deprecated - public static Disguise[] getSavedDisguises(UUID entityUUID) { - return getSavedDisguises(entityUUID, false); - } - public static Disguise[] getSavedDisguises(Entity entity) { - return getSavedDisguises(entity, false); - } - - public static Disguise[] getSavedDisguises(Entity entity, boolean remove) { if (!LibsPremium.isPremium()) { return new Disguise[0]; } if (!NmsVersion.v1_14.isSupported()) { - return getSavedDisguises(entity.getUniqueId(), remove); + return getSavedDisguises(entity.getUniqueId()); } PersistentDataContainer container = entity.getPersistentDataContainer(); String data = container.get(savedDisguisesKey, PersistentDataType.STRING); if (data == null) { - return getSavedDisguises(entity.getUniqueId(), remove); + return getSavedDisguises(entity.getUniqueId()); } try { - if (remove) { - container.remove(savedDisguisesKey); - } - Disguise[] disguises = loadDisguises(data); if (disguises == null) { @@ -970,11 +968,9 @@ public class DisguiseUtilities { return disguises; } catch (Throwable e) { - if (!remove) { - container.remove(savedDisguisesKey); - } + container.remove(savedDisguisesKey); - getLogger().severe("Malformed disguise for " + entity.getUniqueId() + "(" + data + ")"); + getLogger().severe("Malformed disguise for " + entity.getUniqueId() + "(" + data + "). Data has been removed."); e.printStackTrace(); } @@ -982,7 +978,7 @@ public class DisguiseUtilities { } @Deprecated - public static Disguise[] getSavedDisguises(UUID entityUUID, boolean remove) { + public static Disguise[] getSavedDisguises(UUID entityUUID) { if (!isSavedDisguise(entityUUID) || !LibsPremium.isPremium()) { return new Disguise[0]; } @@ -1011,10 +1007,6 @@ public class DisguiseUtilities { cached = reader.lines().collect(Collectors.joining("\n")); } - if (remove) { - removeSavedDisguise(entityUUID); - } - Disguise[] disguises; if (cached.isEmpty()) { diff --git a/plugin/src/main/java/me/libraryaddict/disguise/utilities/listeners/DisguiseListener.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/listeners/DisguiseListener.java index 4a4782ed..b741ad8c 100644 --- a/plugin/src/main/java/me/libraryaddict/disguise/utilities/listeners/DisguiseListener.java +++ b/plugin/src/main/java/me/libraryaddict/disguise/utilities/listeners/DisguiseListener.java @@ -87,7 +87,7 @@ public class DisguiseListener implements Listener { for (World world : Bukkit.getWorlds()) { for (Entity entity : world.getEntities()) { - Disguise[] disguises = DisguiseUtilities.getSavedDisguises(entity, true); + Disguise[] disguises = DisguiseUtilities.getSavedDisguises(entity); if (disguises.length == 0) { continue; @@ -322,13 +322,7 @@ public class DisguiseListener implements Listener { } for (Entity entity : event.getChunk().getEntities()) { - Disguise[] disguises = DisguiseAPI.getDisguises(entity); - - if (disguises.length == 0) { - continue; - } - - DisguiseUtilities.saveDisguises(entity, disguises); + DisguiseUtilities.saveDisguises(entity); } } @@ -347,11 +341,10 @@ public class DisguiseListener implements Listener { Disguise[] disguises = DisguiseAPI.getDisguises(entity); - if (disguises.length == 0) { - continue; + if (disguises.length > 0) { + disguisesSaved++; } - disguisesSaved++; DisguiseUtilities.saveDisguises(entity, disguises); } @@ -367,7 +360,7 @@ public class DisguiseListener implements Listener { } for (Entity entity : event.getChunk().getEntities()) { - Disguise[] disguises = DisguiseUtilities.getSavedDisguises(entity, true); + Disguise[] disguises = DisguiseUtilities.getSavedDisguises(entity); if (disguises.length == 0) { continue; @@ -389,7 +382,7 @@ public class DisguiseListener implements Listener { } for (Entity entity : event.getWorld().getEntities()) { - Disguise[] disguises = DisguiseUtilities.getSavedDisguises(entity, true); + Disguise[] disguises = DisguiseUtilities.getSavedDisguises(entity); if (disguises.length == 0) { continue; @@ -433,7 +426,7 @@ public class DisguiseListener implements Listener { } if (DisguiseConfig.isSavePlayerDisguises()) { - Disguise[] disguises = DisguiseUtilities.getSavedDisguises(p, true); + Disguise[] disguises = DisguiseUtilities.getSavedDisguises(p); if (disguises.length > 0) { DisguiseUtilities.resetPluginTimer(); @@ -596,17 +589,7 @@ public class DisguiseListener implements Listener { } }*/ - if (!DisguiseConfig.isSavePlayerDisguises()) { - return; - } - - Disguise[] disguises = DisguiseAPI.getDisguises(player); - - if (disguises.length == 0) { - return; - } - - DisguiseUtilities.saveDisguises(player, disguises); + DisguiseUtilities.saveDisguises(player); } @EventHandler diff --git a/plugin/src/main/java/me/libraryaddict/disguise/utilities/listeners/DisguiseListener1_18.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/listeners/DisguiseListener1_18.java index 37241a03..86ba8b42 100644 --- a/plugin/src/main/java/me/libraryaddict/disguise/utilities/listeners/DisguiseListener1_18.java +++ b/plugin/src/main/java/me/libraryaddict/disguise/utilities/listeners/DisguiseListener1_18.java @@ -18,7 +18,7 @@ public class DisguiseListener1_18 implements Listener { } for (Entity entity : event.getEntities()) { - Disguise[] disguises = DisguiseUtilities.getSavedDisguises(entity, true); + Disguise[] disguises = DisguiseUtilities.getSavedDisguises(entity); if (disguises.length == 0) { continue; @@ -40,13 +40,7 @@ public class DisguiseListener1_18 implements Listener { } for (Entity entity : event.getEntities()) { - Disguise[] disguises = DisguiseAPI.getDisguises(entity); - - if (disguises.length == 0) { - continue; - } - - DisguiseUtilities.saveDisguises(entity, disguises); + DisguiseUtilities.saveDisguises(entity); } } } diff --git a/plugin/src/main/java/me/libraryaddict/disguise/utilities/listeners/PaperDisguiseListener.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/listeners/PaperDisguiseListener.java index 66807054..4cc61408 100644 --- a/plugin/src/main/java/me/libraryaddict/disguise/utilities/listeners/PaperDisguiseListener.java +++ b/plugin/src/main/java/me/libraryaddict/disguise/utilities/listeners/PaperDisguiseListener.java @@ -33,7 +33,7 @@ public class PaperDisguiseListener implements Listener { Entity entity = event.getEntity(); - Disguise[] disguises = DisguiseUtilities.getSavedDisguises(entity, true); + Disguise[] disguises = DisguiseUtilities.getSavedDisguises(entity); if (disguises.length == 0) { return; @@ -55,13 +55,7 @@ public class PaperDisguiseListener implements Listener { Entity entity = event.getEntity(); - Disguise[] disguises = DisguiseAPI.getDisguises(entity); - - if (disguises.length == 0) { - return; - } - - DisguiseUtilities.saveDisguises(entity, disguises); + DisguiseUtilities.saveDisguises(entity); } private boolean isWeirdBuild() {