Skip to content

Releases: BrilliantTeam/NatureRevive-brilliant

2.2.6|錯誤修復

13 Jun 15:56

Choose a tag to compare

⚠️ 更新 NatureRevive 版本前務必備份資料庫以及地圖檔案。

⚠️ 雖然我們已經盡全力確保領地、重生等插件功能無誤,還請務必在更新前備份地圖檔案。

⚠️ 若需要在 Folia 使用本插件,請使用下方提供的 FastAsyncWorldEdit 版本,所有改動

-# 本次改動未修改到 FastAsyncWorldEdit ,僅因為方便下載所以還是附上 jar

2.2.5|優化

13 Jun 13:27

Choose a tag to compare

  • 從根源上優化重複紀錄的處理方式。
    • 以往,針對高頻率的區塊變動,插件會全盤接收這些紀錄,
    • 然後一併發送給資料庫進行資料新增、TTL(要再生的時間)更新,
    • 這代表 高頻率的紅石行為、作物生長 ... 等 都會作為一筆紀錄,傳遞至資料庫,
    • 而在 2.2.4 中,
    • 新增一個邏輯,會蒐集一個周期內的資料,並判斷哪些是重複的紀錄,並進行篩選,
    • 最後僅發送給資料庫真正的最後變動。
    • 而,
    • 雖然重複的紀錄最後沒送進資料庫,
    • 但它們還是被產生、被丟進佇列、還做了生物群系與領地的查詢,這些都是浪費效能。
    • 因此,本次 2.2.5 直接在 產生紀錄的那一刻 就先攔截:
    • 同一個區塊在短時間內只會被記錄 一次
    • 後續重複的高頻率變動會在做任何查詢之前就被略過,
    • 等於把浪費掉的效能 從源頭 砍掉,而不是事後再清,使效能實現真正的優化。

⚠️ 更新 NatureRevive 版本前務必備份資料庫以及地圖檔案。

⚠️ 雖然我們已經盡全力確保領地、重生等插件功能無誤,還請務必在更新前備份地圖檔案。

⚠️ 若需要在 Folia 使用本插件,請使用下方提供的 FastAsyncWorldEdit 版本,所有改動

-# 本次改動未修改到 FastAsyncWorldEdit ,僅因為方便下載所以還是附上 jar

2.2.4|小優化

13 Jun 13:02

Choose a tag to compare

優化重複紀錄的存檔邏輯。


⚠️ 更新 NatureRevive 版本前務必備份資料庫以及地圖檔案。

⚠️ 雖然我們已經盡全力確保領地、重生等插件功能無誤,還請務必在更新前備份地圖檔案。

⚠️ 若需要在 Folia 使用本插件,請使用下方提供的 FastAsyncWorldEdit 版本,所有改動

-# 本次改動未修改到 FastAsyncWorldEdit ,僅因為方便下載所以還是附上 jar

2.2.3|修資料庫相關的 Bug 、讓存檔更穩定、更快速

13 Jun 09:57

Choose a tag to compare

  1. 重要 Bug 修正
    1. 修正 SQLite 存檔會「存錯指令」的問題
      • 之前在 SQLite 模式下,遇到一個還沒存進資料庫的新區塊時,
      • 會丟出一個「刪除」指令(DELETE),導致資料根本沒被正確寫進去。現在已經改成正確的「新增」(INSERT)。
    2. 修正 SQLite 寫入參數位置全錯的問題
      • 原本程式碼使用setInt(0, ...)來填寫資料,但資料庫的欄位編號其實是從 1 開始算的,
      • 所以這些寫入根本對不上、會直接出錯。這次把欄位順序跟編號全部修正回來了。
    3. 修正 MySQL 讀取資料時會「吃掉第一筆」的問題
      • 之前讀取區塊清單時有一段多餘的判斷,會不小心把查詢結果的第一筆資料跳過去,
      • 造成資料漏讀。現在已經移除這段邏輯。
  2. 效能與穩定性改善
    1. 資料庫寫入改用「批次處理」,速度大幅提升
      • 以前是一筆一筆送進資料庫(一次一個指令),現在改成打包成一整批一次送出(batch),
      • 存檔時對資料庫的壓力更小、速度更快。
    2. 新增「寫入失敗自動重試」機制
      • 以前存檔如果中途失敗,那些還沒寫進去的資料就直接消失了。
      • 現在如果這批沒存成功,會自動把它們放回佇列,下次再試一次,資料不會憑空不見。
    3. INSERT 改用 Upsert(有就更新、沒有就新增)
      • MySQL 用ON DUPLICATE KEY UPDATE、SQLite 用ON CONFLICT DO UPDATE
      • 避免遇到重複的區塊時跳出「主鍵重複」的錯誤。
    4. 多執行緒安全性強化
      • 把任務佇列(Queue)跟資料庫快取(cache)換成執行緒安全的版本(ConcurrentLinkedQueueConcurrentHashMap),
      • 降低在多執行緒環境下資料錯亂或當機的風險。
    5. 清掉 MySQL 一段沒在用的多餘連線
      • set()方法裡原本會開一條資料庫連線但其實根本沒用到,這次移除,減少不必要的連線開銷。
  3. 預設設定調整
    1. 存檔頻率調快
      • data-save-time-tick的預設值從3600改成1200(也就是從每 180 秒存一次,變成每 60 秒存一次),
      • 降低伺服器意外關閉時的資料遺失量。
      • -# 已經有自己的設定檔的使用者不受影響,如果想跟進可以自行修改。
    2. sql-processing-count支援「不限制」

⚠️ 更新 NatureRevive 版本前務必備份資料庫以及地圖檔案。

⚠️ 雖然我們已經盡全力確保領地、重生等插件功能無誤,還請務必在更新前備份地圖檔案。

⚠️ 若需要在 Folia 使用本插件,請使用下方提供的 FastAsyncWorldEdit 版本,所有改動

-# 本次改動未修改到 FastAsyncWorldEdit ,僅因為方便下載所以還是附上 jar

2.2.2|針對 FAWE 再生模式小錯誤修正

06 Jun 08:11

Choose a tag to compare

⚠️ 更新 NatureRevive 版本前務必備份資料庫以及地圖檔案。

⚠️ 雖然我們已經盡全力確保領地、重生等插件功能無誤,還請務必在更新前備份地圖檔案。

⚠️ 若需要在 Folia 使用本插件,請使用下方提供的 FastAsyncWorldEdit 版本,所有改動

-# 本次改動未修改到 FastAsyncWorldEdit ,僅因為方便下載所以還是附上 jar

2.2.1|於 1.21+ 停用 bukkit 再生模式。

04 Jun 00:37

Choose a tag to compare

  • 插件於 1.21 ~ 1.21.11 伺服器啟動時,將停用 bukkit 再生模式,
  • 若檢查到使用 bukkit 再生模式,將自動切換至 fawe 再生模式(config 會強制修改),
  • 並且/nr regenchunk bukkit指令在 1.21+ 將不再作用。
    • 雖然在內部測試中,已有成功使 bukkit 再生模式 在部份情況下能夠運行,
    • 但呈現的效果奇差(需待區塊卸載),因此我放棄了這個方案,
    • 爾後,嘗試以【建立臨時維度】-> 複製區塊至再生世界 的方式,
    • 但每次進行此操作時,都會造成 20 ~ 50 MSPT 的瞬間卡頓,
    • 這在 Folia 下不是問題,但在 Paper 等單執行緒的伺服器中,就會是一陣一陣的全服卡頓,
    • 很顯然也不是一個合適的選項,因此在此版本中,我們將針對 1.21+ 伺服器,停用 bukkit 模式。

⚠️ 更新 NatureRevive 版本前務必備份資料庫以及地圖檔案。

⚠️ 雖然我們已經盡全力確保領地、重生等插件功能無誤,還請務必在更新前備份地圖檔案。

⚠️ 若需要在 Folia 使用本插件,請使用下方提供的 FastAsyncWorldEdit 版本,所有改動

2.2.0|1.21.5 - 1.21.11 支援,還有 Folia 支援。

03 Jun 09:59

Choose a tag to compare

2.2.0

  • 1.21.5 - 1.21.11 支援
  • Folia 支援(要留意!)
    • 已知在 Folia 上使用 FAWE 模式會有再生錯誤,且 Bukkit 模式在 1.21 以上版本無法運作。
    • FAWE 在 async thread 讀 tile entity,而 Folia 的 tile entity 只能從 region thread 讀取。
    • 嘗試過讓插件走 region thread,結果就是執行緒鎖死,因此這條路不通。
    • 修改方式有兩個方向:
      1. FAWE 插件:
        • 讓 FAWE 拿到 null 的時候,會把那個位置當作「沒有 tile entity」跳過,使再生順利進行。
        • 如果你會編譯插件的話,可以參考 此實作
        • 這裡也會附上可以直接使用的 FAWE 版本。
      2. 核心端:
        • 與 FAWE 端相同。
        • 如果你會修改核心的話,可以參考 此實作

⚠️ 更新 NatureRevive 版本前務必備份資料庫以及地圖檔案。

⚠️ 雖然我們已經盡全力確保領地、重生等插件功能無誤,還請務必在更新前備份地圖檔案。

2.1.2 兼容 1.21.4,修復一些問題,並進行了些調整!

02 Mar 15:39
3c5f112

Choose a tag to compare

NatureRevive - 資源再生 2.1.2 更新


  • 兼容 1.17 ~ 1.21.4。
  • CoreProtect 紀錄改回預設開啟。
  • 其餘改動後續補上,沒有 Config 更新,都是些修復錯誤與優化細節。

⚠️ 更新 NatureRevive 版本前務必備份資料庫以及地圖檔案。

