Detta är del 2 av guiden som är till för dig som vill börja utveckla plugins för Spigot. I denna del ska vi skapa ett simpelt kommando som skriver ”Hello Spelarnamn” till spelaren som skriver kommandot /hello
på test-servern.
Steg 1. Skapa klassen som kör kommandot.
- Högerklicka på paketet där Main-klassen ligger och skapa en ny klass som heter ”
CommandHandler
”. (Namnet är valfritt och kan även vara t.ex ”HelloCommand”) - Inne i klassen, så bör du nu implementera ”CommandExecutor” som är ett interface som används för att köra kommandon.
- Välj ”Implement methods” i den röda glödlampan, eller tryck alt+enter för att öppna menyn, och välj ”Implement methods”. Tyck sedan OK.
4. Döp om ”commandSender
” till ”sender
” och ”strings
” till ”args
” för att lättare kunna använda dessa variabler i kommandot. Ändra även ”return false
” till ”return true
”.
Koden bör nu ser ut såhär:
package eu.mineworlds.plugin; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; public class CommandHandler implements CommandExecutor { @Override public boolean onCommand(CommandSender sender, Command command, String s, String[] args) { return true; } }
CommandSender
är det objekt som skickas av servern när någon skriver ett kommando, till exempel /hello
. Vanligtvis finns det två typer av sätt ett kommando kan skickas, antingen av en spelare inne i spelet eller från serverterminalen. Om du vill kolla om sändaren är en spelare, så kan du t.ex göra följande kod:
if (sender instanceof Player) { //Sändaren är en Spelare } else { //Sändaren är något annat, t.ex server-terminalen }
Sändaren har dock alltid ett namn, så i detta fall så behöver vi inte göra den här kontrollen. Vi vill skicka tillbaka ”Hello Spelarnamn” till sändaren när de skriver kommandot i antingen chatten eller server-terminalen.
Detta kan göras via
sender.sendMessage("Meddelande");
Vi lägger alltså till detta i onCommand-metoden, innan return true;
. För att lägga till sändarens namn kan vi göra:
sender.sendMessage("Hello " + sender.getName());
Nu är kommandoklassen färdig!
Steg 2. Registrera kommandot i plugin.yml
- Lägg till kommandot i slutet av din plugin.yml-fil:
commands: hello: description: Skickar hello usage: /hello
Detta innebär att servern registrerar att kommandot existerar när pluginet laddas in. ”description” innehåller en kort info-sträng om vad kommandot gör, och ”usage” innehåller bara information om hur man ska använda kommandot, syntaxmässigt. Läs mer om detta i dokumentationen för plugin.yml
Steg 3. Registrera kommandot i Main-klassen.
Lägg till detta i din onEnable()-metod:
getCommand("hello").setExecutor(new CommandHandler());
Metoden ska nu se ut såhär:
@Override public void onEnable() { getServer().getLogger().log(Level.INFO, "Hello World!"); getCommand("hello").setExecutor(new CommandHandler()); }
Steg 4. Testa kommandot.
Nu kan du logga in på test-servern och skriva /hello
i chatten, eller skriva kommandot i terminalen. Fungerar det som det ska bör det nu stå ”Hello Spelarnamn”.