Class ChunkPriceMap

java.lang.Object
net.chen.legacyLand.resource.pricing.map.ChunkPriceMap

public class ChunkPriceMap extends Object
BlueMap 地价标记管理(兼容 BlueMap-Towny 2.4.0 接入模式)。

接入约定(参考 codes.antti.bluemaptowny.BlueMapTowny):

  • BlueMapAPI.onEnable(java.util.function.Consumer) 触发后调用 onBlueMapEnable(BlueMapAPI),为每个 BlueMap 世界一次性注册 MarkerSet。
  • 每个世界一个 MarkerSet(按 WorldInfo.getUID() 缓存),同一 MarkerSet 会被注入到该 BlueMapWorld 的所有 BlueMapMap 中。
  • 定时刷新采用「全清后重写」策略,确保国家/城镇解散后旧标记自动消失。
  • MarkerSet id 与 BlueMap-Towny 的 "towny" 互不冲突,可并存。
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    double
    getNationalTotalPrice(com.palmergames.bukkit.towny.object.Nation nation)
    计算国家所有领土区块的地价总和。
    void
    onBlueMapDisable(de.bluecolored.bluemap.api.BlueMapAPI api)
    由 BlueMapAPI.onDisable(Consumer) 回调触发:从所有地图移除 MarkerSet,清空缓存。
    void
    onBlueMapEnable(de.bluecolored.bluemap.api.BlueMapAPI api)
    由 BlueMapAPI.onEnable(Consumer) 回调触发:为每个已映射的 Bukkit 世界注册 MarkerSet。
    void
    removeChunkPriceMarker(String world, int cx, int cz)
    单点移除:从对应世界缓存里删除 markerId。
    void
    removeNationPriceMarker(com.palmergames.bukkit.towny.object.Nation nation)
    从所有世界的 MarkerSet 中移除指定国家的 POI(用于解散事件)。
    void
    全清后重写所有地块 Shape(与 BlueMap-Towny 的批量刷新一致)。
    void
    全清后重写所有国家 POI(参照 BlueMap-Towny 的 updateMarkers 策略)。
    void
    updateChunkPriceMarker(com.palmergames.bukkit.towny.object.TownBlock tb)
    为单个 TownBlock 写入 16×16 的 ShapeMarker,颜色随价格在绿→红之间渐变。
    void
    updateNationPriceMarker(com.palmergames.bukkit.towny.object.Nation nation)
    为单个国家更新 POI 标记。
    void
    updateTownChunkPriceMarkers(com.palmergames.bukkit.towny.object.Town town)
     

    Methods inherited from class Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • ChunkPriceMap

      public ChunkPriceMap()
  • Method Details

    • onBlueMapEnable

      public void onBlueMapEnable(de.bluecolored.bluemap.api.BlueMapAPI api)
      由 BlueMapAPI.onEnable(Consumer) 回调触发:为每个已映射的 Bukkit 世界注册 MarkerSet。 重复调用是幂等的——会先清空再重建。
    • onBlueMapDisable

      public void onBlueMapDisable(de.bluecolored.bluemap.api.BlueMapAPI api)
      由 BlueMapAPI.onDisable(Consumer) 回调触发:从所有地图移除 MarkerSet,清空缓存。
    • getNationalTotalPrice

      public double getNationalTotalPrice(com.palmergames.bukkit.towny.object.Nation nation)
      计算国家所有领土区块的地价总和。
      Parameters:
      nation - Towny 国家;为 null 返回 0
    • updateNationPriceMarker

      public void updateNationPriceMarker(com.palmergames.bukkit.towny.object.Nation nation)
      为单个国家更新 POI 标记。标记位置:首都 spawn;首都缺失/未设置 spawn 则跳过。
    • updateAllNationMarkers

      public void updateAllNationMarkers()
      全清后重写所有国家 POI(参照 BlueMap-Towny 的 updateMarkers 策略)。 国家解散后旧标记会随清空消失。
    • removeNationPriceMarker

      public void removeNationPriceMarker(com.palmergames.bukkit.towny.object.Nation nation)
      从所有世界的 MarkerSet 中移除指定国家的 POI(用于解散事件)。
    • updateChunkPriceMarker

      public void updateChunkPriceMarker(com.palmergames.bukkit.towny.object.TownBlock tb)
      为单个 TownBlock 写入 16×16 的 ShapeMarker,颜色随价格在绿→红之间渐变。
    • removeChunkPriceMarker

      public void removeChunkPriceMarker(String world, int cx, int cz)
      单点移除:从对应世界缓存里删除 markerId。
    • updateTownChunkPriceMarkers

      public void updateTownChunkPriceMarkers(com.palmergames.bukkit.towny.object.Town town)
    • updateAllChunkPriceMarkers

      public void updateAllChunkPriceMarkers()
      全清后重写所有地块 Shape(与 BlueMap-Towny 的批量刷新一致)。