Skip to content

RarityCore API Documentation

This document is written for RarityCore 1201.12.11

Main API Classes

1. RarityRegistry (Core Registration Class)

Package path: org.yanbwe.raritycore.registry.RarityRegistry

Rarity Registration and Management

java
// Register item rarity (sync to clients by default)
public static void register(@Nullable Item item, int rarity)

// Register item rarity (can specify whether to sync to clients)
public static void register(@Nullable Item item, int rarity, boolean syncToClients)

// Unregister item rarity registration
public static void unregister(@Nullable Item item, boolean syncToClients)

// Put auto-calculated rarity configuration
public static void putAutoRarity(ResourceLocation itemId, int rarity)

// Remove auto-calculated rarity configuration
public static void removeAutoRarity(ResourceLocation itemId)

// Get item stack rarity level (pass NBT data, match based on ID and then NBT)
public static @NotNull Integer getRarity(@Nullable ItemStack itemStack)

// Get item rarity level (without NBT data, only ID matching)
public static @NotNull Integer getRarity(@Nullable Item item)

// Get standardized item rarity (without NBT data, only ID matching)
// Standardization means: null is treated as 1, less than 1 is treated as 1, greater than 7 is treated as 7
// It is recommended to use this method to get rarity to simplify code
public static @NotNull Integer getNormalizedRarity(@Nullable Item item)

// Get standardized item rarity (pass NBT data, match based on ID and then NBT)
public static @NotNull Integer getNormalizedRarity(@Nullable ItemStack itemStack)

// Get complete localized rarity tooltip string for items (supports localization)
public static @NotNull String getLocalizedRarityTooltip(@Nullable Item item)

Rarity Retrieval Priority Order:

NBT Matching > Apotheosis Mod Rarity > This Mod's Rarity (Config and Datapack) > Vanilla Rarity Mapping

Network Synchronization

Network synchronization functionality is located in the SyncManager class: org.yanbwe.raritycore.network.SyncManager

java
// Synchronize all rarity data to clients (full synchronization)
public static void syncRarityToClients(Map<ResourceLocation, Integer> itemRarityMap)

// Synchronize all rarity data to clients with retry mechanism (full synchronization)
public static void syncRarityToClientsWithRetry(Map<ResourceLocation, Integer> itemRarityMap)

// Synchronize incremental changes to clients
public static void syncIncrementalChangesToClients()

// Synchronize incremental changes to clients with retry mechanism
public static void syncIncrementalChangesToClientsWithRetry()

// Get the number of operations in current change buffer
public static int getPendingChangeCount()

// Clear change buffer
public static void clearChangeBuffer()

// Add change operation to buffer
public static void addChangeOperation(ChangeOperation operation)

2. RarityColorUtil (Color Utility Class)

Package path: org.yanbwe.raritycore.util.RarityColorUtil

java
// Get chat format color based on rarity
public static ChatFormatting getRarityChatColor(int rarity)

// Get ARGB color value based on rarity
public static int getRarityArgbColor(int rarity)

Rarity Color Mapping:

RarityNameChatFormattingARGB Value
1CommonWHITE0xFFA0A0A0
2RareGREEN0xFF00AA00
3UncommonDARK_AQUA0xFF00AAAA
4EpicLIGHT_PURPLE0xFFC870FF
5LegendaryGOLD0xFFFFAA00
6MythicRED0xFFFF5555
7UniqueDARK_RED0xFFAA0000

3. RarityValidator (Validation Utility Class)

Package path: org.yanbwe.raritycore.util.RarityValidator

java
// Validate if rarity value is valid (1-7)
public static boolean isValidRarity(int rarity)

// Normalize rarity value (less than 1 becomes 1, greater than 7 becomes 7)
public static int normalizeRarity(int rarity)

// Validate if item is valid
public static boolean isValidItem(Item item)

// Get resource location identifier for item
public static ResourceLocation getItemId(Item item)

// Validate if border style is valid (0 or 1)
public static boolean isValidBorderStyle(int borderStyle)

// Validate and return valid border style
public static int validateBorderStyle(int borderStyle)

4. ClientConfigManager (Client Configuration Management Class)

Package path: org.yanbwe.raritycore.config.ClientConfigManager

java
// Item border rendering
public static boolean isEnableItemBorderRendering()
public static void setEnableItemBorderRendering(boolean enable)

// Item border style (0: hollow, 1: solid)
public static int getItemBorderStyle()
public static void setItemBorderStyle(int style)

// Texture border
public static boolean isUseTextureBorder()
public static void setUseTextureBorder(boolean useTexture)

// Item name coloring
public static boolean isEnableItemNameColor()
public static void setEnableItemNameColor(boolean enable)

