BungeeCord | Wartungsmodus

Hier könnt ihr anderen Leuten helfen, indem ihr Anleitungen oder praktische Codesegmente zur Verfügung stellt.

BungeeCord | Wartungsmodus

Beitragvon theEvilReaper » Sa 3. Mai 2014, 22:26

Hallo Leute,

in diesem kleinen Tutorial möchte ich euch zeigen wie ihr ein BungeeCord Wartungmodus programmieren könnt. Doch erstmal was ist das? Hier habe ich für euch 2 Bsp wie das aussehen könnte:

Bild

Bild

Achtung! Das hier beschriebene Tutorial wird nichts für Anfänger. Bitte kopiert diese Anleitung nicht einfach, da es euch GARNICHT weiterhilft, wenn ihr sie kopiert und einfügt, ohne auch nur eine Zeile zu verstehen

Zum Anfang braucht ihr BungeeCordApi und einen (BungeeCord)Server.

Teil 1:

Zuerst erstellen wir uns ein Projekt und importieren dann die BungeeCordApi. Als erstes schreibst du:

Code: Alles auswählen
  1. public class Lobby extends Plugin
  2. {
  3.    public void onEnable() {
  4. }


Als nächstes schreiben wir in den OnEnable Teil:

Code: Alles auswählen
  1. public class Lobby extends Plugin
  2. {
  3.    public void onEnable() {
  4.   ProxyServer.getInstance().getPluginManager().registerListener(this, new ServerPinger());
  5. }


Zuerst brauchen wir den ProxyServer von BungeeCord und die Instance. Dann besorgen wir uns den PluginManager von BungeeCord und registrieren unseren Listener. Dabei ist zu beachten das wir zuerst this schreiben und dann denn Namen der Klasse die wir erstellen wollen. Dann können wir uns unsere Klasse erstellen ohne einen Fehler zubekommen.

Teil 2:

So nun haben wir uns einen Listener erstellt. Sollte der import mit dem Listener fehlen dann importet den Listener von BungeeCord:

Code: Alles auswählen
  1. public class ServerPinger implements Listener
  2. {


Als nächstes brauchen wir das ProxyPingEvent. Da wir kein Bukkit haben da es nur ohne Bukkit geht nehmen wir uns das PingEvent von der Proxy. Nach dem wir das gemacht haben müssen wir uns den ServerPing definieren. Um dann später die Modt zu setzen die man beim Anpingen des Server sieht oder bei dem Ping des Servers z.b Wartungsarbeiten/Update zu 1.8 zu schreiben. Das e.getResponse ist die Antwort des Servers beim Pingen.

Code: Alles auswählen
  1. @EventHandler
  2.    public void on(ProxyPingEvent e) {
  3.         ServerPing conn = e.getResponse();


Nun können wir mit "conn" viel anfangen. Um jetzt Wartungsarbeiten hinzu bekommen brauchen wir ein neues Protocol was wir beim ProxyPingEvent dann senden. Oder die Modt zu setzen was auch möglich ist.

Code: Alles auswählen
  1. @EventHandler
  2.    public void on(ProxyPingEvent e) {
  3.       ServerPing conn = e.getResponse();
  4.       conn.setVersion(new Protocol("§cWartungsarbeiten", 2));
  5.       conn.setDescription("§bPortal§6MC §8- §cWartungsmodus");
  6.       e.setResponse(conn);
  7.    }


So nun würde bei uns beim Anpingen des Server bei dem Ping Wartungsarbeiten stehen. Das kann man je nach dem was man möchte auch verändern. Die 2 bedeutet einfach nur das dass es in die Line von dem Ping gesetzt wird. Die Modt zu setzen ist nicht mit setModt(); sondern mit setDescription(); das ist so damit man in BungeeCord die Möglichkeit hat die Modt zu setzen. Dann müssen wir noch zu guter letzt dem Event sagen das e.setResponse(conn); das conn der neue ServerPing ist der dann beim Anpingen des Server stehen sollte.

Weiter Sachen dazu folgen noch wie z.B das Per Command ausführen oder das der Spieler dann nicht mehr joinen kann und dann in einer Config den Mode festzulegen.

Vielen Dank an @MeinerLP der mir dabei geholfen hat.

Anmerkung: Dies ist mein erstes Tutorial. Ich hoffe es ist allen klar geworden was ich hier versuche freue mich über jede Anmerkung und Kritik.

Lg theEvilReaper
Bild
Benutzeravatar
theEvilReaper
 
Beiträge: 162
Registriert: Di 12. Nov 2013, 20:15

Re: BungeeCord | Wartungsmodus

Beitragvon ilouHD » Sa 3. Mai 2014, 22:40

theEvilReaper hat geschrieben:Achtung! Das hier beschriebene Tutorial wird nichts für Anfänger. Bitte kopiert diese Anleitung nicht einfach, da es euch GARNICHT weiterhilft, wenn ihr sie kopiert und einfügt, ohne auch nur eine Zeile zu verstehen



Zwar von mir kopiert, aber das Tutorial an sich ganz gut. Ich habe es klein wenig anders gelöst.
Bild
Benutzeravatar
ilouHD
 
Beiträge: 1733
Registriert: Do 9. Jan 2014, 14:49

Re: BungeeCord | Wartungsmodus

Beitragvon monst12 » Sa 3. Mai 2014, 23:12

Echt klasse Tutorial.
Habe mich eh schon gefragt, wie soetwas möglich ist ^^.
Habe noch selbst zwei kleine Fragen.
Ist es empfehlenswerter, dass man die Motd mit Bungeecord setzt oder dem Lobby-Server?
Diese PlayerListNachrichten (Davon gibt es hier auch schon ein Tutorial) kann man diese auch in diesem PingEvent setzen?

Danke für das Tutorial!

MfG monst12
Soweit die Theorie.

MfG
monst12
Benutzeravatar
monst12
 
Beiträge: 239
Registriert: Sa 19. Apr 2014, 22:14

Re: BungeeCord | Wartungsmodus

Beitragvon MeinerLP » Sa 3. Mai 2014, 23:50

Hallo @monst12
ich und theEvilReaper sind ein Dev team und am setzt den motd ab besten mit Bungeecord
Weil es besser ich ich mach moregnnoch ein anleitung wie man das mit einer config verbindet

LG MeinerLP
Bild
Bild
Benutzeravatar
MeinerLP
 
Beiträge: 9
Registriert: Mi 26. Feb 2014, 18:34

Re: BungeeCord | Wartungsmodus

Beitragvon MeinerLP » Sa 3. Mai 2014, 23:51

marcsven hat geschrieben:
theEvilReaper hat geschrieben:Achtung! Das hier beschriebene Tutorial wird nichts für Anfänger. Bitte kopiert diese Anleitung nicht einfach, da es euch GARNICHT weiterhilft, wenn ihr sie kopiert und einfügt, ohne auch nur eine Zeile zu verstehen



Zwar von mir kopiert, aber das Tutorial an sich ganz gut. Ich habe es klein wenig anders gelöst.

Ja das habe wir
Bild
Bild
Benutzeravatar
MeinerLP
 
Beiträge: 9
Registriert: Mi 26. Feb 2014, 18:34

Re: BungeeCord | Wartungsmodus

Beitragvon ilouHD » So 4. Mai 2014, 00:12

monst12 hat geschrieben:Habe mich eh schon gefragt, wie soetwas möglich ist ^^.


Man kann einen boolean verwenden. Ist dieser auf true, verbietet man das LoginEvent für keine Teammitglieder.
Jedoch kann man da nicht als Version Wartungsarbeiten setzen.
Bild
Benutzeravatar
ilouHD
 
Beiträge: 1733
Registriert: Do 9. Jan 2014, 14:49

Re: BungeeCord | Wartungsmodus

Beitragvon MeinerLP » So 4. Mai 2014, 07:54

marcsven hat geschrieben:Man kann einen boolean verwenden. Ist dieser auf true, verbietet man das LoginEvent für keine Teammitglieder.
Jedoch kann man da nicht als Version Wartungsarbeiten setzen.



Ja mann kann das machen nur heist das Event PlayerConnetEvent Damit kannst du abfrage ob der spieler die permisson hat um zu joinen

2. ich mache gelich noch ein tutorial dazu wem an das in einer config macht
Bild
Bild
Benutzeravatar
MeinerLP
 
Beiträge: 9
Registriert: Mi 26. Feb 2014, 18:34

Re: BungeeCord | Wartungsmodus

Beitragvon theEvilReaper » So 4. Mai 2014, 12:41

monst12 hat geschrieben:Echt klasse Tutorial.
Habe mich eh schon gefragt, wie soetwas möglich ist ^^.
Habe noch selbst zwei kleine Fragen.
Ist es empfehlenswerter, dass man die Motd mit Bungeecord setzt oder dem Lobby-Server?
Diese PlayerListNachrichten (Davon gibt es hier auch schon ein Tutorial) kann man diese auch in diesem PingEvent setzen?

Danke für das Tutorial!

MfG monst12


Hey @monst12,

zu deiner ersten Frage ist es recht einfach da BungeeCord ein eigenes PingEvent besitzt wird das von Bukkit überschrieben deswegen sieht man das von Bukkit nicht mehr. Das heißt im Endeffekt das du das von BungeeCord benutzen musst weil das von Bukkit nicht mehr gesendet wird.

Bei deiner 2ten Frage ich glaube das geht nicht da die ja ein PacketModifizieren um das zu senden also ein ItemStack wenn man über den PlayerCount geht. Ich bin mir nicht sicher da ich nicht weiß wie die das gemacht haben dazu gibt es ja Plugins die das machen. Müsste ich wie gesagt nach kucken da ich mir nicht ganz sicher bin.

Ich hoffe ich konnnte dir helfen.

Lg theEvilReaper
Bild
Benutzeravatar
theEvilReaper
 
Beiträge: 162
Registriert: Di 12. Nov 2013, 20:15

Re: BungeeCord | Wartungsmodus

Beitragvon LittIeLight » So 4. Mai 2014, 18:06

Falls jemand nicht die Beschreibung ändern möchte sondern die Spieleranzahl bitte sehr...

Code: Alles auswählen
  1. @EventHandler
  2.    public void onProxyPing(ProxyPingEvent e) {
  3.       ServerPing con = e.getResponse();
  4.       
  5.       con.setPlayers(new Players(5000, 2358, con.getPlayers().getSample()));
  6.       e.setResponse(con);
  7.       
  8.       //2358 = Spieler Online
  9.       //5000 = Maximale Spieler
  10.    }
Benutzeravatar
LittIeLight
 
Beiträge: 38
Registriert: Mo 24. Mär 2014, 17:31

Re: BungeeCord | Wartungsmodus

Beitragvon LittIeLight » So 4. Mai 2014, 18:14

Hallo @theEvilReaper,

theEvilReaper hat geschrieben:
Bei deiner 2ten Frage ich glaube das geht nicht da die ja ein PacketModifizieren um das zu senden also ein ItemStack wenn man über den PlayerCount geht. Ich bin mir nicht sicher da ich nicht weiß wie die das gemacht haben dazu gibt es ja Plugins die das machen. Müsste ich wie gesagt nach kucken da ich mir nicht ganz sicher bin.

Lg theEvilReaper


Ich glaube das hat was mit dem "Custom Plugin Message Packet" von Mojang was zu tuhen aber ich kann mich natürlich auch total täuschen :D Damit kann man ja auch eigene Packets machen (so wie ich das verstanden habe).
Benutzeravatar
LittIeLight
 
Beiträge: 38
Registriert: Mo 24. Mär 2014, 17:31

Nächste

Zurück zu Anleitungen

Wer ist online?

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

cron