MCIO Plugins MCIO Plugins
首页
爱发电 (opens new window)
无法下载? (opens new window)

人间工作P

我每天都好困… 最近在学习和进行 VOCALOID 创作
首页
爱发电 (opens new window)
无法下载? (opens new window)
  • PluginBase

    • PluginBase 简介
    • 构建脚本
    • 插件元数据
    • 插件主类
    • 一些工具
      • 一些工具
      • ColorHelper
      • ItemStackUtil
      • PAPI
      • Util
      • Bytes
    • 菜单
    • 菜单配置文件
    • Vault 经济
    • 数据库连接池
    • Adventure 支持
    • 本地化系统
  • Item-NBT-API

  • 开发文档
  • PluginBase
2025-06-04
目录

一些工具

<< 返回开发文档

# 一些工具

PluginBase 附带了一些好用的工具。

# ColorHelper

用于替换彩色字、十六进制颜色、渐变色。

用法为 ColorHelper.parseColor("");

更建议使用 AdventureUtil 作为替代。

# ItemStackUtil

物品管理器,可以做到

  • 序列化、反序列化物品
  • 快速构造一个物品
  • 以特定格式解析物品
    itemsadder-物品名 使用 ItemsAdder 物品,如 itemsadder-example
    物品#CMD 使用原版物品并添加 CustomModelData,如 DIAMOND_SWORD#10001
    head-base64-头颅值 使用 base64 格式头颅物品,可以从 Minecraft Heads (opens new window) 获取头颅 (For Developers: Value)
  • 快捷修改物品名、Lore
  • 快捷获取附魔书物品 (同时避免把附魔存错位置)
  • 快捷给予玩家物品,背包满时掉落到玩家附近

等

# PAPI

PlaceholderAPI 兼容接口,在服务器安装了 PlaceholderAPI 时正常替换变量,反之直接替换 %player_name% 为玩家名

# Util

大杂烩工具集合

  • 将 stackTrace 打印到字符串,跟 kotlin 用法类似
  • 快捷执行命令列表,支持 PAPI 变量(推荐使用 ActionProviders 作为替代)
    [console] 开头为管理员命令
    [player] 开头为玩家命令
    [message] 开头为聊天框输出消息
  • Location 的快捷序列化与反序列化,格式为 x,y,z,yaw,pitch,保留两位小数
  • 提前储存玩家列表,快捷高效获取 OfflinePlayer (离线玩家) 与 Player (在线玩家) 实例,避免同步频繁获取离线玩家 (读取文件进行IO操作) 时卡服
  • 字符串反序列化为 Optional<数字类型> (double, float, long, int)
  • 字符串反序列化为枚举 带默认值 (valueOr(Material.class, "PAPER", null) 为读取 Material.PAPER (不分大小写),读不到就返回默认值 null)
  • 列表分割 chunk(List<T>, int),将一个列表分割成多个长度一样的子列表,与 kotlin 用法类似,最后一个列表可能长度不够
  • 检查类是否存在 isPresent(String)
  • 快捷正则表达式分割字符串 split(Pattern, String, Consumer<RegexResult>),在 ColorHelper 中有使用示例

等

# Bytes

BungeeCord 消息构建轮子

// 发送到所有子服
void foo() {
    Bytes.sendByWhoeverOrNot("BungeeCord", Bytes.build(out -> {
        out.writeUTF(Bukkit.getVersion());
        out.writeUTF("Hello World!");
    }, /*subChannel:*/"Forward", /*arguments:*/"ALL", "MyChannel"));
}
1
2
3
4
5
6
7
// 使用模块接收
// 要在模块的构造函数里写 registerBungee();
@Override
public void receiveBungee(String subChannel, DataInputStream in) throws IOException {
    if (subChannel.equals("MyChannel")) {
        String bukkitVersion = in.readUTF();
        String message = in.readUTF();
        info("收到了 MyChannel 消息: " + bukkitVersion + ", " + message);
    }
}
1
2
3
4
5
6
7
8
9
10

注意:BungeeCord 消息是不可靠的,必须要有玩家在子服中,才能发送或接收。以及发送出去的消息,只有相同名字的插件才能接收。
对于我目前写插件的情况来说,用到 BungeeCord 消息的大多数用途,是发送“缓存已过期”提醒,让插件清掉,或更新某人的缓存,以便下次进入子服时数据同步。

上次更新: 2025/06/04, 12:03:38
插件主类
菜单

← 插件主类 菜单→

Theme fork from Vdoing | Copyright © 2018-2025 人间工作P | 到爱发电支持我

除非特别说明,本站点所有文章均以 CC BY-SA 协议授权

  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式