summaryrefslogtreecommitdiffstats
path: root/src/org/bukkit/craftbukkit/CraftServer.java
blob: c6aaec7e7ae0d54a8f103fe102b3d47a6b8f32b5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85

package org.bukkit.craftbukkit;

import java.io.File;
import java.util.HashMap;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.bukkit.*;
import net.minecraft.server.*;
import org.bukkit.plugin.Plugin;
import org.bukkit.plugin.PluginManager;
import org.bukkit.plugin.SimplePluginManager;
import org.bukkit.plugin.java.JavaPluginLoader;

public final class CraftServer implements Server {
    private final String serverName = "Craftbukkit";
    private final String serverVersion;
    private final HashMap<String, Player> playerCache = new HashMap<String, Player>();
    private final PluginManager pluginManager = new SimplePluginManager(this);

    protected final MinecraftServer console;
    protected final ServerConfigurationManager server;

    public CraftServer(MinecraftServer instance, String ver) {
        serverVersion = ver;

        console = instance;
        server = console.f;

        pluginManager.RegisterInterface(JavaPluginLoader.class);

        File pluginFolder = new File("plugins");
        if (pluginFolder.exists()) {
            try {
                pluginManager.loadPlugins(pluginFolder);
            } catch (Throwable ex) {
                Logger.getLogger(CraftServer.class.getName()).log(Level.SEVERE, "(Did you extract the lib folder?)", ex);
            }
        } else {
            pluginFolder.mkdir();
        }
    }

    public String getName() {
        return serverName;
    }

    public String getVersion() {
        return serverVersion;
    }

    public Player[] getOnlinePlayers() {
        List<EntityPlayerMP> online = server.b;
        Player[] players = new Player[online.size()];

        for (int i = 0; i < players.length; i++) {
            String name = online.get(i).aw;
            
            if (playerCache.containsKey(name)) {
                players[i] = playerCache.get(name);
            } else {
                players[i] = new CraftPlayer(this, online.get(i));
                playerCache.put(name, players[i]);
            }
        }

        return players;
    }

    public Player getPlayer(EntityPlayerMP entity) {
        Player result = playerCache.get(entity.aw);

        if (result == null) {
            result = new CraftPlayer(this, entity);
            playerCache.put(entity.aw, result);
        }

        return result;
    }

    public PluginManager getPluginManager() {
        return pluginManager;
    }
}