@@ -73,81 +73,89 @@ public class PacketLogging implements CommandExecutor, PacketListener {
73
73
public boolean onCommand (CommandSender sender , Command command , String label , String [] args ) {
74
74
PacketType type = null ;
75
75
76
- if (args .length > 2 ) {
77
- Protocol protocol ;
76
+ try {
77
+ if (args .length > 2 ) {
78
+ Protocol protocol ;
78
79
79
- try {
80
- protocol = Protocol .valueOf (args [0 ].toUpperCase ());
81
- } catch (IllegalArgumentException ex ) {
82
- sender .sendMessage (ChatColor .RED + "Unknown protocol " + args [0 ]);
83
- return true ;
84
- }
80
+ try {
81
+ protocol = Protocol .valueOf (args [0 ].toUpperCase ());
82
+ } catch (IllegalArgumentException ex ) {
83
+ sender .sendMessage (ChatColor .RED + "Unknown protocol " + args [0 ]);
84
+ return true ;
85
+ }
85
86
86
- Sender pSender ;
87
+ Sender pSender ;
87
88
88
- try {
89
- pSender = Sender .valueOf (args [1 ].toUpperCase ());
90
- } catch (IllegalArgumentException ex ) {
91
- sender .sendMessage (ChatColor .RED + "Unknown sender: " + args [1 ]);
92
- return true ;
93
- }
89
+ try {
90
+ pSender = Sender .valueOf (args [1 ].toUpperCase ());
91
+ } catch (IllegalArgumentException ex ) {
92
+ sender .sendMessage (ChatColor .RED + "Unknown sender: " + args [1 ]);
93
+ return true ;
94
+ }
94
95
95
- try {
96
96
try {
97
- int id = Integer .parseInt (args [2 ]);
98
- type = PacketType .findCurrent (protocol , pSender , id );
99
- } catch (NumberFormatException ex ) {
100
- String name = args [2 ];
101
- outer : for (PacketType packet : PacketType .values ()) {
102
- if (packet .getProtocol () == protocol &&
103
- packet .getSender () == pSender ) {
104
- if (packet .name ().equalsIgnoreCase (name )) {
105
- type = packet ;
106
- break outer ;
107
- }
108
- for (String className : packet .getClassNames ()) {
109
- if (className .equalsIgnoreCase (name )) {
97
+ try {
98
+ int id = Integer .parseInt (args [2 ]);
99
+ type = PacketType .findCurrent (protocol , pSender , id );
100
+ } catch (NumberFormatException ex ) {
101
+ String name = args [2 ];
102
+ outer : for (PacketType packet : PacketType .values ()) {
103
+ if (packet .getProtocol () == protocol && packet .getSender () == pSender ) {
104
+ if (packet .name ().equalsIgnoreCase (name )) {
110
105
type = packet ;
111
106
break outer ;
112
107
}
108
+ for (String className : packet .getClassNames ()) {
109
+ if (className .equalsIgnoreCase (name )) {
110
+ type = packet ;
111
+ break outer ;
112
+ }
113
+ }
113
114
}
114
115
}
115
116
}
117
+ } catch (IllegalArgumentException ex ) {
118
+ type = null ;
116
119
}
117
- } catch (IllegalArgumentException ex ) {
118
- sender .sendMessage (ChatColor .RED + "Unknown packet: " + PacketType .format (protocol , pSender , args [2 ]));
119
- return true ;
120
- }
121
120
122
- if (args .length > 3 ) {
123
- if (args [3 ].equalsIgnoreCase ("console" )) {
124
- this .location = LogLocation .CONSOLE ;
125
- } else {
126
- this .location = LogLocation .FILE ;
121
+ if (type == null ) {
122
+ sender .sendMessage (ChatColor .RED + "Unknown packet: " + args [2 ]);
123
+ return true ;
127
124
}
128
- }
129
125
130
- if (pSender == Sender .CLIENT ) {
131
- if (receivingTypes .contains (type )) {
132
- receivingTypes .remove (type );
133
- } else {
134
- receivingTypes .add (type );
126
+ if (args .length > 3 ) {
127
+ if (args [3 ].equalsIgnoreCase ("console" )) {
128
+ this .location = LogLocation .CONSOLE ;
129
+ } else {
130
+ this .location = LogLocation .FILE ;
131
+ }
135
132
}
136
- } else {
137
- if (sendingTypes .contains (type )) {
138
- sendingTypes .remove (type );
133
+
134
+ if (pSender == Sender .CLIENT ) {
135
+ if (receivingTypes .contains (type )) {
136
+ receivingTypes .remove (type );
137
+ } else {
138
+ receivingTypes .add (type );
139
+ }
139
140
} else {
140
- sendingTypes .add (type );
141
+ if (sendingTypes .contains (type )) {
142
+ sendingTypes .remove (type );
143
+ } else {
144
+ sendingTypes .add (type );
145
+ }
141
146
}
147
+
148
+ startLogging ();
149
+ sender .sendMessage (ChatColor .GREEN + "Now logging " + type .getPacketClass ().getSimpleName ());
150
+ return true ;
142
151
}
143
152
144
- startLogging ();
145
- sender .sendMessage (ChatColor .GREEN + "Now logging " + type .getPacketClass ().getSimpleName ());
153
+ sender .sendMessage (ChatColor .RED + "Invalid syntax: /packetlog <protocol> <sender> <packet> [location]" );
154
+ return true ;
155
+ } catch (Throwable ex ) {
156
+ sender .sendMessage (ChatColor .RED + "Failed to parse command: " + ex .toString ());
146
157
return true ;
147
158
}
148
-
149
- sender .sendMessage (ChatColor .RED + "Invalid syntax: /packetlog <protocol> <sender> <packet> [location]" );
150
- return true ;
151
159
}
152
160
153
161
private void startLogging () {
@@ -199,24 +207,26 @@ private static String hexDump(byte[] bytes) throws IOException {
199
207
}
200
208
201
209
private void log (PacketEvent event ) {
202
- String hexDump ;
203
-
204
210
try {
205
211
WirePacket packet = WirePacket .fromPacket (event .getPacket ());
206
- hexDump = hexDump (packet .getBytes ());
212
+ String hexDump = hexDump (packet .getBytes ());
213
+
214
+ if (location == LogLocation .FILE ) {
215
+ fileLogger .log (Level .INFO , event .getPacketType () + ":" );
216
+ fileLogger .log (Level .INFO , hexDump );
217
+ fileLogger .log (Level .INFO , "" );
218
+ } else {
219
+ System .out .println (event .getPacketType () + ":" );
220
+ System .out .println (hexDump );
221
+ System .out .println ();
222
+ }
207
223
} catch (Throwable ex ) {
208
- fileLogger .log (Level .WARNING , "Failed to dump packet: " + ex .toString ());
209
- return ;
210
- }
224
+ plugin .getLogger ().log (Level .WARNING , "Failed to log packet " + event .getPacketType () + ":" , ex );
225
+ plugin .getLogger ().log (Level .WARNING , "Clearing packet logger..." );
211
226
212
- if (location == LogLocation .FILE ) {
213
- fileLogger .log (Level .INFO , event .getPacketType () + ":" );
214
- fileLogger .log (Level .INFO , hexDump );
215
- fileLogger .log (Level .INFO , "" );
216
- } else {
217
- System .out .println (event .getPacketType () + ":" );
218
- System .out .println (hexDump );
219
- System .out .println ();
227
+ sendingTypes .clear ();
228
+ receivingTypes .clear ();
229
+ startLogging ();
220
230
}
221
231
}
222
232
0 commit comments