ServerPlugin Broadcaster - Dein Auto Messager

Dieses Thema im Forum "Selbstgeschriebene Plugins | Mods | Programme" wurde erstellt von StarDrink, 18. Juni 2013.

  1. StarDrink
    Offline

    StarDrink

    Registriert seit:
    9. September 2011
    Beiträge:
    37
    Minecraft:
    StarDrink
    Hallo Zusammen,

    Da mir in letzter Zeit ziemlich langweilig war, und auch nicht viel zu tun hatte habe ich nun ein Auto-Message Plugin für euch gemacht. Dies ist komplett auf Deutsch, die Texte sind in einer Datei änderbar. Nun ein paar Informationen.

    Features
    • Automatisches Senden eigener Nachrichten
    • Falls Fehler, Anzeige in der Konsole
    • Permissions
    • Nachrichten editierbar

    Kommandos
    • /start --> Aktiviert das Senden der Nachrichten
    • /stop --> Deaktiviert das Senden der Nachrichten

    Permissions
    • bc.* --> Permission, die alle Kommandos erlaubt
    • bc.start --> Permission zum Starten ( Senden der Nachrichten aktivieren )
    • bc.stop --> Permission zum Stoppen ( Senden der Nachrichten deaktivieren )

    Lizenz
    • Es ist euch erlaubt das Plugin für euren eigenen Server zu benutzen
    • Es ist euch nicht erlaubt das Plugin ohne Einverständnis zu verändern
    • Es ist euch nicht erlaubt das Plugin zu verkaufen

    WICHTIG
    • Bei dem ersten Start wird ein Ordner mit einer Config generiert. Dort könnt ihr paar Dinge ändern.
    • Um das Plugin gangbar zu machen, müsst ihr IN DEM ORDNER eine Textdatei namens messages erstellen
    • In dieser Textdatei könnt ihr nun eure Texte festlegen. Zeilenumbruch wird erkannt

    Changelog
    • Beta 1.0 : Nocht nicht zum Download, jegliche Bugfixes sowie weitere Features
    • Alpha 1.2: Nocht nicht zum Download. messages.txt wird automatisch generiert, neue Kommandos
    • Alpha 1.0: Bereits zum Download, komplett aufgebaut

    Autor(en)
    • StarDrink


    Downloads
    • Alpha 1.0:
      Info: Dies ist eine Zip-Datei. Entpacken und beide Dateien in den Plugins-Ordner hochladen. Somit muss keine messages.txt erstellt werden
      Download Alpha 1.0
     
    #1
  2. Benni1000
    Offline

    Benni1000 Ehem. Teammitglied

    Registriert seit:
    4. Mai 2012
    Beiträge:
    1.408
    ### freigeschaltet ###
     
    #2
  3. Mrcookie008
    Offline

    Mrcookie008

    Registriert seit:
    15. Dezember 2011
    Beiträge:
    380
    Ort:
    /home
    Minecraft:
    xCookieZz oder Mrcookie008 (Beides Premium)
    Ein Simpler Automessager gibts zwar genug, trotzdem schön =)
     
    #3
  4. Sn0wBlizz4rd
    Offline

    Sn0wBlizz4rd

    Registriert seit:
    26. September 2012
    Beiträge:
    424
    Minecraft:
    Sn0wBlizz4rd
    Sorry, aber das sieht mir so aus, als hättest du einfach 90% des Codes von DeBukkit abgeschrieben...
    Trotzdem, weiter so!
     
    #4
  5. Crafter6432
    Offline

    Crafter6432

    Registriert seit:
    22. Dezember 2011
    Beiträge:
    686
    Code (Text):
    1.  
    2. /stop ?
    3.  
    Du überschreibst also den Stop Befehl von Bukkit, was ist wenn ich meinen Server mal ausmachen will ?
     
    #5
  6. Plugin00
    Offline

    Plugin00

    Registriert seit:
    3. Februar 2013
    Beiträge:
    71
    Hmm sehr Stark von DeBukkit nach geschreiben,

    DeBukkit's Code:
    Code (Text):
    1.  
    2. package me.DeBukkIt.Broadcaster;
    3.  
    4. import java.io.BufferedReader;
    5. import java.io.File;
    6. import java.io.FileInputStream;
    7. import java.io.FileReader;
    8. import java.io.IOException;
    9. import java.io.InputStreamReader;
    10. import java.io.LineNumberReader;
    11.  
    12. import org.bukkit.Bukkit;
    13. import org.bukkit.ChatColor;
    14. import org.bukkit.command.Command;
    15. import org.bukkit.command.CommandSender;
    16. import org.bukkit.entity.Player;
    17. import org.bukkit.plugin.java.JavaPlugin;
    18.  
    19. public class Broadcaster extends JavaPlugin {
    20.  
    21.     public static Broadcaster plugin;
    22.     public static int AktuelleZeile = 0;
    23.     public static int ID = 0;
    24.     public static boolean rennt = true;
    25.     public static long Intervall = 10;
    26.    
    27.     @Override
    28.     public void onDisable(){
    29.        
    30.     }
    31.    
    32.     @Override
    33.     public void onEnable(){
    34.         ID = Bukkit.getScheduler().scheduleSyncRepeatingTask(this, new Runnable(){
    35.             public void run(){
    36.                 try{
    37.                     broadcastMessages("plugins/Broadcaster/messages.txt");
    38.                 } catch(IOException e){
    39.                     System.err.println("Broadcaster could not broadcast message.");
    40.                     System.err.println("Stopping Broadcaster...");
    41.                     Bukkit.getScheduler().cancelTask(ID);
    42.                     rennt = false;
    43.                 }
    44.             }
    45.         }, /*Verzögerung nach Server-Start*/ 0, /*Server-Ticks, da meistens 20 Ticks/sec*/ Intervall * 20);
    46.     }
    47.    
    48.     @SuppressWarnings("resource")
    49.     private static void broadcastMessages(String dateiName) throws IOException{
    50.         FileInputStream file = new FileInputStream(dateiName);
    51.         BufferedReader reader = new BufferedReader(new InputStreamReader(file));
    52.        
    53.         for(int i = 0; i < AktuelleZeile; i++){
    54.             reader.readLine();
    55.         }
    56.         String line = reader.readLine();
    57.         //Farb-Korrekturen
    58.         line = line.replaceAll("&a", ChatColor.GREEN + "");
    59.         line = line.replaceAll("&c", ChatColor.RED + "");
    60.         line = line.replaceAll("&f", ChatColor.WHITE + "");
    61.         line = line.replaceAll("&6", ChatColor.GOLD + "");
    62.        
    63.         Bukkit.getServer().broadcastMessage(ChatColor.WHITE + "[" + ChatColor.GREEN + "Info" + ChatColor.WHITE + "] " + ChatColor.RESET + line);
    64.        
    65.         LineNumberReader lnr = new LineNumberReader(new FileReader(new File(dateiName)));
    66.         lnr.skip(Long.MAX_VALUE);
    67.         int lastLine = lnr.getLineNumber();
    68.         if(AktuelleZeile + 1 == lastLine + 1){
    69.             AktuelleZeile = 0;
    70.         } else {
    71.             AktuelleZeile++;
    72.         }
    73.        
    74.        
    75.     }
    76.    
    77.     public boolean onCommand(CommandSender sender, Command cmd, String cmdLabel, String[] args){
    78.        
    79.         Player p = (Player) sender;
    80.        
    81.         if(cmd.getName().equalsIgnoreCase("broadcast")){
    82.             if(!(args.length == 1)){
    83.                 return false;
    84.             } else {
    85.                 if(args[0].equalsIgnoreCase("stop")){
    86.                     if(rennt){
    87.                         Bukkit.getServer().getScheduler().cancelTask(ID);
    88.                         p.sendMessage("Angehalten.");
    89.                         rennt = false;
    90.                         return true;
    91.                     } else {
    92.                         p.sendMessage("Bereits angehalten.");
    93.                         return true;
    94.                     }
    95.                 }
    96.                 if(args[0].equalsIgnoreCase("start")){
    97.                     if(rennt){
    98.                         p.sendMessage("Läuft bereits.");
    99.                     } else {
    100.                         p.sendMessage("Starte Broadcaster...");
    101.                             ID = Bukkit.getScheduler().scheduleSyncRepeatingTask(this, new Runnable(){
    102.                                 public void run(){
    103.                                     try{
    104.                                         broadcastMessages("plugins/Broadcaster/messages.txt");
    105.                                     } catch(IOException e){
    106.                                         System.err.println("Broadcaster could not broadcast message.");
    107.                                         System.err.println("Stopping Broadcaster...");
    108.                                         Bukkit.getScheduler().cancelTask(ID);
    109.                                     }
    110.                                 }
    111.                             }, /*Verzögerung nach Server-Start*/ 0, /*Server-Ticks, da meistens 20 Ticks/sec*/ Intervall * 20);
    112.                         rennt = true;
    113.                         p.sendMessage("Gestartet.");
    114.                     }
    115.                 }
    116.             }
    117.         }
    118.         return false;      
    119.     }
    120. }
    121.  
    Dein Code:

    Code (Text):
    1. package me.schertel.Broadcaster;
    2.  
    3. import java.io.BufferedReader;
    4. import java.io.File;
    5. import java.io.FileInputStream;
    6. import java.io.FileReader;
    7. import java.io.IOException;
    8. import java.io.InputStreamReader;
    9. import java.io.LineNumberReader;
    10. import java.util.logging.Logger;
    11. import org.bukkit.Bukkit;
    12. import org.bukkit.ChatColor;
    13. import org.bukkit.Server;
    14. import org.bukkit.command.Command;
    15. import org.bukkit.command.CommandSender;
    16. import org.bukkit.configuration.file.FileConfiguration;
    17. import org.bukkit.configuration.file.FileConfigurationOptions;
    18. import org.bukkit.entity.Player;
    19. import org.bukkit.plugin.java.JavaPlugin;
    20. import org.bukkit.scheduler.BukkitScheduler;
    21.  
    22. public final class Broadcaster extends JavaPlugin
    23. {
    24.   Logger log = Bukkit.getLogger();
    25.   public static Broadcaster plugin;
    26.   public static int AktuelleZeile = 0;
    27.   public static int ID = 0;
    28.   public static boolean rennt = true;
    29.   public static long Intervall = 10L;
    30.  
    31.   public void onDisable()
    32.   {
    33.   }
    34.  
    35.   public void onEnable()
    36.   {
    37.     loadConfig();
    38.     ID = Bukkit.getScheduler().scheduleSyncRepeatingTask(this, new Runnable() {
    39.       public void run() {
    40.         try {
    41.           Broadcaster.broadcastMessages("plugins/Broadcaster/messages.txt");
    42.         } catch (IOException e) {
    43.           Broadcaster.this.getLogger().info("Broadcaster hat die Textdatei nicht gefunden");
    44.           Broadcaster.this.getLogger().info("Broadcaster wird gestoppt...");
    45.           Bukkit.getScheduler().cancelTask(Broadcaster.ID);
    46.           Broadcaster.rennt = false;
    47.         }
    48.       }
    49.     }
    50.     , 0L, Intervall * 20L);
    51.   }
    52.  
    53.   private static void broadcastMessages(String dateiName)
    54.     throws IOException
    55.   {
    56.     FileInputStream file = new FileInputStream(dateiName);
    57.     BufferedReader reader = new BufferedReader(new InputStreamReader(file));
    58.  
    59.     for (int i = 0; i < AktuelleZeile; i++) {
    60.       reader.readLine();
    61.     }
    62.     String line = reader.readLine();
    63.  
    64.     line = line.replaceAll("&a", ChatColor.GREEN + "");
    65.     line = line.replaceAll("&c", ChatColor.RED + "");
    66.     line = line.replaceAll("&f", ChatColor.WHITE + "");
    67.     line = line.replaceAll("&6", ChatColor.GOLD + "");
    68.  
    69.     Bukkit.getServer().broadcastMessage(ChatColor.WHITE + "[" + ChatColor.GREEN + "Info" + ChatColor.WHITE + "] " + ChatColor.RESET + line);
    70.  
    71.     LineNumberReader lnr = new LineNumberReader(new FileReader(new File(dateiName)));
    72.     lnr.skip(9223372036854775807L);
    73.     int lastLine = lnr.getLineNumber();
    74.     if (AktuelleZeile + 1 == lastLine + 1)
    75.       AktuelleZeile = 0;
    76.     else
    77.       AktuelleZeile += 1;
    78.   }
    79.  
    80.   public boolean onCommand(CommandSender sender, Command cmd, String cmdLabel, String[] args)
    81.   {
    82.     Player p = (Player)sender;
    83.  
    84.     if (cmd.getName().equalsIgnoreCase("broadcast")) {
    85.       String i = getConfig().getString("Start/Stop");
    86.       int u = getConfig().getInt("SchnelligkeitSenden");
    87.       if (args.length != 1) {
    88.         if (p.hasPermission("bc.*"))
    89.           return false;
    90.       } else {
    91.         if ((args[0].equalsIgnoreCase("stop")) &&
    92.           (p.hasPermission("bc.stop"))) {
    93.           if (rennt) {
    94.             Bukkit.getServer().getScheduler().cancelTask(ID);
    95.             p.sendMessage("i");
    96.             rennt = false;
    97.             return true;
    98.           }
    99.           p.sendMessage("i");
    100.           return true;
    101.         }
    102.  
    103.         if ((args[0].equalsIgnoreCase("start")) &&
    104.           (p.hasPermission("bc.start"))) {
    105.           if (rennt) {
    106.             p.sendMessage("i");
    107.           } else {
    108.             p.sendMessage("i");
    109.             ID = Bukkit.getScheduler().scheduleSyncRepeatingTask(this, new Runnable() {
    110.               public void run() {
    111.                 try {
    112.                   Broadcaster.broadcastMessages("plugins/Broadcaster/messages.txt");
    113.                 } catch (IOException e) {
    114.                   Broadcaster.this.getLogger().info("Konnte keine Messages verbreiten...");
    115.                   Broadcaster.this.getLogger().info("Stoppe Broadcaster...");
    116.                   Bukkit.getScheduler().cancelTask(Broadcaster.ID);
    117.                 }
    118.               }
    119.             }
    120.             , 0L, Intervall * u);
    121.  
    122.             rennt = true;
    123.             p.sendMessage("i");
    124.           }
    125.         }
    126.       }
    127.     }
    128.  
    129.     return false;
    130.   }
    131.  
    132.   private void loadConfig()
    133.   {
    134.     FileConfiguration cfg = getConfig();
    135.     cfg.options().copyDefaults(true);
    136.     saveConfig();
    137.   }
    138. }
    Und da mit will ich nicht sagen das "Du", Nicht Programmieren kannst, Ich will da mit nur sagen, Das es kein sinn hat was Wie von "DeBukkit" Oder wo andars, Denn Code zu "nehmen",
     
    #6
  7. StarDrink
    Offline

    StarDrink

    Registriert seit:
    9. September 2011
    Beiträge:
    37
    Minecraft:
    StarDrink
    Hallo,

    Ich bin noch Anfänger im Programmieren, ich versuche es so zu lernen. Sorry :-(

    Zu dem Thema /stop. Dieser Kommand wird in der Alpha 1.2 mit /mstop ausgetauscht, somit ist der normale Server-Stop wieder möglich.
     
    #7
  8. Mrcookie008
    Offline

    Mrcookie008

    Registriert seit:
    15. Dezember 2011
    Beiträge:
    380
    Ort:
    /home
    Minecraft:
    xCookieZz oder Mrcookie008 (Beides Premium)
    Ich würde dir ehrlich gesagt nicht DeBukkit empfehlen.. 70% von dem was er erzählt ist totaler Mist..

    Lern lieber Java mit Büchern oder wenn du nur die BukkitAPI beherrschen willst lerne von Youtubern wie:

    Postcrafter
    EsrilMC
    Juscroopro

    etc.

    Aber bitte nicht von DeBukkit >_>
    Allein schon sein boolean = erfolg(); hat mich umgehauen :p

    (Und ja klein Cookie hat anfangs auch von DeBukkit gelernt, bis er im Forum des öfteren "Freundlich" darauf hingewießen wurde das er nicht wirklich tolles zeug erzählt, was ich heute bestätigen kann :p)

    LG.
     
    #8
  9. StarDrink
    Offline

    StarDrink

    Registriert seit:
    9. September 2011
    Beiträge:
    37
    Minecraft:
    StarDrink
    Mach ich auch nichtmehr ;-) Hab jetzt von jemanden *ZENSORED* einen Link zu einem Java Buch bekommen. Ich update das Plugin weiterhin mit dem "Noobi" Code, werde die nächsten Plugins mit einem Code machen, den man dann auch anschauen kann ;-)
     
    #9
  10. hobibi
    Offline

    hobibi

    Registriert seit:
    21. November 2011
    Beiträge:
    59
    Minecraft:
    Hobibi
    Japp das stimmt das selbe habe ich mir auch gedacht weil ich mir DeBukkits Tutorials auch anschaue aber lerne lieber aus dem buch Klick mich

    Fullquote entfernt by Cabraca
     
    #10
  11. StarDrink
    Offline

    StarDrink

    Registriert seit:
    9. September 2011
    Beiträge:
    37
    Minecraft:
    StarDrink
    Hi,

    Jop das mache ich auch. Ich schau keine Videos mehr von dem. Mein Code ist nun komplett anders. Zum Alpha 1.2 update dauert es noch bisschen da ich nebenbei noch eine App programmieren muss.
     
    #11
  12. Adrian1999
    Online

    Adrian1999

    Copy'n'paste

    Hey leute,

    Wollte nur nochmal sagen das das genze hier eine kleine lügerei ist ;)
    Er hat ganz einfach den Code von DeBukkit genommen.
    In diesem fall ist jedes kind besser im coden als er den strg +c und strg +v wird wohl jeder können :D
    Viel Spaß noch beim copieren weiterer Plugins...
     
    #12
  13. Galliar12
    Offline

    Galliar12

    Registriert seit:
    16. Juli 2011
    Beiträge:
    85
    Minecraft:
    Galliar12
    oh mein gott :O Die größte Offenbarung seit der Computer erfunden wurde *ironie off*

    Nein ehrlich, lies dir mal die vorherigen Kommentare durch :rolleyes:
     
    #13
  14. ScaryHutman
    Offline

    ScaryHutman

    Registriert seit:
    1. Januar 2013
    Beiträge:
    205
    Ort:
    NRW
    Minecraft:
    Scary_Hutman
    Ob hier nun Code kopiert wurde ist doch eher zweitrangig. Jeder hat einmal klein angefangen und muss langsam ein Gefühl für's Programmieren entwickeln. DeBukkit's Code ist zwar nicht der Beste, aber zu Anfangen reicht er. Wer sich anfangs an anderem Code orientiert handelt aus meiner Sicht verantwortungsbewusster, da er nicht einfach drauflos schreibt, sondern lernt wie man Probleme am "Besten" lösen kann. Optimieren kann man später immer noch.

    ScaryHutman
     
    #14
  15. StarDrink
    Offline

    StarDrink

    Registriert seit:
    9. September 2011
    Beiträge:
    37
    Minecraft:
    StarDrink
    Hi,

    Danke @ScaryHutman.

    @Adrian: Nur weil du deinen Server eh nie zum laufen bringst und mich in Skype blockiert hast, kann ich nun in Ruhe sagen, dass du erstmal MIT Video nen Code schreiben sollst. Nichtmal das schaffst du. Auch wenn ich hierfür das Risiko einer Verwarnung eingehe. PS: Nochmal zu dem Thema.. Wer Lesen kann ist klar im Vorteil

    @All: Update wird noch ca. 3 Tage dauern.
     
    #15