Könnte man das jetzt so schon exportieren und in Plugins reinkopieren?
Hinweis: Ich bin seit längerer Zeit nicht mehr in diesem Forum aktiv, deshalb kann eine Antwort lange auf sich warten lassen. Am besten in Skype kontaktieren!
Hallo und herzlich willkommen zu meinem Tutorial, wie man ein Bukkit Plugin programmiert!
Wir beginnen gleich, allerdings setze ich gewisse Kenntnisse vorraus. Außerdem sollte gesagt sein dass ich keinsfall Profi bin und nicht bei allen Problemen Helfen kann. Wenn mir was einfällt werde ich später noch ein weiteres Tutorial hinzufügen. Aber nun los!
1. Was braucht man?
Man benötigt Software-Seitig eigentlich nicht viel. Des weiteren denke ich dass jeder von euch bereits Java installiert hat. Ihr benötigt dann noch das JDK (Java Development Kit) sowie eine Programmierumgebung, ich empfehle und benutze Eclipse, dass ihr hier downloaden könnt. Installieren und fertig!
2. Java Resourcen
Ihr benötigt die Bukkit API (Library) wo alle Funktionen und Möglichkeiten von Bukkit inbegriffen sind. Ihr müsst die Bibliothek installieren. Aktuelle Version immer hier zum Download. Ihr könnt auch Beta-Builds nehmen, aber diese sind natürlich nicht 100% Bug-Free!
3. Projekt erstellen
Können wir jetzt endlich anfangen? Ja! Dafür "Rechtsklick" im Projekt Explorer (normal rechts) und neues Projekt. Hier "Java Project" auswählen. Nun solltet ihr einen Namen vergeben können, einfach einen eingeben (hat nichts mit dem in Bukkit angezeigten zu tun) und erstellen. Jetzt machen wir Rechtsklick auf das Projekt und klicken auf "Properties". Nun links im Menü "Java Build Path" anwählen und den Tab "Library" auswählen. Hier klickt ihr dann auf "Add External JAR" und wählt die bei 2. heruntergeladene JAR-Datei aus. Abschließend OK drücken!
Nun müssen wir uns eine Plugin-Beschreibung erstellen. Weiter zum nächsten Punkt!
4. Plugin-Beschreibung erstellen
Bukkit benötigt eine Datei, wo bestimmte Sachen wie Name, Version und Beschreibung, aber auch derv Speicherort der Hauptklasse gespeichert sind. Macht einen Rechtsklick auf den "src" Ordner in eurem Projekt und "New > File". Als Namen "plugin.yml" eingeben und bestätigen. Wenn sich jetzt ein externer Editor öffnet, diesen einfach schließen und die Datei in den Editor von Eclipse reinziehen (Externer geht auch, muss aber oft per F5 refresht werden). Hier sollte folgendes rein:
Bei Name tragt ihr den Namen eures Plugins ein. Dieser kann mit "/plugins" eingesehen werden. Bei der Version wird die aktuelle Version eingetragen, die Beschreibung finde ich sinnlos und bei "author" gehört euer Name rein.Code:name: PluginName version: 1.0 author: EuerName description: Irgendwas, ich finde es etwas sinnlos main: me.euername.pluginname.Hauptklasse
Bei "main" müsst ihr den Namen eures Pakets angeben, dass in Schritt 5 erstellt wird, sowie mit "." getrennt den Namen der Hauptklasse (z. B.: me.cat24max.pluginname.PluginName, da ich oft meine Hauptklasse wie das Plugin nenne.
5. Code-Packet und Hauptklasse erstellen
Nun macht erneut Rechtsklick auf den "src" Ordner und wählt "New > Package" aus. Gebt den Namen nach folgendem Schema ein (wird in Schritt 4 benötigt): me.autorenname.pluginname
Bei großen Projekten können auch mehrere Packete erstellt werden, dazu aber hier nichts.
Nun bitte einen Rechtsklick auf das neu erstellte Paket und "New > Class". Als Namen einfach den Namen des Plugins wählen, dieser Name wird auch in Schritt 4 benötigt. Fertig!
6. Startanweisungen für Bukkit (Grundlagen)
Nun müssen wir Bukkit aber erstmal sagen, dass es ein Plugin ist und außerdem, die Befehle beim Start schreiben. Eure Hauptklasse sollte so aussehen:
Das soll natürlich nicht so sein, deshalb schreibt/kopiert folgendes hinein:Code:package me.euername.pluginname; public class Hauptklassenname { }
Sehr wichtig: Bei euch stehen zwischen package und public class noch die Imports, hier nicht! Außerdem sind Tabs bei mir manchmal Leereichen, da vBulletin nicht will!Code:package me.euername.pluginname; public class Hauptklassenname extends JavaPlugin { }
Hinweis: Fehler ist nicht gleich Fehler. Erstmal die Maus draufhalten und lesen, meistens muss nur importiert werden. Wenn ihr nicht konmplett mit einer Zeile fertig seid, bitte erst fertigmachen, meistens ist dann die Fehlermeldung weg.
Nun sagen wir Bukkit, was es tun soll wenn der Server startet bzw. stoppt.
Fertig ist das Grundgerüst.Code:package me.euername.pluginname; public class Hauptklassenname extends JavaPlugin { public void onEnable() { System.out.println("[PluginName] wurde geladen/aktiviert. Du hast Version 1.0"); } public void onDisable() { System.out.println("[PluginName] wurde deaktiviert"); } }
7. Exportieren
Zum Exportieren Rechtsklick auf das Projekt und "Export" drücken. Wählt hier "jar-File" aus und Weiter. Jetzt noch .projekt und .classpath abwählen und unten den Speicherort wählen. Fertig stellen und Go! Wenn Errors kommen Code und Fehlermeldung posten!
8. Listener
Listener. Heißt auf Deutsch Höhrer. Stimmt auch fast, denn ein Listener registriert Events und kann somit Aktionen ausführen. In diesem Beispiel wird registriert, wenn ein Spieler beitritt. Ich werde mit //Notiz Notitzen im Code hinzufügen. Viel Spaß beim "Nachcoden":
Code:package me.euername.pluginname; public class Hauptklassenname extends JavaPlugin { public void onEnable() { System.out.println("[PluginName] wurde geladen/aktiviert. Du hast Version 1.0"); registerEvents(); //Unten das private void wird ausgeführt } public void onDisable() { System.out.println("[PluginName] wurde deaktiviert"); } private void registerEvents() { //Aktionen zum registieren von Events getServer().getPluginManager().registerEvents(this, this); } @Event Handler //bitte Eventhandler schreiben mit @ davor public void onPlayerJoin(PlayerJoinEvent event) { //event ist der Name des Events, onPlayerJoin kann gewählt werden Player player = event.getPlayer(); //Herausfinden des "Schuldigen", der das Event ausgelöst hat, in diesem Fall der gejointe Spieler if (player.isOp) { event.setJoinMessage(ChatColor.YELLOW + "Der Admin " + player.getName() + " ist dem Spiel beigetreten."); player.sendMessage(ChatColor.GREEN + "Willkommen auf dem Server, du alter OP-Sack"); } else { event.setJoinMessage(ChatColor.YELLOW + player.getName() + " ist dem Spiel beigetreten."); player.sendMessage("Willkommen"); } } }
9. Eigener Befehl
Doch nun willst du ja auch noch einen Befehl haben, also man im Chat /Befehl eingibt und etwas passiert. In diesem Beispiel werden dem Spieler einfach ein paar Herzen abgezogen.
Code zwischen dem public class:
Und in der Plugin.yml folgendes Hinzufügen:Code:public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) { //Nun wird abgefragt ob der Absender ein Spieler oder die Konsole ist if (sender instanceof Player) { //Abfrage des Befehls if (cmd.getName().equalsIgnoreCase("emo") { //So jetzt wird der Sender als Player definiert Player player = (Player)sender; //Damage player.damage(4); //ergibt 2 Herzen wegen halbes Herz und so... Return true; } } return false; }
Code:commands: emo: description: Eine Beschreibung usage: /emo
So dass war es, Fragen einfach fragen.
Weiter Tutorials folgen, ich kann gerade nicht mehr tippen sonst wird mir schlecht!
MfG cat24max
Einfach mal auf "Thanks" drücken, vielen Dank!
Geändert von cat24max (23.11.2012 um 22:24 Uhr)
KEIN SUPPORT PER PN
Meine Website | YouTube (Let's Plays und Tutorials) | Twitter | Sag Danke | Meine Bukkit Plugins
Ichwillpopcorn, Minecrafty, MCenderdragon, kornichen, SuperCreeper, ZLord_, Seed, Azzarrel, Puddinger, The_crafting_God, Matthias27, LordKnaeckebrot, SaltoSchlager, kescha06, MinecraftLP97, Der-Eddy, MrFlieder, okaay, Sn00py_, TheStarman, Pamasich, Marsmaenchen66, Jommey, Fluttershy, bigshrimps, MCM64, truedarf, bluegru, Nutellatube, pitman-87, Hiroscho, handyhacker mag diesen Beitrag
Könnte man das jetzt so schon exportieren und in Plugins reinkopieren?
Ups, Moment wird geschrieben!
Edit: @olf13579 DONE
Geändert von cat24max (14.03.2012 um 13:31 Uhr)
KEIN SUPPORT PER PN
Meine Website | YouTube (Let's Plays und Tutorials) | Twitter | Sag Danke | Meine Bukkit Plugins
Danke![]()
*Like a Sir Club Gründer und stolzer Bronie*
kannst du noch ein paar Variablen noch schreiben?? Z.B.:
wenn ein Spieler einen (bestimmten) Block zerstört/nutzt/setzt,
Wenn ein spieler eine bestimmte höhe (in einer bestimmten welt) erreicht hat ....
wie man spieler automatisch nach einem bestimmten "event" zu einer Ingame bestimmten stelle teleportieren lässt...
PrimeTerra.de Survival Minecraft Survival Server | Skylands | Farmwelt
Serverlisten eintrag - Minecraft-Server.eu eintrag
PrimeTerra.de Minecraft Server - PrimeTerra Dynmap - PrimeTerra Forum
Lun4.net URL Shortener - Lun4 Forum
Mein Livestream Channel: Hitmare auf Twitch.tv
[/center]
Also muss sagen tolles Ding funktioniert bei mir einwandfrei!
Und @thewarwar das würde mich auch mal interessieren![]()
*Like a Sir Club Gründer und stolzer Bronie*
PrimeTerra.de Survival Minecraft Survival Server | Skylands | Farmwelt
Serverlisten eintrag - Minecraft-Server.eu eintrag
PrimeTerra.de Minecraft Server - PrimeTerra Dynmap - PrimeTerra Forum
Lun4.net URL Shortener - Lun4 Forum
Mein Livestream Channel: Hitmare auf Twitch.tv
[/center]
@cat24max Wieso postest du das nicht hier da ist der Code auch richtig. Hab es mal korrigiert bis keine Fehler mehr in Eclipse angezeigt werden. Teste das Plugin gleich
EDIT____Also es läd schon mal und keine Fehlermeldungen. Aber wenn ich joine passiert gar nix. So wie ich das lese soll ein Text kommen wenn man OP ist, andererseits kommt ein anderer text.
Geändert von nairolf13579 (14.03.2012 um 14:12 Uhr)
Ich könnte auch was erklären..
Guck dich mal in http://jd.bukkit.org/apidocs/ um. Da kannst du Events finden.
Block-Event: http://jd.bukkit.org/apidocs/org/buk...e-summary.html
Spieler-Event: http://jd.bukkit.org/apidocs/org/buk...e-summary.html
© -NEUI☺ Mein Youtube-Channel: CraftNeui ☻ Bukkit-Dev: Neuis, Bukkit: Neui, sysProfile
Rechtschreibfehlern haftet meine Tastatur.
►►►Meine selbstgemachten Projekte: GlassSplitter, BackCraft, MC.Jar Backup, R/A Map 1 R/A Map 2◄◄◄
KEIN SUPPORT PER PN
Meine Website | YouTube (Let's Plays und Tutorials) | Twitter | Sag Danke | Meine Bukkit Plugins