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. Nexus15
    Offline

    Nexus15

    Registriert seit:
    30. September 2012
    Beiträge:
    91
    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
  3. 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
  4. 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
  5. 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
  6. 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
  7. Nur wenn du 'Test' zensierst dann wird Test zu KakaoCraft. Nur test bleibt test.
     
    #7
  8. Kodahos
    Offline

    Kodahos

    Registriert seit:
    20. November 2012
    Beiträge:
    22
    Minecraft:
    Kodahos
    Ja es bleibt test und wir nicht zu KakaoCraft
     
    #8
  9. 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
  10. 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
  11. Nexus15
    Offline

    Nexus15

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

    Calenria

    Registriert seit:
    28. Juli 2012
    Beiträge:
    387
    Minecraft:
    Calenria
    Naja er registriert die eventlistener doch bei jedem PlayerJoin :p
     
    #12
  13. 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
  14. 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
  15. Calenria
    Offline

    Calenria

    Registriert seit:
    28. Juli 2012
    Beiträge:
    387
    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
  16. Kodahos
    Offline

    Kodahos

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