diff --git a/src/main/java/org/dynmap/Client.java b/src/main/java/org/dynmap/Client.java index e530006d..fc5c96bd 100644 --- a/src/main/java/org/dynmap/Client.java +++ b/src/main/java/org/dynmap/Client.java @@ -29,23 +29,30 @@ public class Client { public static class ChatMessage extends Stamped { public String type = "chat"; + public String source; public String playerName; public String message; - public ChatMessage(String playerName, String message) { + public ChatMessage(String source, String playerName, String message) { + this.source = source; this.playerName = playerName; this.message = message; } } - public static class WebChatMessage extends Stamped { - public String type = "webchat"; + public static class PlayerJoinMessage extends Stamped { + public String type = "playerjoin"; public String playerName; - public String message; - - public WebChatMessage(String playerName, String message) { + public PlayerJoinMessage(String playerName) { + this.playerName = playerName; + } + } + + public static class PlayerQuitMessage extends Stamped { + public String type = "playerquit"; + public String playerName; + public PlayerQuitMessage(String playerName) { this.playerName = playerName; - this.message = message; } } diff --git a/src/main/java/org/dynmap/DynmapPlayerChatListener.java b/src/main/java/org/dynmap/DynmapPlayerChatListener.java index a203b9b6..c732f855 100644 --- a/src/main/java/org/dynmap/DynmapPlayerChatListener.java +++ b/src/main/java/org/dynmap/DynmapPlayerChatListener.java @@ -15,21 +15,17 @@ public class DynmapPlayerChatListener extends PlayerListener { @Override public void onPlayerChat(PlayerChatEvent event) { if(event.isCancelled()) return; - plugin.mapManager.pushUpdate(new Client.ChatMessage(event.getPlayer().getName(), event.getMessage())); + plugin.mapManager.pushUpdate(new Client.ChatMessage("player", event.getPlayer().getName(), event.getMessage())); } @Override public void onPlayerJoin(PlayerJoinEvent event) { - String joinMessage = plugin.configuration.getNode("web").getString("joinmessage", "%playername% joined"); - joinMessage = joinMessage.replaceAll("%playername%", event.getPlayer().getName()); - plugin.mapManager.pushUpdate(new Client.ChatMessage("Server", joinMessage)); + plugin.mapManager.pushUpdate(new Client.PlayerJoinMessage(event.getPlayer().getName())); } @Override public void onPlayerQuit(PlayerQuitEvent event) { - String quitMessage = plugin.configuration.getNode("web").getString("quitmessage", "%playername% quit"); - quitMessage = quitMessage.replaceAll("%playername%", event.getPlayer().getName()); - plugin.mapManager.pushUpdate(new Client.ChatMessage("Server", quitMessage)); + plugin.mapManager.pushUpdate(new Client.PlayerQuitMessage(event.getPlayer().getName())); } } \ No newline at end of file diff --git a/src/main/java/org/dynmap/DynmapPlugin.java b/src/main/java/org/dynmap/DynmapPlugin.java index 7ef4a096..02c443b6 100644 --- a/src/main/java/org/dynmap/DynmapPlugin.java +++ b/src/main/java/org/dynmap/DynmapPlugin.java @@ -382,7 +382,7 @@ public class DynmapPlugin extends JavaPlugin { } public void webChat(String name, String message) { - mapManager.pushUpdate(new Client.WebChatMessage(name, message)); + mapManager.pushUpdate(new Client.ChatMessage("web", name, message)); log.info("[WEB]" + name + ": " + message); getServer().broadcastMessage("[WEB]" + name + ": " + message); } diff --git a/web/js/chat.js b/web/js/chat.js index daf017e4..68421ee3 100644 --- a/web/js/chat.js +++ b/web/js/chat.js @@ -12,10 +12,7 @@ componentconstructors['chat'] = function(dynmap, configuration) { $(dynmap).bind('worldupdate', function(event, update) { swtch(update.type, { chat: function() { - $(dynmap).trigger('chat', [{source: 'player', name: update.playerName, text: update.message}]); - }, - webchat: function() { - $(dynmap).trigger('chat', [{source: 'web', name: update.playerName, text: update.message}]); + $(dynmap).trigger('chat', [{source: update.source, name: update.playerName, text: update.message}]); } }); }); diff --git a/web/js/chatbox.js b/web/js/chatbox.js index 80a5846a..67ecdfd2 100644 --- a/web/js/chatbox.js +++ b/web/js/chatbox.js @@ -27,6 +27,27 @@ componentconstructors['chatbox'] = function(dynmap, configuration) { .appendTo(chat); } + var addrow = function(row) { + setTimeout(function() { row.remove(); }, (configuration.messagettl * 1000)); + messagelist.append(row); + messagelist.show(); + messagelist.scrollTop(messagelist.scrollHeight()); + }; + + $(dynmap).bind('playerjoin', function(event, playername) { + addrow($('
') + .addClass('messagerow') + .text(dynmap.options.joinmessage.replace('%playername%', playername)) + ); + }); + + $(dynmap).bind('playerquit', function(event, playername) { + addrow($('
') + .addClass('messagerow') + .text(dynmap.options.quitmessage.replace('%playername%', playername)) + ); + }); + $(dynmap).bind('chat', function(event, message) { var playerName = message.name; var messageRow = $('
') @@ -59,12 +80,6 @@ componentconstructors['chatbox'] = function(dynmap, configuration) { .text(message.text); messageRow.append(playerIconContainer,playerNameContainer,playerMessageContainer); - //messageRow.append(playerIconContainer,playerWorldContainer,playerGroupContainer,playerNameContainer,playerMessageContainer); - setTimeout(function() { messageRow.remove(); }, (configuration.messagettl * 1000)); - messagelist.append(messageRow); - - messagelist.show(); - //var scrollHeight = jQuery(me.messagelist).attr('scrollHeight'); - messagelist.scrollTop(messagelist.scrollHeight()); + addrow(messageRow); }); }; \ No newline at end of file diff --git a/web/js/map.js b/web/js/map.js index d204d765..7585e629 100644 --- a/web/js/map.js +++ b/web/js/map.js @@ -375,6 +375,12 @@ DynMap.prototype = { swtch(update.type, { tile: function() { me.onTileUpdated(update.name); + }, + playerjoin: function() { + $(me).trigger('playerjoin', [ update.playerName ]); + }, + playerquit: function() { + $(me).trigger('playerquit', [ update.playerName ]); } }); }