Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| c4cf85160e | |||
| 49e92a5c41 |
@@ -15,7 +15,7 @@
|
||||
|
||||

|
||||
|
||||
[English](./README_EN.md) | **中文**
|
||||
[English](./README_EN.md) | **中文(简体)** | [中文(繁體)](./README_ZH_TW.md)
|
||||
</div>
|
||||
|
||||
---
|
||||
|
||||
+1
-1
@@ -15,7 +15,7 @@
|
||||
|
||||

|
||||
|
||||
**English** | [中文](./README.md)
|
||||
**English** | [中文(简体)](./README.md) | [中文(繁體)](./README_ZH_TW.md)
|
||||
</div>
|
||||
|
||||
---
|
||||
|
||||
+139
@@ -0,0 +1,139 @@
|
||||
<div align="center">
|
||||
<img src="./public/image/lophine/lophine3.png" alt="Lophine Logo" width="300">
|
||||
|
||||
# Lophine
|
||||
|
||||
*Lophine 是一個基於 Folia 的 fork,具備許多好用的最佳化與可設定的原版特性,目標是在 Folia 上實現更多生電向的內容(完整生電支援請使用 Fabric)*
|
||||
|
||||

|
||||
[](LICENSE.md)
|
||||
[](https://github.com/LophineLabs/Lophine/issues)
|
||||
|
||||

|
||||

|
||||

|
||||
|
||||

|
||||
|
||||
[English](./README_EN.md) | [中文(簡體)](./README.md) | **中文(繁體)**
|
||||
</div>
|
||||
|
||||
---
|
||||
|
||||
## ✨ 核心特性
|
||||
|
||||
- 🔧 **可設定的原版特性** - 彈性調整遊戲機制,以符合不同伺服器的需求
|
||||
- 📊 **Tpsbar 支援** - 即時顯示伺服器 TPS 狀態
|
||||
- 🐛 **Folia Bug 修復** - 針對 Folia 已知問題的專項修復
|
||||
- 💾 **多種存檔格式支援** - 支援 linear 與 b_linear(linear 重新實作)存檔格式
|
||||
- 🔬 **生電功能強化** - 在 Folia 上實現更多生電內容(完整生電請使用 Fabric)
|
||||
- 🛠️ **更多實用功能** - 持續新增有用的伺服器功能
|
||||
|
||||
### 額外啟動參數
|
||||
|
||||
- morninggloryclip.useMojangSource 強制伺服器端使用 Mojang 官方來源下載檔案
|
||||
- morninggloryclip.enable.mixin 為伺服器插件啟用 mixin 支援
|
||||
|
||||
## 📥 下載
|
||||
|
||||
### 穩定版本
|
||||
所有正式發布版本都可以在 [Releases](https://github.com/LophineLabs/Lophine/releases) 頁面找到。
|
||||
|
||||
### 開發版本
|
||||
如果你想搶先體驗最新功能,可以照下面的步驟自行建置。
|
||||
|
||||
### 建置步驟
|
||||
|
||||
```bash
|
||||
# Clone 這個專案
|
||||
git clone https://github.com/LophineLabs/Lophine.git
|
||||
cd Lophine
|
||||
|
||||
# 套用 patch 並建置 Paperclip JAR
|
||||
./gradlew applyAllPatches && ./gradlew createPaperclipJar
|
||||
```
|
||||
|
||||
建置完成後,你可以在 `lophine-server/build/libs` 目錄中找到產生的 JAR 檔案。
|
||||
|
||||
## 🔌 API 使用
|
||||
|
||||
### Gradle 設定
|
||||
|
||||
```kotlin
|
||||
repositories {
|
||||
maven {
|
||||
url = "https://repo.bacteriawa.com/repository/maven-public/"
|
||||
}
|
||||
}
|
||||
|
||||
dependencies {
|
||||
compileOnly("fun.bm.lophine:lophine-api:26.2.build.+")
|
||||
}
|
||||
|
||||
java {
|
||||
toolchain.languageVersion.set(JavaLanguageVersion.of(25))
|
||||
}
|
||||
```
|
||||
|
||||
### Maven 設定
|
||||
|
||||
```xml
|
||||
<repositories>
|
||||
<repository>
|
||||
<id>repository</id>
|
||||
<url>https://repo.bacteriawa.com/repository/maven-public/</url>
|
||||
</repository>
|
||||
</repositories>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>fun.bm.lophine</groupId>
|
||||
<artifactId>lophine-api</artifactId>
|
||||
<version>[26.2.build,)</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
```
|
||||
|
||||
## 💬 社群與支援
|
||||
|
||||
> 如果你對這個專案有興趣,或有任何問題,歡迎隨時來問我們。
|
||||
|
||||
### 加入我們的社群
|
||||
|
||||
- **QQ 群**: [1020403749](https://qm.qq.com/cgi-bin/qm/qr?k=y_MA9UaN7PM9e9J1LIs9Eea3LK8C0h6J&jump_from=webapi&authKey=ap5f8MlbeezXYtnmpnT5ZOFljDuOyV6OAb2PIcViQ+Ilr60Ycq63FDDTsJOZDYtj)
|
||||
- **Discord**: [點我加入](https://discord.gg/UXSgPZczcy)
|
||||
|
||||
### 取得協助
|
||||
|
||||
- 📋 [提交 Issue](https://github.com/LophineLabs/Lophine/issues)
|
||||
- 💬 [GitHub Discussions](https://github.com/LophineLabs/Lophine/discussions)
|
||||
- 📖 [專案文件](./docs/)
|
||||
|
||||
## 🐛 問題回報
|
||||
|
||||
當你遇到任何問題時,歡迎來問我們,我們會盡力協助解決。請記得:
|
||||
|
||||
- 📝 **清楚描述問題** - 詳細說明問題的具體狀況
|
||||
- 📋 **提供完整記錄檔** - 附上錯誤記錄與相關設定資訊
|
||||
- 🔍 **環境資訊** - 說明伺服器版本、插件清單等環境細節
|
||||
- 🔄 **重現步驟** - 如果可以,請提供重現問題的具體步驟
|
||||
|
||||
## 🤝 貢獻程式碼
|
||||
|
||||
我們歡迎社群貢獻!詳細的貢獻指南請參考:
|
||||
|
||||
- 📖 [貢獻指南(English)](./docs/CONTRIBUTING_EN.md)
|
||||
- 📖 [貢獻指南(簡體中文)](./docs/CONTRIBUTING.md)
|
||||
- 📖 [貢獻指南(繁體中文)](./docs/CONTRIBUTING_ZH_TW.md)
|
||||
- 📖 [貢獻指南(日本語)](./docs/CONTRIBUTING_JP.md)
|
||||
|
||||
## 📊 專案統計
|
||||
|
||||
### BStats 資料
|
||||
|
||||

|
||||
|
||||
## ⭐ 給我們一個 Star 吧!
|
||||
|
||||
> 你給的每一個免費 ⭐Star,都是我們前進的動力。
|
||||
@@ -1,7 +1,7 @@
|
||||
为Lophine贡献代码
|
||||
===============
|
||||
|
||||
[English](./CONTRIBUTING_EN.md) | **中文**
|
||||
[English](./CONTRIBUTING_EN.md) | **中文(简体)** | [中文(繁體)](./CONTRIBUTING_ZH_TW.md) | [日本語](./CONTRIBUTING_JP.md)
|
||||
|
||||
我们很开心您想为我们的项目做出贡献!一般来说,我们对PR的审核是十分宽松的;
|
||||
但是如果您可以遵守下列的规则,我们可以更快地完成审核。
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
Contributing to Lophine
|
||||
=======================
|
||||
|
||||
**English** | [中文](./CONTRIBUTING.md)
|
||||
**English** | [中文(简体)](./CONTRIBUTING.md) | [中文(繁體)](./CONTRIBUTING_ZH_TW.md) | [日本語](./CONTRIBUTING_JP.md)
|
||||
|
||||
We're glad that you want to contribute to our project!
|
||||
In general, our review of pull requests is very lenient.
|
||||
|
||||
@@ -0,0 +1,100 @@
|
||||
Lophine への貢献
|
||||
===============
|
||||
|
||||
[English](./CONTRIBUTING_EN.md) | [中文(簡體)](./CONTRIBUTING.md) | [中文(繁體)](./CONTRIBUTING_ZH_TW.md) | **日本語**
|
||||
|
||||
Lophine プロジェクトに貢献していただき、ありがとうございます!一般的に、PR(プルリクエスト)のレビュー基準は比較的緩やかです。
|
||||
以下のルールに従っていただければ、よりスムーズにレビューを進めることができます。
|
||||
|
||||
## 個人アカウントでフォークしてください
|
||||
|
||||
定期的に既存の PR をマージしています。軽微な問題であれば、こちらで直接修正したうえでマージする場合があります。
|
||||
|
||||
しかし、組織(Organization)アカウントでフォークしたリポジトリから作成された PR の場合、直接変更を加えることができないため、一度クローズしてから手動で再マージする必要が生じます。
|
||||
|
||||
そのため、**組織アカウントを使用してこのプロジェクトをフォークしないでください**。
|
||||
|
||||
組織アカウントの PR に直接変更を加えられない理由については、[こちらの Issue](https://github.com/isaacs/github/issues/1681) をご参照ください。
|
||||
|
||||
## 開発環境
|
||||
|
||||
コードを書き始める前に、以下の開発ツールと環境を準備する必要があります。
|
||||
|
||||
- `git`
|
||||
- `JDK 25` またはそれ以降のバージョン
|
||||
|
||||
注意: 作業を開始する前に、OS および Git で長いパス(Long Path)のサポートを有効にしてください。一部のプラットフォームの設定手順は以下をご参照ください。
|
||||
|
||||
[`Windows`](https://learn.microsoft.com/windows/win32/fileio/maximum-file-path-limitation)
|
||||
[`Git for Windows`](https://gitforwindows.org/faq.html#i-get-errors-trying-to-check-out-files-with-long-path-names)
|
||||
|
||||
## パッチ(Patch)システムについて
|
||||
|
||||
Lophine は Folia と同じパッチシステムを採用しており、修正箇所に応じて以下の 2 つのディレクトリに分かれています。
|
||||
|
||||
- `lophine-api` - `Folia-API` / `Paper-API` / `Spigot-API` / `Bukkit-API` をベースにした修正。
|
||||
- `lophine-server` - Minecraft のバニラサーバーの既存ロジックに対する修正。
|
||||
|
||||
このパッチシステムは Git をベースに動作します。Git の基本操作についてはこちらをご覧ください:<https://git-scm.com/docs/gittutorial>
|
||||
|
||||
メインのリポジトリをフォークしたら、以下の手順に従って操作してください:
|
||||
|
||||
1. フォークしたリポジトリをローカルにクローンします。
|
||||
2. お使いの IDE またはターミナルで Gradle の `applyAllPatches` タスクを実行します。ターミナルで行う場合は、直接 `./gradlew applyAllPatches` を実行できます。
|
||||
3. 実行が完了すると、リポジトリのルートディレクトリに `lophine-api` と `lophine-server`、`folia-api` と `folia-server`、`paper-api` と `paper-server` の各ディレクトリが生成されます。
|
||||
4. リポジトリのルートディレクトリ下にある対応する `*-api` と `*-server` フォルダに移動し、そこで修正を行います。
|
||||
|
||||
上記各フォルダの簡単な説明は以下の通りです。より詳細な説明は[こちら](https://github.com/Toffikk/paperweight-examples/blob/18241979c88068d5b061d95ad69c98ecb201c246/README.md)をご参照ください:
|
||||
|
||||
1. API 部分
|
||||
|
||||
- `lophine-api`:新規 API の追加や変更はここで行ってください。
|
||||
- `folia-api`:Folia API に対する修正はここで行ってください。
|
||||
- `paper-api`:Paper API / Spigot API / Bukkit API に対する修正はここで行ってください。
|
||||
|
||||
2. Server 部分
|
||||
|
||||
- `lophine-server`:Minecraft のバニラサーバーに対する修正、および新規作成したファイルはすべてこのフォルダに配置してください。
|
||||
- `folia-server`:Folia Server に対する修正はここで行ってください。
|
||||
- `paper-server`:Paper サーバーのロジックに基づく修正はここで行ってください。
|
||||
|
||||
なお、リポジトリのルートディレクトリにある `*-api` と `*-server` は通常の Git リポジトリではありません:
|
||||
|
||||
- パッチを適用する前は、ベース(Base)は未修正のソースコードを指しています。
|
||||
- ベース以降のすべてのコミットが、1 つのパッチとして扱われます。
|
||||
- Folia の最後のコミット以降に追加されたコミットのみが、Lophine のパッチとして扱われます。
|
||||
|
||||
## 新規パッチの追加
|
||||
|
||||
新しいパッチを追加するのは非常に簡単です。以下の手順に従ってください:
|
||||
|
||||
1. `*-api` と `*-server` 内でコードを変更します。
|
||||
2. Git を使用して変更をステージングエリアに追加します(例:`git add .`。新しく作成したファイルを同時に追加しないでください)。
|
||||
3. `git commit -m <コミットメッセージ>` を実行してコミットします。
|
||||
4. Gradle タスク `fixupPaperApiFilePatches` を実行し、新しく作成されたファイルに対応するパッチファイルを生成します(注意:実行が完了する前にコミットしないでください)。
|
||||
5. Gradle タスク `rebuildAllServerPatches` を実行し、コミットをパッチに変換します。
|
||||
6. 生成されたパッチファイルを Git にコミットし、プッシュします。
|
||||
|
||||
上記の手順が完了したら、これらのパッチファイルを元に PR を作成して提出できます。
|
||||
|
||||
## パッチの修正
|
||||
|
||||
既存のパッチを修正する場合は、以下の手順に従ってください:
|
||||
|
||||
1. HEAD で直接修正を行います。
|
||||
2. `git commit -a --fixup <hash>` を実行して、fixup コミットを作成します(Lophine で新しく作成したファイルの変更を一緒にコミットしないでください)。
|
||||
- コミットメッセージも同時に変更したい場合は、`--fixup` の代わりに `--squash` を使用してください。
|
||||
3. `git rebase -i --autosquash base` を実行して、fixup コミットを自動的にまとめます。エディタが開いたら、`:q` と入力して終了します。
|
||||
4. Gradle タスク `fixupPaperApiFilePatches` を実行し、Lophine で新しく作成したファイルのパッチを再生成します(注意:実行が完了する前にコミットしないでください)。
|
||||
5. Gradle タスク `rebuildAllServerPatches` を実行し、修正を既存のパッチに反映させます。
|
||||
6. 修正したパッチを再度プッシュし、PR を更新します。
|
||||
|
||||
## 設定項目に対するローカライズされたコメントサポートの提供
|
||||
|
||||
1. `lophine-server/src/main/resources/assets/lophine/lang` ディレクトリ下に、対応する言語のファイルを作成または修正し、各言語に対応したコメントを追加します。
|
||||
- ファイル名は <https://minecraft.wiki/w/Language> ページに記載されている言語コード(例:`en_us`、`zh_cn`、`zh_hk`、`zh_tw`、`ja_jp` など)に従って命名してください。ファイル形式は `json` です。
|
||||
2. Gradle タスク `sortLangKeys` を実行し、修正した言語ファイルのキーの内容を並べ替えます。
|
||||
3. `git commit -m <コミットメッセージ>` を実行してコミットします。
|
||||
4. 修正したファイルをプッシュします。
|
||||
|
||||
上記の手順が完了したら、修正した内容を元に PR を作成して提出できます。
|
||||
@@ -0,0 +1,100 @@
|
||||
為 Lophine 貢獻程式碼
|
||||
===============
|
||||
|
||||
[English](./CONTRIBUTING_EN.md) | [中文(簡體)](./CONTRIBUTING.md) | **中文(繁體)** | [日本語](./CONTRIBUTING_JP.md)
|
||||
|
||||
很高興你願意為這個專案貢獻!一般來說,我們對 PR 的審核標準相當寬鬆;
|
||||
如果你可以照著下面的規則來,我們就能更快完成審核。
|
||||
|
||||
## 請使用個人帳號進行 Fork
|
||||
|
||||
我們會定期嘗試合併現有的 PR,如果內容有一些小問題,我們會直接幫你修改後合併。
|
||||
|
||||
但如果你的 PR 是用組織(organization)帳號 fork 出來的,我們就沒辦法直接修改你的 PR,只能先關閉、再手動合併一次。
|
||||
|
||||
所以,請不要用組織帳號來 fork 這個專案!
|
||||
|
||||
你可以參考[這個 Issue](https://github.com/isaacs/github/issues/1681),了解為什麼我們沒辦法直接修改組織帳號的 PR。
|
||||
|
||||
## 開發環境
|
||||
|
||||
在開始寫程式之前,你需要先準備好以下開發工具與環境:
|
||||
|
||||
- `git`
|
||||
- `JDK 25` 或更新版本
|
||||
|
||||
特別提醒:動手之前,請先在你的作業系統與 Git 裡啟用長路徑(long path)支援,以下是部分平台的設定說明。
|
||||
|
||||
[`Windows`](https://learn.microsoft.com/windows/win32/fileio/maximum-file-path-limitation)
|
||||
[`Git for Windows`](https://gitforwindows.org/faq.html#i-get-errors-trying-to-check-out-files-with-long-path-names)
|
||||
|
||||
## 認識 Patch(補丁)系統
|
||||
|
||||
Lophine 沿用了和 Folia 相同的 patch 系統,並依照修改的部分分成了兩個目錄:
|
||||
|
||||
- `lophine-api` - 基於 `Folia-API` / `Paper-API` / `Spigot-API` / `Bukkit-API` 所做出的修改。
|
||||
- `lophine-server` - 針對 Minecraft 原版伺服器既有邏輯所做的修改。
|
||||
|
||||
這套 patch 系統是以 git 為基礎運作的,你可以在這裡了解 git 的基本操作:<https://git-scm.com/docs/gittutorial>
|
||||
|
||||
如果你已經 fork 了主要的 repository,接下來請照以下步驟操作:
|
||||
|
||||
1. 把你 fork 出來的 repository clone 到本機;
|
||||
2. 在你的 IDE 或終端機(terminal)裡執行 Gradle 的 `applyAllPatches` 任務;如果是在終端機裡,可以直接執行 `./gradlew applyAllPatches`;
|
||||
3. 執行完成後,repository 的根目錄下應該會出現以下幾組目錄: `lophine-api` 與 `lophine-server`、`folia-api` 與 `folia-server` 以及 `paper-api` 與 `paper-server`(以下統稱為 `*-api` 與 `*-server`);
|
||||
4. 進入 repository 根目錄下對應的 `*-api` 與 `*-server` 資料夾,在裡面進行修改。
|
||||
|
||||
以下是對上述各個資料夾的簡單說明,更詳細的說明可以參考[這裡](https://github.com/Toffikk/paperweight-examples/blob/18241979c88068d5b061d95ad69c98ecb201c246/README.md):
|
||||
|
||||
1. API 部分
|
||||
|
||||
- `lophine-api`:新增 API 的修改請放在這裡
|
||||
- `folia-api`:針對 Folia API 的修改請放在這個資料夾
|
||||
- `paper-api`:對於 Paper API / Spigot API / Bukkit API 的修改請放在這個資料夾
|
||||
|
||||
2. Server 部分
|
||||
|
||||
- `lophine-server`:針對 Minecraft 原版伺服器的修改、以及新增的檔案,都請放在這個資料夾
|
||||
- `folia-server`:針對 folia-server 的修改請放在這個資料夾
|
||||
- `paper-server`:根據 Paper 伺服器邏輯的修改請放在這個資料夾
|
||||
|
||||
順帶一提,repository 根目錄下的 `*-api` 與 `*-server` 並不是一般的 git repository:
|
||||
|
||||
- 在套用 patch 之前,base(基準點)指向的是未經修改的原始程式碼;
|
||||
- base 之後的每一個 commit,都會被視為一個 patch;
|
||||
- 只有在 Folia 最後一個 commit 之後的 commit,才會被視為是 Lophine 的 patch。
|
||||
|
||||
## 新增 Patch
|
||||
|
||||
依照以下步驟新增一個 patch 非常簡單:
|
||||
|
||||
1. 在 `*-api` 與 `*-server` 裡進行修改;
|
||||
2. 用 git 把你的修改加入暫存區,例如執行 `git add .`(請不要把新建立的檔案一併加入);
|
||||
3. 執行 `git commit -m <提交訊息>` 進行 commit;
|
||||
4. 執行 Gradle 任務 `fixupPaperApiFilePatches`,用於新建立的檔案產生對應的 patch 檔(注意:執行完之前先不要 commit);
|
||||
5. 執行 Gradle 任務 `rebuildAllServerPatches`,用於把你的 commit 轉換成一個 patch;
|
||||
6. 把產生出來的 patch 檔 push 上去。
|
||||
|
||||
完成以上步驟後,你就可以拿這些 patch 檔開 PR 提交了。
|
||||
|
||||
## 修改 Patch
|
||||
|
||||
你可以用以下方法來修改一個既有 patch 的內容:
|
||||
|
||||
1. 直接在 HEAD 上進行修改;
|
||||
2. 執行 `git commit -a --fixup <hash>` ,做一個 fixup commit(請不要把 Lophine 新建立的檔案的修改一併 commit 進去);
|
||||
- 如果你想順便修改 commit 訊息,可以用 `--squash` 取代 `--fixup`。
|
||||
3. 執行 `git rebase -i --autosquash base` ,進行自動 rebase,接著只要輸入 `:q` 關掉確認頁面即可;
|
||||
4. 執行 Gradle 任務 `fixupPaperApiFilePatches`,用於重新產生 Lophine 新建立檔案的 patch(注意:執行完之前先不要 commit);
|
||||
5. 執行 Gradle 任務 `rebuildAllServerPatches`,把修改套用到既有的 patch 上;
|
||||
6. 把修改後的 patch 重新 push 回去,再開一次 PR。
|
||||
|
||||
## 為設定項目提供本地化的注解支援
|
||||
|
||||
1. 在 `lophine-server/src/main/resources/assets/lophine/lang` 目錄下新增或修改對應語言的檔案,加入本地化的注解;
|
||||
- 檔名請依照 <https://minecraft.wiki/w/Language> 頁面上列出的語言代碼來命名,例如 `en_us`、`zh_cn`、`zh_hk`、`zh_tw`,檔案格式為 `json`;
|
||||
2. 執行 Gradle 任務 `sortLangKeys`,把你修改的語言檔內容重新排序;
|
||||
3. 執行 `git commit -m <提交訊息>` 進行 commit;
|
||||
4. 把你修改的檔案 push 上去。
|
||||
|
||||
完成以上步驟後,你就可以拿修改後的內容開 PR 提交了。
|
||||
@@ -9,10 +9,10 @@ Origin patch link: https://github.com/LeavesMC/Leaves/blob/master/leaves-server/
|
||||
Origin license: https://github.com/LeavesMC/Leaves/blob/master/LICENSE.md
|
||||
|
||||
diff --git a/net/minecraft/world/level/block/entity/HopperBlockEntity.java b/net/minecraft/world/level/block/entity/HopperBlockEntity.java
|
||||
index a858cb658af70f07614fa1f4d9e8a3435d5c161f..4c9d0bcd8820b250b51c06fff4531021ab57d408 100644
|
||||
index a858cb658af70f07614fa1f4d9e8a3435d5c161f..95f0b3276137cb9d1fc296e97cc25a08a5200c95 100644
|
||||
--- a/net/minecraft/world/level/block/entity/HopperBlockEntity.java
|
||||
+++ b/net/minecraft/world/level/block/entity/HopperBlockEntity.java
|
||||
@@ -281,36 +281,55 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen
|
||||
@@ -281,36 +281,67 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen
|
||||
ItemStack movedItem = origItemStack;
|
||||
final int originalItemCount = origItemStack.getCount();
|
||||
final int movedItemCount = Math.min(level.spigotConfig.hopperAmount, originalItemCount);
|
||||
@@ -32,21 +32,19 @@ index a858cb658af70f07614fa1f4d9e8a3435d5c161f..4c9d0bcd8820b250b51c06fff4531021
|
||||
+ movedItem = callPullMoveEvent(hopper, container, movedItem);
|
||||
+ if (movedItem == null) { // cancelled
|
||||
+ origItemStack.setCount(originalItemCount);
|
||||
+ container.setChanged(); // keep parity with vanilla: source inv always marked changed
|
||||
+ return true;
|
||||
+ }
|
||||
+ }
|
||||
+ movedItem = origItemStack.copy();
|
||||
+ final ItemStack remainingItem = addItem(container, hopper, container.removeItem(i, movedItemCount), null);
|
||||
+ final int toRemove = Math.min(movedItem.getCount(), container.getItem(i).getCount());
|
||||
+ final ItemStack remainingItem = addItem(container, hopper, container.removeItem(i, toRemove), null);
|
||||
+ final int remainingItemCount = remainingItem.getCount();
|
||||
+ if (remainingItem.isEmpty()) {
|
||||
+ container.setChanged();
|
||||
return true;
|
||||
}
|
||||
- }
|
||||
+ container.setItem(i, movedItem);
|
||||
+ } else {
|
||||
+ container.setChanged(); // original logic always marks source inv as changed even if no move happens.
|
||||
+ movedItem.setCount(movedItemCount);
|
||||
|
||||
-
|
||||
- final ItemStack remainingItem = addItem(container, hopper, movedItem, null);
|
||||
- final int remainingItemCount = remainingItem.getCount();
|
||||
- if (remainingItemCount != movedItemCount) {
|
||||
@@ -54,6 +52,24 @@ index a858cb658af70f07614fa1f4d9e8a3435d5c161f..4c9d0bcd8820b250b51c06fff4531021
|
||||
- origItemStack.setCount(originalItemCount);
|
||||
- if (!origItemStack.isEmpty()) {
|
||||
- origItemStack.setCount(originalItemCount - movedItemCount + remainingItemCount);
|
||||
+ if (remainingItemCount != toRemove) {
|
||||
+ IGNORE_TILE_UPDATES.set(true); // Folia - region threading
|
||||
+ container.setItem(i, remainingItem);
|
||||
+ IGNORE_TILE_UPDATES.set(false); // Folia - region threading
|
||||
+ container.setChanged();
|
||||
+ return true;
|
||||
}
|
||||
-
|
||||
IGNORE_TILE_UPDATES.set(true); // Folia - region threading
|
||||
- container.setItem(i, origItemStack);
|
||||
+ container.setItem(i, remainingItem);
|
||||
IGNORE_TILE_UPDATES.set(false); // Folia - region threading
|
||||
container.setChanged();
|
||||
- return true;
|
||||
+ } else {
|
||||
+ container.setChanged(); // original logic always marks source inv as changed even if no move happens.
|
||||
+ movedItem.setCount(movedItemCount);
|
||||
+
|
||||
+ if (!worldData.skipPullModeEventFire) {
|
||||
+ movedItem = callPullMoveEvent(hopper, container, movedItem);
|
||||
+ if (movedItem == null) { // cancelled
|
||||
@@ -63,13 +79,8 @@ index a858cb658af70f07614fa1f4d9e8a3435d5c161f..4c9d0bcd8820b250b51c06fff4531021
|
||||
+ // site for IMIE did not exhibit the same behavior
|
||||
+ return true;
|
||||
+ }
|
||||
}
|
||||
|
||||
- IGNORE_TILE_UPDATES.set(true); // Folia - region threading
|
||||
- container.setItem(i, origItemStack);
|
||||
- IGNORE_TILE_UPDATES.set(false); // Folia - region threading
|
||||
- container.setChanged();
|
||||
- return true;
|
||||
+ }
|
||||
+
|
||||
+ final ItemStack remainingItem = addItem(container, hopper, movedItem, null);
|
||||
+ final int remainingItemCount = remainingItem.getCount();
|
||||
+ if (remainingItemCount != movedItemCount) {
|
||||
|
||||
+9
-9
@@ -1573,7 +1573,7 @@ index 6109d8da984b398bb1eb6cd6ab9a55f0511a615c..1109013d0d321f96a11fc4eb437aecaf
|
||||
+ // Leaves end - Lithium Sleeping Block Entity
|
||||
}
|
||||
diff --git a/net/minecraft/world/level/block/entity/HopperBlockEntity.java b/net/minecraft/world/level/block/entity/HopperBlockEntity.java
|
||||
index 4c9d0bcd8820b250b51c06fff4531021ab57d408..18e6dd47b0525531bae56e0ab3c3846185470ce4 100644
|
||||
index 95f0b3276137cb9d1fc296e97cc25a08a5200c95..019a320abd6d671e7df99ed9628ad021142be0f7 100644
|
||||
--- a/net/minecraft/world/level/block/entity/HopperBlockEntity.java
|
||||
+++ b/net/minecraft/world/level/block/entity/HopperBlockEntity.java
|
||||
@@ -27,8 +27,29 @@ import net.minecraft.world.level.storage.ValueInput;
|
||||
@@ -1660,7 +1660,7 @@ index 4c9d0bcd8820b250b51c06fff4531021ab57d408..18e6dd47b0525531bae56e0ab3c38461
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -406,6 +447,7 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen
|
||||
@@ -418,6 +459,7 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen
|
||||
private static void applyCooldown(final Hopper hopper) {
|
||||
if (hopper instanceof HopperBlockEntity blockEntity && blockEntity.getLevel() != null) {
|
||||
blockEntity.setCooldown(blockEntity.getLevel().spigotConfig.hopperTransfer);
|
||||
@@ -1668,7 +1668,7 @@ index 4c9d0bcd8820b250b51c06fff4531021ab57d408..18e6dd47b0525531bae56e0ab3c38461
|
||||
}
|
||||
}
|
||||
|
||||
@@ -449,12 +491,20 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen
|
||||
@@ -461,12 +503,20 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen
|
||||
// Paper end - Perf: Optimize Hoppers
|
||||
|
||||
private static boolean ejectItems(final Level level, final BlockPos blockPos, final HopperBlockEntity self) {
|
||||
@@ -1690,7 +1690,7 @@ index 4c9d0bcd8820b250b51c06fff4531021ab57d408..18e6dd47b0525531bae56e0ab3c38461
|
||||
if (isFullContainer(container, direction)) {
|
||||
return false;
|
||||
}
|
||||
@@ -510,13 +560,21 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen
|
||||
@@ -522,13 +572,21 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen
|
||||
io.papermc.paper.threadedregions.RegionizedWorldData worldData = io.papermc.paper.threadedregions.TickRegionScheduler.getCurrentRegionizedWorldData(); // Folia - region threading
|
||||
BlockPos blockPos = BlockPos.containing(hopper.getLevelX(), hopper.getLevelY() + 1.0, hopper.getLevelZ());
|
||||
BlockState blockState = level.getBlockState(blockPos);
|
||||
@@ -1716,7 +1716,7 @@ index 4c9d0bcd8820b250b51c06fff4531021ab57d408..18e6dd47b0525531bae56e0ab3c38461
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -527,7 +585,7 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen
|
||||
@@ -539,7 +597,7 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen
|
||||
&& blockState.isCollisionShapeFullBlock(level, blockPos)
|
||||
&& !blockState.is(BlockTags.DOES_NOT_BLOCK_HOPPERS);
|
||||
if (!isBlocked) {
|
||||
@@ -1725,7 +1725,7 @@ index 4c9d0bcd8820b250b51c06fff4531021ab57d408..18e6dd47b0525531bae56e0ab3c38461
|
||||
if (addItem(hopper, entity)) {
|
||||
return true;
|
||||
}
|
||||
@@ -649,7 +707,7 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen
|
||||
@@ -661,7 +719,7 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen
|
||||
|
||||
// CraftBukkit start
|
||||
private static @Nullable Container runHopperInventorySearchEvent(
|
||||
@@ -1734,7 +1734,7 @@ index 4c9d0bcd8820b250b51c06fff4531021ab57d408..18e6dd47b0525531bae56e0ab3c38461
|
||||
org.bukkit.craftbukkit.block.CraftBlock hopper,
|
||||
org.bukkit.craftbukkit.block.CraftBlock searchLocation,
|
||||
org.bukkit.event.inventory.HopperInventorySearchEvent.ContainerType containerType
|
||||
@@ -775,6 +833,19 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen
|
||||
@@ -787,6 +845,19 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen
|
||||
}
|
||||
|
||||
public void setCooldown(final int time) {
|
||||
@@ -1754,7 +1754,7 @@ index 4c9d0bcd8820b250b51c06fff4531021ab57d408..18e6dd47b0525531bae56e0ab3c38461
|
||||
this.cooldownTime = time;
|
||||
}
|
||||
|
||||
@@ -794,6 +865,7 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen
|
||||
@@ -806,6 +877,7 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen
|
||||
@Override
|
||||
protected void setItems(final NonNullList<ItemStack> items) {
|
||||
this.items = items;
|
||||
@@ -1762,7 +1762,7 @@ index 4c9d0bcd8820b250b51c06fff4531021ab57d408..18e6dd47b0525531bae56e0ab3c38461
|
||||
}
|
||||
|
||||
public static void entityInside(final Level level, final BlockPos pos, final BlockState blockState, final Entity entity, final HopperBlockEntity hopper) {
|
||||
@@ -808,4 +880,758 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen
|
||||
@@ -820,4 +892,758 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen
|
||||
protected AbstractContainerMenu createMenu(final int containerId, final Inventory inventory) {
|
||||
return new HopperMenu(containerId, inventory, this);
|
||||
}
|
||||
|
||||
@@ -441,7 +441,7 @@ index b961ec1532937be513e12e5306a34e6cbff24aee..dbf29f7c085831ce0f62942dc4ea7091
|
||||
}
|
||||
|
||||
diff --git a/net/minecraft/world/level/block/entity/HopperBlockEntity.java b/net/minecraft/world/level/block/entity/HopperBlockEntity.java
|
||||
index 18e6dd47b0525531bae56e0ab3c3846185470ce4..7d35b299533640338aeea6e5617942e89269d048 100644
|
||||
index 019a320abd6d671e7df99ed9628ad021142be0f7..f154fbd18c306b284ef0b0dd882b31196633d0ba 100644
|
||||
--- a/net/minecraft/world/level/block/entity/HopperBlockEntity.java
|
||||
+++ b/net/minecraft/world/level/block/entity/HopperBlockEntity.java
|
||||
@@ -155,7 +155,7 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen
|
||||
@@ -453,7 +453,7 @@ index 18e6dd47b0525531bae56e0ab3c3846185470ce4..7d35b299533640338aeea6e5617942e8
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -670,9 +670,9 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen
|
||||
@@ -682,9 +682,9 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen
|
||||
if (current.isEmpty()) {
|
||||
// Spigot start - SPIGOT-6693, SimpleContainer#setItem
|
||||
ItemStack leftover = ItemStack.EMPTY; // Paper - Make hoppers respect inventory max stack size
|
||||
|
||||
@@ -10,7 +10,7 @@ Licensed under: MIT
|
||||
This patch is Powered by fabric-carpet(https://github.com/gnembon/fabric-carpet)
|
||||
|
||||
diff --git a/net/minecraft/world/level/block/entity/HopperBlockEntity.java b/net/minecraft/world/level/block/entity/HopperBlockEntity.java
|
||||
index 7d35b299533640338aeea6e5617942e89269d048..569f96a1b0b8a03b6a70775f4b7f58a66feed939 100644
|
||||
index f154fbd18c306b284ef0b0dd882b31196633d0ba..9f538bfb64b62d4953b435a14174723099f2202b 100644
|
||||
--- a/net/minecraft/world/level/block/entity/HopperBlockEntity.java
|
||||
+++ b/net/minecraft/world/level/block/entity/HopperBlockEntity.java
|
||||
@@ -240,8 +240,30 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen
|
||||
@@ -44,7 +44,7 @@ index 7d35b299533640338aeea6e5617942e89269d048..569f96a1b0b8a03b6a70775f4b7f58a6
|
||||
setChanged(level, pos, state);
|
||||
// Leaves start - Lithium Sleeping Block Entity
|
||||
if (me.earthme.luminol.config.modules.optimizations.LeavesSleepingBlockEntityConfig.enabled
|
||||
@@ -491,6 +513,13 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen
|
||||
@@ -503,6 +525,13 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen
|
||||
// Paper end - Perf: Optimize Hoppers
|
||||
|
||||
private static boolean ejectItems(final Level level, final BlockPos blockPos, final HopperBlockEntity self) {
|
||||
@@ -58,7 +58,7 @@ index 7d35b299533640338aeea6e5617942e89269d048..569f96a1b0b8a03b6a70775f4b7f58a6
|
||||
Container container = me.earthme.luminol.config.modules.optimizations.LeavesSleepingBlockEntityConfig.enabled ? self.getInsertInventory(level) : getAttachedContainer(level, blockPos, self); // Leaves - Lithium Sleeping Block Entity
|
||||
if (container == null) {
|
||||
return false;
|
||||
@@ -512,6 +541,26 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen
|
||||
@@ -524,6 +553,26 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen
|
||||
return hopperPush(level, container, direction, self); // Paper - Perf: Optimize Hoppers
|
||||
}
|
||||
|
||||
@@ -85,7 +85,7 @@ index 7d35b299533640338aeea6e5617942e89269d048..569f96a1b0b8a03b6a70775f4b7f58a6
|
||||
private static int[] getSlots(final Container container, final Direction direction) {
|
||||
if (container instanceof WorldlyContainer worldlyContainer) {
|
||||
return worldlyContainer.getSlotsForFace(direction);
|
||||
@@ -606,6 +655,7 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen
|
||||
@@ -618,6 +667,7 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen
|
||||
}
|
||||
|
||||
public static boolean addItem(final Container container, final ItemEntity entity) {
|
||||
|
||||
@@ -1094,7 +1094,7 @@ index c27fc92d6ff9dd7e07a61513601ef73ff16cf842..e5915893a06e332992c34b8ac5115955
|
||||
+ // Lophine end - Carpet features
|
||||
}
|
||||
diff --git a/net/minecraft/world/level/block/entity/HopperBlockEntity.java b/net/minecraft/world/level/block/entity/HopperBlockEntity.java
|
||||
index 569f96a1b0b8a03b6a70775f4b7f58a66feed939..df57ae93f91daf8daed2fef48b685c72f0615763 100644
|
||||
index 9f538bfb64b62d4953b435a14174723099f2202b..ce4c862ba67af49d06093e59e770a93b9768f3cb 100644
|
||||
--- a/net/minecraft/world/level/block/entity/HopperBlockEntity.java
|
||||
+++ b/net/minecraft/world/level/block/entity/HopperBlockEntity.java
|
||||
@@ -241,7 +241,7 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen
|
||||
@@ -1142,7 +1142,7 @@ index 569f96a1b0b8a03b6a70775f4b7f58a66feed939..df57ae93f91daf8daed2fef48b685c72
|
||||
origItemStack = origItemStack.copy(true);
|
||||
origItemStack.setCount(originalItemCount);
|
||||
if (!origItemStack.isEmpty()) {
|
||||
@@ -655,7 +668,7 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen
|
||||
@@ -667,7 +680,7 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen
|
||||
}
|
||||
|
||||
public static boolean addItem(final Container container, final ItemEntity entity) {
|
||||
|
||||
+1
-1
@@ -165,7 +165,7 @@ index 0bbce88f95c8f96d865f3c58e830e5aa006e48bb..1cf8b71bb636b92df21b2e5027ad3dee
|
||||
}
|
||||
// Paper end - Fix bees aging inside; use exitTickCounter to keep actual bee life
|
||||
diff --git a/net/minecraft/world/level/block/entity/HopperBlockEntity.java b/net/minecraft/world/level/block/entity/HopperBlockEntity.java
|
||||
index df57ae93f91daf8daed2fef48b685c72f0615763..37c15510d182aa6751827c7ec4d151047101faf8 100644
|
||||
index ce4c862ba67af49d06093e59e770a93b9768f3cb..168f7dbead1eb6f9eb6473df3b352faec872cd14 100644
|
||||
--- a/net/minecraft/world/level/block/entity/HopperBlockEntity.java
|
||||
+++ b/net/minecraft/world/level/block/entity/HopperBlockEntity.java
|
||||
@@ -346,7 +346,7 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen
|
||||
|
||||
@@ -0,0 +1,198 @@
|
||||
{
|
||||
"lophine.experiment.command.function_command_enabled.comment": "允許使用 function 指令",
|
||||
"lophine.experiment.command.save_all_command.enabled.comment": "允許使用 save-all 指令",
|
||||
"lophine.experiment.command.save_all_command.log_all_process.comment": "將 save-all 指令的完整過程記錄到主控台",
|
||||
"lophine.experiment.command.save_all_command.save_all_command_timeout.comment": "區塊回報保存逾時前,允許的最大保存秒數。",
|
||||
"lophine.experiment.command.scoreboard_command_enabled.comment": "允許使用 scoreboard 指令",
|
||||
"lophine.experiment.command.trigger_command_enabled.comment": "允許使用 trigger 指令",
|
||||
"lophine.experiment.entity_damage_source_trace.enabled.comment": "允許跨不同區域排程器追蹤傷害來源。",
|
||||
"lophine.experiment.global_entities_counter.version.comment": "DISABLED\nDEFAULT_SYNC:使用同步計數器模組啟用原始版本的全域實體計數器。\nDEFAULT_ASYNC:使用非同步計數器模組啟用原始版本的全域實體計數器。\nPRECISE:使用增量計數方式啟用精確的生物上限計算,以事件驅動的即時更新取代週期性全量掃描。\n\n你需要在 paper-world-defaults.yml 或 paper-world.yml 中將 per-player-mob-spawns 設為 false",
|
||||
"lophine.fixes.update-suppression-crash-fix.enabled.comment": "是否要防止因更新抑制(update suppression)導致的當機?",
|
||||
"lophine.fixes.vanilla-like-experience.enabled.comment": "略過部分 Paper 的安全性與行為變更,還原更接近原版的技術性遊戲體驗。",
|
||||
"lophine.function.container_expansion.barrel_rows.comment": "範圍:1~6",
|
||||
"lophine.function.container_expansion.enderchest_rows.comment": "範圍:1~6",
|
||||
"lophine.function.container_expansion.shulker_box.shulker_stackable_count.comment": "範圍:1~64",
|
||||
"lophine.function.fakeplayer.always-send-data.comment": "一律為假人傳送資料",
|
||||
"lophine.function.fakeplayer.cache-skin.comment": "為假人使用皮膚(外觀)快取",
|
||||
"lophine.function.fakeplayer.enable-locator-bar.comment": "為假人啟用定位列",
|
||||
"lophine.function.fakeplayer.enabled.comment": "啟用假人功能(/bot 指令)",
|
||||
"lophine.function.fakeplayer.limit.comment": "允許的假人數量上限",
|
||||
"lophine.function.fakeplayer.manual-save-and-load.comment": "允許手動儲存與載入假人",
|
||||
"lophine.function.fakeplayer.modify-config.comment": "允許修改假人設定",
|
||||
"lophine.function.fakeplayer.open-action-gui.comment": "允許開啟假人動作 GUI,\n若已啟用「開啟物品欄」GUI,則需要蹲下才能開啟",
|
||||
"lophine.function.fakeplayer.prefix.comment": "假人名稱的前綴",
|
||||
"lophine.function.fakeplayer.regen-amount.comment": "假人的生命恢復量",
|
||||
"lophine.function.fakeplayer.simulation-distance.comment": "假人的模擬距離(-1 表示使用預設值)",
|
||||
"lophine.function.fakeplayer.skip-sleep-check.comment": "跳過假人的睡眠檢查",
|
||||
"lophine.function.fakeplayer.spawn-phantom.comment": "允許為假人生成夜魅",
|
||||
"lophine.function.fakeplayer.suffix.comment": "假人名稱的後綴",
|
||||
"lophine.function.fakeplayer.unable-fakeplayer-names.comment": "無法用於假人的名稱清單",
|
||||
"lophine.function.fakeplayer.use-action.comment": "允許假人執行動作",
|
||||
"lophine.function.language.allow_auto_reset_comments.comment": "如果安裝包中包含對應語言的設定檔註解檔案,\n就會自動使用其內容重新載入設定檔的註解。\n\n警告:這會刪除原有的註解!",
|
||||
"lophine.function.language.full_blocking_load.comment": "是否允許在載入本地化語言時封鎖伺服器載入流程。\n如果你希望終端機只顯示本地化語言的內容,\n就需要啟用此項。\n\n警告:這可能會拖慢啟動速度!",
|
||||
"lophine.function.language.lang.comment": "請使用 https://zh.minecraft.wiki/w/Language 頁面中列出的語言代碼\n格式範例:en_us zh_cn zh_hk zh_tw\n注意:如果你想修改 carpet 系統的語言,\n請在 carpet 設定檔中修改。",
|
||||
"lophine.function.protocol.alternative_block_placement.enabled.comment": "指定精準放置協定的類型\nNONE 停用精準放置協定\nCARPET 精準放置協定第 2 版\nCARPET_FIX 加強版精準放置協定第 2 版(需要在客戶端安裝 MasaGadget)\nLITEMATICA 精準放置協定第 3 版",
|
||||
"lophine.function.protocol.appleskin.enabled.comment": "啟用 AppleSkin 協定支援",
|
||||
"lophine.function.protocol.appleskin.sync-tick-interval.comment": "設定 AppleSkin 的同步頻率(單位:遊戲刻)",
|
||||
"lophine.function.protocol.bbor.enabled.comment": "啟用 BBOR 協定支援",
|
||||
"lophine.function.protocol.jade.enabled.comment": "啟用 Jade 協定支援",
|
||||
"lophine.function.protocol.pca.enabled.comment": "啟用 PCA 同步協定支援",
|
||||
"lophine.function.protocol.pca.sync-player-entity.comment": "控制哪些玩家實體可以透過 PCA 同步協定被觀察。\nNOBODY:永遠不同步玩家實體\nBOT:只同步 Lophine 假人\nOPS:同步假人,並允許管理員同步真實玩家\nOPS_AND_SELF:同步假人、管理員,以及玩家自己的實體\nEVERYONE:允許所有玩家實體",
|
||||
"lophine.function.protocol.rei.enabled.comment": "啟用 Roughly Enough Items(REI)協定支援",
|
||||
"lophine.function.protocol.servux.litematics.litematics-print-max-delay-ticks.comment": "列印投影結構(Litematica print)的最大延遲刻數,設為 -1 表示停用",
|
||||
"lophine.function.protocol.syncmatica.enabled.comment": "啟用 Syncmatica 協定支援",
|
||||
"lophine.function.protocol.syncmatica.quota-Limit.comment": "投影檔案的大小上限(位元組)",
|
||||
"lophine.function.protocol.syncmatica.useQuota.comment": "是否限制投影檔案的大小?",
|
||||
"lophine.function.protocol.xaero-map.enabled.comment": "啟用 Xaero 世界地圖協定支援",
|
||||
"lophine.function.redstone.shears_rotate.comment": "允許使用剪刀右鍵旋轉方塊。",
|
||||
"lophine.function.replay-api.cache-photographer-size.comment": "攝影師(Photographer)快取的最大保留數量",
|
||||
"lophine.function.replay-api.cache-photographer-time.comment": "攝影師(Photographer)檔案的快取保留時間(秒)",
|
||||
"lophine.misc.disable-check.disable-op-fly-check.comment": "停用對管理員飛行的檢查",
|
||||
"lophine.misc.disable-check.disable-op-move-check.comment": "停用對管理員移動的檢查",
|
||||
"lophine.misc.item-entity.follow-tick-sequence-merge.comment": "由於 Paper 修改了合併半徑的判定方式,\n當合併半徑較大、且包含大量物品的堆疊卡在非預期的位置時,\n單一物品可能永遠無法到達目的地。\n新增此設定項即為修正這個行為。",
|
||||
"lophine_carpet.carpet.fakeplayer.commandPlayer.comment": "啟用 /player 指令(未重新映射)。\n如果你想啟用 bot 指令,請參閱 Lophine 全域設定。",
|
||||
"lophine_carpet.carpet.fakeplayer.comment": "將 Carpet 假人相容規則對應到 Lophine 假人。\ncommandPlayer 目前是由 Lophine 的 /bot 指令介面提供支援。",
|
||||
"lophine_carpet.carpet.fakeplayer.fakePlayerAutoFish.comment": "讓手持釣竿的假人自動拋竿並收竿。",
|
||||
"lophine_carpet.carpet.fakeplayer.fakePlayerAutoReplaceTool.comment": "切換假人的自動更換工具功能。",
|
||||
"lophine_carpet.carpet.fakeplayer.fakePlayerAutoReplenishment.comment": "切換假人的自動補貨功能。",
|
||||
"lophine_carpet.carpet.fakeplayer.fakePlayerAutoReplenishmentFormShulkerBox.comment": "讓假人補貨時可以從物品欄中的界伏盒(Shulker Box)取出對應物品。",
|
||||
"lophine_carpet.carpet.fakeplayer.fakePlayerDefaultSurvivalMode.comment": "強制新建立的假人以生存模式開始,而不是使用伺服器預設的遊戲模式。",
|
||||
"lophine_carpet.carpet.fakeplayer.fakePlayerInteractLikeClient.comment": "讓假人的實體互動更貼近客戶端的回退(fallback)行為。",
|
||||
"lophine_carpet.carpet.fakeplayer.fakePlayerReloadAction.comment": "在儲存與重新載入之間保留假人排隊中的動作。",
|
||||
"lophine_carpet.carpet.fakeplayer.fakePlayerResident.comment": "讓假人在卸載與重新啟動後依然常駐。",
|
||||
"lophine_carpet.carpet.fakeplayer.fakePlayerTicksLikeRealPlayer.comment": "在網路階段對假人執行 tick,以更貼近真實玩家的時序。",
|
||||
"lophine_carpet.carpet.fakeplayer.openFakePlayerInventory.comment": "允許開啟假人的物品欄。",
|
||||
"lophine_carpet.carpet.general.amsUpdateSuppressionCrashFix.comment": "更新抑制當機防護。",
|
||||
"lophine_carpet.carpet.general.antiSpamDisabled.comment": "停用原版/Spigot 內建、用於限制聊天與創造模式丟棄物品洗版速度的節流機制。",
|
||||
"lophine_carpet.carpet.general.bambooModelNoOffset.comment": "移除竹子與竹筍模型的隨機水平偏移。",
|
||||
"lophine_carpet.carpet.general.betterCraftableBoneBlock.comment": "新增 AMS 的替代骨塊配方,可用 9 個骨頭合成 3 個骨塊。",
|
||||
"lophine_carpet.carpet.general.betterCraftableDispenser.comment": "新增 AMS 使用投擲器(Dropper)合成發射器的替代配方。",
|
||||
"lophine_carpet.carpet.general.blockPlacementIgnoreEntity.comment": "允許創造模式玩家在不檢查實體碰撞的情況下放置方塊。",
|
||||
"lophine_carpet.carpet.general.carpetAlwaysSetDefault.comment": "Lophine 設定載入器的相容旗標;它在預先載入階段就已經把預設值寫入相容設定中。",
|
||||
"lophine_carpet.carpet.general.clientSettingsLostOnRespawnFix.comment": "在重生後重新套用玩家上一次已知的客戶端設定。",
|
||||
"lophine_carpet.carpet.general.commandTick.comment": "啟用 tick 指令支援。",
|
||||
"lophine_carpet.carpet.general.comment": "由現有 Lophine 功能提供支援的 Carpet/AMS/TIS/Org 相容規則。\n這裡只會顯示已經有可用伺服器端實作的規則。",
|
||||
"lophine_carpet.carpet.general.creativeNoClip.comment": "是否啟用創造模式飛行穿牆(no clip)。\n啟用後,創造模式玩家飛行時不會與方塊碰撞。\n這讓他們可以無阻礙地穿過方塊。",
|
||||
"lophine_carpet.carpet.general.creativeNoItemCooldown.comment": "略過對創造模式玩家套用物品冷卻。",
|
||||
"lophine_carpet.carpet.general.creativeOneHitKill.comment": "允許創造模式玩家瞬間擊殺可攻擊、且非創造/旁觀模式的實體。\n蹲下時效果會擴大為小範圍攻擊。",
|
||||
"lophine_carpet.carpet.general.creativeOpenContainerForcibly.comment": "允許創造模式玩家強制開啟被阻擋的箱子、終界箱(Ender Chest)與界伏盒(Shulker Box)。",
|
||||
"lophine_carpet.carpet.general.ctrlQCraftingFix.comment": "相容旗標,對應上游合成結果欄位的 Ctrl+Q 修正,該修正已存在於目前的選單程式碼中。",
|
||||
"lophine_carpet.carpet.general.defaultLoggers.comment": "Carpet 風格的玩家預設 logger 訂閱。\n範例:[\"tps\", \"mob_caps\", \"counter white\"]",
|
||||
"lophine_carpet.carpet.general.disableBlazeFire.comment": "停用烈焰使者火球造成的燃燒。",
|
||||
"lophine_carpet.carpet.general.disableGhastFire.comment": "停用地獄幽靈(Ghast)火球造成的燃燒。",
|
||||
"lophine_carpet.carpet.general.dustTrapdoorReintroduced.comment": "是否要重新引入 1.20 之前的機制:\n開啟狀態地板門上的紅石粉不會連接到相鄰的紅石粉\n1.20.2 之前的機制:紅石粉、紅石中繼器、\n紅石比較器在接收來自下方的狀態更新時,不會檢查附著狀態。",
|
||||
"lophine_carpet.carpet.general.entityInstantDeathRemoval.comment": "移除生物實體死亡後、正常需要等待的 20 遊戲刻(20gt)延遲,改為立即移除。",
|
||||
"lophine_carpet.carpet.general.explosionNoBlockDamage.comment": "讓爆炸只傷害實體,不破壞方塊。",
|
||||
"lophine_carpet.carpet.general.farmlandTrampledDisabled.comment": "防止耕地因實體落地踩踏而變回泥土。",
|
||||
"lophine_carpet.carpet.general.fastRedstoneDust.comment": "讓紅石粉的更新改走 Alternate Current 快速更新後端。",
|
||||
"lophine_carpet.carpet.general.hopperNoItemCost.comment": "在漏斗上方放置羊毛方塊時,將已傳輸出去的物品堆疊恢復回漏斗中。",
|
||||
"lophine_carpet.carpet.general.instantBlockUpdaterReintroduced.comment": "瞬時方塊更新器。",
|
||||
"lophine_carpet.carpet.general.interactionUpdates.comment": "控制玩家互動造成的方塊變化是否會發出正常的方塊更新。\n設為 false 可在方塊使用與破壞時,抑制鄰居更新與形狀更新。",
|
||||
"lophine_carpet.carpet.general.lagFreeSpawning.comment": "在自然生成檢查中,使用輕量碰撞判定與預先準備好的生物生成路徑。",
|
||||
"lophine_carpet.carpet.general.language.comment": "Carpet 的語言設定值。\n注意:此設定目前不會同步更新到 Lophine 全域設定!",
|
||||
"lophine_carpet.carpet.general.microTiming.comment": "相容旗標,對應 Folia/Moonrise 內建的區域效能分析與計時偵測功能。",
|
||||
"lophine_carpet.carpet.general.noCreeperBlockBreaking.comment": "停用苦力怕爆炸破壞方塊。",
|
||||
"lophine_carpet.carpet.general.noGhastBlockBreaking.comment": "停用地獄幽靈(Ghast)火球爆炸破壞方塊。",
|
||||
"lophine_carpet.carpet.general.observerNoDetection.comment": "完全停用偵測器的偵測脈衝。",
|
||||
"lophine_carpet.carpet.general.optimizedDragonRespawn.comment": "啟用優化過的終界龍(Ender Dragon)重生流程。",
|
||||
"lophine_carpet.carpet.general.optimizedFastEntityMovement.comment": "相容旗標,對應恆常啟用的 Moonrise/Paper 快速實體移動碰撞流程。",
|
||||
"lophine_carpet.carpet.general.optimizedHardHitBoxEntityCollision.comment": "相容旗標,對應恆常啟用的 Moonrise/Paper 硬碰撞箱實體碰撞最佳化。",
|
||||
"lophine_carpet.carpet.general.optimizedTNTHighPriority.comment": "相容旗標,對應目前執行環境中已經最佳化過的伺服器爆炸處理路徑。",
|
||||
"lophine_carpet.carpet.general.placementRotationFix.comment": "以玩家身體的朝向來判定放置方向,而不是使用內插後的頭部偏航角(yaw)。",
|
||||
"lophine_carpet.carpet.general.powerfulExpMending.comment": "讓拾取的經驗值修復玩家物品欄中所有具備經驗修補、且已受損的物品,而不只是已裝備的裝備。",
|
||||
"lophine_carpet.carpet.general.preventEndSpikeRespawn.comment": "在終界龍(Ender Dragon)重生時,略過黑曜石尖塔的重新生成。",
|
||||
"lophine_carpet.carpet.general.sensibleEnderman.comment": "限制終界使者(Enderman)只能拾取南瓜與西瓜。",
|
||||
"lophine_carpet.carpet.general.shulkerBoxCCEReintroduced.comment": "使用 ClassCastException 來實現更新抑制。",
|
||||
"lophine_carpet.carpet.general.shulkerGolem.comment": "允許在界伏盒(Shulker Box)上方放置雕刻南瓜,藉此召喚界伏蚌(Shulker)。",
|
||||
"lophine_carpet.carpet.general.simpleInGameCalculator.comment": "將以 `=` 開頭的聊天訊息當作簡易計算機表達式求值,並私訊回覆結果。",
|
||||
"lophine_carpet.carpet.general.syncServerMsptMetricsData.comment": "透過原生 TISCM 協定通道廣播即時的 MSPT 取樣資料。",
|
||||
"lophine_carpet.carpet.general.tickCommandPermission.comment": "覆寫 `/tick` 指令的權限等級。\n可接受 0 到 4 之間的數值,其中 2 對應舊版 Carpet 的行為,3 則維持原版行為。",
|
||||
"lophine_carpet.carpet.general.tickFreezeCommandToggleable.comment": "當伺服器已處於凍結狀態時再次執行 `/tick freeze`,會切換回運行狀態。",
|
||||
"lophine_carpet.carpet.general.tiscmNetworkProtocol.comment": "在 `tiscm:network/v1` 上啟用原生的 Carpet TIS Addition 網路通道。",
|
||||
"lophine_carpet.carpet.general.tntDoNotUpdate.comment": "防止 TNT 在剛放置時檢查紅石訊號。",
|
||||
"lophine_carpet.carpet.general.tntDupingFix.comment": "切換原版 TNT 複製裝置所利用的活塞不同步路徑。",
|
||||
"lophine_carpet.carpet.general.tntFuseDuration.comment": "覆寫已點燃 TNT 的預設引信時長(單位:遊戲刻)。\n可接受 0 到 32767 之間的數值。",
|
||||
"lophine_carpet.carpet.general.tntIgnoreRedstoneSignal.comment": "在判斷 TNT 是否應該自動點燃時,忽略紅石訊號。",
|
||||
"lophine_carpet.carpet.general.tntPrimerMomentumRemoved.comment": "移除剛點燃的 TNT 隨機獲得的水平發射動量。",
|
||||
"lophine_carpet.carpet.general.totallyNoBlockUpdate.comment": "全域抑制方塊變化所引發的鄰居更新與形狀更新。",
|
||||
"lophine_carpet.carpet.general.viewDistance.comment": "以 Carpet 相容數值覆寫專用伺服器啟動時的視距。",
|
||||
"lophine_carpet.carpet.general.xpNoCooldown.comment": "允許玩家在同一遊戲刻內連續吸收多顆經驗球,不受拾取延遲限制。",
|
||||
"lophine_carpet.carpet.general.yeetOutOfOrderChatKick.comment": "忽略順序錯亂的安全聊天鏈檢查,不再讓聊天工作階段(session)失效。",
|
||||
"lophine_carpet.carpet.general.yeetUpdateSuppressionCrash.comment": "移除更新抑制導致的當機。",
|
||||
"lophine_carpet.carpet.hopper_counter.comment": "漏斗計數器功能。",
|
||||
"lophine_carpet.carpet.hopper_counter.hopperCounters.comment": "啟用現有的羊毛漏斗計數器實作。",
|
||||
"lophine_carpet.carpet.hopper_counter.hopperCountersUnlimitedSpeed.comment": "移除計數器漏斗的傳輸速度限制。\n僅在啟用 hopperCounters 時生效。",
|
||||
"luminol.experiment.command.enable_command_block.comment": "強制啟用指令方塊。\n注意:可能因為執行緒相關問題導致伺服器當機!!!\n除非你清楚自己在做什麼,否則請不要啟用!!!",
|
||||
"luminol.experiment.command.enable_waypoints_and_waypoint_command.comment": "啟用路徑點功能與 waypoint 指令。\n警告:仍在測試階段",
|
||||
"luminol.experiment.disable_async_catchers.enabled.comment": "停用非同步例外攔截器(async catcher),以防止部分聲稱支援 Folia、但邏輯本身有問題的插件導致當機。\n注意:如果 getChunkAt 被錯誤呼叫,可能會導致區域死結(deadlock)!\n參見:https://github.com/PaperMC/Folia/issues/280,該問題已在 Folia 中修復(https://github.com/PaperMC/Folia/commit/2e7bc0721af95196c85500c7bb136aeea0bc12ce)\n除非你清楚自己在做什麼,否則請不要啟用!!!",
|
||||
"luminol.experiment.disable_entity_exception_catchers.enabled.comment": "啟用此設定後,實體 tick 發生錯誤時伺服器會直接當機,而不是移除該實體以維持伺服器運行。\n這可以防止實體無故消失,但可能導致伺服器更常當機。\n除非你清楚自己在做什麼,否則請不要啟用!!!",
|
||||
"luminol.fixes.allow_unsafe_teleportation.enabled.comment": "啟用後,允許非玩家實體進入終界傳送門。\n如果你想使用刷沙(sand duping),請開啟此項。\n警告:這可能導致一些不安全的問題,詳情可參閱:https://github.com/PaperMC/Folia/issues/297",
|
||||
"luminol.fixes.collision_behavior.mode.comment": "決定要使用哪一種碰撞邏輯(Moonrise 與 Paper 為了最佳化修改了這部分,但同時也會破壞部分原版行為)。\n對修正部分大型紅石機械的異常行為會有幫助\n可用值:\nVANILLA\nBLOCK_SHAPE_VANILLA\nPAPER",
|
||||
"luminol.fixes.fix_high_velocity_issue.enabled.comment": "針對 Folia 上某個問題的簡易修復\n(有時實體會產生跨越不同 tick 區域的巨大動量,\n進而導致伺服器當機)\n但這個修復有時可能不會生效",
|
||||
"luminol.fixes.force_cleanup_drop_non_owned_entity_memory_module.comment": "此設定是針對每個生物的「記憶(memory)」中,歸屬資料不正確問題所做的暫時性修復,詳情可參閱 https://github.com/PaperMC/Folia/issues/203",
|
||||
"luminol.fixes.force_cleanup_drop_non_owned_entity_memory_module.enabled_for_block_pos.comment": "啟用後,實體的大腦(Brain)會清除型別為 block_pos、且不屬於目前 tick 區域的記憶",
|
||||
"luminol.fixes.force_cleanup_drop_non_owned_entity_memory_module.enabled_for_entity.comment": "啟用後,實體的大腦(Brain)會清除型別為 entity、且不屬於目前 tick 區域的記憶",
|
||||
"luminol.fixes.force_cleanup_drop_non_owned_entity_memory_module.enabled_for_position_tracker.comment": "啟用後,實體的大腦(Brain)會清除型別為 position_tracker、且不屬於目前 tick 區域的記憶",
|
||||
"luminol.fixes.item_multitask.enabled.comment": "防止伺服器在方塊互動或快捷欄欄位切換時,\n中斷物品的狀態。",
|
||||
"luminol.fixes.long_command_support.enabled.comment": "部分過長的指令可以透過 dialog 指令產生的介面執行,\n但 Paper 已禁止這麼做。\n啟用此項可以修正這個問題。",
|
||||
"luminol.fixes.pathfinding_fixes.break_down_pathfinding_when_out_of_region.comment": "當尋路觸碰到目前 tick 區域之外的方塊時,重新計算路徑或停止尋路",
|
||||
"luminol.fixes.pathfinding_fixes.do_not_pathfind_to_not_owned_targets.comment": "當目標位於目前 tick 區域之外時,略過對該目標的尋路",
|
||||
"luminol.fixes.poi_range_fixes.do_not_compete_poi_if_unloaded.comment": "如果 POI 尚未載入,就不要與其他實體競爭該 POI\n相關內容:https://github.com/PaperMC/Folia/issues/292",
|
||||
"luminol.fixes.prevent_incorrect_teleport_async_calls_during_move_event.enabled.comment": "啟用後,伺服器會在移動事件(move event)期間拒絕部分不正確的 teleportAsync 呼叫。\n這可以減少由某些插件(如 Residence)造成的當機。\n但請注意,這可能會破壞與部分插件的相容性。",
|
||||
"luminol.fixes.use_vanilla_random_source.enable_for_player_entity.comment": "與 RNG(隨機數產生器)破解相關",
|
||||
"luminol.function.membar.display.comment": "可用的顯示方式:BOSS_BAR、ACTION_BAR、TAB_LIST",
|
||||
"luminol.function.portal_rate_limit.enable.comment": "是否要在實體進入傳送門時限制傳送速率",
|
||||
"luminol.function.portal_rate_limit.maximum_portal_teleports_per_tick.comment": "決定單一 tick 區域內,每個 tick 最多可處理多少次傳送門傳送;超過時,\n該次傳送會被延後到下一個 tick 處理\n\n注意:設為 -1 可改用自訂表達式",
|
||||
"luminol.function.portal_rate_limit.maximum_portal_teleports_per_tick_expression.comment": "如果固定上限不敷使用,你可以自訂表達式來動態限制傳送門速率。\n\n可用變數(皆為目前 tick 區域的數值):e(ticking_entity_count,正在 tick 的實體數)\nc(ticking_chunk_count,正在 tick 的區塊數)\np(player_count,玩家數)\n範例:50 * (1 + sqrt(x/1000) + c/200 + p/5)",
|
||||
"luminol.function.region_format.blinear_io_flush_delay_ms.comment": "決定在連續 n(預設為 3000)毫秒沒有寫入操作後,才將資料刷新(flush)到區域檔案(僅適用於 B_LINEAR)",
|
||||
"luminol.function.region_format.blinear_io_thread_count.comment": "決定 buffered linear 的工作執行緒數量(僅適用於 B_LINEAR)",
|
||||
"luminol.function.region_format.format.comment": "可用選項:MCA、LINEAR_V2、B_LINEAR",
|
||||
"luminol.function.region_format.linear_compression_level.comment": "決定區域檔案的壓縮等級(僅適用於 LINEAR_V2 與 B_LINEAR)",
|
||||
"luminol.function.region_format.linear_io_flush_delay_ms.comment": "決定被標記為待儲存的資料在經過 n(預設為 100)毫秒後才刷新(flush)到區域檔案(僅適用於 LINEAR_V2)",
|
||||
"luminol.function.region_format.linear_io_thread_count.comment": "決定 linear 的工作執行緒數量(僅適用於 LINEAR_V2)",
|
||||
"luminol.function.region_format.linear_use_virtual_thread.comment": "決定 linear 格式是否可以使用虛擬執行緒(僅適用於 LINEAR_V2)",
|
||||
"luminol.function.regionbar.display.comment": "可用的顯示方式:BOSS_BAR、ACTION_BAR、TAB_LIST",
|
||||
"luminol.function.secure_seed.enabled.comment": "啟用安全種子(secure seed)後,所有礦物與結構都會改用 1024 位元種子生成,\n而不是原版的 64 位元種子,讓傳統的種子破解方式無法使用。\n注意:如果使用 V1,仍容易受到地形高度攻擊。\n***** 警告:如果你的舊世界原本就在使用安全種子,請務必保持啟用!否則會毀損你的存檔 *****",
|
||||
"luminol.function.secure_seed.salt.comment": "為 V2 加密運算自動產生的 256 位元 salt。\n僅在伺服器第一次啟動時產生一次──請勿分享或修改這個值(修改後會導致區塊錯誤)!\n會與 Blake3 keyed hash 搭配使用,讓種子無法被逆推。",
|
||||
"luminol.function.secure_seed.version.comment": "版本 1:Blake2b(不安全,若熵值足夠,透過 GPU/ASIC 叢集可在數分鐘內逆推)\n版本 2:搭配 salt 金鑰衍生的 Blake3(建議使用,無法逆推)\n***** 警告:切換版本會導致區塊錯誤! *****",
|
||||
"luminol.function.tpsbar.display.comment": "可用的顯示方式:BOSS_BAR、ACTION_BAR、TAB_LIST",
|
||||
"luminol.function.tpsbar.precision_of_mspt_value.comment": "範例(若 mspt 為 20.00000000)(數值 -> 結果):2 -> 20.00,1 -> 20.0",
|
||||
"luminol.function.tpsbar.precision_of_tps_value.comment": "範例(若 tps 為 20.00000000)(數值 -> 結果):2 -> 20.00,1 -> 20.0",
|
||||
"luminol.function.tripwire_dupe.behavior_mode.comment": "可用值:\nVANILLA20\nVANILLA21\nMIXED",
|
||||
"luminol.misc.auto_update.allow_prerelease.comment": "選擇更新版本時,是否允許使用 GitHub 上的搶先版(prerelease)發布。",
|
||||
"luminol.misc.auto_update.check_times.comment": "每日檢查更新的時間清單,格式為 HH:mm,以伺服器所在的本地時區為準。",
|
||||
"luminol.misc.auto_update.comment": "定期檢查 GitHub Releases 上是否有更新版本的 jar 檔。\n下載的檔案會暫存於 auto_update/lophine,並寫入 auto_update/core.path,\nClip 會在下次重新啟動時讀取並套用。\n如果設定了 target_jar_path,伺服器也會嘗試直接替換該啟動器 jar 檔。",
|
||||
"luminol.misc.auto_update.enabled.comment": "伺服器是否應該自動檢查更新。",
|
||||
"luminol.misc.auto_update.target_jar_path.comment": "下載成功後,要替換的啟動器 jar 路徑(選填)。\n留空則會將下載的 jar 保持暫存在 auto_update/lophine,\n並讓 Clip 在重新啟動時透過 auto_update/core.path 切換過去。",
|
||||
"luminol.misc.disable_warning.disable_heightmap_warning.comment": "停用高度圖(heightmap)檢查的警告",
|
||||
"luminol.misc.disable_warning.disable_moved_wrongly_threshold_warning.comment": "停用異常移動的警告與檢查",
|
||||
"luminol.misc.disable_warning.disable_offline_mode_warning.comment": "停用伺服器啟動時,記錄檔中彈出的離線模式警告",
|
||||
"luminol.misc.folia_watchdog.tick_region_time_out_ms.comment": "決定 watchdog 印出卡住的 tick 區域執行緒傾印(thread dump)的間隔時間",
|
||||
"luminol.misc.force_disable_packet_limiter_of_paper.comment": "強制完全停用 Paper 所有的封包限制器;該機制原本是為了避免因使用快速合成類模組而被踢出,但停用它會對安全性造成負面影響",
|
||||
"luminol.misc.save_portal_tickets.do_save.comment": "伺服器停止時是否要儲存傳送門憑證(portal ticket);啟用後行為會類似 1.21.5 之前的 MC,\n且伺服器再次啟動時,不會自動啟動傳送門的區塊載入器。",
|
||||
"luminol.misc.sentry.dsn.comment": "用於強化錯誤記錄的 Sentry DSN,留空即可停用,\n可以從 https://sentry.io/ 取得",
|
||||
"luminol.misc.sentry.log_level.comment": "等級高於或等於此設定值的記錄(log)才會被記錄下來。",
|
||||
"luminol.misc.sentry.only_log_thrown.comment": "啟用後,只有附帶 Throwable 的記錄才會被記錄下來。",
|
||||
"luminol.misc.server_mod_name.name.comment": "決定 F3 除錯畫面中顯示的伺服器模組(mod)名稱。",
|
||||
"luminol.misc.server_mod_name.vanilla_spoof.comment": "忽略任何插件的修改,以及此設定區塊中設定的伺服器模組名稱,\n強制只傳送原版的品牌名稱(brand name)",
|
||||
"luminol.misc.username_checks.allow_old_player_join.comment": "在使用者名稱正規表達式變更後,仍允許舊玩家加入伺服器,\n即使他們的名稱不符合新規則也一樣。",
|
||||
"luminol.misc.username_checks.enabled.comment": "決定是否啟用使用者名稱檢查,\n如果你的玩家使用中文使用者名稱,可以停用此項,\n但請注意停用後可能帶來的安全性影響",
|
||||
"luminol.misc.username_checks.enforce_skull_validation.comment": "強制進行頭顱驗證,避免帶有無效名稱的頭顱導致客戶端斷線。",
|
||||
"luminol.misc.username_checks.username_check_regex.comment": "使用正規表達式驗證使用者名稱,\n只允許正規表達式中指定的字元。",
|
||||
"luminol.misc.verify_publickey_only_in_online_mode.comment": "只在正版驗證模式(online mode)下驗證公鑰;在搭配 MultiLogin 等使用自訂驗證伺服器的插件時可能會有幫助",
|
||||
"luminol.optimizations.cpu_affinity.enabled_for_tickregion.comment": "啟用後,可以將 tick 區域排程器的執行緒(以下皆同)固定到下方 'tickregion_affinity' 設定中列出的 CPU 核心,\n這對具有 P 核心與 E 核心的 CPU(例如第 12/13/14 代 Intel Core 系列等)特別有幫助。",
|
||||
"luminol.optimizations.cpu_affinity.tickregion_affinity.comment": "你希望 tick 區域執行緒綁定的核心編號",
|
||||
"luminol.optimizations.lithium_sleeping_block_entity.enabled.comment": "使用來自 Lithium 的方塊實體休眠最佳化;\n在 Luminol 上,Paper 原有的漏斗最佳化已完全移除,改由 Lithium 的實作取代,\n且預設為啟用狀態",
|
||||
"luminol.optimizations.lobotomize_villager.check_interval.comment": "檢查村民是否進入簡化 AI(lobotomize)狀態的間隔(單位:遊戲刻)",
|
||||
"luminol.optimizations.lobotomize_villager.comment": "當村民無法移動時,將其 AI 簡化(lobotomize)(不會停用交易功能)",
|
||||
"luminol.optimizations.lobotomize_villager.wait_until_trade_locked.comment": "等到村民被交易過後,才將其 AI 簡化",
|
||||
"luminol.optimizations.projectile.max-loads-per-projectile.comment": "控制一個投射物在其生命週期內最多可以載入多少個區塊,超過後會被自動移除。",
|
||||
"luminol.optimizations.projectile.max-loads-per-tick.comment": "控制每個遊戲刻內,投射物最多可以同步載入多少個區塊。",
|
||||
"luminol.optimizations.reduce_sensor_work.comment": "啟用後,會降低視線快取被清除的頻率,並使用更快速的鄰近比較演算法。",
|
||||
"luminol.optimizations.reduce_sensor_work.enabled.comment": "每個實體清除快取的間隔(單位:遊戲刻)",
|
||||
"luminol.optimizations.throttle_goal_selector_tick_in_inactive_tick.comment": "在實體處於非活躍 tick 時,限制其 AI 目標選擇器(goal selector)的執行頻率。\n這可以提升幾個百分點的效能,但會帶來輕微的遊戲行為影響。",
|
||||
"luminol.optimizations.use_async_protocol_switching.enabled.comment": "為 MC 使用非同步協定準備(async protocol preparation)。\n警告:由於此最佳化會改變封包順序,\n可能與部分插件(如 ViaVersion)不相容。",
|
||||
"luminol.optimizations.variable_entity_waking_up.entity_wakeup_duration_ratio_standard_deviation.comment": "如果此數值設為任何大於 0 的值,非活躍實體的甦醒時間就會分散在一段時間內,而不是大量實體同時甦醒,讓實體的行為看起來更自然。\n這個設定值是不活躍時長的變異係數(coefficient of variation),也就是 σ/μ(標準差與平均值的比值)。\n\n換句話說,這個設定值就是 σ,最終的不活躍時長會等於原本的時長乘上常態分布 normal_distribution(μ = 1, σ) 所得到的係數。\n如果設定值 ≤ 0,則會停用可變的實體甦醒機制。",
|
||||
"luminol.unsupported.disable_check_for_folia_supported.disable_for_leaves.comment": "停用對 Leaves 插件的 folia-supported 檢查。\n注意:啟用此項後將不提供任何支援。",
|
||||
"luminol.unsupported.disable_check_for_folia_supported.disable_for_paper.comment": "停用對 Spigot/Bukkit/Paper 插件的 folia-supported 檢查。\n注意:啟用此項後將不提供任何支援。"
|
||||
}
|
||||
Reference in New Issue
Block a user