@Override
    public void run() {
        try {
            this.mapper = new Mapper("mapper.yaml");
        } catch (FileNotFoundException e) {
            e.printStackTrace();
            return;
        }

        JarLoader.load("minecraft_server.jar");

        this.playerList = new ReflxPlayerList(this);
        this.commandHandler = new ReflxCommandHandler(this);
        this.eventManager = new ReflxEventManager(this);

        try {
            this.playerList.prepare();
        } catch (NotFoundException | CannotCompileException e) {
            e.printStackTrace();
            return;
        }

        Class minecraftServer;
        try {
            minecraftServer = Class.forName("net.minecraft.server.MinecraftServer");
            Method main = minecraftServer.getDeclaredMethod("main", String[].class);
            String[] arguments = new String[]{ "nogui" };
            main.invoke(null, (Object) arguments);
        } catch (Exception e) {
            e.printStackTrace();
            return;
        }

        try {
            Field serverField = minecraftServer.getDeclaredField("j");
            serverField.setAccessible(true);

            this.dedicatedServer = serverField.get(null);
        } catch (IllegalAccessException | NoSuchFieldException e) {
            e.printStackTrace();
            return;
        }

        try {
            this.playerList.inject();
        } catch (ClassNotFoundException | IllegalAccessException | NoSuchFieldException | NoSuchMethodException | CannotCompileException | InstantiationException | NotFoundException | InvocationTargetException e) {
            e.printStackTrace();
            return;
        }

        try {
            this.commandHandler.inject();
        } catch (ClassNotFoundException | NoSuchFieldException | IllegalAccessException e) {
            e.printStackTrace();
            return;
        }
        
        this.pluginLoader = new ReflxPluginLoader(this);
        this.pluginLoader.load("plugins");

        for (Plugin plugin : this.pluginLoader.getPlugins()) {
            plugin.onEnable();
        }
    }