LV. 25
GP 70

告別資源界吧!NatureRevive 資源再生系統,享受無限資源 領地|Config|隨機礦物

樓主 Rice Chen. RICE0707
適用版本: 1.17 ~ 1.19.4


玩家:「資源界好麻煩喔,還要傳來傳去」
玩家:「能不能就是資源採集跟建築的是都用同一個啊?」
某飯:「但這樣就不能重製世界了,資源會越來越少哎」
玩家:「不能讓探過的地方定期變回原本的樣子嗎?」

於是,這個插件就出現了。耗時兩個月的爆肝開發,提供給各大伺服器,
一個省去無謂的資源世界,享受單一世界無限資源的便利性!



-  插件功能  -

  • 可選的領地再生保護模式
    1. 不再生含有RES領地的區塊
    2. 再生含有RES領地的區塊,但是不再生RES領地範圍內的方塊
    3. 不再生含有GP領地的區塊
    4. 再生含有GP領地的區塊,但是不再生GP領地範圍內的方塊
    5. 不再生含有GD領地的區塊
    6. 再生含有GD領地的區塊,但是不再生GD領地範圍內的方塊
  • 可選的前置插件
    1. CorePortect
    2. Residence
    3. GriefPrevention
    4. GriefDefender
      1. 根據TPS來暫停再生,直至TPS恢復正常
      2. 根據人數來暫停再生,直至人數低於指定數
      3. 調整一個Tick會再生多少個區塊
      4. 調整每次再生時,最多會放置多少方塊數
      5. 調整控制區塊的生成策略以及激進程度
        1. aggressive (激進) - 區塊若過期,則自動載入區塊再生
        2. average (均衡) - 玩家載入區塊後,附近的區塊(3*3)若過期,則再生
        3. passive (緩和) - 只有玩家載入的那個區塊,若過期,則再生

  • ⚠️ Folia 支援
  • 長久以來,Minecraft 伺服器端飽受單線程運行之苦,沒辦法讓硬體發揮最大的效能。
  • 儘管對應的替代品似有發展,但渺小的社群以及無法兼容 Bukkit API 的軟肋,讓這些專案始終無法成為改善該問題的稻草,
  • 而 Folia 的出現使得 Minecraft 伺服端並行的方案有解,只是,仍需依靠社群的努力才能讓問題迎刃而解。
  • 故此 NatureRevive 推出了 Folia 支援版本,用戶在編譯 Folia 後,只需將 naturerevive-folia-2.0.0-beta4.jar 下載至伺服器的 plugins/ 資料夾即可使用。
  • 還請留意的是,NatureRevive Folia 版本不支援 Spigot 以及其他 Paper 分支,運行 Spigot 以及 Paper 分支的用戶,請改用 NatureRevive Spigot。
  • 此外針對 Folia 的支援,仍處於初期,運行 NatureRevive 時有可能遇到意想不到的錯誤,
  • 倘若出現任何錯誤,請至輝煌插件 Discord 群組回報。



