Kotori0629
本帖最后由 您的维恩吖 于 2019-1-9 01:18 编辑
★ChatReplace——聊天替换★

全版本|配合实现Emoji|超级轻量





一个没卵用的插件

灵活运用可提高服务器b格(花里胡哨)

第一次发帖qwq盼个小支持就好了





插件命令

/cr add 替换 被替换 -添加一个替换

/cr remove 替换 -删除一个替换

/cr reload -重载替换配置(只允许OP执行)




插件配置文件

只有一行:

test: qwq

替换:被替换



使用截图






开源这东西就不管啥协议了,看bbs没人发这东西,就发出来分享了

  1. package moe.vien.chatreplace;

  2. import org.bukkit.command.Command;
  3. import org.bukkit.command.CommandSender;
  4. import org.bukkit.event.EventHandler;
  5. import org.bukkit.event.Listener;
  6. import org.bukkit.event.player.AsyncPlayerChatEvent;
  7. import org.bukkit.plugin.java.JavaPlugin;

  8. import java.util.HashMap;
  9. import java.util.Map;
  10. import java.util.concurrent.atomic.AtomicBoolean;
  11. import java.util.concurrent.atomic.AtomicReference;

  12. public class Main extends JavaPlugin implements Listener {
  13.     public Map<String, String> map = new HashMap<>();

  14.     @Override
  15.     public void onEnable() {
  16.         super.onEnable();
  17.         getServer().getPluginManager().registerEvents(this, this);
  18.         reload();
  19.     }

  20.     @EventHandler
  21.     public void onASYNChat(AsyncPlayerChatEvent e) {
  22.         AtomicReference<String> msg = new AtomicReference<>(e.getMessage());
  23.         AtomicBoolean returnFlag = new AtomicBoolean(true);
  24.         map.keySet().forEach(ks -> {
  25.             if (msg.get().contains(ks)) {
  26.                 msg.set(msg.get().replaceAll(ks, map.get(ks)));
  27.                 returnFlag.set(false);
  28.             }
  29.         });
  30.         if (returnFlag.get()) return;
  31.         e.setMessage(msg.get());
  32.     }

  33.     @Override
  34.     public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
  35.         if (args.length == 2 && args[0].equals("remove")) {
  36.             String beRemove = args[1];
  37.             if (getConfig().contains(beRemove)) {
  38.                 getConfig().set(beRemove, null);
  39.                 saveConfig();
  40.                 reloadConfig();
  41.                 sender.sendMessage(" 移除 " + beRemove + " 成功");
  42.                 return true;
  43.             }
  44.             sender.sendMessage("配置文件不存在节点: " + beRemove);
  45.             return true;
  46.         } else if (args.length == 3 && args[0].equals("add")) {
  47.             String a = args[1];
  48.             String b = args[2];
  49.             if (a.equals(b)) {
  50.                 sender.sendMessage("替换和被替换不能一致");
  51.                 return true;
  52.             }
  53.             getConfig().set(a, b);
  54.             saveConfig();
  55.             reload();
  56.             sender.sendMessage("添加成功");
  57.             return true;
  58.         }else if (args.length == 1 && args[0].equals("reload")) {
  59.             if (! sender.isOp()) {
  60.                 sender.sendMessage("此指令只能op执行");
  61.                 return true;
  62.             }
  63.             reload();
  64.             sender.sendMessage("重读成功");
  65.             return true;
  66.         }else {
  67.             String[] help = new String[]{"/cr add x y: 将x替换为y", "/cr remove x: 移除x的替换", "/cr reload: 重读配置文件(只能op执行)"};
  68.             sender.sendMessage(help);
  69.             return true;
  70.         }
  71.     }

  72.     public void reload() {
  73.         saveDefaultConfig();
  74.         reloadConfig();
  75.         map.clear();
  76.         getConfig().getKeys(false).forEach(ks -> {
  77.             String re = getConfig().getString(ks);
  78.             map.put(ks, re);
  79.         });
  80.     }

  81. }
复制代码


然后就是下载地址了



别忘了评分一下,俺不希望你们当伸手党,谢谢啦

本插件所用所有代码均为原创,不存在借用/抄袭等行为


皮蛋粥呀
我觉得可以

Kotori0629
送个字体材质包 , 已带上图使用图中的表情功能:
https://pan.baidu.com/s/1mxzlCBM5R_srbublCb8yBA

2237085881
66666666666666666

1204074991
可以用来当关键词屏蔽功能,很不错。

魔法帝
本来想写的到不曾想被你先弄出来了

像素君吖
插件不错,不知道材质包是客户端的材质包还是什么。没有特别详细的介绍,不过插件还是不错 支持一下[:dragon:]

一手汗
引用了java api
是个大佬!

一手汗
请问一下
这个替换怎么搞。是网页链接还是什么
求告诉一下- -

剑仙奇缘
/cr add 替换 被替换 -添加一个替换  /cr remove 替换 -删除一个替换  /cr reload -重载替换配置(只允许OP执行) 我觉得这个教程不详细,可以不在详细一些?

Kotori0629
  1. hj: 鴁
  2. cj: 鴂
  3. sq: 鴀
  4. pj: 鴃
  5. bx: 鴄
  6. xs: 鴅
  7. ca: 鴑
  8. bs: 鴒
  9. an: 鴆
  10. ye: 鴇
  11. ok: 鴓
  12. qi: 鴈
  13. ku: 鴉
  14. ee: 鴊
  15. em: 鴋
  16. di: 鴌
  17. rua: 鴍
  18. jz: 鴎
  19. kk: 鴏
  20. sr: 鴐
  21. ka: 鴔
  22. lh: 鴘
  23. nb: 鴕
  24. lj: 鴖
  25. mg: 鴗
复制代码

配合材质包使用, 这是配置文件

xxpian
这个是替换游戏中文字外貌的吗,就是比如在方块折叠的时候,方块数量显示的文字外貌改变了,是吗楼主,有点搞不明白,问一下

wc592035976
没有1.13的材质包。。

Kotori0629
wc592035976 发表于 2019-1-30 18:09
没有1.13的材质包。。

可以自己做的, 关键在font

Feng_Qing_Yun
维恩我爱你