• 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 Im InventoryClickedEvent eine Aktion für Player Target ausführen.

Shoqrii

Redstoneengineer
Registriert
16 Juni 2018
Beiträge
46
Diamanten
301
Minecraft
Shoqrii
Hey,

Ich möchte im InventoryClickedEvent eine Aktion für einen anderen Spieler ausführen. Wie geht das?

Code vom Inventar
Java:
    @EventHandler
    public void onInteract(PlayerInteractAtEntityEvent e) {
        Player p = e.getPlayer();
        Player t = (Player) e.getRightClicked();
        
        if(CFG.cfg.getString(p.getUniqueId() + ".fraktion").equals("Polizei")) {
            if(e.getRightClicked() == t) {
                
                Inventory inv = Bukkit.createInventory(null, 9*1, "§9Polizei");
                ItemStack hs = new ItemBuilder(Material.LEASH).setDisplayname("§6Handschellen").build();
                ItemStack mk = new ItemBuilder(Material.GOLD_NUGGET).setDisplayname("§6Marke").build();
                ItemStack inh = new ItemBuilder(Material.IRON_FENCE).setDisplayname("§cInhaftieren").build();
                ItemStack G = new ItemBuilder(Material.STAINED_GLASS_PANE, (short)15).setAmount(1).setDisplayname(" ").build();
                
                inv.setItem(0, inh);
                inv.setItem(1, hs);
                inv.setItem(2, mk);
                inv.setItem(3, G);
                inv.setItem(4, G);
                inv.setItem(5, G);
                inv.setItem(6, G);
                inv.setItem(7, G);
                inv.setItem(8, G);
                
                p.openInventory(inv);
                
                
                
            }
        }
        
    }

Code vom InventoryClickedEvent indem ich eine Aktion ausführen möchte.
Java:
@EventHandler
    public void onUse(InventoryClickEvent e) {
        
        if(e.getClickedInventory() != null) {
            if(e.getClickedInventory().getTitle().equalsIgnoreCase("§9Polizei")) {
                if(e.getCurrentItem().getItemMeta().getDisplayName().equals("§cInhaftieren")) {
                    e.setCancelled(true);
                    
                    
                
                }
            }
        }
        
    }
 

ES-Henne

Redstoneengineer
Registriert
3 Oktober 2017
Beiträge
41
Diamanten
0
Auch da gibt es mehrere Möglichkeiten dies umzusetzen.

Für dich am einfachsten, schnellsten und sogar einen kleinen Mehrwert darstellt wäre vermutlich, wenn du einfach den Name des Spielers mit in den Titel des Inventars schreibst und diesen wieder ausliest. Dadurch bekommst du den Spielernamen und kannst mit dem wieder den Spieler finden.
 

Shoqrii

Redstoneengineer
Registriert
16 Juni 2018
Beiträge
46
Diamanten
301
Minecraft
Shoqrii
Java:
        String tstring = CFG.cfg.getString(e.getWhoClicked().getUniqueId() + ".policeinventory");
        Player t = Bukkit.getPlayer(tstring);
Auch da gibt es mehrere Möglichkeiten dies umzusetzen.

Für dich am einfachsten, schnellsten und sogar einen kleinen Mehrwert darstellt wäre vermutlich, wenn du einfach den Name des Spielers mit in den Titel des Inventars schreibst und diesen wieder ausliest. Dadurch bekommst du den Spielernamen und kannst mit dem wieder den Spieler finden.
Die Idee ist wirklich gut.
Und wie entnehme ich aus dem Displayname nur den Spielernamen und caste ich ihn dann zum String oder zum Player?

//EDIT
Solved.
Ich habe Player t im ersten Event in eine CFG gespeichert, und anschließend dann im
InventoryClickedEvent abgerufen.
Java:
        String tstring = CFG.cfg.getString(e.getWhoClicked().getUniqueId() + ".policeinventory");
        Player t = Bukkit.getPlayer(tstring);
 
Zuletzt bearbeitet:
Oben