Should be private
This commit is contained in:
		| @@ -13,6 +13,7 @@ import me.libraryaddict.disguise.utilities.reflection.NmsVersion; | ||||
| import me.libraryaddict.disguise.utilities.reflection.ReflectionManager; | ||||
| import me.libraryaddict.disguise.utilities.translations.LibsMsg; | ||||
| import me.libraryaddict.disguise.utilities.translations.TranslateType; | ||||
| import me.libraryaddict.disguise.utilities.watchers.DisguiseMethods; | ||||
| import org.bukkit.Bukkit; | ||||
| import org.bukkit.Material; | ||||
| import org.bukkit.block.data.BlockData; | ||||
| @@ -149,10 +150,14 @@ public class DisguiseParser { | ||||
|         return parseToString(disguise, true); | ||||
|     } | ||||
|  | ||||
|     public static String parseToString(Disguise disguise, boolean outputSkinData) { | ||||
|         return parseToString(disguise, outputSkinData, false); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Not outputting skin information is not garanteed to display the correct player name | ||||
|      */ | ||||
|     public static String parseToString(Disguise disguise, boolean outputSkinData) { | ||||
|     public static String parseToString(Disguise disguise, boolean outputSkinData, boolean includeCustomData) { | ||||
|         try { | ||||
|             StringBuilder stringBuilder = new StringBuilder(); | ||||
|  | ||||
| @@ -244,6 +249,40 @@ public class DisguiseParser { | ||||
|                 stringBuilder.append(" ").append(valueString); | ||||
|             } | ||||
|  | ||||
|             if (includeCustomData) { | ||||
|                 LinkedHashMap<String, Object> meta = disguise.getCustomData(); | ||||
|                 LinkedHashMap<String, String> serializedMeta = new LinkedHashMap<>(); | ||||
|  | ||||
|                 for (Entry<String, Object> entry : meta.entrySet()) { | ||||
|                     Object val = entry.getValue(); | ||||
|  | ||||
|                     try { | ||||
|                         if (val == null) { | ||||
|                             serializedMeta.put(entry.getKey(), "null"); | ||||
|                             continue; | ||||
|                         } | ||||
|  | ||||
|                         String serialized = DisguiseUtilities.getGson().toJson(val); | ||||
|  | ||||
|                         serializedMeta.put(entry.getKey(), val.getClass().getName() + ":" + serialized); | ||||
|                     } catch (Throwable throwable) { | ||||
|                         DisguiseUtilities.getLogger() | ||||
|                                 .warning("Unable to properly serialize the metadata on a disguise, the metadata was saved under name '" + entry.getKey() + "'"); | ||||
|  | ||||
|                         if (!(throwable instanceof StackOverflowError)) { | ||||
|                             throwable.printStackTrace(); | ||||
|                         } | ||||
|                         continue; | ||||
|                     } | ||||
|                 } | ||||
|  | ||||
|                 if (!serializedMeta.isEmpty()) { | ||||
|                     String serialized = DisguiseUtilities.getGson().toJson(serializedMeta); | ||||
|  | ||||
|                     stringBuilder.append(" ").append("setCustomData").append(" ").append(DisguiseUtilities.quote(serialized)); | ||||
|                 } | ||||
|             } | ||||
|  | ||||
|             return stringBuilder.toString(); | ||||
|         } catch (Throwable e) { | ||||
|             e.printStackTrace(); | ||||
| @@ -914,6 +953,28 @@ public class DisguiseParser { | ||||
|             Object valueToSet = null; | ||||
|             DisguiseParseException parseException = null; | ||||
|  | ||||
|             if (!list.isEmpty() && methodNameProvided.equalsIgnoreCase("setCustomData") && (sender == null || sender.isOp())) { | ||||
|                 argIndex++; | ||||
|                 String data = list.remove(0); | ||||
|                 Map<String, String> deserial = DisguiseUtilities.getGson().fromJson(data, LinkedHashMap.class); | ||||
|  | ||||
|                 for (Entry<String, String> entry : deserial.entrySet()) { | ||||
|                     String val = entry.getValue(); | ||||
|  | ||||
|                     if (!val.contains(":")) { | ||||
|                         disguise.addCustomData(entry.getKey(), null); | ||||
|                         continue; | ||||
|                     } | ||||
|  | ||||
|                     String className = val.substring(0, val.indexOf(":")); | ||||
|                     val = val.substring(className.length() + 1); | ||||
|  | ||||
|                     disguise.addCustomData(entry.getKey(), DisguiseUtilities.getGson().fromJson(val, DisguiseMethods.parseType(className))); | ||||
|                 } | ||||
|  | ||||
|                 continue; | ||||
|             } | ||||
|  | ||||
|             for (WatcherMethod method : methods) { | ||||
|                 if (!method.getName().equalsIgnoreCase(methodNameJava)) { | ||||
|                     continue; | ||||
|   | ||||
| @@ -17,7 +17,7 @@ public class WatcherInfo { | ||||
|     private String watcher; | ||||
|     private String method; | ||||
|     private String param; | ||||
|     String descriptor; | ||||
|     private String descriptor; | ||||
|  | ||||
|     public boolean isSupported() { | ||||
|         if (getAdded() >= 0 && added > ReflectionManager.getVersion().ordinal()) { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user