C-erva 核心

C-erva 核心

为AndrewImm模组提供文本、注册、网络、库存和权限实用程序的共享Fabric库。

基础库

🧱 C-erva Core

C-erva Fabric 模组共享工具库。

C-erva Core 提供了一系列通用基础组件——文本格式化、注册助手、网络库、背包工具、权限管理等等——让各个模组保持小巧,避免重复造轮子。

你不会直接使用这个模组。 当其他模组(例如 PhotoChat)需要时,将它作为依赖安装即可。


📦 内含内容

💬 CervaText

带前缀的聊天消息,样式统一。

CervaText.success("MyMod", "Item given!");   // [MyMod] Item given!  (绿色)
CervaText.warning("MyMod", "Low durability"); // [MyMod] Low durability  (黄色)
CervaText.error("MyMod", "Not found");        // [MyMod] Not found  (红色)

🏷️ CervaRegistry

一行代码注册标识符、物品、方块、音效和实体类型。

CervaRegistry.id("mymod", "ruby");
CervaRegistry.item("mymod", "ruby", new Item(settings));
CervaRegistry.sound("mymod", "ding");

🌐 CervaNetworking

向所有安装了该模组的玩家广播自定义数据包,并为其他玩家提供自动文本回退。

CervaNetworking.broadcastWithFallback(server, TYPE, payload, fallbackText);

🎒 CervaItems

背包工具——给予物品、丢弃堆叠物、统计格子数、检查空间。

CervaItems.give(player, stack);         // 给予或丢弃(若背包满)
CervaItems.hasSpace(player, stack);     // 给予前检查空间
CervaItems.countItem(player, Items.DIAMOND);

🔐 CervaPermissions

简单的命令和玩家权限检查。

CervaPermissions.hasPermission(source, permission);

🌍 CervaWorld

世界和音效工具。

CervaWorld.playSound(world, pos, soundEvent);
CervaWorld.isServerWorld(world);

⏱️ CervaCooldowns

基于 UUID 和键值的冷却映射表,支持自动过期。

if (CervaCooldowns.isReady(player.getUuid(), "ability", 60)) {
    // 60 tick 冷却已过
}

🖼️ CervaTooltips (客户端)

用于物品描述的工具提示构建器。

CervaTooltips.builder()
    .line("稀有神器", Formatting.GOLD)
    .line("+5 攻击力", Formatting.GREEN)
    .build(tooltip);

📁 CervaPaths

支持引号和空格的路径解析——适用于接受文件路径的命令。

📂 CervaFilePicker (客户端)

通过 TinyFD 实现的原生操作系统文件对话框——支持格式过滤的打开/保存对话框。

🛡️ CervaSafe

快速检查客户端/服务器端、空世界、空玩家等——防止常见崩溃。


📋 要求

  • Minecraft 1.21.11
  • Fabric Loader ≥ 0.19.3
  • Fabric API
  • Java 21+

⚙️ 针对模组开发者

在 build.gradle 中将 C-erva Core 添加为依赖:

modImplementation "com.andrewimm:cerva_core:1.2.91"

并在 fabric.mod.json 中:

"depends": {
    "cerva_core": ">=1.2.91"
}

🔗 使用 C-erva Core 的模组

  • PhotoChat — 将图片直接发送到 Minecraft 聊天中