ArrayList plötzlich leer

Doopy

Mitglied
Abend zusammen,

ich habe momentan ein Problem mit meinem Minecraft Plugin(Bukkit).
Mein custom Event ruft meinen custom Listener auf, und der startet ein Scheduler, aber irgendwie ist innerhalb der Scheduler Runnable auf einmal die playerList leer.

Java:
ArrayList<Player> playerList;

[...]

@EventHandler
	public void onConquerAttend(final ConquerAttendEvent event) {
		playerList = event.getPlayerList();
		plugin.getLogger().info("onconquerattend; event.getPlayerList: " + event.getPlayerList());
		plugin.getLogger().info("onconquerattend; PlayerList: " + playerList);
		plugin.getServer().getScheduler().scheduleSyncRepeatingTask(plugin, new Runnable() {
			ProtectedRegion region = event.getRegion();
			String faction = event.getFaction();
	    	int duration = 0;
	    	boolean spawned = false;
	    	IronGolem golem;
	    	boolean running = true;
	    	public void run() {
				if(running) {
					plugin.getLogger().info("running; playerList: " + playerList);
					plugin.getLogger().info("running; region: " + region);
					Iterator<Player> i = playerList.iterator();
					while(i.hasNext()) {
						Player p = i.next();
						if(!region.contains(p.getLocation().getBlockX(), p.getLocation().getBlockY(), p.getLocation().getBlockZ())) {
							i.remove();
							p.sendMessage(WorldGuardConquer.getPrefix() + ChatColor.RED + "Du bist nun nicht mehr an der Eroberung beteiligt.");
							plugin.getLogger().info("Spieler hat Eroberung abgebrochen.");
							if(playerList.size() < event.getMinimumConquerer() && !spawned) {
								cancelConquer();
							}
						}
					}
[...]

Die Konsole gibt dabei folgendes aus:
Code:
[13:19:46 INFO]: [WGC] onconquerattend; event.getPlayerList: [CraftPlayer{name=D00py}]
[13:19:46 INFO]: [WGC] onconquerattend; PlayerList: [CraftPlayer{name=D00py}]
[13:19:46 INFO]: [WGC] running; playerList: []
[13:19:46 INFO]: [WGC] running; region: com.sk89q.worldguard.protection.regions.ProtectedC
uboidRegion@343aa5
[13:19:47 INFO]: [WGC] running; playerList: []
[13:19:47 INFO]: [WGC] running; region: com.sk89q.worldguard.protection.regions.ProtectedC
uboidRegion@343aa5

Wie zu sehen ist, hat die gleich behandelte Variable region noch ihren Wert, playerList jedoch nicht.

MfG
 
Nur wenn der Spieler die Region verlässt, aber dazu kommt es nicht, tut mir leid hätte ich besser erklären sollen.
Hab den Fehler jedenfalls gefunden und zwar wurde die List als Parameter ans Event übergeben, dann aber anscheinend weiter auf die selbe Instanz verwiesen und im Original Programm, das die Events auslöst, gelöscht und neu verarbeitet. Wusste nicht dass das dann die selbe Instanz bleibt, normalerweise arbeite ich nicht so oft multithreaded 😀
 

Zurück
Oben