Rushspawner will nicht so wie ich...

01/26/2015 15:23 LuisKillergurke#1
Hi,

Ich programmiere gerade einen Rushspawner, was sich ja erstmal einfach anhört...
Aber mein Spawner wirft mir die ganze zeit foldenden error:


Ich werde aus diesem Fehler nicht wirklich schlau, bis auf das der Fehler eben in Zeile 28 auftritt. Die Zeile variiert zwischen 28, 33 und 38, in allen Zeilen wird das gleiche gemacht, nur mit anderem Item.

Meine Klasse:
Code:
public class ItemSpawner
{
	public static Location l1;
	public static Location l2;
	
	public static void startSpawn()
	{
		final Random rnd = new Random();
		Bukkit.getScheduler().runTaskTimerAsynchronously(Main.plugin, new Runnable()
		{
			@Override
			public void run()
			{
				int item = rnd.nextInt(11);
				Bukkit.broadcastMessage(item + "");
				if(item <= 7)
				{
					l1.getWorld().dropItemNaturally(l1, EntityInteractEntityListener.getItem(Material.CLAY_BRICK, "§cBronze", null, 1));
					l2.getWorld().dropItemNaturally(l2, EntityInteractEntityListener.getItem(Material.CLAY_BRICK, "§cBronze", null, 1));
				}
				else if(item == 8 || item == 9)
				{
					l1.getWorld().dropItemNaturally(l1, EntityInteractEntityListener.getItem(Material.IRON_INGOT, "§bSilber", null, 1));
					l2.getWorld().dropItemNaturally(l2, EntityInteractEntityListener.getItem(Material.IRON_INGOT, "§bSilber", null, 1));
				}
				else if(item >= 10)
				{
					l1.getWorld().dropItemNaturally(l1, EntityInteractEntityListener.getItem(Material.GOLD_INGOT, "§6Gold", null, 1));
					l2.getWorld().dropItemNaturally(l2, EntityInteractEntityListener.getItem(Material.GOLD_INGOT, "§6Gold", null, 1));
				}
			}
		}, 60L, 60L);
	}
	
}
Die Locations sind nicht null, das habe ich schon getestet.

Freue mich, wenn mir jemand sagt was ich falsch mache :P
Sitze jetzt seit ner Stunde dran und will nix finden -.-

MFG
LuisKillergurke
01/26/2015 15:33 ComputerBaer#2
Es gibt nur zwei Möglichkeiten was dort NULL sein kann. Entweder "l1" oder "l1.getWorld()".

Wenn du sagst "l1" ist nicht NULL, dann hast du "l1" vielleicht ohne Welt erstellt? "new Location(null, 10, 10, 10);"

Edit:
Und noch etwas wichtiges zu "runTaskTimerAsynchronously", ich zitiere aus der Dokumentation: " Asynchronous tasks should never access any API in Bukkit". Du solltest also lieber auf "runTaskTimer" umsteigen. (Und ja, ein Item in der Welt erzeugen ist ein Zugriff auf die Bukkit API)
01/26/2015 16:35 LuisKillergurke#3
Ahhh danke!
Ich habe die Welt zwar definiert, jedoch bevor ich sie geladen habe... Diese Dinge an die man einfach nicht denkt xD

Das schöne ist, dass das gleich noch nen anderen Fehler behebt!

Thread kann dann geclosed werden ;)

MFG
LuisKillergurke
01/26/2015 18:38 ComputerBaer#4
Irgendwann hat man raus auf was man alles achten muss.