Compare commits
33 Commits
1.20.4-76f
...
1.20.4-c4e
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c4e3e652fa | ||
|
|
64b64ace2b | ||
|
|
a9a5779365 | ||
|
|
3250c80efa | ||
|
|
aba9b830bf | ||
|
|
aa391923f6 | ||
|
|
2fe54ceff9 | ||
|
|
5056e7ecbc | ||
|
|
20f23e9726 | ||
|
|
dced86a404 | ||
|
|
a983ac00e5 | ||
|
|
e2b21e0f69 | ||
|
|
07ef8e01c5 | ||
|
|
77cb94ae5f | ||
|
|
14e7cbe186 | ||
|
|
49be774d83 | ||
|
|
06dcc037df | ||
|
|
9247a01058 | ||
|
|
856ddfe7cc | ||
|
|
4013d9dc3b | ||
|
|
ce8a2afb0f | ||
|
|
ea3efdb597 | ||
|
|
678c3faeea | ||
|
|
815adcc00e | ||
|
|
c0d766fd07 | ||
|
|
a9cd09f900 | ||
|
|
1452008bbe | ||
|
|
e71abbd761 | ||
|
|
6db86f10e7 | ||
|
|
f134186657 | ||
|
|
ef1b7ce6f7 | ||
|
|
f16e5c1064 | ||
|
|
0b9a436044 |
14
.github/FUNDING.yml
vendored
Normal file
14
.github/FUNDING.yml
vendored
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
# These are supported funding model platforms
|
||||||
|
|
||||||
|
github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
|
||||||
|
patreon: # Replace with a single Patreon username
|
||||||
|
open_collective: # Replace with a single Open Collective username
|
||||||
|
ko_fi: # Replace with a single Ko-fi username
|
||||||
|
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
|
||||||
|
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
|
||||||
|
liberapay: # Replace with a single Liberapay username
|
||||||
|
issuehunt: # Replace with a single IssueHunt username
|
||||||
|
lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry
|
||||||
|
polar: # Replace with a single Polar username
|
||||||
|
buy_me_a_coffee: # Replace with a single Buy Me a Coffee username
|
||||||
|
custom: https://afdian.net/a/Luminol
|
||||||
68
.github/ISSUE_TEMPLATE/bug-report.yml
vendored
Normal file
68
.github/ISSUE_TEMPLATE/bug-report.yml
vendored
Normal file
@@ -0,0 +1,68 @@
|
|||||||
|
name: Bug反馈 Bug report
|
||||||
|
description:
|
||||||
|
报告Bug,插件不兼容情况,以及其他相关问题。
|
||||||
|
Report issues with plugin incompatbility or other behavior related issues.
|
||||||
|
labels:
|
||||||
|
- bug
|
||||||
|
body:
|
||||||
|
- type: markdown
|
||||||
|
attributes:
|
||||||
|
value: |
|
||||||
|
请详细描述您所遇到的Bug。确保您**真的**遇到了**服务端**Bug,而非原版特性或客户端Bug。
|
||||||
|
Please describe the bug you encountered in detail. Make sure you're **actually** hitting a **server-side** bug, not a vanilla feature or client-side bug.<br>
|
||||||
|
如果您确定的话,就按照下面的模板填充信息,并提交反馈。
|
||||||
|
If you are sure, follow the template below to fill in the information and submit your feedback.<br>
|
||||||
|
如果此bug被尝试修复,您可以帮助我们测试并回复。若bug的确被修复,您可以关闭issue来让开发者确认。
|
||||||
|
If this bug is tried to fix, you can help us test and reply. If the bug is fixed, you can close the issue to let the developer confirm.
|
||||||
|
- type: input
|
||||||
|
id: leavesMC-version
|
||||||
|
attributes:
|
||||||
|
label: 服务端版本 LuminolMC Version
|
||||||
|
description:
|
||||||
|
LuminolMC服务端发行版本 LuminolMC server release version (contains the git commit's hash)<br>
|
||||||
|
通过执行`/version`命令将获取到的内容复制到这里。 Run `/version` on your server and paste the full, unmodified output here.
|
||||||
|
placeholder: >
|
||||||
|
e.g. git-Luminol-"0635a89" (MC: 1.20.4)
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
id: expected-behavior
|
||||||
|
attributes:
|
||||||
|
label: 预期的行为 Expected behavior
|
||||||
|
description: 你期望看到的情况是什么样。What you expected to see.
|
||||||
|
placeholder: e.g. 使用 /tpsbar [NAME] 命令可以切换TPSBAR的开关
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
id: actual-behavior
|
||||||
|
attributes:
|
||||||
|
label: 观测到的实际行为 Observed/Actual behavior
|
||||||
|
description: 你实际看到的。 What you actually saw.
|
||||||
|
placeholder: e.g. 使用 /tpsbar [NAME] 命令切换不了TPSBAR
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
id: reproduce
|
||||||
|
attributes:
|
||||||
|
label: 复现步骤 Steps/models to reproduce
|
||||||
|
description:
|
||||||
|
这里应该有一个图片、视频或其他信息来展现你的问题。<br>
|
||||||
|
This may include a build schematic, a video, or detailed instructions to help reconstruct the issue.
|
||||||
|
placeholder: e.g. 登录其他账号,使用 /tpsbar [NAME] 命令切换不了TPSBAR
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
id: plugin-list
|
||||||
|
attributes:
|
||||||
|
label: 插件与数据包列表。 Plugin and Datapack List.
|
||||||
|
description:
|
||||||
|
服务器上的所有插件和数据包列表。
|
||||||
|
All plugins and datapacks running on your server.<br>
|
||||||
|
执行命令`/plugins`查看插件列表。执行命令`/datapack list`查看数据包列表。
|
||||||
|
To list plugins, run `/plugins`. For datapacks, run `/datapack list`.
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
id: other
|
||||||
|
attributes:
|
||||||
|
label: 更多详细信息。 The more information.
|
||||||
31
.github/ISSUE_TEMPLATE/feature-request.yml
vendored
Normal file
31
.github/ISSUE_TEMPLATE/feature-request.yml
vendored
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
name: 新的需求 Feature Request
|
||||||
|
description:
|
||||||
|
为Luminol提供新的想法。
|
||||||
|
Suggest an idea for Luminol.
|
||||||
|
labels:
|
||||||
|
- enhancement
|
||||||
|
body:
|
||||||
|
- type: markdown
|
||||||
|
attributes:
|
||||||
|
value: |
|
||||||
|
感谢您为 Luminol 提交新的需求!请尽可能详细地描述,以便我们可以更轻松地考虑和审查请求。
|
||||||
|
Thank you for filling out a feature request for Luminol! Please be as detailed as possible so that we may consider and review the request easier.<br>
|
||||||
|
请搜索所有问题以避免重复的功能请求。如果您期望的功能已存在,请回复如果您有什么要补充的。
|
||||||
|
We ask that you search all the issues to avoid a duplicate feature request. If one exists, please reply if you have anything to add.<br>
|
||||||
|
在请求新功能之前,请确保您使用的是最新版本并且您请求的功能不在 Luminol 中。
|
||||||
|
Before requesting a new feature, please make sure you are using the latest version and that the feature you are requesting is not already in Paper.<br>
|
||||||
|
我们的开发人员可能没有过多时间来测试新功能的可用性,如新功能进入Test状态,您可以帮助我们进行测试并回复。
|
||||||
|
Our developers may not have much time to test the usability of new functions. If the new functions enter the Test state, you can help us test and reply.
|
||||||
|
|
||||||
|
- type: textarea
|
||||||
|
id: feature
|
||||||
|
attributes:
|
||||||
|
label: 描述你希望添加的功能。 Describe the feature you'd like.
|
||||||
|
placeholder: e.g. 添加新的PATH
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
id: othre
|
||||||
|
attributes:
|
||||||
|
label: 其他 Other
|
||||||
|
description: 添加其他的信息。 Add any other context or screenshots about the feature request below.
|
||||||
104
.github/workflows/build_1_20_4.yml
vendored
104
.github/workflows/build_1_20_4.yml
vendored
@@ -1,104 +0,0 @@
|
|||||||
# This workflow uses actions that are not certified by GitHub.
|
|
||||||
# They are provided by a third-party and are governed by
|
|
||||||
# separate terms of service, privacy policy, and support
|
|
||||||
# documentation.
|
|
||||||
# This workflow will build a Java project with Gradle and cache/restore any dependencies to improve the workflow execution time
|
|
||||||
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-java-with-gradle
|
|
||||||
|
|
||||||
name: LuminolCI - Ver/1.20.4
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches: [ "ver/1.20.4" ]
|
|
||||||
pull_request:
|
|
||||||
branches: [ "ver/1.20.4" ]
|
|
||||||
|
|
||||||
permissions: write-all
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
build:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
if: github.event.pull_request.merged || github.event_name == 'push' || github.event_name == 'workflow_dispatch'
|
|
||||||
steps:
|
|
||||||
- name: Get repository
|
|
||||||
uses: actions/checkout@v3
|
|
||||||
with:
|
|
||||||
fetch-depth: 0
|
|
||||||
- name: Get JDK 17
|
|
||||||
uses: actions/setup-java@v3
|
|
||||||
with:
|
|
||||||
java-version: '17'
|
|
||||||
distribution: 'zulu'
|
|
||||||
- name: Setup Git Config
|
|
||||||
run: |
|
|
||||||
git config --global user.email "ci@leavesmc.top"
|
|
||||||
git config --global user.name "Leaves CI"
|
|
||||||
- name: Apply Patches
|
|
||||||
uses: gradle/gradle-build-action@937999e9cc2425eddc7fd62d1053baf041147db7
|
|
||||||
with:
|
|
||||||
arguments: applyPatches
|
|
||||||
- name: Create Paperclip Jar
|
|
||||||
uses: gradle/gradle-build-action@937999e9cc2425eddc7fd62d1053baf041147db7
|
|
||||||
with:
|
|
||||||
arguments: createReobfPaperclipJar
|
|
||||||
- name: Publish API
|
|
||||||
continue-on-error: true
|
|
||||||
uses: gradle/gradle-build-action@937999e9cc2425eddc7fd62d1053baf041147db7
|
|
||||||
with:
|
|
||||||
arguments: publish -PleavesUsername=${{ secrets.REPO_USERNAME }} -PleavesPassword=${{ secrets.REPO_PASSWORD }}
|
|
||||||
- name: Create Configuration
|
|
||||||
continue-on-error: true
|
|
||||||
uses: gradle/gradle-build-action@937999e9cc2425eddc7fd62d1053baf041147db7
|
|
||||||
with:
|
|
||||||
arguments: createLeavesConfig
|
|
||||||
- name: Push Configuration
|
|
||||||
continue-on-error: true
|
|
||||||
run: |
|
|
||||||
mkdir --parents "$HOME/.ssh"
|
|
||||||
ssh-keyscan -H "github.com" > "$HOME/.ssh/known_hosts"
|
|
||||||
echo "${{ secrets.CONFIG_DEPLOY_KEY }}" > "$HOME/.ssh/deploy.key"
|
|
||||||
chmod 400 "$HOME/.ssh/deploy.key"
|
|
||||||
export GIT_SSH_COMMAND="ssh -i $HOME/.ssh/deploy.key"
|
|
||||||
git clone git@github.com:LeavesMC/Configuration.git configuration -b Leaves
|
|
||||||
cp run/leaves.yml configuration/leaves.yml -f
|
|
||||||
cd configuration
|
|
||||||
git add leaves.yml
|
|
||||||
git commit leaves.yml -m "$(date -u +"%Y-%m-%dT%H:%M:%SZ")
|
|
||||||
https://github.com/LeavesMC/Leaves/commit/$(cd .. && git rev-parse HEAD)"
|
|
||||||
git push origin HEAD:Leaves
|
|
||||||
- name: Get Release Info
|
|
||||||
run: sh scripts/GetReleaseInfo.sh
|
|
||||||
- name: Create Release
|
|
||||||
if: "!contains(github.event.commits[0].message, '[ci-skip]')"
|
|
||||||
uses: ncipollo/release-action@v1.12.0
|
|
||||||
with:
|
|
||||||
artifacts: ${{ env.jar }}
|
|
||||||
bodyFile: ${{ env.info }}
|
|
||||||
tag: ${{ env.tag }}
|
|
||||||
name: ${{ env.name }}
|
|
||||||
prerelease: ${{ env.pre }}
|
|
||||||
token: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
makeLatest: ${{ env.make_latest }}
|
|
||||||
- name: Delete Draft Releases
|
|
||||||
uses: hugo19941994/delete-draft-releases@v1.0.0
|
|
||||||
env:
|
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
# - name: Github Releases To Discord
|
|
||||||
# continue-on-error: true
|
|
||||||
# uses: tsickert/discord-webhook@v5.3.0
|
|
||||||
# with:
|
|
||||||
# webhook-url: ${{ secrets.DISCORD_WEBHOOK }}
|
|
||||||
# raw-data: ${{ env.discordmes }}
|
|
||||||
- name: Upload Artifact
|
|
||||||
uses: actions/upload-artifact@v2
|
|
||||||
with:
|
|
||||||
name: ${{ env.jar }}
|
|
||||||
path: ${{ env.jar }}
|
|
||||||
- name: Push to Api
|
|
||||||
continue-on-error: true
|
|
||||||
if: "!contains(github.event.commits[0].message, '[release-skip]')"
|
|
||||||
env:
|
|
||||||
secret: ${{ secrets.API_PUSH_TOKEN }}
|
|
||||||
secret_v2: ${{ secrets.API_V2_PUSH_TOKEN }}
|
|
||||||
tag: ${{ env.tag }}
|
|
||||||
run: sh scripts/PushToAPI.sh
|
|
||||||
63
.github/workflows/build_1_20_4.yml_dis
vendored
Normal file
63
.github/workflows/build_1_20_4.yml_dis
vendored
Normal file
@@ -0,0 +1,63 @@
|
|||||||
|
# This workflow uses actions that are not certified by GitHub.
|
||||||
|
# They are provided by a third-party and are governed by
|
||||||
|
# separate terms of service, privacy policy, and support
|
||||||
|
# documentation.
|
||||||
|
# This workflow will build a Java project with Gradle and cache/restore any dependencies to improve the workflow execution time
|
||||||
|
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-java-with-gradle
|
||||||
|
|
||||||
|
name: LuminolCI - Ver/1.20.4
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [ "ver/1.20.4" ]
|
||||||
|
pull_request:
|
||||||
|
branches: [ "ver/1.20.4" ]
|
||||||
|
|
||||||
|
permissions: write-all
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
- name: Set up git
|
||||||
|
run: git config --global user.email "noreply@github.com" && git config --global user.name "ci"
|
||||||
|
- name: Set up JDK 17
|
||||||
|
uses: actions/setup-java@v3
|
||||||
|
with:
|
||||||
|
java-version: '17'
|
||||||
|
distribution: 'temurin'
|
||||||
|
- name: Make gradlew executable
|
||||||
|
run: chmod 777 ./gradlew
|
||||||
|
- name: Setup project
|
||||||
|
uses: gradle/gradle-build-action@bd5760595778326ba7f1441bcf7e88b49de61a25 # v2.6.0
|
||||||
|
with:
|
||||||
|
arguments: applyPatches
|
||||||
|
- name: Build project to paperclip jar
|
||||||
|
uses: gradle/gradle-build-action@bd5760595778326ba7f1441bcf7e88b49de61a25 # v2.6.0
|
||||||
|
with:
|
||||||
|
arguments: createReobfBundlerJar createReobfPaperclipJar
|
||||||
|
- name: Capture build artifacts
|
||||||
|
uses: actions/upload-artifact@v3
|
||||||
|
with:
|
||||||
|
name: Artifacts
|
||||||
|
path: build/libs/
|
||||||
|
- name: Publish All
|
||||||
|
run: |
|
||||||
|
echo "GITHUB_USERNAME=LuminolCI" >> $GITHUB_ENV
|
||||||
|
export GITHUB_USERNAME=LuminolCI
|
||||||
|
echo "GITHUB_TOKEN=${{ secrets.GITHUB_TOKEN }}" >> $GITHUB_ENV
|
||||||
|
export GITHUB_TOKEN=${{ secrets.GITHUB_TOKEN }}
|
||||||
|
./gradlew publish -PpublishDevBundle=true
|
||||||
|
- name: Rename jar file
|
||||||
|
run: mv build/libs/luminol-paperclip-1.20.4-R0.1-SNAPSHOT-reobf.jar build/libs/luminol-1.20.4-paperclip.jar
|
||||||
|
- name: Release Artifacts
|
||||||
|
uses: svenstaro/upload-release-action@v2
|
||||||
|
with:
|
||||||
|
release_name: "Luminol MC1.20.4 - ${{ github.event.repository.updated_at}}"
|
||||||
|
tag: "1.20.4-${{ github.run_id }}"
|
||||||
|
repo_token: "${{ secrets.GITHUB_TOKEN }}"
|
||||||
|
file: "build/libs/luminol-1.20.4-paperclip.jar"
|
||||||
|
file_glob: true
|
||||||
|
prerelease: true
|
||||||
68
.github/workflows/build_1_20_4_v2.yml
vendored
Normal file
68
.github/workflows/build_1_20_4_v2.yml
vendored
Normal file
@@ -0,0 +1,68 @@
|
|||||||
|
name: Luminol CI v2 - Ver/1.20.4
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [ "ver/1.20.4" ]
|
||||||
|
pull_request:
|
||||||
|
branches: [ "ver/1.20.4" ]
|
||||||
|
|
||||||
|
permissions: write-all
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
environment: default
|
||||||
|
steps:
|
||||||
|
- name: Checkout Git Repository
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- name: Validate Gradle wrapper
|
||||||
|
uses: gradle/actions/wrapper-validation@v3
|
||||||
|
- name: Setup Gradle
|
||||||
|
uses: gradle/actions/setup-gradle@v3
|
||||||
|
with:
|
||||||
|
gradle-version: 8.4
|
||||||
|
- name: Set up JDK
|
||||||
|
uses: actions/setup-java@v4
|
||||||
|
with:
|
||||||
|
distribution: 'temurin'
|
||||||
|
java-version: '17'
|
||||||
|
- name: Configure Git User Details
|
||||||
|
run: git config --global user.email "ci@luminolmc.com" && git config --global user.name "LuminolMC CI"
|
||||||
|
- name: Apply Patches
|
||||||
|
run: gradle applyPatches --scan
|
||||||
|
- name: CreateJar
|
||||||
|
run: gradle createReobfBundlerJar createReobfPaperclipJar --scan
|
||||||
|
- name: SetENV
|
||||||
|
run: |
|
||||||
|
sh scripts/SetENV.sh
|
||||||
|
echo "${{ env.tag }}"
|
||||||
|
- name: Upload Artifact
|
||||||
|
uses: "actions/upload-artifact@v4"
|
||||||
|
with:
|
||||||
|
name: "${{ env.project_id_b }} CI Artifacts"
|
||||||
|
path: "build/libs/*.jar"
|
||||||
|
- name: Create Release
|
||||||
|
if: "!contains(github.event.commits[0].message, '[release skip]')"
|
||||||
|
uses: ncipollo/release-action@v1.14.0
|
||||||
|
with:
|
||||||
|
tag: ${{ env.tag }}
|
||||||
|
name: ${{ env.project_id_b }} ${{ env.mcversion }} - ${{ env.commit_id }}
|
||||||
|
body: |
|
||||||
|
📦Version: `${{ env.mcversion }}` | Commit ${{ env.commit_id }} [](https://github.com/LuminolMC/${{ env.project_id }}/download/${{ env.tag }}/${{ env.jar }})
|
||||||
|
This release is automatically compiled by GitHub Actions
|
||||||
|
### Commit Message
|
||||||
|
${{ env.commit_msg }}
|
||||||
|
artifacts: |
|
||||||
|
${{ env.jar_dir }}
|
||||||
|
build/libs/${{ env.project_id }}-${{ env.mcversion }}-bundler.jar
|
||||||
|
generateReleaseNotes: true
|
||||||
|
prerelease: ${{ env.pre }}
|
||||||
|
makeLatest: ${{ env.make_latest }}
|
||||||
|
token: "${{ secrets.GITHUB_TOKEN }}"
|
||||||
|
- name: Push to API
|
||||||
|
if: "!contains(github.event.commits[0].message, '[release skip]')"
|
||||||
|
env:
|
||||||
|
secret_v2: ${{ secrets.API_KEY }}
|
||||||
|
tag: ${{ env.tag }}
|
||||||
|
project_id: ${{ env.project_id }}
|
||||||
|
run: sh scripts/PushToAPI.sh
|
||||||
10
README.md
10
README.md
@@ -50,8 +50,13 @@ dependencies {
|
|||||||
## 联系方式
|
## 联系方式
|
||||||
> 如果您对这个项目感兴趣或有任何问题,请随时向我们提问。
|
> 如果您对这个项目感兴趣或有任何问题,请随时向我们提问。
|
||||||
|
|
||||||
QQ群:`368632360` | QQ频道:[点击加入](https://pd.qq.com/s/eq9krf9j) | Telegram:[点击加入](https://t.me/LuminolMC)
|
QQ群: [368632360](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=MfosKhcDd8Fdxn1MREuZ8Krbf9T6jiBC&authKey=3cm6qdHohON3gHnuD63FK4k07fIbrWnY4hdyq8OmELsfjMVP1kbFTJY9mRyM2Rkj&noverify=0&group_code=368632360) | QQ频道: [点击加入](https://pd.qq.com/s/eq9krf9j) | Telegram: [点击加入](https://t.me/LuminolMC) | Discord: [点击加入](https://discord.gg/5hgtU72w33)
|
||||||
|
|
||||||
|
> [!WARNING]
|
||||||
|
> **此项目与Leaves无关。不要向Leaves报告任何有关协议支持的错误,因为协议支持已经重构**
|
||||||
|
|
||||||
|
## 关于 Issue
|
||||||
|
当您遇到任何问题时,请向我们提问,我们将尽力解决,但请记得清楚地描述您的问题并提供足够的日志等信息。
|
||||||
|
|
||||||
## 贡献代码
|
## 贡献代码
|
||||||
可[查看 Contributing](./docs/CONTRIBUTING.md)
|
可[查看 Contributing](./docs/CONTRIBUTING.md)
|
||||||
@@ -70,6 +75,3 @@ QQ群:`368632360` | QQ频道:[点击加入](https://pd.qq.com/s/eq9krf9j)
|
|||||||
</picture>
|
</picture>
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
> [!WARNING]
|
|
||||||
> **此项目与Leaves无关。不要向Leaves报告任何有关协议支持的错误,因为协议支持已经重构**
|
|
||||||
>
|
|
||||||
|
|||||||
@@ -50,7 +50,7 @@ For maven
|
|||||||
## Contact
|
## Contact
|
||||||
> If you are interested in this project or have any issue, feel free to ask us.
|
> If you are interested in this project or have any issue, feel free to ask us.
|
||||||
|
|
||||||
QQ Group: `368632360` | QQ Channel: [Click To Join](https://pd.qq.com/s/eq9krf9j) | Telegram: [Click To Join](https://t.me/LuminolMC)
|
QQ Group: [368632360](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=MfosKhcDd8Fdxn1MREuZ8Krbf9T6jiBC&authKey=3cm6qdHohON3gHnuD63FK4k07fIbrWnY4hdyq8OmELsfjMVP1kbFTJY9mRyM2Rkj&noverify=0&group_code=368632360) | QQ Channel: [Click To Join](https://pd.qq.com/s/eq9krf9j) | Telegram: [Click To Join](https://t.me/LuminolMC) | Discord: [Click To Join](https://discord.gg/5hgtU72w33)
|
||||||
|
|
||||||
> [!WARNING]
|
> [!WARNING]
|
||||||
> **This project is not related to Leaves.Do not report any bugs about protocol support to leaves because the protocol supports are already refactored.**
|
> **This project is not related to Leaves.Do not report any bugs about protocol support to leaves because the protocol supports are already refactored.**
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ plugins {
|
|||||||
java
|
java
|
||||||
`maven-publish`
|
`maven-publish`
|
||||||
id("com.github.johnrengelman.shadow") version "8.1.1" apply false
|
id("com.github.johnrengelman.shadow") version "8.1.1" apply false
|
||||||
id("io.papermc.paperweight.patcher") version "1.5.11"
|
id("io.papermc.paperweight.patcher") version "1.5.12"
|
||||||
}
|
}
|
||||||
|
|
||||||
val paperMavenPublicUrl = "https://repo.papermc.io/repository/maven-public/"
|
val paperMavenPublicUrl = "https://repo.papermc.io/repository/maven-public/"
|
||||||
@@ -15,9 +15,9 @@ repositories {
|
|||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
remapper("net.fabricmc:tiny-remapper:0.8.6:fat")
|
remapper("net.fabricmc:tiny-remapper:0.10.1:fat")
|
||||||
decompiler("org.quiltmc:quiltflower:1.9.0")
|
decompiler("net.minecraftforge:forgeflower:2.0.627.2")
|
||||||
paperclip("io.papermc:paperclip:3.0.3-SNAPSHOT")
|
paperclip("io.papermc:paperclip:3.0.3")
|
||||||
}
|
}
|
||||||
|
|
||||||
subprojects {
|
subprojects {
|
||||||
|
|||||||
@@ -1,15 +1,13 @@
|
|||||||
group = me.earthme.luminol
|
group = me.earthme.luminol
|
||||||
version = 1.20.4-R0.1-SNAPSHOT
|
version = 1.20.4-R0.1-SNAPSHOT
|
||||||
|
|
||||||
foliaCommit = ef2c6971891b7571261591cd22d27ff555c5d3f2
|
foliaCommit = 25ee657a8290530812f5f93f62d48df541a02ccf
|
||||||
|
|
||||||
org.gradle.caching = true
|
org.gradle.caching = true
|
||||||
org.gradle.parallel = true
|
org.gradle.parallel = true
|
||||||
org.gradle.vfs.watch = false
|
org.gradle.vfs.watch = false
|
||||||
org.gradle.jvmargs = -Xmx3G
|
org.gradle.jvmargs = -Xmx3G
|
||||||
|
|
||||||
# adapt Leaves API Push
|
mcVersion = 1.20.4
|
||||||
mcVersion=1.20.4
|
GroupMCV = 1.20
|
||||||
packageVersion=1_20_R3
|
preVersion = false
|
||||||
preVersion=false
|
|
||||||
updatingMinecraft=false
|
|
||||||
@@ -5,10 +5,10 @@ Subject: [PATCH] Leaves Replay Mod API
|
|||||||
|
|
||||||
|
|
||||||
diff --git a/src/main/java/org/bukkit/Bukkit.java b/src/main/java/org/bukkit/Bukkit.java
|
diff --git a/src/main/java/org/bukkit/Bukkit.java b/src/main/java/org/bukkit/Bukkit.java
|
||||||
index 4d6de4f2c67b1f122768806443766bd20c5ae617..b5155ffe86c490252fd0fcd1a00581e09808eeee 100644
|
index c37904d1aae749030620e1bbdb955e25c91ab1f8..84df970635f25239ba1e67fd3dcb4401d14be862 100644
|
||||||
--- a/src/main/java/org/bukkit/Bukkit.java
|
--- a/src/main/java/org/bukkit/Bukkit.java
|
||||||
+++ b/src/main/java/org/bukkit/Bukkit.java
|
+++ b/src/main/java/org/bukkit/Bukkit.java
|
||||||
@@ -2886,4 +2886,10 @@ public final class Bukkit {
|
@@ -2892,4 +2892,10 @@ public final class Bukkit {
|
||||||
public static Server.Spigot spigot() {
|
public static Server.Spigot spigot() {
|
||||||
return server.spigot();
|
return server.spigot();
|
||||||
}
|
}
|
||||||
@@ -20,10 +20,10 @@ index 4d6de4f2c67b1f122768806443766bd20c5ae617..b5155ffe86c490252fd0fcd1a00581e0
|
|||||||
+ // Leaves end - Photographer API
|
+ // Leaves end - Photographer API
|
||||||
}
|
}
|
||||||
diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java
|
diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java
|
||||||
index d46f932b595495816ea038cf161bc7f2d85f177e..7d8a9bab880656e34d8c4dceb4dea3b0c1ced4c8 100644
|
index 15395ef52505087e7eef3b1a5981e787dcc16508..7c7b350f1bbcd1585d175cf9c6b0a938ae5ad759 100644
|
||||||
--- a/src/main/java/org/bukkit/Server.java
|
--- a/src/main/java/org/bukkit/Server.java
|
||||||
+++ b/src/main/java/org/bukkit/Server.java
|
+++ b/src/main/java/org/bukkit/Server.java
|
||||||
@@ -2518,4 +2518,8 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi
|
@@ -2524,4 +2524,8 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi
|
||||||
*/
|
*/
|
||||||
public boolean isGlobalTickThread();
|
public boolean isGlobalTickThread();
|
||||||
// Folia end - region threading API
|
// Folia end - region threading API
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ index e2f704c115fd6e00960bb56bb0779f1100c89c17..72b9343979de5aa8bb399cbe7cb8a795
|
|||||||
private static final java.util.regex.Pattern VER_PATTERN = java.util.regex.Pattern.compile("^([0-9\\.]*)\\-.*R"); // R is an anchor, will always give '-R' at end
|
private static final java.util.regex.Pattern VER_PATTERN = java.util.regex.Pattern.compile("^([0-9\\.]*)\\-.*R"); // R is an anchor, will always give '-R' at end
|
||||||
private static final String GITHUB_BRANCH_NAME = "master";
|
private static final String GITHUB_BRANCH_NAME = "master";
|
||||||
- private static final String DOWNLOAD_PAGE = "https://papermc.io/downloads/paper";
|
- private static final String DOWNLOAD_PAGE = "https://papermc.io/downloads/paper";
|
||||||
+ private static final String DOWNLOAD_PAGE = "https://github.com/Era4FunMC/Luminol"; //Luminol
|
+ private static final String DOWNLOAD_PAGE = "https://github.com/LuminolMC/Luminol"; //Luminol
|
||||||
private static @Nullable String mcVer;
|
private static @Nullable String mcVer;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -46,7 +46,7 @@ index e2f704c115fd6e00960bb56bb0779f1100c89c17..72b9343979de5aa8bb399cbe7cb8a795
|
|||||||
- String[] parts = serverVersion.substring("git-Folia-".length()).split("[-\\s]"); // Folia
|
- String[] parts = serverVersion.substring("git-Folia-".length()).split("[-\\s]"); // Folia
|
||||||
- final Component updateMessage = getUpdateStatusMessage("PaperMC/Folia", GITHUB_BRANCH_NAME, parts[0]); // Folia
|
- final Component updateMessage = getUpdateStatusMessage("PaperMC/Folia", GITHUB_BRANCH_NAME, parts[0]); // Folia
|
||||||
+ String[] parts = serverVersion.substring("git-Luminol-".length()).split("[-\\s]"); // Folia //Luminol
|
+ String[] parts = serverVersion.substring("git-Luminol-".length()).split("[-\\s]"); // Folia //Luminol
|
||||||
+ final Component updateMessage = getUpdateStatusMessage("Era4FunMC/Luminol", GITHUB_BRANCH_NAME, parts[0]); // Folia //Luminol
|
+ final Component updateMessage = getUpdateStatusMessage("LuminolMC/Luminol", GITHUB_BRANCH_NAME, parts[0]); // Folia //Luminol
|
||||||
final Component history = getHistory();
|
final Component history = getHistory();
|
||||||
|
|
||||||
return history != null ? TextComponent.ofChildren(updateMessage, Component.newline(), history) : updateMessage;
|
return history != null ? TextComponent.ofChildren(updateMessage, Component.newline(), history) : updateMessage;
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ Subject: [PATCH] Empty config file base
|
|||||||
|
|
||||||
|
|
||||||
diff --git a/build.gradle.kts b/build.gradle.kts
|
diff --git a/build.gradle.kts b/build.gradle.kts
|
||||||
index 48e9f6ff317bfc7077563e9c651d2a90da6bb37a..d4baa7a193eba22be23921029ca4808a73de063d 100644
|
index c0608731dd7a352628a1e31997d0658dfa9f2ea8..66c34f883a93dd86fcac8029cce63ffe7340c89b 100644
|
||||||
--- a/build.gradle.kts
|
--- a/build.gradle.kts
|
||||||
+++ b/build.gradle.kts
|
+++ b/build.gradle.kts
|
||||||
@@ -19,6 +19,7 @@ dependencies {
|
@@ -19,6 +19,7 @@ dependencies {
|
||||||
@@ -414,24 +414,15 @@ index 0000000000000000000000000000000000000000..2b4e64796bf01b0a5fcb306850cd6083
|
|||||||
+ }
|
+ }
|
||||||
+}
|
+}
|
||||||
diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
|
diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
|
||||||
index 6b3242117d62175de462d04e4d178b49ae2521e9..4744ace98d1741db80ac2aea198f332d95c0ba33 100644
|
index 6b3242117d62175de462d04e4d178b49ae2521e9..68355b9a0a88c871e18031d04581c9ef53313f48 100644
|
||||||
--- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
|
--- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
|
||||||
+++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
|
+++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
|
||||||
@@ -19,6 +19,8 @@ import java.util.Locale;
|
@@ -209,6 +209,8 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
|
||||||
import java.util.Optional;
|
|
||||||
import java.util.function.BooleanSupplier;
|
|
||||||
import javax.annotation.Nullable;
|
|
||||||
+
|
|
||||||
+import me.earthme.luminol.config.LuminolConfig;
|
|
||||||
import net.minecraft.DefaultUncaughtExceptionHandler;
|
|
||||||
import net.minecraft.DefaultUncaughtExceptionHandlerWithName;
|
|
||||||
import net.minecraft.SharedConstants;
|
|
||||||
@@ -209,6 +211,8 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
|
|
||||||
this.paperConfigurations.initializeGlobalConfiguration(this.registryAccess());
|
this.paperConfigurations.initializeGlobalConfiguration(this.registryAccess());
|
||||||
this.paperConfigurations.initializeWorldDefaultsConfiguration(this.registryAccess());
|
this.paperConfigurations.initializeWorldDefaultsConfiguration(this.registryAccess());
|
||||||
// Paper end - initialize global and world-defaults configuration
|
// Paper end - initialize global and world-defaults configuration
|
||||||
+ LuminolConfig.loadConfig(); //Luminol - load config file
|
+ me.earthme.luminol.config.LuminolConfig.loadConfig(); //Luminol - load config file
|
||||||
+ LuminolConfig.setupLatch(); //Luminol - load config file
|
+ me.earthme.luminol.config.LuminolConfig.setupLatch(); //Luminol - load config file
|
||||||
// Paper start - fix converting txt to json file; convert old users earlier after PlayerList creation but before file load/save
|
// Paper start - fix converting txt to json file; convert old users earlier after PlayerList creation but before file load/save
|
||||||
if (this.convertOldUsers()) {
|
if (this.convertOldUsers()) {
|
||||||
this.getProfileCache().save(false); // Paper
|
this.getProfileCache().save(false); // Paper
|
||||||
|
|||||||
@@ -31,10 +31,10 @@ index 0000000000000000000000000000000000000000..22f3c6c70e4287f1bdd0b18f87f57efe
|
|||||||
+ }
|
+ }
|
||||||
+}
|
+}
|
||||||
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
|
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
|
||||||
index 81749b8da7182abd1bf35629f33388e813dbeac0..10df17ad79092f3e226df08e58620694b3581758 100644
|
index 36f1af9ef5fca7c45f250470d21a4dfbf573ceac..43b8f64d7c14e6dd0975b24a3205806c4433f26f 100644
|
||||||
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
|
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
|
||||||
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
|
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
|
||||||
@@ -3045,7 +3045,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
|
@@ -3058,7 +3058,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
|
||||||
// Spigot Start
|
// Spigot Start
|
||||||
if (entity.getBukkitEntity() instanceof org.bukkit.inventory.InventoryHolder && (!(entity instanceof ServerPlayer) || entity.getRemovalReason() != Entity.RemovalReason.KILLED)) { // SPIGOT-6876: closeInventory clears death message
|
if (entity.getBukkitEntity() instanceof org.bukkit.inventory.InventoryHolder && (!(entity instanceof ServerPlayer) || entity.getRemovalReason() != Entity.RemovalReason.KILLED)) { // SPIGOT-6876: closeInventory clears death message
|
||||||
// Paper start - Fix merchant inventory not closing on entity removal
|
// Paper start - Fix merchant inventory not closing on entity removal
|
||||||
|
|||||||
@@ -347,10 +347,10 @@ index 0000000000000000000000000000000000000000..3f1478dde900d671c4bfa43df80f6295
|
|||||||
+ }
|
+ }
|
||||||
+}
|
+}
|
||||||
diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
|
diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
|
||||||
index 4744ace98d1741db80ac2aea198f332d95c0ba33..550fb11c64e3adb35bb7f78c53f0b5ae5ce9ff58 100644
|
index 68355b9a0a88c871e18031d04581c9ef53313f48..c626018d786fe231cd74a28c83515715d896f214 100644
|
||||||
--- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
|
--- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
|
||||||
+++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
|
+++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
|
||||||
@@ -832,6 +832,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
|
@@ -830,6 +830,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void stopServer() {
|
public void stopServer() {
|
||||||
@@ -359,7 +359,7 @@ index 4744ace98d1741db80ac2aea198f332d95c0ba33..550fb11c64e3adb35bb7f78c53f0b5ae
|
|||||||
//Util.shutdownExecutors(); // Paper - moved into super
|
//Util.shutdownExecutors(); // Paper - moved into super
|
||||||
SkullBlockEntity.clear();
|
SkullBlockEntity.clear();
|
||||||
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
||||||
index cbc89b8898f9243776af88c2b04ad3c2e4e23fb6..318cb1e98a3d73b7893f07c9f0db3adab801b67e 100644
|
index 9d7837f90340a96edbd544826ae2241c61ae72c4..c8701a2a0a3cbd60e263fe5c069b5993b36842a6 100644
|
||||||
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
||||||
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
||||||
@@ -285,6 +285,7 @@ public class ServerPlayer extends Player {
|
@@ -285,6 +285,7 @@ public class ServerPlayer extends Player {
|
||||||
@@ -371,10 +371,10 @@ index cbc89b8898f9243776af88c2b04ad3c2e4e23fb6..318cb1e98a3d73b7893f07c9f0db3ada
|
|||||||
public io.papermc.paper.chunk.system.RegionizedPlayerChunkLoader.ViewDistances getViewDistances() {
|
public io.papermc.paper.chunk.system.RegionizedPlayerChunkLoader.ViewDistances getViewDistances() {
|
||||||
return this.viewDistances.get();
|
return this.viewDistances.get();
|
||||||
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
||||||
index d2902fc7f3b7af59f181bd1e12435d946db7ad23..26f70965b45fa3c344781b569a651a4668d0621d 100644
|
index b0a70287ff1fc9b3d5eba322d949aaf510b165d2..74e7fefe0819829f9280cf1602cca841f796e7a3 100644
|
||||||
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
||||||
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
||||||
@@ -2287,6 +2287,9 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
@@ -2285,6 +2285,9 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||||
handle.expToDrop = data.getInt("expToDrop");
|
handle.expToDrop = data.getInt("expToDrop");
|
||||||
handle.keepLevel = data.getBoolean("keepLevel");
|
handle.keepLevel = data.getBoolean("keepLevel");
|
||||||
}
|
}
|
||||||
@@ -384,7 +384,7 @@ index d2902fc7f3b7af59f181bd1e12435d946db7ad23..26f70965b45fa3c344781b569a651a46
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2308,6 +2311,9 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
@@ -2306,6 +2309,9 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||||
data.putLong("lastPlayed", System.currentTimeMillis());
|
data.putLong("lastPlayed", System.currentTimeMillis());
|
||||||
data.putString("lastKnownName", handle.getScoreboardName());
|
data.putString("lastKnownName", handle.getScoreboardName());
|
||||||
|
|
||||||
|
|||||||
@@ -31,10 +31,10 @@ index 0000000000000000000000000000000000000000..502b93c7bda9e8577a1901a8777b7cf9
|
|||||||
+ }
|
+ }
|
||||||
+}
|
+}
|
||||||
diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
|
diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
|
||||||
index 550fb11c64e3adb35bb7f78c53f0b5ae5ce9ff58..71151811c36c75ace1e41837123b320ae48a4b53 100644
|
index c626018d786fe231cd74a28c83515715d896f214..49555381641e9cf9a5c3f00db1e193c9d992637b 100644
|
||||||
--- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
|
--- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
|
||||||
+++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
|
+++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
|
||||||
@@ -284,7 +284,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
|
@@ -282,7 +282,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
|
||||||
String proxyFlavor = (io.papermc.paper.configuration.GlobalConfiguration.get().proxies.velocity.enabled) ? "Velocity" : "BungeeCord";
|
String proxyFlavor = (io.papermc.paper.configuration.GlobalConfiguration.get().proxies.velocity.enabled) ? "Velocity" : "BungeeCord";
|
||||||
String proxyLink = (io.papermc.paper.configuration.GlobalConfiguration.get().proxies.velocity.enabled) ? "https://docs.papermc.io/velocity/security" : "http://www.spigotmc.org/wiki/firewall-guide/";
|
String proxyLink = (io.papermc.paper.configuration.GlobalConfiguration.get().proxies.velocity.enabled) ? "https://docs.papermc.io/velocity/security" : "http://www.spigotmc.org/wiki/firewall-guide/";
|
||||||
// Paper end - Add Velocity IP Forwarding Support
|
// Paper end - Add Velocity IP Forwarding Support
|
||||||
|
|||||||
@@ -1,45 +0,0 @@
|
|||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: MrHua269 <novau233@163.com>
|
|
||||||
Date: Mon, 25 Mar 2024 13:16:04 +0000
|
|
||||||
Subject: [PATCH] Add config for incorrect tripwire updating fixing
|
|
||||||
|
|
||||||
|
|
||||||
diff --git a/src/main/java/me/earthme/luminol/config/modules/fixes/IncorrectTripwireFixConfig.java b/src/main/java/me/earthme/luminol/config/modules/fixes/IncorrectTripwireFixConfig.java
|
|
||||||
new file mode 100644
|
|
||||||
index 0000000000000000000000000000000000000000..79ce93a1e97f176c7b0e5b00d7f0880f0d157d03
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/src/main/java/me/earthme/luminol/config/modules/fixes/IncorrectTripwireFixConfig.java
|
|
||||||
@@ -0,0 +1,20 @@
|
|
||||||
+package me.earthme.luminol.config.modules.fixes;
|
|
||||||
+
|
|
||||||
+import me.earthme.luminol.config.ConfigInfo;
|
|
||||||
+import me.earthme.luminol.config.EnumConfigCategory;
|
|
||||||
+import me.earthme.luminol.config.IConfigModule;
|
|
||||||
+
|
|
||||||
+public class IncorrectTripwireFixConfig implements IConfigModule {
|
|
||||||
+ @ConfigInfo(baseName = "enabled")
|
|
||||||
+ public static boolean enabled = false;
|
|
||||||
+
|
|
||||||
+ @Override
|
|
||||||
+ public EnumConfigCategory getCategory() {
|
|
||||||
+ return EnumConfigCategory.FIXES;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ @Override
|
|
||||||
+ public String getBaseName() {
|
|
||||||
+ return "allow_update_incorrect_trip_wire";
|
|
||||||
+ }
|
|
||||||
+}
|
|
||||||
diff --git a/src/main/java/net/minecraft/world/level/block/TripWireHookBlock.java b/src/main/java/net/minecraft/world/level/block/TripWireHookBlock.java
|
|
||||||
index 8bf94fcf5c46ffe6d90f8431338b768ef1a2dd61..a286d6cd2c371c135cb708f2bee9c5afa7532a92 100644
|
|
||||||
--- a/src/main/java/net/minecraft/world/level/block/TripWireHookBlock.java
|
|
||||||
+++ b/src/main/java/net/minecraft/world/level/block/TripWireHookBlock.java
|
|
||||||
@@ -201,7 +201,7 @@ public class TripWireHookBlock extends Block {
|
|
||||||
BlockState iblockdata4 = aiblockdata[l];
|
|
||||||
|
|
||||||
if (iblockdata4 != null) {
|
|
||||||
- if (world.getBlockState(blockposition2).is(Blocks.TRIPWIRE)) { // Paper - Fix tripwire disarming not working as intended
|
|
||||||
+ if (world.getBlockState(blockposition2).is(Blocks.TRIPWIRE) || me.earthme.luminol.config.modules.fixes.IncorrectTripwireFixConfig.enabled) { // Paper - Fix tripwire disarming not working as intended //Luminol - Add config for this
|
|
||||||
world.setBlock(blockposition2, (BlockState) iblockdata4.trySetValue(TripWireHookBlock.ATTACHED, flag4), 3);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -31,24 +31,15 @@ index 0000000000000000000000000000000000000000..8487799cdfb776eaca33b57f7c99ae3a
|
|||||||
+ }
|
+ }
|
||||||
+}
|
+}
|
||||||
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
||||||
index 318cb1e98a3d73b7893f07c9f0db3adab801b67e..9cbf17436b4cf52aae374767aafe79ea4f60c3ce 100644
|
index c8701a2a0a3cbd60e263fe5c069b5993b36842a6..46df26bef2f1d4b0bd5a1313e8ee4f86c2fdf355 100644
|
||||||
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
||||||
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
||||||
@@ -17,6 +17,8 @@ import java.util.OptionalInt;
|
@@ -842,6 +842,11 @@ public class ServerPlayer extends Player {
|
||||||
import java.util.Set;
|
|
||||||
import java.util.stream.Collectors;
|
|
||||||
import javax.annotation.Nullable;
|
|
||||||
+
|
|
||||||
+import me.earthme.luminol.config.modules.fixes.FoliaSpectorTeleportationFixConfig;
|
|
||||||
import net.minecraft.BlockUtil;
|
|
||||||
import net.minecraft.ChatFormatting;
|
|
||||||
import net.minecraft.CrashReport;
|
|
||||||
@@ -842,6 +844,11 @@ public class ServerPlayer extends Player {
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Entity entity = this.getCamera();
|
Entity entity = this.getCamera();
|
||||||
+ //Luminol start - Fix folia spector teleportation
|
+ //Luminol start - Fix folia spector teleportation
|
||||||
+ if (!io.papermc.paper.util.TickThread.isTickThreadFor(entity) && FoliaSpectorTeleportationFixConfig.fixSpectorTeleportFolia){
|
+ if (!io.papermc.paper.util.TickThread.isTickThreadFor(entity) && me.earthme.luminol.config.modules.fixes.FoliaSpectorTeleportationFixConfig.fixSpectorTeleportFolia){
|
||||||
+ this.setCamera(this);
|
+ this.setCamera(this);
|
||||||
+ }
|
+ }
|
||||||
+ //Luminol end
|
+ //Luminol end
|
||||||
@@ -1,77 +0,0 @@
|
|||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: MrHua269 <novau233@163.com>
|
|
||||||
Date: Wed, 7 Feb 2024 07:41:47 +0000
|
|
||||||
Subject: [PATCH] Io_uring channel type support
|
|
||||||
|
|
||||||
|
|
||||||
diff --git a/build.gradle.kts b/build.gradle.kts
|
|
||||||
index 66c34f883a93dd86fcac8029cce63ffe7340c89b..66cb23bce8bf0a96867144874643f771f7440034 100644
|
|
||||||
--- a/build.gradle.kts
|
|
||||||
+++ b/build.gradle.kts
|
|
||||||
@@ -35,6 +35,7 @@ dependencies {
|
|
||||||
log4jPlugins.annotationProcessorConfigurationName("org.apache.logging.log4j:log4j-core:2.19.0") // Paper - Needed to generate meta for our Log4j plugins
|
|
||||||
runtimeOnly(log4jPlugins.output)
|
|
||||||
alsoShade(log4jPlugins.output)
|
|
||||||
+ implementation("io.netty.incubator:netty-incubator-transport-native-io_uring:0.0.21.Final:linux-x86_64") //Luminol - io_uring Libraries
|
|
||||||
implementation("io.netty:netty-codec-haproxy:4.1.97.Final") // Paper - Add support for proxy protocol
|
|
||||||
// Paper end
|
|
||||||
implementation("org.apache.logging.log4j:log4j-iostreams:2.19.0") // Paper - remove exclusion
|
|
||||||
diff --git a/src/main/java/me/earthme/luminol/config/modules/misc/IOUringSupportConfig.java b/src/main/java/me/earthme/luminol/config/modules/misc/IOUringSupportConfig.java
|
|
||||||
new file mode 100644
|
|
||||||
index 0000000000000000000000000000000000000000..f3090b6e11d82d02528c7afd358ef4db61707092
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/src/main/java/me/earthme/luminol/config/modules/misc/IOUringSupportConfig.java
|
|
||||||
@@ -0,0 +1,22 @@
|
|
||||||
+package me.earthme.luminol.config.modules.misc;
|
|
||||||
+
|
|
||||||
+import me.earthme.luminol.config.ConfigInfo;
|
|
||||||
+import me.earthme.luminol.config.EnumConfigCategory;
|
|
||||||
+import me.earthme.luminol.config.HotReloadUnsupported;
|
|
||||||
+import me.earthme.luminol.config.IConfigModule;
|
|
||||||
+
|
|
||||||
+public class IOUringSupportConfig implements IConfigModule {
|
|
||||||
+ @HotReloadUnsupported
|
|
||||||
+ @ConfigInfo(baseName = "enabled")
|
|
||||||
+ public static boolean enabled = false;
|
|
||||||
+
|
|
||||||
+ @Override
|
|
||||||
+ public EnumConfigCategory getCategory() {
|
|
||||||
+ return EnumConfigCategory.MISC;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ @Override
|
|
||||||
+ public String getBaseName() {
|
|
||||||
+ return "io_uring_support";
|
|
||||||
+ }
|
|
||||||
+}
|
|
||||||
diff --git a/src/main/java/net/minecraft/server/network/ServerConnectionListener.java b/src/main/java/net/minecraft/server/network/ServerConnectionListener.java
|
|
||||||
index 6e95017f4c36208abdf344e3b7d55efe2d5b4e10..bf87a55d78155ea5c303ec28d6a0154e80d7fce3 100644
|
|
||||||
--- a/src/main/java/net/minecraft/server/network/ServerConnectionListener.java
|
|
||||||
+++ b/src/main/java/net/minecraft/server/network/ServerConnectionListener.java
|
|
||||||
@@ -73,6 +73,10 @@ public class ServerConnectionListener {
|
|
||||||
}
|
|
||||||
// Paper end - prevent blocking on adding a new connection while the server is ticking
|
|
||||||
|
|
||||||
+ //Luminol start - io_uring support
|
|
||||||
+ public static final Supplier<io.netty.incubator.channel.uring.IOUringEventLoopGroup> SERVER_IO_URING_WORKER_GROUP = Suppliers.memoize(() -> new io.netty.incubator.channel.uring.IOUringEventLoopGroup(0, (new ThreadFactoryBuilder()).setNameFormat("Netty IO_URING Server IO #%d").setDaemon(true).setUncaughtExceptionHandler(new net.minecraft.DefaultUncaughtExceptionHandlerWithName(LOGGER)).build()));
|
|
||||||
+ //Luminol end
|
|
||||||
+
|
|
||||||
public ServerConnectionListener(MinecraftServer server) {
|
|
||||||
this.server = server;
|
|
||||||
this.running = true;
|
|
||||||
@@ -90,7 +94,14 @@ public class ServerConnectionListener {
|
|
||||||
Class oclass;
|
|
||||||
EventLoopGroup eventloopgroup;
|
|
||||||
|
|
||||||
- if (Epoll.isAvailable() && this.server.isEpollEnabled()) {
|
|
||||||
+ //Luminol start - io_uring support
|
|
||||||
+ if (io.netty.incubator.channel.uring.IOUring.isAvailable() && me.earthme.luminol.config.modules.misc.IOUringSupportConfig.enabled){
|
|
||||||
+ eventloopgroup = SERVER_IO_URING_WORKER_GROUP.get();
|
|
||||||
+ oclass = io.netty.incubator.channel.uring.IOUringServerSocketChannel.class;
|
|
||||||
+ ServerConnectionListener.LOGGER.info("Using io_uring channel type");
|
|
||||||
+ }
|
|
||||||
+ else if (Epoll.isAvailable() && this.server.isEpollEnabled()) {
|
|
||||||
+ //Luminol end
|
|
||||||
// Paper start - Unix domain socket support
|
|
||||||
if (address instanceof io.netty.channel.unix.DomainSocketAddress) {
|
|
||||||
oclass = io.netty.channel.epoll.EpollServerDomainSocketChannel.class;
|
|
||||||
@@ -33,27 +33,10 @@ index 0000000000000000000000000000000000000000..73d99a105a18231901e691922b0c283a
|
|||||||
+ }
|
+ }
|
||||||
+}
|
+}
|
||||||
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
|
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
|
||||||
index 9bbfac91f97331b1b558264c867b7e00185291f2..dfb1b8c3af93bfcddb976c003c6ac2d52afc41c6 100644
|
index 64e58d2d69f837b268e6a70b8a795e6fd5b1ed0c..36f0175228f4ab80ebc67082e7c9bbbc2c14e147 100644
|
||||||
--- a/src/main/java/net/minecraft/world/entity/Entity.java
|
--- a/src/main/java/net/minecraft/world/entity/Entity.java
|
||||||
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
|
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
|
||||||
@@ -7,6 +7,7 @@ import com.google.common.collect.Lists;
|
@@ -1086,10 +1086,40 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
|
||||||
import com.google.common.collect.Sets;
|
|
||||||
import com.google.common.collect.UnmodifiableIterator;
|
|
||||||
import com.mojang.logging.LogUtils;
|
|
||||||
+import io.papermc.paper.util.TickThread;
|
|
||||||
import it.unimi.dsi.fastutil.objects.Object2DoubleArrayMap;
|
|
||||||
import it.unimi.dsi.fastutil.objects.Object2DoubleMap;
|
|
||||||
import java.util.Arrays;
|
|
||||||
@@ -24,6 +25,8 @@ import java.util.function.BiConsumer;
|
|
||||||
import java.util.function.Predicate;
|
|
||||||
import java.util.stream.Stream;
|
|
||||||
import javax.annotation.Nullable;
|
|
||||||
+
|
|
||||||
+import me.earthme.luminol.config.modules.fixes.FoliaEntityMovingFixConfig;
|
|
||||||
import net.minecraft.BlockUtil;
|
|
||||||
import net.minecraft.CrashReport;
|
|
||||||
import net.minecraft.CrashReportCategory;
|
|
||||||
@@ -1086,10 +1089,40 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
|
|
||||||
}
|
}
|
||||||
// Paper end - detailed watchdog information
|
// Paper end - detailed watchdog information
|
||||||
|
|
||||||
@@ -66,13 +49,13 @@ index 9bbfac91f97331b1b558264c867b7e00185291f2..dfb1b8c3af93bfcddb976c003c6ac2d5
|
|||||||
// Paper start - detailed watchdog information
|
// Paper start - detailed watchdog information
|
||||||
io.papermc.paper.util.TickThread.ensureTickThread("Cannot move an entity off-main");
|
io.papermc.paper.util.TickThread.ensureTickThread("Cannot move an entity off-main");
|
||||||
+ //Luminol start - Fix high position moving
|
+ //Luminol start - Fix high position moving
|
||||||
+ if (me.earthme.luminol.config.modules.fixes.FoliaEntityMovingFixConfig.enabled && TickThread.isTickThread()){ //Except the threads because it may be called by the chunk system worker thread
|
+ if (me.earthme.luminol.config.modules.fixes.FoliaEntityMovingFixConfig.enabled && io.papermc.paper.util.TickThread.isTickThread()){ //Except the threads because it may be called by the chunk system worker thread
|
||||||
+ if (this.preventMoving){
|
+ if (this.preventMoving){
|
||||||
+ return;
|
+ return;
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ var finalPosition = movement.add(this.position);
|
+ var finalPosition = movement.add(this.position);
|
||||||
+ if (!TickThread.isTickThreadFor(((ServerLevel) this.level),finalPosition)){
|
+ if (!io.papermc.paper.util.TickThread.isTickThreadFor(((ServerLevel) this.level),finalPosition)){
|
||||||
+ this.preventMoving = true;
|
+ this.preventMoving = true;
|
||||||
+ this.teleportAsync(
|
+ this.teleportAsync(
|
||||||
+ (ServerLevel) this.level(),
|
+ (ServerLevel) this.level(),
|
||||||
@@ -84,7 +67,7 @@ index 9bbfac91f97331b1b558264c867b7e00185291f2..dfb1b8c3af93bfcddb976c003c6ac2d5
|
|||||||
+ this.preventMoving = false;
|
+ this.preventMoving = false;
|
||||||
+ }
|
+ }
|
||||||
+ );
|
+ );
|
||||||
+ if (FoliaEntityMovingFixConfig.warnOnDetected){
|
+ if (me.earthme.luminol.config.modules.fixes.FoliaEntityMovingFixConfig.warnOnDetected){
|
||||||
+ MinecraftServer.LOGGER.warn("Entity {} with entityId {} has tried moving to another region!",this.type.getCategory().getName(),this.getId());
|
+ MinecraftServer.LOGGER.warn("Entity {} with entityId {} has tried moving to another region!",this.type.getCategory().getName(),this.getId());
|
||||||
+ }
|
+ }
|
||||||
+ return;
|
+ return;
|
||||||
@@ -33,10 +33,10 @@ index 0000000000000000000000000000000000000000..b8aceab54bb60000e7c5681014027102
|
|||||||
+ }
|
+ }
|
||||||
+}
|
+}
|
||||||
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
||||||
index 9cbf17436b4cf52aae374767aafe79ea4f60c3ce..f2068e7608ed765e35759eb981db6c95b07a06d8 100644
|
index 46df26bef2f1d4b0bd5a1313e8ee4f86c2fdf355..0086a1a4611b983eefd0cb7bf8e9cff677246d0f 100644
|
||||||
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
||||||
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
||||||
@@ -332,6 +332,10 @@ public class ServerPlayer extends Player {
|
@@ -330,6 +330,10 @@ public class ServerPlayer extends Player {
|
||||||
public double lastEntitySpawnRadiusSquared = -1.0;
|
public double lastEntitySpawnRadiusSquared = -1.0;
|
||||||
// Paper end - optimise chunk tick iteration
|
// Paper end - optimise chunk tick iteration
|
||||||
|
|
||||||
@@ -48,7 +48,7 @@ index 9cbf17436b4cf52aae374767aafe79ea4f60c3ce..f2068e7608ed765e35759eb981db6c95
|
|||||||
super(world, world.getSharedSpawnPos(), world.getSharedSpawnAngle(), profile);
|
super(world, world.getSharedSpawnPos(), world.getSharedSpawnAngle(), profile);
|
||||||
this.chatVisibility = ChatVisiblity.FULL;
|
this.chatVisibility = ChatVisiblity.FULL;
|
||||||
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
||||||
index 3b2508dc6cd4f70b09dce3b7e745e6efabaaa74e..b3ff8ed6d0f0414c15b9d2e6a51a0e34c361f92a 100644
|
index 954809d8997750959541e6462668f17efd0b0f70..4fc9a47745b817d9ee2da4776cab26ff9f3b0025 100644
|
||||||
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
||||||
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
||||||
@@ -675,7 +675,9 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
|
@@ -675,7 +675,9 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
|
||||||
@@ -72,41 +72,17 @@ index 3b2508dc6cd4f70b09dce3b7e745e6efabaaa74e..b3ff8ed6d0f0414c15b9d2e6a51a0e34
|
|||||||
// If the event is cancelled we move the player back to their old location.
|
// If the event is cancelled we move the player back to their old location.
|
||||||
if (event.isCancelled()) {
|
if (event.isCancelled()) {
|
||||||
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
|
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
|
||||||
index dfb1b8c3af93bfcddb976c003c6ac2d52afc41c6..09cdd28dcb2357ba3d7be316b7ca94dc93ac5dd0 100644
|
index 36f0175228f4ab80ebc67082e7c9bbbc2c14e147..ad15df5dfe34e20a6b5dafaf01e8a7306b158109 100644
|
||||||
--- a/src/main/java/net/minecraft/world/entity/Entity.java
|
--- a/src/main/java/net/minecraft/world/entity/Entity.java
|
||||||
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
|
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
|
||||||
@@ -27,6 +27,7 @@ import java.util.stream.Stream;
|
@@ -3986,6 +3986,18 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
|
||||||
import javax.annotation.Nullable;
|
|
||||||
|
|
||||||
import me.earthme.luminol.config.modules.fixes.FoliaEntityMovingFixConfig;
|
|
||||||
+import me.earthme.luminol.config.modules.fixes.FoliaTeleportAsyncFixConfig;
|
|
||||||
import net.minecraft.BlockUtil;
|
|
||||||
import net.minecraft.CrashReport;
|
|
||||||
import net.minecraft.CrashReportCategory;
|
|
||||||
@@ -59,7 +60,6 @@ import net.minecraft.network.syncher.EntityDataSerializers;
|
|
||||||
import net.minecraft.network.syncher.SynchedEntityData;
|
|
||||||
import net.minecraft.resources.ResourceKey;
|
|
||||||
import net.minecraft.resources.ResourceLocation;
|
|
||||||
-import io.papermc.paper.util.MCUtil;
|
|
||||||
import net.minecraft.server.MinecraftServer;
|
|
||||||
import net.minecraft.server.level.ServerLevel;
|
|
||||||
import net.minecraft.server.level.ServerPlayer;
|
|
||||||
@@ -132,7 +132,6 @@ import org.joml.Vector3f;
|
|
||||||
import org.slf4j.Logger;
|
|
||||||
import org.bukkit.Bukkit;
|
|
||||||
import org.bukkit.Location;
|
|
||||||
-import org.bukkit.Server;
|
|
||||||
import org.bukkit.block.BlockFace;
|
|
||||||
import org.bukkit.command.CommandSender;
|
|
||||||
import org.bukkit.craftbukkit.event.CraftPortalEvent;
|
|
||||||
@@ -3989,6 +3988,18 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
|
|
||||||
java.util.function.Consumer<Entity> teleportComplete) {
|
java.util.function.Consumer<Entity> teleportComplete) {
|
||||||
io.papermc.paper.util.TickThread.ensureTickThread(this, "Cannot teleport entity async");
|
io.papermc.paper.util.TickThread.ensureTickThread(this, "Cannot teleport entity async");
|
||||||
|
|
||||||
+ //Luminol start - Prevent teleportAsync calling during moving event being handled
|
+ //Luminol start - Prevent teleportAsync calling during moving event being handled
|
||||||
+ if (this instanceof ServerPlayer player && FoliaTeleportAsyncFixConfig.enabled){
|
+ if (this instanceof ServerPlayer player && me.earthme.luminol.config.modules.fixes.FoliaTeleportAsyncFixConfig.enabled){
|
||||||
+ if (player.handlingMoveEvent){
|
+ if (player.handlingMoveEvent){
|
||||||
+ if (FoliaTeleportAsyncFixConfig.throwOnDetected){
|
+ if (me.earthme.luminol.config.modules.fixes.FoliaTeleportAsyncFixConfig.throwOnDetected){
|
||||||
+ throw new IllegalStateException("Player " + player.getScoreboardName() + " is trying to teleport to " + pos + " during move event handling!");
|
+ throw new IllegalStateException("Player " + player.getScoreboardName() + " is trying to teleport to " + pos + " during move event handling!");
|
||||||
+ }
|
+ }
|
||||||
+ MinecraftServer.LOGGER.warn("Player {} is trying to teleport to {} during move event handling!",player.getScoreboardName(),pos);
|
+ MinecraftServer.LOGGER.warn("Player {} is trying to teleport to {} during move event handling!",player.getScoreboardName(),pos);
|
||||||
@@ -119,33 +95,16 @@ index dfb1b8c3af93bfcddb976c003c6ac2d52afc41c6..09cdd28dcb2357ba3d7be316b7ca94dc
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
diff --git a/src/main/java/net/minecraft/world/entity/vehicle/AbstractMinecart.java b/src/main/java/net/minecraft/world/entity/vehicle/AbstractMinecart.java
|
diff --git a/src/main/java/net/minecraft/world/entity/vehicle/AbstractMinecart.java b/src/main/java/net/minecraft/world/entity/vehicle/AbstractMinecart.java
|
||||||
index d514ec1e4cbdc579c3a61533998437903afdc8b6..c547376967360402d22657d25e1100366dd50c59 100644
|
index d514ec1e4cbdc579c3a61533998437903afdc8b6..ed4cbc459bf5f4b7615c6e2ab0d99728d18f2598 100644
|
||||||
--- a/src/main/java/net/minecraft/world/entity/vehicle/AbstractMinecart.java
|
--- a/src/main/java/net/minecraft/world/entity/vehicle/AbstractMinecart.java
|
||||||
+++ b/src/main/java/net/minecraft/world/entity/vehicle/AbstractMinecart.java
|
+++ b/src/main/java/net/minecraft/world/entity/vehicle/AbstractMinecart.java
|
||||||
@@ -5,6 +5,8 @@ import com.google.common.collect.ImmutableMap;
|
@@ -378,7 +378,21 @@ public abstract class AbstractMinecart extends VehicleEntity {
|
||||||
import com.google.common.collect.Maps;
|
|
||||||
import com.google.common.collect.UnmodifiableIterator;
|
|
||||||
import com.mojang.datafixers.util.Pair;
|
|
||||||
+
|
|
||||||
+import java.util.ArrayList;
|
|
||||||
import java.util.Iterator;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
@@ -21,6 +23,7 @@ import net.minecraft.network.syncher.EntityDataAccessor;
|
|
||||||
import net.minecraft.network.syncher.EntityDataSerializers;
|
|
||||||
import net.minecraft.network.syncher.SynchedEntityData;
|
|
||||||
import net.minecraft.server.level.ServerLevel;
|
|
||||||
+import net.minecraft.server.level.ServerPlayer;
|
|
||||||
import net.minecraft.tags.BlockTags;
|
|
||||||
import net.minecraft.util.Mth;
|
|
||||||
import net.minecraft.world.entity.Entity;
|
|
||||||
@@ -378,7 +381,21 @@ public abstract class AbstractMinecart extends VehicleEntity {
|
|
||||||
this.level().getCraftServer().getPluginManager().callEvent(new org.bukkit.event.vehicle.VehicleUpdateEvent(vehicle));
|
this.level().getCraftServer().getPluginManager().callEvent(new org.bukkit.event.vehicle.VehicleUpdateEvent(vehicle));
|
||||||
|
|
||||||
if (!from.equals(to)) {
|
if (!from.equals(to)) {
|
||||||
+ //Luminol start - Prevent teleportAsync calling during moving event being handled
|
+ //Luminol start - Prevent teleportAsync calling during moving event being handled
|
||||||
+ for (Entity passenger : this.getPassengers()) {
|
+ for (Entity passenger : this.getPassengers()) {
|
||||||
+ if (passenger instanceof ServerPlayer player){
|
+ if (passenger instanceof net.minecraft.server.level.ServerPlayer player){
|
||||||
+ player.handlingMoveEvent = true;
|
+ player.handlingMoveEvent = true;
|
||||||
+ }
|
+ }
|
||||||
+ }
|
+ }
|
||||||
@@ -153,7 +112,7 @@ index d514ec1e4cbdc579c3a61533998437903afdc8b6..c547376967360402d22657d25e110036
|
|||||||
this.level().getCraftServer().getPluginManager().callEvent(new org.bukkit.event.vehicle.VehicleMoveEvent(vehicle, from, to));
|
this.level().getCraftServer().getPluginManager().callEvent(new org.bukkit.event.vehicle.VehicleMoveEvent(vehicle, from, to));
|
||||||
+ //Luminol start - Prevent teleportAsync calling during moving event being handled
|
+ //Luminol start - Prevent teleportAsync calling during moving event being handled
|
||||||
+ for (Entity passenger : this.getPassengers()) {
|
+ for (Entity passenger : this.getPassengers()) {
|
||||||
+ if (passenger instanceof ServerPlayer player){
|
+ if (passenger instanceof net.minecraft.server.level.ServerPlayer player){
|
||||||
+ player.handlingMoveEvent = false;
|
+ player.handlingMoveEvent = false;
|
||||||
+ }
|
+ }
|
||||||
+ }
|
+ }
|
||||||
@@ -162,33 +121,16 @@ index d514ec1e4cbdc579c3a61533998437903afdc8b6..c547376967360402d22657d25e110036
|
|||||||
// CraftBukkit end
|
// CraftBukkit end
|
||||||
if (this.getMinecartType() == AbstractMinecart.Type.RIDEABLE && this.getDeltaMovement().horizontalDistanceSqr() > 0.01D) {
|
if (this.getMinecartType() == AbstractMinecart.Type.RIDEABLE && this.getDeltaMovement().horizontalDistanceSqr() > 0.01D) {
|
||||||
diff --git a/src/main/java/net/minecraft/world/entity/vehicle/Boat.java b/src/main/java/net/minecraft/world/entity/vehicle/Boat.java
|
diff --git a/src/main/java/net/minecraft/world/entity/vehicle/Boat.java b/src/main/java/net/minecraft/world/entity/vehicle/Boat.java
|
||||||
index db6aa75d642f4a7258f197933671907faf79c8f2..b7c792f75dda1c62ee3730b8204c347848710a9c 100644
|
index db6aa75d642f4a7258f197933671907faf79c8f2..065d4c06e3fd93fb46595b9864b150ea2480f5fc 100644
|
||||||
--- a/src/main/java/net/minecraft/world/entity/vehicle/Boat.java
|
--- a/src/main/java/net/minecraft/world/entity/vehicle/Boat.java
|
||||||
+++ b/src/main/java/net/minecraft/world/entity/vehicle/Boat.java
|
+++ b/src/main/java/net/minecraft/world/entity/vehicle/Boat.java
|
||||||
@@ -2,6 +2,8 @@ package net.minecraft.world.entity.vehicle;
|
@@ -377,8 +377,22 @@ public class Boat extends VehicleEntity implements VariantHolder<Boat.Type> {
|
||||||
|
|
||||||
import com.google.common.collect.Lists;
|
|
||||||
import com.google.common.collect.UnmodifiableIterator;
|
|
||||||
+
|
|
||||||
+import java.util.ArrayList;
|
|
||||||
import java.util.Iterator;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.function.IntFunction;
|
|
||||||
@@ -16,6 +18,7 @@ import net.minecraft.network.protocol.game.ServerboundPaddleBoatPacket;
|
|
||||||
import net.minecraft.network.syncher.EntityDataAccessor;
|
|
||||||
import net.minecraft.network.syncher.EntityDataSerializers;
|
|
||||||
import net.minecraft.network.syncher.SynchedEntityData;
|
|
||||||
+import net.minecraft.server.level.ServerPlayer;
|
|
||||||
import net.minecraft.sounds.SoundEvent;
|
|
||||||
import net.minecraft.sounds.SoundEvents;
|
|
||||||
import net.minecraft.tags.EntityTypeTags;
|
|
||||||
@@ -377,8 +380,22 @@ public class Boat extends VehicleEntity implements VariantHolder<Boat.Type> {
|
|
||||||
server.getPluginManager().callEvent(new org.bukkit.event.vehicle.VehicleUpdateEvent(vehicle));
|
server.getPluginManager().callEvent(new org.bukkit.event.vehicle.VehicleUpdateEvent(vehicle));
|
||||||
|
|
||||||
if (this.lastLocation != null && !this.lastLocation.equals(to)) {
|
if (this.lastLocation != null && !this.lastLocation.equals(to)) {
|
||||||
+ //Luminol start - Prevent teleportAsync calling during moving event being handled
|
+ //Luminol start - Prevent teleportAsync calling during moving event being handled
|
||||||
+ for (Entity passenger : this.getPassengers()) {
|
+ for (Entity passenger : this.getPassengers()) {
|
||||||
+ if (passenger instanceof ServerPlayer player){
|
+ if (passenger instanceof net.minecraft.server.level.ServerPlayer player){
|
||||||
+ player.handlingMoveEvent = true;
|
+ player.handlingMoveEvent = true;
|
||||||
+ }
|
+ }
|
||||||
+ }
|
+ }
|
||||||
@@ -197,7 +139,7 @@ index db6aa75d642f4a7258f197933671907faf79c8f2..b7c792f75dda1c62ee3730b8204c3478
|
|||||||
server.getPluginManager().callEvent(event);
|
server.getPluginManager().callEvent(event);
|
||||||
+ //Luminol start - Prevent teleportAsync calling during moving event being handled
|
+ //Luminol start - Prevent teleportAsync calling during moving event being handled
|
||||||
+ for (Entity passenger : this.getPassengers()) {
|
+ for (Entity passenger : this.getPassengers()) {
|
||||||
+ if (passenger instanceof ServerPlayer player){
|
+ if (passenger instanceof net.minecraft.server.level.ServerPlayer player){
|
||||||
+ player.handlingMoveEvent = false;
|
+ player.handlingMoveEvent = false;
|
||||||
+ }
|
+ }
|
||||||
+ }
|
+ }
|
||||||
@@ -5,7 +5,7 @@ Subject: [PATCH] Kaiiju linear region format and settings
|
|||||||
|
|
||||||
|
|
||||||
diff --git a/build.gradle.kts b/build.gradle.kts
|
diff --git a/build.gradle.kts b/build.gradle.kts
|
||||||
index 66cb23bce8bf0a96867144874643f771f7440034..57fcd58883effe57051b72a4e9f4af91aacd421a 100644
|
index 247598b6c73aca3743f4b16b47520f8ba16b2ed0..dd0a3477d69ab8f59f00ae930e983b57eaf322e2 100644
|
||||||
--- a/build.gradle.kts
|
--- a/build.gradle.kts
|
||||||
+++ b/build.gradle.kts
|
+++ b/build.gradle.kts
|
||||||
@@ -20,6 +20,10 @@ dependencies {
|
@@ -20,6 +20,10 @@ dependencies {
|
||||||
@@ -93,10 +93,10 @@ index 0000000000000000000000000000000000000000..dcfbabf54b19a4c29d5c95830242c5c2
|
|||||||
+}
|
+}
|
||||||
diff --git a/src/main/java/dev/kaiijumc/kaiiju/region/LinearRegionFile.java b/src/main/java/dev/kaiijumc/kaiiju/region/LinearRegionFile.java
|
diff --git a/src/main/java/dev/kaiijumc/kaiiju/region/LinearRegionFile.java b/src/main/java/dev/kaiijumc/kaiiju/region/LinearRegionFile.java
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
index 0000000000000000000000000000000000000000..e40989889f3821bb7484fc0bae5d94b033013904
|
index 0000000000000000000000000000000000000000..dc5a5f42c9ca7a50295c18424722568a3ad33fa5
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/src/main/java/dev/kaiijumc/kaiiju/region/LinearRegionFile.java
|
+++ b/src/main/java/dev/kaiijumc/kaiiju/region/LinearRegionFile.java
|
||||||
@@ -0,0 +1,316 @@
|
@@ -0,0 +1,324 @@
|
||||||
+package dev.kaiijumc.kaiiju.region;
|
+package dev.kaiijumc.kaiiju.region;
|
||||||
+
|
+
|
||||||
+import com.github.luben.zstd.ZstdInputStream;
|
+import com.github.luben.zstd.ZstdInputStream;
|
||||||
@@ -225,7 +225,7 @@ index 0000000000000000000000000000000000000000..e40989889f3821bb7484fc0bae5d94b0
|
|||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ public void flush() throws IOException {
|
+ public void flush() throws IOException {
|
||||||
+ if (isMarkedToSave()) flushWrapper(); // sync
|
+ if (getAndResetSaveMarker()) flushWrapper(); // sync
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ private void markToSave() {
|
+ private void markToSave() {
|
||||||
@@ -233,10 +233,18 @@ index 0000000000000000000000000000000000000000..e40989889f3821bb7484fc0bae5d94b0
|
|||||||
+ markedToSave.set(true);
|
+ markedToSave.set(true);
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ public boolean isMarkedToSave() {
|
+ public boolean getAndResetSaveMarker() {
|
||||||
+ return markedToSave.getAndSet(false);
|
+ return markedToSave.getAndSet(false);
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
|
+ public boolean isMarkedToSave(){
|
||||||
|
+ return this.markedToSave.get();
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ public void resetSaveMarker(){
|
||||||
|
+ this.markedToSave.set(false);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
+ public void flushWrapper() {
|
+ public void flushWrapper() {
|
||||||
+ try {
|
+ try {
|
||||||
+ save();
|
+ save();
|
||||||
@@ -415,24 +423,21 @@ index 0000000000000000000000000000000000000000..e40989889f3821bb7484fc0bae5d94b0
|
|||||||
+}
|
+}
|
||||||
diff --git a/src/main/java/dev/kaiijumc/kaiiju/region/LinearRegionFileFlusher.java b/src/main/java/dev/kaiijumc/kaiiju/region/LinearRegionFileFlusher.java
|
diff --git a/src/main/java/dev/kaiijumc/kaiiju/region/LinearRegionFileFlusher.java b/src/main/java/dev/kaiijumc/kaiiju/region/LinearRegionFileFlusher.java
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
index 0000000000000000000000000000000000000000..f06d7767c79e465f999b2032086cc224de95152a
|
index 0000000000000000000000000000000000000000..65435eb666b2e1cabffc145e016faa5e3b373464
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/src/main/java/dev/kaiijumc/kaiiju/region/LinearRegionFileFlusher.java
|
+++ b/src/main/java/dev/kaiijumc/kaiiju/region/LinearRegionFileFlusher.java
|
||||||
@@ -0,0 +1,44 @@
|
@@ -0,0 +1,57 @@
|
||||||
+package dev.kaiijumc.kaiiju.region;
|
+package dev.kaiijumc.kaiiju.region;
|
||||||
+
|
+
|
||||||
+import com.google.common.util.concurrent.ThreadFactoryBuilder;
|
+import com.google.common.util.concurrent.ThreadFactoryBuilder;
|
||||||
+import java.util.Queue;
|
+
|
||||||
|
+import java.util.Set;
|
||||||
+import java.util.concurrent.*;
|
+import java.util.concurrent.*;
|
||||||
+import org.bukkit.Bukkit;
|
+import org.bukkit.Bukkit;
|
||||||
+
|
+
|
||||||
+public class LinearRegionFileFlusher {
|
+public class LinearRegionFileFlusher {
|
||||||
+ private final Queue<LinearRegionFile> savingQueue = new LinkedBlockingQueue<>();
|
+ private final Set<LinearRegionFile> pendingSaving = ConcurrentHashMap.newKeySet();
|
||||||
+ private final ScheduledExecutorService scheduler = Executors.newSingleThreadScheduledExecutor(
|
+
|
||||||
+ new ThreadFactoryBuilder()
|
|
||||||
+ .setNameFormat("linear-flush-scheduler")
|
|
||||||
+ .build()
|
|
||||||
+ );
|
|
||||||
+ private final ExecutorService executor = Executors.newFixedThreadPool(
|
+ private final ExecutorService executor = Executors.newFixedThreadPool(
|
||||||
+ me.earthme.luminol.config.modules.misc.RegionFormatConfig.linearFlushThreads,
|
+ me.earthme.luminol.config.modules.misc.RegionFormatConfig.linearFlushThreads,
|
||||||
+ new ThreadFactoryBuilder()
|
+ new ThreadFactoryBuilder()
|
||||||
@@ -440,27 +445,43 @@ index 0000000000000000000000000000000000000000..f06d7767c79e465f999b2032086cc224
|
|||||||
+ .build()
|
+ .build()
|
||||||
+ );
|
+ );
|
||||||
+
|
+
|
||||||
|
+ private final Executor delayedFlusher = CompletableFuture.delayedExecutor(
|
||||||
|
+ me.earthme.luminol.config.modules.misc.RegionFormatConfig.linearFlushFrequency,
|
||||||
|
+ TimeUnit.SECONDS,
|
||||||
|
+ executor
|
||||||
|
+ );
|
||||||
|
+
|
||||||
+ public LinearRegionFileFlusher() {
|
+ public LinearRegionFileFlusher() {
|
||||||
+ Bukkit.getLogger().info("Using " + me.earthme.luminol.config.modules.misc.RegionFormatConfig.linearFlushThreads + " threads for linear region flushing.");
|
+ Bukkit.getLogger().info("Using " + me.earthme.luminol.config.modules.misc.RegionFormatConfig.linearFlushThreads + " threads for linear region flushing.");
|
||||||
+ scheduler.scheduleAtFixedRate(this::pollAndFlush, 0L, me.earthme.luminol.config.modules.misc.RegionFormatConfig.linearFlushFrequency, TimeUnit.SECONDS);
|
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ public void scheduleSave(LinearRegionFile regionFile) {
|
+ public void scheduleSave(LinearRegionFile regionFile) {
|
||||||
+ if (savingQueue.contains(regionFile)) return;
|
+ if (this.pendingSaving.contains(regionFile) || !regionFile.isMarkedToSave()){
|
||||||
+ savingQueue.add(regionFile);
|
+ return;
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ private void pollAndFlush() {
|
|
||||||
+ while (!savingQueue.isEmpty()) {
|
|
||||||
+ LinearRegionFile regionFile = savingQueue.poll();
|
|
||||||
+ if (!regionFile.closed && regionFile.isMarkedToSave())
|
|
||||||
+ executor.execute(regionFile::flushWrapper);
|
|
||||||
+ }
|
+ }
|
||||||
|
+
|
||||||
|
+ this.pendingSaving.add(regionFile);
|
||||||
|
+ this.delayedFlusher.execute(()->{
|
||||||
|
+ try {
|
||||||
|
+ if (!regionFile.closed && regionFile.isMarkedToSave()){
|
||||||
|
+ regionFile.flushWrapper();
|
||||||
|
+ }
|
||||||
|
+ }finally {
|
||||||
|
+ regionFile.resetSaveMarker();
|
||||||
|
+ this.pendingSaving.remove(regionFile);
|
||||||
|
+ }
|
||||||
|
+ });
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ public void shutdown() {
|
+ public void shutdown() {
|
||||||
+ executor.shutdown();
|
+ this.executor.shutdown();
|
||||||
+ scheduler.shutdown();
|
+ for (;;) {
|
||||||
|
+ try {
|
||||||
|
+ if (this.executor.awaitTermination(5_00,TimeUnit.MILLISECONDS)) break;
|
||||||
|
+ } catch (InterruptedException e) {
|
||||||
|
+ e.printStackTrace();
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
+ }
|
+ }
|
||||||
+}
|
+}
|
||||||
diff --git a/src/main/java/dev/kaiijumc/kaiiju/region/RegionFileFormat.java b/src/main/java/dev/kaiijumc/kaiiju/region/RegionFileFormat.java
|
diff --git a/src/main/java/dev/kaiijumc/kaiiju/region/RegionFileFormat.java b/src/main/java/dev/kaiijumc/kaiiju/region/RegionFileFormat.java
|
||||||
@@ -573,7 +594,7 @@ index 9017907c0ec67a37a506f09b7e4499cef7885279..8b9ffcaab5d71660291d1c0454d2abd9
|
|||||||
|
|
||||||
diff --git a/src/main/java/me/earthme/luminol/config/modules/misc/RegionFormatConfig.java b/src/main/java/me/earthme/luminol/config/modules/misc/RegionFormatConfig.java
|
diff --git a/src/main/java/me/earthme/luminol/config/modules/misc/RegionFormatConfig.java b/src/main/java/me/earthme/luminol/config/modules/misc/RegionFormatConfig.java
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
index 0000000000000000000000000000000000000000..7c034f65bac5aab4c46a8506efa5befe7891bc99
|
index 0000000000000000000000000000000000000000..5d594b606178bd26180caad49de17c0e67e89747
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/src/main/java/me/earthme/luminol/config/modules/misc/RegionFormatConfig.java
|
+++ b/src/main/java/me/earthme/luminol/config/modules/misc/RegionFormatConfig.java
|
||||||
@@ -0,0 +1,58 @@
|
@@ -0,0 +1,58 @@
|
||||||
@@ -591,7 +612,7 @@ index 0000000000000000000000000000000000000000..7c034f65bac5aab4c46a8506efa5befe
|
|||||||
+ @ConfigInfo(baseName = "formatName")
|
+ @ConfigInfo(baseName = "formatName")
|
||||||
+ private static String formatName = "ANVIL";
|
+ private static String formatName = "ANVIL";
|
||||||
+ @HotReloadUnsupported
|
+ @HotReloadUnsupported
|
||||||
+ @ConfigInfo(baseName = "linear_compression_level")
|
+ @ConfigInfo(baseName = "linear_compression_level",comments = "WARNING: DO NOT USE TOO HIGH COMPRESSION LEVEL(Recommended is 1 which is default value if you are using linear) BECAUSE THAT WOULD MAKE YOUR DATA IN DANGER!")
|
||||||
+ public static int regionFormatLinearCompressionLevel = 1;
|
+ public static int regionFormatLinearCompressionLevel = 1;
|
||||||
+ @HotReloadUnsupported
|
+ @HotReloadUnsupported
|
||||||
+ @ConfigInfo(baseName = "linear_flusher_thread_count")
|
+ @ConfigInfo(baseName = "linear_flusher_thread_count")
|
||||||
@@ -636,7 +657,7 @@ index 0000000000000000000000000000000000000000..7c034f65bac5aab4c46a8506efa5befe
|
|||||||
+ }
|
+ }
|
||||||
+}
|
+}
|
||||||
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
|
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||||
index 59b1da130e519cbe06ed5eedf9e4dc881e45ba36..c924951c3dd7652ee446b40689ff9004546e972a 100644
|
index d2e02ccdfbea138f8afe335a8b8c50f0696d7108..0e495628228543d55a101d7840acb9fd16e1937b 100644
|
||||||
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
|
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||||
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
|
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||||
@@ -923,7 +923,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
@@ -923,7 +923,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
||||||
@@ -705,7 +726,7 @@ index 6ab9f83786dcfbd3156d2f2bd6da57baed1399f4..76ad4d8bce1611ead6f1596b2ba78267
|
|||||||
regionFile.setStatus(chunkPos.x, chunkPos.z, ChunkSerializer.getStatus(compound));
|
regionFile.setStatus(chunkPos.x, chunkPos.z, ChunkSerializer.getStatus(compound));
|
||||||
}
|
}
|
||||||
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
|
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
|
||||||
index 10df17ad79092f3e226df08e58620694b3581758..da6269249a95d78f91e90416a96bf1b776fd9c97 100644
|
index 43b8f64d7c14e6dd0975b24a3205806c4433f26f..eefc98c82c9eb7316f195e306cceb5c9bdcbead8 100644
|
||||||
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
|
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
|
||||||
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
|
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
|
||||||
@@ -446,8 +446,8 @@ public class ServerLevel extends Level implements WorldGenLevel {
|
@@ -446,8 +446,8 @@ public class ServerLevel extends Level implements WorldGenLevel {
|
||||||
@@ -1125,10 +1146,10 @@ index 4aac1979cf57300825a999c876fcf24d3170e68e..3b96582f15d0985b670b5b5a1548800d
|
|||||||
this.factory = factory;
|
this.factory = factory;
|
||||||
this.fixerUpper = dataFixer;
|
this.fixerUpper = dataFixer;
|
||||||
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
||||||
index 379c10e791a961d25d7de571f81ace1ac7d84381..e268ef6a373fa0e144104eb7fcfaf7bc9005c987 100644
|
index becb3b07876715d7c39ba4e7289cc5ac85f84412..6763ebef045f856dac9d25113b7824699934ca44 100644
|
||||||
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
||||||
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
||||||
@@ -575,7 +575,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
|
@@ -576,7 +576,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
|
||||||
world.getChunk(x, z); // make sure we're at ticket level 32 or lower
|
world.getChunk(x, z); // make sure we're at ticket level 32 or lower
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -5,10 +5,10 @@ Subject: [PATCH] Kaiiju Vanilla end portal teleportation
|
|||||||
|
|
||||||
|
|
||||||
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
|
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
|
||||||
index 09cdd28dcb2357ba3d7be316b7ca94dc93ac5dd0..d955a555d260d39812b84eb5319db619ec0f8d28 100644
|
index ad15df5dfe34e20a6b5dafaf01e8a7306b158109..1e1086ea561d8a57a33e57fc310493120530c5cf 100644
|
||||||
--- a/src/main/java/net/minecraft/world/entity/Entity.java
|
--- a/src/main/java/net/minecraft/world/entity/Entity.java
|
||||||
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
|
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
|
||||||
@@ -4195,12 +4195,17 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
|
@@ -4193,12 +4193,17 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
|
||||||
targetPos, 16, // load 16 blocks to be safe from block physics
|
targetPos, 16, // load 16 blocks to be safe from block physics
|
||||||
ca.spottedleaf.concurrentutil.executor.standard.PrioritisedExecutor.Priority.HIGH,
|
ca.spottedleaf.concurrentutil.executor.standard.PrioritisedExecutor.Priority.HIGH,
|
||||||
(chunks) -> {
|
(chunks) -> {
|
||||||
@@ -28,7 +28,7 @@ index 09cdd28dcb2357ba3d7be316b7ca94dc93ac5dd0..d955a555d260d39812b84eb5319db619
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
@@ -4387,6 +4392,10 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
|
@@ -4385,6 +4390,10 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
|
||||||
if (!this.canPortalAsync(takePassengers)) {
|
if (!this.canPortalAsync(takePassengers)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -39,7 +39,7 @@ index 09cdd28dcb2357ba3d7be316b7ca94dc93ac5dd0..d955a555d260d39812b84eb5319db619
|
|||||||
|
|
||||||
Vec3 initialPosition = this.position();
|
Vec3 initialPosition = this.position();
|
||||||
ChunkPos initialPositionChunk = new ChunkPos(
|
ChunkPos initialPositionChunk = new ChunkPos(
|
||||||
@@ -4445,7 +4454,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
|
@@ -4443,7 +4452,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
|
||||||
// place
|
// place
|
||||||
passengerTree.root.placeInAsync(
|
passengerTree.root.placeInAsync(
|
||||||
originWorld, destination, Entity.TELEPORT_FLAG_LOAD_CHUNK | (takePassengers ? Entity.TELEPORT_FLAG_TELEPORT_PASSENGERS : 0L),
|
originWorld, destination, Entity.TELEPORT_FLAG_LOAD_CHUNK | (takePassengers ? Entity.TELEPORT_FLAG_TELEPORT_PASSENGERS : 0L),
|
||||||
@@ -5,10 +5,10 @@ Subject: [PATCH] Pufferfish Cache climbing check for activation
|
|||||||
|
|
||||||
|
|
||||||
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
|
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
|
||||||
index d955a555d260d39812b84eb5319db619ec0f8d28..7834646fd6a894ff85973566d9aeda98e5b0c284 100644
|
index 1e1086ea561d8a57a33e57fc310493120530c5cf..165c680dd36d75c3b595004ed9605b4429a7193b 100644
|
||||||
--- a/src/main/java/net/minecraft/world/entity/Entity.java
|
--- a/src/main/java/net/minecraft/world/entity/Entity.java
|
||||||
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
|
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
|
||||||
@@ -311,7 +311,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
|
@@ -309,7 +309,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
|
||||||
public double yo;
|
public double yo;
|
||||||
public double zo;
|
public double zo;
|
||||||
private Vec3 position;
|
private Vec3 position;
|
||||||
@@ -18,7 +18,7 @@ index d955a555d260d39812b84eb5319db619ec0f8d28..7834646fd6a894ff85973566d9aeda98
|
|||||||
private Vec3 deltaMovement;
|
private Vec3 deltaMovement;
|
||||||
private float yRot;
|
private float yRot;
|
||||||
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
||||||
index fdb5ef574c14fafa1af50f4f656763119695f00e..bbfbeddcba884ae1964f7421fcdf179923bd0d2b 100644
|
index b9f6e599afd4bdfb97e7f1b1881730cbed781bba..ff7b0d6a22a0858d4e4348d4f3c0c55bcb3f0084 100644
|
||||||
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
||||||
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
||||||
@@ -143,7 +143,6 @@ import org.bukkit.event.entity.EntityTeleportEvent;
|
@@ -143,7 +143,6 @@ import org.bukkit.event.entity.EntityTeleportEvent;
|
||||||
@@ -51,10 +51,10 @@ index fdb5ef574c14fafa1af50f4f656763119695f00e..bbfbeddcba884ae1964f7421fcdf1799
|
|||||||
if (this.isSpectator()) {
|
if (this.isSpectator()) {
|
||||||
return false;
|
return false;
|
||||||
diff --git a/src/main/java/org/spigotmc/ActivationRange.java b/src/main/java/org/spigotmc/ActivationRange.java
|
diff --git a/src/main/java/org/spigotmc/ActivationRange.java b/src/main/java/org/spigotmc/ActivationRange.java
|
||||||
index f8718d91f4c15c74d6e6dd5f60f7f05f45f63655..50fafff765b2494c075784cc5342d086c8dc97b2 100644
|
index 4fc4690d03fd5f39e019f16845954052210c7361..c77beef9651aa2f7333d536e8ff4af3281834619 100644
|
||||||
--- a/src/main/java/org/spigotmc/ActivationRange.java
|
--- a/src/main/java/org/spigotmc/ActivationRange.java
|
||||||
+++ b/src/main/java/org/spigotmc/ActivationRange.java
|
+++ b/src/main/java/org/spigotmc/ActivationRange.java
|
||||||
@@ -305,7 +305,7 @@ public class ActivationRange
|
@@ -307,7 +307,7 @@ public class ActivationRange
|
||||||
if ( entity instanceof LivingEntity )
|
if ( entity instanceof LivingEntity )
|
||||||
{
|
{
|
||||||
LivingEntity living = (LivingEntity) entity;
|
LivingEntity living = (LivingEntity) entity;
|
||||||
@@ -31,7 +31,7 @@ index 0000000000000000000000000000000000000000..3e48cd297b4869e5c89b6abc43c726d3
|
|||||||
+ }
|
+ }
|
||||||
+}
|
+}
|
||||||
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
||||||
index bbfbeddcba884ae1964f7421fcdf179923bd0d2b..df789b13f57200c66ff4cc59e6b63949a6804e3d 100644
|
index ff7b0d6a22a0858d4e4348d4f3c0c55bcb3f0084..96039cd1c01cf6ea384f63bf5623de75e5def41f 100644
|
||||||
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
||||||
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
||||||
@@ -428,7 +428,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
|
@@ -428,7 +428,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
|
||||||
@@ -5,10 +5,10 @@ Subject: [PATCH] Pufferfish Reduce entity fluid lookups if no fluids
|
|||||||
|
|
||||||
|
|
||||||
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
|
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
|
||||||
index 7834646fd6a894ff85973566d9aeda98e5b0c284..21284dba89c8adbb46086afd9a900fb24ba3e3ea 100644
|
index 165c680dd36d75c3b595004ed9605b4429a7193b..e7919e78110d2213d081be2b2f169ef48d6bf364 100644
|
||||||
--- a/src/main/java/net/minecraft/world/entity/Entity.java
|
--- a/src/main/java/net/minecraft/world/entity/Entity.java
|
||||||
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
|
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
|
||||||
@@ -5262,16 +5262,18 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
|
@@ -5260,16 +5260,18 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean updateFluidHeightAndDoFluidPushing(TagKey<Fluid> tag, double speed) {
|
public boolean updateFluidHeightAndDoFluidPushing(TagKey<Fluid> tag, double speed) {
|
||||||
@@ -34,7 +34,7 @@ index 7834646fd6a894ff85973566d9aeda98e5b0c284..21284dba89c8adbb46086afd9a900fb2
|
|||||||
double d1 = 0.0D;
|
double d1 = 0.0D;
|
||||||
boolean flag = this.isPushedByFluid();
|
boolean flag = this.isPushedByFluid();
|
||||||
boolean flag1 = false;
|
boolean flag1 = false;
|
||||||
@@ -5279,14 +5281,61 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
|
@@ -5277,14 +5279,61 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
|
||||||
int k1 = 0;
|
int k1 = 0;
|
||||||
BlockPos.MutableBlockPos blockposition_mutableblockposition = new BlockPos.MutableBlockPos();
|
BlockPos.MutableBlockPos blockposition_mutableblockposition = new BlockPos.MutableBlockPos();
|
||||||
|
|
||||||
@@ -102,7 +102,7 @@ index 7834646fd6a894ff85973566d9aeda98e5b0c284..21284dba89c8adbb46086afd9a900fb2
|
|||||||
|
|
||||||
if (d2 >= axisalignedbb.minY) {
|
if (d2 >= axisalignedbb.minY) {
|
||||||
flag1 = true;
|
flag1 = true;
|
||||||
@@ -5308,9 +5357,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
|
@@ -5306,9 +5355,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
|
||||||
// CraftBukkit end
|
// CraftBukkit end
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -5,21 +5,10 @@ Subject: [PATCH] Pufferfish Only check for spooky season once an hour
|
|||||||
|
|
||||||
|
|
||||||
diff --git a/src/main/java/net/minecraft/world/entity/ambient/Bat.java b/src/main/java/net/minecraft/world/entity/ambient/Bat.java
|
diff --git a/src/main/java/net/minecraft/world/entity/ambient/Bat.java b/src/main/java/net/minecraft/world/entity/ambient/Bat.java
|
||||||
index 44fa2d4f90389f5526746bd94a2450c03340bd0b..864c3c72b6881a2a8223a9aa5a593f1a65bcc857 100644
|
index 44fa2d4f90389f5526746bd94a2450c03340bd0b..3bbeb33eb51b6aea96e926af6715980e207b815e 100644
|
||||||
--- a/src/main/java/net/minecraft/world/entity/ambient/Bat.java
|
--- a/src/main/java/net/minecraft/world/entity/ambient/Bat.java
|
||||||
+++ b/src/main/java/net/minecraft/world/entity/ambient/Bat.java
|
+++ b/src/main/java/net/minecraft/world/entity/ambient/Bat.java
|
||||||
@@ -3,6 +3,10 @@ package net.minecraft.world.entity.ambient;
|
@@ -241,13 +241,25 @@ public class Bat extends AmbientCreature {
|
||||||
import java.time.LocalDate;
|
|
||||||
import java.time.temporal.ChronoField;
|
|
||||||
import javax.annotation.Nullable;
|
|
||||||
+
|
|
||||||
+import io.papermc.paper.threadedregions.ThreadedRegionizer;
|
|
||||||
+import io.papermc.paper.threadedregions.TickRegionScheduler;
|
|
||||||
+import io.papermc.paper.threadedregions.TickRegions;
|
|
||||||
import net.minecraft.core.BlockPos;
|
|
||||||
import net.minecraft.nbt.CompoundTag;
|
|
||||||
import net.minecraft.network.syncher.EntityDataAccessor;
|
|
||||||
@@ -241,13 +245,25 @@ public class Bat extends AmbientCreature {
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -28,8 +17,8 @@ index 44fa2d4f90389f5526746bd94a2450c03340bd0b..864c3c72b6881a2a8223a9aa5a593f1a
|
|||||||
+ private static final int ONE_HOUR = 20 * 60 * 60;
|
+ private static final int ONE_HOUR = 20 * 60 * 60;
|
||||||
+ private static int lastSpookyCheck = -ONE_HOUR;
|
+ private static int lastSpookyCheck = -ONE_HOUR;
|
||||||
private static boolean isHalloween() {
|
private static boolean isHalloween() {
|
||||||
+ final ThreadedRegionizer.ThreadedRegion<TickRegions.TickRegionData, TickRegions.TickRegionSectionData> region =
|
+ final io.papermc.paper.threadedregions.ThreadedRegionizer.ThreadedRegion<io.papermc.paper.threadedregions.TickRegions.TickRegionData, io.papermc.paper.threadedregions.TickRegions.TickRegionSectionData> region =
|
||||||
+ TickRegionScheduler.getCurrentRegion();
|
+ io.papermc.paper.threadedregions.TickRegionScheduler.getCurrentRegion();
|
||||||
+ final long tickCount = region.getData().getCurrentTick();
|
+ final long tickCount = region.getData().getCurrentTick();
|
||||||
+ if (tickCount - lastSpookyCheck > ONE_HOUR) {
|
+ if (tickCount - lastSpookyCheck > ONE_HOUR) {
|
||||||
LocalDate localdate = LocalDate.now();
|
LocalDate localdate = LocalDate.now();
|
||||||
@@ -49,10 +49,10 @@ index 0000000000000000000000000000000000000000..15697d69659b6e1e776acf5094684b5f
|
|||||||
+ }
|
+ }
|
||||||
+}
|
+}
|
||||||
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
|
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
|
||||||
index 21284dba89c8adbb46086afd9a900fb24ba3e3ea..f8a410e9ed04d9a78d1a6a7e63673b1863d715f2 100644
|
index e7919e78110d2213d081be2b2f169ef48d6bf364..253057e0e339b1db05d98a17b92bda45ae210039 100644
|
||||||
--- a/src/main/java/net/minecraft/world/entity/Entity.java
|
--- a/src/main/java/net/minecraft/world/entity/Entity.java
|
||||||
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
|
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
|
||||||
@@ -814,6 +814,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
|
@@ -812,6 +812,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
|
||||||
}
|
}
|
||||||
|
|
||||||
public void tick() {
|
public void tick() {
|
||||||
@@ -33,19 +33,10 @@ index 0000000000000000000000000000000000000000..12683ec5a5102e45b6171fea0b833ba5
|
|||||||
+ }
|
+ }
|
||||||
+}
|
+}
|
||||||
diff --git a/src/main/java/net/minecraft/world/entity/projectile/Projectile.java b/src/main/java/net/minecraft/world/entity/projectile/Projectile.java
|
diff --git a/src/main/java/net/minecraft/world/entity/projectile/Projectile.java b/src/main/java/net/minecraft/world/entity/projectile/Projectile.java
|
||||||
index 10d7c64fb3a9bafdcdae99f8dc87017722341337..c366da764e2e11018460430595c14b17480c6da7 100644
|
index 10d7c64fb3a9bafdcdae99f8dc87017722341337..11dfac223d36b0a8cbd865b3a29de15b4268eeb0 100644
|
||||||
--- a/src/main/java/net/minecraft/world/entity/projectile/Projectile.java
|
--- a/src/main/java/net/minecraft/world/entity/projectile/Projectile.java
|
||||||
+++ b/src/main/java/net/minecraft/world/entity/projectile/Projectile.java
|
+++ b/src/main/java/net/minecraft/world/entity/projectile/Projectile.java
|
||||||
@@ -4,6 +4,8 @@ import com.google.common.base.MoreObjects;
|
@@ -45,6 +45,36 @@ public abstract class Projectile extends Entity implements TraceableEntity {
|
||||||
import java.util.Iterator;
|
|
||||||
import java.util.UUID;
|
|
||||||
import javax.annotation.Nullable;
|
|
||||||
+
|
|
||||||
+import io.papermc.paper.threadedregions.TickRegionScheduler;
|
|
||||||
import net.minecraft.core.BlockPos;
|
|
||||||
import net.minecraft.nbt.CompoundTag;
|
|
||||||
import net.minecraft.network.protocol.Packet;
|
|
||||||
@@ -45,6 +47,36 @@ public abstract class Projectile extends Entity implements TraceableEntity {
|
|
||||||
super(type, world);
|
super(type, world);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -56,7 +47,7 @@ index 10d7c64fb3a9bafdcdae99f8dc87017722341337..c366da764e2e11018460430595c14b17
|
|||||||
+ private int loadedLifetime = 0;
|
+ private int loadedLifetime = 0;
|
||||||
+ @Override
|
+ @Override
|
||||||
+ public void setPos(double x, double y, double z) {
|
+ public void setPos(double x, double y, double z) {
|
||||||
+ long currentTick = TickRegionScheduler.getCurrentRegion().getData().getCurrentTick();
|
+ long currentTick = io.papermc.paper.threadedregions.TickRegionScheduler.getCurrentRegion().getData().getCurrentTick();
|
||||||
+ if (loadedTick != currentTick) {
|
+ if (loadedTick != currentTick) {
|
||||||
+ loadedTick = currentTick;
|
+ loadedTick = currentTick;
|
||||||
+ loadedThisTick = 0;
|
+ loadedThisTick = 0;
|
||||||
@@ -71,7 +71,7 @@ index 0000000000000000000000000000000000000000..af5893ba1f738ec9827d7b714682c314
|
|||||||
+ }
|
+ }
|
||||||
+}
|
+}
|
||||||
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
|
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
|
||||||
index da6269249a95d78f91e90416a96bf1b776fd9c97..25a2f23618cd02366f71e704638adfbaed9fa8c5 100644
|
index eefc98c82c9eb7316f195e306cceb5c9bdcbead8..7be323f6dc960bef4a258dacc6840f7074e42473 100644
|
||||||
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
|
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
|
||||||
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
|
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
|
||||||
@@ -987,6 +987,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
|
@@ -987,6 +987,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
|
||||||
@@ -83,10 +83,10 @@ index da6269249a95d78f91e90416a96bf1b776fd9c97..25a2f23618cd02366f71e704638adfba
|
|||||||
if (false && this.shouldDiscardEntity(entity)) { // CraftBukkit - We prevent spawning in general, so this butchering is not needed
|
if (false && this.shouldDiscardEntity(entity)) { // CraftBukkit - We prevent spawning in general, so this butchering is not needed
|
||||||
entity.discard();
|
entity.discard();
|
||||||
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
|
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
|
||||||
index f8a410e9ed04d9a78d1a6a7e63673b1863d715f2..4b3acc0de20b246e20e2cc91ba0eca493a675729 100644
|
index 253057e0e339b1db05d98a17b92bda45ae210039..b0373fd5f5c2d8c5aa51cfbd6e016ec11f63d0cc 100644
|
||||||
--- a/src/main/java/net/minecraft/world/entity/Entity.java
|
--- a/src/main/java/net/minecraft/world/entity/Entity.java
|
||||||
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
|
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
|
||||||
@@ -483,6 +483,11 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
|
@@ -481,6 +481,11 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
|
||||||
|
|
||||||
// Folia - region ticking
|
// Folia - region ticking
|
||||||
// Paper end - optimise entity tracking
|
// Paper end - optimise entity tracking
|
||||||
@@ -332,7 +332,7 @@ index 3eeff0cd8563939c656b5ded8470cab016903f25..90d8cd94d987416a3e9f6e6d47a5b366
|
|||||||
if (this.assignProfessionWhenSpawned) {
|
if (this.assignProfessionWhenSpawned) {
|
||||||
this.assignProfessionWhenSpawned = false;
|
this.assignProfessionWhenSpawned = false;
|
||||||
diff --git a/src/main/java/org/spigotmc/ActivationRange.java b/src/main/java/org/spigotmc/ActivationRange.java
|
diff --git a/src/main/java/org/spigotmc/ActivationRange.java b/src/main/java/org/spigotmc/ActivationRange.java
|
||||||
index 50fafff765b2494c075784cc5342d086c8dc97b2..78b495ffbb1ca753714304e2a18035bcfd84b918 100644
|
index c77beef9651aa2f7333d536e8ff4af3281834619..9628cc2b7f200e0bab4fed48997dde3e266200ee 100644
|
||||||
--- a/src/main/java/org/spigotmc/ActivationRange.java
|
--- a/src/main/java/org/spigotmc/ActivationRange.java
|
||||||
+++ b/src/main/java/org/spigotmc/ActivationRange.java
|
+++ b/src/main/java/org/spigotmc/ActivationRange.java
|
||||||
@@ -38,6 +38,10 @@ import co.aikar.timings.MinecraftTimings;
|
@@ -38,6 +38,10 @@ import co.aikar.timings.MinecraftTimings;
|
||||||
@@ -346,7 +346,7 @@ index 50fafff765b2494c075784cc5342d086c8dc97b2..78b495ffbb1ca753714304e2a18035bc
|
|||||||
|
|
||||||
public class ActivationRange
|
public class ActivationRange
|
||||||
{
|
{
|
||||||
@@ -230,6 +234,25 @@ public class ActivationRange
|
@@ -232,6 +236,25 @@ public class ActivationRange
|
||||||
}
|
}
|
||||||
// Paper end - Configurable marker ticking
|
// Paper end - Configurable marker ticking
|
||||||
ActivationRange.activateEntity(entity, bbByType); // Folia - threaded regions
|
ActivationRange.activateEntity(entity, bbByType); // Folia - threaded regions
|
||||||
@@ -372,7 +372,7 @@ index 50fafff765b2494c075784cc5342d086c8dc97b2..78b495ffbb1ca753714304e2a18035bc
|
|||||||
}
|
}
|
||||||
// Paper end
|
// Paper end
|
||||||
}
|
}
|
||||||
@@ -246,12 +269,12 @@ public class ActivationRange
|
@@ -248,12 +271,12 @@ public class ActivationRange
|
||||||
if ( io.papermc.paper.threadedregions.RegionizedServer.getCurrentTick() > entity.activatedTick ) // Folia - threaded regions
|
if ( io.papermc.paper.threadedregions.RegionizedServer.getCurrentTick() > entity.activatedTick ) // Folia - threaded regions
|
||||||
{
|
{
|
||||||
if ( entity.defaultActivationState )
|
if ( entity.defaultActivationState )
|
||||||
@@ -31,7 +31,7 @@ index 0000000000000000000000000000000000000000..fa30e8dc39a2d4bd1399e41230b307b1
|
|||||||
+ }
|
+ }
|
||||||
+}
|
+}
|
||||||
diff --git a/src/main/java/org/spigotmc/ActivationRange.java b/src/main/java/org/spigotmc/ActivationRange.java
|
diff --git a/src/main/java/org/spigotmc/ActivationRange.java b/src/main/java/org/spigotmc/ActivationRange.java
|
||||||
index 78b495ffbb1ca753714304e2a18035bcfd84b918..e9331fe4d524215bbab9a410d16e4f1811f5ad31 100644
|
index 9628cc2b7f200e0bab4fed48997dde3e266200ee..3a6ae320891f1e3202c59b63a5f2c96c18727314 100644
|
||||||
--- a/src/main/java/org/spigotmc/ActivationRange.java
|
--- a/src/main/java/org/spigotmc/ActivationRange.java
|
||||||
+++ b/src/main/java/org/spigotmc/ActivationRange.java
|
+++ b/src/main/java/org/spigotmc/ActivationRange.java
|
||||||
@@ -75,28 +75,41 @@ public class ActivationRange
|
@@ -75,28 +75,41 @@ public class ActivationRange
|
||||||
@@ -31,10 +31,10 @@ index 0000000000000000000000000000000000000000..ed62d25d6cd6dfcf8c5db20ced36eb3d
|
|||||||
+ }
|
+ }
|
||||||
+}
|
+}
|
||||||
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
|
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
|
||||||
index 4b3acc0de20b246e20e2cc91ba0eca493a675729..2d78d28120af075bebee4d97428ed48cf27c9d78 100644
|
index b0373fd5f5c2d8c5aa51cfbd6e016ec11f63d0cc..8db82ab42fdc5adc65f84f69f276638ca0fce208 100644
|
||||||
--- a/src/main/java/net/minecraft/world/entity/Entity.java
|
--- a/src/main/java/net/minecraft/world/entity/Entity.java
|
||||||
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
|
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
|
||||||
@@ -5460,6 +5460,16 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
|
@@ -5458,6 +5458,16 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
|
||||||
return this.feetBlockState;
|
return this.feetBlockState;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -52,7 +52,7 @@ index 4b3acc0de20b246e20e2cc91ba0eca493a675729..2d78d28120af075bebee4d97428ed48c
|
|||||||
return this.chunkPosition;
|
return this.chunkPosition;
|
||||||
}
|
}
|
||||||
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
||||||
index df789b13f57200c66ff4cc59e6b63949a6804e3d..c2d155882c94f875c96c13746ff0c5433ab25ed0 100644
|
index 96039cd1c01cf6ea384f63bf5623de75e5def41f..e618ce4e71e4aef0620ac1b178f4df6a35deb87e 100644
|
||||||
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
||||||
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
||||||
@@ -2062,19 +2062,43 @@ public abstract class LivingEntity extends Entity implements Attackable {
|
@@ -2062,19 +2062,43 @@ public abstract class LivingEntity extends Entity implements Attackable {
|
||||||
@@ -5,10 +5,10 @@ Subject: [PATCH] Gale Optimize sun burn tick
|
|||||||
|
|
||||||
|
|
||||||
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
|
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
|
||||||
index 2d78d28120af075bebee4d97428ed48cf27c9d78..a4682b8bd269f52af26a03347e8d3869d2b1ba41 100644
|
index 8db82ab42fdc5adc65f84f69f276638ca0fce208..52f9511cf11eb59ca817b6d3fc3d2ef152fa5719 100644
|
||||||
--- a/src/main/java/net/minecraft/world/entity/Entity.java
|
--- a/src/main/java/net/minecraft/world/entity/Entity.java
|
||||||
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
|
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
|
||||||
@@ -310,7 +310,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
|
@@ -308,7 +308,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
|
||||||
public double xo;
|
public double xo;
|
||||||
public double yo;
|
public double yo;
|
||||||
public double zo;
|
public double zo;
|
||||||
@@ -17,7 +17,7 @@ index 2d78d28120af075bebee4d97428ed48cf27c9d78..a4682b8bd269f52af26a03347e8d3869
|
|||||||
public BlockPos blockPosition; // Pufferfish - private->public
|
public BlockPos blockPosition; // Pufferfish - private->public
|
||||||
private ChunkPos chunkPosition;
|
private ChunkPos chunkPosition;
|
||||||
private Vec3 deltaMovement;
|
private Vec3 deltaMovement;
|
||||||
@@ -2068,9 +2068,17 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
|
@@ -2066,9 +2066,17 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
|
||||||
/** @deprecated */
|
/** @deprecated */
|
||||||
@Deprecated
|
@Deprecated
|
||||||
public float getLightLevelDependentMagicValue() {
|
public float getLightLevelDependentMagicValue() {
|
||||||
@@ -5,7 +5,7 @@ Subject: [PATCH] Gale Check frozen ticks before landing block
|
|||||||
|
|
||||||
|
|
||||||
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
||||||
index c2d155882c94f875c96c13746ff0c5433ab25ed0..84b47e6cea7ed9730f9c450ba8ba3167d71b2cc9 100644
|
index e618ce4e71e4aef0620ac1b178f4df6a35deb87e..2164413ca25dc6c1ae52e687f0786418ee4dda10 100644
|
||||||
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
||||||
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
||||||
@@ -597,11 +597,10 @@ public abstract class LivingEntity extends Entity implements Attackable {
|
@@ -597,11 +597,10 @@ public abstract class LivingEntity extends Entity implements Attackable {
|
||||||
@@ -5,10 +5,10 @@ Subject: [PATCH] Gale Skip entity move if movement is zero
|
|||||||
|
|
||||||
|
|
||||||
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
|
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
|
||||||
index a4682b8bd269f52af26a03347e8d3869d2b1ba41..d78ad18ac3b69c893a23b6bb9a6837b6a82ebdc2 100644
|
index 52f9511cf11eb59ca817b6d3fc3d2ef152fa5719..c47ee80b1959e5edac0b74c6545bde493455e75a 100644
|
||||||
--- a/src/main/java/net/minecraft/world/entity/Entity.java
|
--- a/src/main/java/net/minecraft/world/entity/Entity.java
|
||||||
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
|
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
|
||||||
@@ -319,6 +319,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
|
@@ -317,6 +317,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
|
||||||
public float yRotO;
|
public float yRotO;
|
||||||
public float xRotO;
|
public float xRotO;
|
||||||
private AABB bb;
|
private AABB bb;
|
||||||
@@ -16,7 +16,7 @@ index a4682b8bd269f52af26a03347e8d3869d2b1ba41..d78ad18ac3b69c893a23b6bb9a6837b6
|
|||||||
public boolean onGround;
|
public boolean onGround;
|
||||||
public boolean horizontalCollision;
|
public boolean horizontalCollision;
|
||||||
public boolean verticalCollision;
|
public boolean verticalCollision;
|
||||||
@@ -1104,6 +1105,11 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
|
@@ -1102,6 +1103,11 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
|
||||||
//Luminol end
|
//Luminol end
|
||||||
|
|
||||||
public void move(MoverType movementType, Vec3 movement) {
|
public void move(MoverType movementType, Vec3 movement) {
|
||||||
@@ -28,7 +28,7 @@ index a4682b8bd269f52af26a03347e8d3869d2b1ba41..d78ad18ac3b69c893a23b6bb9a6837b6
|
|||||||
final Vec3 originalMovement = movement; // Paper - Expose pre-collision velocity
|
final Vec3 originalMovement = movement; // Paper - Expose pre-collision velocity
|
||||||
// Paper start - detailed watchdog information
|
// Paper start - detailed watchdog information
|
||||||
io.papermc.paper.util.TickThread.ensureTickThread("Cannot move an entity off-main");
|
io.papermc.paper.util.TickThread.ensureTickThread("Cannot move an entity off-main");
|
||||||
@@ -4957,6 +4963,11 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
|
@@ -4955,6 +4961,11 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
|
||||||
}
|
}
|
||||||
|
|
||||||
public final void setBoundingBox(AABB boundingBox) {
|
public final void setBoundingBox(AABB boundingBox) {
|
||||||
@@ -106,7 +106,7 @@ index 0000000000000000000000000000000000000000..f2f10b651e4fbecdd1ea1bc28ebf40d6
|
|||||||
+
|
+
|
||||||
+}
|
+}
|
||||||
diff --git a/src/main/java/net/minecraft/server/level/WorldGenRegion.java b/src/main/java/net/minecraft/server/level/WorldGenRegion.java
|
diff --git a/src/main/java/net/minecraft/server/level/WorldGenRegion.java b/src/main/java/net/minecraft/server/level/WorldGenRegion.java
|
||||||
index 33c1ef45ed620f8424c2c83dd30b674892ddffe3..60db67956d8455d02c7b315cbdcb952206d776db 100644
|
index 8c455cda45ca2d724fbc140d53ffc7ecba3ca44c..dd63a219caf36acc58b73190e67faf9a504aef20 100644
|
||||||
--- a/src/main/java/net/minecraft/server/level/WorldGenRegion.java
|
--- a/src/main/java/net/minecraft/server/level/WorldGenRegion.java
|
||||||
+++ b/src/main/java/net/minecraft/server/level/WorldGenRegion.java
|
+++ b/src/main/java/net/minecraft/server/level/WorldGenRegion.java
|
||||||
@@ -8,6 +8,7 @@ import java.util.concurrent.atomic.AtomicLong;
|
@@ -8,6 +8,7 @@ import java.util.concurrent.atomic.AtomicLong;
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: MrHua269 <novau233@163.com>
|
||||||
|
Date: Sat, 6 Apr 2024 05:14:57 +0000
|
||||||
|
Subject: [PATCH] Gale Reduce lambda and Optional allocation in
|
||||||
|
EntityBasedExplosionDamageCalculator
|
||||||
|
|
||||||
|
|
||||||
|
diff --git a/src/main/java/net/minecraft/world/level/EntityBasedExplosionDamageCalculator.java b/src/main/java/net/minecraft/world/level/EntityBasedExplosionDamageCalculator.java
|
||||||
|
index 2f9f15d99f8b31e9f13f7f32378b2a9e09bcb5e5..4e4dfb72d5a0b46917999b709c655ccfdae27183 100644
|
||||||
|
--- a/src/main/java/net/minecraft/world/level/EntityBasedExplosionDamageCalculator.java
|
||||||
|
+++ b/src/main/java/net/minecraft/world/level/EntityBasedExplosionDamageCalculator.java
|
||||||
|
@@ -15,9 +15,17 @@ public class EntityBasedExplosionDamageCalculator extends ExplosionDamageCalcula
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Optional<Float> getBlockExplosionResistance(Explosion explosion, BlockGetter world, BlockPos pos, BlockState blockState, FluidState fluidState) {
|
||||||
|
- return super.getBlockExplosionResistance(explosion, world, pos, blockState, fluidState).map((max) -> {
|
||||||
|
- return this.source.getBlockExplosionResistance(explosion, world, pos, blockState, fluidState, max);
|
||||||
|
- });
|
||||||
|
+ // Gale start - Lithium - reduce lambda and Optional allocation in EntityBasedExplosionDamageCalculator
|
||||||
|
+ Optional<Float> optionalBlastResistance = super.getBlockExplosionResistance(explosion, world, pos, blockState, fluidState);
|
||||||
|
+ if (optionalBlastResistance.isPresent()) {
|
||||||
|
+ float blastResistance = optionalBlastResistance.get();
|
||||||
|
+ float effectiveExplosionResistance = this.source.getBlockExplosionResistance(explosion, world, pos, blockState, fluidState, blastResistance);
|
||||||
|
+ if (effectiveExplosionResistance != blastResistance) {
|
||||||
|
+ return Optional.of(effectiveExplosionResistance);
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ return optionalBlastResistance;
|
||||||
|
+ // Gale end - Lithium - reduce lambda and Optional allocation in EntityBasedExplosionDamageCalculator
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: MrHua269 <novau233@163.com>
|
||||||
|
Date: Sat, 6 Apr 2024 05:17:19 +0000
|
||||||
|
Subject: [PATCH] Gale Replace AI goal set with optimized collection
|
||||||
|
|
||||||
|
|
||||||
|
diff --git a/src/main/java/net/minecraft/world/entity/ai/goal/GoalSelector.java b/src/main/java/net/minecraft/world/entity/ai/goal/GoalSelector.java
|
||||||
|
index 0f53c206b4c0607e2cda5cfa4edeae5209e897bf..6313020a80cab0b8df8d775431d4aa063c51ce18 100644
|
||||||
|
--- a/src/main/java/net/minecraft/world/entity/ai/goal/GoalSelector.java
|
||||||
|
+++ b/src/main/java/net/minecraft/world/entity/ai/goal/GoalSelector.java
|
||||||
|
@@ -13,6 +13,7 @@ import java.util.function.Supplier;
|
||||||
|
import java.util.stream.Stream;
|
||||||
|
import net.minecraft.util.profiling.ProfilerFiller;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
+import it.unimi.dsi.fastutil.objects.ObjectLinkedOpenHashSet;
|
||||||
|
|
||||||
|
public class GoalSelector {
|
||||||
|
private static final Logger LOGGER = LogUtils.getLogger();
|
||||||
|
@@ -28,7 +29,7 @@ public class GoalSelector {
|
||||||
|
}
|
||||||
|
};
|
||||||
|
private final Map<Goal.Flag, WrappedGoal> lockedFlags = new EnumMap<>(Goal.Flag.class);
|
||||||
|
- private final Set<WrappedGoal> availableGoals = Sets.newLinkedHashSet();
|
||||||
|
+ private final Set<WrappedGoal> availableGoals = new ObjectLinkedOpenHashSet<>(); // Gale - Lithium - replace AI goal set with optimized collection
|
||||||
|
private final Supplier<ProfilerFiller> profiler;
|
||||||
|
private final EnumSet<Goal.Flag> disabledFlags = EnumSet.noneOf(Goal.Flag.class); // Paper unused, but dummy to prevent plugins from crashing as hard. Theyll need to support paper in a special case if this is super important, but really doesn't seem like it would be.
|
||||||
|
private final com.destroystokyo.paper.util.set.OptimizedSmallEnumSet<net.minecraft.world.entity.ai.goal.Goal.Flag> goalTypes = new com.destroystokyo.paper.util.set.OptimizedSmallEnumSet<>(Goal.Flag.class); // Paper - remove streams from pathfindergoalselector
|
||||||
@@ -0,0 +1,42 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: MrHua269 <novau233@163.com>
|
||||||
|
Date: Sat, 6 Apr 2024 05:17:42 +0000
|
||||||
|
Subject: [PATCH] Gale Replace AI attributes with optimized collections
|
||||||
|
|
||||||
|
|
||||||
|
diff --git a/src/main/java/net/minecraft/world/entity/ai/attributes/AttributeMap.java b/src/main/java/net/minecraft/world/entity/ai/attributes/AttributeMap.java
|
||||||
|
index 683c9693754d1a87b7e8fccc757a0d0963351f60..d904cc2d882f62f74ff34f7e8266947798563ed4 100644
|
||||||
|
--- a/src/main/java/net/minecraft/world/entity/ai/attributes/AttributeMap.java
|
||||||
|
+++ b/src/main/java/net/minecraft/world/entity/ai/attributes/AttributeMap.java
|
||||||
|
@@ -1,8 +1,6 @@
|
||||||
|
package net.minecraft.world.entity.ai.attributes;
|
||||||
|
|
||||||
|
-import com.google.common.collect.Maps;
|
||||||
|
import com.google.common.collect.Multimap;
|
||||||
|
-import com.google.common.collect.Sets;
|
||||||
|
import com.mojang.logging.LogUtils;
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.Map;
|
||||||
|
@@ -10,6 +8,9 @@ import java.util.Set;
|
||||||
|
import java.util.UUID;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
import javax.annotation.Nullable;
|
||||||
|
+
|
||||||
|
+import it.unimi.dsi.fastutil.objects.Reference2ReferenceOpenHashMap;
|
||||||
|
+import it.unimi.dsi.fastutil.objects.ReferenceOpenHashSet;
|
||||||
|
import net.minecraft.Util;
|
||||||
|
import net.minecraft.core.Holder;
|
||||||
|
import net.minecraft.core.registries.BuiltInRegistries;
|
||||||
|
@@ -20,8 +21,10 @@ import org.slf4j.Logger;
|
||||||
|
|
||||||
|
public class AttributeMap {
|
||||||
|
private static final Logger LOGGER = LogUtils.getLogger();
|
||||||
|
- private final Map<Attribute, AttributeInstance> attributes = Maps.newHashMap();
|
||||||
|
- private final Set<AttributeInstance> dirtyAttributes = Sets.newHashSet();
|
||||||
|
+ // Gale start - Lithium - replace AI attributes with optimized collections
|
||||||
|
+ private final Map<Attribute, AttributeInstance> attributes = new Reference2ReferenceOpenHashMap<>(0);
|
||||||
|
+ private final Set<AttributeInstance> dirtyAttributes = new ReferenceOpenHashSet<>(0);
|
||||||
|
+ // Gale end - Lithium - replace AI attributes with optimized collections
|
||||||
|
private final AttributeSupplier supplier;
|
||||||
|
private final java.util.function.Function<Attribute, AttributeInstance> createInstance; // Pufferfish
|
||||||
|
|
||||||
@@ -0,0 +1,61 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: MrHua269 <novau233@163.com>
|
||||||
|
Date: Sat, 6 Apr 2024 05:18:00 +0000
|
||||||
|
Subject: [PATCH] Gale Replace throttle tracker map with optimized collection
|
||||||
|
|
||||||
|
|
||||||
|
diff --git a/src/main/java/net/minecraft/server/network/ServerHandshakePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerHandshakePacketListenerImpl.java
|
||||||
|
index a53dd1ea02bd19826cd9fd337459b08e9533bce8..dec666713a1d3b5e3f2aa4bcbe8094ade8be1b05 100644
|
||||||
|
--- a/src/main/java/net/minecraft/server/network/ServerHandshakePacketListenerImpl.java
|
||||||
|
+++ b/src/main/java/net/minecraft/server/network/ServerHandshakePacketListenerImpl.java
|
||||||
|
@@ -1,5 +1,7 @@
|
||||||
|
package net.minecraft.server.network;
|
||||||
|
|
||||||
|
+import it.unimi.dsi.fastutil.objects.Object2LongMap;
|
||||||
|
+import it.unimi.dsi.fastutil.objects.Object2LongOpenHashMap;
|
||||||
|
import net.minecraft.SharedConstants;
|
||||||
|
import net.minecraft.network.Connection;
|
||||||
|
import net.minecraft.network.chat.Component;
|
||||||
|
@@ -13,7 +15,8 @@ import net.minecraft.server.MinecraftServer;
|
||||||
|
|
||||||
|
// CraftBukkit start
|
||||||
|
import java.net.InetAddress;
|
||||||
|
-import java.util.HashMap;
|
||||||
|
+import java.util.Iterator;
|
||||||
|
+import java.util.Map;
|
||||||
|
// CraftBukkit end
|
||||||
|
|
||||||
|
public class ServerHandshakePacketListenerImpl implements ServerHandshakePacketListener {
|
||||||
|
@@ -24,7 +27,7 @@ public class ServerHandshakePacketListenerImpl implements ServerHandshakePacketL
|
||||||
|
static final java.util.regex.Pattern PROP_PATTERN = java.util.regex.Pattern.compile("\\w{0,16}");
|
||||||
|
// Spigot end
|
||||||
|
// CraftBukkit start - add fields
|
||||||
|
- private static final HashMap<InetAddress, Long> throttleTracker = new HashMap<InetAddress, Long>();
|
||||||
|
+ private static final Object2LongOpenHashMap<InetAddress> throttleTracker = new Object2LongOpenHashMap<>(); // Gale - Dionysus - replace throttle tracker map with optimized collection
|
||||||
|
private static int throttleCounter = 0;
|
||||||
|
// CraftBukkit end
|
||||||
|
private static final Component IGNORE_STATUS_REASON = Component.translatable("disconnect.ignoring_status_request");
|
||||||
|
@@ -51,7 +54,7 @@ public class ServerHandshakePacketListenerImpl implements ServerHandshakePacketL
|
||||||
|
InetAddress address = ((java.net.InetSocketAddress) this.connection.getRemoteAddress()).getAddress();
|
||||||
|
|
||||||
|
synchronized (ServerHandshakePacketListenerImpl.throttleTracker) {
|
||||||
|
- if (ServerHandshakePacketListenerImpl.throttleTracker.containsKey(address) && !"127.0.0.1".equals(address.getHostAddress()) && currentTime - ServerHandshakePacketListenerImpl.throttleTracker.get(address) < connectionThrottle) {
|
||||||
|
+ if (ServerHandshakePacketListenerImpl.throttleTracker.containsKey(address) && !"127.0.0.1".equals(address.getHostAddress()) && currentTime - ServerHandshakePacketListenerImpl.throttleTracker.getLong(address) < connectionThrottle) { // Gale - Dionysus - replace throttle tracker map with optimized collection
|
||||||
|
ServerHandshakePacketListenerImpl.throttleTracker.put(address, currentTime);
|
||||||
|
Component chatmessage = io.papermc.paper.adventure.PaperAdventure.asVanilla(io.papermc.paper.configuration.GlobalConfiguration.get().messages.kick.connectionThrottle); // Paper - Configurable connection throttle kick message
|
||||||
|
this.connection.send(new ClientboundLoginDisconnectPacket(chatmessage));
|
||||||
|
@@ -65,13 +68,7 @@ public class ServerHandshakePacketListenerImpl implements ServerHandshakePacketL
|
||||||
|
ServerHandshakePacketListenerImpl.throttleCounter = 0;
|
||||||
|
|
||||||
|
// Cleanup stale entries
|
||||||
|
- java.util.Iterator iter = ServerHandshakePacketListenerImpl.throttleTracker.entrySet().iterator();
|
||||||
|
- while (iter.hasNext()) {
|
||||||
|
- java.util.Map.Entry<InetAddress, Long> entry = (java.util.Map.Entry) iter.next();
|
||||||
|
- if (entry.getValue() > connectionThrottle) {
|
||||||
|
- iter.remove();
|
||||||
|
- }
|
||||||
|
- }
|
||||||
|
+ throttleTracker.object2LongEntrySet().removeIf(entry -> entry.getLongValue() > connectionThrottle); // Gale - Dionysus - replace throttle tracker map with optimized collection
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} // Paper - Unix domain socket support
|
||||||
@@ -18,7 +18,7 @@ index 76ad4d8bce1611ead6f1596b2ba78267e3718655..d1dc02b3e4f775c9bd79073a8e96243a
|
|||||||
}
|
}
|
||||||
// CraftBukkit end
|
// CraftBukkit end
|
||||||
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
||||||
index 26f70965b45fa3c344781b569a651a4668d0621d..49f207b7e06a3f939dc6c9b4a078f6db7b779618 100644
|
index 74e7fefe0819829f9280cf1602cca841f796e7a3..b76056ce93a1133eb7b50a7855830afea478bf17 100644
|
||||||
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
||||||
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
||||||
@@ -187,7 +187,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
@@ -187,7 +187,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||||
@@ -168,7 +168,7 @@ index 18b8651147dedcf80d9baf04e87fb25cfbf9b89f..e9a49eb00c64d864ebf4b24d6fe84aba
|
|||||||
super.channelActive(channelhandlercontext);
|
super.channelActive(channelhandlercontext);
|
||||||
this.channel = channelhandlercontext.channel();
|
this.channel = channelhandlercontext.channel();
|
||||||
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
|
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||||
index c924951c3dd7652ee446b40689ff9004546e972a..776f5ce5fac57bc7ccdfc4dbab87811bc33de87d 100644
|
index 0e495628228543d55a101d7840acb9fd16e1937b..ea4ee9aa6f9cf28c8b06e2c0546a8a92e44e2620 100644
|
||||||
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
|
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||||
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
|
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||||
@@ -1727,7 +1727,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
@@ -1727,7 +1727,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
||||||
@@ -209,8 +209,21 @@ index 2e2a7c2cf3081187da817479a9da3eb10f662a6d..ee616fe98c98a345872c1eadf41c7852
|
|||||||
return !playerList.isOp(player.getGameProfile());
|
return !playerList.isOp(player.getGameProfile());
|
||||||
}).map((player) -> {
|
}).map((player) -> {
|
||||||
return player.getGameProfile().getName();
|
return player.getGameProfile().getName();
|
||||||
|
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
||||||
|
index 0086a1a4611b983eefd0cb7bf8e9cff677246d0f..dcbf18eb7fb9a37fcd7faf3efe023d2503b4091a 100644
|
||||||
|
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
||||||
|
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
||||||
|
@@ -197,7 +197,7 @@ public class ServerPlayer extends Player {
|
||||||
|
private static final int FLY_STAT_RECORDING_SPEED = 25;
|
||||||
|
public ServerGamePacketListenerImpl connection;
|
||||||
|
public final MinecraftServer server;
|
||||||
|
- public final ServerPlayerGameMode gameMode;
|
||||||
|
+ public ServerPlayerGameMode gameMode;
|
||||||
|
private final PlayerAdvancements advancements;
|
||||||
|
private final ServerStatsCounter stats;
|
||||||
|
private float lastRecordedHealthAndAbsorption = Float.MIN_VALUE;
|
||||||
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
||||||
index b3ff8ed6d0f0414c15b9d2e6a51a0e34c361f92a..b6e078a10adbbf5c2061b4bf448836231818b768 100644
|
index 4fc9a47745b817d9ee2da4776cab26ff9f3b0025..e0a103ed27f834f62afb3696047c7581aa608f49 100644
|
||||||
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
||||||
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
||||||
@@ -297,7 +297,13 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
|
@@ -297,7 +297,13 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
|
||||||
@@ -509,7 +522,7 @@ index dc223b536eadd2da6cf3c758a62d0ed81b5a7b3b..e0f49c7e941830236b92f6705cd2c4b9
|
|||||||
+ // Leaves end - replay mod api
|
+ // Leaves end - replay mod api
|
||||||
}
|
}
|
||||||
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
|
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
|
||||||
index 73316307666674f9f6e7ddb964e2ec2583743c79..d15f24d91255664af4295fca8d5e237dce520201 100644
|
index 8c7e01972888df4ccbaccc4eebceeeb5ab357f4c..99956f506d543c2917746d5eb095598135251320 100644
|
||||||
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
|
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
|
||||||
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
|
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
|
||||||
@@ -57,6 +57,8 @@ import org.bukkit.util.NumberConversions;
|
@@ -57,6 +57,8 @@ import org.bukkit.util.NumberConversions;
|
||||||
@@ -531,7 +544,7 @@ index 73316307666674f9f6e7ddb964e2ec2583743c79..d15f24d91255664af4295fca8d5e237d
|
|||||||
if (entity instanceof EnderDragonPart complexPart) {
|
if (entity instanceof EnderDragonPart complexPart) {
|
||||||
if (complexPart.parentMob instanceof EnderDragon) {
|
if (complexPart.parentMob instanceof EnderDragon) {
|
||||||
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
||||||
index 49f207b7e06a3f939dc6c9b4a078f6db7b779618..aedf5ec139613a4ddf6cdb87cc52ae29eda323b2 100644
|
index b76056ce93a1133eb7b50a7855830afea478bf17..a7f953a75ca8b460e3b4790f690e133bef777d89 100644
|
||||||
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
||||||
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
||||||
@@ -2141,7 +2141,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
@@ -2141,7 +2141,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||||
@@ -1358,7 +1371,7 @@ index 0000000000000000000000000000000000000000..852f2098d93d4437fe79af06e454d849
|
|||||||
+}
|
+}
|
||||||
diff --git a/src/main/java/top/leavesmc/leaves/replay/ServerPhotographer.java b/src/main/java/top/leavesmc/leaves/replay/ServerPhotographer.java
|
diff --git a/src/main/java/top/leavesmc/leaves/replay/ServerPhotographer.java b/src/main/java/top/leavesmc/leaves/replay/ServerPhotographer.java
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
index 0000000000000000000000000000000000000000..3941d297587e971c5bbd8f3303dbac755ab77d2c
|
index 0000000000000000000000000000000000000000..438651c02b371f9f85cd97fe0fefb14d1858aaa0
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/src/main/java/top/leavesmc/leaves/replay/ServerPhotographer.java
|
+++ b/src/main/java/top/leavesmc/leaves/replay/ServerPhotographer.java
|
||||||
@@ -0,0 +1,246 @@
|
@@ -0,0 +1,246 @@
|
||||||
@@ -1405,6 +1418,7 @@ index 0000000000000000000000000000000000000000..3941d297587e971c5bbd8f3303dbac75
|
|||||||
+
|
+
|
||||||
+ private ServerPhotographer(MinecraftServer server, ServerLevel world, GameProfile profile) {
|
+ private ServerPhotographer(MinecraftServer server, ServerLevel world, GameProfile profile) {
|
||||||
+ super(server, world, profile, ClientInformation.createDefault());
|
+ super(server, world, profile, ClientInformation.createDefault());
|
||||||
|
+ this.gameMode = new ServerPhotographerGameMode(this);
|
||||||
+ this.followPlayer = null;
|
+ this.followPlayer = null;
|
||||||
+ this.stats = new NullStatsCounter(server);
|
+ this.stats = new NullStatsCounter(server);
|
||||||
+ this.lastPos = this.position();
|
+ this.lastPos = this.position();
|
||||||
@@ -1439,7 +1453,6 @@ index 0000000000000000000000000000000000000000..3941d297587e971c5bbd8f3303dbac75
|
|||||||
+
|
+
|
||||||
+ photographer.recorder.start();
|
+ photographer.recorder.start();
|
||||||
+ MinecraftServer.getServer().getPlayerList().placeNewPhotographer(photographer.recorder, photographer, world, state.loc);
|
+ MinecraftServer.getServer().getPlayerList().placeNewPhotographer(photographer.recorder, photographer, world, state.loc);
|
||||||
+ photographer.setGameMode(GameType.SPECTATOR);
|
|
||||||
+ photographer.serverLevel().chunkSource.move(photographer);
|
+ photographer.serverLevel().chunkSource.move(photographer);
|
||||||
+ photographer.setInvisible(true);
|
+ photographer.setInvisible(true);
|
||||||
+ photographers.add(photographer);
|
+ photographers.add(photographer);
|
||||||
@@ -1608,6 +1621,47 @@ index 0000000000000000000000000000000000000000..3941d297587e971c5bbd8f3303dbac75
|
|||||||
+ }
|
+ }
|
||||||
+ }
|
+ }
|
||||||
+}
|
+}
|
||||||
|
diff --git a/src/main/java/top/leavesmc/leaves/replay/ServerPhotographerGameMode.java b/src/main/java/top/leavesmc/leaves/replay/ServerPhotographerGameMode.java
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000000000000000000000000000000000000..f8c4d248c7f9e0b42cd04e252a1281ceb3e3c4ce
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/src/main/java/top/leavesmc/leaves/replay/ServerPhotographerGameMode.java
|
||||||
|
@@ -0,0 +1,34 @@
|
||||||
|
+package top.leavesmc.leaves.replay;
|
||||||
|
+
|
||||||
|
+ import net.kyori.adventure.text.Component;
|
||||||
|
+import net.minecraft.server.level.ServerPlayerGameMode;
|
||||||
|
+import net.minecraft.world.level.GameType;
|
||||||
|
+import org.bukkit.event.player.PlayerGameModeChangeEvent;
|
||||||
|
+import org.jetbrains.annotations.NotNull;
|
||||||
|
+import org.jetbrains.annotations.Nullable;
|
||||||
|
+
|
||||||
|
+public class ServerPhotographerGameMode extends ServerPlayerGameMode {
|
||||||
|
+ public ServerPhotographerGameMode(ServerPhotographer photographer) {
|
||||||
|
+ super(photographer);
|
||||||
|
+ super.setGameModeForPlayer(GameType.SPECTATOR, null);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ @Override
|
||||||
|
+ public boolean changeGameModeForPlayer(@NotNull GameType gameMode) {
|
||||||
|
+ return false;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ @Nullable
|
||||||
|
+ @Override
|
||||||
|
+ public PlayerGameModeChangeEvent changeGameModeForPlayer(@NotNull GameType gameMode, PlayerGameModeChangeEvent.@NotNull Cause cause, @Nullable Component cancelMessage) {
|
||||||
|
+ return null;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ @Override
|
||||||
|
+ protected void setGameModeForPlayer(@NotNull GameType gameMode, @Nullable GameType previousGameMode) {
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ @Override
|
||||||
|
+ public void tick() {
|
||||||
|
+ }
|
||||||
|
+}
|
||||||
|
\ No newline at end of file
|
||||||
diff --git a/src/main/java/top/leavesmc/leaves/util/UUIDSerializer.java b/src/main/java/top/leavesmc/leaves/util/UUIDSerializer.java
|
diff --git a/src/main/java/top/leavesmc/leaves/util/UUIDSerializer.java b/src/main/java/top/leavesmc/leaves/util/UUIDSerializer.java
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
index 0000000000000000000000000000000000000000..1329a725a2bd03d3ef6d7131d8bc77f20bf2e566
|
index 0000000000000000000000000000000000000000..1329a725a2bd03d3ef6d7131d8bc77f20bf2e566
|
||||||
@@ -5,23 +5,15 @@ Subject: [PATCH] Fix-MC-172047
|
|||||||
|
|
||||||
|
|
||||||
diff --git a/src/main/java/net/minecraft/world/entity/animal/Wolf.java b/src/main/java/net/minecraft/world/entity/animal/Wolf.java
|
diff --git a/src/main/java/net/minecraft/world/entity/animal/Wolf.java b/src/main/java/net/minecraft/world/entity/animal/Wolf.java
|
||||||
index 2d20b2c1f58beb1ad8c9012d8124e476899e6be6..4e06908ed9759abb61a5ef5abf774874d231a83e 100644
|
index 2d20b2c1f58beb1ad8c9012d8124e476899e6be6..8f7f53a355a5db5f32cae511484c1cf4b15e37e3 100644
|
||||||
--- a/src/main/java/net/minecraft/world/entity/animal/Wolf.java
|
--- a/src/main/java/net/minecraft/world/entity/animal/Wolf.java
|
||||||
+++ b/src/main/java/net/minecraft/world/entity/animal/Wolf.java
|
+++ b/src/main/java/net/minecraft/world/entity/animal/Wolf.java
|
||||||
@@ -52,6 +52,7 @@ import net.minecraft.world.entity.ai.goal.target.OwnerHurtTargetGoal;
|
@@ -529,13 +529,34 @@ public class Wolf extends TamableAnimal implements NeutralMob {
|
||||||
import net.minecraft.world.entity.ai.goal.target.ResetUniversalAngerTargetGoal;
|
|
||||||
import net.minecraft.world.entity.animal.horse.AbstractHorse;
|
|
||||||
import net.minecraft.world.entity.animal.horse.Llama;
|
|
||||||
+import net.minecraft.world.entity.decoration.ArmorStand;
|
|
||||||
import net.minecraft.world.entity.monster.AbstractSkeleton;
|
|
||||||
import net.minecraft.world.entity.monster.Creeper;
|
|
||||||
import net.minecraft.world.entity.monster.Ghast;
|
|
||||||
@@ -529,13 +530,34 @@ public class Wolf extends TamableAnimal implements NeutralMob {
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean wantsToAttack(LivingEntity target, LivingEntity owner) {
|
public boolean wantsToAttack(LivingEntity target, LivingEntity owner) {
|
||||||
- if (!(target instanceof Creeper) && !(target instanceof Ghast)) {
|
- if (!(target instanceof Creeper) && !(target instanceof Ghast)) {
|
||||||
+ if (!(target instanceof Creeper) && !(target instanceof Ghast) && !(target instanceof ArmorStand)) { // Luminol - Fix MC-172047
|
+ if (!(target instanceof Creeper) && !(target instanceof Ghast) && !(target instanceof net.minecraft.world.entity.decoration.ArmorStand)) { // Luminol - Fix MC-172047
|
||||||
if (target instanceof Wolf) {
|
if (target instanceof Wolf) {
|
||||||
Wolf entitywolf = (Wolf) target;
|
Wolf entitywolf = (Wolf) target;
|
||||||
|
|
||||||
@@ -5,10 +5,10 @@ Subject: [PATCH] Fix-MC-2025
|
|||||||
|
|
||||||
|
|
||||||
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
|
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
|
||||||
index d78ad18ac3b69c893a23b6bb9a6837b6a82ebdc2..8f40db062159dea7761a5663edef997a113e828b 100644
|
index c47ee80b1959e5edac0b74c6545bde493455e75a..c8bb5d5a21b6bd50b68fa582a55215ed8f5f355a 100644
|
||||||
--- a/src/main/java/net/minecraft/world/entity/Entity.java
|
--- a/src/main/java/net/minecraft/world/entity/Entity.java
|
||||||
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
|
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
|
||||||
@@ -2551,6 +2551,16 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
|
@@ -2549,6 +2549,16 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
|
||||||
nbttagcompound.putBoolean("Paper.FreezeLock", true);
|
nbttagcompound.putBoolean("Paper.FreezeLock", true);
|
||||||
}
|
}
|
||||||
// Paper end
|
// Paper end
|
||||||
@@ -25,7 +25,7 @@ index d78ad18ac3b69c893a23b6bb9a6837b6a82ebdc2..8f40db062159dea7761a5663edef997a
|
|||||||
return nbttagcompound;
|
return nbttagcompound;
|
||||||
} catch (Throwable throwable) {
|
} catch (Throwable throwable) {
|
||||||
CrashReport crashreport = CrashReport.forThrowable(throwable, "Saving entity NBT");
|
CrashReport crashreport = CrashReport.forThrowable(throwable, "Saving entity NBT");
|
||||||
@@ -2628,6 +2638,13 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
|
@@ -2626,6 +2636,13 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
|
||||||
this.reapplyPosition();
|
this.reapplyPosition();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1,58 +0,0 @@
|
|||||||
sha1() {
|
|
||||||
sha1sum $1 | awk '{print $1}'
|
|
||||||
}
|
|
||||||
|
|
||||||
md5() {
|
|
||||||
md5sum $1 | awk '{print $1}'
|
|
||||||
}
|
|
||||||
|
|
||||||
prop() {
|
|
||||||
grep "${1}" gradle.properties | cut -d'=' -f2 | sed 's/\r//'
|
|
||||||
}
|
|
||||||
|
|
||||||
commitid=$(git log --pretty='%h' -1)
|
|
||||||
mcversion=$(prop mcVersion)
|
|
||||||
gradleVersion=$(prop version)
|
|
||||||
preVersion=$(prop preVersion)
|
|
||||||
tagid="$mcversion-$commitid"
|
|
||||||
jarName="luminol-$mcversion.jar"
|
|
||||||
luminolid="Luminol-$commitid"
|
|
||||||
releaseinfo="releaseinfo.md"
|
|
||||||
#discordmes="discordmes.json"
|
|
||||||
make_latest=$([ $preVersion = "true" ] && echo "false" || echo "true")
|
|
||||||
|
|
||||||
rm -f $discordmes
|
|
||||||
rm -f $releaseinfo
|
|
||||||
|
|
||||||
mv build/libs/Luminol-paperclip-$gradleVersion-reobf.jar $jarName
|
|
||||||
echo "name=$luminolid" >> $GITHUB_ENV
|
|
||||||
echo "tag=$tagid" >> $GITHUB_ENV
|
|
||||||
echo "jar=$jarName" >> $GITHUB_ENV
|
|
||||||
echo "info=$releaseinfo" >> $GITHUB_ENV
|
|
||||||
#echo "discordmes=$discordmes" >> $GITHUB_ENV
|
|
||||||
echo "pre=$preVersion" >> $GITHUB_ENV
|
|
||||||
echo "make_latest=$make_latest" >> $GITHUB_ENV
|
|
||||||
|
|
||||||
echo "$luminolid [](https://github.com/LuminolMC/Luminol/releases/download/$tagid/$jarName)" >> $releaseinfo
|
|
||||||
echo "=====" >> $releaseinfo
|
|
||||||
echo "" >> $releaseinfo
|
|
||||||
if [ $preVersion = "true" ]; then
|
|
||||||
echo "> This is an early, experimental build. It is only recommended for usage on test servers and should be used with caution." >> $releaseinfo
|
|
||||||
echo "> **Backups are mandatory!**" >> $releaseinfo
|
|
||||||
echo "" >> $releaseinfo
|
|
||||||
fi
|
|
||||||
echo "### Commit Message" >> $releaseinfo
|
|
||||||
|
|
||||||
number=$(git log --oneline master ^`git describe --tags --abbrev=0` | wc -l)
|
|
||||||
echo "$(git log --pretty='> [%h] %s' -$number)" >> $releaseinfo
|
|
||||||
|
|
||||||
echo "" >> $releaseinfo
|
|
||||||
echo "### Checksum" >> $releaseinfo
|
|
||||||
echo "| File | $jarName |" >> $releaseinfo
|
|
||||||
echo "| ---- | ---- |" >> $releaseinfo
|
|
||||||
echo "| MD5 | `md5 $jarName` |" >> $releaseinfo
|
|
||||||
echo "| SHA1 | `sha1 $jarName` |" >> $releaseinfo
|
|
||||||
|
|
||||||
#echo -n "{\"content\":\"Leaves New Release\",\"embeds\":[{\"title\":\"$leavesid\",\"url\":\"https://github.com/LeavesMC/Leaves/releases/tag/$tagid\",\"fields\":[{\"name\":\"Changelog\",\"value\":\"" >> $discordmes
|
|
||||||
#echo -n $(git log --oneline --pretty='> [%h] %s\\n' -$number) >> $discordmes
|
|
||||||
#echo "\",\"inline\":true}]}]}" >> $discordmes
|
|
||||||
@@ -1,32 +1,46 @@
|
|||||||
sha256() {
|
sha256() {
|
||||||
sha256sum $1 | awk '{print $1}'
|
sha256sum $1 | awk '{print $1}'
|
||||||
}
|
}
|
||||||
|
|
||||||
prop() {
|
prop() {
|
||||||
grep "${1}" gradle.properties | cut -d'=' -f2 | sed 's/\r//'
|
grep "${1}" gradle.properties | cut -d'=' -f2 | sed 's/\r//'
|
||||||
}
|
}
|
||||||
echo "$tag"
|
|
||||||
project_id="luminol"
|
mcversion_group=$(prop GroupMCV)
|
||||||
project_name="luminol"
|
|
||||||
mcversion=$(prop mcVersion)
|
mcversion=$(prop mcVersion)
|
||||||
ctime=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
|
|
||||||
pre=$(prop preVersion)
|
pre=$(prop preVersion)
|
||||||
|
pro_id_mcv=$project_id-$mcversion
|
||||||
|
|
||||||
if [ $pre = "true" ]; then
|
if [ $pre = "true" ]; then
|
||||||
channel="experimental"
|
channel="experimental"
|
||||||
else
|
else
|
||||||
channel="default"
|
channel="default"
|
||||||
fi
|
fi
|
||||||
promoted=false
|
|
||||||
|
|
||||||
# shellcheck disable=SC2046
|
changes=$(git log -1 --pretty="[{\"commit\": \"%H\", \"message\": \"%s\", \"summary\": \"%s\"}]")
|
||||||
number=$(git log --oneline master ^`git describe --tags --abbrev=0` | wc -l)
|
jar_sha256=`sha256 build/libs/$pro_id_mcv-paperclip.jar`
|
||||||
changes=$(git log --pretty='%H<<<%s>>>' -"$number" | sed ':a;N;$!ba;s/\n//g')
|
jar_name="$pro_id_mcv-paperclip.jar"
|
||||||
jar_name="leaves-$mcversion.jar"
|
ctime=$(date -u +"%s")"000"
|
||||||
jar_sha256=`sha256 $jar_name`
|
|
||||||
|
|
||||||
# v1
|
|
||||||
#curl --location --request POST "https://api.leavesmc.org/new_release" --header "Content-Type: application/json" --data-raw "{\"project_id\":\"$project_id\",\"project_name\":\"$project_name\",\"version\":\"$mcversion\",\"time\":\"$ctime\",\"channel\":\"$channel\",\"promoted\":$promoted,\"changes\":\"$changes\",\"downloads\":{\"application\":{\"name\":\"$jar_name\",\"sha256\":\"$jar_sha256\",\"url\":\"https://github.com/LeavesMC/Leaves/releases/download/$tag/$jar_name\"}},\"secret\":\"$secret\"}"
|
|
||||||
#curl --location --request POST "https://api.leavesmc.org/upload_file" -F "file=@$jar_name" -F "filename=$jar_name" -F "filehash=$jar_sha256" -F "secret=$secret"
|
|
||||||
|
|
||||||
# v2
|
# v2
|
||||||
curl --location --request POST "https://api.luminolmc.com/v2/commit/build" --header "Content-Type: application/json" --header "Authentication: Bearer $secret_v2" --data-raw "{\"project_id\":\"$project_id\",\"version\":\"$mcversion\",\"channel\":\"$channel\",\"changes\":\"$changes\",\"jar_name\":\"$jar_name\",\"sha256\":\"$jar_sha256\",\"tag\":\"$tag\"}"
|
json=$(printf "{\\\"channel\\\":\\\"%s\\\", \\\"jar_name\\\":\\\"%s\\\", \\\"sha256\\\":\\\"%s\\\", \\\"tag\\\":\\\"%s\\\", \\\"time\\\":\\\"%s\\\", \\\"changes\\\":\\\"%s\\\"}" \
|
||||||
|
"$channel" "$jar_name" "$jar_sha256" "$tag" "$ctime" "$changes")
|
||||||
|
echo "[DEBUG] $json"
|
||||||
|
echo "[DEBUG] $changes"
|
||||||
|
echo "[DEBUG] curl --location --request POST \"https://api.luminolmc.com/v2/projects/$project_id/$mcversion/build/commit\" \
|
||||||
|
-H \"Content-Type: application/x-www-form-urlencoded\" \
|
||||||
|
-H \"Authorization: $secret_v2\" \
|
||||||
|
--data-urlencode \"channel=$channel\" \
|
||||||
|
--data-urlencode \"jar_name=$jar_name\" \
|
||||||
|
--data-urlencode \"sha256=$jar_sha256\" \
|
||||||
|
--data-urlencode \"release_tag=$tag\" \
|
||||||
|
--data-urlencode \"time=$ctime\" \
|
||||||
|
--data-urlencode \"changes=$changes\""
|
||||||
|
curl -L --request POST "https://api.luminolmc.com/v2/projects/$project_id/$mcversion/build/commit" \
|
||||||
|
-H "Content-Type: application/x-www-form-urlencoded" \
|
||||||
|
-H "Authorization: $secret_v2" \
|
||||||
|
--data-urlencode "channel=$channel" \
|
||||||
|
--data-urlencode "jar_name=$jar_name" \
|
||||||
|
--data-urlencode "sha256=$jar_sha256" \
|
||||||
|
--data-urlencode "release_tag=$tag" \
|
||||||
|
--data-urlencode "time=$ctime" \
|
||||||
|
--data-urlencode "changes=$changes"
|
||||||
32
scripts/SetENV.sh
Normal file
32
scripts/SetENV.sh
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
prop() {
|
||||||
|
grep "^[[:space:]]*${1}" gradle.properties | cut -d'=' -f2 | sed 's/^[[:space:]]*//; s/\r//'
|
||||||
|
}
|
||||||
|
|
||||||
|
project_id="luminol"
|
||||||
|
project_id_b="Luminol"
|
||||||
|
|
||||||
|
commitid=$(git log --pretty='%h' -1)
|
||||||
|
mcversion=$(prop mcVersion)
|
||||||
|
grdversion=$(prop version)
|
||||||
|
preVersion=$(prop preVersion)
|
||||||
|
release_tag="$mcversion-$commitid"
|
||||||
|
jarName="$project_id-$mcversion-paperclip.jar"
|
||||||
|
jarName_dir="build/libs/$jarName"
|
||||||
|
make_latest=$([ $preVersion = "true" ] && echo "false" || echo "true")
|
||||||
|
number=$(git log --oneline master ^`git describe --tags --abbrev=0` | wc -l)
|
||||||
|
|
||||||
|
mv build/libs/$project_id-paperclip-$grdversion-reobf.jar build/libs/$jarName
|
||||||
|
mv build/libs/$project_id-bundler-$grdversion-reobf.jar build/libs/$project_id-$mcversion-bundler.jar
|
||||||
|
|
||||||
|
|
||||||
|
echo "project_id=$project_id" >> $GITHUB_ENV
|
||||||
|
echo "project_id_b=$project_id_b" >> $GITHUB_ENV
|
||||||
|
echo "commit_id=$commitid" >> $GITHUB_ENV
|
||||||
|
echo "commit_msg=$(git log --pretty='> [%h] %s' -$number)" >> $GITHUB_ENV
|
||||||
|
echo "$commit_msg"
|
||||||
|
echo "mcversion=$mcversion" >> $GITHUB_ENV
|
||||||
|
echo "pre=$preVersion" >> $GITHUB_ENV
|
||||||
|
echo "tag=$release_tag" >> $GITHUB_ENV
|
||||||
|
echo "jar=$jarName" >> $GITHUB_ENV
|
||||||
|
echo "jar_dir=$jarName_dir" >> $GITHUB_ENV
|
||||||
|
echo "make_latest=$make_latest" >> $GITHUB_ENV
|
||||||
Reference in New Issue
Block a user