Class RangeBrackets

java.lang.Object
constants.RangeBrackets

public final class RangeBrackets extends Object
「區間 → 數值」設定的純解析/序列化/查詢工具:道具堆疊區間(道具 ID 區間 → 堆疊上限)與 經驗區間倍率(等級區間 → 經驗倍率)兩者共用的格式、查找邏輯。

格式為 起-訖:值,以 , 分隔多組(序列化時以 ", " 連接),例: 2000000-2000999:200, 4000000-4001999:500(堆疊)、1-70:1, 71-120:0.8(經驗)。

本類別刻意不依賴 ServerConstantsServerProperties(全為純函式), 因此可在無資料庫的離線單元測試中直接驗證(見 test/constants/RangeBracketsTest), 不會觸發 ServerProperties 靜態初始化的 DB 連線 + System.exit(0)ServerConstants 僅持有 volatile 執行期快照並委派至此。

  • Method Details

    • stackOverride

      public static short stackOverride(List<RangeBrackets.StackRange> ranges, int itemId)
      取得道具的堆疊上限覆寫;無命中、或道具非「可堆疊」三類(僅消耗 USE=2/裝飾 SETUP=3/其他 ETC=4 套用) 回 0(呼叫端沿用原設定)。第一個命中的區間優先;回傳值夾在 [1, Short.MAX_VALUE]
      Parameters:
      ranges - 區間清單(依序比對)
      itemId - 道具 ID
      Returns:
      堆疊上限覆寫(> 0),或 0 表示不覆寫
    • expRate

      public static double expRate(List<RangeBrackets.ExpBracket> brackets, int level)
      取得指定等級的經驗倍率;未涵蓋的等級回 1.0(不變)。第一個命中的區間優先。
      Parameters:
      brackets - 區間清單(依序比對)
      level - 角色等級
      Returns:
      經驗倍率(預設 1.0)
    • parseStackRanges

      public static List<RangeBrackets.StackRange> parseStackRanges(String raw, boolean strict)
      解析「道具堆疊區間」字串(格式 起始ID-結束ID:堆疊上限,逗號分隔多組)為清單。
      Parameters:
      raw - 原始字串(可為 null/空 → 回空清單)
      strict - true 時任何格式錯誤拋 IllegalArgumentException(供後台儲存驗證); false 時跳過該組並記錄警告(供 settings.ini 載入容錯)
      Returns:
      不可變的區間清單(順序即輸入順序)
    • parseExpBrackets

      public static List<RangeBrackets.ExpBracket> parseExpBrackets(String raw, boolean strict)
      解析「經驗區間倍率」字串(格式 起始等級-結束等級:倍率,逗號分隔多組)為清單。
      Parameters:
      raw - 原始字串(可為 null/空 → 回空清單)
      strict - true 時任何格式錯誤拋 IllegalArgumentException(供後台儲存驗證); false 時跳過該組並記錄警告(供 settings.ini 載入容錯)
      Returns:
      不可變的區間清單(順序即輸入順序)
    • serializeStackRanges

      public static String serializeStackRanges(List<RangeBrackets.StackRange> list)
      將道具堆疊區間清單序列化為 settings.ini 字串(格式 min-max:slot,以 ", " 分隔)。
    • serializeExpBrackets

      public static String serializeExpBrackets(List<RangeBrackets.ExpBracket> list)
      將經驗區間倍率清單序列化為 settings.ini 字串(格式 min-max:rate,以 ", " 分隔)。