感谢所有用户,JsonApi 下载量已突破 10,000 次!这是一个功能强大的 API,让你能够轻松创建和发送包含颜色、粗体/斜体等样式、插入文本,以及最重要的悬停与点击动作的 JSON 消息。
安装
- 下载最新版本的 JsonApi。
- 将其放入服务器的
plugins文件夹。 - 重启你的服务器。
命令与权限
/jsonapi- 需要权限jsonapi.command.jsonapi- 显示插件版本信息。
> 更多详细信息,请查阅 Javadocs。
创建消息
让我们从一个经典的 “Hello, World!” 示例开始。创建 JSON 消息的基础类是 JsonMsg。
你可以使用文本和颜色来构造它
JsonMsg msg = new JsonMsg("Hello, ", JsonColor.AQUA);注意,我们使用了 JsonColor 枚举来指定颜色。这里我们只放入了前半部分文本,因为后半部分我们希望是另一种颜色和斜体样式。
接下来创建第二部分,这次使用构造函数 JsonMsg(String, ChatColor...),它可以用指定的所有 ChatColor 样式来装饰消息:
JsonMsg msg2 = new JsonMsg("world!", ChatColor.RED, ChatColor.ITALIC /*, ChatColor.BOLD 等 */);要将另一个 JsonMsg 附加到现有消息上,请使用 JsonMsg#append(JsonMsg) 或 JsonMsg#append(/ 任何构造函数的参数都有效 /):
msg.append(msg2);以上所有步骤也可以简化为一行
msg.append("world!", ChatColor.RED, ChatColor.ITALIC);转换颜色代码消息
还有一种非常简单的方法可以创建 JSON 消息:你可以使用构造函数 JsonMsg(String text, boolean allowStyleFallthrough) 将任何基于颜色代码的消息转换为 JsonMsg。
参数 allowStyleFallthrough 指定样式是否应在文本的每个新“片段”处重置,片段由连续的颜色代码组分隔。
示例:
JsonMsg msg = new JsonMsg("§aHello, §o§lworld!", true);
// 由于 `allowStyleFallthrough` 为 true,且“§o§lworld!”自身未指定颜色,因此 §a(绿色)会延续到该部分。要将 JsonMsg 转换回颜色代码消息,请使用方法 JsonMsg.toConsoleMessage(boolean insertResetCodes)。参数 insertResetCodes 指定是否在消息和每个额外消息前添加重置代码 (§r)。
示例:
String codeBased = msg.toConsoleMessage(true);
// codeBased 现在是 "§r§r§aHello, §r§a§l§oworld!"样式设置
更改 JsonMsg 的颜色和样式也非常简单:
msg.color(JsonColor.GREEN); // 更改颜色
msg.underlined(true); // 为文本添加下划线
msg.style(ChatColor.GREEN, ChatColor.UNDERLINE); // 设置文本样式相应的值可以通过同名方法(无参数,#style(ChatColor) 除外)获取。
提示: 所有原本返回 void 的方法都会返回 JsonMsg 对象本身,因此你可以将它们链式调用:
msg.color(JsonColor.GREEN).underlined(true);点击与悬停事件
要在玩家将鼠标悬停在 msg 上时显示文本,可以使用以下任一方法:
msg.hoverEvent(JsonHoverEvent.showText(msg2));
msg.hoverEvent(JsonHoverEvent.showText("Hey there!", JsonColor.GRAY));
msg.hoverEvent(JsonHoverEvent.showText("Hey there!", ChatColor.GRAY, ChatColor.BOLD));当然,还有更多用于显示物品、成就等的方法,以及 JsonClickEvent 类。
发送消息
最后,我们可以发送消息
msg.send(player1, player2 /* , player3 等 */);你也可以使用 JsonMsg#send(Iterable<Player>) 和 JsonMsg#sendTitle(int, int, int, Player...)。
> 注意: 本 API 还有许多其他方法和技巧,无法在此一一列举。请尽情探索和实验!
更多资源
- 前往 Wiki 页面
- 前往 Javadoc
使用须知
使用此库时,请务必注明作者 ColoredCarrot 以及 Spigot 上的资源链接(点击此处)。请勿将此代码标记为你自己的作品。
原始发布帖: https://www.spigotmc.org/threads/api-json-api-with-integrated-send-methods.136140/