Plugin Programmieren: Probleme mit dem Listener

09/12/2012 19:47 Leonard_M_G#1
Hallo,
ich bin gerade dabei ein Bukkit Plugin zu programmieren.... Leider bekomme ich immer eine errormeldung wenn ich das plugin Starte:
Code:
org.bukkit.plugin.IllegalPluginAccessException: Unable to find handler list fo
r event org.bukkit.event.block.BlockEvent
        at org.bukkit.plugin.SimplePluginManager.getRegistrationClass(SimplePl
uginManager.java:564)
        at org.bukkit.plugin.SimplePluginManager.getRegistrationClass(SimplePl
uginManager.java:562)
        at org.bukkit.plugin.SimplePluginManager.registerEvents(SimplePluginMa
nager.java:508)
        at de.stormcraft.Stormprotect.Stormprotect.onEnable(Stormprotect.java:
47)
        at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:217)
        at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoad
er.java:365)
        at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginMana
ger.java:381)
        at org.bukkit.craftbukkit.CraftServer.loadPlugin(CraftServer.java:265)

        at org.bukkit.craftbukkit.CraftServer.enablePlugins(CraftServer.java:2
47)
        at org.bukkit.craftbukkit.CraftServer.reload(CraftServer.java:567)
        at org.bukkit.Bukkit.reload(Bukkit.java:183)
        at org.bukkit.command.defaults.ReloadCommand.execute(ReloadCommand.jav
a:21)
        at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:
168)
        at org.bukkit.craftbukkit.CraftServer.dispatchCommand(CraftServer.java
:492)
        at org.bukkit.craftbukkit.CraftServer.dispatchServerCommand(CraftServe
r.java:488)
        at net.minecraft.server.DedicatedServer.ah(DedicatedServer.java:248)
        at net.minecraft.server.DedicatedServer.q(DedicatedServer.java:213)
        at net.minecraft.server.MinecraftServer.p(MinecraftServer.java:474)
        at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:406)
        at net.minecraft.server.ThreadServerApplication.run(SourceFile:539)
