英雄聊天:聊天频道与颜色

英雄聊天:聊天频道与颜色

最好的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.bypassconfig.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 权限。
  • autoJoinfalse 时,插件会强制进行成员资格检查:只有拥有 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();