diff --git a/data/messages.xml b/data/messages.xml
index 1f5113d4..910c4a15 100644
--- a/data/messages.xml
+++ b/data/messages.xml
@@ -7,10 +7,10 @@
- org.apollo.game.message.impl.ChatMessage
+ org.apollo.game.message.impl.PublicChatMessage
- org.apollo.game.message.handler.ChatVerificationHandler
- org.apollo.game.message.handler.ChatMessageHandler
+ org.apollo.game.message.handler.PublicChatVerificationHandler
+ org.apollo.game.message.handler.PublicChatMessageHandler
diff --git a/game/src/main/org/apollo/game/message/handler/ChatVerificationHandler.java b/game/src/main/org/apollo/game/message/handler/ChatVerificationHandler.java
deleted file mode 100644
index ee786ef3..00000000
--- a/game/src/main/org/apollo/game/message/handler/ChatVerificationHandler.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package org.apollo.game.message.handler;
-
-import org.apollo.game.message.impl.ChatMessage;
-import org.apollo.game.model.World;
-import org.apollo.game.model.entity.Player;
-
-/**
- * A {@link MessageHandler} that verifies {@link ChatMessage}s.
- *
- * @author Graham
- */
-public final class ChatVerificationHandler extends MessageHandler {
-
- /**
- * Creates the ChatVerificationHandler.
- *
- * @param world The {@link World} the {@link ChatMessage} occurred in.
- */
- public ChatVerificationHandler(World world) {
- super(world);
- }
-
- @Override
- public void handle(Player player, ChatMessage message) {
- int color = message.getTextColor();
- int effects = message.getTextEffects();
- if (color < 0 || color > 11 || effects < 0 || effects > 5) {
- message.terminate();
- }
- }
-
-}
\ No newline at end of file
diff --git a/game/src/main/org/apollo/game/message/handler/ChatMessageHandler.java b/game/src/main/org/apollo/game/message/handler/PublicChatMessageHandler.java
similarity index 55%
rename from game/src/main/org/apollo/game/message/handler/ChatMessageHandler.java
rename to game/src/main/org/apollo/game/message/handler/PublicChatMessageHandler.java
index a4098d2e..9930e583 100644
--- a/game/src/main/org/apollo/game/message/handler/ChatMessageHandler.java
+++ b/game/src/main/org/apollo/game/message/handler/PublicChatMessageHandler.java
@@ -1,6 +1,6 @@
package org.apollo.game.message.handler;
-import org.apollo.game.message.impl.ChatMessage;
+import org.apollo.game.message.impl.PublicChatMessage;
import org.apollo.game.model.World;
import org.apollo.game.model.entity.Player;
import org.apollo.game.sync.block.SynchronizationBlock;
@@ -10,19 +10,19 @@ import org.apollo.game.sync.block.SynchronizationBlock;
*
* @author Graham
*/
-public final class ChatMessageHandler extends MessageHandler {
+public final class PublicChatMessageHandler extends MessageHandler {
/**
- * Creates the ChatMessageHandler.
+ * Creates the PublicChatMessageHandler.
*
- * @param world The {@link World} the {@link ChatMessage} occurred in.
+ * @param world The {@link World} the {@link PublicChatMessage} occurred in.
*/
- public ChatMessageHandler(World world) {
+ public PublicChatMessageHandler(World world) {
super(world);
}
@Override
- public void handle(Player player, ChatMessage message) {
+ public void handle(Player player, PublicChatMessage message) {
if (player.isMuted()) {
message.terminate();
return;
diff --git a/game/src/main/org/apollo/game/message/handler/PublicChatVerificationHandler.java b/game/src/main/org/apollo/game/message/handler/PublicChatVerificationHandler.java
new file mode 100644
index 00000000..c5e06aa3
--- /dev/null
+++ b/game/src/main/org/apollo/game/message/handler/PublicChatVerificationHandler.java
@@ -0,0 +1,32 @@
+package org.apollo.game.message.handler;
+
+import org.apollo.game.message.impl.PublicChatMessage;
+import org.apollo.game.model.World;
+import org.apollo.game.model.entity.Player;
+
+/**
+ * A {@link MessageHandler} that verifies {@link PublicChatMessage}s.
+ *
+ * @author Graham
+ */
+public final class PublicChatVerificationHandler extends MessageHandler {
+
+ /**
+ * Creates the PublicChatVerificationHandler.
+ *
+ * @param world The {@link World} the {@link PublicChatMessage} occurred in.
+ */
+ public PublicChatVerificationHandler(World world) {
+ super(world);
+ }
+
+ @Override
+ public void handle(Player player, PublicChatMessage message) {
+ int color = message.getTextColor();
+ int effects = message.getTextEffects();
+ if (color < 0 || color > 11 || effects < 0 || effects > 5) {
+ message.terminate();
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/game/src/main/org/apollo/game/message/impl/ChatMessage.java b/game/src/main/org/apollo/game/message/impl/ChatMessage.java
index 828ec23f..7be4dd93 100644
--- a/game/src/main/org/apollo/game/message/impl/ChatMessage.java
+++ b/game/src/main/org/apollo/game/message/impl/ChatMessage.java
@@ -3,45 +3,31 @@ package org.apollo.game.message.impl;
import org.apollo.net.message.Message;
/**
- * A {@link Message} sent by the client to send a public chat message to other players.
+ * A {@link Message} sent by the client to send a chat message to other players.
*
- * @author Graham
+ * @author AymericDu
*/
-public final class ChatMessage extends Message {
-
- /**
- * The text color.
- */
- private final int color;
-
- /**
- * The compressed message.
- */
- private final byte[] compressedMessage;
-
- /**
- * The text effects.
- */
- private final int effects;
+public abstract class ChatMessage extends Message {
/**
* The message.
*/
private final String message;
+ /**
+ * The compressed message.
+ */
+ private final byte[] compressedMessage;
+
/**
* Creates a new chat message.
*
* @param message The message.
* @param compressedMessage The compressed message.
- * @param color The text color.
- * @param effects The text effects.
*/
- public ChatMessage(String message, byte[] compressedMessage, int color, int effects) {
+ public ChatMessage(String message, byte[] compressedMessage) {
this.message = message;
- this.compressedMessage = compressedMessage;
- this.color = color;
- this.effects = effects;
+ this.compressedMessage = compressedMessage.clone();
}
/**
@@ -49,8 +35,8 @@ public final class ChatMessage extends Message {
*
* @return The compressed message.
*/
- public byte[] getCompressedMessage() {
- return compressedMessage;
+ public final byte[] getCompressedMessage() {
+ return compressedMessage.clone();
}
/**
@@ -58,26 +44,7 @@ public final class ChatMessage extends Message {
*
* @return The message.
*/
- public String getMessage() {
+ public final String getMessage() {
return message;
}
-
- /**
- * Gets the text color.
- *
- * @return The text color.
- */
- public int getTextColor() {
- return color;
- }
-
- /**
- * Gets the text effects.
- *
- * @return The text effects.
- */
- public int getTextEffects() {
- return effects;
- }
-
-}
\ No newline at end of file
+}
diff --git a/game/src/main/org/apollo/game/message/impl/PrivateChatMessage.java b/game/src/main/org/apollo/game/message/impl/PrivateChatMessage.java
index f42aac78..b7e9aaa5 100644
--- a/game/src/main/org/apollo/game/message/impl/PrivateChatMessage.java
+++ b/game/src/main/org/apollo/game/message/impl/PrivateChatMessage.java
@@ -7,17 +7,7 @@ import org.apollo.net.message.Message;
*
* @author Major
*/
-public final class PrivateChatMessage extends Message {
-
- /**
- * The chat string being sent.
- */
- private final String chat;
-
- /**
- * The compressed chat string.
- */
- private final byte[] compressedChat;
+public final class PrivateChatMessage extends ChatMessage {
/**
* The username this message is being sent to.
@@ -27,32 +17,13 @@ public final class PrivateChatMessage extends Message {
/**
* Creates a new private chat message.
*
+ * @param message The chat string.
+ * @param compressedMessage The chat string, in a compressed form.
* @param username The username of the player the message is being sent to.
- * @param chat The chat string.
- * @param compressedChat The chat string, in a compressed form.
*/
- public PrivateChatMessage(String username, String chat, byte[] compressedChat) {
+ public PrivateChatMessage(String message, byte[] compressedMessage, String username) {
+ super(message, compressedMessage);
this.username = username;
- this.chat = chat;
- this.compressedChat = compressedChat.clone();
- }
-
- /**
- * Gets the chat string being sent.
- *
- * @return The chat string.
- */
- public String getChat() {
- return chat;
- }
-
- /**
- * Gets the compressed chat string.
- *
- * @return The compressed chat string.
- */
- public byte[] getCompressedChat() {
- return compressedChat.clone();
}
/**
diff --git a/game/src/main/org/apollo/game/message/impl/PublicChatMessage.java b/game/src/main/org/apollo/game/message/impl/PublicChatMessage.java
new file mode 100644
index 00000000..7df576e9
--- /dev/null
+++ b/game/src/main/org/apollo/game/message/impl/PublicChatMessage.java
@@ -0,0 +1,54 @@
+package org.apollo.game.message.impl;
+
+import org.apollo.net.message.Message;
+
+/**
+ * A {@link Message} sent by the client to send a public chat message to other players.
+ *
+ * @author Graham
+ */
+public final class PublicChatMessage extends ChatMessage {
+
+ /**
+ * The text color.
+ */
+ private final int color;
+
+ /**
+ * The text effects.
+ */
+ private final int effects;
+
+ /**
+ * Creates a new chat message.
+ *
+ * @param message The message.
+ * @param compressedMessage The compressed message.
+ * @param color The text color.
+ * @param effects The text effects.
+ */
+ public PublicChatMessage(String message, byte[] compressedMessage, int color, int effects) {
+ super(message, compressedMessage);
+ this.color = color;
+ this.effects = effects;
+ }
+
+ /**
+ * Gets the text color.
+ *
+ * @return The text color.
+ */
+ public int getTextColor() {
+ return color;
+ }
+
+ /**
+ * Gets the text effects.
+ *
+ * @return The text effects.
+ */
+ public int getTextEffects() {
+ return effects;
+ }
+
+}
\ No newline at end of file
diff --git a/game/src/main/org/apollo/game/release/r317/PrivateChatMessageDecoder.java b/game/src/main/org/apollo/game/release/r317/PrivateChatMessageDecoder.java
index a63e9a93..7d73af11 100644
--- a/game/src/main/org/apollo/game/release/r317/PrivateChatMessageDecoder.java
+++ b/game/src/main/org/apollo/game/release/r317/PrivateChatMessageDecoder.java
@@ -32,7 +32,7 @@ public final class PrivateChatMessageDecoder extends MessageDecoder {
+public final class PublicChatMessageDecoder extends MessageDecoder {
@Override
- public ChatMessage decode(GamePacket packet) {
+ public PublicChatMessage decode(GamePacket packet) {
GamePacketReader reader = new GamePacketReader(packet);
int effects = (int) reader.getUnsigned(DataType.BYTE, DataTransformation.SUBTRACT);
@@ -34,7 +34,7 @@ public final class ChatMessageDecoder extends MessageDecoder {
TextUtil.compress(uncompressed, recompressed);
// in case invalid data gets sent, this effectively verifies it
- return new ChatMessage(uncompressed, recompressed, color, effects);
+ return new PublicChatMessage(uncompressed, recompressed, color, effects);
}
}
\ No newline at end of file
diff --git a/game/src/main/org/apollo/game/release/r317/Release317.java b/game/src/main/org/apollo/game/release/r317/Release317.java
index 0050b3fa..00763714 100644
--- a/game/src/main/org/apollo/game/release/r317/Release317.java
+++ b/game/src/main/org/apollo/game/release/r317/Release317.java
@@ -109,7 +109,7 @@ public final class Release317 extends Release {
register(0, new KeepAliveMessageDecoder());
register(101, new PlayerDesignMessageDecoder());
- register(4, new ChatMessageDecoder());
+ register(4, new PublicChatMessageDecoder());
register(103, new CommandMessageDecoder());
register(214, new SwitchItemMessageDecoder());
diff --git a/game/src/main/org/apollo/game/release/r377/PrivateChatMessageDecoder.java b/game/src/main/org/apollo/game/release/r377/PrivateChatMessageDecoder.java
index e47caffe..beb02f41 100644
--- a/game/src/main/org/apollo/game/release/r377/PrivateChatMessageDecoder.java
+++ b/game/src/main/org/apollo/game/release/r377/PrivateChatMessageDecoder.java
@@ -32,7 +32,7 @@ public final class PrivateChatMessageDecoder extends MessageDecoder {
+public final class PublicChatMessageDecoder extends MessageDecoder {
@Override
- public ChatMessage decode(GamePacket packet) {
+ public PublicChatMessage decode(GamePacket packet) {
GamePacketReader reader = new GamePacketReader(packet);
int color = (int) reader.getUnsigned(DataType.BYTE, DataTransformation.NEGATE);
@@ -34,7 +34,7 @@ public final class ChatMessageDecoder extends MessageDecoder {
byte[] recompressed = new byte[length];
TextUtil.compress(uncompressed, recompressed); // in case invalid data gets sent, this effectively verifies it
- return new ChatMessage(uncompressed, recompressed, color, effects);
+ return new PublicChatMessage(uncompressed, recompressed, color, effects);
}
}
\ No newline at end of file
diff --git a/game/src/main/org/apollo/game/release/r377/Release377.java b/game/src/main/org/apollo/game/release/r377/Release377.java
index 74e83925..71460504 100644
--- a/game/src/main/org/apollo/game/release/r377/Release377.java
+++ b/game/src/main/org/apollo/game/release/r377/Release377.java
@@ -108,7 +108,7 @@ public final class Release377 extends Release {
register(248, new KeepAliveMessageDecoder());
register(163, new PlayerDesignMessageDecoder());
- register(49, new ChatMessageDecoder());
+ register(49, new PublicChatMessageDecoder());
register(56, new CommandMessageDecoder());
register(123, new SwitchItemMessageDecoder());
diff --git a/game/src/main/org/apollo/game/sync/block/ChatBlock.java b/game/src/main/org/apollo/game/sync/block/ChatBlock.java
index 241575d5..c192eec7 100644
--- a/game/src/main/org/apollo/game/sync/block/ChatBlock.java
+++ b/game/src/main/org/apollo/game/sync/block/ChatBlock.java
@@ -1,6 +1,6 @@
package org.apollo.game.sync.block;
-import org.apollo.game.message.impl.ChatMessage;
+import org.apollo.game.message.impl.PublicChatMessage;
import org.apollo.game.model.entity.setting.PrivilegeLevel;
/**
@@ -11,9 +11,9 @@ import org.apollo.game.model.entity.setting.PrivilegeLevel;
public final class ChatBlock extends SynchronizationBlock {
/**
- * The {@link ChatMessage}.
+ * The {@link PublicChatMessage}.
*/
- private final ChatMessage chatMessage;
+ private final PublicChatMessage chatMessage;
/**
* The {@link PrivilegeLevel}.
@@ -24,9 +24,9 @@ public final class ChatBlock extends SynchronizationBlock {
* Creates the chat block.
*
* @param privilegeLevel The {@link PrivilegeLevel} of the player who said the message.
- * @param chatMessage The {@link ChatMessage}.
+ * @param chatMessage The {@link PublicChatMessage}.
*/
- ChatBlock(PrivilegeLevel privilegeLevel, ChatMessage chatMessage) {
+ ChatBlock(PrivilegeLevel privilegeLevel, PublicChatMessage chatMessage) {
this.privilegeLevel = privilegeLevel;
this.chatMessage = chatMessage;
}
diff --git a/game/src/main/org/apollo/game/sync/block/SynchronizationBlock.java b/game/src/main/org/apollo/game/sync/block/SynchronizationBlock.java
index 39c3b2e5..238ed7bf 100644
--- a/game/src/main/org/apollo/game/sync/block/SynchronizationBlock.java
+++ b/game/src/main/org/apollo/game/sync/block/SynchronizationBlock.java
@@ -1,6 +1,6 @@
package org.apollo.game.sync.block;
-import org.apollo.game.message.impl.ChatMessage;
+import org.apollo.game.message.impl.PublicChatMessage;
import org.apollo.game.model.Animation;
import org.apollo.game.model.Direction;
import org.apollo.game.model.Graphic;
@@ -47,7 +47,7 @@ public abstract class SynchronizationBlock {
* @param chatMessage The chat message.
* @return The chat block.
*/
- public static SynchronizationBlock createChatBlock(Player player, ChatMessage chatMessage) {
+ public static SynchronizationBlock createChatBlock(Player player, PublicChatMessage chatMessage) {
return new ChatBlock(player.getPrivilegeLevel(), chatMessage);
}
diff --git a/game/src/test/org/apollo/game/message/handler/ChatMessageHandlerTests.java b/game/src/test/org/apollo/game/message/handler/PublicChatMessageHandlerTests.java
similarity index 61%
rename from game/src/test/org/apollo/game/message/handler/ChatMessageHandlerTests.java
rename to game/src/test/org/apollo/game/message/handler/PublicChatMessageHandlerTests.java
index c96a03d3..18f80ccf 100644
--- a/game/src/test/org/apollo/game/message/handler/ChatMessageHandlerTests.java
+++ b/game/src/test/org/apollo/game/message/handler/PublicChatMessageHandlerTests.java
@@ -1,6 +1,6 @@
package org.apollo.game.message.handler;
-import org.apollo.game.message.impl.ChatMessage;
+import org.apollo.game.message.impl.PublicChatMessage;
import org.apollo.game.model.World;
import org.apollo.game.model.entity.Player;
import org.junit.Test;
@@ -15,10 +15,10 @@ import static org.powermock.api.mockito.PowerMockito.*;
@RunWith(PowerMockRunner.class)
@PrepareForTest({Player.class})
-public final class ChatMessageHandlerTests {
+public final class PublicChatMessageHandlerTests {
private final World world = new World();
- private final ChatMessageHandler chatMessageHandler = new ChatMessageHandler(world);
+ private final PublicChatMessageHandler handler = new PublicChatMessageHandler(world);
@Test
public void terminateIfMuted() throws Exception {
@@ -26,9 +26,9 @@ public final class ChatMessageHandlerTests {
when(player.isMuted()).thenReturn(true);
- ChatMessage chatMessage = new ChatMessage("Test", "Test".getBytes(), 0, 0);
- chatMessageHandler.handle(player, chatMessage);
+ PublicChatMessage publicChatMessage = new PublicChatMessage("Test", "Test".getBytes(), 0, 0);
+ handler.handle(player, publicChatMessage);
- assertTrue("ChatMessageHandler: player can send messages when muted", chatMessage.terminated());
+ assertTrue("PublicChatMessageHandler: player can send messages when muted", publicChatMessage.terminated());
}
}
\ No newline at end of file