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

EquipmentSlot.HAND (Gelöst)

Melonemax

Redstoneengineer
Registriert
20 Februar 2021
Beiträge
37
Diamanten
250
Hallo Ich Programmiere grade ein Player Hider und ersetze dabei ein Item im Spieler Inventar aber Problem dabei ist das dies Aktion Doppelt ausgeführt wenn ich dieses Item benutze das soll dutch EquipmentSlot.HAND gelöst werden aber die Aktion wird immer noch Doppel ausgeführt wenn ich auf den Boden Gucke ich hoffe es war verständlich.

Java:
    @EventHandler
    public void onInteract(PlayerInteractEvent event) {
        Player player = (Player) event.getPlayer();

        if (event.getItem() != null) {
            if (event.getHand() == EquipmentSlot.HAND) {
                if (event.getItem().getType().equals(Material.LIME_DYE) || event.getItem().getType().equals(Material.GRAY_DYE)) {

                    if (LobbyPlugin.hider.contains(player.getPlayer().getUniqueId())) {

                        LobbyPlugin.hider.remove(player.getPlayer().getUniqueId());

                        for (Player players : Bukkit.getOnlinePlayers()) {
                            player.showPlayer(players);
                        }

                        ItemStack hider = new ItemStack(Material.LIME_DYE);
                        ItemMeta hidermeta = hider.getItemMeta();
                        hidermeta.setDisplayName("§2§lSpieler angezeigt");
                        lore.add("§7Klicke um Spieler auszublenden");
                        hidermeta.setLore(lore);
                        hider.setItemMeta(hidermeta);

                        player.sendMessage("Alle Spieler sind nun sichtbar!");
                        player.getInventory().setItem(1, hider);
                        player.updateInventory();

                    } else {

                        LobbyPlugin.hider.add(player.getPlayer().getUniqueId());

                        for (Player players : Bukkit.getOnlinePlayers()) {
                            player.hidePlayer(players);
                        }

                        ItemStack show = new ItemStack(Material.GRAY_DYE);
                        ItemMeta showmeta = show.getItemMeta();
                        showmeta.setDisplayName("§7§lSpieler versteckt");
                        lore2.add("§7Klicke um Spieler wieder anzuzeigen");
                        showmeta.setLore(lore2);
                        show.setItemMeta(showmeta);

                        player.sendMessage("Alle Spieler sind nun unsichtbar!");
                        player.getInventory().setItem(1, show);
                        player.updateInventory();


                    }
                }
            }
        }
    }
 
Zuletzt bearbeitet von einem Moderator:

CubBossa

Schafhirte
Registriert
17 Juli 2015
Beiträge
125
Diamanten
369
Minecraft
CubBossa
Hey, vielleicht hast du den Listener ausversehen zweimal registriert. Zum Beispiel könntest du ihn einmal im Konstruktor registriert haben und hast dann versehentlich in der Mainklasse nicht nur eine Instanz erstellt sondern die dann nochmal registriert?
Denk übrigens beim Playerhider auch ans Join Event :D Man joint ja immer sichtbar für alle

Edit: Mein Fehler, das Event wird ja absichtlich zweimal gefeuert und man soll die Hand überprüfen. Hast du mal gedebugged?
 
Zuletzt bearbeitet:

Melonemax

Redstoneengineer
Registriert
20 Februar 2021
Beiträge
37
Diamanten
250
Also ich registriere meine sachen so in der Main klasse

Java:
    final PluginManager pluginManager = super.getServer().getPluginManager();

        pluginManager.registerEvents(new PlayerHider(), this);
 
Zuletzt bearbeitet von einem Moderator:

Melonemax

