Skip to content

RarityCore API Documentation

This document is written for RarityCore 1211.12.9

Yanbwe tries to ensure that all versions have the same functionality. Additionally, since everything is built from scratch, the API for versions after 1.21.1 should have no differences.

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)

// Check if item has auto-calculated rarity configuration
public static boolean hasAutoRarity(ResourceLocation itemId)

// Get item stack rarity level (supports item data matching)
public static @NotNull Integer getRarity(@Nullable ItemStack itemStack)

// Get item rarity level
public static @NotNull Integer getRarity(@Nullable Item item)

// Get standardized item rarity (recommended to use)
// Standardization means: null is treated as 1, less than 1 is treated as 1, greater than 7 is treated as 7
public static @NotNull Integer getNormalizedRarity(@Nullable Item item)

// Get standardized item rarity (supports item data matching)
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:

Item Data 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 coloring
public static boolean isEnableTooltipColor()
public static void setEnableTooltipColor(boolean enable)

// Tooltip insertion
public static boolean isEnableTooltipInsert()
public static void setEnableTooltipInsert(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 item data matching)
ItemStack diamondStack = new ItemStack(Items.DIAMOND);

Integer rarity = RarityRegistry.getRarity(diamondStack);
// Rarity follows priority: Item Data 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