/mcp/temp/src/minecraft_server/net/minecraft/src/ConsoleCommandHandler.java
Java | 486 lines | 457 code | 21 blank | 8 comment | 94 complexity | 1b5e7a85371a80259495bf898d084caf MD5 | raw file
1// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
2// Jad home page: http://www.kpdus.com/jad.html
3// Decompiler options: packimports(3) braces deadcode fieldsfirst
4
5package net.minecraft.src;
6
7import java.util.*;
8import java.util.logging.Logger;
9import net.minecraft.server.MinecraftServer;
10
11// Referenced classes of package net.minecraft.src:
12// ServerCommand, ICommandListener, ServerConfigurationManager, WorldServer,
13// EntityPlayerMP, NetServerHandler, Item, ItemStack,
14// WorldSettings, ItemInWorldManager, Packet70Bed, Packet3Chat,
15// PropertyManager
16
17public class ConsoleCommandHandler
18{
19
20 private static Logger field_22117_a = Logger.getLogger("Minecraft");
21 private MinecraftServer field_22116_b;
22
23 public ConsoleCommandHandler(MinecraftServer p_i461_1_)
24 {
25 field_22116_b = p_i461_1_;
26 }
27
28 public synchronized void func_22114_a(ServerCommand p_22114_1_)
29 {
30 String s = p_22114_1_.field_1060_a;
31 String as[] = s.split(" ");
32 String s1 = as[0];
33 String s2 = s.substring(s1.length()).trim();
34 ICommandListener icommandlistener = p_22114_1_.field_1059_b;
35 String s3 = icommandlistener.func_1_c();
36 ServerConfigurationManager serverconfigurationmanager = field_22116_b.field_6033_f;
37 if(s1.equalsIgnoreCase("help") || s1.equalsIgnoreCase("?"))
38 {
39 func_22111_a(icommandlistener);
40 } else
41 if(s1.equalsIgnoreCase("list"))
42 {
43 icommandlistener.func_2_b((new StringBuilder()).append("Connected players: ").append(serverconfigurationmanager.func_633_c()).toString());
44 } else
45 if(s1.equalsIgnoreCase("stop"))
46 {
47 func_22115_a(s3, "Stopping the server..");
48 field_22116_b.func_6016_a();
49 } else
50 if(s1.equalsIgnoreCase("save-all"))
51 {
52 func_22115_a(s3, "Forcing save..");
53 if(serverconfigurationmanager != null)
54 {
55 serverconfigurationmanager.func_617_d();
56 }
57 for(int i = 0; i < field_22116_b.field_6034_e.length; i++)
58 {
59 WorldServer worldserver = field_22116_b.field_6034_e[i];
60 boolean flag = worldserver.field_816_A;
61 worldserver.field_816_A = false;
62 worldserver.func_485_a(true, null);
63 worldserver.field_816_A = flag;
64 }
65
66 func_22115_a(s3, "Save complete.");
67 } else
68 if(s1.equalsIgnoreCase("save-off"))
69 {
70 func_22115_a(s3, "Disabling level saving..");
71 for(int j = 0; j < field_22116_b.field_6034_e.length; j++)
72 {
73 WorldServer worldserver1 = field_22116_b.field_6034_e[j];
74 worldserver1.field_816_A = true;
75 }
76
77 } else
78 if(s1.equalsIgnoreCase("save-on"))
79 {
80 func_22115_a(s3, "Enabling level saving..");
81 for(int k = 0; k < field_22116_b.field_6034_e.length; k++)
82 {
83 WorldServer worldserver2 = field_22116_b.field_6034_e[k];
84 worldserver2.field_816_A = false;
85 }
86
87 } else
88 if(s1.equalsIgnoreCase("op"))
89 {
90 serverconfigurationmanager.func_35479_e(s2);
91 func_22115_a(s3, (new StringBuilder()).append("Opping ").append(s2).toString());
92 serverconfigurationmanager.func_628_a(s2, "\247eYou are now op!");
93 } else
94 if(s1.equalsIgnoreCase("deop"))
95 {
96 String s4 = s2;
97 serverconfigurationmanager.func_35478_f(s4);
98 serverconfigurationmanager.func_628_a(s4, "\247eYou are no longer op!");
99 func_22115_a(s3, (new StringBuilder()).append("De-opping ").append(s4).toString());
100 } else
101 if(s1.equalsIgnoreCase("ban-ip"))
102 {
103 String s5 = s2;
104 serverconfigurationmanager.func_22162_c(s5);
105 func_22115_a(s3, (new StringBuilder()).append("Banning ip ").append(s5).toString());
106 } else
107 if(s1.equalsIgnoreCase("pardon-ip"))
108 {
109 String s6 = s2;
110 serverconfigurationmanager.func_22163_d(s6);
111 func_22115_a(s3, (new StringBuilder()).append("Pardoning ip ").append(s6).toString());
112 } else
113 if(s1.equalsIgnoreCase("ban"))
114 {
115 String s7 = s2;
116 serverconfigurationmanager.func_22159_a(s7);
117 func_22115_a(s3, (new StringBuilder()).append("Banning ").append(s7).toString());
118 EntityPlayerMP entityplayermp1 = serverconfigurationmanager.func_620_h(s7);
119 if(entityplayermp1 != null)
120 {
121 entityplayermp1.field_20908_a.func_43_c("Banned by admin");
122 }
123 } else
124 if(s1.equalsIgnoreCase("pardon"))
125 {
126 String s8 = s2;
127 serverconfigurationmanager.func_22161_b(s8);
128 func_22115_a(s3, (new StringBuilder()).append("Pardoning ").append(s8).toString());
129 } else
130 if(s1.equalsIgnoreCase("kick"))
131 {
132 String s9 = s2;
133 EntityPlayerMP entityplayermp2 = null;
134 for(int i1 = 0; i1 < serverconfigurationmanager.field_924_b.size(); i1++)
135 {
136 EntityPlayerMP entityplayermp7 = (EntityPlayerMP)serverconfigurationmanager.field_924_b.get(i1);
137 if(entityplayermp7.field_409_aq.equalsIgnoreCase(s9))
138 {
139 entityplayermp2 = entityplayermp7;
140 }
141 }
142
143 if(entityplayermp2 != null)
144 {
145 entityplayermp2.field_20908_a.func_43_c("Kicked by admin");
146 func_22115_a(s3, (new StringBuilder()).append("Kicking ").append(entityplayermp2.field_409_aq).toString());
147 } else
148 {
149 icommandlistener.func_2_b((new StringBuilder()).append("Can't find user ").append(s9).append(". No kick.").toString());
150 }
151 } else
152 if(s1.equalsIgnoreCase("tp"))
153 {
154 if(as.length == 3)
155 {
156 EntityPlayerMP entityplayermp = serverconfigurationmanager.func_620_h(as[1]);
157 EntityPlayerMP entityplayermp3 = serverconfigurationmanager.func_620_h(as[2]);
158 if(entityplayermp == null)
159 {
160 icommandlistener.func_2_b((new StringBuilder()).append("Can't find user ").append(as[1]).append(". No tp.").toString());
161 } else
162 if(entityplayermp3 == null)
163 {
164 icommandlistener.func_2_b((new StringBuilder()).append("Can't find user ").append(as[2]).append(". No tp.").toString());
165 } else
166 if(entityplayermp.field_4110_as != entityplayermp3.field_4110_as)
167 {
168 icommandlistener.func_2_b((new StringBuilder()).append("User ").append(as[1]).append(" and ").append(as[2]).append(" are in different dimensions. No tp.").toString());
169 } else
170 {
171 entityplayermp.field_20908_a.func_41_a(entityplayermp3.field_322_l, entityplayermp3.field_321_m, entityplayermp3.field_320_n, entityplayermp3.field_316_r, entityplayermp3.field_315_s);
172 func_22115_a(s3, (new StringBuilder()).append("Teleporting ").append(as[1]).append(" to ").append(as[2]).append(".").toString());
173 }
174 } else
175 {
176 icommandlistener.func_2_b("Syntax error, please provide a source and a target.");
177 }
178 } else
179 if(s1.equalsIgnoreCase("give"))
180 {
181 if(as.length != 3 && as.length != 4 && as.length != 5)
182 {
183 return;
184 }
185 String s10 = as[1];
186 EntityPlayerMP entityplayermp4 = serverconfigurationmanager.func_620_h(s10);
187 if(entityplayermp4 != null)
188 {
189 try
190 {
191 int j1 = Integer.parseInt(as[2]);
192 if(Item.field_176_c[j1] != null)
193 {
194 func_22115_a(s3, (new StringBuilder()).append("Giving ").append(entityplayermp4.field_409_aq).append(" some ").append(j1).toString());
195 int k2 = 1;
196 int l2 = 0;
197 if(as.length > 3)
198 {
199 k2 = func_22112_a(as[3], 1);
200 }
201 if(as.length > 4)
202 {
203 l2 = func_22112_a(as[4], 1);
204 }
205 if(k2 < 1)
206 {
207 k2 = 1;
208 }
209 if(k2 > 64)
210 {
211 k2 = 64;
212 }
213 entityplayermp4.func_48348_b(new ItemStack(j1, k2, l2));
214 } else
215 {
216 icommandlistener.func_2_b((new StringBuilder()).append("There's no item with id ").append(j1).toString());
217 }
218 }
219 catch(NumberFormatException numberformatexception1)
220 {
221 icommandlistener.func_2_b((new StringBuilder()).append("There's no item with id ").append(as[2]).toString());
222 }
223 } else
224 {
225 icommandlistener.func_2_b((new StringBuilder()).append("Can't find user ").append(s10).toString());
226 }
227 } else
228 if(s1.equalsIgnoreCase("xp"))
229 {
230 if(as.length != 3)
231 {
232 return;
233 }
234 String s11 = as[1];
235 EntityPlayerMP entityplayermp5 = serverconfigurationmanager.func_620_h(s11);
236 if(entityplayermp5 != null)
237 {
238 try
239 {
240 int k1 = Integer.parseInt(as[2]);
241 k1 = k1 <= 5000 ? k1 : 5000;
242 func_22115_a(s3, (new StringBuilder()).append("Giving ").append(k1).append(" orbs to ").append(entityplayermp5.field_409_aq).toString());
243 entityplayermp5.func_35195_d(k1);
244 }
245 catch(NumberFormatException numberformatexception2)
246 {
247 icommandlistener.func_2_b((new StringBuilder()).append("Invalid orb count: ").append(as[2]).toString());
248 }
249 } else
250 {
251 icommandlistener.func_2_b((new StringBuilder()).append("Can't find user ").append(s11).toString());
252 }
253 } else
254 if(s1.equalsIgnoreCase("gamemode"))
255 {
256 if(as.length != 3)
257 {
258 return;
259 }
260 String s12 = as[1];
261 EntityPlayerMP entityplayermp6 = serverconfigurationmanager.func_620_h(s12);
262 if(entityplayermp6 != null)
263 {
264 try
265 {
266 int l1 = Integer.parseInt(as[2]);
267 l1 = WorldSettings.func_35037_a(l1);
268 if(entityplayermp6.field_425_ad.func_35697_a() != l1)
269 {
270 func_22115_a(s3, (new StringBuilder()).append("Setting ").append(entityplayermp6.field_409_aq).append(" to game mode ").append(l1).toString());
271 entityplayermp6.field_425_ad.func_35696_a(l1);
272 entityplayermp6.field_20908_a.func_39_b(new Packet70Bed(3, l1));
273 } else
274 {
275 func_22115_a(s3, (new StringBuilder()).append(entityplayermp6.field_409_aq).append(" already has game mode ").append(l1).toString());
276 }
277 }
278 catch(NumberFormatException numberformatexception3)
279 {
280 icommandlistener.func_2_b((new StringBuilder()).append("There's no game mode with id ").append(as[2]).toString());
281 }
282 } else
283 {
284 icommandlistener.func_2_b((new StringBuilder()).append("Can't find user ").append(s12).toString());
285 }
286 } else
287 if(s1.equalsIgnoreCase("time"))
288 {
289 if(as.length != 3)
290 {
291 return;
292 }
293 String s13 = as[1];
294 try
295 {
296 int l = Integer.parseInt(as[2]);
297 if("add".equalsIgnoreCase(s13))
298 {
299 for(int i2 = 0; i2 < field_22116_b.field_6034_e.length; i2++)
300 {
301 WorldServer worldserver3 = field_22116_b.field_6034_e[i2];
302 worldserver3.func_32005_b(worldserver3.func_22080_k() + (long)l);
303 }
304
305 func_22115_a(s3, (new StringBuilder()).append("Added ").append(l).append(" to time").toString());
306 } else
307 if("set".equalsIgnoreCase(s13))
308 {
309 for(int j2 = 0; j2 < field_22116_b.field_6034_e.length; j2++)
310 {
311 WorldServer worldserver4 = field_22116_b.field_6034_e[j2];
312 worldserver4.func_32005_b(l);
313 }
314
315 func_22115_a(s3, (new StringBuilder()).append("Set time to ").append(l).toString());
316 } else
317 {
318 icommandlistener.func_2_b("Unknown method, use either \"add\" or \"set\"");
319 }
320 }
321 catch(NumberFormatException numberformatexception)
322 {
323 icommandlistener.func_2_b((new StringBuilder()).append("Unable to convert time value, ").append(as[2]).toString());
324 }
325 } else
326 if(s1.equalsIgnoreCase("say") && s2.length() > 0)
327 {
328 field_22117_a.info((new StringBuilder()).append("[").append(s3).append("] ").append(s2).toString());
329 serverconfigurationmanager.func_631_a(new Packet3Chat((new StringBuilder()).append("\247d[Server] ").append(s2).toString()));
330 } else
331 if(s1.equalsIgnoreCase("tell"))
332 {
333 if(as.length >= 3)
334 {
335 s = s.substring(s.indexOf(" ")).trim();
336 s = s.substring(s.indexOf(" ")).trim();
337 field_22117_a.info((new StringBuilder()).append("[").append(s3).append("->").append(as[1]).append("] ").append(s).toString());
338 s = (new StringBuilder()).append("\2477").append(s3).append(" whispers ").append(s).toString();
339 field_22117_a.info(s);
340 if(!serverconfigurationmanager.func_621_a(as[1], new Packet3Chat(s)))
341 {
342 icommandlistener.func_2_b("There's no player by that name online.");
343 }
344 }
345 } else
346 if(s1.equalsIgnoreCase("whitelist"))
347 {
348 func_22113_a(s3, s, icommandlistener);
349 } else
350 if(s1.equalsIgnoreCase("toggledownfall"))
351 {
352 field_22116_b.field_6034_e[0].func_40218_j();
353 icommandlistener.func_2_b("Toggling rain and snow, hold on...");
354 } else
355 if(s1.equalsIgnoreCase("banlist"))
356 {
357 if(as.length == 2)
358 {
359 if(as[1].equals("ips"))
360 {
361 icommandlistener.func_2_b((new StringBuilder()).append("IP Ban list:").append(func_40648_a(field_22116_b.func_40026_q(), ", ")).toString());
362 }
363 } else
364 {
365 icommandlistener.func_2_b((new StringBuilder()).append("Ban list:").append(func_40648_a(field_22116_b.func_40025_r(), ", ")).toString());
366 }
367 } else
368 {
369 field_22117_a.info("Unknown console command. Type \"help\" for help.");
370 }
371 }
372
373 private void func_22113_a(String p_22113_1_, String p_22113_2_, ICommandListener p_22113_3_)
374 {
375 String as[] = p_22113_2_.split(" ");
376 if(as.length < 2)
377 {
378 return;
379 }
380 String s = as[1].toLowerCase();
381 if("on".equals(s))
382 {
383 func_22115_a(p_22113_1_, "Turned on white-listing");
384 field_22116_b.field_6035_d.func_22118_b("white-list", true);
385 } else
386 if("off".equals(s))
387 {
388 func_22115_a(p_22113_1_, "Turned off white-listing");
389 field_22116_b.field_6035_d.func_22118_b("white-list", false);
390 } else
391 if("list".equals(s))
392 {
393 Set set = field_22116_b.field_6033_f.func_22167_e();
394 String s3 = "";
395 for(Iterator iterator = set.iterator(); iterator.hasNext();)
396 {
397 String s4 = (String)iterator.next();
398 s3 = (new StringBuilder()).append(s3).append(s4).append(" ").toString();
399 }
400
401 p_22113_3_.func_2_b((new StringBuilder()).append("White-listed players: ").append(s3).toString());
402 } else
403 if("add".equals(s) && as.length == 3)
404 {
405 String s1 = as[2].toLowerCase();
406 field_22116_b.field_6033_f.func_22169_k(s1);
407 func_22115_a(p_22113_1_, (new StringBuilder()).append("Added ").append(s1).append(" to white-list").toString());
408 } else
409 if("remove".equals(s) && as.length == 3)
410 {
411 String s2 = as[2].toLowerCase();
412 field_22116_b.field_6033_f.func_22170_l(s2);
413 func_22115_a(p_22113_1_, (new StringBuilder()).append("Removed ").append(s2).append(" from white-list").toString());
414 } else
415 if("reload".equals(s))
416 {
417 field_22116_b.field_6033_f.func_22171_f();
418 func_22115_a(p_22113_1_, "Reloaded white-list from file");
419 }
420 }
421
422 private void func_22111_a(ICommandListener p_22111_1_)
423 {
424 p_22111_1_.func_2_b("To run the server without a gui, start it like this:");
425 p_22111_1_.func_2_b(" java -Xmx1024M -Xms1024M -jar minecraft_server.jar nogui");
426 p_22111_1_.func_2_b("Console commands:");
427 p_22111_1_.func_2_b(" help or ? shows this message");
428 p_22111_1_.func_2_b(" kick <player> removes a player from the server");
429 p_22111_1_.func_2_b(" ban <player> bans a player from the server");
430 p_22111_1_.func_2_b(" pardon <player> pardons a banned player so that they can connect again");
431 p_22111_1_.func_2_b(" ban-ip <ip> bans an IP address from the server");
432 p_22111_1_.func_2_b(" pardon-ip <ip> pardons a banned IP address so that they can connect again");
433 p_22111_1_.func_2_b(" op <player> turns a player into an op");
434 p_22111_1_.func_2_b(" deop <player> removes op status from a player");
435 p_22111_1_.func_2_b(" tp <player1> <player2> moves one player to the same location as another player");
436 p_22111_1_.func_2_b(" give <player> <id> [num] gives a player a resource");
437 p_22111_1_.func_2_b(" tell <player> <message> sends a private message to a player");
438 p_22111_1_.func_2_b(" stop gracefully stops the server");
439 p_22111_1_.func_2_b(" save-all forces a server-wide level save");
440 p_22111_1_.func_2_b(" save-off disables terrain saving (useful for backup scripts)");
441 p_22111_1_.func_2_b(" save-on re-enables terrain saving");
442 p_22111_1_.func_2_b(" list lists all currently connected players");
443 p_22111_1_.func_2_b(" say <message> broadcasts a message to all players");
444 p_22111_1_.func_2_b(" time <add|set> <amount> adds to or sets the world time (0-24000)");
445 p_22111_1_.func_2_b(" gamemode <player> <mode> sets player's game mode (0 or 1)");
446 p_22111_1_.func_2_b(" toggledownfall toggles rain on or off");
447 p_22111_1_.func_2_b(" xp <player> <amount> gives the player the amount of xp (0-5000)");
448 }
449
450 private void func_22115_a(String p_22115_1_, String p_22115_2_)
451 {
452 String s = (new StringBuilder()).append(p_22115_1_).append(": ").append(p_22115_2_).toString();
453 field_22116_b.field_6033_f.func_630_i((new StringBuilder()).append("\2477(").append(s).append(")").toString());
454 field_22117_a.info(s);
455 }
456
457 private int func_22112_a(String p_22112_1_, int p_22112_2_)
458 {
459 try
460 {
461 return Integer.parseInt(p_22112_1_);
462 }
463 catch(NumberFormatException numberformatexception)
464 {
465 return p_22112_2_;
466 }
467 }
468
469 private String func_40648_a(String p_40648_1_[], String p_40648_2_)
470 {
471 int i = p_40648_1_.length;
472 if(0 == i)
473 {
474 return "";
475 }
476 StringBuilder stringbuilder = new StringBuilder();
477 stringbuilder.append(p_40648_1_[0]);
478 for(int j = 1; j < i; j++)
479 {
480 stringbuilder.append(p_40648_2_).append(p_40648_1_[j]);
481 }
482
483 return stringbuilder.toString();
484 }
485
486}