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

"Grafisches Interface"

Kombustor

Redstoneengineer
Registriert
1 Februar 2013
Beiträge
39
Diamanten
0
Ich programmiere zurzeit an BattleRoyale (http://minecraft-server.eu/board/showthread.php?13630-Konzept-BattleRoyal-%96-Kit-PVP-Minispiel) und habe auch alle Kits programmiert!

Ich möchte aber wenn man /klasse eingibt dass sich ein fenster öffnet, wo Items drinliegen welche man anklicken kann und somit die Kits bekommt, weiß jemand wie das geht, habe auf Google nichts gefunden!

Könnte mir jemand einen Code schreiben?

Wer nicht weiß was ich meine (auf dem Bild habe ich /kit eingegeben und das hat sich geöffnet!):


Geht dies vielleicht mit einer virtual chest? Aber wie kann man dann interagieren?
 

Kombustor

Redstoneengineer
Registriert
1 Februar 2013
Beiträge
39
Diamanten
0
So jetzt nochmal neu,
ich hab in meinem Plugin Folder ein neues Package namens ItemMenu erstellt, dort drin zwei Klassen:

1. IconMenu (alles herauskopiert!)

2. CmdKlasse

Code:
package ItemMenu;
import org.bukkit.Material;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
 
public class CmdKlasse implements CommandExecutor {
 
    @Override
    public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
        if (sender instanceof Player) {
            
            

    	    if(cmd.getName().equalsIgnoreCase("klasse")){
    	    if(args.length== 0){

    	    Player p = ((Player) sender).getPlayer();
    				
    				
            IconMenu menu = new IconMenu("klassen", 27, new IconMenu.OptionClickEventHandler() {
 
            @Override
            public void onOptionClick(IconMenu.OptionClickEvent event) {
            event.setWillClose(true);
            }
            }, de.diacrafting.BattleRoyale.BattleRoyale.plugin);
            menu.setOption(3, new ItemStack(Material.APPLE, 1), "Food", "The food is delicious");
            menu.setOption(4, new ItemStack(Material.IRON_SWORD, 1), "Weapon", "Weapons are for awesome people");
            menu.setOption(5, new ItemStack(Material.EMERALD, 1), "Money", "Money brings happiness");
            menu.open(p);
            return true;
    			}
    		}
        }
		return false;
        }
}
Wenn ich jetzt /klasse eingebe passiert einfach gar nichts, muss ich die Klasse irgendwie aktivieren?
 
Zuletzt bearbeitet:
G

games6471

Guest
Wenn du das gelesen hättest, wäre diese Frage schon gelöst:

Code:
In your plugin's onEnable() method, you need to create an instance of your new command executor class, and then make a call like getCommand("basic").setExecutor(myExecutor);, where "basic" is the command we want to handle, and myExecutor is the instance we created.
 

Kombustor

Redstoneengineer
Registriert
1 Februar 2013
Beiträge
39
Diamanten
0
Was ist jetzt das Problem?
Code:
2013-04-08 20:17:52 [INFO] KombustorLP issued server command: /klasse
2013-04-08 20:17:52 [SEVERE] null
org.bukkit.command.CommandException: Unhandled exception executing command 'klasse' in plugin BattleRoyale v0.2.3.9
	at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46)
	at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:188)
	at org.bukkit.craftbukkit.v1_5_R2.CraftServer.dispatchCommand(CraftServer.java:523)
	at net.minecraft.server.v1_5_R2.PlayerConnection.handleCommand(PlayerConnection.java:966)
	at net.minecraft.server.v1_5_R2.PlayerConnection.chat(PlayerConnection.java:884)
	at net.minecraft.server.v1_5_R2.PlayerConnection.a(PlayerConnection.java:841)
	at net.minecraft.server.v1_5_R2.Packet3Chat.handle(Packet3Chat.java:44)
	at net.minecraft.server.v1_5_R2.NetworkManager.b(NetworkManager.java:292)
	at net.minecraft.server.v1_5_R2.PlayerConnection.d(PlayerConnection.java:110)
	at net.minecraft.server.v1_5_R2.ServerConnection.b(SourceFile:35)
	at net.minecraft.server.v1_5_R2.DedicatedServerConnection.b(SourceFile:30)
	at net.minecraft.server.v1_5_R2.MinecraftServer.r(MinecraftServer.java:578)
	at net.minecraft.server.v1_5_R2.DedicatedServer.r(DedicatedServer.java:225)
	at net.minecraft.server.v1_5_R2.MinecraftServer.q(MinecraftServer.java:474)
	at net.minecraft.server.v1_5_R2.MinecraftServer.run(MinecraftServer.java:407)
	at net.minecraft.server.v1_5_R2.ThreadServerApplication.run(SourceFile:573)
Caused by: java.lang.NullPointerException
	at ItemMenu.IconMenu.<init>(IconMenu.java:34)
	at ItemMenu.KlasseCommandExecutor.onCommand(KlasseCommandExecutor.java:23)
	at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44)
	... 15 more


KlasseCommandExecutor.class:

Code:
package ItemMenu;
import org.bukkit.Material;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
 
public class KlasseCommandExecutor implements CommandExecutor {
 
    @Override
    public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
        if (sender instanceof Player) {
            
            

    		if(cmd.getName().equalsIgnoreCase("klasse")){
    	    if(args.length== 0){

    	    Player p = (Player) sender;
    				
    				
            IconMenu menu = new IconMenu("klassen", 27, new IconMenu.OptionClickEventHandler() {
 
            @Override
            public void onOptionClick(IconMenu.OptionClickEvent event) {
            event.setWillClose(true);
            }
            }, de.diacrafting.BattleRoyale.BattleRoyale.plugin);
            menu.setOption(3, new ItemStack(Material.APPLE, 1), "Food", "The food is delicious");
            menu.setOption(4, new ItemStack(Material.IRON_SWORD, 1), "Weapon", "Weapons are for awesome people");
            menu.setOption(5, new ItemStack(Material.EMERALD, 1), "Money", "Money brings happiness");
            menu.open(p);
            return true;
    			}
    		}
        }
		return false;
        }
}


In der Main Klasse:

Code:
public void onEnable(){ 
		
		 getCommand("klasse").setExecutor(new KlasseCommandExecutor());
    }
 
Oben