1. 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!

mysteriöse Fehler meldung

Dieses Thema im Forum "Spigot" wurde erstellt von TheFreshTobi, 6. Februar 2016.


  1. TheFreshTobi
    Offline

    TheFreshTobi Minecrafter

    Registriert seit:
    6. Februar 2016
    Beiträge:
    1
    Geschlecht:
    männlich
    Hallo, ich habe ein kleines problem.und zwar bin ich grade ein Plugin am schreiben und die befehle gehen irgendwie nicht...die Konsole sagt mir das das problem am Player p = (Player) sender; liegt nur ich finde kein fehler...auch an der Konsole geht der test befehl "Info" nicht, ich habe ihn extra mit cmd.sendmessage("") geschrieben. aber immer noch kommt die fehler meldung.

    ich programmiere mit Bukkit 1.8.8 Java 8



    hier ist der Code:


    package fresh;

    import org.bukkit.Material;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandSender;
    import org.bukkit.entity.Player;
    import org.bukkit.event.Listener;
    import org.bukkit.inventory.Inventory;
    import org.bukkit.inventory.ItemStack;
    import org.bukkit.inventory.meta.ItemMeta;
    import org.bukkit.plugin.java.JavaPlugin;

    public class McOpMain extends JavaPlugin implements Listener {

    private Inventory inv=null;


    public void onEnable(){
    System.out.println("[McOpServerSystem]§2 wurde erfolgreich gestartet");
    }

    public void onDisable(){
    System.out.println("§6[McOpServerSystem]§cWurde erfolgreich deaktiviert :(");
    }


    public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args){
    Player p = (Player) sender;
    if(cmd.getName().equalsIgnoreCase("mcop")){
    inv = p.getPlayer().getServer().createInventory(null, 18, "Klassen");

    ItemStack istack = new ItemStack(Material.STONE_SWORD);
    ItemMeta istackmeta = istack.getItemMeta();
    istackmeta.setDisplayName("§a§lVip-Kit");


    ItemStack istack2 = new ItemStack(Material.GOLD_SWORD);
    ItemMeta istackmeta2 = istack2.getItemMeta();
    istackmeta2.setDisplayName("§b§lElite-Kit");


    ItemStack istack3 = new ItemStack(Material.IRON_SWORD);
    ItemMeta istackmeta3 = istack3.getItemMeta();
    istackmeta3.setDisplayName("§6§lSupper-Kit");


    ItemStack istack4 = new ItemStack(Material.WOOD_SWORD);
    ItemMeta istackmeta4 = istack.getItemMeta();
    istackmeta4.setDisplayName("§a§lGamer-Kit");


    inv.setItem(5, istack);
    inv.setItem(10, istack2);
    inv.setItem(13, istack3);
    inv.setItem(2, istack4);


    p.getPlayer().openInventory(inv);

    }

    if(cmd.getName().equalsIgnoreCase("Info")){
    sender.sendMessage("Test");
    }


    return true;



    }





    }
     
  2. GPSforLEGENDS
    Offline

    GPSforLEGENDS Vorarbeiter

    Registriert seit:
    21. März 2014
    Beiträge:
    289
    Minecraft:
    GPSforLEGENDS
    http://wiki.bukkit.org/Plugin_Tutorial/de
    Lesen und durcharbeiten ;)

    Ansonsten (auch wenn ich weiß das du keinen Plan hast wie man das macht) vorher überprüfen ob der Sender wirklich ein Spieler ist bevor du ihn zu einen player castest.

    Edit: es bringt nichts die itemmeta zu ändern wenn du sie nicht wieder auf ein Item setzt und das nächste mal bitte den Code tag benutzen.
     
    Zuletzt bearbeitet: 6. Februar 2016
    • Gefällt mir Gefällt mir x 1
  3. McWizzardDev
    Offline

    McWizzardDev Kuhfänger

    Registriert seit:
    7. Oktober 2015
    Beiträge:
    56
    Geschlecht:
    männlich
    Du hast bei den ItemStacks einen Fehler,
    istack.setItemMeta(istackmeta);

    Aber ich habe dir eine Methode, wie du viel einfacher ItemStacks erstellen kannst geschrieben:

    Code (Text):
    1.     private static ItemStack createItemStack(Material mat, String name) {
    2.         ItemStack item = new ItemStack(mat);
    3.         ItemMeta meta = item.getItemMeta();
    4.         meta.setDisplayName(name);
    5.         item.setItemMeta(meta);
    6.         return item;
    7.     }
    Du kannst diese Methode so anwenden:

    Code (Text):
    1. ItemStack item = createItemStack(Material.GOLD_BLOCK, "§9Der Name");
    2.  
    3. inv.setItem(1, item);
    Sonst ist mir auf die schnell nichts aufgefallen ;)

    #Packe deinen Code nächstes mal doch besser in einen Code (Du musst dafür auf diese Klammer klicken und dann Code auswählen, dort bitte den Code eintragen, so ist das ganze schon ein wenig übersichtlicher
     
  4. Cyrox
    Offline

    Cyrox Guest

    Vielleicht solltest du nicht nur den Code sondern auch den Fehler posten? Nur so ne Idee
     
  5. skcxck
    Offline

    skcxck Minecrafter

    Registriert seit:
    9. November 2013
    Beiträge:
    12
    Geschlecht:
    männlich
    Minecraft:
    skcxck
    Wie @GPSforLEGENDS bereits erwähnte: Du solltest vorher überprüfen, ob der Sender tatsächlich ein Spieler ist.
    Code (Text):
    1.  
    2. Player p = null;
    3. if (sender instanceof Player) { p = (Player) sender; } else { sender.sendMessage("Du bist kein Spieler!"); }
    4.  
    Das hilft dir vermutlich nur geringfügig bei deiner Problemlösung, allerdings solltest du dir das auf die Seele binden.
     
    • Gefällt mir Gefällt mir x 1