ArenaLib

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

ArenaLib

Beitragvon Jonyx » Do 2. Jan 2014, 10:10

Hey Leute,
ich habe mich mal hingesetzt und für euch eine kleine ArenaLib geschrieben. Diese beinhaltet an sich eigentlich nicht viel und soll euch auch nur ein Grundgerüst geben.

Was macht die ArenaLib?
Die ArenaLib ermöglicht es dir, mithilfe von Interfaces und eigenen Events, ein effizientes und gut funktionierendes Arenen System aufzubauen.

Wie verwende ich die ArenaLib?
Ihr habt 2 mögliche varianten um die ArenaLib zu nutzten. Entweder ihr fügt die ArenaLib in euren Build Path hinzu, oder ihr kopiert den Code aus den Interfaces und Klassen und fügt die ArenaLib manuell in euer Plugin hinzu. Beides ist vollkommen legitim.

Wie nutzte ich die Interfaces/Events?
Um euch zu zeigen wie das ganze funktioniert, zeige ich es euch anhand eines Beispieles.
Code: Alles auswählen
  1. public class Arena implements IArena {
  2.    
  3.    /**
  4.     * @author JoniPixel
  5.     * Das ist eine Beispiel Klasse.
  6.     */
  7.    
  8.    private int id;
  9.    private ArrayList<Player> players;
  10.    
  11.    public Arena(int id) {
  12.       this.id = id;
  13.       this.players = new ArrayList<Player>();
  14.    }
  15.    
  16.    /**
  17.     * @return
  18.     * Gibt dir den Arena Identifikator zurück. Dieser wird benötigt um mehrere Arenen gleichzeitig zu haben und zu verwalten.
  19.     */
  20.    @Override
  21.    public int getID() {
  22.       return id;
  23.    }
  24.    
  25.    /**
  26.     * @param player
  27.     * Fuegt einen Spieler zu der Arena hinzu. Optional kann hier das ArenaJoinEvent aufgerufen werden.
  28.     */
  29.    @Override
  30.    public void addPlayer(Player player) {
  31.       players.add(player);
  32.       
  33.       Bukkit.getServer().getPluginManager().callEvent(new ArenaJoinEvent(player, this));
  34.    }
  35.    
  36.    /**
  37.     * @param player
  38.     * Entfernt einen Spieler aus der Arena. Optional kann hier das ArenaLeaveEvent aufgerufen werden.
  39.     */
  40.    @Override
  41.    public void removePlayer(Player player) {
  42.       players.remove(player);
  43.       
  44.       Bukkit.getServer().getPluginManager().callEvent(new ArenaLeaveEvent(player, this));
  45.    }
  46.    
  47.    @Override
  48.    public boolean containsPlayer(Player player) {
  49.       return players.contains(player);
  50.    }
  51.    
  52.     /**
  53.      * Gibt dir die Spieler zurück, die sich derzeit in der Arena befinden.
  54.      */
  55.    @Override
  56.    public ArrayList<Player> getPlayers() {
  57.       return players;
  58.    }
  59. }

So in etwa könnte eure Arena Klasse aussehen.

Damit das ganze auch verwaltet wird, gibt es den ArenaManager. Hier ebenfalls ein Beispiel:
Code: Alles auswählen
  1. public class ArenaManager implements IArenaManager {
  2.    
  3.    private static ArenaManager instance;
  4.    
  5.    public static ArenaManager getInstance() {
  6.       if (instance == null) {
  7.          instance = new ArenaManager();
  8.       }
  9.       return instance;
  10.    }
  11.    
  12.    private ArrayList<Arena> arenas = new ArrayList<Arena>();
  13.    
  14.    /**
  15.     * Hier werden die Arenen geladen! Dieser Teil ist komplett euch überlassen, da jeder seine eigenen Speicher Methoden verwendet.
  16.     */
  17.    
  18.    @Override
  19.    public void setupArenas() {
  20.       //...
  21.    }
  22.    
  23.    /**
  24.     * @param id
  25.     * Mit dieser Methode bekomme ich die Arena mit dem jeweiligen Identifikator zurück, den ich den Parameter angegeben habe.
  26.     */
  27.    
  28.    @Override
  29.    public Arena getArena(int id) {
  30.       for (Arena arena : arenas) {
  31.          if (arena.getID() == id) return arena;
  32.       }
  33.       return null;
  34.    }
  35.    
  36.    /**
  37.     * @param player
  38.     * Mit dieser Methode bekomme ich Arena in der sich der Spieler befindet, den ich in den Parameter angebe.
  39.     */
  40.    
  41.    @Override
  42.    public Arena getArena(Player player) {
  43.       for (Arena arena : arenas) {
  44.          if (arena.containsPlayer(player)) return arena;
  45.       }
  46.       return null;
  47.    }
  48.    
  49.    /**
  50.     * Gibt mir eine Liste mit allen Arenen zurück.
  51.     */
  52.    
  53.    @Override
  54.    public ArrayList<Arena> getArenas() {
  55.       return arenas;
  56.    }
  57. }


Ich denke mal ihr wisst jetzt wie man die ArenaLib richtig verwendet. Ich wünsche euch Viel Spaß damit! :)

Download Link: http://goo.gl/YbbGLw

Die ArenaLib funktioniert auf der 1.6.4 Recommend Build und auf der 1.7.2 Beta Build.
It's not a bug! Its a new Feature!
Benutzeravatar
Jonyx
 
Beiträge: 108
Registriert: So 3. Nov 2013, 13:20

Re: ArenaLib

Beitragvon jassler » Fr 3. Jan 2014, 01:36

Hast du eine Documentation von allen verfügbaren Klassen und Methoden?
Benutzeravatar
jassler
 
Beiträge: 54
Registriert: Sa 15. Jun 2013, 21:27

Re: ArenaLib

Beitragvon Summerfeeling » Sa 4. Jan 2014, 03:00

In der IArena Class, hast du eine ArrayList<Player>, diese würde ich zu einer ArrayList<String> ändern, und nur den Spielernamen speichern ;)
Grüße
Summerfeeling | Timo
Benutzeravatar
Summerfeeling
 
Beiträge: 1300
Registriert: Sa 15. Jun 2013, 18:43
Wohnort: Viersen

Re: ArenaLib

Beitragvon PostCrafter » Sa 4. Jan 2014, 10:47

Ich verstehe nicht wieso du interfaces für die Arenen verwendest, weil man dann die Implementierung der Events immer noch selber einbauen muss (so wie du es gezeigt hast).
TeamSpeak-Server zur freien Nutzung: postcrafter.de
Benutzeravatar
PostCrafter
Administrator
 
Beiträge: 1443
Registriert: Do 6. Jun 2013, 19:16
Wohnort: Ebersberg

Re: ArenaLib

Beitragvon Jonyx » Sa 4. Jan 2014, 13:04

Einfach aus dem Grund, das die Events nur optional sind. Das heißt wenn man es nicht braucht/möchte kann sie ganz einfach weg lassen.
It's not a bug! Its a new Feature!
Benutzeravatar
Jonyx
 
Beiträge: 108
Registriert: So 3. Nov 2013, 13:20

Re: ArenaLib

Beitragvon Zorro909 » Fr 16. Mai 2014, 16:14

Um ehrlich zu sein scheint das ein 2 Sekunden Plugin/API zu sein :cry:
Benutzeravatar
Zorro909
 
Beiträge: 18
Registriert: Mo 8. Jul 2013, 07:40


Zurück zu Veröffentlichungen

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste

cron