作者: SRZKI

  • 末屿宇宙 – 通过 Spigot 插件在 Minecraft 聊天框显示低清图片

    以方块字符作为像素点显示图片

    优点:可以不离开 Minecraft 界面,通过缩略图,大概判断群聊中图片的内容,从而提升游戏内外沟通效率。
    缺点:分辨率真的很低(

    https://github.com/Ylkawa/MoyuUniverse/blob/1e673e440c11d1e3a39ad6bb5402a0cb86a98a84/Minecraft-Connect/src/main/java/com/nekoyu/Universe/MinecraftConnect/MinecraftConnectSpigot.java#L150

    ComponentBuilder bc = new ComponentBuilder();
    
    BufferedImage bi = ImageIO.read(imgF.url);
    int maxSize = 40;
    double scale = Math.min(
            (double) maxSize / bi.getWidth(),
            (double) maxSize / bi.getHeight()
    );
    int targetWidth  = (int) (bi.getWidth()  * scale);
    int targetHeight = (int) (bi.getHeight() * scale);
    Image scaled = bi.getScaledInstance(targetWidth, targetHeight, Image.SCALE_SMOOTH);
    BufferedImage resized = new BufferedImage(targetWidth, targetHeight, BufferedImage.TYPE_INT_RGB);
    Graphics2D g = resized.createGraphics();
    g.drawImage(scaled, 0, 0, null);
    g.dispose();
    StringBuilder sb = new StringBuilder();
    for (int y = 0; y < resized.getHeight(); y++) {
        for (int x = 0; x < resized.getWidth(); x++) {
            int rgb = resized.getRGB(x, y);
            int r = (rgb >> 16) & 0xFF;
            int gr = (rgb >> 8) & 0xFF;
            int b = rgb & 0xFF;
            sb.append(colorHex(r, gr, b)).append("█");
        }
        sb.append("\n");
    }
    BaseComponent[] hover = TextComponent.fromLegacyText(sb.toString());
    TextComponent tc = new TextComponent(ChatColor.UNDERLINE + "[图片]");
    tc.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new Text(hover)));
    bc.append(tc);

    流程简而言之:
    降分辨率 -> 逐像素转换为带颜色标记的方块字符 -> 作为 HoverEvent.Action.SHOW_TEXT 添加到消息

    具体实现使用方法:将鼠标指针悬浮到聊天框中的 [图片] 上,就能显示内容了

  • 末屿宇宙 – 服务端互联核心

    开源地址:https://github.com/Ylkawa/MoyuUniverse/

    这个项目的目标是以模块化的形式实现个人部署的不同服务之间的自定义互联。现在已经实现了 Onebot协议 的消息通道,和 Minecraft 服务端之间的简单数据交换。

    本项目开发使用如下依赖库:
    Gson、SnakeYaml、Java-WebSocket、SLF4J、Log4J、Guava


    2025/8/22:
    目前有效功能有,DeepSeek聊天,群名称信息显示,服务端间聊天打通, 网络监视(检测ICMP丢包率)