Redstoneengineer
Registriert
20 Februar 2021
Beiträge
37
Diamanten
250
Ich glaube ich habe mein Problem etwas zu Kompliziert beschrieben wenn ich auf einen Block Gucke und dann rechtslicke mache wird das event Doppelt ausgeführt
Java:
    @EventHandler
    public void onInteract(PlayerInteractEvent event) {
        Player player = (Player) event.getPlayer();

        if (event.getItem() != null) {
            if (event.getHand() == EquipmentSlot.HAND) {
                    if (event.getItem().getType().equals(Material.LIME_DYE) || event.getItem().getType().equals(Material.GRAY_DYE)) {

                        if (LobbyPlugin.hider.contains(player.getPlayer().getUniqueId())) {

                            LobbyPlugin.hider.remove(player.getPlayer().getUniqueId());

                            for (Player players : Bukkit.getOnlinePlayers()) {
                                player.showPlayer(players);
                            }

                            ItemStack hider = new ItemStack(Material.LIME_DYE);
                            ItemMeta hidermeta = hider.getItemMeta();
                            hidermeta.setDisplayName("§2§lSpieler angezeigt");
                            lore.add("§7Klicke um Spieler auszublenden");
                            hidermeta.setLore(lore);
                            hider.setItemMeta(hidermeta);

                            player.sendMessage("Alle Spieler sind nun sichtbar!");
                            player.getInventory().setItem(1, hider);
                            player.updateInventory();

                        } else {

                            LobbyPlugin.hider.add(player.getPlayer().getUniqueId());

                            for (Player players : Bukkit.getOnlinePlayers()) {
                                player.hidePlayer(players);
                            }

                            ItemStack show = new ItemStack(Material.GRAY_DYE);
                            ItemMeta showmeta = show.getItemMeta();
                            showmeta.setDisplayName("§7§lSpieler versteckt");
                            lore2.add("§7Klicke um Spieler wieder anzuzeigen");
                            showmeta.setLore(lore2);
                            show.setItemMeta(showmeta);

                            player.sendMessage("Alle Spieler sind nun unsichtbar!");
                            player.getInventory().setItem(1, show);
                            player.updateInventory();

                        }
                    }
                }
            }
        }
Post automatically merged:

Ich habe Grade mit Freund eine Lösung gefunden wir machen einfach ein Kleines Delay beim Item setzten

Java:
@EventHandler
    public void onInteract(PlayerInteractEvent event) {
        Player player = (Player) event.getPlayer();

        if (event.getItem() != null) {
            if (event.getHand() == EquipmentSlot.HAND) {
                    if (event.getItem().getType().equals(Material.LIME_DYE) || event.getItem().getType().equals(Material.GRAY_DYE)) {

                        Bukkit.broadcastMessage(player.getDisplayName());
                        Bukkit.broadcastMessage(event.getAction().toString());
                        Bukkit.broadcastMessage(event.getHand().toString());
                        Bukkit.broadcastMessage(event.getItem().getType().toString());

                        if (LobbyPlugin.hider.contains(player.getPlayer().getUniqueId())) {

                            LobbyPlugin.hider.remove(player.getPlayer().getUniqueId());

                            for (Player players : Bukkit.getOnlinePlayers()) {
                                player.showPlayer(players);
                            }

                            ItemStack hider = new ItemStack(Material.LIME_DYE);
                            ItemMeta hidermeta = hider.getItemMeta();
                            hidermeta.setDisplayName("§2§lSpieler angezeigt");
                            lore.add("§7Klicke um Spieler auszublenden");
                            hidermeta.setLore(lore);
                            hider.setItemMeta(hidermeta);

                            player.sendMessage("Alle Spieler sind nun sichtbar!");
                            Bukkit.getScheduler().runTask(plugin, ()->  player.getInventory().setItem(1, hider));

                        } else {


                            LobbyPlugin.hider.add(player.getPlayer().getUniqueId());

                            for (Player players : Bukkit.getOnlinePlayers()) {
                                player.hidePlayer(players);
                            }

                            ItemStack show = new ItemStack(Material.GRAY_DYE);
                            ItemMeta showmeta = show.getItemMeta();
                            showmeta.setDisplayName("§7§lSpieler versteckt");
                            lore2.add("§7Klicke um Spieler wieder anzuzeigen");
                            showmeta.setLore(lore2);
                            show.setItemMeta(showmeta);

                            player.sendMessage("Alle Spieler sind nun unsichtbar!");
                            Bukkit.getScheduler().runTask(plugin, ()->  player.getInventory().setItem(1, show));

                        }
                        event.setCancelled(true);
                    }
                }
            }
        }
 
Zuletzt bearbeitet von einem Moderator:
Oben