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