Ich finde den Fehler bei mir leider nicht =( Ich habe mir zwar schon [Only registered and activated users can see links. Click Here To Register...] thread angeschaut, jedoch habe ich es meiner Meinung nach genauso gemacht

Code:
Mainclass
.....
		getServer().getPluginManager().registerEvents(new blocklistener(), this);
		getServer().getPluginManager().registerEvents(new playerlistener(), this);
		getServer().getPluginManager().registerEvents(new entitylistener(), this);	
.....
Code:
Einer der Listener...
public class blocklistener implements Listener{
	
	@EventHandler 		
	public void onfire(BlockIgniteEvent event){.....
Kann mir vielleicht jemand helfen?
09/12/2012 20:50 ComputerBaer#2
Könntest du mal den kompletten Source des Listeners, den du in Zeile 47 registrierst, posten?

Edit:
Kann es sein das du so ein Event registrieren willst?
Code:
	@EventHandler 		
	public void xzy(BlockEvent event)
Wenn ja, dann lösch das. Es gibt kein BlockEvent, bzw. keinen Handler und auch kein Ereignis für BlockEvent.
Du fragst dich woher ich das weiß? Ich habe einfach nur die Fehlermeldung gelesen.
09/12/2012 21:10 Leonard_M_G#3
nein ich will nicht nur BlockEvent registrieren(wenn man das überhaupt kann)
Code:
package de.stormcraft.Stormprotect.listner;

import org.bukkit.Location;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.BlockBreakEvent;
import org.bukkit.event.block.BlockBurnEvent;
import org.bukkit.event.block.BlockFadeEvent;
import org.bukkit.event.block.BlockIgniteEvent;
import org.bukkit.event.block.BlockPhysicsEvent;
import org.bukkit.event.block.BlockPistonEvent;
import org.bukkit.event.block.BlockPlaceEvent;

import de.stormcraft.Stormprotect.Stormprotect;

public class blocklistener implements Listener{
	
	@EventHandler 		
	public void onfire(BlockIgniteEvent event){
		String cause = event.getCause().toString();
		String world = event.getBlock().getWorld().getName();
		if(Stormprotect.getconfigmanager().getActivate().get("Global")){
			if(Stormprotect.getconfigmanager().getActivate().get(world)){
					if(cause == "SPREAD"){
							if(Stormprotect.getconfigmanager().getDisablefirespread().get(world)){
								event.setCancelled(true);
								return;
							}
							else{
								return;
							}
					}
					else if(cause == "LAVA"){
						if(Stormprotect.getconfigmanager().getDisablefirespread().get(world)){
							event.setCancelled(true);
							return;
						}
						else{
							return;
						}	
					}
					else if(cause == "LIGHTNING"){
						if(Stormprotect.getconfigmanager().getDisablefire().get(world)){
							event.setCancelled(true);
							return;
						}
						else{
							return;
						}	
					}
					else if(cause == "FIREBALL"){
						if(Stormprotect.getconfigmanager().getDisablefire().get(world)){
							event.setCancelled(true);
							return;
						}
						else{
							return;
						}
					}
					else if(event.getPlayer() != null){
						if(event.getPlayer().hasPermission("stormprotect.setfire")){
							return;
						}
						else{
							event.setCancelled(true);
							return;
						}
				
					}
					else{
						event.setCancelled(true);					
						return;
					}
				}
			}
		}
		@EventHandler 
		public void blockburn(BlockBurnEvent event){
			String world = event.getBlock().getWorld().getName();
			if(Stormprotect.getconfigmanager().getActivate().get("Global")){
				if(Stormprotect.getconfigmanager().getActivate().get(world)){
					if(Stormprotect.getconfigmanager().getDisablefire().get(world) || Stormprotect.getconfigmanager().getDisablefirespread().get(world)){
						event.setCancelled(true);
						return;
					}
					else {
						return;
					}
				}
			}
		}
		
		@EventHandler
		public void blockfade(BlockFadeEvent event){
			String world = event.getBlock().getWorld().getName();
			if((Stormprotect.getconfigmanager().getActivate().get("Global"))){
				if((Stormprotect.getconfigmanager().getActivate().get(world))){
					if(event.getBlock().getTypeId() == 79){
						if(Stormprotect.getconfigmanager().getDisableicesmelting().get(world)){
							event.setCancelled(true);
							return;
						}
						else{
							return;
						}						
					}
				}
			}
			
			
			if(event.getBlock().getTypeId() == 9){
				if(Stormprotect.getconfigmanager().getDisableiceformating().get(world)){
					event.setCancelled(true);
					return;
					}
				else{
					return;
					}						
				}
		}

		@EventHandler
		public void blockbreak(BlockBreakEvent event){
			
			Location loc = event.getBlock().getLocation();
			Integer regid = Stormprotect.getregionmanager().getregionbyloc(loc);
			if(regid != null){
				String player = event.getPlayer().getName();
				if(Stormprotect.getregionmanager().isregionmember(player, regid)||Stormprotect.getregionmanager().isregionowner(player, regid)){
					return;
				}
				else{
					event.setCancelled(true);
				}
			}
			
			return;
			
		}
		
		@EventHandler
		public void blockplace(BlockPlaceEvent event){
			
			Location loc = event.getBlock().getLocation();
			Integer regid = Stormprotect.getregionmanager().getregionbyloc(loc);
			if(regid != null){
				String player = event.getPlayer().getName();
				if(Stormprotect.getregionmanager().isregionmember(player, regid)||Stormprotect.getregionmanager().isregionowner(player, regid)){
					return;
				}
				else{
					event.setCancelled(true);
				}
			}
			
			return;
			
		}
		
		@EventHandler
		public void blockphysics(BlockPhysicsEvent event){
			return;
		}
		
		@EventHandler
		public void piston(BlockPistonEvent event){
			
			Location bloc = event.getBlock().getLocation();
			return;
		}
	
}
09/12/2012 21:30 ComputerBaer#4
Es gibt kein BlockPistonEvent, es gibt nur BlockPistonExtendEvent und BlockPistonRetractEvent.

Nicht falsch verstehen, aber wielange programmierst du schon? Die formatierungen in dem Dokument sind echt scheußlich.
09/12/2012 22:05 Leonard_M_G#5
XD nochnicht so lange
Wie soll ich den ganzen kram denn "übersichtlicher" machen?
Außerdem gibt es das [Only registered and activated users can see links. Click Here To Register...] .... sonnst hätte mein Eclipse das auch rot makiert...
EDIT: Gibt es wohl doch nicht... Habe den kram raus genommen und es Funktioniert:confused: Warum ist es dann in den Javadocs?
09/12/2012 22:20 ComputerBaer#6
Übersichtlicher bekommst du es, wenn du alles gleichweit einrückst. Also alles was auf der selben Ebene ist.
Immer wenn du geschweifte Klammern aufmachst gehst du einen Tab weiter rein und jedesmal wenn du eine zumachst wieder einne Tab weiter raus.

Wenn du etwas länger programmieren würdest und die Javadocs genau anschaust würdest du sehen das die Klasse BlockPistonEvent abstract ist. Und mit abstracten Klassen kann man bekanntlich zur Laufzeit nicht wirklich was machen.
09/12/2012 22:23 Leonard_M_G#7
ok... daran habe ich nicht gedacht :(