稀有度核心 API 文档
本文档基于稀有度核心的 1201.12.11 编写
主要API类
1. RarityRegistry (核心注册类)
包路径: org.yanbwe.raritycore.registry.RarityRegistry
稀有度注册与管理
java
// 注册物品稀有度(默认同步到客户端)
public static void register(@Nullable Item item, int rarity)
// 注册物品稀有度(可指定是否同步到客户端)
public static void register(@Nullable Item item, int rarity, boolean syncToClients)
// 删除物品稀有度注册
public static void unregister(@Nullable Item item, boolean syncToClients)
// 放入自动计算的稀有度配置
public static void putAutoRarity(ResourceLocation itemId, int rarity)
// 移除自动计算的稀有度配置
public static void removeAutoRarity(ResourceLocation itemId)
// 获取物品堆的稀有度等级(传入NBT数据,在id匹配的基础上进行nbt匹配)
public static @NotNull Integer getRarity(@Nullable ItemStack itemStack)
// 获取物品的稀有度等级(不传入NBT数据,只获取id匹配)
public static @NotNull Integer getRarity(@Nullable Item item)
// 获取标准化的物品稀有度(不传入NBT数据,只获取id匹配)
// 标准化是指:null的视为1,小于1的视为1,大于7的视为7.推荐使用这个方法来获取稀有度,以便简化代码.
public static @NotNull Integer getNormalizedRarity(@Nullable Item item)
// 获取标准化的物品稀有度(传入NBT数据,在id匹配的基础上进行nbt匹配)
public static @NotNull Integer getNormalizedRarity(@Nullable ItemStack itemStack)
// 获取物品的完整稀有度工具提示字符串(支持本地化)
public static @NotNull String getLocalizedRarityTooltip(@Nullable Item item)稀有度获取优先级顺序:
NBT匹配 > 神化模组稀有度 > 本模组稀有度(配置和数据包) > 原版稀有度映射网络同步
网络同步功能位于 SyncManager 类中: org.yanbwe.raritycore.network.SyncManager
java
// 将所有稀有度数据同步到客户端(全量同步)
public static void syncRarityToClients(Map<ResourceLocation, Integer> itemRarityMap)
// 使用重试机制将所有稀有度数据同步到客户端(全量同步)
public static void syncRarityToClientsWithRetry(Map<ResourceLocation, Integer> itemRarityMap)
// 将增量变更同步到客户端
public static void syncIncrementalChangesToClients()
// 使用重试机制将增量变更同步到客户端
public static void syncIncrementalChangesToClientsWithRetry()
// 获取当前变更缓冲区中的操作数量
public static int getPendingChangeCount()
// 清空变更缓冲区
public static void clearChangeBuffer()
// 添加变更操作到缓冲区
public static void addChangeOperation(ChangeOperation operation)2. RarityColorUtil (颜色工具类)
包路径: org.yanbwe.raritycore.util.RarityColorUtil
java
// 根据稀有度获取聊天格式颜色
public static ChatFormatting getRarityChatColor(int rarity)
// 根据稀有度获取ARGB颜色值
public static int getRarityArgbColor(int rarity)稀有度对应颜色表:
| 稀有度 | 名称 | ChatFormatting | ARGB值 |
|---|---|---|---|
| 1 | 普通 | WHITE | 0xFFA0A0A0 |
| 2 | 稀有 | GREEN | 0xFF00AA00 |
| 3 | 罕见 | DARK_AQUA | 0xFF00AAAA |
| 4 | 史诗 | LIGHT_PURPLE | 0xFFC870FF |
| 5 | 传说 | GOLD | 0xFFFFAA00 |
| 6 | 神话 | RED | 0xFFFF5555 |
| 7 | 唯一 | DARK_RED | 0xFFAA0000 |
3. RarityValidator (验证工具类)
包路径: org.yanbwe.raritycore.util.RarityValidator
java
// 验证稀有度值是否有效 (1-7)
public static boolean isValidRarity(int rarity)
// 标准化稀有度值 (小于1视为1,大于7视为7)
public static int normalizeRarity(int rarity)
// 验证物品是否有效
public static boolean isValidItem(Item item)
// 获取物品的资源位置标识符
public static ResourceLocation getItemId(Item item)
// 验证边框样式是否有效 (0或1)
public static boolean isValidBorderStyle(int borderStyle)
// 验证并返回有效的边框样式
public static int validateBorderStyle(int borderStyle)4. ClientConfigManager (客户端配置管理类)
包路径: org.yanbwe.raritycore.config.ClientConfigManager
java
// 物品边框渲染
public static boolean isEnableItemBorderRendering()
public static void setEnableItemBorderRendering(boolean enable)
// 物品边框样式 (0:空心, 1:实心)
public static int getItemBorderStyle()
public static void setItemBorderStyle(int style)
// 纹理边框
public static boolean isUseTextureBorder()
public static void setUseTextureBorder(boolean useTexture)
// 物品名称变色
public static boolean isEnableItemNameColor()
public static void setEnableItemNameColor(boolean enable)
// 工具提示插入
public static boolean isEnableTooltipInsert()
public static void setEnableTooltipInsert(boolean enable)
// 工具提示稀有度文本变色
public static boolean isEnableTooltipColor()
public static void setEnableTooltipColor(boolean enable)
// 跳过未配置物品
public static boolean isSkipUnconfiguredItems()
public static void setSkipUnconfiguredItems(boolean skip)
// 缓存系统
public static boolean isEnableCacheSystem()
public static void setEnableCacheSystem(boolean enable)5. ServerConfigManager (服务端配置管理类)
包路径: org.yanbwe.raritycore.config.ServerConfigManager
java
// 检查原版稀有度
public static boolean isCheckVanillaRarity()
public static void setCheckVanillaRarity(boolean check)
// 检查神化模组稀有度
public static boolean isCheckApotheosisRarity()
public static void setCheckApotheosisRarity(boolean check)
// 启用getRarity()警告
public static boolean isEnableGetRarityWarning()
public static void setEnableGetRarityWarning(boolean enable)6. StarDisplayConfigManager (星星显示配置管理类)
包路径: org.yanbwe.raritycore.config.StarDisplayConfigManager
java
// 星星显示总开关
public static boolean isEnableStarDisplay()
public static void setEnableStarDisplay(boolean enable)
// 星星显示模式
public static String getStarMode()
public static void setStarMode(String mode)
// 重复模式字符
public static String getRepeatCharacter()
public static void setRepeatCharacter(String character)
// 自定义模式字符串映射(1-7级)
public static Map<Integer, String> getCustomStarStrings()
public static void setCustomStarStrings(Map<Integer, String> strings)
// 获取指定稀有度的自定义字符串
public static String getCustomStarString(int rarity)
public static void setCustomStarString(int rarity, String string)
// 特殊稀有度文本映射(大于7级)
public static Map<Integer, String> getCustomSpecialRarityTexts()
public static void setCustomSpecialRarityTexts(Map<Integer, String> texts)
// 获取指定稀有度的自定义特殊文本
public static String getCustomSpecialRarityText(int rarity)使用示例
1. 基本稀有度查询
java
import org.yanbwe.raritycore.registry.RarityRegistry;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.Items;
// 获取物品稀有度(支持NBT匹配)
ItemStack diamondStack = new ItemStack(Items.DIAMOND);
Integer rarity = RarityRegistry.getRarity(diamondStack);
// 稀有度获取遵循优先级:NBT匹配 > 神化模组 > 本模组配置 > 原版映射
System.out.println("Diamond rarity: " + rarity);
// 获取标准化稀有度(推荐使用)
Integer normalizedRarity = RarityRegistry.getNormalizedRarity(diamondStack);
// 标准化稀有度始终在1-7范围内,无需额外处理
System.out.println("Normalized rarity: " + normalizedRarity);2. 稀有度注册与管理
java
import org.yanbwe.raritycore.registry.RarityRegistry;
import net.minecraft.world.item.Items;
// 注册物品稀有度
RarityRegistry.register(Items.DIAMOND, 4); // 钻石设为史诗级别
// 删除物品稀有度
RarityRegistry.unregister(Items.DIAMOND, true); // 删除并同步到客户端
// 获取本地化工具提示
String tooltip = RarityRegistry.getLocalizedRarityTooltip(Items.DIAMOND);
System.out.println(tooltip); // 输出类似:"史诗 ⭐⭐⭐⭐"3. 颜色工具使用
java
import org.yanbwe.raritycore.util.RarityColorUtil;
import net.minecraft.ChatFormatting;
// 根据稀有度获取颜色
ChatFormatting color = RarityColorUtil.getRarityChatColor(5); // 获取传说级颜色
int argb = RarityColorUtil.getRarityArgbColor(5); // 获取ARGB颜色值4. 稀有度验证与标准化
java
import org.yanbwe.raritycore.util.RarityValidator;
// 验证稀有度值是否有效
boolean isValid = RarityValidator.isValidRarity(5); // true
// 标准化稀有度值
int normalized = RarityValidator.normalizeRarity(10); // 返回7
int normalized2 = RarityValidator.normalizeRarity(0); // 返回15. 星星显示配置
java
import org.yanbwe.raritycore.config.StarDisplayConfigManager;
import java.util.HashMap;
import java.util.Map;
// 设置自定义星星显示字符串(1-7级)
Map<Integer, String> customStrings = new HashMap<>();
customStrings.put(1, "·");
customStrings.put(2, "··");
customStrings.put(3, "···");
customStrings.put(4, "◆");
customStrings.put(5, "◇");
customStrings.put(6, "★");
customStrings.put(7, "☆");
StarDisplayConfigManager.setCustomStarStrings(customStrings);
// 设置特殊稀有度文本(大于7级)
Map<Integer, String> specialTexts = new HashMap<>();
specialTexts.put(8, "神话");
specialTexts.put(9, "创世");
specialTexts.put(10, "无尽");
StarDisplayConfigManager.setCustomSpecialRarityTexts(specialTexts);