-  使用方式  -

  • 下載此插件
  • 插件.jar 放入你的伺服器插件資料夾(plugins
  • 完成!(如果有插件加載器,請記得 load 插件)

  • 使用此插件時,請記得要備份地圖,避免意外情況發生!!!



-  設置說明  -

  • 除錯模式。
    • debug: false

  • 一個區塊會在多久之後過期,可選 d、h、m、s 作為時間單位。
    • ttl-duration: 7d

  • # 每次再生可以再生幾個區塊。
    • task-process-per-tick: 1

  • n 個 tick 處理一次區塊再生(1 tick = 50ms)。
    • queue-process-per-n-tick: 5

  • n 個 tick 檢查一次過期的區塊(過期的區塊 = 需要被再生的區塊)。
    • check-chunk-ttl-per-n-tick: 100

  • n 個 tick 將過期的區塊儲存至本地資料庫(過期的區塊 = 需要被再生的區塊)。
    • data-save-time-tick: 300




  • 是否啟用 CoreProtect 的紀錄功能。
    • coreprotect-logging-enable: true

  • CoreProtect 紀錄中,有關此插件相關改動的顯示名稱。
    • coreprotect-log-username: '#資源再生'

  • messages:
    • 當插件配置檔重載成功時,向指令執行者傳送的訊息。
      • reload-success-message: '&a成功重載插件配置檔!'
    • 當插件配置檔重載失敗時,向指令執行者傳送的訊息。
      • reload-failure-message: '&c插件配置檔重載失敗, 請查看後台以獲取詳細記錄.'
    • 當區塊重生系統被關閉時,向指令執行者傳送的訊息。.
      • stop-regeneration: '&e關閉區塊重生系統成功, 倘若想要再次開啟, 請重新執行該指令!'
    • 當區塊重生系統被開啟時,向指令執行者傳送的訊息。.
      • start-regeneration: '&a開啟區塊重生系統成功, 倘若想要再次關閉, 請重新執行該指令!'
    • 當區塊重生系統被關閉時,執行強制重生系統會回傳的訊息
      • force-regen-fail-due-to-regeneration-stop: '&c無法在區塊重生系統關閉時強制重生區塊!'

  • 配置檔案版本,請不要更改此數值!
    • config-version: 14

  • 該選項將限制礦物混淆系統強制於高度 40 以下替換礦物(僅主世界),
  • 並且將會嚴格限制替換的方塊種類為 石頭 / 深板岩(主世界)或 地獄石(地獄),
  • 當礦物混淆產生的礦物錯位時,再考慮開啟此選項,
  • 開啟此選項後 y > 40 的區域將不會生成任何礦物
    • safer-ore-obfuscation: true

  • 每次區域放置的保留方塊數量,倘若無特殊情況,請保持在默認值。
    • block-put-per-tick: 1024

  • n 個 tick 檢查是否有需要保留的方塊等待放置,
  • 倘若該數值被設置的過久的話玩家將可能見到終界折躍門方塊突然消失,又再次出現。
    • block-put-action-per-n-tick: 10

  • 重生區塊的最低TPS 數值,倘若低於該數值,區塊重生將會被擱置。
    • min-tps-for-regenerate-chunk: 16.0

  • # 重生區塊的最高玩家上限,倘若玩家數高於該數值,區塊重生將會被擱置。
    • max-players-for-regenerate-chunk: 40

  • 該列表內的世界將會被重生系統忽略,並將不會再生。
    • blacklist-worlds:
    • - 世界 1
    • - World 2

  • 控制區塊的生成策略以及激進程度,可選 aggressive(激進)、passive(緩和)、average(均衡)。
  • 當選擇 aggressive 時,插件將會主動載入重生過期的區塊,該方法可以有效清空所有過期,但較為消耗資源。
  • 當選擇 average 時,插件會定期檢查玩家周圍八格的區塊是否過期,該方法對人數均衡的伺服器較為友善。
  • 當選擇 passive 時,插件將不會主動加載過期的區塊,並將等到玩家主動加載區塊時才會進行重生,
  • 該方法可以避免區塊重生所造成的 TPS 跌幅,但會有部分未被玩家探索的區塊長時間未再生。
    • regeneration-strategy: aggressive

  • n 個 tick 處理一次事件影響之區塊計算(1 tick = 50ms)
    • block-queue-process-per-n-tick: 10

  • 每次可以處理幾個被事件影響的方塊。
    • block-queue-process-per-time: 200

  • 每幾個 tick 可以對資料庫進行增刪查改的動作,
  • 請盡量將該數值設置的低一點,否則資料庫有可能會毀損。
    • sql-processing-tick: 3

  • 每次執行可以執行多少個 SQL 指令。
    • sql-processing-count: 50

  • storage:
    • 選擇儲存待更新區塊的資料庫類型,
    • 可選擇 yaml(本地)、sqlite(本地)、 mysql(遠端, 需配置 MySQL 伺服器)
      • method: yaml

    • 應在 MySQL 使用的資料庫名稱。
      • database-name: naturerevive

    • 連接至 MySQL 所用的資料表名稱。
      • table-name: locations

    • 連接至 MySQL 所用的 IP 或域名。
      • database-domain-or-ip: 127.0.0.1

    • 連接至 MySQL 所用的端口與名稱。
      • database-port: 3306
      • database-username: root

    • 應在 MySQL 使用的資料庫密碼。
      • database-password: '20480727'

    • 連接至 MySQL 時所使用的 JDBC 參數,
    • {database_ip} 表示資料庫 IP 的佔位符,{database_port} 表示資料庫端口的佔位符,
    • {database_name} 表示資料庫名稱的佔位符,
    • 倘若 database-ip-and-domain 等欄位有被正確填寫的話,將會自動帶入佔位符
      • jdbc-connection-string: jdbc:mysql://{database_ip}:{database_port}/{database_name}

    • 改變生成寶藏箱時的策略,當偵測到寶藏箱時,僅更新其種子,而不進行物品填充。
    • 當您遇到每次打開寶藏箱會再生物品的情況時,請打開該設置。
      • adaptive-loot-chest-replacement: false

    • 調整 regeneration-strategyaverage 時,插件重生區塊的範圍。
    • 公式:f(x) = (2x - 1) ^ 2 - 1
    • 如重生周圍八格區塊,則填入 2,帶入:f(2) = (2 * 2 - 1) ^ 2 - 1 = 9 - 1 = 8
      • average-chunk-radius: 2



-  插件指令  -

  • /forceregenall - 強制再生所有已過期的區塊 (權限:OP)
  • /snapshot - 保存當前區塊的快照檔案 (權限:OP)
  • /revert <檔案名稱> - 讀取快照檔案 (位置:plugins/NatureRevive/snapshots) (權限:OP)
  • /togglerevive or /tgrv - 暫停資源再生流程,再輸入一次指令開啟 (權限:OP)
  • /reloadreviveconfig or /rrc - 重新載入插件 (權限:OP)



- 插件權限 -

  • naturerevive.snapshot - 使用/snapshot的權限
  • naturerevive.revert - 使用/revert <檔案名稱>的權限
  • naturerevive.forceregenall - 使用/forceregenall的權限
  • naturerevive.reloadreviveconfig - 使用/reloadreviveconfig or /rrc的權限
  • naturerevive.togglerevive - 使用/reloadreviveconfig or /rrc的權限



-  下載位置  -


-  源碼開源  -




-  運作模式  -

  • 當該區域有玩家活動過後,將會標記為 「過期區塊」
  • 當特定時間內其他玩家「沒有進行活動」時,將會執行再生。
  • ( 預設情況下含有領地的區塊將被排除 )
    • 「進行活動」包括:
      1. BlockBreakEvent
      2. BlockBurnEvent
      3. BlockCookEvent
      4. LeavesDecayEvent
      5. EntityDeathEvent (特定條件: 玩家為擊殺者,且被擊殺者不是玩家)
      6. BrewEvent
      7. FurnaceBurnEvent
      8. EntityExplodeEvent
      9. BlockExplodeEvent
      10. BlockPlaceEvent



- 版本紀錄 -

  • 1.0 : 初次發布
  • 1.1 : 支援 GreifProtection
  • 1.1.1 : 修復容器內的物品消失錯誤
  • 1.2 : CoreProtect 異步修復
  • 1.3 : 新增 MySQL / SQLite 支援
  • 1.4 : 修正嚴重資料庫問題,更新 MySQL-HikariCP
  • 1.5 : 支援 GriefDefender
  • 1.5.1 : 修正重生條件檢查時的一處錯誤
  • 1.5.2 : 優化方塊/實體爆炸導致的區塊重生計算
  • 1.5.3 : 修正無謂的緩存查尋問題以及高度優化區塊標記系統
  • 2.0.0-beta-1:代碼重構,向下支援至1.17,並優化SQL執行及減少占用
  • 2.0.0-beta-2:1.19.3 支援,優化偵測到寶藏箱的話,只更換種子碼,不直接進行填充
  • 2.0.0-beta-3:修復異步存儲報錯,現在 average 可以自定生成範圍
  • 2.0.0-beta-4:
    • 1.19.4支援
    • 重生區塊結束後,不再強制區塊儲存。
    • 重生區塊結束後,將會呼叫 ChunkPopulateEvent
    • ⚠️ Folia 支援
  • .... 開發中

板務人員: