
英雄聊天:聊天频道与颜色
最好的Hytale聊天频道插件。多频道彩色聊天,还能屏蔽垃圾信息和广告!
Herochat — Hytale 最佳聊天频道模组 快速概述 用途:为您的 Hytale 服务器增加频道、私信、昵称和简单的管理员功能。 首次安装设置
数据文件会在插件数据目录(服务器的插件数据文件夹)下创建,包含:
channels.json — 频道定义和成员列表 nicknames.json — 保存的昵称 config.json — 插件配置标志和默认设置
安装后建议的初始步骤:
启动服务器一次,让插件创建文件。 编辑 config.json(参见 HerochatConfig 选项)来设置词条过滤、冷却时间和提及设置。 通过游戏内命令或编辑 channels.json 并重载插件来创建频道。 命令(通用) 内置命令提供了频道管理、私信和忽略功能。 示例(具体语法取决于服务器命令注册方式): /channel create — 创建频道 /channel join — 加入频道 /msg — 发送私信 /reply — 回复上一条私信 /ignore — 忽略某个玩家 /ignorelist — 显示忽略列表
具体命令名和别名请参考游戏内的服务器命令帮助。
配置说明 插件中使用的令牌格式:{nick}、{sender}、{msg}、{prefix}、{suffix}。 详情请参见 Channel.formatMessage 和 ChatListener.formatMessageForRecipient。 频道键名以小写形式存储;集成时请使用插件命令或 ChannelManager 的查找辅助方法。
权限
插件使用的权限节点遵循此模式(与代码一致):
- 全局管理员/通配符:
Herochat.*或服务器范围的*— 完全管理员控制并跳过所有检查 - 冷却时间跳过(可配置):
Herochat.cooldown.bypass(config.json中的默认项)
频道特定节点(将 <channel> 替换为频道名称的小写形式):
Herochat.channel.<channel>.join— 允许加入频道Herochat.channel.<channel>.speak— 允许向频道发送消息Herochat.channel.<channel>.see— 允许查看来自频道的消息
说明:
- 频道管理员/拥有者状态存储在
channels.json中(moderators列表和owner字段),并被视为管理员操作的权威来源。 - 将
autoJoin设为true后,所有玩家在连接时将自动加入该频道。对于私人频道,请将autoJoin设为false,并向应能加入的群组/用户授予Herochat.channel.<name>.join权限。 - 当
autoJoin为false时,插件会强制进行成员资格检查:只有拥有Herochat.channel.<name>.join权限、是频道管理员、频道拥有者或拥有Herochat.*/*权限的玩家才能加入。
示例节点:
Herochat.*— 管理员通配符Herochat.channel.general.join— 授予对general频道的加入权限Herochat.channel.general.speak— 授予在general频道发言的权限Herochat.channel.general.see— 授予查看general频道消息的权限
故障排除与提示 如果频道或昵称未显示,请检查插件数据文件夹和文件权限。 LuckPerms 仅用于显示元数据(前缀/后缀)。插件将频道权限的权威信息存储在 channels.json 和插件管理的节点中。 开发者 API(挂接到 Herochat)
Herochat 公开了内部管理器和监听器,供其他插件/模组使用。以下是演示常见任务的示例代码片段。导入路径引用插件源代码包 net.herotale.herochat。
您可能会与之交互的重要类:
net.herotale.herochat.Herochat — 插件引导程序和访问点 net.herotale.herochat.channels.ChannelManager — 创建/查找频道并持久化更改 net.herotale.herochat.storage.PlayerDataManager — 每个玩家的运行时数据和昵称存储 net.herotale.herochat.listeners.ChatListener — 核心聊天处理和工具方法
集成前的说明:
尊重插件的持久化模型:频道成员和管理员列表的权威来源是 channels.json。 使用提供的管理器 getter 方法,而不是实例化新的管理器。 示例:获取 ChannelManager
// 从另一个可以访问服务器插件管理器的插件中获取
Herochat plugin = (Herochat) server.getPluginManager().getPlugin("Herochat");
ChannelManager cm = plugin.getChannelManager();// 通过名称查找频道(不区分大小写的查找辅助方法)
Channel channel = cm.findChannel("General");
示例:以编程方式创建频道
UUID creator = /* 创建者的 UUID */;
Channel channel = cm.createChannel("events", creator);
channel.setFormat("[{sender}] {msg}");
cm.saveChannels();
示例:向频道发送消息
// 构造一个 Message 或使用 ChatListener 上的辅助方法
ChatListener chat = plugin.getChatListener();
// 以 'senderRef' 的身份向名为 'events' 的频道发送消息
chat.broadcastToChannel(channel, senderRef, "大家好!");
示例:监听聊天事件
public class MyListener implements Listener {
@EventHandler
public void onPlayerChat(PlayerChatEvent e) {
// 检查或修改聊天消息,如有需要可取消事件
}
}// 从您的插件注册监听器
server.getPluginManager().registerEvents(new MyListener(), myPlugin);
提示:建议使用插件内部的 PlayerRef.sendMessage 辅助方法(在内部使用)来保持格式和颜色处理的一致性。
示例:访问和修改玩家昵称
PlayerDataManager pdm = plugin.getPlayerDataManager();
pdm.setNickname(playerUuid, "CoolNick");
pdm.saveNicknames();
正在加载版本记录…
正在加载评论…
评论在新手盒子客户端中发表,这里同步展示。