package mkremins.fanciful;

import org.bukkit.ChatColor;
import org.bukkit.craftbukkit.libs.com.google.gson.stream.JsonWriter;

final class MessagePart {

	ChatColor color = null;
	ChatColor[] styles = null;
	String clickActionName = null, clickActionData = null,
		   hoverActionName = null, hoverActionData = null;
	final String text;

	MessagePart(final String text) {
		this.text = text;
	}

	JsonWriter writeJson(JsonWriter json) {
		try {
			json.beginObject().name("text").value(text);
			if (color != null) {
				json.name("color").value(color.name().toLowerCase());
			}
			if (styles != null) {
				for (final ChatColor style : styles) {
					json.name(style.name().toLowerCase()).value(true);
				}
			}
			if (clickActionName != null && clickActionData != null) {
				json.name("clickEvent")
					.beginObject()
					.name("action").value(clickActionName)
					.name("value").value(clickActionData)
					.endObject();
			}
			if (hoverActionName != null && hoverActionData != null) {
				json.name("hoverEvent")
					.beginObject()
					.name("action").value(hoverActionName)
					.name("value").value(hoverActionData)
					.endObject();
			}
			return json.endObject();
		} catch(Exception e){
			e.printStackTrace();
			return json;
		}
	}

}

@@ -167,20 +167,31 @@
 color = 
-null
+ChatColor.WHITE
 ;%0A%09ChatC
@@ -206,20 +206,18 @@
 tyles = 
-null
+%7B%7D
 ;%0A%09Strin
@@ -499,33 +499,8 @@
 t);%0A
-%09%09%09if (color != null) %7B%0A%09
 %09%09%09j
@@ -556,39 +556,8 @@
 ));%0A
-%09%09%09%7D%0A%09%09%09if (styles != null) %7B%0A%09
 %09%09%09f
@@ -594,17 +594,16 @@
 yles) %7B%0A
-%09
 %09%09%09%09json
@@ -653,14 +653,8 @@
 e);%0A
-%09%09%09%09%7D%0A
 %09%09%09%7D

simplify MessagePart a bit by eliminating some null checks