diff --git a/pom.xml b/pom.xml
index 9edad01e1..518a2e605 100644
--- a/pom.xml
+++ b/pom.xml
@@ -101,6 +101,10 @@
org.spacehq.opennbt
us.myles.viaversion.libs.opennbt
+
+ com.google.gson
+ us.myles.viaversion.libs.gson
+
@@ -162,6 +166,15 @@
true
+
+
+ com.google.code.gson
+ gson
+ 2.6.2
+ compile
+ true
+
+
io.netty
@@ -170,6 +183,7 @@
provided
true
+
org.projectlombok
diff --git a/src/main/java/us/myles/ViaVersion/boss/ViaBossBar.java b/src/main/java/us/myles/ViaVersion/boss/ViaBossBar.java
index e398cdee9..a9d80e08d 100644
--- a/src/main/java/us/myles/ViaVersion/boss/ViaBossBar.java
+++ b/src/main/java/us/myles/ViaVersion/boss/ViaBossBar.java
@@ -15,10 +15,7 @@ import us.myles.ViaVersion.packets.PacketType;
import us.myles.ViaVersion.transformers.OutgoingTransformer;
import us.myles.ViaVersion.util.PacketUtil;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Set;
-import java.util.UUID;
+import java.util.*;
@Getter
public class ViaBossBar implements BossBar {
@@ -142,7 +139,7 @@ public class ViaBossBar implements BossBar {
private void sendPacket(UpdateAction action) {
ByteBuf buf = getPacket(action);
- for (UUID uuid : players)
+ for (UUID uuid : new ArrayList<>(players))
sendPacket(uuid, buf);
}
diff --git a/src/main/java/us/myles/ViaVersion/transformers/OutgoingTransformer.java b/src/main/java/us/myles/ViaVersion/transformers/OutgoingTransformer.java
index ba1851f18..cee828de3 100644
--- a/src/main/java/us/myles/ViaVersion/transformers/OutgoingTransformer.java
+++ b/src/main/java/us/myles/ViaVersion/transformers/OutgoingTransformer.java
@@ -1,11 +1,11 @@
package us.myles.ViaVersion.transformers;
+import com.google.gson.Gson;
+import com.google.gson.GsonBuilder;
+import com.google.gson.JsonObject;
import io.netty.buffer.ByteBuf;
import org.bukkit.Material;
import org.bukkit.entity.EntityType;
-import org.json.simple.JSONObject;
-import org.json.simple.parser.JSONParser;
-import org.json.simple.parser.ParseException;
import org.spacehq.opennbt.tag.builtin.CompoundTag;
import org.spacehq.opennbt.tag.builtin.StringTag;
import us.myles.ViaVersion.CancelException;
@@ -34,6 +34,7 @@ import static us.myles.ViaVersion.util.PacketUtil.*;
public class OutgoingTransformer {
+ private static Gson gson = new GsonBuilder().create();
private final ViaVersionPlugin plugin = (ViaVersionPlugin) ViaVersion.getInstance();
@@ -56,16 +57,16 @@ public class OutgoingTransformer {
line = "{\"text\":\"\"}";
} else {
if ((!line.startsWith("\"") || !line.endsWith("\"")) && (!line.startsWith("{") || !line.endsWith("}"))) {
- JSONObject obj = new JSONObject();
- obj.put("text", line);
- return obj.toJSONString();
+ JsonObject jsonObject = new JsonObject();
+ jsonObject.addProperty("text", line);
+ return gson.toJson(jsonObject);
}
if (line.startsWith("\"") && line.endsWith("\"")) {
line = "{\"text\":" + line + "}";
}
}
try {
- new JSONParser().parse(line);
+ gson.fromJson(line, JsonObject.class);
} catch (Exception e) {
System.out.println("Invalid JSON String: \"" + line + "\" Please report this issue to the ViaVersion Github: " + e.getMessage());
return "{\"text\":\"\"}";
@@ -297,12 +298,12 @@ public class OutgoingTransformer {
if (packet == PacketType.STATUS_RESPONSE) {
String originalStatus = PacketUtil.readString(input);
try {
- JSONObject json = (JSONObject) new JSONParser().parse(originalStatus);
- JSONObject version = (JSONObject) json.get("version");
- if ((long) version.get("protocol") != 9999) //Fix ServerListPlus custom outdated message
- version.put("protocol", info.getProtocol());
- PacketUtil.writeString(json.toJSONString(), output);
- } catch (ParseException e) {
+ JsonObject jsonObject = gson.fromJson(originalStatus, JsonObject.class);
+ JsonObject version = jsonObject.get("version").getAsJsonObject();
+ if (version.get("protocol").getAsInt() != 9999) //Fix ServerListPlus custom outdated message
+ version.addProperty("protocol", info.getProtocol());
+ PacketUtil.writeString(gson.toJson(jsonObject), output);
+ } catch (Exception e) {
e.printStackTrace();
}
return;