Advertisement
Lilret123

Package Listener

Feb 26th, 2015
265
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.32 KB | None | 0 0
  1. [Above onEnable]
  2.  
  3.     private interface Processor {
  4.         public Object process(Object value, Object parent);
  5.     }
  6.  
  7. [In onEnable]
  8.  
  9. ProtocolLibrary.getProtocolManager().addPacketListener(
  10.                 new PacketAdapter(this, PacketType.Play.Server.CHAT) {
  11.                     private JSONParser parser = new JSONParser();
  12.  
  13.                     @Override
  14.                     public void onPacketSending(PacketEvent event) {
  15.                         PacketContainer packet = event.getPacket();
  16.                         Player p = event.getPlayer();
  17.                         StructureModifier<WrappedChatComponent> componets = packet.getChatComponents();
  18.  
  19.                         try {
  20.                             Object data = parser.parse(componets.read(0).getJson());
  21.                             final boolean[] result = new boolean[1];
  22.  
  23.                             transformPrimitives(data, null, new Processor() {
  24.                                 @Override
  25.                                 public Object process(Object value, Object parent) {
  26.                                     if (value instanceof String) {
  27.                                         String stripped = ChatColor.stripColor((String) value);
  28.                                         if ("{Original String}".equals(stripped)) {
  29.                                             result[0] = true;
  30.                                             return "{Modified String}";
  31.                                     }
  32.                                     return value;
  33.                                 }
  34.                             });
  35.  
  36.                             // Write back the changed string
  37.                             if (result[0]) {
  38.                                 componets.write(0, WrappedChatComponent.fromJson(JSONValue.toJSONString(data)));
  39.                             }
  40.                         } catch (ParseException e) {
  41.                             e.printStackTrace();
  42.                         }
  43.                     }
  44.                 });
  45.  
  46.  
  47.  
  48.  
  49. [Under onEnable]
  50.  
  51.  
  52. private Object transformPrimitives(Object value, Object parent, Processor processor) {
  53.         // Check its type
  54.         if (value instanceof JSONObject) {
  55.             return transformPrimitives((JSONObject) value, processor);
  56.         } else if (value instanceof JSONArray) {
  57.             return transformPrimitives((JSONArray) value, processor);
  58.         } else {
  59.             return processor.process(value, parent);
  60.         }
  61.     }
  62.  
  63.     @SuppressWarnings("unchecked")
  64.     private JSONObject transformPrimitives(JSONObject source, Processor processor) {
  65.         for (Object key : source.keySet().toArray()) {
  66.             Object value = source.get(key);
  67.             source.put(key, transformPrimitives(value, source, processor));
  68.         }
  69.         return source;
  70.     }
  71.  
  72.     @SuppressWarnings("unchecked")
  73.     private JSONArray transformPrimitives(JSONArray source, Processor processor) {
  74.         for (int i = 0; i < source.size(); i++) {
  75.             Object value = source.get(i);
  76.             source.set(i, transformPrimitives(value, source, processor));
  77.         }
  78.         return source;
  79.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement