• 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

TheFreshTobi

Minecrafter
Registriert
6 Februar 2016
Beiträge
1
Alter
29
Diamanten
300
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;



}





}
 

GPSforLEGENDS

Vorarbeiter
Registriert
21 März 2014
Beiträge
289
Alter
85
Diamanten
300
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:

McWizzardDev

Kuhfänger
Registriert
7 Oktober 2015
Beiträge
56
Alter
30
Diamanten
300
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:
    private static ItemStack createItemStack(Material mat, String name) {
        ItemStack item = new ItemStack(mat);
        ItemMeta meta = item.getItemMeta();
        meta.setDisplayName(name);
        item.setItemMeta(meta);
        return item;
    }

Du kannst diese Methode so anwenden:

Code:
ItemStack item = createItemStack(Material.GOLD_BLOCK, "§9Der Name");

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
 

skcxck

Minecrafter
Registriert
9 November 2013
Beiträge
12
Diamanten
300
Minecraft
skcxck
Wie @GPSforLEGENDS bereits erwähnte: Du solltest vorher überprüfen, ob der Sender tatsächlich ein Spieler ist.
Code:
Player p = null;
if (sender instanceof Player) { p = (Player) sender; } else { sender.sendMessage("Du bist kein Spieler!"); }
Das hilft dir vermutlich nur geringfügig bei deiner Problemlösung, allerdings solltest du dir das auf die Seele binden.
 
Oben