[Gelöst] Nach Countdown MotD ändern

Um Übersicht zu schaffen, findet man hier bereits gelöste Fragen und Probleme.

[Gelöst] Nach Countdown MotD ändern

Beitragvon ilouHD » Do 13. Feb 2014, 22:06

Hallo zusammen,

ich möchte nach einem Countdown die MotD ändern. Den Countdown habe ich bereits, jetzt würde ich gerne noch wissen, wie ich dann die MotD von "Beispiel_1" in "Beispiel_123" ändern kann. Ich habe schon folgendes ausprobiert:

Code: Alles auswählen
  1. Bukkit.getServer().setMotd          //(Gibt es nicht)


Weiterhin habe ich es mit dem PlayerJoinEvent Verbunden.

Code: Alles auswählen
  1. Bukkit.getOnlinePlayers().lenght == 5 {
  2.      //Countdown und dann:
  3.      e.setMotd();          //(Gibt es nicht)
  4. }


Hoffe mir kann einer helfen. Wenn möglich bitte mit dem Code 2, sprich dem PlayerJoinEvent (Falls das überhaupt geht).

Mit Freundlichen Grüßen, marcsven
Bild
Benutzeravatar
ilouHD
 
Beiträge: 1733
Registriert: Do 9. Jan 2014, 14:49

Re: Nach Countdown MotD ändern

Beitragvon PostCrafter » Do 13. Feb 2014, 22:07

Das Ändern der MotD hängt mit dem ServerListPingEvent zusammen, probier es doch mal damit.
TeamSpeak-Server zur freien Nutzung: postcrafter.de
Benutzeravatar
PostCrafter
Administrator
 
Beiträge: 1443
Registriert: Do 6. Jun 2013, 19:16
Wohnort: Ebersberg

Re: Nach Countdown MotD ändern

Beitragvon ilouHD » Do 13. Feb 2014, 22:09

PostCrafter hat geschrieben:Das Ändern der MotD hängt mit dem ServerListPingEvent zusammen, probier es doch mal damit.


Danke, werde es direkt mal Testen.
Bild
Benutzeravatar
ilouHD
 
Beiträge: 1733
Registriert: Do 9. Jan 2014, 14:49

Re: Nach Countdown MotD ändern

Beitragvon Summerfeeling » Do 13. Feb 2014, 23:07

Ich mach das ganze in meinem Rush-Plugin so:
Code: Alles auswählen
  1. package de.CreepyGames.Rush.Listener;
  2. import org.bukkit.event.EventHandler;
  3. import org.bukkit.event.Listener;
  4. import org.bukkit.event.server.ServerListPingEvent;
  5. import de.CreepyGames.Rush.GameState;
  6. import de.CreepyGames.Rush.Rush;
  7. public class ServerPingEvent implements Listener {
  8.    @EventHandler
  9.    public void onPing(ServerListPingEvent e) {
  10.       if(Rush.state == GameState.LOBBY) {
  11.          e.setMotd("§7[§aRUSH§7] §eRUSH1 §f- §aLOBBY");
  12.       }else if(Rush.state == GameState.COUTING_DOWN) {
  13.          e.setMotd("§7[§aRUSH§7] §eRUSH1 §f- §eCOUNTDOWN");
  14.       }else if(Rush.state == GameState.IN_GAME) {
  15.          e.setMotd("§7[§aRUSH§7] §eRUSH1 §f- §cIN GAME");
  16.       }
  17.    }
  18.    
  19. }


GameState ist hier ein einfacher Enum.
Code: Alles auswählen
  1. package de.CreepyGames.Rush;
  2. public enum GameState {
  3.    LOBBY, COUTING_DOWN, IN_GAME
  4.    
  5. }
Grüße
Summerfeeling | Timo
Benutzeravatar
Summerfeeling
 
Beiträge: 1300
Registriert: Sa 15. Jun 2013, 18:43
Wohnort: Viersen

Re: Nach Countdown MotD ändern

Beitragvon ilouHD » Fr 14. Feb 2014, 14:38

Summerfeeling hat geschrieben:Ich mach das ganze in meinem Rush-Plugin so:
Code: Alles auswählen
  1. package de.CreepyGames.Rush.Listener;
  2. import org.bukkit.event.EventHandler;
  3. import org.bukkit.event.Listener;
  4. import org.bukkit.event.server.ServerListPingEvent;
  5. import de.CreepyGames.Rush.GameState;
  6. import de.CreepyGames.Rush.Rush;
  7. public class ServerPingEvent implements Listener {
  8.    @EventHandler
  9.    public void onPing(ServerListPingEvent e) {
  10.       if(Rush.state == GameState.LOBBY) {
  11.          e.setMotd("§7[§aRUSH§7] §eRUSH1 §f- §aLOBBY");
  12.       }else if(Rush.state == GameState.COUTING_DOWN) {
  13.          e.setMotd("§7[§aRUSH§7] §eRUSH1 §f- §eCOUNTDOWN");
  14.       }else if(Rush.state == GameState.IN_GAME) {
  15.          e.setMotd("§7[§aRUSH§7] §eRUSH1 §f- §cIN GAME");
  16.       }
  17.    }
  18.    
  19. }


GameState ist hier ein einfacher Enum.
Code: Alles auswählen
  1. package de.CreepyGames.Rush;
  2. public enum GameState {
  3.    LOBBY, COUTING_DOWN, IN_GAME
  4.    
  5. }


