Encapsulate "monitored" collection
This commit is contained in:
@@ -32,7 +32,7 @@ import tools.PacketCreator;
|
|||||||
|
|
||||||
public class MonitorCommand extends Command {
|
public class MonitorCommand extends Command {
|
||||||
{
|
{
|
||||||
setDescription("Toggle logging the packets of a player.");
|
setDescription("Toggle monitored packet logging of a character.");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -47,14 +47,9 @@ public class MonitorCommand extends Command {
|
|||||||
player.message("Player '" + params[0] + "' could not be found on this world.");
|
player.message("Player '" + params[0] + "' could not be found on this world.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
boolean monitored = MonitoredChrLogger.monitored.contains(victim.getId());
|
boolean monitored = MonitoredChrLogger.toggleMonitored(victim.getId());
|
||||||
if (monitored) {
|
player.yellowMessage(victim.getId() + " is " + (monitored ? "now being monitored." : "no longer being monitored."));
|
||||||
MonitoredChrLogger.monitored.remove(victim.getId());
|
String message = player.getName() + (monitored ? " has started monitoring " : " has stopped monitoring ") + victim.getId() + ".";
|
||||||
} else {
|
|
||||||
MonitoredChrLogger.monitored.add(victim.getId());
|
|
||||||
}
|
|
||||||
player.yellowMessage(victim.getId() + " is " + (!monitored ? "now being monitored." : "no longer being monitored."));
|
|
||||||
String message = player.getName() + (!monitored ? " has started monitoring " : " has stopped monitoring ") + victim.getId() + ".";
|
|
||||||
Server.getInstance().broadcastGMMessage(c.getWorld(), PacketCreator.serverNotice(5, message));
|
Server.getInstance().broadcastGMMessage(c.getWorld(), PacketCreator.serverNotice(5, message));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,14 +30,14 @@ import net.packet.logging.MonitoredChrLogger;
|
|||||||
|
|
||||||
public class MonitorsCommand extends Command {
|
public class MonitorsCommand extends Command {
|
||||||
{
|
{
|
||||||
setDescription("Show all players having their packets logged.");
|
setDescription("Show all characters being monitored for packet logging");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void execute(Client c, String[] params) {
|
public void execute(Client c, String[] params) {
|
||||||
Character player = c.getPlayer();
|
Character player = c.getPlayer();
|
||||||
for (Integer cid : MonitoredChrLogger.monitored) {
|
for (int chrId : MonitoredChrLogger.getMonitoredChrIds()) {
|
||||||
player.yellowMessage(Character.getNameById(cid) + " is being monitored.");
|
player.yellowMessage(Character.getNameById(chrId) + " is being monitored.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,12 +22,14 @@ package net.packet.logging;
|
|||||||
|
|
||||||
import client.Character;
|
import client.Character;
|
||||||
import client.Client;
|
import client.Client;
|
||||||
|
import net.jcip.annotations.NotThreadSafe;
|
||||||
import net.opcodes.RecvOpcode;
|
import net.opcodes.RecvOpcode;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import tools.HexTool;
|
import tools.HexTool;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
import java.util.Collection;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
@@ -36,18 +38,37 @@ import java.util.Set;
|
|||||||
*
|
*
|
||||||
* @author Alan (SharpAceX)
|
* @author Alan (SharpAceX)
|
||||||
*/
|
*/
|
||||||
|
@NotThreadSafe
|
||||||
public class MonitoredChrLogger {
|
public class MonitoredChrLogger {
|
||||||
private static final Logger log = LoggerFactory.getLogger(MonitoredChrLogger.class);
|
private static final Logger log = LoggerFactory.getLogger(MonitoredChrLogger.class);
|
||||||
public static final Set<Integer> monitored = new HashSet<>();
|
private static final Set<Integer> monitoredChrIds = new HashSet<>();
|
||||||
public static final Set<Integer> ignored = new HashSet<>();
|
public static final Set<Integer> ignored = new HashSet<>();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Toggle monitored status for a character id
|
||||||
|
*
|
||||||
|
* @return new status. true if the chrId is now monitored, otherwise false.
|
||||||
|
*/
|
||||||
|
public static boolean toggleMonitored(int chrId) {
|
||||||
|
if (monitoredChrIds.contains(chrId)) {
|
||||||
|
monitoredChrIds.remove(chrId);
|
||||||
|
return false;
|
||||||
|
} else {
|
||||||
|
monitoredChrIds.add(chrId);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Collection<Integer> getMonitoredChrIds() {
|
||||||
|
return monitoredChrIds;
|
||||||
|
}
|
||||||
|
|
||||||
public static void logPacketIfMonitored(Client c, short packetId, byte[] packetContent) {
|
public static void logPacketIfMonitored(Client c, short packetId, byte[] packetContent) {
|
||||||
Character chr = c.getPlayer();
|
Character chr = c.getPlayer();
|
||||||
if (chr == null) {
|
if (chr == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!monitored.contains(chr.getId())) {
|
if (!monitoredChrIds.contains(chr.getId())) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
RecvOpcode op = getOpcodeFromValue(packetId);
|
RecvOpcode op = getOpcodeFromValue(packetId);
|
||||||
|
|||||||
Reference in New Issue
Block a user