Frage von xDeron, 28

Warum öffnet sich kein Inventar wenn ich ein Rechtsklick auf meine Lohenrute mache(siehe Beschreibung!)?

Sourcecode:

@EventHandler
public void onHide(PlayerInteractEvent e) {
    
    Player p = e.getPlayer();
    
    if (p.getItemInHand().getType() == Material.BLAZE_ROD && (e.getAction() == Action.RIGHT_CLICK_AIR || e.getAction() == Action.RIGHT_CLICK_BLOCK)) {
        
        try {
            
            if (e.getItem().getItemMeta().getDisplayName().equalsIgnoreCase("&6Spieler verstecken")) {

                Inventory inv = Bukkit.createInventory(null, 9, "§8Spieler verstecken");
                ItemStack show = new ItemStack(Material.EMERALD_BLOCK);
                ItemMeta showMeta = show.getItemMeta();
                showMeta.setDisplayName("§aAlle Spieler anzeigen");
                showMeta.setLore(null);
                show.setItemMeta(showMeta);
                
                ItemStack hide = new ItemStack(Material.REDSTONE_BLOCK);
                ItemMeta hideMeta = hide.getItemMeta();
                hideMeta.setDisplayName("§4Alle Spieler verstecken");
                hideMeta.setLore(null);
                hide.setItemMeta(hideMeta);
                
                inv.setItem(this.pl.getConfig().getInt("HiderShowSlot"), show);
                inv.setItem(this.pl.getConfig().getInt("HiderHideSlot"), hide);
                
                p.openInventory(inv);
                
            }
            
            
            
        } catch (Exception ex) {
            
            
            
        }
    }
}

Programmierprogramm: Eclipse Verwendete API: Spigot 1.8 Verwendete Java-Version: 7 (Pflicht da dieses Plugin kein Java 8 unterstützt)


Ich freue mich über jeden Kommentar!

Hoffe auf Antworten...

Bis dann :)

Euer xDeron

Antwort
von regex9, 28
  1. Wieso schreibst du deinen (?) Code in einer onHide-Methode? In welcher Klasse liegt sie?
  2. Wofür stehen §4, &6 oder §8 in den Strings?
  3. Hast du diesen Bereich schon mit einem Debugger durchlaufen? Du solltest schauen, ob die IF-Bedingungen zur Laufzeit wahr sind und ob es bereits vorher zu einer Exception kommt.
Kommentar von xDeron ,

Es geht wieder :D

Die Paragraphe und & stehen für die Farben weil ich immer zu faul bin davor: ChatColor.(Color) zu schreiben xD

Trotzdem, danke c:

Kommentar von regex9 ,

Jetzt wäre es noch gut, wenn du die Lösung posten würdest.

Kommentar von xDeron ,

Lösung:

http://pastebin.com/50AJMT2j

Oder hier:

@EventHandler
public void onHide(PlayerInteractEvent e) {

Player p = e.getPlayer();

if (p.getItemInHand().getType() == Material.BLAZE_ROD && (e.getAction() == Action.RIGHT_CLICK_AIR || e.getAction() == Action.RIGHT_CLICK_BLOCK)) {

try {

if (e.getItem().getItemMeta().getDisplayName().equalsIgnoreCase("&6Spieler verstecken")) {

}

Inventory inv = Bukkit.createInventory(null, 9, "§8Spieler verstecken");

ItemStack show = new ItemStack(Material.EMERALD_BLOCK);
ItemMeta showMeta = show.getItemMeta();
showMeta.setDisplayName("§aAlle Spieler anzeigen");
showMeta.setLore(null);
show.setItemMeta(showMeta);

ItemStack hide = new ItemStack(Material.REDSTONE_BLOCK);
ItemMeta hideMeta = hide.getItemMeta();
hideMeta.setDisplayName("§4Alle Spieler verstecken");
hideMeta.setLore(null);
hide.setItemMeta(hideMeta);

inv.setItem(this.pl.getConfig().getInt("HiderShowSlot"), show);
inv.setItem(this.pl.getConfig().getInt("HiderHideSlot"), hide);

p.openInventory(inv);

} catch (NullPointerException ex) {

}

}

}

@EventHandler
public void onHide(InventoryClickEvent e) {

Player p = (Player)e.getWhoClicked();

if (e.getInventory().getName().equalsIgnoreCase("§8Spieler verstecken")) {

try {

if (e.getCurrentItem().getItemMeta().getDisplayName().equalsIgnoreCase("§aAlle Spieler anzeigen")) {

for (Player all : Bukkit.getOnlinePlayers()) {

((Player)e.getWhoClicked()).showPlayer(all);

Location playershowloc = p.getLocation();
p.playSound(playershowloc, Sound.CLICK, 1F, 1F);

p.closeInventory();

p.sendMessage("§aAlle Spieler sind nun sichtbar.");

}
}
if (e.getCurrentItem().getItemMeta().getDisplayName().equalsIgnoreCase("§4Alle Spieler verstecken")) {

for (Player all : Bukkit.getOnlinePlayers()) {

((Player) e.getWhoClicked()).hidePlayer(all);

}

Location playershowloc = p.getLocation();
p.playSound(playershowloc, Sound.CLICK, 1F, 1F);

p.closeInventory();

p.sendMessage("§4Alle Spieler sind nun unsichtbar.");

}

} catch (NullPointerException ex) {

}

}

}

Keine passende Antwort gefunden?

Fragen Sie die Community