Minecraft Plugin-Coding Frage

09/25/2011 22:44 Praim#1
Moin.
Habe mich ein wenig mit dem Erstellen von Plugins für Minecraft (genauer gesagt Bukkit) beschäftigt.
Nun habe ich eine Frage - wie kann ich es machen, dass die Aktion nur dann ausgeführt wird, wenn der User einen bestimmten Befehl eingibt?

Beispiel:
User gibt ein
Quote:
/lol
und dann erscheint im Chat "Lol wurde eingegeben"
Das mit dem Erscheinen ist kein Problem, aber wie (vor Allem) das / abfragen?
Und 2.: Das Plugin soll praktisch eine Variable nach dem "/lol" erstellen.

Beispiel:
User gibt ein
Quote:
/lol Das ist ein Test
und im Chat erscheint "Das ist ein Test"

Wäre nett, wenn mir jemand helfen könnte.

Gruß
09/25/2011 22:54 False#2
Das müsste eigentlich gehen ;)

Code:
@Override
        public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args)
        {
                if (!(sender instanceof Player))[COLOR="Yellow"]//überprüfen ob es ein player ist und kein anderes plugin[/COLOR]
                {
                        return false;
                }
               
                Player p = (Player) sender;
               
                if (cmd.getName().equalsIgnoreCase("lol"))[COLOR="Yellow"]//überprüfen ob /lol eingegeben wurde[/COLOR]
                {
                        if (!(args.length == 0)) 
                        {
                                return false;
                        }
                       
                        
                        p.sendMessage("lol" ); [COLOR="Yellow"]//senden der nachricht[/COLOR]
                       
                        return true;
    }
}
09/25/2011 22:55 handsan#3
09/25/2011 23:20 Praim#4
Hab das nun so:
Code:
package Praimlain.SlimeFun;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.event.Event.Priority;
import org.bukkit.event.Event;
import org.bukkit.plugin.PluginDescriptionFile;
import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.plugin.PluginManager;

/**
* Sample plugin for Bukkit
*
* @author Dinnerbone
*/
public class SlimeFun extends JavaPlugin 
{
    private final SlimeFunPlayerListener playerListener = new SlimeFunPlayerListener(this);
    private final SlimeFunBlockListener blockListener = new SlimeFunBlockListener(this);
    //private final HashMap<Player, Boolean> debugees = new HashMap<Player, Boolean>();

    // NOTE: There should be no need to define a constructor any more for more info on moving from
    // the old constructor see:
    // http://forums.bukkit.org/threads/too-long-constructor.5032/

    @Override
    public void onDisable() 
    {
        System.out.println("Goodbye world!");
    }
    
    @Override
    public void onEnable() 
    {
        PluginManager pm = getServer().getPluginManager();
        pm.registerEvent(Event.Type.PLAYER_JOIN, playerListener, Priority.Normal, this);
        pm.registerEvent(Event.Type.PLAYER_QUIT, playerListener, Priority.Normal, this);
        pm.registerEvent(Event.Type.PLAYER_MOVE, playerListener, Priority.Normal, this);
        pm.registerEvent(Event.Type.BLOCK_PHYSICS, blockListener, Priority.Normal, this);
        pm.registerEvent(Event.Type.BLOCK_CANBUILD, blockListener, Priority.Normal, this);
        
        pm.registerEvent(Event.Type.PLAYER_CHAT, playerListener, Priority.Normal, this);
        pm.registerEvent(Event.Type.BLOCK_BREAK, blockListener, Priority.Normal, this);


        PluginDescriptionFile pdfFile = this.getDescription();
        System.out.println( pdfFile.getName() + " version " + pdfFile.getVersion() + " is enabled!" );
    }
    
    @Override
        public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args)
    {
                if (!(sender instanceof Player))//überprüfen ob es ein player ist und kein anderes plugin
                {
                        return false;
                }
               
                Player p = (Player) sender;
               
                if (cmd.getName().equalsIgnoreCase("lol"))//überprüfen ob /lol eingegeben wurde
                {
                        if (!(args.length == 0)) 
                        {
                                return false;
                        }
                       
                        
                        p.sendMessage("lol" ); //senden der nachricht
                       
                        return true;
                }
    }
}
Aber
Quote:
missing return statement
}
1 error
Was mach ich falsch? xD
09/25/2011 23:21 handsan#5
Java Grundlagen lernen?

Du musst true oder false zurückgeben. Im Video wird das erklärt.

Im Moment ist es möglich dass kein return erreicht wird.
09/25/2011 23:27 Praim#6
Mhm, wäre vielleicht eine Möglichkeit :P
Vielleicht könnt ihr mir bei diesem einen Male ja noch so aushelfen^^
09/25/2011 23:28 handsan#7
Habs eigentlich reineditiert woran es liegt beim ersten Hinsehen.
09/25/2011 23:36 False#8
Kann zwar kaum - garnicht java aber denke es liegt daran.
Das return(denke das letzte) muss weiter nach hinten( weiter hinter den } klammern ).