mirror of https://github.com/webbukkit/dynmap.git
68 lines
1.9 KiB
Java
68 lines
1.9 KiB
Java
package org.dynmap;
|
|
|
|
import static org.dynmap.JSONUtils.a;
|
|
import static org.dynmap.JSONUtils.s;
|
|
|
|
import java.util.List;
|
|
import java.util.Map;
|
|
|
|
import org.json.simple.JSONArray;
|
|
import org.json.simple.JSONObject;
|
|
public class ClientComponent extends Component {
|
|
private boolean disabled;
|
|
|
|
public ClientComponent(final DynmapCore plugin, final ConfigurationNode configuration) {
|
|
super(plugin, configuration);
|
|
plugin.events.addListener("buildclientconfiguration", new Event.Listener<JSONObject>() {
|
|
@Override
|
|
public void triggered(JSONObject root) {
|
|
if(!disabled)
|
|
buildClientConfiguration(root);
|
|
}
|
|
});
|
|
}
|
|
|
|
protected void disableComponent() {
|
|
disabled = true;
|
|
}
|
|
|
|
protected void buildClientConfiguration(JSONObject root) {
|
|
JSONObject o = createClientConfiguration();
|
|
a(root, "components", o);
|
|
}
|
|
|
|
protected JSONObject createClientConfiguration() {
|
|
JSONObject o = convertMap(configuration);
|
|
o.remove("class");
|
|
return o;
|
|
}
|
|
|
|
protected static final JSONObject convertMap(Map<String, ?> m) {
|
|
JSONObject o = new JSONObject();
|
|
for(Map.Entry<String, ?> entry : m.entrySet()) {
|
|
s(o, entry.getKey(), convert(entry.getValue()));
|
|
}
|
|
return o;
|
|
}
|
|
|
|
@SuppressWarnings("unchecked")
|
|
protected static final JSONArray convertList(List<?> l) {
|
|
JSONArray o = new JSONArray();
|
|
for(Object entry : l) {
|
|
o.add(convert(entry));
|
|
}
|
|
return o;
|
|
}
|
|
|
|
@SuppressWarnings("unchecked")
|
|
protected static final Object convert(Object o) {
|
|
if (o instanceof Map<?, ?>) {
|
|
return convertMap((Map<String, ?>)o);
|
|
} else if (o instanceof List<?>) {
|
|
return convertList((List<?>)o);
|
|
}
|
|
return o;
|
|
}
|
|
|
|
}
|