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

Man kann aus dem Inv noch Items nehmen?

Status
Für weitere Antworten geschlossen.

gmb32

Kuhfänger
Registriert
17 Juni 2014
Beiträge
84
Diamanten
0
Javascript:
@EventHandler
    public void onClick(InventoryClickEvent e) {
        try {
            Player player = (Player) e.getWhoClicked();
            int price = Integer.valueOf(e.getCurrentItem().getItemMeta().getLore().get(0).replace("§e", "").replace("$", ""));
        if(e.getInventory().getName().equals("§9Fischer Shop")) {
            e.setCancelled(true);
            if(e.getCurrentItem().getItemMeta().getDisplayName().equals("§7Roher Lachs")) {
                if(econ.has(player, 7)) {
                    player.getInventory().addItem(e.getCurrentItem());
                    econ.withdrawPlayer(player, price);
                    player.closeInventory();
                    player.sendMessage("§7[§eNeromania§7] Dir wurden "+price +" Dukaten abgezogen!");
                } else {
                    player.sendMessage("§7[§eNeromania§7] §cDu hast nicht genügend Geld!");
                }
            }
         
         
         
        } else if(e.getInventory().getName().equals("§9Fleischer Shop")) {
     
            e.setCancelled(true);
            if(e.getCurrentItem().getItemMeta().getDisplayName().equals("§7Rohes Hühnchen")) {
                if(econ.has(player, 5)) {
                    player.getInventory().addItem(e.getCurrentItem());
                    econ.withdrawPlayer(player, price);
                    e.setCancelled(true);
                    player.closeInventory();
                    player.sendMessage("§7[§eNeromania§7] Dir wurden "+price +" Dukaten abgezogen!");
                } else {
                    player.sendMessage("§7[§eNeromania§7] §cDu hast nicht genügend Geld!");
                }
             
            } else if(e.getCurrentItem().getItemMeta().getDisplayName().equals("§7Rohes Hammelfleisch")) {
                if(econ.has(player, 5)) {
                    player.getInventory().addItem(e.getCurrentItem());
                    econ.withdrawPlayer(player, price);
                    player.closeInventory();
                    player.sendMessage("§7[§eNeromania§7] Dir wurden "+price +" Dukaten abgezogen!");
                } else {
                    player.sendMessage("§7[§eNeromania§7] §cDu hast nicht genügend Geld!");
                }
             
            } else if(e.getCurrentItem().getItemMeta().getDisplayName().equals("§7Rohes Schwein")) {
                if(econ.has(player, 5)) {
                    player.getInventory().addItem(e.getCurrentItem());
                    econ.withdrawPlayer(player, price);
                    player.closeInventory();
                    player.sendMessage("§7[§eNeromania§7] Dir wurden "+price +" Dukaten abgezogen!");
                } else {
                    player.sendMessage("§7[§eNeromania§7] §cDu hast nicht genügend Geld!");
                }
             
            } else if(e.getCurrentItem().getItemMeta().getDisplayName().equals("§7Rohes Rind")) {
                if(econ.has(player, 5)) {
                    player.getInventory().addItem(e.getCurrentItem());
                    econ.withdrawPlayer(player, price);
                    player.closeInventory();
                    player.sendMessage("§7[§eNeromania§7] Dir wurden "+price +" Dukaten abgezogen!");
                } else {
                    player.sendMessage("§7[§eNeromania§7] §cDu hast nicht genügend Geld!");
                }
             
            }else if(e.getCurrentItem().getItemMeta().getDisplayName().equals("§7Rohes Kanninchen")) {
                if(econ.has(player, 5)) {
                    player.getInventory().addItem(e.getCurrentItem());
                    econ.withdrawPlayer(player, price);
                    player.closeInventory();
                    player.sendMessage("§7[§eNeromania§7] Dir wurden "+price +" Dukaten abgezogen!");
                } else {
                    player.sendMessage("§7[§eNeromania§7] §cDu hast nicht genügend Geld!");
                }
             
            }
         
         
         
         
         
        }


        } catch (NullPointerException e2) {
         
        }
     
    }

Das ist meine Klasse. Kaufen geht aber ich kann trotzdem Items rausnehmen trotz setCancelled(True)? Warum
LG
 

UnityGaming

Workaholic
Registriert
25 Oktober 2015
Beiträge
527
Alter
26
Diamanten
312
Minecraft
FastFelix771
Du cancelst das Event ja doppelt und dreifach im Code. o_O

Du solltest, besonders um Gratis-Items durch Laufzeitfehler zu vermeiden, so früh wie nur möglich validieren, dass es sich um einen Shop handelt. Ich persönlich setze immer die ID des Shop Inventars via NBT Tag auf das Item drauf.

Und wieso catchst du eine NPE?!
Dein Shopsystem wird bei der kleinsten Kleinigkeit total nach hinten losgehen...

Da solltest du allgemein noch nachbessern, im Moment ist das Ding total fragil.
 
Status
Für weitere Antworten geschlossen.
Oben