Merge pull request #332 from Major-/report

Add support for decoding Report Abuse messages
This commit is contained in:
Gary Tierney
2017-05-25 15:23:15 +01:00
committed by GitHub
5 changed files with 127 additions and 0 deletions
@@ -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;
}
}
@@ -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());
@@ -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<ReportAbuseMessage> {
@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);
}
}
@@ -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());
@@ -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<ReportAbuseMessage> {
@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);
}
}