[Tutorial] Minecraft Bukkit Plug-Ins erstellen [001] - Grundlagen

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • [Tutorial] Minecraft Bukkit Plug-Ins erstellen [001] - Grundlagen



    Hallo easy-scripting.net

    Hiermit beginne ich eine Tutorial Reihe über Java. Ich erkläre nach und nach alle Funktionen von Bukkit, welches benutzt wird um Plug-Ins für Minecraft zu scripten.


    Dafür benötigt ihr natürlich erst eine Programmier Umgebung. Da empfehle ich euch "Eclipse". Dieses findet ihr hier Download von Eclipse
    Beim ersten Starten werdet ihr nach einer so gennanten "Workspace" oder "Workbench" gefragt. Dies ist der Ort wo eure Projekte gespeichert werden.


    Ihr erstellt über "File -> New -> Java Protject" ein neues Java Projekt.Der Name ist in diesem Fall egal. Dann bildet sich im Bereich "Project Explorer" euer Projekt. Dieses öffnet ihr über den Pfeil daneben und erstellt im Ordner "src" ein neues Package. Dieses benennt ihr so: "me.DeinName.PluginName". Damit wäre dies erledigt. Da wir ja etwas mit dem Include Bukkit machen wollen, müssen wir es erstmal herrunterladen:
    Bukkit 1.1 (Recommended Build) dl.bukkit.org/downloads/bukkit/get/00789_1.1-R6/bukkit.jar
    Bukkit 1.2.3-R0.2 (Beta Version) dl.bukkit.org/downloads/bukkit….2.3-R0.2/bukkit-beta.jar

    Diese speichert ihr da, wo ihr sie wiederfinden könnt. Dann macht ihr folgendes. Ihr macht auf euer Projekt, also das was ihr ganz am Anfang erstellt habt einen Rechtsklick, geht auf Properties und dann links auf Java Build Path und dann in den Tabs auf Libraries und dann auf den Button "Add Externals JARS" . Dort wählt ihr nun das Bukkit Include aus. So nun geht es wirklich mal ans schreiben.

    Bisher sollte die Datei so aussehen:

    Java-Quellcode

    1. package me.Re3pEr.PluginGrundlage;
    2. import org.bukkit.plugin.java.JavaPlugin;
    3. public class PluginGrundlage {
    4. }


    Damit alles klappt müsst ihr aber hinter "public class NameEuresProjekts" folgendes schreiben, dass es so aussieht:

    Java-Quellcode

    1. public class PluginGrundlage extends JavaPlugin {


    Dann werdet ihr bei "JavaPlugin" einen Fehler bekommen. Dieser sieht aus wie bei Microsoft Word. Undzwar ist dort eine gekringelte rote Linie. Haltet den Mauszeiger auf den Fehler und wählt die Lösung "import...."
    Dann fügt er eine Zeile hinzu, welche das Java Plugin von Bukkit importiert. EIGENTLICH solltet ihr jetzt auch einen Fehler bei dem Namen eures Projekts bekommen. Bei mir wäre das jetzt "PluginGrundlage":

    Java-Quellcode

    1. public class [color=#ff00ff]PluginGrundlage[/color] extends JavaPlugin {

    Bei dem Lilanen müsste der Fehler sein. Dort haltet ihr euren Mauszeiger drauf und wählt:
    "Add unplemited Methodes"
    Falls der Fehler bei euch NICHT kommt, müsst ihr einfach folgendes an euren Code ransetzen, damit es so aussieht:

    Java-Quellcode

    1. package me.Re3pEr.PluginGrundlage;
    2. import org.bukkit.plugin.java.JavaPlugin;
    3. public class PluginGrundlage extends JavaPlugin {
    4. @Override
    5. public void onDisable() {
    6. //TODO Auto-generated method stub
    7. }
    8. @Override
    9. public void onEnable() {
    10. //TODO Auto-generated method stub
    11. }
    12. }
    Alles anzeigen


    Wie man sieht steht dort, "TODO" was soviel heißt wie: "Muss noch getan werden" Also könnten wir doch eine Nachricht senden, den "onDisable" meint, wenn das Plug In deaktiviert wird und "onEnable" wenn es aktiviert wird. Da könnte man doch in der Bukkit Serverkonsole eine Nachricht senden lassen, oder? Also machen wir das mal.
    Wir schreiben in die erste TODO Zeile:

    Java-Quellcode

    1. System.out.println("Hier kommt die Nachricht herrein") ;

    Diese Zeile könnt ihr jetzt kopieren und im zweiten "TODO" Kommentar einfügen. ( Sätze mit einem Doppelslash davor sind Kommentare)

    Das ist jetzt das absoloute Grundgerüst. Es sollte bisher so aussehen:

    Java-Quellcode

    1. package me.Re3pEr.PluginGrundlage;
    2. import org.bukkit.plugin.java.JavaPlugin;
    3. public class PluginGrundlage extends JavaPlugin {
    4. @Override
    5. public void onDisable() {
    6. System.out.println("Hier kommt die Nachricht herrein") ;
    7. }
    8. @Override
    9. public void onEnable() {
    10. System.out.println("Hier kommt die Nachricht herrein") ;
    11. }
    12. }
    Alles anzeigen


    Als nächstes schreiben wir den Teil, was passieren soll, wenn ein Kommando eingegeben wird. Das sollte dann so aussehen:

    Java-Quellcode

    1. public boolean onCommand(CommandSender sender, Command cmd, String cmdLabel, String[] args) {

    Alle Fehler die ihr erhaltet, könnt ihr durch importieren lösen.
    Jetzt wandeln wir die Varibale Sender die sich oben befindet in eine Player Variable um mit der wir schon mehr anfangen können.
    Dies geschichte mit:

    Java-Quellcode

    1. Player p = (Player)sender;

    Außerdem müsst ihr den boolean public vor seiner als falsch returnen, dh. wenn du etwas falsche eingibst sendet er es bukkit als falsch.
    Der ganze müsste jetzt so aussehen

    Java-Quellcode

    1. public boolean onCommand(CommandSender sender, Command cmd, String cmdLabel, String[] args) {
    2. Player p = (Player)sender;
    3. return false;
    4. }


    Jetzt erstellen wir unseren ersten eigentlichen Befehl. Wer sich schon ein wenig mit scripten auskennt soll nun mal meine Vorgabe durchlesen und dann versuchen es selber zu machen, bevor man die Lösung anschaut.
    Vorgabe:
    Du fragst ab ob das Kommando, von dem du übrigens den namen bekommst, "Kommando" ist und missachtest die Gross und Kleinschreibung.


    Lösung:

    Java-Quellcode

    1. if(cmd.getName().equaIsIgnoreCase("Kommandoname")) {

    if steht für eine Abfrage
    cmd.getName heißt das er den namen vom Kommando bekommt
    equaIsIngnoreCase bedeutet das die Gross und Kleinschreibung egal ist
    Kommandoname kann auch alles andere sein. Das ist nämlich der Name deines Kommandos!

    Aber bei diesem Kommando wollen wir es so haben, dass das Kommando nicht nicht erkkant wird wenn man z.B. "/Kommandoname Test" eingibt, also mit einem Argument sondern, dass er das Argument einfach missachtet. Dafür schreiben wir:

    Java-Quellcode

    1. if(args.length == 0) {

    Dann drücken wir Enter und dort können wir herrein schreiben was passieren soll, wenn der Kommand betätigt wird, aber was man da machen kann erkläre ich nächstes Mal.
    Wir machen nurnoch eine Sache

    Wir erstellen die bekannte "plugin.yml" Datei, also die einstellungs Datei. Das geht so. Wir machen auf den Ordner "src" einen Rechtsklick, gehen auf "New -> Other -> File"
    Diese nennen wir "plugin.yml"
    Dort schreiben wir herrein:

    Java-Quellcode

    1. name: PluginGrundlage
    2. version: 1.0
    3. main: me.Re3pEr.PluginGrundlage.PluginGrundlage
    4. author: Re3pEr
    5. website: www.easy-scripting.net


    Das wäre es auch schon. Bei Fragen fragt mich ruhig. Ich bin übrigens auch kein Profi. Fehler passieren :thumbsup:

    Übersicht von allem was wir bisher geschaft haben:

    Java-Quellcode

    1. package me.Re3pEr.PluginGrundlage;
    2. import org.bukkit.command.Command;
    3. import org.bukkit.command.CommandSender;
    4. import org.bukkit.entity.Player;
    5. import org.bukkit.plugin.java.JavaPlugin;
    6. public class PluginGrundlage extends JavaPlugin {
    7. @Override
    8. public void onDisable() {
    9. System.out.println("Hier kommt die Nachricht herrein") ;
    10. }
    11. @Override
    12. public void onEnable() {
    13. System.out.println("Hier kommt die Nachricht herrein") ;
    14. }
    15. public boolean onCommand(CommandSender sender, Command cmd, String cmdLabel, String[] args) {
    16. Player p = (Player)sender;
    17. if(cmd.getName().equalsIgnoreCase("Kommandoname")) {
    18. if(args.length == 0) {
    19. //TODO Was passieren soll, wenn das Kommando ausgeübt wird
    20. }
    21. }
    22. return false;
    23. }
    24. }
    Alles anzeigen


    Viel Spaß!
    wünscht
    Re3pEr

    Bilder:
    [Blockierte Grafik: http://i1200.photobucket.com/albums/bb334/MelozZ/Untitled-1.png][Blockierte Grafik: http://i1200.photobucket.com/albums/bb334/MelozZ/adfasdf.png]
    Bilder
    • adfasdf.png

      51,94 kB, 1.366×768, 421 mal angesehen
    • Untitled-1.png

      51,49 kB, 1.366×768, 362 mal angesehen
    • Untitled-2.png

      52,87 kB, 1.366×768, 350 mal angesehen
    • Untitled-3.png

      62,63 kB, 1.366×768, 377 mal angesehen
    • Untitled-4.png

      58,79 kB, 1.366×768, 388 mal angesehen
    Drasko@easy-scripting.net since 31.12.2011
    [Blockierte Grafik: http://files.tzdev.de/banner.png]

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von Re3pEr ()

  • Ich bin ganz ehrlich, das Tutorial wäre nichts für Anfänger!
    Du erklärst viel zu Wenig.
    Alleine bei der plugin.yml kann man sehr viel Falsch machen und du erklärst garnichts dazu, nichtmals das man dort eigentlich auch die Ganzen Commands eintragen muss die im Plugin vorhanden sind damit sie überhaupt richtig Funktionieren!
    Dann erklärst du nichtmals was welche Zeile in der plugin.yml bedeutet oder was man dort genau rein schreiben soll.

    Nach meiner meinung solltest du das Ganze Tutorial nochmal überarbeiten und alles Schritt für Schritt erklären...


    Greetz,
    NoxiiZ
  • @NoxiiZ

    Das mit den Kommandos kommt erst im nächsten Tutorial, da wir noch keinen Kommando haben, dass etwas bewirkt.

    @Vincent

    Echt? Dann guck dir ein paar Videos an, Minecraft ist einfach ein Klasse Spiel, warum sollten es sonst 5,569,828 Leute gekauft haben? (Siehe "minecraft.net")
    Drasko@easy-scripting.net since 31.12.2011
    [Blockierte Grafik: http://files.tzdev.de/banner.png]