DCS Title Manager

DCSTitleManager 称号管理插件,方便玩家能自行修改佩戴的称号

tool

Installation command

!!MCDR plugin install title_manager

Author

Synced at

...

Last update

...

Latest version

Total downloads

12

Back to catalogue

DCSTitleManager

Minecraft 服务器称号管理 MCDR 插件,基于 Team 机制实现称号的前缀显示,玩家可自行切换佩戴。

依赖

依赖版本说明
MCDReforged>=2.14.0核心框架
openpyxl>=3.0.0必要,导入导出功能需要

插件安装时,MCDR 会自动安装 requirements.txt 中的 Python 依赖。

另需配合 TitlePrefixHandler 处理器插件使用,以确保包含称号前缀的玩家名在 MCDR 中正确解析。

TitlePrefixHandler GitHub: https://github.com/ayuan94/TitlePrefixHandler

命令

玩家命令

命令说明
!!title显示帮助
!!title help显示帮助
!!title list [页码]查看拥有的称号
!!title set <titleId>佩戴称号
!!title leave解除佩戴

管理员命令

命令说明
!!title add <titleId> <名称> <颜色> <加粗>创建称号(无需输入中括号)
!!title remove <titleId>删除称号
!!title join <玩家> <titleId>赋予并佩戴
!!title give <玩家> <titleId>赋予(不佩戴)
!!title delete <玩家> <titleId>移除玩家称号
!!title show all查看所有称号
!!title show player <玩家>查看玩家称号
!!title show title <titleId>查看称号拥有者
!!title move <旧玩家> <新玩家>迁移称号(改名)
!!title export导出数据到 Excel
!!title import从 Excel 导入(预览)
!!title import confirm确认导入

游戏内交互

  • 称号列表以实际颜色和加粗效果预览,所见即所得
  • 称号名可点击直接佩戴,佩戴中的称号显示 [解除] 按钮
  • 鼠标悬停显示操作提示
  • 管理员 show all 中点击称号名可跳转查看拥有者

数据文件

数据存储在 /config/title_manager/ 目录下。

title.json — 称号定义

[
  {
    "id": "1",
    "name": "[星期六]",
    "color": "red",
    "bold": "true"
  }
]

创建称号时无需输入中括号,插件会自动补齐 [名称],Team 前缀中自动追加空格与玩家名分隔。

等效命令:

/team modify 1 prefix {"text":"[星期六] ","color":"red","bold":true}

效果:titleEG

playerTitleData.json — 玩家与称号的关联

[
  { "playerName": "Steve", "titleId": "1" },
  { "playerName": "Steve", "titleId": "2" },
  { "playerName": "Alex",  "titleId": "2" }
]

wearingTitle.json — 当前佩戴状态

{
  "Steve": "1",
  "Alex": "2"
}

Excel 导入导出

!!title export 导出数据到插件目录下的 title_data_export.xlsx,包含三个 Sheet:

Sheet说明
称号称号ID / 名称 / 颜色 / 加粗所有称号定义
玩家称号玩家名 / 称号ID玩家与称号关联
佩戴状态玩家名 / 佩戴称号ID当前佩戴状态

导入流程:

  1. 将 Excel 文件放到插件数据目录,命名为 title_data_export.xlsx
  2. 执行 !!title import 预览数据量
  3. 确认后执行 !!title import confirm 完成导入

Warning

导入会覆盖当前所有数据,请先 !!title export 备份。

Name Handler 适配

Important

DCSTitleManager 依赖一个额外的 handler 插件:TitlePrefixHandler

该 handler 用于修复含有称号前缀的玩家名解析,避免默认 vanilla_handler 在处理多个 [] 前缀时误判玩家名。

请先安装并启用 TitlePrefixHandler,然后再加载本插件。

import re
from mcdreforged.handler.impl import VanillaHandler

PLUGIN_METADATA = {
    'id': 'title_prefix_handler',
    'version': '1.0.0',
}

class TitlePrefixHandler(VanillaHandler):
    def get_name(self) -> str:
        return 'title_prefix_handler'

    def pre_parse_server_stdout(self, text: str):
        text = super().pre_parse_server_stdout(text)
        # Remove the third title prefix segment from raw server output.
        text = re.sub(
            r'^(.*?\[[^]]+\].*?\[[^]]+\].*?)\[[^]]+\]\s+',
            r'\1',
            text
        )
        return text

    def parse_server_stdout(self, text: str):
        info = super().parse_server_stdout(text)
        if info.player is None:
            m = re.fullmatch(r'<\[[^]]+](?P<name>[^>]+)> (?P<message>.*)', info.content)
            if m is not None:
                name = m['name'].strip()
                if self._verify_player_name(name):
                    info.player, info.content = name, m['message']
        return info

def on_load(server, prev_module):
    server.register_server_handler(TitlePrefixHandler())

tips

Important

启用本称号插件前,建议清除服务器内所有已有 Team,避免冲突。

README source: README.md