⚠️ 雖然我們已經盡全力確保領地、重生等插件功能無誤,還請務必在更新前備份地圖檔案。

2.1.1 部分支援 1.21/1.21.1,修復一些問題,並進行了些調整!

29 Aug 16:17
47e5747

Choose a tag to compare

NatureRevive - 資源再生 2.1.1 更新


🛠️ 修復

  • regeneration-engine設定不再強制要求大小寫。
  • SQLite設定讀取問題已經修復。
  • 區塊標記 將檢查 該區塊是否有領地
    • 原先僅判定事件觸發的方塊是否在領地內
  • /nr reload指令將會重新載入所有依賴項目。

🖥️ API

  • __日誌系統__全面使用Adventure API提供的Component
  • 所有定期執行的任務都被歸類,並模塊化,在未來開發者可以透過NatureRevive API注冊定期執行事件。

🔔 新功能

  • 部分支援1.211.21.1版本。
    • 需使用 此專用版本 才可正常支援,並且
    • regeneration-engine需設定為fawe
  • 所有指令皆被歸類於/naturerevive/nr子指令。
    • 權限保持不變
  • 暫停/繼續重生的訊息已區分為兩個設定,使用者可以透過config.yml編輯。
    • start-regeneration
    • stop-regeneration

⚠️ 更新 NatureRevive 版本前務必備份資料庫以及地圖檔案。

⚠️ 雖然我們已經盡全力確保領地、重生等插件功能無誤,還請務必在更新前備份地圖檔案。

2.1.0 第一個正式版,多了很多功能,修了很多錯誤!

22 Jul 14:49

Choose a tag to compare

NatureRevive - 資源再生 2.1.0 重大更新


🔔 更新

  • 支援1.17 ~ 1.20.6版本。
  • /regenthischunk 將重生玩家當前所站在的區塊。
    • 默認需要 op 權限。
  • /navmigrate <yaml/sqlite/mysql> 將 NatureRevive 的資料遷移到其他存儲方式。
    • 默認需要 op 權限。
  • 終界船的鞘翅將會重生。
  • (感謝 the_chosen_cat)
  • 現在可以使用 FAWE FastAsyncWorldEdit 所提供的重生功能,以達成平滑地形重生。
  • (感謝 the_chosen_cat)
  • 區塊重生鞘翅重生藏寶箱重生 時,NatureRevive 將觸發 Bukkit 事件,以供開發者界接。

移除

  • /snapshot/revert 之相關代碼與指令已被完全移除。
  • 移除sql-process-tick選項,請改為使用data-save-time-tick

🛠️ 修復

  • Folia支援已初步可用,並與 Paper 版本合併。
  • MySQL儲存功能已修復。
  • loadChunk的一瞬間ChunkHolder 將區塊 unloadChunk,導致getChunk的執行緒安全鎖被永遠鎖死的問題。
    • (感謝 xuancat)

💡 新設置

  • regeneration-engine 可被設定為 bukkit 或者 fawe
    • 設置為 bukkit 時,使用Bukkit API所提供的重生函數,可能會導致地形斷層。
    • 設置為 fawe 時,使用FAWE所提供的重生功能,需使用2.9.2以下的版本。
  • max-elytra-per-day 限制每日重生鞘翅的最大數量,將於本地時間00:00重置。
  • regen-offset-max-duration 設置於重生時,隨機額外添加重生時長,避免玩家於定期於重生時間搜刮物資,
    • 格式同ttl-duration
  • elytra-exceed-limit-offset-duration 當鞘翅重生數量超過設定值時,偏移所設置的時間值。
    • 格式同ttl-duration
  • spawn-timer 設置再生的時間段。
    • 格式為xx:xx-xx:xx(感謝 the_chosen_cat)
  • blacklist-biomes 設置帶有哪些生態域的區塊不被再生。
  • enable-ore-obfuscation 設置是否將礦物隨機分佈,避免玩家定期定點挖礦。

🖥️ API

  • 現在 NatureRevive 提供了一套 API,以供外部開發者與 NatureRevive 程序界接。
    • IIntegrationManager 負責處理 領地保護方塊紀錄重生 等功能的整合。
    • IAPIMain 則是插件本體的介面,可由此獲取其他類別。
  • 目前開發者可以自行整合其他 領地保護方塊紀錄重生引擎 等功能,
    在未來,NatureRevive 將會提供更多接口,如 礦物置換 等,敬請期待。

⚙️ 其他更動

  • regeneration-strategy 預設設置變更為 passive
  • coreprotect-logging-enable 預設設置變更為 false
  • safer-ore-obfuscation 預設設置變更為 false
  • 設定檔中有關重生的數值已經變動,以更好的應對性能問題。
  • (感謝 the_chosen_cat)

ⓘ 更新 NatureRevive 版本前務必備份資料庫以及地圖檔案。

⚠️ 雖然我們已經盡全力確保領地、重生等插件功能無誤,還請務必在更新前備份地圖檔案。