// Tooltip insertion
public static boolean isEnableTooltipInsert()
public static void setEnableTooltipInsert(boolean enable)

// Tooltip rarity text coloring
public static boolean isEnableTooltipColor()
public static void setEnableTooltipColor(boolean enable)

// Skip unconfigured items
public static boolean isSkipUnconfiguredItems()
public static void setSkipUnconfiguredItems(boolean skip)

// Cache system
public static boolean isEnableCacheSystem()
public static void setEnableCacheSystem(boolean enable)

5. ServerConfigManager (Server Configuration Management Class)

Package path: org.yanbwe.raritycore.config.ServerConfigManager

java
// Check vanilla rarity
public static boolean isCheckVanillaRarity()
public static void setCheckVanillaRarity(boolean check)

// Check Apotheosis mod rarity
public static boolean isCheckApotheosisRarity()
public static void setCheckApotheosisRarity(boolean check)

// Enable getRarity() warning
public static boolean isEnableGetRarityWarning()
public static void setEnableGetRarityWarning(boolean enable)

6. StarDisplayConfigManager (Star Display Configuration Management Class)

Package path: org.yanbwe.raritycore.config.StarDisplayConfigManager

java
// Star display master switch
public static boolean isEnableStarDisplay()
public static void setEnableStarDisplay(boolean enable)

// Star display mode
public static String getStarMode()
public static void setStarMode(String mode)

// Repeat mode character
public static String getRepeatCharacter()
public static void setRepeatCharacter(String character)

// Custom mode string mapping (levels 1-7)
public static Map<Integer, String> getCustomStarStrings()
public static void setCustomStarStrings(Map<Integer, String> strings)

// Get custom string for specified rarity
public static String getCustomStarString(int rarity)
public static void setCustomStarString(int rarity, String string)

// Special rarity text mapping (greater than 7)
public static Map<Integer, String> getCustomSpecialRarityTexts()
public static void setCustomSpecialRarityTexts(Map<Integer, String> texts)

// Get custom special text for specified rarity
public static String getCustomSpecialRarityText(int rarity)

Usage Examples

1. Basic Rarity Query

java
import org.yanbwe.raritycore.registry.RarityRegistry;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.Items;

// Get item rarity (supports NBT matching)
ItemStack diamondStack = new ItemStack(Items.DIAMOND);

Integer rarity = RarityRegistry.getRarity(diamondStack);
// Rarity follows priority: NBT Matching > Apotheosis > This Mod's Config > Vanilla Mapping
System.out.println("Diamond rarity: " + rarity);

// Get standardized rarity (recommended)
Integer normalizedRarity = RarityRegistry.getNormalizedRarity(diamondStack);
// Standardized rarity is always in range 1-7, no extra handling needed
System.out.println("Normalized rarity: " + normalizedRarity);

2. Rarity Registration and Management

java
import org.yanbwe.raritycore.registry.RarityRegistry;
import net.minecraft.world.item.Items;

// Register item rarity
RarityRegistry.register(Items.DIAMOND, 4); // Set diamond to Epic level

// Remove item rarity
RarityRegistry.unregister(Items.DIAMOND, true); // Remove and sync to clients

// Get localized tooltip
String tooltip = RarityRegistry.getLocalizedRarityTooltip(Items.DIAMOND);
System.out.println(tooltip); // Output like: "Epic ⭐⭐⭐⭐"

3. Color Utility Usage

java
import org.yanbwe.raritycore.util.RarityColorUtil;
import net.minecraft.ChatFormatting;

// Get color based on rarity
ChatFormatting color = RarityColorUtil.getRarityChatColor(5); // Get Legendary color
int argb = RarityColorUtil.getRarityArgbColor(5); // Get ARGB color value

4. Rarity Validation and Normalization

java
import org.yanbwe.raritycore.util.RarityValidator;

// Validate if rarity value is valid
boolean isValid = RarityValidator.isValidRarity(5); // true

// Normalize rarity value
int normalized = RarityValidator.normalizeRarity(10); // Returns 7
int normalized2 = RarityValidator.normalizeRarity(0); // Returns 1

5. Star Display Configuration

java
import org.yanbwe.raritycore.config.StarDisplayConfigManager;
import java.util.HashMap;
import java.util.Map;

// Set custom star display strings (levels 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);

// Set special rarity texts (greater than 7)
Map<Integer, String> specialTexts = new HashMap<>();
specialTexts.put(8, "Mythic");
specialTexts.put(9, "Genesis");
specialTexts.put(10, "Endless");
StarDisplayConfigManager.setCustomSpecialRarityTexts(specialTexts);

Released under the MIT License