1. Es freut uns dass du in unser Minecraft Forum gefunden hast. Hier kannst du mit über 130.000 Minecraft Fans über Minecraft diskutieren, Fragen stellen und anderen helfen. In diesem Minecraft Forum kannst du auch nach Teammitgliedern, Administratoren, Moderatoren , Supporter oder Sponsoren suchen. Gerne kannst du im Offtopic Bereich unseres Minecraft Forums auch über nicht Minecraft spezifische Themen reden. Wir hoffen dir gefällt es in unserem Minecraft Forum!

Eigenes Zenusr Plugin zensiert Wörter nicht

Dieses Thema im Forum "Programmierung" wurde erstellt von Kodahos, 27. Januar 2013.

  1. Kodahos
    Offline

    Kodahos

    Registriert seit:
    20. November 2012
    Beiträge:
    22
    Minecraft:
    Kodahos
    Hey ich habe mir nach einer Video anleitung im Internet ein Zensur Plugin erstellt. Doch es Zensiert die Wörter in der Blacklist einfach nicht hier der Code:

    Code (Text):
    1. package me.Kodahos.KakaoZensur;
    2.  
    3. import java.io.File;
    4. import java.io.FileNotFoundException;
    5. import java.util.ArrayList;
    6. import java.util.Scanner;
    7.  
    8. import org.bukkit.ChatColor;
    9. import org.bukkit.command.Command;
    10. import org.bukkit.command.CommandSender;
    11. import org.bukkit.entity.Player;
    12. import org.bukkit.plugin.java.JavaPlugin;
    13.  
    14. public class KakaoZensur extends JavaPlugin {
    15.    
    16.     public ArrayList<String> blacklist = new ArrayList<String>();
    17.  
    18.     @Override
    19.     public void onDisable() {
    20.         System.out.println("[KakaoZensur] KakaoZensur 1.0 disabled!");
    21.        
    22.     }
    23.  
    24.     @Override
    25.     public void onEnable() {
    26.        
    27.         registerEvent();
    28.        
    29.         //blacklist laden
    30.         File file = new File(this.getDataFolder(), "blacklist.txt");
    31.         try {
    32.             Scanner s = new Scanner(file);
    33.            
    34.             while(s.hasNextLine())
    35.                 blacklist.add(s.nextLine());
    36.            
    37.             s.close();
    38.             System.out.println("Loaded Blacklist " + blacklist.size() + " words.");
    39.         } catch (FileNotFoundException e) {
    40.             System.err.println("Fehler: " + e.getMessage());
    41.         }
    42.        
    43.        
    44.  
    45.        
    46.         System.out.println("[KakaoZensur] Loading KakaoZensur by Kodahos!");
    47.         System.out.println("[KakaoZensur] KakaoZensur 1.0 enabled!");
    48.        
    49.     }  //Event Laden
    50.     private void registerEvent() {
    51.     }
    52.        
    53.  
    54.        
    55.     }

    Hier der Code vom Listener:

    Code (Text):
    1. package me.Kodahos.KakaoZensur;
    2.  
    3. import org.bukkit.event.EventHandler;
    4. import org.bukkit.event.Listener;
    5. import org.bukkit.event.player.AsyncPlayerChatEvent;
    6.  
    7. public class KakaoZensurPlayerJoinListener implements Listener {
    8.    
    9.  
    10.  
    11.  
    12.  
    13.     public KakaoZensurPlayerJoinListener(KakaoZensur plugin){
    14.         this.plugin = plugin;
    15.         plugin.getServer().getPluginManager().registerEvents(this, plugin);
    16.    
    17.     }
    18.    
    19.     @EventHandler
    20.     public void onPlayerChat(AsyncPlayerChatEvent event){
    21.         String msg = event.getMessage();
    22.        
    23.         for(int i = 0; i < plugin.blacklist.size(); i++)
    24.  
    25.         msg = msg.replaceAll(plugin.blacklist.get(i), "KakaoCraft");
    26.            
    27.            event.setMessage(msg);
    28.     }
    29.    
    30.    
    31.     private KakaoZensur plugin;
    32.  
    33. }
    34.  




    Ich hoffe ihr könnt mir helfen
     
    #1
  2. Werbung
    Online

    Werbung

  3. Nexus15
    Offline

    Nexus15

    Registriert seit:
    30. September 2012
    Beiträge:
    89
    Du solltest das Event auch unter registerEvent() {} registrieren. Die Methode alleine bringt dir nichts.

    KakaoZensurPlayerJoinListener kakao = new KakaoZensurPlayerJoinListener();



    registerEvents() {
    getServer().getPluginManager.registerEvents(this, kakao);

    }
    Dafür streichst du die Zeile

    plugin.getServer().getPluginManager.registerEvents(this, this);

    in deinem Listener.
     
    #2
  4. Es wäre auch sinnvoll selber Java zu lernen und nicht einfach von DeBukkit zu kopieren. Sieht mir alles ziemlich ähnlich aus.

    Hast du denn auch Groß- und Kleinschreibung beachtet?
     
    #3
  5. Kodahos
    Offline

    Kodahos

    Registriert seit:
    20. November 2012
    Beiträge:
    22
    Minecraft:
    Kodahos
    Ja habe ich beachtet und wie oben gesagt habe ich das aus einem Videotutorial und das war von DEBukkIt
     
    #4
  6. Nunja dieser besagte Youtuber hat bringt kein Programmieren bei, sein Code ist größtenteils total minderwertig bzw. sorgt für schlechten Programmierer-Stil. Dies aber nur am Rand und sei mal meine Meinung.

    Trotzdem beantworte mal diese Frage:

    Groß- Kleinschreibung beachtet?
    Kommt denn noch was im Log?
    Plugin aktiv?
     
    #5
  7. Kodahos
    Offline

    Kodahos

    Registriert seit:
    20. November 2012
    Beiträge:
    22
    Minecraft:
    Kodahos
    Also das plugin wir geladen und wird bei /pl auch Grün angezeigt. Ich habe z.B. das Wort Test Zensiert und wenn ich test in den Chat schreibe steht in der Konsole: 13:00:59 [INFO] <Kodahos> test
    Und ich habe Groß und Klein schreibung beachtet.



    Bei den Antworten oben habe noch nicht das reingeschrieben was Nexus15 oben geschrieben hat.
     
    #6
  8. Nur wenn du 'Test' zensierst dann wird Test zu KakaoCraft. Nur test bleibt test.
     
    #7
  9. Kodahos
    Offline

    Kodahos

    Registriert seit:
    20. November 2012
    Beiträge:
    22
    Minecraft:
    Kodahos
    Ja es bleibt test und wir nicht zu KakaoCraft
     
    #8
  10. Genau das ist aber vom Plugin gewollt. Es beachtet die Groß und Kleinschreibung.

    Alternativ kannst du (?i) vor plugin.blacklist.get(i) setzen, dann sollte es eigentlich CaseInsensitive sein.
     
    #9
  11. MrFlieder
    Offline

    MrFlieder

    Registriert seit:
    30. Dezember 2011
    Beiträge:
    333
    Ort:
    Österreich
    Minecraft:
    MrFlieder
    Du rufst in der onEnable-Methode die registerEvents-Methode auf, welche aber leer ist.
    Den Konstruktor in deiner Klasse für den JoinListener kannst du weglassen, in die registerEvents-Methode dann folgenden Code einfügen:
    Code (Text):
    1.  
    2. Bukkit.getServer().getPluginManager().registerEvents(new KakaoZensurPlayerJoinListener(), this);
    3.  
     
    #10
  12. Nexus15
    Offline

    Nexus15

    Registriert seit:
    30. September 2012
    Beiträge:
    89
    Hab ich auch schon gesagt :)
     
    #11
  13. Calenria
    Offline

    Calenria

    Registriert seit:
    28. Juli 2012
    Beiträge:
    386
    Minecraft:
    Calenria
    Naja er registriert die eventlistener doch bei jedem PlayerJoin :p
     
    #12
  14. Kodahos
    Offline

    Kodahos

    Registriert seit:
    20. November 2012
    Beiträge:
    22
    Minecraft:
    Kodahos
    Immer wenn ich test in den Chat schreibe kommt im Log diese Fehler Meldung:


    13:33:33 [SEVERE] Could not pass event AsyncPlayerChatEvent to KakaoZensur v1.0
    org.bukkit.event.EventException
    at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:427)
    at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62)
    at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:477)
    at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:459)
    at net.minecraft.server.v1_4_R1.PlayerConnection.chat(PlayerConnection.java:902)
    at net.minecraft.server.v1_4_R1.PlayerConnection.a(PlayerConnection.java:852)
    at net.minecraft.server.v1_4_R1.Packet3Chat.handle(Packet3Chat.java:44)
    at net.minecraft.server.v1_4_R1.NetworkManager.i(NetworkManager.java:208)
    at net.minecraft.server.v1_4_R1.NetworkManager.c(NetworkManager.java:344)
    at net.minecraft.server.v1_4_R1.NetworkReaderThread.run(SourceFile:93)
    Caused by: java.lang.NullPointerException
    at me.Kodahos.KakaoZensur.KakaoZensurPlayerJoinListener.onPlayerChat(KakaoZensurPlayerJoinListener.java:27)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:425)
    ... 9 more
    13:33:33 [INFO] <Kodahos> test
     
    #13
  15. MrFlieder
    Offline

    MrFlieder

    Registriert seit:
    30. Dezember 2011
    Beiträge:
    333
    Ort:
    Österreich
    Minecraft:
    MrFlieder
    Wie wäre es, Java zu lernen und anhand des eigenen Wissens ein WordBlacklist-Plugin zu schreiben? ^^
    Improvisierter Code von mir für den Listener:
    Code (Text):
    1.  
    2. BufferedReader br = new BufferedReader(new FileReader(new File("plugins/Ordner/blacklist.txt")));
    3. String line = "";
    4. while((line = br.readLine() != null)
    5. {
    6.     if(ev.getMessage().contains(line))
    7.     {
    8.         ev.getMessage().replace(line, "ZENSIERT");
    9.     }
    10. }
    11. br.close();
    12.  
    onEnable-Methode:
    Code (Text):
    1.  
    2. File file = new File("plugins/Ordner/blacklist.txt");
    3. if(!file.exists())
    4. {
    5.     file.createNewFile();
    6. }
    7.  
    8. Bukkit.getServer().getPluginManager().registerEvents(new EventListener(), this);
    9.  
     
    #14
  16. Calenria
    Offline

    Calenria

    Registriert seit:
    28. Juli 2012
    Beiträge:
    386
    Minecraft:
    Calenria
    Code (Text):
    1. public class KakaoZensur extends JavaPlugin {
    2.     public ArrayList<String> blacklist = new ArrayList<String>();
    3.  
    4.  
    5.     @Override
    6.     public void onDisable() {
    7.         System.out.println("[KakaoZensur] KakaoZensur 1.0 disabled!");
    8.  
    9.  
    10.     }
    11.  
    12.  
    13.     @Override
    14.     public void onEnable() {
    15.         getServer().getPluginManager().registerEvents(new ZensurListener(this), this);
    16.  
    17.  
    18.         // blacklist laden
    19.         File file = new File(this.getDataFolder(), "blacklist.txt");
    20.  
    21.  
    22.         if (!file.exists()) {
    23.             try {
    24.                 getDataFolder().mkdir();
    25.                 file.createNewFile();
    26.             } catch (IOException e) {
    27.                 e.printStackTrace();
    28.             }
    29.         }
    30.  
    31.  
    32.         try {
    33.             Scanner s;
    34.             s = new Scanner(file);
    35.             while (s.hasNextLine())
    36.                 blacklist.add(s.nextLine());
    37.  
    38.  
    39.             System.out.println("Loaded Blacklist " + blacklist.size() + " words.");
    40.             s.close();
    41.         } catch (FileNotFoundException e) {
    42.             e.printStackTrace();
    43.         }
    44.  
    45.  
    46.         System.out.println("[KakaoZensur] Loading KakaoZensur by Kodahos!");
    47.         System.out.println("[KakaoZensur] KakaoZensur 1.0 enabled!");
    48.  
    49.  
    50.     }
    51.  
    52.  
    53.     private class ZensurListener implements Listener {
    54.  
    55.  
    56.         private KakaoZensur plugin;
    57.  
    58.  
    59.         public ZensurListener(KakaoZensur plugin) {
    60.             this.plugin = plugin;
    61.         }
    62.  
    63.  
    64.         @EventHandler(ignoreCancelled = true, priority = EventPriority.LOWEST)
    65.         public void onPlayerChat(AsyncPlayerChatEvent event) {
    66.             String msg = event.getMessage();
    67.  
    68.  
    69.             for (String word : plugin.blacklist) {
    70.                 msg = msg.replaceAll("(?i)" + word, "KakaoCraft");
    71.             }
    72.  
    73.  
    74.             event.setMessage(msg);
    75.         }
    76.     }
     
    #15
  17. Kodahos
    Offline

    Kodahos

    Registriert seit:
    20. November 2012
    Beiträge:
    22
    Minecraft:
    Kodahos
    Es funktioniert jetzt Danke
     
    #16