Class RangeBrackets
java.lang.Object
constants.RangeBrackets
「區間 → 數值」設定的純解析/序列化/查詢工具:道具堆疊區間(道具 ID 區間 → 堆疊上限)與
經驗區間倍率(等級區間 → 經驗倍率)兩者共用的格式、查找邏輯。
格式為 起-訖:值,以 , 分隔多組(序列化時以 ", " 連接),例:
2000000-2000999:200, 4000000-4001999:500(堆疊)、1-70:1, 71-120:0.8(經驗)。
本類別刻意不依賴 ServerConstants/ServerProperties(全為純函式),
因此可在無資料庫的離線單元測試中直接驗證(見 test/constants/RangeBracketsTest),
不會觸發 ServerProperties 靜態初始化的 DB 連線 + System.exit(0)。
ServerConstants 僅持有 volatile 執行期快照並委派至此。
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic final record經驗區間倍率的一組區間:角色等級落在[minLevel, maxLevel]時所得經驗再乘上rate。static final record道具堆疊上限覆寫的一組區間:道具 ID 落在[minId, maxId]者每格最多堆疊slotMax個。 -
Method Summary
Modifier and TypeMethodDescriptionstatic doubleexpRate(List<RangeBrackets.ExpBracket> brackets, int level) 取得指定等級的經驗倍率;未涵蓋的等級回1.0(不變)。static List<RangeBrackets.ExpBracket> parseExpBrackets(String raw, boolean strict) 解析「經驗區間倍率」字串(格式起始等級-結束等級:倍率,逗號分隔多組)為清單。static List<RangeBrackets.StackRange> parseStackRanges(String raw, boolean strict) 解析「道具堆疊區間」字串(格式起始ID-結束ID:堆疊上限,逗號分隔多組)為清單。static String將經驗區間倍率清單序列化為settings.ini字串(格式min-max:rate,以", "分隔)。static String將道具堆疊區間清單序列化為settings.ini字串(格式min-max:slot,以", "分隔)。static shortstackOverride(List<RangeBrackets.StackRange> ranges, int itemId) 取得道具的堆疊上限覆寫;無命中、或道具非「可堆疊」三類(僅消耗 USE=2/裝飾 SETUP=3/其他 ETC=4 套用) 回0(呼叫端沿用原設定)。
-
Method Details
-
stackOverride
取得道具的堆疊上限覆寫;無命中、或道具非「可堆疊」三類(僅消耗 USE=2/裝飾 SETUP=3/其他 ETC=4 套用) 回0(呼叫端沿用原設定)。第一個命中的區間優先;回傳值夾在[1, Short.MAX_VALUE]。- Parameters:
ranges- 區間清單(依序比對)itemId- 道具 ID- Returns:
- 堆疊上限覆寫(
> 0),或0表示不覆寫
-
expRate
取得指定等級的經驗倍率;未涵蓋的等級回1.0(不變)。第一個命中的區間優先。- Parameters:
brackets- 區間清單(依序比對)level- 角色等級- Returns:
- 經驗倍率(預設
1.0)
-
parseStackRanges
解析「道具堆疊區間」字串(格式起始ID-結束ID:堆疊上限,逗號分隔多組)為清單。- Parameters:
raw- 原始字串(可為null/空 → 回空清單)strict-true時任何格式錯誤拋IllegalArgumentException(供後台儲存驗證);false時跳過該組並記錄警告(供settings.ini載入容錯)- Returns:
- 不可變的區間清單(順序即輸入順序)
-
parseExpBrackets
解析「經驗區間倍率」字串(格式起始等級-結束等級:倍率,逗號分隔多組)為清單。- Parameters:
raw- 原始字串(可為null/空 → 回空清單)strict-true時任何格式錯誤拋IllegalArgumentException(供後台儲存驗證);false時跳過該組並記錄警告(供settings.ini載入容錯)- Returns:
- 不可變的區間清單(順序即輸入順序)
-
serializeStackRanges
將道具堆疊區間清單序列化為settings.ini字串(格式min-max:slot,以", "分隔)。 -
serializeExpBrackets
將經驗區間倍率清單序列化為settings.ini字串(格式min-max:rate,以", "分隔)。
-