IllegalAccessError --- I cant accsess my public class

Discussion in 'Spigot Plugin Development' started by DasBabyPixel, Oct 19, 2019.

  1. I am currently creating my mini-game and have an error that I dont understand:
    java.lang.IllegalAccessError: tried to access class de.pixel.wb.game.Lobby$1 from class de.pixel.wb.game.Lobby
    at de.pixel.wb.game.Lobby.<clinit>(Lobby.java:30) ~[?:?]
    at de.pixel.wb.Main.onEnable(Main.java:91) ~[?:?]
    at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:321) ~[spigot-1.8.8.jar:git-Spigot-db6de12-18fbb24]
    at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:340) [spigot-1.8.8.jar:git-Spigot-db6de12-18fbb24]
    at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:405) [spigot-1.8.8.jar:git-Spigot-db6de12-18fbb24]
    at org.bukkit.craftbukkit.v1_8_R3.CraftServer.loadPlugin(CraftServer.java:357) [spigot-1.8.8.jar:git-Spigot-db6de12-18fbb24]
    at org.bukkit.craftbukkit.v1_8_R3.CraftServer.enablePlugins(CraftServer.java:317) [spigot-1.8.8.jar:git-Spigot-db6de12-18fbb24]
    at net.minecraft.server.v1_8_R3.MinecraftServer.s(MinecraftServer.java:414) [spigot-1.8.8.jar:git-Spigot-db6de12-18fbb24]
    at net.minecraft.server.v1_8_R3.MinecraftServer.k(MinecraftServer.java:378) [spigot-1.8.8.jar:git-Spigot-db6de12-18fbb24]
    at net.minecraft.server.v1_8_R3.MinecraftServer.a(MinecraftServer.java:333) [spigot-1.8.8.jar:git-Spigot-db6de12-18fbb24]
    at net.minecraft.server.v1_8_R3.DedicatedServer.init(DedicatedServer.java:263) [spigot-1.8.8.jar:git-Spigot-db6de12-18fbb24]
    at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:525) [spigot-1.8.8.jar:git-Spigot-db6de12-18fbb24]
    at java.lang.Thread.run(Unknown Source) [?:1.8.0_221]

    Maybe it should be mensioned that I never changed anything in that class or the loader classes.
    I created an updater for my Plugin, it works fine but after I re-enable it, it brakes the plugin
    Any Ideas?

    Code (Java):
    package de.pixel.wb.game;

    import static de.pixel.wb.util.Debug.*;

    import java.util.*;

    import org.bukkit.*;
    import org.bukkit.configuration.file.*;
    import org.bukkit.entity.*;
    import org.bukkit.event.*;
    import org.bukkit.event.block.*;
    import org.bukkit.event.entity.*;
    import org.bukkit.event.player.*;

    import de.pixel.sbapi.*;
    import de.pixel.wb.*;
    import de.pixel.wb.Main;
    import de.pixel.wb.util.*;
    import de.pixel.wb.util.Team;

    @SuppressWarnings("deprecation")
    public class Lobby extends GameState implements LobbyImpl {

        public static final String HEADER_TEMPLATE = "{name}\\\n" + "{prefix}\\\n" + "";
        public static final String FOOTER_TEMPLATE = "\\\n" + "§7Server: §6{server}\\\n" + "§7Map: §6{map}";

        private boolean isEnabled = false;
        private int time;
     
        static int deathTimer = Bukkit.getScheduler().scheduleSyncRepeatingTask(Main.getPlugin(), new Runnable() {

            @Override
            public void run() {
                if (Main.getGameState().getLobby() != null && Main.getGameState().getLobby().isEnabled()) {
                    if (isPaused)
                        return;
                    for (Player p : Main.getPlayers()) {
                        YamlConfiguration cfg = Main.getPlugin().getConfig("lobby");
                        if (p.getLocation().getBlockY() < cfg.getInt("deathheight")) {
                            p.teleport(Main.getGameState().getLobby().getSpawn());
                        }
                    }
                }
            }
        }, 10, 10);

        public Lobby() {
            send("Created Lobby");
            this.onEnable();
        }

        @Override
        public boolean isLobby() {
            return true;
        }

        @Override
        public Lobby getLobby() {
            return this;
        }

        @Override
        public void onEnable() {
            for (Player all : Bukkit.getOnlinePlayers()) {
                loadPlayer(all);
            }
            Bukkit.getPluginManager().registerEvents(this, Main.getPlugin());

            send("Enabled Lobby");
            initCountdown();
            isEnabled = true;
        }

        @Override
        public void onDisable() {

            send("Disabled Lobby");
            isEnabled = false;
        }

        @Override
        public boolean isEnabled() {
            return isEnabled;
        }

        @Override
        public boolean isEndGame() {
            return false;
        }

        @Override
        public EndGame getEndGame() {
            return null;
        }

        @Override
        public boolean isIngame() {
            return false;
        }

        @Override
        public Ingame getIngame() {
            return null;
        }

        public Location getSpawn() {
            return Main.getLobbySpawn();
        }

        public Lobby setSpawn(Location spawn) {
            Main.setLobbySpawn(spawn);
            return this;
        }

        public void teleportToSpawn(Player p) {
            Location loc = getSpawn();
            if (loc != null)
                p.teleport(loc);
            else
                p.sendMessage(Message.ERROR_UNKNOWN_VALUE.getMessageWithLocale(p.getUniqueId().toString(), "LobbySpawn"));
            send("Player " + p.getName() + " was teleportet to " + Locations.toDisplay(p.getLocation()));
        }

        public void loadTab(Player p) {
            reloadTab(p);
        }

        public void reloadTab(Player p) {
            Tab tab = new Tab();
            Header h = new Header(
                    HEADER_TEMPLATE.replaceFirst("\\{name\\}", ChatColor.translateAlternateColorCodes('&', Main.getPlugin().getConfig().getString("servername")))
                            .replaceFirst("\\{prefix\\}", "§r» " + Main.prefix + " «").replaceAll("Â", ""));
            Footer f = new Footer(FOOTER_TEMPLATE.replaceFirst("\\{server\\}", Bukkit.getServerName()).replaceFirst(
                    "\\{map\\}", Main.getMaps().size() == 0 ? "No maps available" : Main.getMaps().get(0).getName()));
            tab.setHeaderFooter(new HeaderFooter(h.getHeader(), f.getFooter()));
            tab.sendToPlayer(p);
        }

        public int getTime() {
            return time;
        }

        private static boolean isPaused = false;

        public void pause() {
            isPaused = true;
        }

        public void resume() {
            isPaused = false;
        }

        @Override
        public void loadPlayer(Player p) {
            loadTab(p);
            ScoreboardManager.load(p);
        }

        @EventHandler
        public void onDamage(EntityDamageEvent e) {
            if (!isEnabled)
                return;
            e.setCancelled(true);
        }

        @EventHandler
        public void onBreak(BlockBreakEvent e) {
            if (!isEnabled)
                return;
            e.setCancelled(true);
        }

        @EventHandler
        public void onPlace(BlockPlaceEvent e) {
            if (!isEnabled)
                return;
            e.setCancelled(true);
        }

        @EventHandler
        public void onChat(PlayerChatEvent e) {
            if (!isEnabled)
                return;
            Player p = e.getPlayer();
            String msg = e.getMessage();
            msg = msg.replaceAll("%", "%%");
            String prefix = ScoreboardManager.sbmap.get(p.getUniqueId().toString()).getScoreboard()
                    .getEntryTeam(p.getName()).getPrefix();
            msg = prefix + p.getName() + "§r: " + msg;
            e.setFormat(msg);
        }

        @EventHandler
        public void onJoin(PlayerJoinEvent e) {
            if (!isEnabled)
                return;
            e.setJoinMessage(null);
            Player p = e.getPlayer();
            p.getInventory().clear();
         
            Bukkit.getOnlinePlayers().stream().forEach(this::loadPlayer);
            teleportToSpawn(p);
         
            if (Main.getMaxGamePlayers() >= Main.getPlayers().size()) {
                Collections.sort(Team.getTeams());
                Team.getTeams().get(Team.getTeams().size() - 1).add(p);
            }
            Main.sendMessage(Message.PLAYER_JOINED_GAME, Main.getTeamColor(p) + p.getName());
        }

        @EventHandler
        public void onQuit(PlayerQuitEvent e) {
            if (!isEnabled)
                return;
            Player p = e.getPlayer();
            Main.sendMessage(Message.PLAYER_LEFT_GAME, Main.getTeamColor(p) + p.getName());
            e.setQuitMessage(null);
            if (Main.getTeam(p) != null)
                Main.getTeam(p).removePlayer(p);
            ScoreboardManager.sbmap.remove(p.getUniqueId().toString());
            for (Team team : Team.getTeams())
                team.removePlayer(p);
        }

        private boolean isCountdownRunning = false;
        private int countdownTime = 60;

        @Override
        public void setCountdown(int time) {
            countdownTime = time;
        }

        @Override
        public void initCountdown() {
            if (isCountdownRunning)
                return;
            isCountdownRunning = true;
            Debug.send("Resumed countdown");
            countdownScheduler = Bukkit.getScheduler().scheduleSyncRepeatingTask(Main.getPlugin(), countdown, 0, 20);
        }

        private boolean started60s = false;
        private boolean started10s = false;
        public static boolean waiting_for_ingame = false;
        private int waiting_message = 10;
        public static int countdownScheduler = -1;
        private Runnable countdown = new Runnable() {

            @Override
            public void run() {
             
                if (!isEnabled)
                    return;
                if (isPaused)
                    return;
                if (waiting_message == 0) {
                    waiting_message = 10;
                    Main.sendMessage(Message.WAITING_FOR_MORE_PLAYERS);
                }

                if (Main.getPlayers().size() < 2) {
                    waiting_message--;
                    setCountdown(60);
                    started10s = false;
                    started60s = false;
                    for (Player p : Bukkit.getOnlinePlayers()) {
                        p.setLevel(countdownTime);
                        p.setExp(countdownTime / 60f);
                        ScoreboardManager.getTeam(p, "time").setSuffix(Integer.toString(countdownTime));
                    }
                    return;
                }

                if (!started60s) {
                    started60s = true;
                    setCountdown(60);
                }
                if (!started10s && Main.getPlayers().size() == Main.getMaxGamePlayers()) {
                    started10s = true;
                    setCountdown(10);
                }

                if (countdownTime <= 0) {
                    Main.setGameState(new Ingame());
                    onDisable();
                }

                countdownTime--;

                for (Player p : Main.getPlayers()) {
                    p.setLevel(countdownTime);
                    p.setExp(countdownTime / 60f);
                    ScoreboardManager.getTeam(p, "map")
                            .setSuffix(Main.getActiveMap() == null ? "Not available" : Main.getActiveMap().getName());
                    ScoreboardManager.getTeam(p, "time").setSuffix(Integer.toString(countdownTime));
                }
            }
        };

        @Override
        public boolean isCountdownRunning() {
            return isCountdownRunning;
        }
    }
    The onEnable() method is NOT mensioned to be the JavaPlugin onEnable(), it is another method for my other classes
     
  2. md_5

    Administrator Developer

    Do a clean recompile.
    Also be careful of all those * imports.
     
  3. I recompiled multiple times, and the * Imports are compiled to normal ones, I configured eclipse like that. I am wondering, why i cant accsess that class out of my own class. This happens since I have written my updater.
    Code (Text):
    package de.pixel.wbupdater;

    import java.io.*;
    import java.lang.reflect.*;
    import java.net.*;
    import java.nio.file.*;
    import java.util.*;
    import java.util.Map;

    import org.bukkit.*;
    import org.bukkit.command.*;
    import org.bukkit.command.Command;
    import org.bukkit.event.*;
    import org.bukkit.plugin.*;
    import org.bukkit.plugin.Plugin;
    import org.bukkit.plugin.java.*;

    import de.pixel.wb.*;

    public class MainUpdater extends JavaPlugin {

        private static boolean hasUpdated = false;

        public MainUpdater() {
        }

        @SuppressWarnings({ "null", "unchecked" })
        public static void load(String name) {
            Plugin target = null;

            File pluginDir = new File("./plugins");
            if (!pluginDir.isDirectory()) {
                return;
            }
            File pluginFile = new File(pluginDir, name.endsWith(".jar") ? name : name + ".jar");
            if (!pluginFile.isFile()) {
                for (File f : pluginDir.listFiles()) {
                    if (f.getName().endsWith(".jar")) {
                        try {
                            PluginDescriptionFile desc = Main.getPlugin(Main.class).getPluginLoader()
                                    .getPluginDescription(f);
                            if (desc.getName().equalsIgnoreCase(name)) {
                                pluginFile = f;
                                break;
                            }
                        } catch (InvalidDescriptionException e) {
                        }
                    }
                }
            }
            boolean overJump = false;
            try {
                System.out.println("[WoolBattleUpdater] Searching for plugin " + name.replace(".jar", ""));
                Plugin pl = Bukkit.getPluginManager().getPlugin(name.replace(".jar", ""));
                if (pl == null) {
                    JavaPluginLoader loader = (JavaPluginLoader) MainUpdater.getPlugin(MainUpdater.class).getPluginLoader();
                    Field f = loader.getClass().getDeclaredField("loaders");
                    f.setAccessible(true);
                    Map<String, ?> loaders = (Map<String, ?>) f.get(loader);
                    URLClassLoader urlloader = (URLClassLoader) loaders.get(name.replace(".jar", ""));
                    Class<? extends URLClassLoader> plloader = Class.forName("org.bukkit.plugin.java.PluginClassLoader").asSubclass(urlloader.getClass());
                    Field f1 = plloader.getDeclaredField("plugin");
                    Field f2 = plloader.getDeclaredField("pluginInit");
                    f1.setAccessible(true);
                    f2.setAccessible(true);
                    Object f1plugin = f1.get(urlloader);
                    Object f2plugin = f2.get(urlloader);
                    System.out.println(f1plugin);
                    System.out.println(f2plugin);
                    f1.set(urlloader, null);
                    f2.set(urlloader, null);
                    f1plugin = f1.get(urlloader);
                    f2plugin = f2.get(urlloader);
                    System.out.println(f1plugin);
                    System.out.println(f2plugin);
                    target = Bukkit.getPluginManager().loadPlugin(pluginFile);
                } else {
                    target = pl;
                    pl.onLoad();
                    Bukkit.getPluginManager().enablePlugin(pl);
                }
            } catch (InvalidDescriptionException e) {
                e.printStackTrace();
                return;
            } catch (InvalidPluginException e) {
                e.printStackTrace();
                return;
            } catch (NoSuchFieldException e) {
                e.printStackTrace();
            } catch (SecurityException e) {
                e.printStackTrace();
            } catch (IllegalArgumentException e) {
                e.printStackTrace();
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            }
            if (!overJump)
                target.onLoad();
            Bukkit.getPluginManager().enablePlugin(target);

            return;
        }

        @SuppressWarnings({ "unchecked", "null" })
        public synchronized static void unload(Plugin plugin) {
            String name = plugin.getName();

            PluginManager pluginManager = Bukkit.getPluginManager();

            SimpleCommandMap commandMap = null;

            List<Plugin> plugins = null;

            Map<String, Plugin> names = null;
            Map<String, Command> commands = null;
            Map<Event, SortedSet<RegisteredListener>> listeners = null;

            boolean reloadlisteners = true;
            if (pluginManager != null) {
                pluginManager.disablePlugin(plugin);
                try {
                    Field pluginsField = Bukkit.getPluginManager().getClass().getDeclaredField("plugins");
                    pluginsField.setAccessible(true);
                    plugins = (List<Plugin>) pluginsField.get(pluginManager);

                    Field lookupNamesField = Bukkit.getPluginManager().getClass().getDeclaredField("lookupNames");
                    lookupNamesField.setAccessible(true);
                    names = (Map<String, Plugin>) lookupNamesField.get(pluginManager);
                    try {
                        Field listenersField = Bukkit.getPluginManager().getClass().getDeclaredField("listeners");
                        listenersField.setAccessible(true);
                        listeners = (Map<Event, SortedSet<RegisteredListener>>) listenersField.get(pluginManager);
                    } catch (Exception e) {
                        reloadlisteners = false;
                    }
                    Field commandMapField = Bukkit.getPluginManager().getClass().getDeclaredField("commandMap");
                    commandMapField.setAccessible(true);
                    commandMap = (SimpleCommandMap) commandMapField.get(pluginManager);

                    Field knownCommandsField = SimpleCommandMap.class.getDeclaredField("knownCommands");
                    knownCommandsField.setAccessible(true);
                    commands = (Map<String, Command>) knownCommandsField.get(commandMap);
                } catch (NoSuchFieldException e) {
                    e.printStackTrace();
                    return;
                } catch (IllegalAccessException e) {
                    e.printStackTrace();
                    return;
                }
            }
            Iterator<RegisteredListener> it;
            Iterator<Map.Entry<String, Command>> itMapEntry;
            pluginManager.disablePlugin(plugin);
            if ((plugins != null) && (plugins.contains(plugin))) {
                plugins.remove(plugin);
            }
            if ((names != null) && (names.containsKey(name))) {
                names.remove(name);
            }
            if ((listeners != null) && (reloadlisteners)) {
                for (SortedSet<RegisteredListener> set : listeners.values()) {
                    for (it = set.iterator(); it.hasNext();) {
                        RegisteredListener value = it.next();
                        if (value.getPlugin() == plugin) {
                            it.remove();
                        }
                    }
                }
            }
            if (commandMap != null) {
                for (itMapEntry = commands.entrySet().iterator(); itMapEntry.hasNext();) {
                    Map.Entry<String, Command> entry = itMapEntry.next();
                    if ((entry.getValue() instanceof PluginCommand)) {
                        PluginCommand c = (PluginCommand) entry.getValue();
                        if (c.getPlugin() == plugin) {
                            c.unregister(commandMap);
                            itMapEntry.remove();
                        }
                    }
                }
            }
            ClassLoader cl = plugin.getClass().getClassLoader();
            if ((cl instanceof URLClassLoader)) {
                try {
                    URLClassLoader l = (URLClassLoader) cl;
                    l.close();
                    System.out.println(l);
                    Field fplugin = l.getClass().getDeclaredField("plugin");
                    Field fpluginInit = l.getClass().getDeclaredField("pluginInit");
                    fplugin.setAccessible(true);
                    fpluginInit.setAccessible(true);
                    System.out.println(fplugin.get(l));
                    System.out.println(fpluginInit.get(l));
                    fplugin.set(l, null);
                    fpluginInit.set(l, null);
                } catch (IOException | IllegalArgumentException | IllegalAccessException | NoSuchFieldException | SecurityException ex) {
                    ex.printStackTrace();
                }
            }
            System.gc();

            return;
        }

        @Override
        public void onEnable() {
            File oldVersion = new File("./plugins/WoolBattle.jar");
            File newVersion = new File("./plugins/TEMP-WoolBattle.jar");
            System.out.println("[WoolBattleUpdater] Unloading WoolBattle");
            unload(Main.getPlugin(Main.class));
            System.out.println("[WoolBattleUpdater] Unloaded WoolBattle");
            oldVersion.delete();
            try {
                Files.copy(newVersion.toPath(), oldVersion.toPath());
                hasUpdated = true;
                System.out.println("[WoolBattleUpdater] Enabling WoolBattle");
                if(Bukkit.getPluginManager().getPlugin("WoolBattle") == null) {
                 
                    Bukkit.getPluginManager().loadPlugin(oldVersion);
                 
                } else
                    Bukkit.getPluginManager().enablePlugin(Bukkit.getPluginManager().getPlugin("WoolBattle"));
                System.out.println("[WoolBattleUpdater] Enabled WoolBattle");
                newVersion.delete();
                System.out.println("[WoolBattleUpdater] Updated WoolBattle");
            } catch (IOException | UnknownDependencyException | InvalidPluginException | InvalidDescriptionException e) {
                e.printStackTrace();
            }
        }
    }
    My console log is
    [07:26:43 INFO]: [LuckPerms] Loading LuckPerms v4.4.30
    [07:26:43 INFO]: [WoolBattle] Loading WoolBattle v1.0
    [07:26:43 INFO]: [CommandAPI] Enabling CommandAPI v1.0
    [07:26:43 INFO]: Copied CommandAPI.jar
    [07:26:43 INFO]: [ScoreboardAPI] Enabling ScoreboardAPI v1.0
    [07:26:43 INFO]: Copied ScoreboardAPI.jar
    [07:26:44 INFO]: Copied TEMP-WoolBattle.jar
    [07:26:44 INFO]: [WoolBattleUpdater] Enabling WoolBattleUpdater v1.0
    [07:26:44 INFO]: [WoolBattleUpdater] Unloading WoolBattle
    [07:26:44 INFO]: [email protected]
    [07:26:44 INFO]: WoolBattle v1.0
    [07:26:44 INFO]: WoolBattle v1.0
    [07:26:44 INFO]: [WoolBattleUpdater] Unloaded WoolBattle
    [07:26:44 INFO]: [WoolBattleUpdater] Enabling WoolBattle
    [07:26:44 INFO]: [WoolBattleUpdater] Enabled WoolBattle
    [07:26:44 INFO]: [WoolBattleUpdater] Updated WoolBattle
    [07:26:44 INFO]: Copied WoolBattleUpdater.jar
    [07:26:44 INFO]: [LuckPerms] Enabling LuckPerms v4.4.30
    [07:26:44 INFO]: __
    [07:26:44 INFO]: | |__) LuckPerms v4.4.30
    [07:26:44 INFO]: |___ | Running on Bukkit - CraftBukkit
    [07:26:44 INFO]:
    [07:26:44 INFO]: [LuckPerms] Loading configuration...
    [07:26:45 INFO]: [LuckPerms] Loading storage provider...


    [07:26:46 INFO]: [LuckPerms] Loading internal permission managers...
    [07:26:46 INFO]: [LuckPerms] Performing initial data load...
    [07:26:46 INFO]: [LuckPerms] Successfully enabled. (took 1995ms)
    [07:26:46 WARN]: **** SERVER IS RUNNING IN OFFLINE/INSECURE MODE!
    [07:26:46 WARN]: The server will make no attempt to authenticate usernames. Beware.
    [07:26:46 WARN]: 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.
    [07:26:46 WARN]: To change this, set "online-mode" to "true" in the server.properties file.
    [07:26:46 INFO]: **** Beginning UUID conversion, this may take A LONG time ****
    [07:26:46 INFO]: Preparing level "world"
    [07:26:46 INFO]: -------- World Settings For [world] --------
    [07:26:46 INFO]: Item Despawn Rate: 6000
    [07:26:46 INFO]: Item Merge Radius: 2.5
    [07:26:46 INFO]: Zombie Aggressive Towards Villager: true
    [07:26:46 INFO]: View Distance: 6
    [07:26:47 INFO]: Entity Tracking Range: Pl 48 / An 48 / Mo 48 / Mi 32 / Other 64
    [07:26:47 INFO]: Hopper Transfer: 8 Hopper Check: 1 Hopper Amount: 1
    [07:26:47 INFO]: Mob Spawn Range: 4
    [07:26:47 INFO]: Cactus Growth Modifier: 100%
    [07:26:47 INFO]: Cane Growth Modifier: 100%
    [07:26:47 INFO]: Melon Growth Modifier: 100%
    [07:26:47 INFO]: Mushroom Growth Modifier: 100%
    [07:26:47 INFO]: Pumpkin Growth Modifier: 100%
    [07:26:47 INFO]: Sapling Growth Modifier: 100%
    [07:26:47 INFO]: Wheat Growth Modifier: 100%
    [07:26:47 INFO]: NetherWart Growth Modifier: 100%
    [07:26:47 INFO]: Entity Activation Range: An 32 / Mo 0 / Mi 16
    [07:26:47 INFO]: Nerfing mobs spawned from spawners: false
    [07:26:47 INFO]: Anti X-Ray: true
    [07:26:47 INFO]: Engine Mode: 1
    [07:26:47 INFO]: Hidden Blocks: [14, 15, 16, 21, 48, 49, 54, 56, 73, 74, 82, 129, 130]
    [07:26:47 INFO]: Replace Blocks: [1, 5]
    [07:26:47 INFO]: Arrow Despawn Rate: 1200
    [07:26:47 INFO]: Allow Zombie Pigmen to spawn from portal blocks: true
    [07:26:47 INFO]: Chunks to Grow per Tick: 650
    [07:26:47 INFO]: Clear tick list: false
    [07:26:47 INFO]: Experience Merge Radius: 3.0
    [07:26:47 INFO]: Sending up to 10 chunks per packet
    [07:26:47 INFO]: Random Lighting Updates: false
    [07:26:47 INFO]: Structure Info Saving: true
    [07:26:47 INFO]: Max TNT Explosions: 100
    [07:26:47 INFO]: Tile Max Tick Time: 50ms Entity max Tick Time: 50ms
    [07:26:47 INFO]: Custom Map Seeds: Village: 10387312 Feature: 14357617
    [07:26:47 INFO]: Max Entity Collisions: 8
    [07:26:47 INFO]: -------- World Settings For [world_nether] --------
    [07:26:47 INFO]: Item Despawn Rate: 6000
    [07:26:47 INFO]: Item Merge Radius: 2.5
    [07:26:47 INFO]: Zombie Aggressive Towards Villager: true
    [07:26:47 INFO]: View Distance: 6
    [07:26:47 INFO]: Entity Tracking Range: Pl 48 / An 48 / Mo 48 / Mi 32 / Other 64
    [07:26:47 INFO]: Hopper Transfer: 8 Hopper Check: 1 Hopper Amount: 1
    [07:26:47 INFO]: Mob Spawn Range: 4
    [07:26:47 INFO]: Cactus Growth Modifier: 100%
    [07:26:47 INFO]: Cane Growth Modifier: 100%
    [07:26:47 INFO]: Melon Growth Modifier: 100%
    [07:26:47 INFO]: Mushroom Growth Modifier: 100%
    [07:26:47 INFO]: Pumpkin Growth Modifier: 100%
    [07:26:47 INFO]: Sapling Growth Modifier: 100%
    [07:26:47 INFO]: Wheat Growth Modifier: 100%
    [07:26:47 INFO]: NetherWart Growth Modifier: 100%
    [07:26:47 INFO]: Entity Activation Range: An 32 / Mo 0 / Mi 16
    [07:26:47 INFO]: Nerfing mobs spawned from spawners: false
    [07:26:47 INFO]: Anti X-Ray: true
    [07:26:47 INFO]: Engine Mode: 1
    [07:26:47 INFO]: Hidden Blocks: [14, 15, 16, 21, 48, 49, 54, 56, 73, 74, 82, 129, 130]
    [07:26:47 INFO]: Replace Blocks: [1, 5]
    [07:26:47 INFO]: Arrow Despawn Rate: 1200
    [07:26:47 INFO]: Allow Zombie Pigmen to spawn from portal blocks: true
    [07:26:47 INFO]: Chunks to Grow per Tick: 650
    [07:26:47 INFO]: Clear tick list: false
    [07:26:47 INFO]: Experience Merge Radius: 3.0
    [07:26:47 INFO]: Sending up to 10 chunks per packet
    [07:26:47 INFO]: Random Lighting Updates: false
    [07:26:47 INFO]: Structure Info Saving: true
    [07:26:47 INFO]: Max TNT Explosions: 100
    [07:26:47 INFO]: Tile Max Tick Time: 50ms Entity max Tick Time: 50ms
    [07:26:47 INFO]: Custom Map Seeds: Village: 10387312 Feature: 14357617
    [07:26:47 INFO]: Max Entity Collisions: 8
    [07:26:47 INFO]: -------- World Settings For [world_the_end] --------
    [07:26:47 INFO]: Item Despawn Rate: 6000
    [07:26:47 INFO]: Item Merge Radius: 2.5
    [07:26:47 INFO]: Zombie Aggressive Towards Villager: true
    [07:26:47 INFO]: View Distance: 6
    [07:26:47 INFO]: Entity Tracking Range: Pl 48 / An 48 / Mo 48 / Mi 32 / Other 64
    [07:26:47 INFO]: Hopper Transfer: 8 Hopper Check: 1 Hopper Amount: 1
    [07:26:47 INFO]: Mob Spawn Range: 4
    [07:26:47 INFO]: Cactus Growth Modifier: 100%
    [07:26:47 INFO]: Cane Growth Modifier: 100%
    [07:26:47 INFO]: Melon Growth Modifier: 100%
    [07:26:47 INFO]: Mushroom Growth Modifier: 100%
    [07:26:47 INFO]: Pumpkin Growth Modifier: 100%
    [07:26:47 INFO]: Sapling Growth Modifier: 100%
    [07:26:47 INFO]: Wheat Growth Modifier: 100%
    [07:26:47 INFO]: NetherWart Growth Modifier: 100%
    [07:26:47 INFO]: Entity Activation Range: An 32 / Mo 0 / Mi 16
    [07:26:47 INFO]: Nerfing mobs spawned from spawners: false
    [07:26:47 INFO]: Anti X-Ray: true
    [07:26:47 INFO]: Engine Mode: 1
    [07:26:47 INFO]: Hidden Blocks: [14, 15, 16, 21, 48, 49, 54, 56, 73, 74, 82, 129, 130]
    [07:26:47 INFO]: Replace Blocks: [1, 5]
    [07:26:47 INFO]: Arrow Despawn Rate: 1200
    [07:26:47 INFO]: Allow Zombie Pigmen to spawn from portal blocks: true
    [07:26:47 INFO]: Chunks to Grow per Tick: 650
    [07:26:47 INFO]: Clear tick list: false
    [07:26:47 INFO]: Experience Merge Radius: 3.0
    [07:26:47 INFO]: Sending up to 10 chunks per packet
    [07:26:47 INFO]: Random Lighting Updates: false
    [07:26:47 INFO]: Structure Info Saving: true
    [07:26:47 INFO]: Max TNT Explosions: 100
    [07:26:47 INFO]: Tile Max Tick Time: 50ms Entity max Tick Time: 50ms
    [07:26:47 INFO]: Custom Map Seeds: Village: 10387312 Feature: 14357617
    [07:26:47 INFO]: Max Entity Collisions: 8
    [07:26:47 INFO]: Preparing start region for level 0 (Seed: -6742936280515130540)
    [07:26:48 INFO]: Preparing spawn area: 58%
    [07:26:48 INFO]: Preparing start region for level 1 (Seed: -6742936280515130540)
    [07:26:49 INFO]: Preparing start region for level 2 (Seed: -6742936280515130540)
    [07:26:49 INFO]: [WoolBattle] Enabling WoolBattle v1.0
    [07:26:49 INFO]: [WoolBattleUpdater] Disabling WoolBattleUpdater v1.0
    [07:26:50 INFO]: Loading debugger. . .
    [07:26:50 ERROR]: Error occurred while enabling WoolBattle v1.0 (Is it up to date?)
    java.lang.IllegalAccessError: tried to access class de.pixel.woolbattle.game.Lobby$1 from class de.pixel.woolbattle.game.Lobby
    at de.pixel.woolbattle.game.Lobby.<clinit>(Lobby.java:30) ~[?:?]
    at de.pixel.woolbattle.Main.onEnable(Main.java:91) ~[?:?]
    at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:321) ~[spigot-1.8.8.jar:git-Spigot-db6de12-18fbb24]
    at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:340) [spigot-1.8.8.jar:git-Spigot-db6de12-18fbb24]
    at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:405) [spigot-1.8.8.jar:git-Spigot-db6de12-18fbb24]
    at org.bukkit.craftbukkit.v1_8_R3.CraftServer.loadPlugin(CraftServer.java:357) [spigot-1.8.8.jar:git-Spigot-db6de12-18fbb24]
    at org.bukkit.craftbukkit.v1_8_R3.CraftServer.enablePlugins(CraftServer.java:317) [spigot-1.8.8.jar:git-Spigot-db6de12-18fbb24]
    at net.minecraft.server.v1_8_R3.MinecraftServer.s(MinecraftServer.java:414) [spigot-1.8.8.jar:git-Spigot-db6de12-18fbb24]
    at net.minecraft.server.v1_8_R3.MinecraftServer.k(MinecraftServer.java:378) [spigot-1.8.8.jar:git-Spigot-db6de12-18fbb24]
    at net.minecraft.server.v1_8_R3.MinecraftServer.a(MinecraftServer.java:333) [spigot-1.8.8.jar:git-Spigot-db6de12-18fbb24]
    at net.minecraft.server.v1_8_R3.DedicatedServer.init(DedicatedServer.java:263) [spigot-1.8.8.jar:git-Spigot-db6de12-18fbb24]
    at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:525) [spigot-1.8.8.jar:git-Spigot-db6de12-18fbb24]
    at java.lang.Thread.run(Unknown Source) [?:1.8.0_221]
    [07:26:50 INFO]: Server permissions file permissions.yml is empty, ignoring it
    [07:26:50 INFO]: Done (3,302s)! For help, type "help" or "?"
    [/SPOILER]

     
  4. If anybody Needs the GitHub link, I can paste it, but my Plugin is not public so please dont use it for ur stuff
     
  5. Give me the repo and ill see what I can do.
     
  6. imports do not work like that uff

    and the problem is inside the woolbattle.game.Lobby class