mirror of
https://github.com/webbukkit/dynmap.git
synced 2024-11-28 13:15:30 +01:00
Prefix all (intentional) output properly.
This commit is contained in:
parent
70dead3fb9
commit
ccbd6bf45e
@ -9,6 +9,7 @@ import java.util.logging.Logger;
|
||||
|
||||
public class AsynchronousQueue<T> {
|
||||
protected static final Logger log = Logger.getLogger("Minecraft");
|
||||
protected static final String LOG_PREFIX = "[dynmap] ";
|
||||
|
||||
private Object lock = new Object();
|
||||
private Thread thread;
|
||||
@ -62,7 +63,7 @@ public class AsynchronousQueue<T> {
|
||||
try {
|
||||
thread.setPriority(Thread.MIN_PRIORITY);
|
||||
} catch (SecurityException e) {
|
||||
log.info("Failed to set minimum priority for worker thread!");
|
||||
log.info(LOG_PREFIX + "Failed to set minimum priority for worker thread!");
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -74,13 +75,13 @@ public class AsynchronousQueue<T> {
|
||||
Thread oldThread = thread;
|
||||
thread = null;
|
||||
|
||||
log.info("Stopping map renderer...");
|
||||
log.info(LOG_PREFIX + "Stopping map renderer...");
|
||||
|
||||
oldThread.interrupt();
|
||||
try {
|
||||
oldThread.join(1000);
|
||||
} catch (InterruptedException e) {
|
||||
log.info("Waiting for map renderer to stop is interrupted");
|
||||
log.info(LOG_PREFIX + "Waiting for map renderer to stop is interrupted");
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -96,7 +97,7 @@ public class AsynchronousQueue<T> {
|
||||
}
|
||||
|
||||
} catch (Exception ex) {
|
||||
log.log(Level.SEVERE, "Exception on rendering-thread", ex);
|
||||
log.log(Level.SEVERE, LOG_PREFIX + "Exception on rendering-thread", ex);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -14,6 +14,7 @@ import org.dynmap.debug.Debug;
|
||||
|
||||
public class ColorScheme {
|
||||
protected static final Logger log = Logger.getLogger("Minecraft");
|
||||
protected static final String LOG_PREFIX = "[dynmap] ";
|
||||
private static final HashMap<String, ColorScheme> cache = new HashMap<String, ColorScheme>();
|
||||
|
||||
public String name;
|
||||
@ -115,10 +116,10 @@ public class ColorScheme {
|
||||
}
|
||||
}
|
||||
} catch (RuntimeException e) {
|
||||
log.log(Level.SEVERE, "Could not load colors '" + name + "' ('" + colorSchemeFile + "').", e);
|
||||
log.log(Level.SEVERE, LOG_PREFIX + "Could not load colors '" + name + "' ('" + colorSchemeFile + "').", e);
|
||||
return null;
|
||||
} catch (FileNotFoundException e) {
|
||||
log.log(Level.SEVERE, "Could not load colors '" + name + "' ('" + colorSchemeFile + "'): File not found.", e);
|
||||
log.log(Level.SEVERE, LOG_PREFIX + "Could not load colors '" + name + "' ('" + colorSchemeFile + "'): File not found.", e);
|
||||
}
|
||||
return new ColorScheme(name, colors, datacolors);
|
||||
}
|
||||
|
@ -51,6 +51,7 @@ import org.dynmap.web.handlers.SendMessageHandler;
|
||||
|
||||
public class DynmapPlugin extends JavaPlugin {
|
||||
protected static final Logger log = Logger.getLogger("Minecraft");
|
||||
protected static final String LOG_PREFIX = "[dynmap] ";
|
||||
|
||||
public HttpServer webServer = null;
|
||||
public MapManager mapManager = null;
|
||||
@ -87,7 +88,7 @@ public class DynmapPlugin extends JavaPlugin {
|
||||
|
||||
tilesDirectory = getFile(configuration.getString("tilespath", "web/tiles"));
|
||||
if (!tilesDirectory.isDirectory() && !tilesDirectory.mkdirs()) {
|
||||
log.warning("Could not create directory for tiles ('" + tilesDirectory + "').");
|
||||
log.warning(LOG_PREFIX + "Could not create directory for tiles ('" + tilesDirectory + "').");
|
||||
}
|
||||
|
||||
playerList = new PlayerList(getServer(), getFile("hiddenplayers.txt"), configuration);
|
||||
@ -122,7 +123,7 @@ public class DynmapPlugin extends JavaPlugin {
|
||||
|
||||
/* Print version info */
|
||||
PluginDescriptionFile pdfFile = this.getDescription();
|
||||
log.info("[dynmap] version " + pdfFile.getVersion() + " is enabled" );
|
||||
log.info(LOG_PREFIX + "version " + pdfFile.getVersion() + " is enabled" );
|
||||
}
|
||||
|
||||
public void loadWebserver() {
|
||||
@ -163,7 +164,7 @@ public class DynmapPlugin extends JavaPlugin {
|
||||
try {
|
||||
webServer.startServer();
|
||||
} catch (IOException e) {
|
||||
log.severe("Failed to start WebServer on " + bindAddress + ":" + port + "!");
|
||||
log.severe(LOG_PREFIX + "Failed to start WebServer on " + bindAddress + ":" + port + "!");
|
||||
}
|
||||
|
||||
}
|
||||
@ -294,7 +295,7 @@ public class DynmapPlugin extends JavaPlugin {
|
||||
Debugger debugger = (Debugger) constructor.newInstance(this, debuggerConfigurationMap);
|
||||
Debug.addDebugger(debugger);
|
||||
} catch (Exception e) {
|
||||
log.severe("Error loading debugger: " + e);
|
||||
log.severe(LOG_PREFIX + "Error loading debugger: " + e);
|
||||
e.printStackTrace();
|
||||
continue;
|
||||
}
|
||||
@ -402,15 +403,15 @@ public class DynmapPlugin extends JavaPlugin {
|
||||
fos.write(Json.stringifyJson(clientConfig).getBytes());
|
||||
fos.close();
|
||||
} catch (FileNotFoundException ex) {
|
||||
log.log(Level.SEVERE, "Exception while writing JSON-configuration-file.", ex);
|
||||
log.log(Level.SEVERE, LOG_PREFIX + "Exception while writing JSON-configuration-file.", ex);
|
||||
} catch (IOException ioe) {
|
||||
log.log(Level.SEVERE, "Exception while writing JSON-configuration-file.", ioe);
|
||||
log.log(Level.SEVERE, LOG_PREFIX + "Exception while writing JSON-configuration-file.", ioe);
|
||||
}
|
||||
}
|
||||
|
||||
public void webChat(String name, String message) {
|
||||
mapManager.pushUpdate(new Client.ChatMessage("web", name, message));
|
||||
log.info("[WEB]" + name + ": " + message);
|
||||
log.info(LOG_PREFIX + "[WEB]" + name + ": " + message);
|
||||
/* Let HeroChat take a look - only broadcast to players if it doesn't handle it */
|
||||
if(hchand.sendWebMessageToHeroChat(name, message) == false)
|
||||
getServer().broadcastMessage("[WEB]" + name + ": " + message);
|
||||
|
@ -15,6 +15,7 @@ import java.lang.reflect.Method;
|
||||
|
||||
public class HeroChatHandler {
|
||||
protected static final Logger log = Logger.getLogger("Minecraft");
|
||||
protected static final String LOG_PREFIX = "[dynmap] ";
|
||||
|
||||
private static final String DEF_CHANNEL = "Global";
|
||||
private static final List<String> DEF_CHANNELS = Collections
|
||||
@ -156,7 +157,7 @@ public class HeroChatHandler {
|
||||
isgood = true;
|
||||
} catch (ClassNotFoundException cnfx) {
|
||||
} catch (NoSuchMethodException nsmx) {
|
||||
System.out.println(nsmx);
|
||||
log.severe(LOG_PREFIX + nsmx);
|
||||
}
|
||||
return isgood;
|
||||
}
|
||||
@ -229,7 +230,7 @@ public class HeroChatHandler {
|
||||
public HeroChatHandler(Configuration cfg, DynmapPlugin plugin, Server server) {
|
||||
/* If we're enabling hero chat support */
|
||||
if (cfg.getNode("web").getBoolean("enableherochat", false)) {
|
||||
log.info("[dynmap] HeroChat support configured");
|
||||
log.info(LOG_PREFIX + "HeroChat support configured");
|
||||
this.plugin = plugin;
|
||||
/* Now, get the monitored channel list */
|
||||
hcchannels = cfg.getNode("web").getStringList("herochatchannels",
|
||||
@ -245,22 +246,22 @@ public class HeroChatHandler {
|
||||
|
||||
private void activateHeroChat(Plugin herochat) {
|
||||
if (HeroChatChannelChatEvent.initialize() == false) {
|
||||
log.severe("[dynmap] Cannot load HeroChat chat event class!");
|
||||
log.severe(LOG_PREFIX + "Cannot load HeroChat chat event class!");
|
||||
return;
|
||||
}
|
||||
if (HeroChatChannel.initialize() == false) {
|
||||
log.severe("[dynmap] Cannot load HeroChat channel class!");
|
||||
log.severe(LOG_PREFIX + "Cannot load HeroChat channel class!");
|
||||
return;
|
||||
}
|
||||
if (HeroChatChannelEvent.initialize() == false) {
|
||||
log.severe("[dynmap] Cannot load HeroChat channel event class!");
|
||||
log.severe(LOG_PREFIX + "Cannot load HeroChat channel event class!");
|
||||
return;
|
||||
}
|
||||
|
||||
/* Register event handler */
|
||||
plugin.getServer().getPluginManager().registerEvent(Event.Type.CUSTOM_EVENT,
|
||||
new OurEventListener(), Event.Priority.Monitor, plugin);
|
||||
log.info("[dynmap] HeroChat integration active");
|
||||
log.info(LOG_PREFIX + "HeroChat integration active");
|
||||
}
|
||||
/**
|
||||
* Send message from web to appropriate HeroChat channel
|
||||
|
@ -25,6 +25,7 @@ import org.json.simple.parser.ParseException;
|
||||
|
||||
class JsonTimerTask extends TimerTask {
|
||||
protected static final Logger log = Logger.getLogger("Minecraft");
|
||||
protected static final String LOG_PREFIX = "[dynmap] ";
|
||||
|
||||
private final DynmapPlugin plugin;
|
||||
private Server server;
|
||||
@ -66,9 +67,9 @@ class JsonTimerTask extends TimerTask {
|
||||
jsonMsgs = (JSONArray) parser.parse(inputFileReader);
|
||||
inputFileReader.close();
|
||||
} catch (IOException ex) {
|
||||
log.log(Level.SEVERE, "Exception while reading JSON-file.", ex);
|
||||
log.log(Level.SEVERE, LOG_PREFIX + "Exception while reading JSON-file.", ex);
|
||||
} catch (ParseException ex) {
|
||||
log.log(Level.SEVERE, "Exception while parsing JSON-file.", ex);
|
||||
log.log(Level.SEVERE, LOG_PREFIX + "Exception while parsing JSON-file.", ex);
|
||||
}
|
||||
|
||||
if (jsonMsgs != null) {
|
||||
@ -120,9 +121,9 @@ class JsonTimerTask extends TimerTask {
|
||||
fos.write(Json.stringifyJson(update).getBytes());
|
||||
fos.close();
|
||||
} catch (FileNotFoundException ex) {
|
||||
log.log(Level.SEVERE, "Exception while writing JSON-file.", ex);
|
||||
log.log(Level.SEVERE, LOG_PREFIX + "Exception while writing JSON-file.", ex);
|
||||
} catch (IOException ioe) {
|
||||
log.log(Level.SEVERE, "Exception while writing JSON-file.", ioe);
|
||||
log.log(Level.SEVERE, LOG_PREFIX + "Exception while writing JSON-file.", ioe);
|
||||
}
|
||||
}
|
||||
lastTimestamp = System.currentTimeMillis();
|
||||
@ -166,9 +167,9 @@ class JsonTimerTask extends TimerTask {
|
||||
fos.write(Json.stringifyJson(regionData).getBytes());
|
||||
fos.close();
|
||||
} catch (FileNotFoundException ex) {
|
||||
log.log(Level.SEVERE, "Exception while writing JSON-file.", ex);
|
||||
log.log(Level.SEVERE, LOG_PREFIX + "Exception while writing JSON-file.", ex);
|
||||
} catch (IOException ioe) {
|
||||
log.log(Level.SEVERE, "Exception while writing JSON-file.", ioe);
|
||||
log.log(Level.SEVERE, LOG_PREFIX + "Exception while writing JSON-file.", ioe);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -30,6 +30,7 @@ import org.bukkit.Chunk;
|
||||
|
||||
public class MapManager {
|
||||
protected static final Logger log = Logger.getLogger("Minecraft");
|
||||
protected static final String LOG_PREFIX = "[dynmap] ";
|
||||
|
||||
public AsynchronousQueue<MapTile> tileQueue;
|
||||
public AsynchronousQueue<ImageWriter> writeQueue;
|
||||
@ -88,7 +89,7 @@ public class MapManager {
|
||||
rendered.clear();
|
||||
map_index++; /* Next map */
|
||||
if(map_index >= world.maps.size()) { /* Last one done? */
|
||||
log.info("Full render finished.");
|
||||
log.info(LOG_PREFIX + "Full render finished.");
|
||||
active_renders.remove(world.world.getName());
|
||||
return;
|
||||
}
|
||||
@ -213,27 +214,27 @@ public class MapManager {
|
||||
void renderFullWorld(Location l) {
|
||||
DynmapWorld world = worlds.get(l.getWorld().getName());
|
||||
if (world == null) {
|
||||
log.severe("Could not render: world '" + l.getWorld().getName() + "' not defined in configuration.");
|
||||
log.severe(LOG_PREFIX + "Could not render: world '" + l.getWorld().getName() + "' not defined in configuration.");
|
||||
return;
|
||||
}
|
||||
if(do_timesliced_render) {
|
||||
String wname = l.getWorld().getName();
|
||||
FullWorldRenderState rndr = active_renders.get(wname);
|
||||
if(rndr != null) {
|
||||
log.info("Full world render of world '" + wname + "' already active.");
|
||||
log.info(LOG_PREFIX + "Full world render of world '" + wname + "' already active.");
|
||||
return;
|
||||
}
|
||||
rndr = new FullWorldRenderState(world,l); /* Make new activation record */
|
||||
active_renders.put(wname, rndr); /* Add to active table */
|
||||
/* Schedule first tile to be worked */
|
||||
scheduler.scheduleSyncDelayedTask(plug_in, rndr, (int)(timeslice_interval*20));
|
||||
log.info("Full render starting on world '" + wname + "' (timesliced)...");
|
||||
log.info(LOG_PREFIX + "Full render starting on world '" + wname + "' (timesliced)...");
|
||||
|
||||
return;
|
||||
}
|
||||
World w = world.world;
|
||||
|
||||
log.info("Full render starting on world '" + w.getName() + "'...");
|
||||
log.info(LOG_PREFIX + "Full render starting on world '" + w.getName() + "'...");
|
||||
for (MapType map : world.maps) {
|
||||
int requiredChunkCount = 200;
|
||||
HashSet<MapTile> found = new HashSet<MapTile>();
|
||||
@ -287,7 +288,7 @@ public class MapManager {
|
||||
w.unloadChunk(c.x, c.z, false, true);
|
||||
}
|
||||
}
|
||||
log.info("Full render finished.");
|
||||
log.info(LOG_PREFIX + "Full render finished.");
|
||||
}
|
||||
|
||||
public void activateWorld(World w) {
|
||||
@ -300,7 +301,7 @@ public class MapManager {
|
||||
if (world != null) {
|
||||
world.world = w;
|
||||
worlds.put(w.getName(), world);
|
||||
log.info("Activated world '" + w.getName() + "' in Dynmap.");
|
||||
log.info(LOG_PREFIX + "Activated world '" + w.getName() + "' in Dynmap.");
|
||||
}
|
||||
}
|
||||
|
||||
@ -317,14 +318,14 @@ public class MapManager {
|
||||
@SuppressWarnings("unchecked")
|
||||
Map<String, Object> configuredMap = (Map<String, Object>) configuredMapObj;
|
||||
String typeName = (String) configuredMap.get("class");
|
||||
log.info("Loading map '" + typeName.toString() + "'...");
|
||||
log.info(LOG_PREFIX + "Loading map '" + typeName.toString() + "'...");
|
||||
Class<?> mapTypeClass = Class.forName(typeName);
|
||||
Constructor<?> constructor = mapTypeClass.getConstructor(Map.class);
|
||||
MapType mapType = (MapType) constructor.newInstance(configuredMap);
|
||||
mapType.onTileInvalidated.addListener(invalitateListener);
|
||||
mapTypes.add(mapType);
|
||||
} catch (Exception e) {
|
||||
log.log(Level.SEVERE, "Error loading maptype", e);
|
||||
log.log(Level.SEVERE, LOG_PREFIX + "Error loading maptype", e);
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
@ -379,7 +380,7 @@ public class MapManager {
|
||||
worldTileDirectories.put(world, worldTileDirectory);
|
||||
}
|
||||
if (!worldTileDirectory.isDirectory() && !worldTileDirectory.mkdirs()) {
|
||||
log.warning("Could not create directory for tiles ('" + worldTileDirectory + "').");
|
||||
log.warning(LOG_PREFIX + "Could not create directory for tiles ('" + worldTileDirectory + "').");
|
||||
}
|
||||
return new File(worldTileDirectory, tile.getFilename());
|
||||
}
|
||||
|
@ -8,24 +8,24 @@ import org.bukkit.plugin.java.JavaPlugin;
|
||||
|
||||
public class LogDebugger implements Debugger {
|
||||
protected static final Logger log = Logger.getLogger("Minecraft");
|
||||
private static String prepend = "dynmap: ";
|
||||
protected static final String LOG_PREFIX = "[dynmap] ";
|
||||
|
||||
public LogDebugger(JavaPlugin plugin, Map<String, Object> configuration) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void debug(String message) {
|
||||
log.info(prepend + message);
|
||||
log.info(LOG_PREFIX + message);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void error(String message) {
|
||||
log.log(Level.SEVERE, prepend + message);
|
||||
log.log(Level.SEVERE, LOG_PREFIX + message);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void error(String message, Throwable thrown) {
|
||||
log.log(Level.SEVERE, prepend + message);
|
||||
log.log(Level.SEVERE, LOG_PREFIX + message);
|
||||
thrown.printStackTrace();
|
||||
}
|
||||
|
||||
|
@ -16,6 +16,7 @@ import org.dynmap.debug.Debug;
|
||||
|
||||
public class KzedMap extends MapType {
|
||||
protected static final Logger log = Logger.getLogger("Minecraft");
|
||||
protected static final String LOG_PREFIX = "[dynmap] ";
|
||||
|
||||
/* dimensions of a map tile */
|
||||
public static final int tileWidth = 128;
|
||||
@ -49,7 +50,7 @@ public class KzedMap extends MapType {
|
||||
@SuppressWarnings("unchecked")
|
||||
Map<String, Object> configuredRenderer = (Map<String, Object>) configuredRendererObj;
|
||||
String typeName = (String) configuredRenderer.get("class");
|
||||
log.info("Loading renderer '" + typeName.toString() + "'...");
|
||||
log.info(LOG_PREFIX + "Loading renderer '" + typeName.toString() + "'...");
|
||||
Class<?> mapTypeClass = Class.forName(typeName);
|
||||
Constructor<?> constructor = mapTypeClass.getConstructor(Map.class);
|
||||
MapTileRenderer mapTileRenderer = (MapTileRenderer) constructor.newInstance(configuredRenderer);
|
||||
|
@ -6,6 +6,7 @@ import java.util.logging.Logger;
|
||||
|
||||
public class BoundInputStream extends InputStream {
|
||||
protected static final Logger log = Logger.getLogger("Minecraft");
|
||||
protected static final String LOG_PREFIX = "[dynmap] ";
|
||||
private InputStream base;
|
||||
private long bound;
|
||||
|
||||
|
@ -12,6 +12,7 @@ import java.util.logging.Logger;
|
||||
|
||||
public class HttpServer extends Thread {
|
||||
protected static final Logger log = Logger.getLogger("Minecraft");
|
||||
protected static final String LOG_PREFIX = "[dynmap] ";
|
||||
|
||||
private ServerSocket sock = null;
|
||||
private Thread listeningThread;
|
||||
@ -30,7 +31,7 @@ public class HttpServer extends Thread {
|
||||
sock = new ServerSocket(port, 5, bindAddress);
|
||||
listeningThread = this;
|
||||
start();
|
||||
log.info("Dynmap WebServer started on " + bindAddress + ":" + port);
|
||||
log.info(LOG_PREFIX + "Dynmap WebServer started on " + bindAddress + ":" + port);
|
||||
}
|
||||
|
||||
public void run() {
|
||||
@ -41,24 +42,24 @@ public class HttpServer extends Thread {
|
||||
HttpServerConnection requestThread = new HttpServerConnection(socket, this);
|
||||
requestThread.start();
|
||||
} catch (IOException e) {
|
||||
log.info("map WebServer.run() stops with IOException");
|
||||
log.info(LOG_PREFIX + "map WebServer.run() stops with IOException");
|
||||
break;
|
||||
}
|
||||
}
|
||||
log.info("Webserver shut down.");
|
||||
log.info(LOG_PREFIX + "Webserver shut down.");
|
||||
} catch (Exception ex) {
|
||||
log.log(Level.SEVERE, "Exception on WebServer-thread", ex);
|
||||
log.log(Level.SEVERE, LOG_PREFIX + "Exception on WebServer-thread", ex);
|
||||
}
|
||||
}
|
||||
|
||||
public void shutdown() {
|
||||
log.info("Shutting down webserver...");
|
||||
log.info(LOG_PREFIX + "Shutting down webserver...");
|
||||
try {
|
||||
if (sock != null) {
|
||||
sock.close();
|
||||
}
|
||||
} catch (IOException e) {
|
||||
log.log(Level.INFO, "Exception while closing socket for webserver shutdown", e);
|
||||
log.log(Level.INFO, LOG_PREFIX + "Exception while closing socket for webserver shutdown", e);
|
||||
}
|
||||
listeningThread = null;
|
||||
}
|
||||
|
@ -18,6 +18,7 @@ import org.dynmap.debug.Debug;
|
||||
|
||||
public class HttpServerConnection extends Thread {
|
||||
protected static final Logger log = Logger.getLogger("Minecraft");
|
||||
protected static final String LOG_PREFIX = "[dynmap] ";
|
||||
|
||||
private static Pattern requestHeaderLine = Pattern.compile("^(\\S+)\\s+(\\S+)\\s+HTTP/(.+)$");
|
||||
private static Pattern requestHeaderField = Pattern.compile("^([^:]+):\\s*(.+)$");
|
||||
@ -174,7 +175,7 @@ public class HttpServerConnection extends Thread {
|
||||
} catch (IOException e) {
|
||||
throw e;
|
||||
} catch (Exception e) {
|
||||
log.log(Level.SEVERE, "HttpHandler '" + handler + "' has thown an exception", e);
|
||||
log.log(Level.SEVERE, LOG_PREFIX + "HttpHandler '" + handler + "' has thown an exception", e);
|
||||
if (socket != null) {
|
||||
out.flush();
|
||||
socket.close();
|
||||
@ -228,7 +229,7 @@ public class HttpServerConnection extends Thread {
|
||||
} catch (IOException ex) {
|
||||
}
|
||||
}
|
||||
log.log(Level.SEVERE, "Exception while handling request: ", e);
|
||||
log.log(Level.SEVERE, LOG_PREFIX + "Exception while handling request: ", e);
|
||||
e.printStackTrace();
|
||||
return;
|
||||
}
|
||||
|
@ -15,6 +15,7 @@ import org.dynmap.web.HttpStatus;
|
||||
|
||||
public abstract class FileHandler implements HttpHandler {
|
||||
protected static final Logger log = Logger.getLogger("Minecraft");
|
||||
protected static final String LOG_PREFIX = "[dynmap] ";
|
||||
private byte[] readBuffer = new byte[40960];
|
||||
|
||||
private static Map<String, String> mimes = new HashMap<String, String>();
|
||||
|
@ -17,6 +17,7 @@ import org.json.simple.parser.JSONParser;
|
||||
|
||||
public class SendMessageHandler implements HttpHandler {
|
||||
protected static final Logger log = Logger.getLogger("Minecraft");
|
||||
protected static final String LOG_PREFIX = "[dynmap] ";
|
||||
|
||||
private static final JSONParser parser = new JSONParser();
|
||||
public Event<Message> onMessageReceived = new Event<SendMessageHandler.Message>();
|
||||
|
Loading…
Reference in New Issue
Block a user