Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- [Above onEnable]
- private interface Processor {
- public Object process(Object value, Object parent);
- }
- [In onEnable]
- ProtocolLibrary.getProtocolManager().addPacketListener(
- new PacketAdapter(this, PacketType.Play.Server.CHAT) {
- private JSONParser parser = new JSONParser();
- @Override
- public void onPacketSending(PacketEvent event) {
- PacketContainer packet = event.getPacket();
- Player p = event.getPlayer();
- StructureModifier<WrappedChatComponent> componets = packet.getChatComponents();
- try {
- Object data = parser.parse(componets.read(0).getJson());
- final boolean[] result = new boolean[1];
- transformPrimitives(data, null, new Processor() {
- @Override
- public Object process(Object value, Object parent) {
- if (value instanceof String) {
- String stripped = ChatColor.stripColor((String) value);
- if ("{Original String}".equals(stripped)) {
- result[0] = true;
- return "{Modified String}";
- }
- return value;
- }
- });
- // Write back the changed string
- if (result[0]) {
- componets.write(0, WrappedChatComponent.fromJson(JSONValue.toJSONString(data)));
- }
- } catch (ParseException e) {
- e.printStackTrace();
- }
- }
- });
- [Under onEnable]
- private Object transformPrimitives(Object value, Object parent, Processor processor) {
- // Check its type
- if (value instanceof JSONObject) {
- return transformPrimitives((JSONObject) value, processor);
- } else if (value instanceof JSONArray) {
- return transformPrimitives((JSONArray) value, processor);
- } else {
- return processor.process(value, parent);
- }
- }
- @SuppressWarnings("unchecked")
- private JSONObject transformPrimitives(JSONObject source, Processor processor) {
- for (Object key : source.keySet().toArray()) {
- Object value = source.get(key);
- source.put(key, transformPrimitives(value, source, processor));
- }
- return source;
- }
- @SuppressWarnings("unchecked")
- private JSONArray transformPrimitives(JSONArray source, Processor processor) {
- for (int i = 0; i < source.size(); i++) {
- Object value = source.get(i);
- source.set(i, transformPrimitives(value, source, processor));
- }
- return source;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement