From addc62457ad9ddbbefca890a56e1f12c8bed75d9 Mon Sep 17 00:00:00 2001 From: "Kristian S. Stangeland" Date: Sun, 11 Nov 2012 01:06:11 +0100 Subject: [PATCH] Handle multiple connection sides properly. --- .../com/comphenix/protocol/CommandPacket.java | 39 +++++++++---------- 1 file changed, 19 insertions(+), 20 deletions(-) diff --git a/ProtocolLib/src/main/java/com/comphenix/protocol/CommandPacket.java b/ProtocolLib/src/main/java/com/comphenix/protocol/CommandPacket.java index 56cb2c29..d09189e6 100644 --- a/ProtocolLib/src/main/java/com/comphenix/protocol/CommandPacket.java +++ b/ProtocolLib/src/main/java/com/comphenix/protocol/CommandPacket.java @@ -30,8 +30,10 @@ import com.comphenix.protocol.reflect.FieldAccessException; import com.comphenix.protocol.reflect.PrettyPrinter; import com.comphenix.protocol.utility.ChatExtensions; import com.google.common.collect.DiscreteDomains; +import com.google.common.collect.Maps; import com.google.common.collect.Range; import com.google.common.collect.Ranges; +import com.google.common.collect.Sets; /** * Handles the "packet" debug command. @@ -313,18 +315,19 @@ class CommandPacket extends CommandBase { } private Set getValidPackets(ConnectionSide side) throws FieldAccessException { + HashSet supported = Sets.newHashSet(); + if (side.isForClient()) - return Packets.Client.getSupported(); + supported.addAll(Packets.Client.getSupported()); else if (side.isForServer()) - return Packets.Server.getSupported(); - else - throw new IllegalArgumentException("Illegal side: " + side); + supported.addAll(Packets.Server.getSupported()); + return supported; } private Set getNamedPackets(ConnectionSide side) { Set valids = null; - Set result = null; + Set result = Sets.newHashSet(); try { valids = getValidPackets(side); @@ -334,11 +337,9 @@ class CommandPacket extends CommandBase { // Check connection side if (side.isForClient()) - result = Packets.Client.getRegistry().values(); - else if (side.isForServer()) - result = Packets.Server.getRegistry().values(); - else - throw new IllegalArgumentException("Illegal side: " + side); + result.addAll(Packets.Client.getRegistry().values()); + if (side.isForServer()) + result.addAll(Packets.Server.getRegistry().values()); // Remove invalid packets result.retainAll(valids); @@ -445,11 +446,8 @@ class CommandPacket extends CommandBase { if (listener != null) { if (side.isForClient()) clientListeners.put(idStart, idStop, listener); - else if (side.isForServer()) + if (side.isForServer()) serverListeners.put(idStart, idStop, listener); - else - throw new IllegalArgumentException("Not a legal connection side."); - return listener; } else { throw new IllegalArgumentException("No packets found in the range " + idStart + " - " + idStop + "."); @@ -459,15 +457,16 @@ class CommandPacket extends CommandBase { public Set.Entry> removePacketListeners( ConnectionSide side, int idStart, int idStop, boolean detailed) { + HashSet.Entry> result = Sets.newHashSet(); + // The interval tree will automatically remove the listeners for us if (side.isForClient()) - return clientListeners.remove(idStart, idStop); - else if (side.isForServer()) - return serverListeners.remove(idStart, idStop); - else - throw new IllegalArgumentException("Not a legal connection side."); + result.addAll(clientListeners.remove(idStart, idStop)); + if (side.isForServer()) + result.addAll(serverListeners.remove(idStart, idStop)); + return result; } - + private SubCommand parseCommand(String[] args, int index) { String text = args[index].toLowerCase();