• 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!

Nur ein Logik Fehler?

Felix.

Redstoneengineer
Registriert
10 April 2020
Beiträge
40
Diamanten
253
Moin, habe hier warscheinlich nur einen kleinen Logik Fehler, denn ich ohne weiteres, nicht beheben kann!
Ich wollte in meinem Code schreiben, dass wenn das Item, mitdem er/sie klickt, eine Rod ist, und den Namen eines Partikels trägt, soll er was in die Config schreiben.
Vorerst, weil es nicht funktioniert hat, habe ich noch eine Testnachricht reingehauen, die zweimal pro klick ausgelöst wird, aber warum?
Wäre sehr dankbar!
Die Methode:
    @EventHandler
    public void onInteract(PlayerInteractEvent event) {
        
        Player player = (Player) event.getPlayer();
            
        if(event.getAction() == Action.RIGHT_CLICK_BLOCK) {
            
            for(Particle particle : Particle.values()) {
                
                if(event.getPlayer().getItemInHand().getType() == Material.BLAZE_ROD && event.getPlayer().getItemInHand().getItemMeta().getDisplayName().equalsIgnoreCase(particle.toString().replace("_", " "))) {
                    
                    System.out.println("test");
                    
                    String itemname = event.getPlayer().getItemInHand().getItemMeta().getDisplayName().replace(" ", "_");
                    Particle item = Particle.valueOf(itemname);
                    Block block = event.getClickedBlock();
                    Location particlelocation = block.getLocation();
                    int nextid = particledata.getInt("Particle.nextID");
                    
                    particledata.set("Particle." + nextid + ".Name", itemname);
                    particledata.set("Particle." + nextid + ".Location", particlelocation);
                    particledata.set("Particle.nextID", nextid + 1);
                    save();
                    
                    
                }
                
            }
            
        }
        
    }
 

Feli490

Redstoneengineer
Registriert
30 November 2011
Beiträge
44
Alter
26
Diamanten
342
Minecraft
Feli490
Das Event wird 2 mal ausgeführt, (Einmal mit der Revhten und einmal mit der Linken Hand)

Da du nur das Item abfragst über player.getItemInHand() hat wird das bei beidem ausgeführt.
Du kannst aber auch einfach event.getItem() verwenden, dann hast du beim 1. mal das Item in der MainHand und beim 2. Mal das Item in der Offhand.

Hier auch nochmal der Link zu den Spigot-Docs: https://hub.spigotmc.org/javadocs/spigot/org/bukkit/event/player/PlayerInteractEvent.html
 
Oben