Danke, aber bei mir gibt es im ServerListPingEvent keine Möglichkeit e.setMotd(); zu erstellen.

Das sieht bei mir jetzt so aus (mit Countdown):

Code: Alles auswählen
  1. @EventHandler
  2.    public void onMotDChange(ServerListPingEvent e) {
  3.       
  4.       Bukkit.getScheduler().runTaskTimerAsynchronously(this.plugin, new Runnable() {
  5.          
  6.          @Override
  7.          public void run() {
  8.             if(Bukkit.getOnlinePlayers().length == 1) {
  9.                if(ServerListPingEvent.this.plugin.lobby == 150) {
  10.                   Bukkit.broadcastMessage(ServerListPingEvent.this.plugin.prefix + "§6Game starts in §c150 Seconds");
  11. //Hier kommt im Code noch der weitere Countdown, den braucht ihr aber nicht ;).
  12.                }
  13.                if(ServerListPingEvent.this.plugin.lobby == 0) {
  14.                   Bukkit.broadcastMessage(ServerListPingEvent.this.plugin.prefix + "§6Game starts!");
  15.                   //Hier sollte eigentlich e.setMotd(); hin, aber es geht nicht
  16.                }
  17.                if(ServerListPingEvent.this.plugin.lobby != 0) {
  18.                   plugin.lobby --;
  19.                }
  20.             }
  21.          }
  22.          
  23.       }, 0, 20L);
  24.    }


Ich programmiere außerdem (noch) in der 1.6.4, wegen dem Ping (wurde ja in der 1.7.2 zerstört)

Mit Freundlichen Grüßen, marcsven
Bild
Benutzeravatar
ilouHD
 
Beiträge: 1733
Registriert: Do 9. Jan 2014, 14:49

Re: Nach Countdown MotD ändern

Beitragvon PostCrafter » Fr 14. Feb 2014, 15:03

Das ServerListPingEvent hat eine setMotD-Methode, auch in 1.6. Das Problem ist eher deine Herangehensweise.. es gibt kein ServerListPingEvent.this.plugin und du kannst auch keinen Countdown einfügen, die Nachricht wird einmal gesetzt, dann wird die Verbindung getrennt. Nimm den Scheduler raus und alles sollte gehen.

EDIT: Der Ping wurde außerdem nicht zerstört, der wurde (zum Besseren) verändert.
TeamSpeak-Server zur freien Nutzung: postcrafter.de
Benutzeravatar
PostCrafter
Administrator
 
Beiträge: 1443
Registriert: Do 6. Jun 2013, 19:16
Wohnort: Ebersberg

Re: Nach Countdown MotD ändern

Beitragvon ilouHD » Fr 14. Feb 2014, 15:08

PostCrafter hat geschrieben:Das ServerListPingEvent hat eine setMotD-Methode, auch in 1.6. Das Problem ist eher deine Herangehensweise.. es gibt kein ServerListPingEvent.this.plugin und du kannst auch keinen Countdown einfügen, die Nachricht wird einmal gesetzt, dann wird die Verbindung getrennt. Nimm den Scheduler raus und alles sollte gehen.

EDIT: Der Ping wurde außerdem nicht zerstört, der wurde (zum Besseren) verändert.


1. Mache es sobald ich wieder da bin.
2. Ok, dann wurde er verbessert

Mit Freundlichen Grüßen, marcsven
Bild
Benutzeravatar
ilouHD
 
Beiträge: 1733
Registriert: Do 9. Jan 2014, 14:49

Re: Nach Countdown MotD ändern

Beitragvon ilouHD » Fr 14. Feb 2014, 20:57

Irgendwie funktioniert das bei mir nicht.

Ich kann im ServerListPingEvent nirgendwo e.setMotd(); einstellen. Ich teste es mal mit einer anderen CraftBukkit

Bis gleich.
Bild
Benutzeravatar
ilouHD
 
Beiträge: 1733
Registriert: Do 9. Jan 2014, 14:49

Re: Nach Countdown MotD ändern

Beitragvon ilouHD » Fr 14. Feb 2014, 21:00

marcsven hat geschrieben:Irgendwie funktioniert das bei mir nicht.

Ich kann im ServerListPingEvent nirgendwo e.setMotd(); einstellen. Ich teste es mal mit einer anderen CraftBukkit

Bis gleich.


Habe keine Veränderung finden können.
Bild
Benutzeravatar
ilouHD
 
Beiträge: 1733
Registriert: Do 9. Jan 2014, 14:49

Re: Nach Countdown MotD ändern

Beitragvon PostCrafter » Fr 14. Feb 2014, 21:04

Zunächst mal würde ich dich bitten, dass du die EDIT-Funktion verwendest.

Ich bezweifel, dass es an deiner Bukkit-Version liegt, die Methode ist schon ewig vorhanden.
TeamSpeak-Server zur freien Nutzung: postcrafter.de
Benutzeravatar
PostCrafter
Administrator
 
Beiträge: 1443
Registriert: Do 6. Jun 2013, 19:16
Wohnort: Ebersberg

Nächste

Zurück zu Bereits gelöst

Wer ist online?

Mitglieder in diesem Forum: Google [Bot] und 5 Gäste

cron