diff --git a/game/src/main/org/apollo/game/message/impl/ReportAbuseMessage.java b/game/src/main/org/apollo/game/message/impl/ReportAbuseMessage.java new file mode 100644 index 00000000..03e877c4 --- /dev/null +++ b/game/src/main/org/apollo/game/message/impl/ReportAbuseMessage.java @@ -0,0 +1,67 @@ +package org.apollo.game.message.impl; + +import org.apollo.net.message.Message; + +/** + * A {@link Message} sent by the client when a player reports another player. + * + * @author Lmctruck30 + */ +public final class ReportAbuseMessage extends Message { + + /** + * The username of the player who was reported. + */ + private final String name; + + /** + * The id of the rule that was broken. + */ + private final int rule; // TODO enum for this? + + /** + * Whether or not a mute was requested. + */ + private final boolean mute; + + /** + * Creates the ReportAbuseMessage. + * + * @param name The username of the reported player. + * @param rule The id of the rule that was broken. + * @param mute The mute flag. + */ + public ReportAbuseMessage(String name, int rule, boolean mute) { + this.name = name; + this.rule = rule; + this.mute = mute; + } + + /** + * Gets the username of the reported player. + * + * @return The reported. + */ + public String getName() { + return name; + } + + /** + * Gets the id of rule that was broken. + * + * @return The rule. + */ + public int getRule() { + return rule; + } + + /** + * Gets whether or not a mute was requested. + * + * @return {@code true} iff a mute was requested. + */ + public boolean getMute() { + return mute; + } + +} 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 dd2da433..5fc9967a 100644 --- a/game/src/main/org/apollo/game/release/r317/Release317.java +++ b/game/src/main/org/apollo/game/release/r317/Release317.java @@ -177,6 +177,8 @@ public final class Release317 extends Release { register(74, new RemoveIgnoreMessageDecoder()); register(126, new PrivateChatMessageDecoder()); + register(218, new ReportAbuseMessageDecoder()); + // register encoders register(IdAssignmentMessage.class, new IdAssignmentMessageEncoder()); register(RegionChangeMessage.class, new RegionChangeMessageEncoder()); diff --git a/game/src/main/org/apollo/game/release/r317/ReportAbuseMessageDecoder.java b/game/src/main/org/apollo/game/release/r317/ReportAbuseMessageDecoder.java new file mode 100644 index 00000000..cf1d4c45 --- /dev/null +++ b/game/src/main/org/apollo/game/release/r317/ReportAbuseMessageDecoder.java @@ -0,0 +1,28 @@ +package org.apollo.game.release.r317; + +import org.apollo.game.message.impl.ReportAbuseMessage; +import org.apollo.net.codec.game.DataType; +import org.apollo.net.codec.game.GamePacket; +import org.apollo.net.codec.game.GamePacketReader; +import org.apollo.net.release.MessageDecoder; +import org.apollo.util.NameUtil; + +/** + * A {@link MessageDecoder} for the {@link ReportAbuseMessage}. + * + * @author Lmctruck30 + */ +public final class ReportAbuseMessageDecoder extends MessageDecoder { + + @Override + public ReportAbuseMessage decode(GamePacket packet) { + GamePacketReader reader = new GamePacketReader(packet); + + String name = NameUtil.decodeBase37(reader.getSigned(DataType.LONG)); + int rule = (int) reader.getUnsigned(DataType.BYTE); + boolean mute = reader.getUnsigned(DataType.BYTE) == 1; + + return new ReportAbuseMessage(name, rule, mute); + } + +} 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 47464f5f..2b2c1e57 100644 --- a/game/src/main/org/apollo/game/release/r377/Release377.java +++ b/game/src/main/org/apollo/game/release/r377/Release377.java @@ -171,6 +171,8 @@ public final class Release377 extends Release { register(160, new RemoveIgnoreMessageDecoder()); register(227, new PrivateChatMessageDecoder()); + register(184, new ReportAbuseMessageDecoder()); + register(IdAssignmentMessage.class, new IdAssignmentMessageEncoder()); register(RegionChangeMessage.class, new RegionChangeMessageEncoder()); register(ServerChatMessage.class, new ServerMessageMessageEncoder()); diff --git a/game/src/main/org/apollo/game/release/r377/ReportAbuseMessageDecoder.java b/game/src/main/org/apollo/game/release/r377/ReportAbuseMessageDecoder.java new file mode 100644 index 00000000..1a3f4034 --- /dev/null +++ b/game/src/main/org/apollo/game/release/r377/ReportAbuseMessageDecoder.java @@ -0,0 +1,28 @@ +package org.apollo.game.release.r377; + +import org.apollo.game.message.impl.ReportAbuseMessage; +import org.apollo.net.codec.game.DataType; +import org.apollo.net.codec.game.GamePacket; +import org.apollo.net.codec.game.GamePacketReader; +import org.apollo.net.release.MessageDecoder; +import org.apollo.util.NameUtil; + +/** + * A {@link MessageDecoder} for the {@link ReportAbuseMessage}. + * + * @author Major + */ +public final class ReportAbuseMessageDecoder extends MessageDecoder { + + @Override + public ReportAbuseMessage decode(GamePacket packet) { + GamePacketReader reader = new GamePacketReader(packet); + + String name = NameUtil.decodeBase37(reader.getSigned(DataType.LONG)); + int rule = (int) reader.getUnsigned(DataType.BYTE); + boolean mute = reader.getUnsigned(DataType.BYTE) == 1; + + return new ReportAbuseMessage(name, rule, mute); + } + +}