McFeatureLib - Coole Funktionen in einem Bundle

Hier könnt ihr eure selbstgeschriebenen Plugins veröffentlichen.

McFeatureLib - Coole Funktionen in einem Bundle

Beitragvon Sep2703 » Sa 27. Dez 2014, 13:38

Hallo,

ich habe mich mal darangesetzt und eine API geschrieben, die eine Art "Erweiterung" zur Bukkit-API darstellt.
Gewisse Funktionen sind in der Bukkit-API nicht enthalten, werden aber in letzter Zeit ziemlich oft und gerne verwendet und diskutiert.
Anlässlich dieses Tatsache bin ich nun mit der Entwicklung einer Bibliothek angefangen, die folgende Punkte erfüllen soll:
  • Einfaches Handeln von Funktionen in der Version 1.8
  • Entwickler freundliche Schnittstelle, die auch Einsteiger bedienen können
  • Ressourcensparender und weitgehend optimierter Code
Ich habe quasi vor, den Code hinter einer Schnittstelle zu "verstecken".

Da mein Projekt mehrere Dateien enthält, müsst ihr es als Jar-Datei herunterladen und in den Build Path eures Projektes einbinden, wenn ihr es verwenden wollt.


Setup
Es gibt zwei Möglichkeiten, ein Projekt mit meiner API auszustatten.
  • Die Jar ins eigene Projekt mit "einpacken"
  • in der plugin.yml das Plugin als Depency eintragen und auf dem Server installieren
Letztere Lösung ist auf jeden Fall zu empfehlen, wenn mehrere Plugins die API nutzen.
Einen Schritt muss man aber immer durchführen, wenn man vernünftig mit der API arbeiten möchte: Sie in den Build Path des Projektes einbinden.


Benutzung
Ich habe verschiedene Features implementiert. Diese werde ich hier der Reihe nach an einem Beispiel vorstellen.

Hologramme
Hologramme in der 1.8 - eine Funktion meiner API.
Um Hologramme nutzen zu können, gibt es zwei Klassen:
  • Hologram (Für Hologramme, die nur eine Zeile benötigen)
  • LongHologram (Für mehrzeilige Hologramme)
Die Klassen bekommen jeweils ein Location-Objekt über den Konstruktor.
Außerdem kann dem LongHologram eine List<String> übergeben werden, um mehrere Zeilen anzeigen zu können.
Dadurch, dass sie das Interface Showable implementieren, können verfügen sie über die Methoden show(Player) und destroy(Player).
Ich empfehle, die Hologram/LongHologram-Objekte im RAM zu zwischenzuspeichern, damit ihr die Hologramme updaten und "zerstören" könnt.
Selbstverständlich können die Objekte auch als Showable-Objekte abgespeichert werden, wenn euch die beiden Methoden ausreichen.
Der Name darf Farbcodes (§) enthalten.


Titles
Titles sind auch ein Bestandteil meiner API.
Ich habe dazu eine Klasse, wovon man eine Instanz erstellt eine eine Klasse, mit einer statischen Methode, die es ermöglicht, den Title an einen Spieler zu senden.
Die Klassen heißen
  • TitlePacket
  • TitleSender
Die TitlePacket-Klasse besitzt drei Konstruktoren, denen der anzuzeigende Text und beim dritten Konstruktor sogar die Zeiten übergeben werden können. Sobald eine Instanz von dieser Klasse vorliegt, kann der Title einem Spieler gesendet werden. Das geht wie folgt:
Code: Alles auswählen
  1. TitleSender.sendTitle(Player, titlePacket); // Den Title einem einzigen Spieler senden
  2. TitleSender.broadcastTitle(titlePacket); // Den Title allen Spieler auf dem Server anzeigen

Farbcodes können mit dem Paragraph-Zeichen verwendet werden.


Tabliste (Header und Footer)
Auch hier wird wieder das Prinzip der Titles angewendet: Man erstellt zunächst eine Instanz von TabPacket und kann diese dann einer statischen Methoden aus TabSender übergeben.
Dem Konstruktor des TabPackets können folgende Parameter übergeben werden:
  • String header
  • String header, String footer
Man kann also entweder nur die Zeile über den Spieler-Namen oder beide Zeilen modifizieren. Auch hier sind Farbcodes mit dem Paragraph-Zeichen möglich.
Die Klasse "TabSender" kann das Packet ebenfalls an alle Spieler oder an einen bestimmten Spieler aussenden.



TODO-Liste und zukünftige Versionen
Es ist auf jeden Fall geplant, die API mit weiteren Funktionen auszustatten.
Wenn jemand von euch einen Vorschlag hat, kann er mir diesen natürlich gerne mitteilen.
Außerdem ist geplant, alle Zugriffe auf NMS- und CraftBukkit-Klassen versionsunabhängig zu gestalten.
Aktuell ist dies jedoch noch nicht von hoher Priorität, da zu diesem Zeitpunkt oberhalb von 1.8 noch keine verfügbare Spigot-Version existiert.



Verwendung und Download
Ihr dürft die API frei verwenden. Bei der Nutzung muss auch nicht auf mich hingewiesen werden; höchstens, wenn jemand explizit nach dem Entwickler fragt. Ich behalte mir jedoch vor, diese Bedingungen für spätere Versionen zu verändern. Dies wird dann mit der Veröffentlichung bekanntgegeben.

Das Projekt kann auf Google Drive heruntergeladen werden: https://docs.google.com/file/d/0B8VPn0R ... E4R0E/edit



Ich wünsche euch viel Spaß damit!
Du möchtest programmieren lernen oder dein Bukkit-/Spigot-Wissen erweitern?
Hier habe ich für dich kostenlose Tutorials: https://youtube.com/janhektor
Benutzeravatar
Sep2703
 
Beiträge: 677
Registriert: Mi 8. Jan 2014, 15:13
Wohnort: 127.0.0.1

Zurück zu Veröffentlichungen

Wer ist online?

Mitglieder in diesem Forum: Google [Bot] und 1 Gast

cron