PageRenderTime 41ms CodeModel.GetById 11ms app.highlight 25ms RepoModel.GetById 0ms app.codeStats 1ms

/mcp/temp/src/minecraft_server/net/minecraft/server/MinecraftServer.java

https://bitbucket.org/vkorolik/twoleanfour-client
Java | 743 lines | 680 code | 60 blank | 3 comment | 63 complexity | 51f8f3ce36ac6abe79f1bb61a7fe2d2c 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.server;
  6
  7import java.io.File;
  8import java.io.IOException;
  9import java.net.InetAddress;
 10import java.net.UnknownHostException;
 11import java.util.ArrayList;
 12import java.util.Collections;
 13import java.util.HashMap;
 14import java.util.Iterator;
 15import java.util.List;
 16import java.util.Random;
 17import java.util.Set;
 18import java.util.logging.Level;
 19import java.util.logging.Logger;
 20import net.minecraft.src.AnvilSaveConverter;
 21import net.minecraft.src.AnvilSaveHandler;
 22import net.minecraft.src.AxisAlignedBB;
 23import net.minecraft.src.ChunkCoordinates;
 24import net.minecraft.src.ChunkProviderServer;
 25import net.minecraft.src.ConsoleCommandHandler;
 26import net.minecraft.src.ConsoleLogManager;
 27import net.minecraft.src.ConvertProgressUpdater;
 28import net.minecraft.src.EntityTracker;
 29import net.minecraft.src.ICommandListener;
 30import net.minecraft.src.ISaveFormat;
 31import net.minecraft.src.IServer;
 32import net.minecraft.src.IUpdatePlayerListBox;
 33import net.minecraft.src.MathHelper;
 34import net.minecraft.src.NetworkListenThread;
 35import net.minecraft.src.Packet;
 36import net.minecraft.src.Packet4UpdateTime;
 37import net.minecraft.src.PropertyManager;
 38import net.minecraft.src.RConConsoleSource;
 39import net.minecraft.src.RConThreadMain;
 40import net.minecraft.src.RConThreadQuery;
 41import net.minecraft.src.ServerCommand;
 42import net.minecraft.src.ServerConfigurationManager;
 43import net.minecraft.src.ServerGUI;
 44import net.minecraft.src.StatList;
 45import net.minecraft.src.ThreadCommandReader;
 46import net.minecraft.src.ThreadServerApplication;
 47import net.minecraft.src.ThreadServerSleep;
 48import net.minecraft.src.Vec3D;
 49import net.minecraft.src.WorldInfo;
 50import net.minecraft.src.WorldManager;
 51import net.minecraft.src.WorldProvider;
 52import net.minecraft.src.WorldServer;
 53import net.minecraft.src.WorldServerMulti;
 54import net.minecraft.src.WorldSettings;
 55import net.minecraft.src.WorldType;
 56
 57public class MinecraftServer
 58    implements Runnable, ICommandListener, IServer
 59{
 60
 61    public static Logger field_6038_a = Logger.getLogger("Minecraft");
 62    public static HashMap field_6037_b = new HashMap();
 63    private String field_40030_s;
 64    private int field_40029_t;
 65    public NetworkListenThread field_6036_c;
 66    public PropertyManager field_6035_d;
 67    public WorldServer field_6034_e[];
 68    public long field_40027_f[];
 69    public long field_40028_g[][];
 70    public ServerConfigurationManager field_6033_f;
 71    private ConsoleCommandHandler field_22005_o;
 72    private boolean field_6025_n;
 73    public boolean field_6032_g;
 74    int field_9014_h;
 75    public String field_9013_i;
 76    public int field_9012_j;
 77    private List field_9010_p;
 78    private List field_6023_p;
 79    public EntityTracker field_6028_k[];
 80    public boolean field_6027_l;
 81    public boolean field_6026_m;
 82    public boolean field_44002_p;
 83    public boolean field_9011_n;
 84    public boolean field_27005_o;
 85    public String field_35014_p;
 86    public int field_48081_t;
 87    private long field_48074_E;
 88    private long field_48075_F;
 89    private long field_48076_G;
 90    private long field_48077_H;
 91    public long field_48080_u[];
 92    public long field_48079_v[];
 93    public long field_48078_w[];
 94    public long field_48082_x[];
 95    private RConThreadQuery field_40032_y;
 96    private RConThreadMain field_40031_z;
 97
 98    public MinecraftServer()
 99    {
100        field_40027_f = new long[100];
101        field_6025_n = true;
102        field_6032_g = false;
103        field_9014_h = 0;
104        field_9010_p = new ArrayList();
105        field_6023_p = Collections.synchronizedList(new ArrayList());
106        field_6028_k = new EntityTracker[3];
107        field_48080_u = new long[100];
108        field_48079_v = new long[100];
109        field_48078_w = new long[100];
110        field_48082_x = new long[100];
111        new ThreadServerSleep(this);
112    }
113
114    private boolean func_6008_d()
115        throws UnknownHostException
116    {
117        field_22005_o = new ConsoleCommandHandler(this);
118        ThreadCommandReader threadcommandreader = new ThreadCommandReader(this);
119        threadcommandreader.setDaemon(true);
120        threadcommandreader.start();
121        ConsoleLogManager.func_641_a();
122        field_6038_a.info("Starting minecraft server version 1.2.5");
123        if(Runtime.getRuntime().maxMemory() / 1024L / 1024L < 512L)
124        {
125            field_6038_a.warning("To start the server with more ram, launch it as \"java -Xmx1024M -Xms1024M -jar minecraft_server.jar\"");
126        }
127        field_6038_a.info("Loading properties");
128        field_6035_d = new PropertyManager(new File("server.properties"));
129        field_40030_s = field_6035_d.func_720_a("server-ip", "");
130        field_6027_l = field_6035_d.func_724_a("online-mode", true);
131        field_6026_m = field_6035_d.func_724_a("spawn-animals", true);
132        field_44002_p = field_6035_d.func_724_a("spawn-npcs", true);
133        field_9011_n = field_6035_d.func_724_a("pvp", true);
134        field_27005_o = field_6035_d.func_724_a("allow-flight", false);
135        field_35014_p = field_6035_d.func_720_a("motd", "A Minecraft Server");
136        field_35014_p.replace('\247', '$');
137        InetAddress inetaddress = null;
138        if(field_40030_s.length() > 0)
139        {
140            inetaddress = InetAddress.getByName(field_40030_s);
141        }
142        field_40029_t = field_6035_d.func_722_a("server-port", 25565);
143        field_6038_a.info((new StringBuilder()).append("Starting Minecraft server on ").append(field_40030_s.length() != 0 ? field_40030_s : "*").append(":").append(field_40029_t).toString());
144        try
145        {
146            field_6036_c = new NetworkListenThread(this, inetaddress, field_40029_t);
147        }
148        catch(IOException ioexception)
149        {
150            field_6038_a.warning("**** FAILED TO BIND TO PORT!");
151            field_6038_a.log(Level.WARNING, (new StringBuilder()).append("The exception was: ").append(ioexception.toString()).toString());
152            field_6038_a.warning("Perhaps a server is already running on that port?");
153            return false;
154        }
155        if(!field_6027_l)
156        {
157            field_6038_a.warning("**** SERVER IS RUNNING IN OFFLINE/INSECURE MODE!");
158            field_6038_a.warning("The server will make no attempt to authenticate usernames. Beware.");
159            field_6038_a.warning("While this makes the game possible to play without internet access, it also opens up the ability for hackers to connect with any username they choose.");
160            field_6038_a.warning("To change this, set \"online-mode\" to \"true\" in the server.settings file.");
161        }
162        field_6033_f = new ServerConfigurationManager(this);
163        field_6028_k[0] = new EntityTracker(this, 0);
164        field_6028_k[1] = new EntityTracker(this, -1);
165        field_6028_k[2] = new EntityTracker(this, 1);
166        long l = System.nanoTime();
167        String s = field_6035_d.func_720_a("level-name", "world");
168        String s1 = field_6035_d.func_720_a("level-seed", "");
169        String s2 = field_6035_d.func_720_a("level-type", "DEFAULT");
170        long l1 = (new Random()).nextLong();
171        if(s1.length() > 0)
172        {
173            try
174            {
175                long l2 = Long.parseLong(s1);
176                if(l2 != 0L)
177                {
178                    l1 = l2;
179                }
180            }
181            catch(NumberFormatException numberformatexception)
182            {
183                l1 = s1.hashCode();
184            }
185        }
186        WorldType worldtype = WorldType.func_46049_a(s2);
187        if(worldtype == null)
188        {
189            worldtype = WorldType.field_48457_b;
190        }
191        field_48081_t = field_6035_d.func_722_a("max-build-height", 256);
192        field_48081_t = ((field_48081_t + 8) / 16) * 16;
193        field_48081_t = MathHelper.func_41051_a(field_48081_t, 64, 256);
194        field_6035_d.func_40657_a("max-build-height", Integer.valueOf(field_48081_t));
195        field_6038_a.info((new StringBuilder()).append("Preparing level \"").append(s).append("\"").toString());
196        func_6017_c(new AnvilSaveConverter(new File(".")), s, l1, worldtype);
197        long l3 = System.nanoTime() - l;
198        String s3 = String.format("%.3fs", new Object[] {
199            Double.valueOf((double)l3 / 1000000000D)
200        });
201        field_6038_a.info((new StringBuilder()).append("Done (").append(s3).append(")! For help, type \"help\" or \"?\"").toString());
202        if(field_6035_d.func_724_a("enable-query", false))
203        {
204            field_6038_a.info("Starting GS4 status listener");
205            field_40032_y = new RConThreadQuery(this);
206            field_40032_y.func_40402_a();
207        }
208        if(field_6035_d.func_724_a("enable-rcon", false))
209        {
210            field_6038_a.info("Starting remote control listener");
211            field_40031_z = new RConThreadMain(this);
212            field_40031_z.func_40402_a();
213        }
214        return true;
215    }
216
217    private void func_6017_c(ISaveFormat p_6017_1_, String p_6017_2_, long p_6017_3_, WorldType p_6017_5_)
218    {
219        if(p_6017_1_.func_22102_a(p_6017_2_))
220        {
221            field_6038_a.info("Converting map!");
222            p_6017_1_.func_22101_a(p_6017_2_, new ConvertProgressUpdater(this));
223        }
224        field_6034_e = new WorldServer[3];
225        field_40028_g = new long[field_6034_e.length][100];
226        int i = field_6035_d.func_722_a("gamemode", 0);
227        i = WorldSettings.func_35037_a(i);
228        field_6038_a.info((new StringBuilder()).append("Default game type: ").append(i).toString());
229        boolean flag = field_6035_d.func_724_a("generate-structures", true);
230        WorldSettings worldsettings = new WorldSettings(p_6017_3_, i, flag, false, p_6017_5_);
231        AnvilSaveHandler anvilsavehandler = new AnvilSaveHandler(new File("."), p_6017_2_, true);
232        for(int j = 0; j < field_6034_e.length; j++)
233        {
234            byte byte0 = 0;
235            if(j == 1)
236            {
237                byte0 = -1;
238            }
239            if(j == 2)
240            {
241                byte0 = 1;
242            }
243            if(j == 0)
244            {
245                field_6034_e[j] = new WorldServer(this, anvilsavehandler, p_6017_2_, byte0, worldsettings);
246            } else
247            {
248                field_6034_e[j] = new WorldServerMulti(this, anvilsavehandler, p_6017_2_, byte0, worldsettings, field_6034_e[0]);
249            }
250            field_6034_e[j].func_4072_a(new WorldManager(this, field_6034_e[j]));
251            field_6034_e[j].field_804_l = field_6035_d.func_722_a("difficulty", 1);
252            field_6034_e[j].func_21116_a(field_6035_d.func_724_a("spawn-monsters", true), field_6026_m);
253            field_6034_e[j].func_22081_n().func_35500_d(i);
254            field_6033_f.func_618_a(field_6034_e);
255        }
256
257        char c = '\304';
258        long l = System.currentTimeMillis();
259        for(int k = 0; k < 1; k++)
260        {
261            field_6038_a.info((new StringBuilder()).append("Preparing start region for level ").append(k).toString());
262            WorldServer worldserver = field_6034_e[k];
263            ChunkCoordinates chunkcoordinates = worldserver.func_22078_l();
264            for(int i1 = -c; i1 <= c && field_6025_n; i1 += 16)
265            {
266                for(int j1 = -c; j1 <= c && field_6025_n; j1 += 16)
267                {
268                    long l1 = System.currentTimeMillis();
269                    if(l1 < l)
270                    {
271                        l = l1;
272                    }
273                    if(l1 > l + 1000L)
274                    {
275                        int k1 = (c * 2 + 1) * (c * 2 + 1);
276                        int i2 = (i1 + c) * (c * 2 + 1) + (j1 + 1);
277                        func_6019_a("Preparing spawn area", (i2 * 100) / k1);
278                        l = l1;
279                    }
280                    worldserver.field_20911_y.func_376_d(chunkcoordinates.field_22216_a + i1 >> 4, chunkcoordinates.field_528_b + j1 >> 4);
281                    while(worldserver.func_6156_d() && field_6025_n) ;
282                }
283
284            }
285
286        }
287
288        func_6011_e();
289    }
290
291    private void func_6019_a(String p_6019_1_, int p_6019_2_)
292    {
293        field_9013_i = p_6019_1_;
294        field_9012_j = p_6019_2_;
295        field_6038_a.info((new StringBuilder()).append(p_6019_1_).append(": ").append(p_6019_2_).append("%").toString());
296    }
297
298    private void func_6011_e()
299    {
300        field_9013_i = null;
301        field_9012_j = 0;
302    }
303
304    private void func_6012_f()
305    {
306        field_6038_a.info("Saving chunks");
307        for(int i = 0; i < field_6034_e.length; i++)
308        {
309            WorldServer worldserver = field_6034_e[i];
310            worldserver.func_485_a(true, null);
311            worldserver.func_30006_w();
312        }
313
314    }
315
316    private void func_6013_g()
317    {
318        field_6038_a.info("Stopping server");
319        if(field_6033_f != null)
320        {
321            field_6033_f.func_617_d();
322        }
323        for(int i = 0; i < field_6034_e.length; i++)
324        {
325            WorldServer worldserver = field_6034_e[i];
326            if(worldserver != null)
327            {
328                func_6012_f();
329            }
330        }
331
332    }
333
334    public void func_6016_a()
335    {
336        field_6025_n = false;
337    }
338
339    public void run()
340    {
341        try
342        {
343            if(func_6008_d())
344            {
345                long l = System.currentTimeMillis();
346                long l1 = 0L;
347                while(field_6025_n) 
348                {
349                    long l2 = System.currentTimeMillis();
350                    long l3 = l2 - l;
351                    if(l3 > 2000L)
352                    {
353                        field_6038_a.warning("Can't keep up! Did the system time change, or is the server overloaded?");
354                        l3 = 2000L;
355                    }
356                    if(l3 < 0L)
357                    {
358                        field_6038_a.warning("Time ran backwards! Did the system time change?");
359                        l3 = 0L;
360                    }
361                    l1 += l3;
362                    l = l2;
363                    if(field_6034_e[0].func_22084_q())
364                    {
365                        func_6018_h();
366                        l1 = 0L;
367                    } else
368                    {
369                        while(l1 > 50L) 
370                        {
371                            l1 -= 50L;
372                            func_6018_h();
373                        }
374                    }
375                    Thread.sleep(1L);
376                }
377            } else
378            {
379                while(field_6025_n) 
380                {
381                    func_6021_b();
382                    try
383                    {
384                        Thread.sleep(10L);
385                    }
386                    catch(InterruptedException interruptedexception)
387                    {
388                        interruptedexception.printStackTrace();
389                    }
390                }
391            }
392        }
393        catch(Throwable throwable1)
394        {
395            throwable1.printStackTrace();
396            field_6038_a.log(Level.SEVERE, "Unexpected exception", throwable1);
397            while(field_6025_n) 
398            {
399                func_6021_b();
400                try
401                {
402                    Thread.sleep(10L);
403                }
404                catch(InterruptedException interruptedexception1)
405                {
406                    interruptedexception1.printStackTrace();
407                }
408            }
409            try
410            {
411                func_6013_g();
412                field_6032_g = true;
413            }
414            catch(Throwable throwable2)
415            {
416                throwable2.printStackTrace();
417            }
418            finally
419            {
420                System.exit(0);
421            }
422            break MISSING_BLOCK_LABEL_346;
423        }
424        try
425        {
426            func_6013_g();
427            field_6032_g = true;
428        }
429        catch(Throwable throwable)
430        {
431            throwable.printStackTrace();
432        }
433        finally
434        {
435            System.exit(0);
436        }
437        break MISSING_BLOCK_LABEL_346;
438        Exception exception2;
439        exception2;
440        try
441        {
442            func_6013_g();
443            field_6032_g = true;
444        }
445        catch(Throwable throwable3)
446        {
447            throwable3.printStackTrace();
448        }
449        finally
450        {
451            System.exit(0);
452        }
453        throw exception2;
454    }
455
456    private void func_6018_h()
457    {
458        long l = System.nanoTime();
459        ArrayList arraylist = new ArrayList();
460        for(Iterator iterator = field_6037_b.keySet().iterator(); iterator.hasNext();)
461        {
462            String s = (String)iterator.next();
463            int j1 = ((Integer)field_6037_b.get(s)).intValue();
464            if(j1 > 0)
465            {
466                field_6037_b.put(s, Integer.valueOf(j1 - 1));
467            } else
468            {
469                arraylist.add(s);
470            }
471        }
472
473        for(int i = 0; i < arraylist.size(); i++)
474        {
475            field_6037_b.remove(arraylist.get(i));
476        }
477
478        AxisAlignedBB.func_703_a();
479        Vec3D.func_761_a();
480        field_9014_h++;
481        for(int j = 0; j < field_6034_e.length; j++)
482        {
483            long l1 = System.nanoTime();
484            if(j == 0 || field_6035_d.func_724_a("allow-nether", true))
485            {
486                WorldServer worldserver = field_6034_e[j];
487                if(field_9014_h % 20 == 0)
488                {
489                    field_6033_f.func_28169_a(new Packet4UpdateTime(worldserver.func_22080_k()), worldserver.field_4272_q.field_6165_g);
490                }
491                worldserver.func_22077_g();
492                while(worldserver.func_6156_d()) ;
493                worldserver.func_459_b();
494            }
495            field_40028_g[j][field_9014_h % 100] = System.nanoTime() - l1;
496        }
497
498        field_6036_c.func_715_a();
499        field_6033_f.func_637_b();
500        for(int k = 0; k < field_6028_k.length; k++)
501        {
502            field_6028_k[k].func_607_a();
503        }
504
505        for(int i1 = 0; i1 < field_9010_p.size(); i1++)
506        {
507            ((IUpdatePlayerListBox)field_9010_p.get(i1)).func_690_a();
508        }
509
510        try
511        {
512            func_6021_b();
513        }
514        catch(Exception exception)
515        {
516            field_6038_a.log(Level.WARNING, "Unexpected exception while parsing console command", exception);
517        }
518        field_40027_f[field_9014_h % 100] = System.nanoTime() - l;
519        field_48080_u[field_9014_h % 100] = Packet.field_48099_n - field_48074_E;
520        field_48074_E = Packet.field_48099_n;
521        field_48079_v[field_9014_h % 100] = Packet.field_48100_o - field_48075_F;
522        field_48075_F = Packet.field_48100_o;
523        field_48078_w[field_9014_h % 100] = Packet.field_48101_l - field_48076_G;
524        field_48076_G = Packet.field_48101_l;
525        field_48082_x[field_9014_h % 100] = Packet.field_48102_m - field_48077_H;
526        field_48077_H = Packet.field_48102_m;
527    }
528
529    public void func_6010_a(String p_6010_1_, ICommandListener p_6010_2_)
530    {
531        field_6023_p.add(new ServerCommand(p_6010_1_, p_6010_2_));
532    }
533
534    public void func_6021_b()
535    {
536        ServerCommand servercommand;
537        for(; field_6023_p.size() > 0; field_22005_o.func_22114_a(servercommand))
538        {
539            servercommand = (ServerCommand)field_6023_p.remove(0);
540        }
541
542    }
543
544    public void func_6022_a(IUpdatePlayerListBox p_6022_1_)
545    {
546        field_9010_p.add(p_6022_1_);
547    }
548
549    public static void main(String p_main_0_[])
550    {
551        StatList.func_27092_a();
552        try
553        {
554            MinecraftServer minecraftserver = new MinecraftServer();
555            if(!java.awt.GraphicsEnvironment.isHeadless() && (p_main_0_.length <= 0 || !p_main_0_[0].equals("nogui")))
556            {
557                ServerGUI.func_46_a(minecraftserver);
558            }
559            (new ThreadServerApplication("Server thread", minecraftserver)).start();
560        }
561        catch(Exception exception)
562        {
563            field_6038_a.log(Level.SEVERE, "Failed to start the minecraft server", exception);
564        }
565    }
566
567    public File func_6009_a(String p_6009_1_)
568    {
569        return new File(p_6009_1_);
570    }
571
572    public void func_2_b(String p_2_1_)
573    {
574        field_6038_a.info(p_2_1_);
575    }
576
577    public void func_25002_c(String p_25002_1_)
578    {
579        field_6038_a.warning(p_25002_1_);
580    }
581
582    public String func_1_c()
583    {
584        return "CONSOLE";
585    }
586
587    public WorldServer func_28004_a(int p_28004_1_)
588    {
589        if(p_28004_1_ == -1)
590        {
591            return field_6034_e[1];
592        }
593        if(p_28004_1_ == 1)
594        {
595            return field_6034_e[2];
596        } else
597        {
598            return field_6034_e[0];
599        }
600    }
601
602    public EntityTracker func_28003_b(int p_28003_1_)
603    {
604        if(p_28003_1_ == -1)
605        {
606            return field_6028_k[1];
607        }
608        if(p_28003_1_ == 1)
609        {
610            return field_6028_k[2];
611        } else
612        {
613            return field_6028_k[0];
614        }
615    }
616
617    public int func_40011_a(String p_40011_1_, int p_40011_2_)
618    {
619        return field_6035_d.func_722_a(p_40011_1_, p_40011_2_);
620    }
621
622    public String func_40023_a(String p_40023_1_, String p_40023_2_)
623    {
624        return field_6035_d.func_720_a(p_40023_1_, p_40023_2_);
625    }
626
627    public void func_40017_a(String p_40017_1_, Object p_40017_2_)
628    {
629        field_6035_d.func_40657_a(p_40017_1_, p_40017_2_);
630    }
631
632    public void func_40019_c()
633    {
634        field_6035_d.func_721_b();
635    }
636
637    public String func_40013_e()
638    {
639        File file = field_6035_d.func_40656_c();
640        if(file != null)
641        {
642            return file.getAbsolutePath();
643        } else
644        {
645            return "No settings file";
646        }
647    }
648
649    public String func_40009_f()
650    {
651        return field_40030_s;
652    }
653
654    public int func_40022_g()
655    {
656        return field_40029_t;
657    }
658
659    public String func_40014_h()
660    {
661        return field_35014_p;
662    }
663
664    public String func_40012_i()
665    {
666        return "1.2.5";
667    }
668
669    public int func_40018_j()
670    {
671        return field_6033_f.func_35481_g();
672    }
673
674    public int func_40015_k()
675    {
676        return field_6033_f.func_35480_h();
677    }
678
679    public String[] func_40016_l()
680    {
681        return field_6033_f.func_40575_d();
682    }
683
684    public String func_40024_m()
685    {
686        return field_6035_d.func_720_a("level-name", "world");
687    }
688
689    public String func_40020_n()
690    {
691        return "";
692    }
693
694    public void func_40010_o()
695    {
696    }
697
698    public String func_40008_d(String p_40008_1_)
699    {
700        RConConsoleSource.field_40005_a.func_40002_a();
701        field_22005_o.func_22114_a(new ServerCommand(p_40008_1_, RConConsoleSource.field_40005_a));
702        return RConConsoleSource.field_40005_a.func_40003_b();
703    }
704
705    public boolean func_40021_p()
706    {
707        return false;
708    }
709
710    public void func_40007_e(String p_40007_1_)
711    {
712        field_6038_a.log(Level.SEVERE, p_40007_1_);
713    }
714
715    public void func_40006_f(String p_40006_1_)
716    {
717        if(func_40021_p())
718        {
719            field_6038_a.log(Level.INFO, p_40006_1_);
720        }
721    }
722
723    public String[] func_40026_q()
724    {
725        return (String[])field_6033_f.func_40574_f().toArray(new String[0]);
726    }
727
728    public String[] func_40025_r()
729    {
730        return (String[])field_6033_f.func_40576_e().toArray(new String[0]);
731    }
732
733    public String func_52003_getServerModName()
734    {
735        return "vanilla";
736    }
737
738    public static boolean func_6015_a(MinecraftServer p_6015_0_)
739    {
740        return p_6015_0_.field_6025_n;
741    }
742
743}