• Es freut uns dass du in unser Minecraft Forum gefunden hast. Hier kannst du mit über 130.000 Minecraft Fans über Minecraft diskutieren, Fragen stellen und anderen helfen. In diesem Minecraft Forum kannst du auch nach Teammitgliedern, Administratoren, Moderatoren , Supporter oder Sponsoren suchen. Gerne kannst du im Offtopic Bereich unseres Minecraft Forums auch über nicht Minecraft spezifische Themen reden. Wir hoffen dir gefällt es in unserem Minecraft Forum!

Spigot Erledigt Leftclick in Adventure auf Kopf triggert event nicht

Yasuo Krieger

Kuhfänger
Mitglied seit
22 November 2015
Beiträge
60
Minecraft
NonPrimeYasuo
Das nächste Problem c:

und zwar habe ich bei meinem cookieclicker jetzt im lobbysystem Adventuremode aber irgendwie funktionieren dort die Events beim clicken nicht mehr?
Mir wurde gesagt das es daran liegt das es ein Bugg in mc ist aber wie kann ich das machen das es funkt?!
 

LapisMC

Schafhirte
Osterei Experte
Mitglied seit
29 März 2014
Beiträge
114
Alter
21
Minecraft
LapisMC
Hast du denn schon sichergestellt, dass das PlayerInteractEvent (ich denke, darum geht es) nicht aufgerufen wird? Zum Debuggen ist oft eine kurze Nachricht in der Konsole hilfreich, damit man weiß, ob das Event ausgelöst wird bzw. was genau nicht funktioniert, zum Beispiel:
Java:
@EventHandler
public void onClick(PlayerInteractEvent event) {
    Bukkit.getLogger().info("PlayerInteractEvent ausgelöst");
    if(event.getAction() == Action.RIGHT_CLICK_BLOCK) {
        Bukkit.getLogger().info("Rechtsklick ausgelöst");
        //...
    }
}
Die Bukkit-API sollte auf jeden Fall auch für Spieler im Adventure-Modus ein PlayerInteractEvent auslösen, soweit ich weiß.
Ansonsten wäre natürlich auch noch wichtig, wie dein Event-Handler überhaupt aussieht und wie du überprüfst, ob es der betreffende Kopf ist.
 

Yasuo Krieger

Kuhfänger
Mitglied seit
22 November 2015
Beiträge
60
Minecraft
NonPrimeYasuo
Hast du denn schon sichergestellt, dass das PlayerInteractEvent (ich denke, darum geht es) nicht aufgerufen wird? Zum Debuggen ist oft eine kurze Nachricht in der Konsole hilfreich, damit man weiß, ob das Event ausgelöst wird bzw. was genau nicht funktioniert, zum Beispiel:
Java:
@EventHandler
public void onClick(PlayerInteractEvent event) {
    Bukkit.getLogger().info("PlayerInteractEvent ausgelöst");
    if(event.getAction() == Action.RIGHT_CLICK_BLOCK) {
        Bukkit.getLogger().info("Rechtsklick ausgelöst");
        //...
    }
}
Die Bukkit-API sollte auf jeden Fall auch für Spieler im Adventure-Modus ein PlayerInteractEvent auslösen, soweit ich weiß.
Ansonsten wäre natürlich auch noch wichtig, wie dein Event-Handler überhaupt aussieht und wie du überprüfst, ob es der betreffende Kopf ist.
Also jeder kopf wird genommen! Dazu funktioniert der RIGHT_CLICK_BLOCK aber der LEFT_CLICK_BLOCK nicht aber wieso?
 

LapisMC

Schafhirte
Osterei Experte
Mitglied seit
29 März 2014
Beiträge
114
Alter
21
Minecraft
LapisMC
@Yasuo Krieger
Linksklick geht natürlich auch, aber dann musst du die Action-Überprüfung darum erweitern:
Java:
//...
if(event.getAction() == Action.LEFT_CLICK_BLOCK || event.getAction() == Action.RIGHT_CLICK_BLOCK) {
    //...
}
In beiden Fällen kannst du dir den angeklickten Block mit event.getClickedBlock() holen.
 

Yasuo Krieger

Kuhfänger
Mitglied seit
22 November 2015
Beiträge
60
Minecraft
NonPrimeYasuo
@Yasuo Krieger
Linksklick geht natürlich auch, aber dann musst du die Action-Überprüfung darum erweitern:
Java:
//...
if(event.getAction() == Action.LEFT_CLICK_BLOCK || event.getAction() == Action.RIGHT_CLICK_BLOCK) {
    //...
}
In beiden Fällen kannst du dir den angeklickten Block mit event.getClickedBlock() holen.
Code:
        if(p.isSneaking()) {
            if(e.getClickedBlock().getType() == Material.SKULL){
                if(e.getAction() == Action.LEFT_CLICK_BLOCK) {
                    Inventory cookie = Bukkit.createInventory(null, InventoryType.HOPPER, "§6Cookie-Shop");
                    cookie.setItem(0, Main.createHead("QuadratCookie", 1, "§7Meine Cookies: §6" + getCookie(p)));
                    cookie.setItem(2, Main.createItem(Material.PAPER, 1, 0, "§6Buy Upgrade"));
                    cookie.setItem(4, Main.createItem(Material.BARRIER, 1, 0, "§4Reset-All"));
                    
                    p.openInventory(cookie);
                }
            }
        }
hier der Code aber das problem ist das ich im Adventuremode keine Packets sende. Also kann man das irgendwie überbrücken
 

Yasuo Krieger

Kuhfänger
Mitglied seit
22 November 2015
Beiträge
60
Minecraft
NonPrimeYasuo
Code:
    @EventHandler
    public void onAni(PlayerAnimationEvent e) {
        Player p = e.getPlayer();
        
        if(e.getAnimationType() == PlayerAnimationType.ARM_SWING && p.isSneaking()) {
            
            Block mat = e.getPlayer().getTargetBlock((Set<Material>) null, 5);
            
            if(mat.getType() == Material.SKULL){
                Inventory cookie = Bukkit.createInventory(null, InventoryType.HOPPER, "§6Cookie-Shop");
                cookie.setItem(0, Main.createHead("QuadratCookie", 1, "§7Meine Cookies: §6" + getCookie(p)));
                cookie.setItem(2, Main.createItem(Material.PAPER, 1, 0, "§6Buy Upgrade"));
                cookie.setItem(4, Main.createItem(Material.BARRIER, 1, 0, "§4Reset-All"));
                
                p.openInventory(cookie);
            }
        }
    }
GUT das ist die lösung c:
 

LapisMC

Schafhirte
Osterei Experte
Mitglied seit
29 März 2014
Beiträge
114
Alter
21
Minecraft
LapisMC
@Yasuo Krieger
Zunächst einmal liegt in den Zeilen 2 und 3 im Post #5 wieder der gleiche Fehler wie in deinem vorherigen Thread vor. Die Action muss erst abgefragt werden, da bei den Action-Typen LEFT_CLICK_AIR und RIGHT_CLICK_AIR sonst wieder eine Exception ausgelöst wird.
Der Lösungsansatz über das PlayerAnimationEvent für Linksklicks ist bei Nutzung des Adventure-Modes wahrscheinlich die einzige Lösung. Rechtsklicks sollten in diesem Modus allerdings normal gesendet werden. Hier solltest du dann allerdings noch vor dem Aufruf von mat.getType() noch überprüfen, ob der Block nicht null ist.
 

Twitter

Allgemein
Hilfe Benutzer
    Hadde-chan Hadde-chan: Meine Mauer ist zu hoch für dich
    Oben