2016-10-20 3 views
0

Ich möchte ein Plugin für den Bug eines Plugins kodieren (ChestShop). Wenn der Spieler mit der rechten Maustaste klickt (die Zeile 2 von Zeichen ist "B Free" oder "Free" und Zeile 3 ist "Iron_Ingot"), brechen Sie das Ereignis ab und senden Sie eine Nachricht.Player sign interact

public void onPlayerInteract(PlayerInteractEvent e){ 
    Player player = e.getPlayer(); 
    if(e.getAction().equals(Action.RIGHT_CLICK_BLOCK) || e.getAction().equals(Action.LEFT_CLICK_BLOCK)){ 
     if(e.getClickedBlock().getState() instanceof Sign){ 
      Sign sign = (Sign) e.getClickedBlock().getState(); 
      if(sign.getLine(2).equals("B Free") || sign.getLine(2).equals("Free")){ 
       if(sign.getLine(3).equals("Iron_Ingot")) 
       e.setCancelled(true); 
       e.getPlayer().sendMessage("You can not click this sign"); 

      } 
     } 
    } 
} 

Ich habe das versucht, aber es hat nicht funktioniert, welcher Teil des Codes ist falsch? Welche Methoden kann ich verwenden?

+0

Was ist Block.getState()? – TsundereBug

+0

Geben Sie an, welcher Block den Block verwendet. – drhopeness

+0

Sie haben den '@ EventHandler' vergessen? Stellen Sie außerdem sicher, dass Sie Ereignisse registriert haben. –

Antwort

1

Die Klasse, in der die Methode onPlayerInteract implementiert ist, muss den Schnittstellenlistener implementieren. Sie müssen auch die Annotation EventHandler verwenden und das Ereignis in Ihrem Plugin registrieren.

public class PlayerInteract implements Listener { 

    // priority is when the listener is called. 
    // LOWEST is called first, then LOW, NORMAL, HIGH, HIGHEST, MONITOR. 
    @EventHandler(priority = EventPriority.NORMAL) 
    public void onPlayerInteract(PlayerInteractEvent event) { 
     // ... 
    } 

} 

In Ihrem onEnable in der Hauptklasse (die JavaPlugin erweitert):

getServer().getPluginManager().registerEvents(new PlayerInteract(),this); 
+0

Mach dir keine Sorgen, ich weiß, wie man jedes Ereignis (EventHandler enum oder Main Java Klasse implementieren ...), aber ich habe das nicht – drhopeness

+0

@drhopeness Wenn es immer noch nicht funktioniert, buchen Sie Ihre volle Klasse, wo Sie Behandeln Sie das Ereignis, Ihre Hauptklasse, plugin.yml und alle Fehler. – Priv

+0

Danke, ich habe einen Fehler behoben. – drhopeness