Compare commits
211 Commits
old/1.20.1
...
build/1.21
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c0d36db38d | ||
|
|
62f90e3fba | ||
|
|
2986abeee1 | ||
|
|
fc38239b61 | ||
|
|
cfe2db6181 | ||
|
|
8975d5676b | ||
|
|
3e1399c421 | ||
|
|
d110f25a23 | ||
|
|
7543f3adbd | ||
|
|
6a16940e2b | ||
|
|
5596d998c1 | ||
|
|
75fad4cd35 | ||
|
|
f476809251 | ||
|
|
269cbb507b | ||
|
|
54dfd7163a | ||
|
|
d975acec6b | ||
|
|
72565bec8e | ||
|
|
05215498c3 | ||
|
|
ae94d43098 | ||
|
|
8889a877d6 | ||
|
|
e915eadfad | ||
|
|
28ce30ec48 | ||
|
|
dd8042f88a | ||
|
|
54bc879a9e | ||
|
|
33701c1eca | ||
|
|
2028e19bf8 | ||
|
|
7a7a88a7bb | ||
|
|
8860cedaf7 | ||
|
|
527b6c7eaf | ||
|
|
e37f05bd87 | ||
|
|
dfb64f50db | ||
|
|
69d4f4bf86 | ||
|
|
64802e7e50 | ||
|
|
a313424212 | ||
|
|
fa3c15b4f3 | ||
|
|
393e079743 | ||
|
|
90d412bbf3 | ||
|
|
98cf5b2d13 | ||
|
|
32243963f5 | ||
|
|
72183c64b9 | ||
|
|
f7998d1955 | ||
|
|
58ddbf4dd6 | ||
|
|
3484117415 | ||
|
|
bff96101bb | ||
|
|
6b54d11f9c | ||
|
|
08a067e974 | ||
|
|
46433f7303 | ||
|
|
72415ee5f2 | ||
|
|
6d7683503c | ||
|
|
6a7a817c0d | ||
|
|
c531844986 | ||
|
|
e721df9890 | ||
|
|
44f2749fe5 | ||
|
|
451d2cc363 | ||
|
|
da6e51f141 | ||
|
|
acb774fbb8 | ||
|
|
ad01d8a450 | ||
|
|
45fe520135 | ||
|
|
2c85fd3304 | ||
|
|
443f09d9e7 | ||
|
|
1d63c3808d | ||
|
|
cbeb17c8e8 | ||
|
|
5557065f36 | ||
|
|
4f2deab03f | ||
|
|
b099cccffb | ||
|
|
c2f67d1f59 | ||
|
|
fd98985104 | ||
|
|
75f88071bc | ||
|
|
e6586daeaa | ||
|
|
305ff4d587 | ||
|
|
5a966df572 | ||
|
|
0d05ccbffc | ||
|
|
6d70d2180f | ||
|
|
15a9cac376 | ||
|
|
c3681a26f5 | ||
|
|
33812e0bc8 | ||
|
|
7ef7531cd3 | ||
|
|
d75427a54e | ||
|
|
9dbff3634b | ||
|
|
64df11da56 | ||
|
|
892269673e | ||
|
|
e5158825bf | ||
|
|
09d30a5d9f | ||
|
|
718927ee70 | ||
|
|
63e37b3633 | ||
|
|
6e591f2d3f | ||
|
|
34fef470e5 | ||
|
|
069250da59 | ||
|
|
4a3d274bda | ||
|
|
930ef33a61 | ||
|
|
ace7a1abe9 | ||
|
|
10ddca5626 | ||
|
|
da7a4324cd | ||
|
|
7c8614f897 | ||
|
|
151f97c9c7 | ||
|
|
225708db0a | ||
|
|
6bb6091980 | ||
|
|
f0c635282d | ||
|
|
14981765c5 | ||
|
|
386d064269 | ||
|
|
6123e40664 | ||
|
|
b5e0e31e3e | ||
|
|
0a8bd76ac3 | ||
|
|
e88cac21e4 | ||
|
|
040724b445 | ||
|
|
531a3bbe3e | ||
|
|
dd781d2610 | ||
|
|
4810a20e50 | ||
|
|
fac51e8b64 | ||
|
|
1cd33a9a1d | ||
|
|
b4737f1a07 | ||
|
|
ab38e33809 | ||
|
|
71243ee5e6 | ||
|
|
90e0b1b857 | ||
|
|
71e7a6f43f | ||
|
|
c655047139 | ||
|
|
ce17ed2020 | ||
|
|
e765830ef2 | ||
|
|
a21f3bab8a | ||
|
|
491c491ba6 | ||
|
|
4815251655 | ||
|
|
4fc2eec8b7 | ||
|
|
39a32b7ea3 | ||
|
|
5b5d1c1281 | ||
|
|
aede6b2591 | ||
|
|
d526550c66 | ||
|
|
8e50bc4b0c | ||
|
|
e25871e11c | ||
|
|
75f1875e4b | ||
|
|
f495171031 | ||
|
|
9b1303d849 | ||
|
|
cee005f2b9 | ||
|
|
6b4bc276a0 | ||
|
|
39728823f0 | ||
|
|
a479b3e02f | ||
|
|
e4ca876d98 | ||
|
|
38c2cfa282 | ||
|
|
3852ef88c4 | ||
|
|
03821dffe9 | ||
|
|
02143d8487 | ||
|
|
83e396bde6 | ||
|
|
bdc88bc21f | ||
|
|
2a7f161519 | ||
|
|
1338975cb7 | ||
|
|
07d5d1a905 | ||
|
|
1c4ffc2a14 | ||
|
|
e20a613029 | ||
|
|
fca7f237b6 | ||
|
|
1a296539b9 | ||
|
|
8170f1f246 | ||
|
|
e12e3db7ef | ||
|
|
04203941c1 | ||
|
|
33db373ae2 | ||
|
|
67b1959f31 | ||
|
|
f16785b526 | ||
|
|
d9b45e9b07 | ||
|
|
9d97d0d9bd | ||
|
|
71c863456f | ||
|
|
c33c06589f | ||
|
|
ec6ce69526 | ||
|
|
9686a72d0d | ||
|
|
90de54692c | ||
|
|
9a288453bc | ||
|
|
db8e9122cb | ||
|
|
63bd308315 | ||
|
|
707c138318 | ||
|
|
bcb9a051af | ||
|
|
2e182c5aaa | ||
|
|
62fab39558 | ||
|
|
0309438d9f | ||
|
|
e071249ed1 | ||
|
|
d4cbc57b49 | ||
|
|
dc0856ca65 | ||
|
|
b009259293 | ||
|
|
2008ba2d54 | ||
|
|
fad453c120 | ||
|
|
7b62b795ae | ||
|
|
e5292079fb | ||
|
|
e9b2902304 | ||
|
|
1b3cb0dc53 | ||
|
|
d1572993db | ||
|
|
1474b31ba5 | ||
|
|
11c340c828 | ||
|
|
9502ebf684 | ||
|
|
96ef8b9e4d | ||
|
|
9889ed9b5b | ||
|
|
db9b36463c | ||
|
|
1764af50d7 | ||
|
|
922c33171c | ||
|
|
3c625b1141 | ||
|
|
fa6429f5b6 | ||
|
|
ddc4aeedc0 | ||
|
|
63c63f844e | ||
|
|
0f0f925cb8 | ||
|
|
c0273a9343 | ||
|
|
326a88dca5 | ||
|
|
cb3099170e | ||
|
|
a2120f0c82 | ||
|
|
1c33d683c8 | ||
|
|
ff30483d2c | ||
|
|
3884819fff | ||
|
|
41df279b8b | ||
|
|
8730a4d0a5 | ||
|
|
c357668334 | ||
|
|
9cde439cce | ||
|
|
0290b04ffd | ||
|
|
d63b408e89 | ||
|
|
5efc27e381 | ||
|
|
4042f69c8d | ||
|
|
617172ab6c | ||
|
|
7737cd805a |
39
.editorconfig
Normal file
39
.editorconfig
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
[*]
|
||||||
|
charset=utf-8
|
||||||
|
end_of_line=lf
|
||||||
|
insert_final_newline=true
|
||||||
|
indent_style=space
|
||||||
|
indent_size=4
|
||||||
|
ij_any_block_comment_add_space = false
|
||||||
|
ij_any_block_comment_at_first_column = false
|
||||||
|
ij_any_line_comment_at_first_column = false
|
||||||
|
ij_any_line_comment_add_space = true
|
||||||
|
max_line_length = 120
|
||||||
|
ij_visual_guides = 80
|
||||||
|
|
||||||
|
[*.tiny]
|
||||||
|
indent_style=tab
|
||||||
|
|
||||||
|
[*.bat]
|
||||||
|
end_of_line=crlf
|
||||||
|
|
||||||
|
[*.yml]
|
||||||
|
indent_size=2
|
||||||
|
|
||||||
|
[*.patch]
|
||||||
|
trim_trailing_whitespace=false
|
||||||
|
|
||||||
|
[*.java]
|
||||||
|
ij_continuation_indent_size = 4
|
||||||
|
ij_java_class_count_to_use_import_on_demand = 999999
|
||||||
|
ij_java_insert_inner_class_imports = false
|
||||||
|
ij_java_names_count_to_use_import_on_demand = 999999
|
||||||
|
ij_java_imports_layout = *,|,$*
|
||||||
|
ij_java_generate_final_locals = true
|
||||||
|
ij_java_generate_final_parameters = true
|
||||||
|
|
||||||
|
[*-Server/src/main/resources/data/**/*.json]
|
||||||
|
indent_size = 2
|
||||||
|
|
||||||
|
[paper-api-generator/generated/**/*.java]
|
||||||
|
ij_java_imports_layout = $*,|,*
|
||||||
7
.gitattributes
vendored
Normal file
7
.gitattributes
vendored
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
* text=auto eol=lf
|
||||||
|
|
||||||
|
*.sh text eol=lf
|
||||||
|
gradlew text eol=lf
|
||||||
|
*.bat text eol=crlf
|
||||||
|
|
||||||
|
*.jar binary
|
||||||
BIN
.github/assets/logo.png
vendored
BIN
.github/assets/logo.png
vendored
Binary file not shown.
|
Before Width: | Height: | Size: 176 KiB |
BIN
.github/assets/title.png
vendored
BIN
.github/assets/title.png
vendored
Binary file not shown.
|
Before Width: | Height: | Size: 107 KiB |
107
.github/workflows/build.yml
vendored
107
.github/workflows/build.yml
vendored
@@ -1,107 +0,0 @@
|
|||||||
name: Build Plazma
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches: [ "ver/*", "feat/*", "dev/*", "expr/*", "ench/*", "impl/*" ]
|
|
||||||
workflow_dispatch:
|
|
||||||
|
|
||||||
env:
|
|
||||||
ORG_NAME: PlazmaMC
|
|
||||||
MC_VERSION: 1.20.1
|
|
||||||
MAIN_BRANCH: ver/1.20.1
|
|
||||||
DEBUG: 'false'
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
release:
|
|
||||||
strategy:
|
|
||||||
matrix:
|
|
||||||
base_jdk: [17]
|
|
||||||
graal: [latest]
|
|
||||||
os: [ubuntu-22.04]
|
|
||||||
|
|
||||||
if: "!startsWith(github.event.commits[0].message, '[CI-Skip]')"
|
|
||||||
runs-on: ${{ matrix.os }}
|
|
||||||
steps:
|
|
||||||
- name: Checkout action
|
|
||||||
uses: actions/checkout@v3
|
|
||||||
|
|
||||||
- name: Checkout pages
|
|
||||||
uses: actions/checkout@v3
|
|
||||||
with:
|
|
||||||
path: javadoc
|
|
||||||
ref: gh-pages
|
|
||||||
token: ${{ secrets.GH_PAT }}
|
|
||||||
|
|
||||||
- name: Validate Gradle Wrapper
|
|
||||||
uses: gradle/wrapper-validation-action@v1
|
|
||||||
|
|
||||||
- name: Set up GraalVM ${{ matrix.base_jdk }}
|
|
||||||
uses: graalvm/setup-graalvm@v1
|
|
||||||
with:
|
|
||||||
github-token: ${{ secrets.GH_PAT }}
|
|
||||||
java-version: ${{ matrix.base_jdk }}
|
|
||||||
version: ${{ matrix.graal }}
|
|
||||||
cache: 'gradle'
|
|
||||||
|
|
||||||
- name: Configure Git
|
|
||||||
run: git config --global user.email "41898282+github-actions[bot]@users.noreply.github.com" && git config --global user.name "github-actions[bot]"
|
|
||||||
|
|
||||||
- name: Apply Patches
|
|
||||||
run: ./gradlew applyPatches --stacktrace
|
|
||||||
|
|
||||||
- name: Build
|
|
||||||
run: ./gradlew build --stacktrace
|
|
||||||
|
|
||||||
- name: Create Reobf Jar
|
|
||||||
run: ./gradlew createReobfPaperclipJar --stacktrace
|
|
||||||
|
|
||||||
- name: Create Mojmap Jar
|
|
||||||
run: ./gradlew createMojmapPaperclipJar --stacktrace
|
|
||||||
|
|
||||||
- name: Update Javadoc
|
|
||||||
continue-on-error: true
|
|
||||||
if: github.ref_name == env.MAIN_BRANCH
|
|
||||||
run: |
|
|
||||||
(cd Plazma-API/build/docs/javadoc && tar c .) | (cd javadoc && tar xf -)
|
|
||||||
cd javadoc
|
|
||||||
git add . && git commit -m "Update Javadocs"
|
|
||||||
git push
|
|
||||||
|
|
||||||
- name: Publish Packages
|
|
||||||
if: github.ref_name == env.MAIN_BRANCH
|
|
||||||
run: |
|
|
||||||
export GITHUB_USERNAME=${{ env.ORG_NAME }}
|
|
||||||
export GITHUB_TOKEN=${{ secrets.GH_PAT }}
|
|
||||||
./gradlew publish --stacktrace
|
|
||||||
|
|
||||||
- name: Upload Artifacts
|
|
||||||
if: env.DEBUG == 'true' || !startsWith(github.ref_name, 'ver/')
|
|
||||||
uses: actions/upload-artifact@v3
|
|
||||||
with:
|
|
||||||
name: Artifacts
|
|
||||||
path: |
|
|
||||||
build/libs
|
|
||||||
Plazma-API/build/docs/javadoc
|
|
||||||
|
|
||||||
- name: Get Release Number
|
|
||||||
run: echo "RELEASE=$(git ls-remote --tags origin | grep "release" | wc -l)" >> $GITHUB_ENV
|
|
||||||
|
|
||||||
- name: Release Artifacts
|
|
||||||
if: startsWith(github.ref_name, 'ver/')
|
|
||||||
uses: marvinpinto/action-automatic-releases@latest
|
|
||||||
with:
|
|
||||||
title: "Release #${{ env.RELEASE }}"
|
|
||||||
automatic_release_tag: release-${{ env.RELEASE }}
|
|
||||||
repo_token: "${{ secrets.GH_PAT }}"
|
|
||||||
files: build/libs/*.jar
|
|
||||||
prerelease: false
|
|
||||||
|
|
||||||
- name: Release Artifacts (Latest)
|
|
||||||
if: startsWith(github.ref_name, 'ver/')
|
|
||||||
uses: marvinpinto/action-automatic-releases@latest
|
|
||||||
with:
|
|
||||||
title: "Release #${{ env.RELEASE }}"
|
|
||||||
automatic_release_tag: latest-${{ env.MC_VERSION }}
|
|
||||||
repo_token: "${{ secrets.GH_PAT }}"
|
|
||||||
files: build/libs/*.jar
|
|
||||||
prerelease: false
|
|
||||||
14
.github/workflows/close-invalid-prs.yml
vendored
14
.github/workflows/close-invalid-prs.yml
vendored
@@ -1,14 +0,0 @@
|
|||||||
name: Close invalid PRs
|
|
||||||
|
|
||||||
on:
|
|
||||||
pull_request_target:
|
|
||||||
types: [ opened ]
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
run:
|
|
||||||
if: ${{ github.repository != github.event.pull_request.head.repo.full_name && !startsWith(github.head_ref, 'ver/') }}
|
|
||||||
runs-on: ubuntu-22.04
|
|
||||||
steps:
|
|
||||||
- uses: superbrothers/close-pull-request@v3
|
|
||||||
with:
|
|
||||||
comment: "Please do not open pull requests from the `master` branch, create a new branch instead."
|
|
||||||
14
.github/workflows/gradle.yml
vendored
14
.github/workflows/gradle.yml
vendored
@@ -2,15 +2,21 @@ name: Test Gradle build script
|
|||||||
|
|
||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches: [ "ver/*", "feat/*", "dev/*", "expr/*", "ench/*", "impl/*" ]
|
branches: [ "ver/*", "dev/*", "feat/**/*" ]
|
||||||
|
paths:
|
||||||
|
- "*.kt"
|
||||||
|
- "*.kts"
|
||||||
|
- "*.toml"
|
||||||
|
- "gradle-wrapper.*"
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
release:
|
check:
|
||||||
|
name: Test Gradle build script
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
jdk: [19.0.2+7]
|
jdk: [21]
|
||||||
java: ['temurin']
|
java: ['zulu']
|
||||||
os: [ubuntu-22.04]
|
os: [ubuntu-22.04]
|
||||||
|
|
||||||
if: "!contains(github.event.commits[0].message, '[CheckSkip]')"
|
if: "!contains(github.event.commits[0].message, '[CheckSkip]')"
|
||||||
|
|||||||
46
.github/workflows/javadocs.yml
vendored
46
.github/workflows/javadocs.yml
vendored
@@ -1,46 +0,0 @@
|
|||||||
name: Deploy Javadocs
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches: ["gh-pages"]
|
|
||||||
workflow_dispatch:
|
|
||||||
|
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
pages: write
|
|
||||||
id-token: write
|
|
||||||
|
|
||||||
concurrency:
|
|
||||||
group: "pages"
|
|
||||||
cancel-in-progress: true
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
build:
|
|
||||||
if: "!startsWith(github.event.commits[0].message, '[CI-Skip]')"
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- name: Checkout
|
|
||||||
uses: actions/checkout@v3
|
|
||||||
|
|
||||||
- name: Setup Pages
|
|
||||||
uses: actions/configure-pages@v3
|
|
||||||
|
|
||||||
- name: Build with Jekyll
|
|
||||||
uses: actions/jekyll-build-pages@v1
|
|
||||||
with:
|
|
||||||
source: ./
|
|
||||||
destination: ./_site
|
|
||||||
|
|
||||||
- name: Upload artifact
|
|
||||||
uses: actions/upload-pages-artifact@v1
|
|
||||||
|
|
||||||
deploy:
|
|
||||||
environment:
|
|
||||||
name: github-pages
|
|
||||||
url: ${{ steps.deployment.outputs.page_url }}
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
needs: build
|
|
||||||
steps:
|
|
||||||
- name: Deploy to GitHub Pages
|
|
||||||
id: deployment
|
|
||||||
uses: actions/deploy-pages@v1
|
|
||||||
12
.github/workflows/release.yaml
vendored
Normal file
12
.github/workflows/release.yaml
vendored
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
name: Release Plazma
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [ "ver/*", "dev/*", "feat/**/*" ]
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
release:
|
||||||
|
name: Release Plazma (${{ github.ref_name }})
|
||||||
|
uses: PlazmaMC/PlazmaBukkit/.github/workflows/global.yaml@main
|
||||||
|
secrets: inherit
|
||||||
36
.github/workflows/test.yml
vendored
36
.github/workflows/test.yml
vendored
@@ -1,36 +0,0 @@
|
|||||||
name: Test build with Normal JDK
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches: [ "ver/*", "feat/*", "dev/*", "expr/*", "ench/*", "impl/*" ]
|
|
||||||
workflow_dispatch:
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
release:
|
|
||||||
strategy:
|
|
||||||
matrix:
|
|
||||||
jdk: [19.0.2+7]
|
|
||||||
java: ['temurin']
|
|
||||||
os: [ubuntu-22.04]
|
|
||||||
|
|
||||||
if: "!startsWith(github.event.commits[0].message, '[CI-Skip]')"
|
|
||||||
runs-on: ${{ matrix.os }}
|
|
||||||
steps:
|
|
||||||
- name: Checkout action
|
|
||||||
uses: actions/checkout@v3
|
|
||||||
|
|
||||||
- name: Validate Gradle Wrapper
|
|
||||||
uses: gradle/wrapper-validation-action@v1
|
|
||||||
|
|
||||||
- name: Set up JDK ${{ matrix.java }} ${{ matrix.jdk }}
|
|
||||||
uses: actions/setup-java@v3
|
|
||||||
with:
|
|
||||||
distribution: ${{ matrix.java }}
|
|
||||||
java-version: ${{ matrix.jdk }}
|
|
||||||
cache: 'gradle'
|
|
||||||
|
|
||||||
- name: Test build
|
|
||||||
run: |
|
|
||||||
git config --global user.email "41898282+github-actions[bot]@users.noreply.github.com" && git config --global user.name "github-actions[bot]"
|
|
||||||
./gradlew applyPatches --stacktrace
|
|
||||||
./gradlew build --stacktrace
|
|
||||||
16
.gitignore
vendored
16
.gitignore
vendored
@@ -18,11 +18,16 @@ out/
|
|||||||
nbproject/
|
nbproject/
|
||||||
nbactions.xml
|
nbactions.xml
|
||||||
|
|
||||||
|
# vscode
|
||||||
|
.vscode/
|
||||||
|
|
||||||
# Gradle
|
# Gradle
|
||||||
!gradle-wrapper.jar
|
!gradle-wrapper.jar
|
||||||
.gradle/
|
.gradle/
|
||||||
build/
|
build/
|
||||||
*/build/
|
*/build/
|
||||||
|
run/
|
||||||
|
javadoc/
|
||||||
|
|
||||||
# we use maven!
|
# we use maven!
|
||||||
build.xml
|
build.xml
|
||||||
@@ -33,7 +38,6 @@ target/
|
|||||||
dependency-reduced-pom.xml
|
dependency-reduced-pom.xml
|
||||||
|
|
||||||
# various other potential build files
|
# various other potential build files
|
||||||
build/
|
|
||||||
bin/
|
bin/
|
||||||
dist/
|
dist/
|
||||||
manifest.mf
|
manifest.mf
|
||||||
@@ -48,12 +52,12 @@ manifest.mf
|
|||||||
# Linux temp files
|
# Linux temp files
|
||||||
*~
|
*~
|
||||||
|
|
||||||
# other stuff
|
# Paperweight
|
||||||
run/
|
|
||||||
javadoc/
|
|
||||||
|
|
||||||
build-data/
|
build-data/
|
||||||
*-API
|
*-API
|
||||||
*-MojangAPI
|
*-MojangAPI
|
||||||
*-Server
|
*-Server
|
||||||
*.jar
|
paper-api-generator
|
||||||
|
compare.txt
|
||||||
|
*.patch
|
||||||
|
!patches/**/*
|
||||||
|
|||||||
@@ -1,2 +0,0 @@
|
|||||||
purpurCommit = f6fd5f6ba6e672bfdbc79def7e8598d984ec8b3c
|
|
||||||
pufferfishCommit = 040d0aa58ee6bdadc1cb040de2cb24e9f3bf4fb2
|
|
||||||
35
README.md
35
README.md
@@ -1,31 +1,24 @@
|
|||||||
<div align="center">
|
<div align="center">
|
||||||
|
|
||||||

|
[](https://github.com/PlazmaMC/Plazma)
|
||||||
|
|
||||||
### A Server Platform for Minecraft: Java Edition based on [Paper](https://github.com/PaperMC/Paper)
|
### A Server Platform for Minecraft: Java Edition based on [Paper](https://github.com/PaperMC/Paper)
|
||||||
|
|
||||||
[](https://discord.gg/MmfC52K8A8)
|
[](https://plazmamc.org/discord)
|
||||||
[](https://github.com/PlazmaMC/Plazma/actions/workflows/build.yml?query=branch:ver/1.20.1)
|
[](LICENSE.md)
|
||||||
[](https://github.com/PlazmaMC/AlwaysUpToDate/actions/workflows/plazma.yml)
|
[](https://plazmamc.org/downloads)
|
||||||
[](https://github.com/PlazmaMC/Plazma/releases/latest-1.20.1)
|
|
||||||
|
|
||||||
[](LICENSE)
|
[](https://plazmamc.org/downloads)
|
||||||
[](https://github.com/PlazmaMC/Plazma/releases/tag/latest-1.20.1)
|
[](https://github.com/PlazmaMC/Plazma/stargazers)
|
||||||
[](https://github.com/PlazmaMC/Plazma/stargazers)
|
[](https://github.com/PlazmaMC/Plazma/forks)
|
||||||
[](https://github.com/PPlazmaMC/Plazma/network/members)
|
[](https://github.com/PlazmaMC/Plazma/watchers)
|
||||||
[](https://github.com/PlazmaMC/Plazma/watchers)
|
|
||||||
|
### [⬇️ Downloads](https://plazmamc.org/downloads)
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
[main]: https://github.com/PlazmaMC/Plazma
|
[main]: https://github.com/PlazmaMC/PlazmaBukkit/blob/main/README.md
|
||||||
|
|
||||||
### This is the branch for Plazma 1.20.1. If you want to know more about Plazma, please check the [main branch][main].
|
> [!IMPORTANT]
|
||||||
이곳은 플라즈마의 1.20.1용 브랜치 입니다. 플라즈마에 대해 자세히 알고 싶다면 [main 브랜치][main]를 확인해주세요.
|
This is the branch for Plazma 1.21.2/3. If you want to know more about Plazma, please check the **[main branch][main]**.<br>
|
||||||
|
이곳은 플라즈마의 1.21.2/3용 분기입니다. 플라즈마에 대해 자세히 알고 싶다면 **[main 분기][main]** 를 확인해주세요.
|
||||||
## ⬇️ Downloads
|
|
||||||
### If you don't know about Mojmap or Bundler, download **Reobf Paperclip**
|
|
||||||
Mojmap 또는 Bundler에 대해 잘 알지 못한다면, **Reobf Paperclip**을 사용하세요
|
|
||||||
|
|
||||||
| **Reobf Paperclip (Default)** | Mojmap Paperclip | Reobf Bundler | Mojmap Bundler |
|
|
||||||
| :---: | :---: | :---: | :---: |
|
|
||||||
| [Download](https://github.com/PlazmaMC/Plazma/releases/download/latest-1.20.1/plazma-paperclip-1.20.1-R0.1-SNAPSHOT-reobf.jar) | [Download](https://github.com/PlazmaMC/Plazma/releases/download/latest-1.20.1/plazma-paperclip-1.20.1-R0.1-SNAPSHOT-mojmap.jar) | [Download](https://github.com/PlazmaMC/Plazma/releases/download/latest-1.20.1/plazma-bundler-1.20.1-R0.1-SNAPSHOT-reobf.jar) | [Download](https://github.com/PlazmaMC/Plazma/releases/download/latest-1.20.1/plazma-bundler-1.20.1-R0.1-SNAPSHOT-mojmap.jar) |
|
|
||||||
|
|||||||
14
build-data/dev-imports.txt
Normal file
14
build-data/dev-imports.txt
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
# You can use this file to import files from minecraft libraries into the project
|
||||||
|
# format:
|
||||||
|
# <artifactId> <fileName>
|
||||||
|
# both fully qualified and a file based syntax are accepted for <fileName>:
|
||||||
|
# authlib com/mojang/authlib/yggdrasil/YggdrasilGameProfileRepository.java
|
||||||
|
# datafixerupper com.mojang.datafixers.DataFixerBuilder
|
||||||
|
# datafixerupper com/mojang/datafixers/util/Either.java
|
||||||
|
# To import classes from the vanilla Minecraft jar use `minecraft` as the artifactId:
|
||||||
|
# minecraft net.minecraft.world.level.entity.LevelEntityGetterAdapter
|
||||||
|
# minecraft net/minecraft/world/level/entity/LevelEntityGetter.java
|
||||||
|
# To import minecraft data files, like the default chat type, use `mc_data` as the prefix:
|
||||||
|
# mc_data chat_type/chat.json
|
||||||
|
# mc_data dimension_type/overworld.json
|
||||||
|
#
|
||||||
170
build.gradle.kts
170
build.gradle.kts
@@ -1,106 +1,168 @@
|
|||||||
import io.papermc.paperweight.util.*
|
import org.gradle.api.tasks.testing.logging.TestExceptionFormat
|
||||||
import io.papermc.paperweight.util.constants.PAPERCLIP_CONFIG
|
import org.gradle.api.tasks.testing.logging.TestLogEvent
|
||||||
|
|
||||||
plugins {
|
plugins {
|
||||||
java
|
java
|
||||||
`maven-publish`
|
`maven-publish`
|
||||||
id("com.github.johnrengelman.shadow") version "8.1.1" apply false
|
`kotlin-dsl`
|
||||||
id("io.papermc.paperweight.patcher") version "1.5.7-SNAPSHOT"
|
`always-up-to-date`
|
||||||
|
alias(libs.plugins.shadow) apply false
|
||||||
|
alias(libs.plugins.paperweight)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
val jdkVersion = property("jdkVersion").toString().toInt()
|
||||||
|
val providerRepo = property("providerRepo").toString()
|
||||||
|
val brandName = property("brandName").toString()
|
||||||
|
|
||||||
|
kotlin.jvmToolchain(jdkVersion)
|
||||||
|
|
||||||
repositories {
|
repositories {
|
||||||
mavenCentral()
|
mavenCentral()
|
||||||
maven("https://papermc.io/repo/repository/maven-public/") {
|
maven("https://repo.papermc.io/repository/maven-public/") {
|
||||||
content {
|
content { onlyForConfigurations(configurations.paperclip.name) }
|
||||||
onlyForConfigurations(PAPERCLIP_CONFIG)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
remapper("net.fabricmc:tiny-remapper:0.8.9:fat")
|
remapper(libs.remapper)
|
||||||
decompiler("net.minecraftforge:forgeflower:2.0.627.2")
|
decompiler(libs.decompiler)
|
||||||
paperclip("io.papermc:paperclip:3.0.3")
|
paperclip(libs.paperclip)
|
||||||
|
}
|
||||||
|
|
||||||
|
allprojects {
|
||||||
|
apply(plugin = "java")
|
||||||
|
apply(plugin = "maven-publish")
|
||||||
|
|
||||||
|
java.toolchain.languageVersion.set(JavaLanguageVersion.of(jdkVersion))
|
||||||
|
|
||||||
|
publishing.repositories.maven("https://maven.pkg.github.com/$providerRepo") {
|
||||||
|
name = "githubPackage"
|
||||||
|
|
||||||
|
credentials {
|
||||||
|
username = providers.systemProperty("ghName").orElse(providers.gradleProperty("ghName")).getOrElse(System.getenv("GITHUB_NAME"))
|
||||||
|
password = providers.systemProperty("ghToken").orElse(providers.gradleProperty("ghToken")).getOrElse(System.getenv("GITHUB_TOKEN"))
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
subprojects {
|
subprojects {
|
||||||
apply(plugin = "java")
|
|
||||||
|
|
||||||
java.toolchain.languageVersion.set(JavaLanguageVersion.of(17))
|
|
||||||
|
|
||||||
tasks {
|
tasks {
|
||||||
withType<JavaCompile>().configureEach {
|
withType<JavaCompile>().configureEach {
|
||||||
options.encoding = "UTF-8"
|
options.encoding = Charsets.UTF_8.name()
|
||||||
options.release.set(17)
|
options.release = jdkVersion
|
||||||
}
|
}
|
||||||
|
|
||||||
withType<Javadoc> {
|
withType<Javadoc> {
|
||||||
options.encoding = Charsets.UTF_8.name()
|
options.encoding = Charsets.UTF_8.name()
|
||||||
}
|
}
|
||||||
|
|
||||||
withType<ProcessResources> {
|
withType<ProcessResources> {
|
||||||
filteringCharset = Charsets.UTF_8.name()
|
filteringCharset = Charsets.UTF_8.name()
|
||||||
}
|
}
|
||||||
|
|
||||||
withType<Test> {
|
withType<Test> {
|
||||||
minHeapSize = "2g"
|
testLogging {
|
||||||
maxHeapSize = "2g"
|
showStackTraces = true
|
||||||
|
exceptionFormat = TestExceptionFormat.FULL
|
||||||
|
events(TestLogEvent.STANDARD_OUT)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
repositories {
|
repositories {
|
||||||
mavenCentral()
|
mavenCentral()
|
||||||
maven("https://oss.sonatype.org/content/groups/public/")
|
|
||||||
maven("https://papermc.io/repo/repository/maven-public/")
|
|
||||||
maven("https://ci.emc.gs/nexus/content/groups/aikar/")
|
|
||||||
maven("https://repo.aikar.co/content/groups/aikar")
|
|
||||||
maven("https://repo.md-5.net/content/repositories/releases/")
|
|
||||||
maven("https://hub.spigotmc.org/nexus/content/groups/public/")
|
|
||||||
maven("https://jitpack.io")
|
maven("https://jitpack.io")
|
||||||
maven("https://oss.sonatype.org/content/repositories/snapshots/")
|
maven("https://papermc.io/repo/repository/maven-public/")
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
paperweight {
|
paperweight {
|
||||||
serverProject.set(project(":plazma-server"))
|
serverProject = project(":${brandName.lowercase()}-server")
|
||||||
|
|
||||||
remapRepo.set("https://maven.fabricmc.net/")
|
remapRepo = "https://repo.papermc.io/repository/maven-public/"
|
||||||
decompileRepo.set("https://files.minecraftforge.net/maven/")
|
decompileRepo = "https://repo.papermc.io/repository/maven-public/"
|
||||||
|
|
||||||
usePaperUpstream(providers.gradleProperty("paperCommit")) {
|
usePaperUpstream(providers.gradleProperty("paperCommit")) {
|
||||||
withPaperPatcher {
|
withPaperPatcher {
|
||||||
apiPatchDir.set(layout.projectDirectory.dir("patches/api"))
|
apiPatchDir.set(projectDir.resolve("patches/api"))
|
||||||
apiOutputDir.set(layout.projectDirectory.dir("Plazma-API"))
|
apiOutputDir.set(projectDir.resolve("$brandName-API"))
|
||||||
|
|
||||||
serverPatchDir.set(layout.projectDirectory.dir("patches/server"))
|
serverPatchDir.set(projectDir.resolve("patches/server"))
|
||||||
serverOutputDir.set(layout.projectDirectory.dir("Plazma-Server"))
|
serverOutputDir.set(projectDir.resolve("$brandName-Server"))
|
||||||
|
}
|
||||||
|
|
||||||
|
patchTasks.register("generatedApi") {
|
||||||
|
isBareDirectory = true
|
||||||
|
upstreamDirPath = "paper-api-generator/generated"
|
||||||
|
patchDir = projectDir.resolve("patches/generated-api")
|
||||||
|
outputDir = projectDir.resolve("paper-api-generator/generated")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
val upstreamTask = tasks.register("updateUpstream") {
|
val paperRepoVal = property("paperRepo").toString()
|
||||||
val tempDir = layout.cacheDir("updateUpstream");
|
val paperBranch = property("paperBranch").toString()
|
||||||
val file = "gradle.properties";
|
val purpurRepoVal = property("purpurRepo").toString()
|
||||||
|
val purpurBranch = property("purpurBranch").toString()
|
||||||
|
val pufferfishRepoVal = property("pufferfishRepo").toString()
|
||||||
|
val pufferfishBranch = property("pufferfishBranch").toString()
|
||||||
|
val isUsePufferfish = property("usePufferfish").toString().toBoolean()
|
||||||
|
|
||||||
doFirst {
|
alwaysUpToDate {
|
||||||
val apiResponse = layout.cache.resolve("apiResponse.json");
|
|
||||||
download.get().download("https://api.github.com/repos/PaperMC/Paper/commits/master", apiResponse);
|
|
||||||
val latestCommit = gson.fromJson<paper.libs.com.google.gson.JsonObject>(apiResponse)["sha"].asString;
|
|
||||||
|
|
||||||
copy {
|
paperRepo.set(paperRepoVal)
|
||||||
from(file)
|
paperRef.set(paperBranch)
|
||||||
into(tempDir)
|
paperCommitName.set("paperCommit")
|
||||||
filter { line: String ->
|
|
||||||
line.replace("paperCommit = .*".toRegex(), "paperCommit = $latestCommit")
|
purpurRepo.set(purpurRepoVal)
|
||||||
|
purpurRef.set(purpurBranch)
|
||||||
|
purpurCommitName.set("purpurCommit")
|
||||||
|
|
||||||
|
pufferfishRepo.set(pufferfishRepoVal)
|
||||||
|
pufferfishRef.set(pufferfishBranch)
|
||||||
|
usePufferfish.set(isUsePufferfish)
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
tasks {
|
||||||
|
applyPatches {
|
||||||
|
dependsOn("applyGeneratedApiPatches")
|
||||||
|
}
|
||||||
|
|
||||||
|
rebuildPatches {
|
||||||
|
dependsOn("rebuildGeneratedApiPatches")
|
||||||
|
}
|
||||||
|
|
||||||
|
generateDevelopmentBundle {
|
||||||
|
apiCoordinates.set("${project.group}:${brandName.lowercase()}-api")
|
||||||
|
libraryRepositories.addAll(
|
||||||
|
"https://repo.maven.apache.org/maven2/",
|
||||||
|
"https://maven.pkg.github.com/$providerRepo",
|
||||||
|
"https://papermc.io/repo/repository/maven-public/"
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
clean {
|
||||||
|
doLast {
|
||||||
|
listOf(
|
||||||
|
".gradle/caches",
|
||||||
|
"$brandName-API",
|
||||||
|
"$brandName-Server",
|
||||||
|
"paper-api-generator",
|
||||||
|
"run",
|
||||||
|
|
||||||
|
// remove dev environment files
|
||||||
|
"0001-fixup.patch",
|
||||||
|
"compare.txt"
|
||||||
|
).forEach {
|
||||||
|
projectDir.resolve(it).deleteRecursively()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
doLast {
|
publishing {
|
||||||
copy {
|
publications.create<MavenPublication>("devBundle") {
|
||||||
from(tempDir.file("gradle.properties"))
|
artifact(tasks.generateDevelopmentBundle) { artifactId = "dev-bundle" }
|
||||||
into(project.file(file).parent)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
31
buildSrc/build.gradle.kts
Normal file
31
buildSrc/build.gradle.kts
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
plugins {
|
||||||
|
java
|
||||||
|
`kotlin-dsl`
|
||||||
|
id("com.gradleup.shadow") version "8.3.5"
|
||||||
|
}
|
||||||
|
|
||||||
|
kotlin.jvmToolchain(21)
|
||||||
|
|
||||||
|
repositories {
|
||||||
|
mavenCentral()
|
||||||
|
maven("https://papermc.io/repo/repository/maven-public/")
|
||||||
|
}
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
shadow("io.papermc.paperweight:paperweight-patcher:1.6.2-SNAPSHOT")
|
||||||
|
}
|
||||||
|
|
||||||
|
tasks {
|
||||||
|
jar {
|
||||||
|
finalizedBy(shadowJar)
|
||||||
|
}
|
||||||
|
|
||||||
|
shadowJar {
|
||||||
|
archiveFileName.set("buildSrc.jar")
|
||||||
|
configurations = listOf(project.configurations["shadow"])
|
||||||
|
|
||||||
|
exclude("META-INF/gradle-plugins/io.papermc.paperweight.patcher.properties")
|
||||||
|
relocate("io.papermc.paperweight", "org.plazmamc.alwaysuptodate.internal.paperweight")
|
||||||
|
minimize()
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,79 @@
|
|||||||
|
package org.plazmamc.alwaysuptodate
|
||||||
|
|
||||||
|
import io.papermc.paperweight.util.Git
|
||||||
|
import org.gradle.api.Plugin
|
||||||
|
import org.gradle.api.Project
|
||||||
|
import org.gradle.api.provider.Property
|
||||||
|
import org.gradle.api.tasks.TaskProvider
|
||||||
|
import org.plazmamc.alwaysuptodate.tasks.*
|
||||||
|
import org.plazmamc.alwaysuptodate.utils.CheckGitTask
|
||||||
|
import org.plazmamc.alwaysuptodate.utils.configureTask
|
||||||
|
import org.plazmamc.alwaysuptodate.utils.flatten
|
||||||
|
import org.plazmamc.alwaysuptodate.utils.registerTask
|
||||||
|
|
||||||
|
class AlwaysUpToDate : Plugin<Project> {
|
||||||
|
|
||||||
|
@Suppress("UNUSED_VARIABLE")
|
||||||
|
override fun apply(target: Project): Unit = with(target) {
|
||||||
|
|
||||||
|
Git.checkForGit()
|
||||||
|
|
||||||
|
val extension = extensions.create("alwaysUpToDate", AlwaysUpToDateExtension::class.java)
|
||||||
|
|
||||||
|
val git = configureTask<CheckGitTask>("checkGitStatus", "Verify that Git is available")
|
||||||
|
|
||||||
|
fun generateTasks(
|
||||||
|
upstream: String,
|
||||||
|
provider: AlwaysUpToDateExtension.() -> Pair<Pair<Property<String>, Property<String>>, Property<String>>
|
||||||
|
): Triple<TaskProvider<CheckUpstreamCommit>, TaskProvider<CreateCompareComment>, TaskProvider<CreateCompareComment>> {
|
||||||
|
val i = registerTask<CheckUpstreamCommit>("check$upstream", "Check if the $upstream commit is up to date") {
|
||||||
|
dependsOn(git)
|
||||||
|
val (repo, ref, commitProperty) = extension.provider().flatten()
|
||||||
|
this.repo.set(repo)
|
||||||
|
this.ref.set(ref)
|
||||||
|
this.commitPropertyName.set(commitProperty)
|
||||||
|
}
|
||||||
|
|
||||||
|
val j = registerTask<CreateCompareComment>("compare$upstream", "Create a comment comparing the $upstream commit") {
|
||||||
|
dependsOn(git)
|
||||||
|
val (repo, ref, commitProperty) = extension.provider().flatten()
|
||||||
|
this.repo.set(repo)
|
||||||
|
this.ref.set(ref)
|
||||||
|
this.commitPropertyName.set(commitProperty)
|
||||||
|
this.clear.set(false)
|
||||||
|
}
|
||||||
|
|
||||||
|
val k = registerTask<CreateCompareComment>(
|
||||||
|
"cleanCompare$upstream",
|
||||||
|
"Create a comment comparing the $upstream commit"
|
||||||
|
) {
|
||||||
|
dependsOn(git)
|
||||||
|
val (repo, ref, commitProperty) = extension.provider().flatten()
|
||||||
|
this.repo.set(repo)
|
||||||
|
this.ref.set(ref)
|
||||||
|
this.commitPropertyName.set(commitProperty)
|
||||||
|
this.clear.set(true)
|
||||||
|
}
|
||||||
|
|
||||||
|
return (i to j to k).flatten()
|
||||||
|
}
|
||||||
|
|
||||||
|
val (checkPaper, comparePaper, cleanComparePaper) = generateTasks("Paper") { paperRepo to paperRef to paperCommitName }
|
||||||
|
val (checkPurpur, comparePurpur, cleanComparePurpur) = generateTasks("Purpur") { purpurRepo to purpurRef to purpurCommitName }
|
||||||
|
|
||||||
|
registerTask<SimpleUpstreamUpdateTask>("updateUpstream", "Update the upstream commit") {
|
||||||
|
dependsOn(git)
|
||||||
|
repo.convention(extension.paperRepo)
|
||||||
|
ref.convention(extension.paperRef)
|
||||||
|
workDir.set(layout.projectDirectory)
|
||||||
|
regex.convention("paperCommit = ")
|
||||||
|
}
|
||||||
|
|
||||||
|
registerTask<PurpurUpdateTask>("updateImplementation", "Update the implementation") {
|
||||||
|
dependsOn(git)
|
||||||
|
workDir.set(layout.projectDirectory)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
package org.plazmamc.alwaysuptodate
|
||||||
|
|
||||||
|
class AlwaysUpToDateException : Exception {
|
||||||
|
constructor(message: String) : super(message)
|
||||||
|
constructor(message: String, cause: Throwable?) : super(message, cause)
|
||||||
|
}
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
package org.plazmamc.alwaysuptodate
|
||||||
|
|
||||||
|
import org.gradle.api.provider.Property
|
||||||
|
|
||||||
|
interface AlwaysUpToDateExtension {
|
||||||
|
|
||||||
|
val paperRepo: Property<String>
|
||||||
|
val paperRef: Property<String>
|
||||||
|
|
||||||
|
val purpurRepo: Property<String>
|
||||||
|
val purpurRef: Property<String>
|
||||||
|
|
||||||
|
val pufferfishRepo: Property<String>
|
||||||
|
val pufferfishRef: Property<String>
|
||||||
|
val usePufferfish: Property<Boolean>
|
||||||
|
|
||||||
|
val paperCommitName: Property<String>
|
||||||
|
val purpurCommitName: Property<String>
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,40 @@
|
|||||||
|
package org.plazmamc.alwaysuptodate.tasks
|
||||||
|
|
||||||
|
import org.gradle.api.Project
|
||||||
|
import org.gradle.api.provider.Property
|
||||||
|
import org.gradle.api.tasks.Input
|
||||||
|
import org.plazmamc.alwaysuptodate.AlwaysUpToDateException
|
||||||
|
import org.plazmamc.alwaysuptodate.AlwaysUpToDateExtension
|
||||||
|
import org.plazmamc.alwaysuptodate.utils.extension
|
||||||
|
import org.plazmamc.alwaysuptodate.utils.flatten
|
||||||
|
import org.plazmamc.alwaysuptodate.utils.git
|
||||||
|
import org.plazmamc.alwaysuptodate.utils.property
|
||||||
|
|
||||||
|
abstract class CheckUpstreamCommit : Task() {
|
||||||
|
|
||||||
|
@get:Input
|
||||||
|
abstract val repo: Property<String>
|
||||||
|
|
||||||
|
@get:Input
|
||||||
|
abstract val ref: Property<String>
|
||||||
|
|
||||||
|
@get:Input
|
||||||
|
abstract val commitPropertyName: Property<String>
|
||||||
|
|
||||||
|
override fun init(): Unit = with(project) {
|
||||||
|
outputs.upToDateWhen { checkCommitFor { repo to ref to commitPropertyName } }
|
||||||
|
|
||||||
|
doLast {
|
||||||
|
println(checkCommitFor { repo to ref to commitPropertyName })
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun Project.getLatest(repository: String, branch: String) =
|
||||||
|
git("ls-remote", repository).readText()?.lines()
|
||||||
|
?.first("[a-z0-9]{40}\trefs/heads/$branch".toRegex()::matches)?.split("\t")?.first()
|
||||||
|
?: throw AlwaysUpToDateException("Failed to get latest commit of $repository")
|
||||||
|
|
||||||
|
fun Project.checkCommitFor(block: AlwaysUpToDateExtension.() -> Pair<Pair<Property<String>, Property<String>>, Property<String>>): Boolean =
|
||||||
|
extension.block().flatten().let { getLatest(extension { it.first }, extension { it.second }) == property { it.third } }
|
||||||
@@ -0,0 +1,48 @@
|
|||||||
|
package org.plazmamc.alwaysuptodate.tasks
|
||||||
|
|
||||||
|
import io.papermc.paperweight.util.fromJson
|
||||||
|
import io.papermc.paperweight.util.gson
|
||||||
|
import org.gradle.api.provider.Property
|
||||||
|
import org.gradle.api.tasks.Input
|
||||||
|
import org.gradle.api.tasks.TaskAction
|
||||||
|
import org.plazmamc.alwaysuptodate.utils.property
|
||||||
|
import paper.libs.com.google.gson.JsonObject
|
||||||
|
import java.net.URI
|
||||||
|
|
||||||
|
abstract class CreateCompareComment : Task() {
|
||||||
|
|
||||||
|
@get:Input
|
||||||
|
abstract val clear: Property<Boolean>
|
||||||
|
|
||||||
|
@get:Input
|
||||||
|
abstract val repo: Property<String>
|
||||||
|
|
||||||
|
@get:Input
|
||||||
|
abstract val ref: Property<String>
|
||||||
|
|
||||||
|
@get:Input
|
||||||
|
abstract val commitPropertyName: Property<String>
|
||||||
|
|
||||||
|
@TaskAction
|
||||||
|
fun create() = with(project) {
|
||||||
|
val builder = StringBuilder()
|
||||||
|
val rawRepo = URI.create(repo.get()).path.substring(1)
|
||||||
|
|
||||||
|
if (clear.get() || !file("compare.txt").exists())
|
||||||
|
builder.append("\n\nUpstream has released updates that appear to apply and compile correctly.")
|
||||||
|
else
|
||||||
|
builder.append(file("compare.txt").readText())
|
||||||
|
|
||||||
|
builder.append("\n\n[${rawRepo.split("/").last()} Changes]\n")
|
||||||
|
|
||||||
|
gson.fromJson<JsonObject>(
|
||||||
|
URI.create("https://api.github.com/repos/$rawRepo/compare/${property { commitPropertyName }}...${ref.get()}").toURL().readText()
|
||||||
|
)["commits"].asJsonArray.forEach { obj ->
|
||||||
|
obj.asJsonObject.let {
|
||||||
|
builder.append("$rawRepo@${it["sha"].asString.subSequence(0, 7)}: ${it["commit"].asJsonObject["message"].asString.split("\n")[0]}\n")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
file("compare.txt").writeText(builder.toString())
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,38 @@
|
|||||||
|
package org.plazmamc.alwaysuptodate.tasks
|
||||||
|
|
||||||
|
import io.papermc.paperweight.util.Git
|
||||||
|
import io.papermc.paperweight.util.path
|
||||||
|
import org.gradle.api.file.DirectoryProperty
|
||||||
|
import org.gradle.api.provider.Property
|
||||||
|
import org.gradle.api.tasks.Input
|
||||||
|
import org.gradle.api.tasks.InputDirectory
|
||||||
|
import org.gradle.api.tasks.Internal
|
||||||
|
import org.gradle.api.tasks.TaskAction
|
||||||
|
import org.plazmamc.alwaysuptodate.utils.addCommit
|
||||||
|
|
||||||
|
abstract class GenerateMergedAPIPatch : Task() {
|
||||||
|
|
||||||
|
@get:InputDirectory
|
||||||
|
abstract val inputDir: DirectoryProperty
|
||||||
|
|
||||||
|
@get:Internal
|
||||||
|
abstract val workDir: DirectoryProperty
|
||||||
|
|
||||||
|
@get:Input
|
||||||
|
abstract val commitTitle: Property<String>
|
||||||
|
|
||||||
|
@get:Input
|
||||||
|
abstract val author: Property<String>
|
||||||
|
|
||||||
|
@get:Input
|
||||||
|
abstract val license: Property<String>
|
||||||
|
|
||||||
|
@TaskAction
|
||||||
|
fun generate() = with(workDir.path) {
|
||||||
|
val dotGit = resolve(".git").toFile().also(java.io.File::deleteRecursively)
|
||||||
|
|
||||||
|
inputDir.path.toFile().copyRecursively(dotGit, overwrite = true)
|
||||||
|
Git(this).addCommit("${commitTitle.get()}\n\n${license.get()}", "--author=${author.get()}")
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,51 @@
|
|||||||
|
package org.plazmamc.alwaysuptodate.tasks
|
||||||
|
|
||||||
|
import io.papermc.paperweight.util.Git
|
||||||
|
import io.papermc.paperweight.util.path
|
||||||
|
import org.gradle.api.file.DirectoryProperty
|
||||||
|
import org.gradle.api.provider.Property
|
||||||
|
import org.gradle.api.tasks.Input
|
||||||
|
import org.gradle.api.tasks.Internal
|
||||||
|
import org.gradle.api.tasks.TaskAction
|
||||||
|
import org.plazmamc.alwaysuptodate.utils.addCommit
|
||||||
|
import java.io.File
|
||||||
|
import java.nio.file.Path
|
||||||
|
|
||||||
|
abstract class GenerateMergedServerPatch : Task() {
|
||||||
|
|
||||||
|
@get:Internal
|
||||||
|
abstract val workDir: DirectoryProperty
|
||||||
|
|
||||||
|
@get:Input
|
||||||
|
abstract val commitTitle: Property<String>
|
||||||
|
|
||||||
|
@get:Input
|
||||||
|
abstract val author: Property<String>
|
||||||
|
|
||||||
|
@get:Input
|
||||||
|
abstract val license: Property<String>
|
||||||
|
|
||||||
|
@TaskAction
|
||||||
|
fun generate() = with(workDir.path) {
|
||||||
|
val dotGit = resolve(".git").toFile().also(java.io.File::deleteRecursively)
|
||||||
|
|
||||||
|
copySource(this)
|
||||||
|
|
||||||
|
val paper = resolve("../.gradle/caches/paperweight/upstreams/paper/Paper-Server")
|
||||||
|
copySource(paper)
|
||||||
|
|
||||||
|
Git(paper).addCommit("Vanilla Sources", "--author=Automated <auto@mated.null>")
|
||||||
|
|
||||||
|
paper.resolve(".git").toFile().copyRecursively(dotGit, overwrite = true)
|
||||||
|
Git(this).addCommit("${commitTitle.get()}\n\n${license.get()}", "--author=${author.get()}")
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
internal fun copySource(dir: Path) = with(dir.resolve(".gradle/caches/paperweight/mc-dev-sources")) {
|
||||||
|
val target = dir.resolve("src/main")
|
||||||
|
resolve("net").toFile().copyRecursively(target.resolve("java/net").toFile(), overwrite = true)
|
||||||
|
resolve("com").toFile().copyRecursively(target.resolve("java/com").toFile(), overwrite = true)
|
||||||
|
resolve("data").toFile().copyRecursively(target.resolve("resources/data").toFile(), overwrite = true)
|
||||||
|
resolve("assets").toFile().copyRecursively(target.resolve("resources/assets").toFile(), overwrite = true)
|
||||||
|
}
|
||||||
@@ -0,0 +1,252 @@
|
|||||||
|
package org.plazmamc.alwaysuptodate.tasks
|
||||||
|
|
||||||
|
import io.papermc.paperweight.patcher.tasks.CheckoutRepo
|
||||||
|
import io.papermc.paperweight.util.Git
|
||||||
|
import io.papermc.paperweight.util.cache
|
||||||
|
import io.papermc.paperweight.util.path
|
||||||
|
import io.papermc.paperweight.util.set
|
||||||
|
import org.gradle.api.file.Directory
|
||||||
|
import org.gradle.api.file.DirectoryProperty
|
||||||
|
import org.gradle.api.provider.Provider
|
||||||
|
import org.gradle.api.tasks.Internal
|
||||||
|
import org.gradle.api.tasks.OutputDirectory
|
||||||
|
import org.gradle.api.tasks.TaskAction
|
||||||
|
import org.gradle.api.tasks.TaskProvider
|
||||||
|
import org.plazmamc.alwaysuptodate.utils.*
|
||||||
|
import java.io.File
|
||||||
|
import java.nio.file.Path
|
||||||
|
import java.util.*
|
||||||
|
import kotlin.io.path.ExperimentalPathApi
|
||||||
|
import kotlin.io.path.name
|
||||||
|
import kotlin.io.path.walk
|
||||||
|
|
||||||
|
@Deprecated("It will soon be changed to be available for other upstreams.")
|
||||||
|
abstract class PurpurUpdateTask : Task() {
|
||||||
|
|
||||||
|
private val pufferfishHeader = """
|
||||||
|
Pufferfish
|
||||||
|
Copyright (C) ${Calendar.getInstance().get(Calendar.YEAR)} Pufferfish Studios LLC
|
||||||
|
|
||||||
|
This program is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
""".trimIndent()
|
||||||
|
private val pufferfishAuthor = "Kevin Raneri <kevin.raneri@gmail.com>"
|
||||||
|
private val purpurHeader = """
|
||||||
|
PurpurMC
|
||||||
|
Copyright (C) ${Calendar.getInstance().get(Calendar.YEAR)} PurpurMC
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
||||||
|
""".trimIndent()
|
||||||
|
private val purpurAuthor = "granny <contact@granny.dev>"
|
||||||
|
|
||||||
|
@get:Internal
|
||||||
|
abstract val workDir: DirectoryProperty
|
||||||
|
|
||||||
|
@get:OutputDirectory
|
||||||
|
abstract val purpurDir: DirectoryProperty
|
||||||
|
|
||||||
|
@get:OutputDirectory
|
||||||
|
abstract val pufferfishDir: DirectoryProperty
|
||||||
|
|
||||||
|
override fun init(): Unit = with(project) {
|
||||||
|
val wd = layout.cache.resolve("alwaysUpToDate/update/purpur").also { it.toFile().deleteRecursively() }
|
||||||
|
workDir.set(wd)
|
||||||
|
|
||||||
|
val compare =
|
||||||
|
configureTask<CreateCompareComment>("createPurpurCompareComment", "Create Purpur Compare Comment") {
|
||||||
|
clear.convention(true)
|
||||||
|
repo.convention(extension.purpurRepo)
|
||||||
|
ref.convention(extension.purpurRef)
|
||||||
|
commitPropertyName.convention(extension.purpurCommitName)
|
||||||
|
}
|
||||||
|
|
||||||
|
val paper = dependsOn<SimpleUpstreamUpdateTask>("updatePaper", "Update Paper") {
|
||||||
|
outputs.upToDateWhen { checkCommitFor { repo to ref to paperCommitName } }
|
||||||
|
dependsOn(compare)
|
||||||
|
repo.convention(extension.paperRepo)
|
||||||
|
ref.convention(extension.paperRef)
|
||||||
|
regex.convention("paperCommit = ")
|
||||||
|
workDir.set(layout.projectDirectory)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun checkout(
|
||||||
|
name: String, repo: Provider<String>, ref: Provider<String>, regex: String, block: CheckoutRepo.() -> Unit
|
||||||
|
): Pair<TaskProvider<CheckoutRepo>, Directory> {
|
||||||
|
val updatePaper = configureTask<SimpleUpstreamUpdateTask>("update${name}Paper", "Update $name's Paper") {
|
||||||
|
this.repo.convention(extension.paperRepo)
|
||||||
|
this.ref.convention(extension.paperRef)
|
||||||
|
this.regex.convention(regex)
|
||||||
|
this.workDir.set(wd.resolve(name))
|
||||||
|
}
|
||||||
|
|
||||||
|
val checkout = dependsOn<CheckoutRepo>("checkout$name", "Checkout $name") {
|
||||||
|
this.dependsOn(paper)
|
||||||
|
this.repoName.convention(name)
|
||||||
|
this.url.convention(repo)
|
||||||
|
this.ref.convention(ref)
|
||||||
|
this.workDir.set(wd)
|
||||||
|
|
||||||
|
this.block()
|
||||||
|
// this.finalizedBy(updatePaper)
|
||||||
|
}
|
||||||
|
|
||||||
|
return checkout to checkout.flatMap { it.outputDir }.get()
|
||||||
|
}
|
||||||
|
|
||||||
|
val (checkoutPufferfish, pufferfish) =
|
||||||
|
checkout("Pufferfish", extension.pufferfishRepo, extension.pufferfishRef, "paperRef=") {
|
||||||
|
onlyIf { extension { usePufferfish } }
|
||||||
|
}
|
||||||
|
val (checkoutPurpur, purpur) =
|
||||||
|
checkout("Purpur", extension.purpurRepo, extension.purpurRef, "paperCommit = ") {}
|
||||||
|
|
||||||
|
pufferfishDir.set(pufferfish)
|
||||||
|
purpurDir.set(purpur)
|
||||||
|
|
||||||
|
val preparePurpur = configureTask("preparePurpur", "Prepare Purpur Sources") {
|
||||||
|
mustRunAfter(paper)
|
||||||
|
dependsOn(checkoutPurpur)
|
||||||
|
doLast { Gradle(purpur.path)("applyPatches").executeOut() }
|
||||||
|
}
|
||||||
|
val preparePufferfish = configureTask("preparePufferfish", "Prepare Pufferfish Sources") {
|
||||||
|
onlyIf { extension { usePufferfish } }
|
||||||
|
mustRunAfter(paper)
|
||||||
|
dependsOn(checkoutPurpur, checkoutPufferfish)
|
||||||
|
doLast {
|
||||||
|
val base = pufferfish.path.resolve("patches").also { it.toFile().deleteRecursively() }
|
||||||
|
val source = purpur.path.resolve("patches")
|
||||||
|
source.resolve("server").copyPatch(base.resolve("server"), "Pufferfish-Server-Changes")
|
||||||
|
source.resolve("api").copyPatch(base.resolve("api"), "Pufferfish-API-Changes")
|
||||||
|
Gradle(pufferfish.path)("applyPatches").executeOut()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
dependsOn(preparePurpur, preparePufferfish)
|
||||||
|
|
||||||
|
val serverPatch =
|
||||||
|
configureTask<GenerateMergedServerPatch>("generateMergedServerPatches", "Generate Merged Server Patch") {
|
||||||
|
dependsOn(preparePurpur)
|
||||||
|
if (!extension { usePufferfish }) {
|
||||||
|
workDir.convention(purpur.dir("Purpur-Server"))
|
||||||
|
commitTitle.convention("Purpur Server Changes")
|
||||||
|
license.convention(purpurHeader)
|
||||||
|
author.convention(purpurAuthor)
|
||||||
|
return@configureTask
|
||||||
|
}
|
||||||
|
|
||||||
|
dependsOn(preparePufferfish)
|
||||||
|
workDir.convention(pufferfish.dir("pufferfish-server"))
|
||||||
|
commitTitle.convention("Pufferfish Server Changes")
|
||||||
|
license.convention(pufferfishHeader)
|
||||||
|
author.convention(pufferfishAuthor)
|
||||||
|
|
||||||
|
doLast {
|
||||||
|
val dotGit = pufferfish.dir("pufferfish-server/.git").path.toFile()
|
||||||
|
|
||||||
|
purpur.path.resolve("Purpur-Server").let {
|
||||||
|
val purpurDotGit = it.resolve(".git").toFile().also(File::deleteRecursively)
|
||||||
|
|
||||||
|
copySource(it)
|
||||||
|
dotGit.copyRecursively(purpurDotGit, overwrite = true)
|
||||||
|
Git(it).addCommit("Purpur Server Changes\n\n$purpurHeader", "--author=$purpurAuthor")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
val pufferfishAPIChanges = configureTask<GenerateMergedAPIPatch>(
|
||||||
|
"generateMergedPufferfishAPIPatch",
|
||||||
|
"Generate Merged Pufferfish API Patch"
|
||||||
|
) {
|
||||||
|
dependsOn(preparePufferfish)
|
||||||
|
inputDir.convention(pufferfish.dir(".gradle/caches/paperweight/upstreams/paper/Paper-API/.git"))
|
||||||
|
workDir.convention(pufferfish.dir("pufferfish-api"))
|
||||||
|
commitTitle.convention("Pufferfish API Changes")
|
||||||
|
license.convention(pufferfishHeader)
|
||||||
|
author.convention(pufferfishAuthor)
|
||||||
|
}
|
||||||
|
|
||||||
|
val apiPatch = configureTask<GenerateMergedAPIPatch>(
|
||||||
|
"generateMergedAPIPatches",
|
||||||
|
"Generate Merged API Patches"
|
||||||
|
) {
|
||||||
|
dependsOn(preparePurpur)
|
||||||
|
if (extension { usePufferfish }) dependsOn(pufferfishAPIChanges)
|
||||||
|
|
||||||
|
workDir.convention(purpur.dir("Purpur-API"))
|
||||||
|
commitTitle.convention("Purpur API Changes")
|
||||||
|
license.convention(purpurHeader)
|
||||||
|
author.convention(purpurAuthor)
|
||||||
|
inputDir.convention(
|
||||||
|
if (extension { usePufferfish }) pufferfish.dir("pufferfish-api/.git")
|
||||||
|
else purpur.dir(".gradle/caches/paperweight/upstreams/paper/Paper-API/.git")
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
dependsOn("buildPatches", "Build Merged Patches") {
|
||||||
|
dependsOn(serverPatch, apiPatch)
|
||||||
|
doLast { Gradle(purpur.path)("rebuildPatches").executeOut() }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@TaskAction
|
||||||
|
fun update() = with(project) {
|
||||||
|
val purpur = purpurDir.path
|
||||||
|
val pufferfish = if (extension { usePufferfish }) pufferfishDir.path else null
|
||||||
|
|
||||||
|
val patches = purpur.resolve("patches")
|
||||||
|
with(layout.projectDirectory.path.resolve("patches")) {
|
||||||
|
patches.resolve("server").copyPatch( resolve("server"),
|
||||||
|
if (pufferfish == null) "" else "Pufferfish-Server-Changes",
|
||||||
|
"Purpur-Server-Changes"
|
||||||
|
)
|
||||||
|
|
||||||
|
patches.resolve("api").copyPatch( resolve("api"),
|
||||||
|
if (pufferfish == null) "" else "Pufferfish-API-Changes",
|
||||||
|
"Purpur-API-Changes"
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
file("gradle.properties").let {
|
||||||
|
it.writeText(
|
||||||
|
it.readText().replace("purpurCommit = .*".toRegex(), "purpurCommit = ${Git(purpur).revParse()}")
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@OptIn(ExperimentalPathApi::class)
|
||||||
|
private fun Path.copyPatch(to: Path, vararg name: String) = walk().sorted()
|
||||||
|
.filter { entry -> name.filter { it != "" }.any { entry.name.endsWith("$it.patch") } }.map(Path::toFile)
|
||||||
|
.forEachIndexed { count, patch ->
|
||||||
|
patch.copyTo(
|
||||||
|
to.resolve("${count + 1}".padStart(4, '0') + "-" + name.first { patch.name.substring(5) == "$it.patch" } + ".patch").toFile(),
|
||||||
|
overwrite = true
|
||||||
|
)
|
||||||
|
}
|
||||||
@@ -0,0 +1,48 @@
|
|||||||
|
package org.plazmamc.alwaysuptodate.tasks
|
||||||
|
|
||||||
|
import io.papermc.paperweight.util.Git
|
||||||
|
import io.papermc.paperweight.util.path
|
||||||
|
import org.gradle.api.file.DirectoryProperty
|
||||||
|
import org.gradle.api.provider.Property
|
||||||
|
import org.gradle.api.tasks.Input
|
||||||
|
import org.gradle.api.tasks.InputDirectory
|
||||||
|
import org.gradle.api.tasks.Optional
|
||||||
|
import org.gradle.api.tasks.TaskAction
|
||||||
|
import org.plazmamc.alwaysuptodate.AlwaysUpToDateException
|
||||||
|
import org.plazmamc.alwaysuptodate.utils.dependsOn
|
||||||
|
import org.plazmamc.alwaysuptodate.utils.extension
|
||||||
|
|
||||||
|
abstract class SimpleUpstreamUpdateTask : Task() {
|
||||||
|
|
||||||
|
@get:Input
|
||||||
|
abstract val repo: Property<String>
|
||||||
|
|
||||||
|
@get:Input
|
||||||
|
abstract val ref: Property<String>
|
||||||
|
|
||||||
|
@get:InputDirectory
|
||||||
|
abstract val workDir: DirectoryProperty
|
||||||
|
|
||||||
|
@get:Input
|
||||||
|
abstract val regex: Property<String>
|
||||||
|
|
||||||
|
override fun init(): Unit = with(project) {
|
||||||
|
dependsOn<CreateCompareComment>("createCompareComment", "Create Paper Compare Comment") {
|
||||||
|
onlyIf { !this@SimpleUpstreamUpdateTask.state.upToDate }
|
||||||
|
clear.convention(false)
|
||||||
|
repo.convention(extension.paperRepo)
|
||||||
|
ref.convention(extension.paperRef)
|
||||||
|
commitPropertyName.convention(extension.paperCommitName)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@TaskAction
|
||||||
|
fun update() = (Git(workDir.path)("ls-remote", repo.get()).readText()?.lines()
|
||||||
|
?.filterNot("[a-z0-9]{40}\trefs/heads/${ref.get()}".toRegex()::matches)?.first()?.split("\t")?.first()
|
||||||
|
?: throw AlwaysUpToDateException("Failed to get latest commit")).let { commit ->
|
||||||
|
workDir.file("gradle.properties").path.toFile().let {
|
||||||
|
it.writeText(it.readText().replace("${regex.get()}.*".toRegex(), "${regex.get()}$commit"))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
package org.plazmamc.alwaysuptodate.tasks
|
||||||
|
|
||||||
|
import org.gradle.api.DefaultTask
|
||||||
|
|
||||||
|
abstract class Task : DefaultTask() {
|
||||||
|
|
||||||
|
protected open fun init() {}
|
||||||
|
|
||||||
|
init {
|
||||||
|
this.init()
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
package org.plazmamc.alwaysuptodate.utils
|
||||||
|
|
||||||
|
import io.papermc.paperweight.util.Git
|
||||||
|
import org.gradle.api.tasks.TaskAction
|
||||||
|
import org.plazmamc.alwaysuptodate.tasks.Task
|
||||||
|
import java.nio.file.Path
|
||||||
|
import kotlin.io.path.exists
|
||||||
|
|
||||||
|
val Git.path: Path
|
||||||
|
get() = Git::class.java.getDeclaredField("repo").apply { isAccessible = true }.get(this) as Path
|
||||||
|
|
||||||
|
abstract class CheckGitTask : Task() {
|
||||||
|
|
||||||
|
@TaskAction
|
||||||
|
fun checkGit() = Git.checkForGit()
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
fun Git.revParse(): String = this("rev-parse", "HEAD").captureOut(true).out.trim()
|
||||||
|
|
||||||
|
fun Git.addCommit(vararg args: String) {
|
||||||
|
this("add", ".").executeSilently()
|
||||||
|
this("commit", "-m", *args).executeSilently()
|
||||||
|
this.wait()
|
||||||
|
}
|
||||||
|
|
||||||
|
fun Git.wait() {
|
||||||
|
val lockFile = path.resolve(".git/gc.pid")
|
||||||
|
while (lockFile.exists()) {
|
||||||
|
println("detected lockfile, waiting for it to be removed")
|
||||||
|
Thread.sleep(1000)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
package org.plazmamc.alwaysuptodate.utils
|
||||||
|
|
||||||
|
import io.papermc.paperweight.util.Command
|
||||||
|
import io.papermc.paperweight.util.directory
|
||||||
|
import org.plazmamc.alwaysuptodate.AlwaysUpToDateException
|
||||||
|
import java.nio.file.Path
|
||||||
|
import kotlin.io.path.notExists
|
||||||
|
|
||||||
|
class Gradle(private val repo: Path) {
|
||||||
|
|
||||||
|
init {
|
||||||
|
if (repo.resolve("gradle").notExists())
|
||||||
|
throw AlwaysUpToDateException("Git repository does not exist: $repo")
|
||||||
|
}
|
||||||
|
|
||||||
|
operator fun invoke(vararg args: String): Command {
|
||||||
|
val builder = ProcessBuilder(
|
||||||
|
"java",
|
||||||
|
"-cp",
|
||||||
|
"gradle/wrapper/gradle-wrapper.jar",
|
||||||
|
"org.gradle.wrapper.GradleWrapperMain",
|
||||||
|
*args,
|
||||||
|
"--no-daemon",
|
||||||
|
"--stacktrace"
|
||||||
|
).directory(repo)
|
||||||
|
val command = builder.command()
|
||||||
|
.joinToString(" ") { if (it.codePoints().anyMatch(Character::isWhitespace)) "\"$it\"" else it }
|
||||||
|
|
||||||
|
return try {
|
||||||
|
Command(builder, command)
|
||||||
|
} catch (e: Exception) {
|
||||||
|
throw AlwaysUpToDateException("Failed to execute command: $command", e)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,116 @@
|
|||||||
|
package org.plazmamc.alwaysuptodate.utils
|
||||||
|
|
||||||
|
import io.papermc.paperweight.util.Git
|
||||||
|
import io.papermc.paperweight.util.configureTask
|
||||||
|
import io.papermc.paperweight.util.path
|
||||||
|
import org.gradle.api.DefaultTask
|
||||||
|
import org.gradle.api.Project
|
||||||
|
import org.gradle.api.Task
|
||||||
|
import org.gradle.api.provider.Property
|
||||||
|
import org.gradle.api.tasks.TaskProvider
|
||||||
|
import org.gradle.kotlin.dsl.get
|
||||||
|
import org.plazmamc.alwaysuptodate.AlwaysUpToDateExtension
|
||||||
|
|
||||||
|
private var extensionAccessor: AlwaysUpToDateExtension? = null
|
||||||
|
set(value) {
|
||||||
|
if (field != null) throw IllegalAccessException("ExtensionAccessor already initialized")
|
||||||
|
field = value
|
||||||
|
}
|
||||||
|
|
||||||
|
val Project.extension: AlwaysUpToDateExtension
|
||||||
|
get() {
|
||||||
|
if (extensionAccessor == null) extensionAccessor =
|
||||||
|
project.extensions["alwaysUpToDate"] as AlwaysUpToDateExtension
|
||||||
|
return extensionAccessor!!
|
||||||
|
}
|
||||||
|
|
||||||
|
val Project.git: Git get() = Git(layout.projectDirectory.path)
|
||||||
|
|
||||||
|
fun <T> Project.extension(block: AlwaysUpToDateExtension.() -> Property<T>): T =
|
||||||
|
extension.block().get()
|
||||||
|
|
||||||
|
fun Project.property(block: AlwaysUpToDateExtension.() -> Property<String>) =
|
||||||
|
this.property(extension(block)) as String
|
||||||
|
|
||||||
|
inline fun <reified T : Task> Task.dependsOn(
|
||||||
|
name: String,
|
||||||
|
description: String,
|
||||||
|
noinline block: T.() -> Unit = {}
|
||||||
|
): TaskProvider<T> =
|
||||||
|
project.configureTask<T>(name, description, block).also { this.dependsOn(it) }
|
||||||
|
|
||||||
|
@JvmName("dependsOnDefaultTask")
|
||||||
|
fun Task.dependsOn(
|
||||||
|
name: String,
|
||||||
|
description: String,
|
||||||
|
block: DefaultTask.() -> Unit = {}
|
||||||
|
): TaskProvider<DefaultTask> =
|
||||||
|
this.dependsOn<DefaultTask>(name, description, block)
|
||||||
|
|
||||||
|
inline fun <reified T : Task> Task.finalizedBy(
|
||||||
|
name: String,
|
||||||
|
description: String,
|
||||||
|
noinline block: T.() -> Unit = {}
|
||||||
|
): TaskProvider<T> =
|
||||||
|
project.configureTask<T>(name, description, block).also { this.finalizedBy(it) }
|
||||||
|
|
||||||
|
@JvmName("finalizedByDefaultTask")
|
||||||
|
fun Task.finalizedBy(
|
||||||
|
name: String,
|
||||||
|
description: String,
|
||||||
|
block: DefaultTask.() -> Unit = {}
|
||||||
|
): TaskProvider<DefaultTask> =
|
||||||
|
this.finalizedBy<DefaultTask>(name, description, block)
|
||||||
|
|
||||||
|
inline fun <reified T : Task> Task.mustRunAfter(
|
||||||
|
name: String,
|
||||||
|
description: String,
|
||||||
|
noinline block: T.() -> Unit = {}
|
||||||
|
): TaskProvider<T> =
|
||||||
|
project.configureTask<T>(name, description, block).also { this.mustRunAfter(it) }
|
||||||
|
|
||||||
|
@JvmName("mustRunAfterDefaultTask")
|
||||||
|
fun Task.mustRunAfter(
|
||||||
|
name: String,
|
||||||
|
description: String,
|
||||||
|
block: DefaultTask.() -> Unit = {}
|
||||||
|
): TaskProvider<DefaultTask> =
|
||||||
|
this.mustRunAfter<DefaultTask>(name, description, block)
|
||||||
|
|
||||||
|
inline fun <reified T : Task> Project.configureTask(
|
||||||
|
name: String,
|
||||||
|
description: String,
|
||||||
|
noinline block: T.() -> Unit = {}
|
||||||
|
): TaskProvider<T> =
|
||||||
|
tasks.configureTask<T>(name) {
|
||||||
|
this.group = "always up to date"
|
||||||
|
this.description = description
|
||||||
|
this.block()
|
||||||
|
}
|
||||||
|
|
||||||
|
@JvmName("configureDefaultTask")
|
||||||
|
fun Project.configureTask(
|
||||||
|
name: String,
|
||||||
|
description: String,
|
||||||
|
block: DefaultTask.() -> Unit = {}
|
||||||
|
): TaskProvider<DefaultTask> =
|
||||||
|
this.configureTask<DefaultTask>(name, description, block)
|
||||||
|
|
||||||
|
inline fun <reified T : Task> Project.registerTask(
|
||||||
|
name: String,
|
||||||
|
description: String,
|
||||||
|
crossinline block: T.() -> Unit = {}
|
||||||
|
): TaskProvider<T> =
|
||||||
|
tasks.register(name, T::class.java) {
|
||||||
|
this.group = "always up to date"
|
||||||
|
this.description = description
|
||||||
|
this.block()
|
||||||
|
}
|
||||||
|
|
||||||
|
@JvmName("registerDefaultTask")
|
||||||
|
fun Project.registerTask(
|
||||||
|
name: String,
|
||||||
|
description: String,
|
||||||
|
block: DefaultTask.() -> Unit = {}
|
||||||
|
): TaskProvider<DefaultTask> =
|
||||||
|
this.registerTask<DefaultTask>(name, description, block)
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
package org.plazmamc.alwaysuptodate.utils
|
||||||
|
|
||||||
|
fun <A, B, C> Pair<Pair<A, B>, C>.flatten() = Triple(first.first, first.second, second)
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
implementation-class=org.plazmamc.alwaysuptodate.AlwaysUpToDate
|
||||||
13
fxapi.sh
13
fxapi.sh
@@ -1,13 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
# FixupAPI
|
|
||||||
|
|
||||||
PS1="$"
|
|
||||||
|
|
||||||
cd Plazma-API
|
|
||||||
|
|
||||||
git add .
|
|
||||||
git commit -m "fixup"
|
|
||||||
git format-patch -1
|
|
||||||
|
|
||||||
cd ../
|
|
||||||
13
fxsrv.sh
13
fxsrv.sh
@@ -1,13 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
# FixupServer
|
|
||||||
|
|
||||||
PS1="$"
|
|
||||||
|
|
||||||
cd Plazma-Server
|
|
||||||
|
|
||||||
git add .
|
|
||||||
git commit -m "fixup"
|
|
||||||
git format-patch -1
|
|
||||||
|
|
||||||
cd ../
|
|
||||||
@@ -1,9 +1,29 @@
|
|||||||
group = org.plazmamc.plazma
|
org.gradle.daemon = true
|
||||||
version = 1.20.1-R0.1-SNAPSHOT
|
|
||||||
|
|
||||||
paperCommit = 773dd724469bae89d0c2075edc3d1ddc8d5b0b18
|
|
||||||
|
|
||||||
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 = -Xmx4G -Dfile.encoding=UTF-8 -Dgraal.CompilerConfiguration=community -Dgraal.UsePriorityInlining=true -Dgraal.Vectorization=true -Dgraal.OptDuplication=true -Dgraal.SpeculativeGuardMovement=true -Dgraal.WriteableCodeCache=true
|
org.gradle.jvmargs = -Xmx4G -Dfile.encoding=UTF-8 -Dgraal.CompilerConfiguration=community -Dgraal.UsePriorityInlining=true -Dgraal.Vectorization=true -Dgraal.OptDuplication=true -Dgraal.SpeculativeGuardMovement=true -Dgraal.WriteableCodeCache=true
|
||||||
|
|
||||||
|
paper.runMemoryGb = 8
|
||||||
|
paper.runDisableWatchdog = true
|
||||||
|
|
||||||
|
group = org.plazmamc.plazma
|
||||||
|
brandKey = plazmamc:plazma
|
||||||
|
brandName = Plazma
|
||||||
|
providerName = PlazmaMC
|
||||||
|
providerRepo = PlazmaMC/PlazmaBukkit
|
||||||
|
|
||||||
|
version = 1.21.3-R0.1-SNAPSHOT
|
||||||
|
mcVersion = 1.21.3
|
||||||
|
jdkVersion = 21
|
||||||
|
|
||||||
|
paperRepo = https://github.com/PaperMC/Paper
|
||||||
|
paperBranch = master
|
||||||
|
purpurRepo = https://github.com/PurpurMC/Purpur
|
||||||
|
purpurBranch = ver/1.21.3
|
||||||
|
pufferfishRepo = https://github.com/pufferfish-gg/Pufferfish
|
||||||
|
pufferfishBranch = ver/1.21
|
||||||
|
usePufferfish = false
|
||||||
|
|
||||||
|
paperCommit = ce0a0419476d1072ca739a0e8f22d8a358c1c1a2
|
||||||
|
purpurCommit = c6802b0a27f1f8faac4ad30f902810fd0ed8051e
|
||||||
|
|||||||
15
gradle/libs.versions.toml
Normal file
15
gradle/libs.versions.toml
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
[versions]
|
||||||
|
shadow = "8.3.5"
|
||||||
|
remapper = "0.10.3"
|
||||||
|
paperclip = "3.0.3"
|
||||||
|
paperweight = "1.7.4"
|
||||||
|
decompiler = "1.10.1"
|
||||||
|
|
||||||
|
[libraries]
|
||||||
|
paperclip = { group = "io.papermc", name = "paperclip", version.ref = "paperclip" }
|
||||||
|
remapper = { group = "net.fabricmc", name = "tiny-remapper", version.ref="remapper" }
|
||||||
|
decompiler = { group = "org.vineflower", name = "vineflower", version.ref = "decompiler" }
|
||||||
|
|
||||||
|
[plugins]
|
||||||
|
shadow = { id = "com.gradleup.shadow", version.ref = "shadow" }
|
||||||
|
paperweight = { id = "io.papermc.paperweight.patcher", version.ref = "paperweight" }
|
||||||
BIN
gradle/wrapper/gradle-wrapper.jar
vendored
BIN
gradle/wrapper/gradle-wrapper.jar
vendored
Binary file not shown.
3
gradle/wrapper/gradle-wrapper.properties
vendored
3
gradle/wrapper/gradle-wrapper.properties
vendored
@@ -1,6 +1,7 @@
|
|||||||
distributionBase=GRADLE_USER_HOME
|
distributionBase=GRADLE_USER_HOME
|
||||||
distributionPath=wrapper/dists
|
distributionPath=wrapper/dists
|
||||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.3-bin.zip
|
distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.2-bin.zip
|
||||||
networkTimeout=10000
|
networkTimeout=10000
|
||||||
|
validateDistributionUrl=true
|
||||||
zipStoreBase=GRADLE_USER_HOME
|
zipStoreBase=GRADLE_USER_HOME
|
||||||
zipStorePath=wrapper/dists
|
zipStorePath=wrapper/dists
|
||||||
|
|||||||
24
gradlew
vendored
24
gradlew
vendored
@@ -55,7 +55,7 @@
|
|||||||
# Darwin, MinGW, and NonStop.
|
# Darwin, MinGW, and NonStop.
|
||||||
#
|
#
|
||||||
# (3) This script is generated from the Groovy template
|
# (3) This script is generated from the Groovy template
|
||||||
# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
|
# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
|
||||||
# within the Gradle project.
|
# within the Gradle project.
|
||||||
#
|
#
|
||||||
# You can find Gradle at https://github.com/gradle/gradle/.
|
# You can find Gradle at https://github.com/gradle/gradle/.
|
||||||
@@ -83,7 +83,8 @@ done
|
|||||||
# This is normally unused
|
# This is normally unused
|
||||||
# shellcheck disable=SC2034
|
# shellcheck disable=SC2034
|
||||||
APP_BASE_NAME=${0##*/}
|
APP_BASE_NAME=${0##*/}
|
||||||
APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit
|
# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036)
|
||||||
|
APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit
|
||||||
|
|
||||||
# Use the maximum available, or set MAX_FD != -1 to use that value.
|
# Use the maximum available, or set MAX_FD != -1 to use that value.
|
||||||
MAX_FD=maximum
|
MAX_FD=maximum
|
||||||
@@ -130,10 +131,13 @@ location of your Java installation."
|
|||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
JAVACMD=java
|
JAVACMD=java
|
||||||
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
|
if ! command -v java >/dev/null 2>&1
|
||||||
|
then
|
||||||
|
die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
|
||||||
|
|
||||||
Please set the JAVA_HOME variable in your environment to match the
|
Please set the JAVA_HOME variable in your environment to match the
|
||||||
location of your Java installation."
|
location of your Java installation."
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Increase the maximum file descriptors if we can.
|
# Increase the maximum file descriptors if we can.
|
||||||
@@ -141,7 +145,7 @@ if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
|
|||||||
case $MAX_FD in #(
|
case $MAX_FD in #(
|
||||||
max*)
|
max*)
|
||||||
# In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked.
|
# In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked.
|
||||||
# shellcheck disable=SC3045
|
# shellcheck disable=SC2039,SC3045
|
||||||
MAX_FD=$( ulimit -H -n ) ||
|
MAX_FD=$( ulimit -H -n ) ||
|
||||||
warn "Could not query maximum file descriptor limit"
|
warn "Could not query maximum file descriptor limit"
|
||||||
esac
|
esac
|
||||||
@@ -149,7 +153,7 @@ if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
|
|||||||
'' | soft) :;; #(
|
'' | soft) :;; #(
|
||||||
*)
|
*)
|
||||||
# In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked.
|
# In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked.
|
||||||
# shellcheck disable=SC3045
|
# shellcheck disable=SC2039,SC3045
|
||||||
ulimit -n "$MAX_FD" ||
|
ulimit -n "$MAX_FD" ||
|
||||||
warn "Could not set maximum file descriptor limit to $MAX_FD"
|
warn "Could not set maximum file descriptor limit to $MAX_FD"
|
||||||
esac
|
esac
|
||||||
@@ -198,11 +202,11 @@ fi
|
|||||||
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
||||||
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
|
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
|
||||||
|
|
||||||
# Collect all arguments for the java command;
|
# Collect all arguments for the java command:
|
||||||
# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of
|
# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments,
|
||||||
# shell script including quotes and variable substitutions, so put them in
|
# and any embedded shellness will be escaped.
|
||||||
# double quotes to make sure that they get re-expanded; and
|
# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be
|
||||||
# * put everything else in single quotes, so that it's not re-expanded.
|
# treated as '${Hostname}' itself on the command line.
|
||||||
|
|
||||||
set -- \
|
set -- \
|
||||||
"-Dorg.gradle.appname=$APP_BASE_NAME" \
|
"-Dorg.gradle.appname=$APP_BASE_NAME" \
|
||||||
|
|||||||
184
gradlew.bat
vendored
184
gradlew.bat
vendored
@@ -1,92 +1,92 @@
|
|||||||
@rem
|
@rem
|
||||||
@rem Copyright 2015 the original author or authors.
|
@rem Copyright 2015 the original author or authors.
|
||||||
@rem
|
@rem
|
||||||
@rem Licensed under the Apache License, Version 2.0 (the "License");
|
@rem Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
@rem you may not use this file except in compliance with the License.
|
@rem you may not use this file except in compliance with the License.
|
||||||
@rem You may obtain a copy of the License at
|
@rem You may obtain a copy of the License at
|
||||||
@rem
|
@rem
|
||||||
@rem https://www.apache.org/licenses/LICENSE-2.0
|
@rem https://www.apache.org/licenses/LICENSE-2.0
|
||||||
@rem
|
@rem
|
||||||
@rem Unless required by applicable law or agreed to in writing, software
|
@rem Unless required by applicable law or agreed to in writing, software
|
||||||
@rem distributed under the License is distributed on an "AS IS" BASIS,
|
@rem distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
@rem See the License for the specific language governing permissions and
|
@rem See the License for the specific language governing permissions and
|
||||||
@rem limitations under the License.
|
@rem limitations under the License.
|
||||||
@rem
|
@rem
|
||||||
|
|
||||||
@if "%DEBUG%"=="" @echo off
|
@if "%DEBUG%"=="" @echo off
|
||||||
@rem ##########################################################################
|
@rem ##########################################################################
|
||||||
@rem
|
@rem
|
||||||
@rem Gradle startup script for Windows
|
@rem Gradle startup script for Windows
|
||||||
@rem
|
@rem
|
||||||
@rem ##########################################################################
|
@rem ##########################################################################
|
||||||
|
|
||||||
@rem Set local scope for the variables with windows NT shell
|
@rem Set local scope for the variables with windows NT shell
|
||||||
if "%OS%"=="Windows_NT" setlocal
|
if "%OS%"=="Windows_NT" setlocal
|
||||||
|
|
||||||
set DIRNAME=%~dp0
|
set DIRNAME=%~dp0
|
||||||
if "%DIRNAME%"=="" set DIRNAME=.
|
if "%DIRNAME%"=="" set DIRNAME=.
|
||||||
@rem This is normally unused
|
@rem This is normally unused
|
||||||
set APP_BASE_NAME=%~n0
|
set APP_BASE_NAME=%~n0
|
||||||
set APP_HOME=%DIRNAME%
|
set APP_HOME=%DIRNAME%
|
||||||
|
|
||||||
@rem Resolve any "." and ".." in APP_HOME to make it shorter.
|
@rem Resolve any "." and ".." in APP_HOME to make it shorter.
|
||||||
for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
|
for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
|
||||||
|
|
||||||
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
||||||
set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
|
set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
|
||||||
|
|
||||||
@rem Find java.exe
|
@rem Find java.exe
|
||||||
if defined JAVA_HOME goto findJavaFromJavaHome
|
if defined JAVA_HOME goto findJavaFromJavaHome
|
||||||
|
|
||||||
set JAVA_EXE=java.exe
|
set JAVA_EXE=java.exe
|
||||||
%JAVA_EXE% -version >NUL 2>&1
|
%JAVA_EXE% -version >NUL 2>&1
|
||||||
if %ERRORLEVEL% equ 0 goto execute
|
if %ERRORLEVEL% equ 0 goto execute
|
||||||
|
|
||||||
echo.
|
echo. 1>&2
|
||||||
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
|
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2
|
||||||
echo.
|
echo. 1>&2
|
||||||
echo Please set the JAVA_HOME variable in your environment to match the
|
echo Please set the JAVA_HOME variable in your environment to match the 1>&2
|
||||||
echo location of your Java installation.
|
echo location of your Java installation. 1>&2
|
||||||
|
|
||||||
goto fail
|
goto fail
|
||||||
|
|
||||||
:findJavaFromJavaHome
|
:findJavaFromJavaHome
|
||||||
set JAVA_HOME=%JAVA_HOME:"=%
|
set JAVA_HOME=%JAVA_HOME:"=%
|
||||||
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
|
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
|
||||||
|
|
||||||
if exist "%JAVA_EXE%" goto execute
|
if exist "%JAVA_EXE%" goto execute
|
||||||
|
|
||||||
echo.
|
echo. 1>&2
|
||||||
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
|
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2
|
||||||
echo.
|
echo. 1>&2
|
||||||
echo Please set the JAVA_HOME variable in your environment to match the
|
echo Please set the JAVA_HOME variable in your environment to match the 1>&2
|
||||||
echo location of your Java installation.
|
echo location of your Java installation. 1>&2
|
||||||
|
|
||||||
goto fail
|
goto fail
|
||||||
|
|
||||||
:execute
|
:execute
|
||||||
@rem Setup the command line
|
@rem Setup the command line
|
||||||
|
|
||||||
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
|
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
|
||||||
|
|
||||||
|
|
||||||
@rem Execute Gradle
|
@rem Execute Gradle
|
||||||
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
|
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
|
||||||
|
|
||||||
:end
|
:end
|
||||||
@rem End local scope for the variables with windows NT shell
|
@rem End local scope for the variables with windows NT shell
|
||||||
if %ERRORLEVEL% equ 0 goto mainEnd
|
if %ERRORLEVEL% equ 0 goto mainEnd
|
||||||
|
|
||||||
:fail
|
:fail
|
||||||
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
|
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
|
||||||
rem the _cmd.exe /c_ return code!
|
rem the _cmd.exe /c_ return code!
|
||||||
set EXIT_CODE=%ERRORLEVEL%
|
set EXIT_CODE=%ERRORLEVEL%
|
||||||
if %EXIT_CODE% equ 0 set EXIT_CODE=1
|
if %EXIT_CODE% equ 0 set EXIT_CODE=1
|
||||||
if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE%
|
if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE%
|
||||||
exit /b %EXIT_CODE%
|
exit /b %EXIT_CODE%
|
||||||
|
|
||||||
:mainEnd
|
:mainEnd
|
||||||
if "%OS%"=="Windows_NT" endlocal
|
if "%OS%"=="Windows_NT" endlocal
|
||||||
|
|
||||||
:omega
|
:omega
|
||||||
|
|||||||
72
initDev
Executable file
72
initDev
Executable file
@@ -0,0 +1,72 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# To initialize your development environment,
|
||||||
|
# run below command in your terminal:
|
||||||
|
# source ./initDev
|
||||||
|
|
||||||
|
export PROJECT_DIR=$(pwd)
|
||||||
|
|
||||||
|
alias api="cd $PROJECT_DIR/*-API"
|
||||||
|
alias srv="cd $PROJECT_DIR/*-Server"
|
||||||
|
|
||||||
|
alias g="./gradlew"
|
||||||
|
alias c="clear;"
|
||||||
|
|
||||||
|
alias ap="./gradlew --no-rebuild applyPatches"
|
||||||
|
alias aap="./gradlew --no-rebuild applyAPIPatches"
|
||||||
|
alias agp="./gradlew --no-rebuild applyGeneratedAPIPatches"
|
||||||
|
alias asp="./gradlew --no-rebuild applyServerPatches"
|
||||||
|
|
||||||
|
alias rp="./gradlew --no-rebuild rebuildPatches"
|
||||||
|
alias rap="./gradlew --no-rebuild rebuildAPIPatches"
|
||||||
|
alias rgp="./gradlew --no-rebuild rebuildGeneratedAPIPatches"
|
||||||
|
alias rsp="./gradlew --no-rebuild rebuildServerPatches"
|
||||||
|
|
||||||
|
alias run="./gradlew runDevServer"
|
||||||
|
alias build="./gradlew build"
|
||||||
|
alias reobf="./gradlew createReobfPaperclipJar"
|
||||||
|
alias mojmap="./gradlew createMojmapPaperclipJar"
|
||||||
|
|
||||||
|
alias lg="git log --oneline base..HEAD"
|
||||||
|
alias rc="git rebase --autosquash -i base"
|
||||||
|
alias rcc="git rebase --continue"
|
||||||
|
|
||||||
|
# generate Fixup patches for Server
|
||||||
|
function fs() {
|
||||||
|
cd ./*-Server || exit 1
|
||||||
|
garg="."
|
||||||
|
[[ "$1" == "-x" ]] && garg="--amend"
|
||||||
|
|
||||||
|
git add .
|
||||||
|
git commit "$garg" -m "fixup"
|
||||||
|
git format-patch -1
|
||||||
|
mv 0001-fixup.patch ../
|
||||||
|
|
||||||
|
cd ../
|
||||||
|
}
|
||||||
|
|
||||||
|
# generate Fixup patches for API
|
||||||
|
function fa() {
|
||||||
|
cd ./*-API || exit 1
|
||||||
|
garg="."
|
||||||
|
[[ "$1" == "-x" ]] && garg="--amend"
|
||||||
|
|
||||||
|
git add .
|
||||||
|
git commit "$garg" -m "fixup"
|
||||||
|
git format-patch -1
|
||||||
|
mv 0001-fixup.patch ../
|
||||||
|
|
||||||
|
cd ../
|
||||||
|
}
|
||||||
|
|
||||||
|
# ReApply Server Patches
|
||||||
|
function rasp() {
|
||||||
|
rm -rf ./*-Server
|
||||||
|
./gradlew applyServerPatches
|
||||||
|
}
|
||||||
|
|
||||||
|
# Commit Updated Upstream
|
||||||
|
function cuu() {
|
||||||
|
# shellcheck disable=SC2059
|
||||||
|
printf "Updated Upstream ($1)$(/bin/cat compare.txt)" | git commit -F -
|
||||||
|
}
|
||||||
|
|
||||||
33
libs/api.versions.toml
Normal file
33
libs/api.versions.toml
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
[versions]
|
||||||
|
gson = "2.10.1"
|
||||||
|
joml = "1.10.5"
|
||||||
|
guava = "32.1.2-jre"
|
||||||
|
sentry = "5.4.0"
|
||||||
|
jspecify = "1.0.0"
|
||||||
|
fastutil = "8.5.6"
|
||||||
|
findbugs = "1.3.9"
|
||||||
|
slf4j-api = "2.0.9"
|
||||||
|
brigadier = "1.2.9"
|
||||||
|
bungeechat = "1.20-R0.2"
|
||||||
|
json-simple = "1.1.1"
|
||||||
|
annotations = "24.0.1"
|
||||||
|
checkerqual = "3.21.0"
|
||||||
|
|
||||||
|
[libraries]
|
||||||
|
joml = { group = "org.joml", name = "joml", version.ref = "joml" }
|
||||||
|
gson = { group = "com.google.code.gson", name = "gson", version.ref = "gson" }
|
||||||
|
guava = { group = "com.google.guava", name = "guava", version.ref = "guava" }
|
||||||
|
sentry = { group = "io.sentry", name = "sentry", version.ref = "sentry" }
|
||||||
|
jspecify = { group = "org.jspecify", name = "jspecify", version.ref = "jspecify" }
|
||||||
|
fastutil = { group = "it.unimi.dsi", name = "fastutil", version.ref = "fastutil" }
|
||||||
|
findbugs = { group = "com.google.code.findbugs", name = "jsr305", version.ref = "findbugs" }
|
||||||
|
brigadier = { group = "com.mojang", name = "brigadier", version.ref = "brigadier" }
|
||||||
|
slf4j-api = { group = "org.slf4j", name = "slf4j-api", version.ref = "slf4j-api" }
|
||||||
|
bungeechat = { group = "net.md-5", name = "bungeecord-chat", version.ref = "bungeechat" }
|
||||||
|
jsonsimple = { group = "com.googlecode.json-simple", name = "json-simple", version.ref = "json-simple" }
|
||||||
|
annotations = { group = "org.jetbrains", name = "annotations", version.ref = "annotations" }
|
||||||
|
checkerqual = { group = "org.checkerframework", name = "checker-qual", version.ref = "checkerqual" }
|
||||||
|
|
||||||
|
[bundles]
|
||||||
|
api = [ "jspecify", "guava", "gson", "joml", "fastutil", "slf4j-api", "sentry", "brigadier" ]
|
||||||
|
annotations = [ "annotations", "checkerqual" ]
|
||||||
47
libs/common.versions.toml
Normal file
47
libs/common.versions.toml
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
[versions]
|
||||||
|
asm = "9.7.1"
|
||||||
|
log4j = "2.19.0"
|
||||||
|
junit = "1.10.0"
|
||||||
|
mockito = "5.14.1"
|
||||||
|
jupiter = "5.10.0"
|
||||||
|
hamcrest = "2.2"
|
||||||
|
snakeyaml = "2.2"
|
||||||
|
adventure = "4.17.0"
|
||||||
|
commons-lang2 = "2.6"
|
||||||
|
commons-lang3 = "3.12.0"
|
||||||
|
maven-provider = "3.9.6"
|
||||||
|
maven-resolver = "1.9.18"
|
||||||
|
|
||||||
|
[libraries]
|
||||||
|
junit = { group = "org.junit.platform", name = "junit-platform-suite-engine", version.ref = "junit" }
|
||||||
|
mockito = { group = "org.mockito", name = "mockito-core", version.ref = "mockito" }
|
||||||
|
jupiter = { group = "org.junit.jupiter", name = "junit-jupiter", version.ref = "jupiter" }
|
||||||
|
hamcrest = { group = "org.hamcrest", name = "hamcrest", version.ref = "hamcrest" }
|
||||||
|
snakeyaml = { group = "org.yaml", name = "snakeyaml", version.ref = "snakeyaml" }
|
||||||
|
|
||||||
|
asm-head = { group = "org.ow2.asm", name = "asm", version.ref = "asm" }
|
||||||
|
asm-tree = { group = "org.ow2.asm", name = "asm-tree", version.ref = "asm" }
|
||||||
|
asm-commons = { group = "org.ow2.asm", name = "asm-commons", version.ref = "asm" }
|
||||||
|
log4j-api = { group = "org.apache.logging.log4j", name = "log4j-api", version.ref = "log4j" }
|
||||||
|
log4j-core = { group = "org.apache.logging.log4j", name = "log4j-core", version.ref = "log4j" }
|
||||||
|
log4j-iostreams = { group = "org.apache.logging.log4j", name = "log4j-iostreams", version.ref = "log4j" }
|
||||||
|
maven-provider = { group = "org.apache.maven", name = "maven-resolver-provider", version.ref = "maven-provider" }
|
||||||
|
maven-connector = { group = "org.apache.maven.resolver", name = "maven-resolver-connector-basic", version.ref = "maven-resolver" }
|
||||||
|
maven-transport = { group = "org.apache.maven.resolver", name = "maven-resolver-transport-http", version.ref = "maven-resolver" }
|
||||||
|
commons-lang2 = { group = "commons-lang", name = "commons-lang", version.ref = "commons-lang2" }
|
||||||
|
commons-lang3 = { group = "org.apache.commons", name = "commons-lang3", version.ref = "commons-lang3" }
|
||||||
|
|
||||||
|
adventure-bom = { group = "net.kyori", name = "adventure-bom", version.ref = "adventure" }
|
||||||
|
adventure-api = { group = "net.kyori", name = "adventure-api", version.ref = "adventure" }
|
||||||
|
adventure-slf4j = { group = "net.kyori", name = "adventure-text-logger-slf4j", version.ref = "adventure" }
|
||||||
|
adventure-minimessage = { group = "net.kyori", name = "adventure-text-minimessage", version.ref = "adventure" }
|
||||||
|
adventure-serializer-gson = { group = "net.kyori", name = "adventure-text-serializer-gson", version.ref = "adventure" }
|
||||||
|
adventure-serializer-ansi = { group = "net.kyori", name = "adventure-text-serializer-ansi", version.ref = "adventure" }
|
||||||
|
adventure-serializer-plain = { group = "net.kyori", name = "adventure-text-serializer-plain", version.ref = "adventure" }
|
||||||
|
adventure-serializer-legacy = { group = "net.kyori", name = "adventure-text-serializer-legacy", version.ref = "adventure" }
|
||||||
|
|
||||||
|
[bundles]
|
||||||
|
asm = [ "asm-head", "asm-commons" ]
|
||||||
|
test = [ "jupiter", "hamcrest", "mockito", "asm-tree", "junit" ]
|
||||||
|
maven = [ "maven-connector", "maven-transport" ]
|
||||||
|
adventure = [ "adventure-api", "adventure-slf4j", "adventure-minimessage", "adventure-serializer-gson", "adventure-serializer-plain", "adventure-serializer-legacy" ]
|
||||||
56
libs/server.versions.toml
Normal file
56
libs/server.versions.toml
Normal file
@@ -0,0 +1,56 @@
|
|||||||
|
[versions]
|
||||||
|
art = "2.0.3"
|
||||||
|
tca = "1.3.0"
|
||||||
|
upnp = "1.0"
|
||||||
|
ansi = "1.0.3"
|
||||||
|
jansi = "3.21.0"
|
||||||
|
rhino = "1.7.14"
|
||||||
|
mysql = "9.1.0"
|
||||||
|
flare = "34637f3f87"
|
||||||
|
sqlite = "3.46.1.3"
|
||||||
|
pioneer = "2.2.0"
|
||||||
|
haproxy = "4.1.97.Final"
|
||||||
|
rewriter = "0.0.3"
|
||||||
|
srgutils = "1.0.9"
|
||||||
|
sparkapi = "0.1-20240720.200737-2"
|
||||||
|
sparknt = "1.10.105-SNAPSHOT"
|
||||||
|
velocity = "3.3.0-SNAPSHOT"
|
||||||
|
disruptor = "3.4.4"
|
||||||
|
simpleyaml = "1.8.4"
|
||||||
|
classgraph = "4.8.47"
|
||||||
|
mapping-io = "0.5.0"
|
||||||
|
configurate = "4.2.0-SNAPSHOT"
|
||||||
|
|
||||||
|
[libraries]
|
||||||
|
art = { group = "net.neoforged", name = "AutoRenamingTool", version.ref = "art" }
|
||||||
|
tca = { group = "net.minecrell", name = "terminalconsoleappender", version.ref="tca" }
|
||||||
|
ansi = { group = "net.kyori", name = "ansi", version.ref = "ansi" }
|
||||||
|
upnp = { group = "dev.omega24", name = "upnp4j", version.ref = "upnp" }
|
||||||
|
mysql = { group = "com.mysql", name = "mysql-connector-j", version.ref = "mysql" }
|
||||||
|
jansi = { group = "org.jline", name = "jline-terminal-jansi", version.ref = "jansi" }
|
||||||
|
flare = { group = "com.github.technove", name = "flare", version.ref = "flare" }
|
||||||
|
sqlite = { group = "org.xerial", name = "sqlite-jdbc", version.ref = "sqlite" }
|
||||||
|
pioneer = { group = "org.junit-pioneer", name = "junit-pioneer", version.ref = "pioneer" }
|
||||||
|
haproxy = { group = "io.netty", name = "netty-codec-haproxy", version.ref = "haproxy" }
|
||||||
|
srgutils = { group = "net.neoforged", name = "srgutils", version.ref = "srgutils" }
|
||||||
|
velocity = { group = "com.velocitypowered", name = "velocity-native", version.ref = "velocity" }
|
||||||
|
disruptor = { group = "com.lmax", name = "disruptor", version.ref = "disruptor" }
|
||||||
|
mappingio = { group = "net.fabricmc", name = "mapping-io", version.ref = "mapping-io" }
|
||||||
|
classgraph = { group = "io.github.classgraph", name = "classgraph", version.ref = "classgraph" }
|
||||||
|
simpleyaml = { group = "com.github.carleslc.Simple-YAML", name = "Simple-Yaml", version.ref = "simpleyaml" }
|
||||||
|
configurate = { group = "org.spongepowered", name = "configurate-yaml", version.ref = "configurate" }
|
||||||
|
|
||||||
|
spark-api = { group = "me.lucko", name = "spark-api", version.ref = "sparkapi" }
|
||||||
|
spark-paper = { group = "me.lucko", name = "spark-paper", version.ref = "sparknt" }
|
||||||
|
|
||||||
|
rhino-engine = { group = "org.mozilla", name = "rhino-engine", version.ref = "rhino" }
|
||||||
|
rhino-runtime = { group = "org.mozilla", name = "rhino-runtime", version.ref = "rhino" }
|
||||||
|
|
||||||
|
rewriter = { group = "io.papermc", name = "reflection-rewriter", version.ref = "rewriter" }
|
||||||
|
rewriter-runtime = { group = "io.papermc", name = "reflection-rewriter-runtime", version.ref = "rewriter" }
|
||||||
|
rewriter-generator = { group = "io.papermc", name = "reflection-rewriter-proxy-generator", version.ref = "rewriter" }
|
||||||
|
|
||||||
|
[bundles]
|
||||||
|
runtime = [ "sqlite", "mysql", "disruptor" ]
|
||||||
|
implementation = [ "spark-api", "spark-paper", "jansi", "tca", "ansi", "upnp", "haproxy", "configurate", "mappingio", "rhino-engine", "rhino-runtime", "srgutils", "art", "rewriter", "rewriter-runtime", "rewriter-generator", "flare" ]
|
||||||
|
test = [ "classgraph", "pioneer" ]
|
||||||
14
mkapi.sh
14
mkapi.sh
@@ -1,14 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
# PatchAPI <Patch Name>
|
|
||||||
|
|
||||||
PS1="$"
|
|
||||||
|
|
||||||
cd Plazma-API
|
|
||||||
|
|
||||||
git add .
|
|
||||||
git commit -m $1
|
|
||||||
|
|
||||||
cd ../
|
|
||||||
|
|
||||||
./gradlew rebuildAPIPatches
|
|
||||||
14
mksrv.sh
14
mksrv.sh
@@ -1,14 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
# PatchServer <Patch Name>
|
|
||||||
|
|
||||||
PS1="$"
|
|
||||||
|
|
||||||
cd Plazma-Server
|
|
||||||
|
|
||||||
git add .
|
|
||||||
git commit -m $1
|
|
||||||
|
|
||||||
cd ../
|
|
||||||
|
|
||||||
./gradlew rebuildServerPatches
|
|
||||||
@@ -1,527 +0,0 @@
|
|||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: AlphaKR93 <dev@alpha93.kr>
|
|
||||||
Date: Sat, 23 Sep 2023 10:20:55 +0000
|
|
||||||
Subject: [PATCH] Pufferfish API Changes
|
|
||||||
|
|
||||||
Original: Kevin Raneri <kevin.raneri@gmail.com>
|
|
||||||
Copyright (C) 2023 Pufferfish Studios LLC
|
|
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation, either version 3 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
diff --git a/build.gradle.kts b/build.gradle.kts
|
|
||||||
index aed834334385ff3038ae69f3f34d129ad2507960..1ae1907f94a19c37b5820cfb3e9df3bd6bb1a49d 100644
|
|
||||||
--- a/build.gradle.kts
|
|
||||||
+++ b/build.gradle.kts
|
|
||||||
@@ -46,6 +46,7 @@ dependencies {
|
|
||||||
apiAndDocs("net.kyori:adventure-text-logger-slf4j")
|
|
||||||
api("org.apache.logging.log4j:log4j-api:$log4jVersion")
|
|
||||||
api("org.slf4j:slf4j-api:$slf4jVersion")
|
|
||||||
+ api("io.sentry:sentry:5.4.0") // Pufferfish
|
|
||||||
|
|
||||||
implementation("org.ow2.asm:asm:9.4")
|
|
||||||
implementation("org.ow2.asm:asm-commons:9.4")
|
|
||||||
@@ -89,6 +90,13 @@ val generateApiVersioningFile by tasks.registering {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
+// Pufferfish Start
|
|
||||||
+tasks.withType<JavaCompile> {
|
|
||||||
+ val compilerArgs = options.compilerArgs
|
|
||||||
+ compilerArgs.add("--add-modules=jdk.incubator.vector")
|
|
||||||
+}
|
|
||||||
+// Pufferfish End
|
|
||||||
+
|
|
||||||
tasks.jar {
|
|
||||||
from(generateApiVersioningFile.map { it.outputs.files.singleFile }) {
|
|
||||||
into("META-INF/maven/${project.group}/${project.name}")
|
|
||||||
diff --git a/src/main/java/gg/pufferfish/pufferfish/sentry/SentryContext.java b/src/main/java/gg/pufferfish/pufferfish/sentry/SentryContext.java
|
|
||||||
new file mode 100644
|
|
||||||
index 0000000000000000000000000000000000000000..10310fdd53de28efb8a8250f6d3b0c8eb08fb68a
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/src/main/java/gg/pufferfish/pufferfish/sentry/SentryContext.java
|
|
||||||
@@ -0,0 +1,161 @@
|
|
||||||
+package gg.pufferfish.pufferfish.sentry;
|
|
||||||
+
|
|
||||||
+import com.google.gson.Gson;
|
|
||||||
+import java.lang.reflect.Field;
|
|
||||||
+import java.lang.reflect.Modifier;
|
|
||||||
+import java.util.Map;
|
|
||||||
+import java.util.TreeMap;
|
|
||||||
+import org.apache.logging.log4j.ThreadContext;
|
|
||||||
+import org.bukkit.command.Command;
|
|
||||||
+import org.bukkit.command.CommandSender;
|
|
||||||
+import org.bukkit.entity.Player;
|
|
||||||
+import org.bukkit.event.Event;
|
|
||||||
+import org.bukkit.event.player.PlayerEvent;
|
|
||||||
+import org.bukkit.plugin.Plugin;
|
|
||||||
+import org.bukkit.plugin.RegisteredListener;
|
|
||||||
+import org.jetbrains.annotations.Nullable;
|
|
||||||
+
|
|
||||||
+public class SentryContext {
|
|
||||||
+
|
|
||||||
+ private static final Gson GSON = new Gson();
|
|
||||||
+
|
|
||||||
+ public static void setPluginContext(@Nullable Plugin plugin) {
|
|
||||||
+ if (plugin != null) {
|
|
||||||
+ ThreadContext.put("pufferfishsentry_pluginname", plugin.getName());
|
|
||||||
+ ThreadContext.put("pufferfishsentry_pluginversion", plugin.getDescription().getVersion());
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ public static void removePluginContext() {
|
|
||||||
+ ThreadContext.remove("pufferfishsentry_pluginname");
|
|
||||||
+ ThreadContext.remove("pufferfishsentry_pluginversion");
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ public static void setSenderContext(@Nullable CommandSender sender) {
|
|
||||||
+ if (sender != null) {
|
|
||||||
+ ThreadContext.put("pufferfishsentry_playername", sender.getName());
|
|
||||||
+ if (sender instanceof Player player) {
|
|
||||||
+ ThreadContext.put("pufferfishsentry_playerid", player.getUniqueId().toString());
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ public static void removeSenderContext() {
|
|
||||||
+ ThreadContext.remove("pufferfishsentry_playername");
|
|
||||||
+ ThreadContext.remove("pufferfishsentry_playerid");
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ public static void setEventContext(Event event, RegisteredListener registration) {
|
|
||||||
+ setPluginContext(registration.getPlugin());
|
|
||||||
+
|
|
||||||
+ try {
|
|
||||||
+ // Find the player that was involved with this event
|
|
||||||
+ Player player = null;
|
|
||||||
+ if (event instanceof PlayerEvent) {
|
|
||||||
+ player = ((PlayerEvent) event).getPlayer();
|
|
||||||
+ } else {
|
|
||||||
+ Class<? extends Event> eventClass = event.getClass();
|
|
||||||
+
|
|
||||||
+ Field playerField = null;
|
|
||||||
+
|
|
||||||
+ for (Field field : eventClass.getDeclaredFields()) {
|
|
||||||
+ if (field.getType().equals(Player.class)) {
|
|
||||||
+ playerField = field;
|
|
||||||
+ break;
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ if (playerField != null) {
|
|
||||||
+ playerField.setAccessible(true);
|
|
||||||
+ player = (Player) playerField.get(event);
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ if (player != null) {
|
|
||||||
+ setSenderContext(player);
|
|
||||||
+ }
|
|
||||||
+ } catch (Exception e) {} // We can't really safely log exceptions.
|
|
||||||
+
|
|
||||||
+ ThreadContext.put("pufferfishsentry_eventdata", GSON.toJson(serializeFields(event)));
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ public static void removeEventContext() {
|
|
||||||
+ removePluginContext();
|
|
||||||
+ removeSenderContext();
|
|
||||||
+ ThreadContext.remove("pufferfishsentry_eventdata");
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ private static Map<String, String> serializeFields(Object object) {
|
|
||||||
+ Map<String, String> fields = new TreeMap<>();
|
|
||||||
+ fields.put("_class", object.getClass().getName());
|
|
||||||
+ for (Field declaredField : object.getClass().getDeclaredFields()) {
|
|
||||||
+ try {
|
|
||||||
+ if (Modifier.isStatic(declaredField.getModifiers())) {
|
|
||||||
+ continue;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ String fieldName = declaredField.getName();
|
|
||||||
+ if (fieldName.equals("handlers")) {
|
|
||||||
+ continue;
|
|
||||||
+ }
|
|
||||||
+ declaredField.setAccessible(true);
|
|
||||||
+ Object value = declaredField.get(object);
|
|
||||||
+ if (value != null) {
|
|
||||||
+ fields.put(fieldName, value.toString());
|
|
||||||
+ } else {
|
|
||||||
+ fields.put(fieldName, "<null>");
|
|
||||||
+ }
|
|
||||||
+ } catch (Exception e) {} // We can't really safely log exceptions.
|
|
||||||
+ }
|
|
||||||
+ return fields;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ public static class State {
|
|
||||||
+
|
|
||||||
+ private Plugin plugin;
|
|
||||||
+ private Command command;
|
|
||||||
+ private String commandLine;
|
|
||||||
+ private Event event;
|
|
||||||
+ private RegisteredListener registeredListener;
|
|
||||||
+
|
|
||||||
+ public Plugin getPlugin() {
|
|
||||||
+ return plugin;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ public void setPlugin(Plugin plugin) {
|
|
||||||
+ this.plugin = plugin;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ public Command getCommand() {
|
|
||||||
+ return command;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ public void setCommand(Command command) {
|
|
||||||
+ this.command = command;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ public String getCommandLine() {
|
|
||||||
+ return commandLine;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ public void setCommandLine(String commandLine) {
|
|
||||||
+ this.commandLine = commandLine;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ public Event getEvent() {
|
|
||||||
+ return event;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ public void setEvent(Event event) {
|
|
||||||
+ this.event = event;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ public RegisteredListener getRegisteredListener() {
|
|
||||||
+ return registeredListener;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ public void setRegisteredListener(RegisteredListener registeredListener) {
|
|
||||||
+ this.registeredListener = registeredListener;
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+}
|
|
||||||
diff --git a/src/main/java/gg/pufferfish/pufferfish/simd/SIMDChecker.java b/src/main/java/gg/pufferfish/pufferfish/simd/SIMDChecker.java
|
|
||||||
new file mode 100644
|
|
||||||
index 0000000000000000000000000000000000000000..ab5fea0b03224bf249352ce340e94704ff713345
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/src/main/java/gg/pufferfish/pufferfish/simd/SIMDChecker.java
|
|
||||||
@@ -0,0 +1,40 @@
|
|
||||||
+package gg.pufferfish.pufferfish.simd;
|
|
||||||
+
|
|
||||||
+import java.util.logging.Level;
|
|
||||||
+import java.util.logging.Logger;
|
|
||||||
+import jdk.incubator.vector.FloatVector;
|
|
||||||
+import jdk.incubator.vector.IntVector;
|
|
||||||
+import jdk.incubator.vector.VectorSpecies;
|
|
||||||
+
|
|
||||||
+/**
|
|
||||||
+ * Basically, java is annoying and we have to push this out to its own class.
|
|
||||||
+ */
|
|
||||||
+@Deprecated
|
|
||||||
+public class SIMDChecker {
|
|
||||||
+
|
|
||||||
+ @Deprecated
|
|
||||||
+ public static boolean canEnable(Logger logger) {
|
|
||||||
+ try {
|
|
||||||
+ if (SIMDDetection.getJavaVersion() != 17 && SIMDDetection.getJavaVersion() != 18 && SIMDDetection.getJavaVersion() != 19) {
|
|
||||||
+ return false;
|
|
||||||
+ } else {
|
|
||||||
+ SIMDDetection.testRun = true;
|
|
||||||
+
|
|
||||||
+ VectorSpecies<Integer> ISPEC = IntVector.SPECIES_PREFERRED;
|
|
||||||
+ VectorSpecies<Float> FSPEC = FloatVector.SPECIES_PREFERRED;
|
|
||||||
+
|
|
||||||
+ logger.log(Level.INFO, "Max SIMD vector size on this system is " + ISPEC.vectorBitSize() + " bits (int)");
|
|
||||||
+ logger.log(Level.INFO, "Max SIMD vector size on this system is " + FSPEC.vectorBitSize() + " bits (float)");
|
|
||||||
+
|
|
||||||
+ if (ISPEC.elementSize() < 2 || FSPEC.elementSize() < 2) {
|
|
||||||
+ logger.log(Level.WARNING, "SIMD is not properly supported on this system!");
|
|
||||||
+ return false;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ return true;
|
|
||||||
+ }
|
|
||||||
+ } catch (NoClassDefFoundError | Exception ignored) {} // Basically, we don't do anything. This lets us detect if it's not functional and disable it.
|
|
||||||
+ return false;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+}
|
|
||||||
diff --git a/src/main/java/gg/pufferfish/pufferfish/simd/SIMDDetection.java b/src/main/java/gg/pufferfish/pufferfish/simd/SIMDDetection.java
|
|
||||||
new file mode 100644
|
|
||||||
index 0000000000000000000000000000000000000000..a84889d3e9cfc4d7ab5f867820a6484c6070711b
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/src/main/java/gg/pufferfish/pufferfish/simd/SIMDDetection.java
|
|
||||||
@@ -0,0 +1,35 @@
|
|
||||||
+package gg.pufferfish.pufferfish.simd;
|
|
||||||
+
|
|
||||||
+import java.util.logging.Logger;
|
|
||||||
+
|
|
||||||
+@Deprecated
|
|
||||||
+public class SIMDDetection {
|
|
||||||
+
|
|
||||||
+ public static boolean isEnabled = false;
|
|
||||||
+ public static boolean versionLimited = false;
|
|
||||||
+ public static boolean testRun = false;
|
|
||||||
+
|
|
||||||
+ @Deprecated
|
|
||||||
+ public static boolean canEnable(Logger logger) {
|
|
||||||
+ try {
|
|
||||||
+ return SIMDChecker.canEnable(logger);
|
|
||||||
+ } catch (NoClassDefFoundError | Exception ignored) {
|
|
||||||
+ return false;
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ @Deprecated
|
|
||||||
+ public static int getJavaVersion() {
|
|
||||||
+ // https://stackoverflow.com/a/2591122
|
|
||||||
+ String version = System.getProperty("java.version");
|
|
||||||
+ if(version.startsWith("1.")) {
|
|
||||||
+ version = version.substring(2, 3);
|
|
||||||
+ } else {
|
|
||||||
+ int dot = version.indexOf(".");
|
|
||||||
+ if(dot != -1) { version = version.substring(0, dot); }
|
|
||||||
+ }
|
|
||||||
+ version = version.split("-")[0]; // Azul is stupid
|
|
||||||
+ return Integer.parseInt(version);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+}
|
|
||||||
diff --git a/src/main/java/gg/pufferfish/pufferfish/simd/VectorMapPalette.java b/src/main/java/gg/pufferfish/pufferfish/simd/VectorMapPalette.java
|
|
||||||
new file mode 100644
|
|
||||||
index 0000000000000000000000000000000000000000..ae2464920c9412ac90b819a540ee58be0741465f
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/src/main/java/gg/pufferfish/pufferfish/simd/VectorMapPalette.java
|
|
||||||
@@ -0,0 +1,83 @@
|
|
||||||
+package gg.pufferfish.pufferfish.simd;
|
|
||||||
+
|
|
||||||
+import java.awt.Color;
|
|
||||||
+import jdk.incubator.vector.FloatVector;
|
|
||||||
+import jdk.incubator.vector.IntVector;
|
|
||||||
+import jdk.incubator.vector.VectorMask;
|
|
||||||
+import jdk.incubator.vector.VectorSpecies;
|
|
||||||
+import org.bukkit.map.MapPalette;
|
|
||||||
+
|
|
||||||
+@Deprecated
|
|
||||||
+public class VectorMapPalette {
|
|
||||||
+
|
|
||||||
+ private static final VectorSpecies<Integer> I_SPEC = IntVector.SPECIES_PREFERRED;
|
|
||||||
+ private static final VectorSpecies<Float> F_SPEC = FloatVector.SPECIES_PREFERRED;
|
|
||||||
+
|
|
||||||
+ @Deprecated
|
|
||||||
+ public static void matchColorVectorized(int[] in, byte[] out) {
|
|
||||||
+ int speciesLength = I_SPEC.length();
|
|
||||||
+ int i;
|
|
||||||
+ for (i = 0; i < in.length - speciesLength; i += speciesLength) {
|
|
||||||
+ float[] redsArr = new float[speciesLength];
|
|
||||||
+ float[] bluesArr = new float[speciesLength];
|
|
||||||
+ float[] greensArr = new float[speciesLength];
|
|
||||||
+ int[] alphasArr = new int[speciesLength];
|
|
||||||
+
|
|
||||||
+ for (int j = 0; j < speciesLength; j++) {
|
|
||||||
+ alphasArr[j] = (in[i + j] >> 24) & 0xFF;
|
|
||||||
+ redsArr[j] = (in[i + j] >> 16) & 0xFF;
|
|
||||||
+ greensArr[j] = (in[i + j] >> 8) & 0xFF;
|
|
||||||
+ bluesArr[j] = (in[i + j] >> 0) & 0xFF;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ IntVector alphas = IntVector.fromArray(I_SPEC, alphasArr, 0);
|
|
||||||
+ FloatVector reds = FloatVector.fromArray(F_SPEC, redsArr, 0);
|
|
||||||
+ FloatVector greens = FloatVector.fromArray(F_SPEC, greensArr, 0);
|
|
||||||
+ FloatVector blues = FloatVector.fromArray(F_SPEC, bluesArr, 0);
|
|
||||||
+ IntVector resultIndex = IntVector.zero(I_SPEC);
|
|
||||||
+ VectorMask<Integer> modificationMask = VectorMask.fromLong(I_SPEC, 0xffffffff);
|
|
||||||
+
|
|
||||||
+ modificationMask = modificationMask.and(alphas.lt(128).not());
|
|
||||||
+ FloatVector bestDistances = FloatVector.broadcast(F_SPEC, Float.MAX_VALUE);
|
|
||||||
+
|
|
||||||
+ for (int c = 4; c < MapPalette.colors.length; c++) {
|
|
||||||
+ // We're using 32-bit floats here because it's 2x faster and nobody will know the difference.
|
|
||||||
+ // For correctness, the original algorithm uses 64-bit floats instead. Completely unnecessary.
|
|
||||||
+ FloatVector compReds = FloatVector.broadcast(F_SPEC, MapPalette.colors[c].getRed());
|
|
||||||
+ FloatVector compGreens = FloatVector.broadcast(F_SPEC, MapPalette.colors[c].getGreen());
|
|
||||||
+ FloatVector compBlues = FloatVector.broadcast(F_SPEC, MapPalette.colors[c].getBlue());
|
|
||||||
+
|
|
||||||
+ FloatVector rMean = reds.add(compReds).div(2.0f);
|
|
||||||
+ FloatVector rDiff = reds.sub(compReds);
|
|
||||||
+ FloatVector gDiff = greens.sub(compGreens);
|
|
||||||
+ FloatVector bDiff = blues.sub(compBlues);
|
|
||||||
+
|
|
||||||
+ FloatVector weightR = rMean.div(256.0f).add(2);
|
|
||||||
+ FloatVector weightG = FloatVector.broadcast(F_SPEC, 4.0f);
|
|
||||||
+ FloatVector weightB = FloatVector.broadcast(F_SPEC, 255.0f).sub(rMean).div(256.0f).add(2.0f);
|
|
||||||
+
|
|
||||||
+ FloatVector distance = weightR.mul(rDiff).mul(rDiff).add(weightG.mul(gDiff).mul(gDiff)).add(weightB.mul(bDiff).mul(bDiff));
|
|
||||||
+
|
|
||||||
+ // Now we compare to the best distance we've found.
|
|
||||||
+ // This mask contains a "1" if better, and a "0" otherwise.
|
|
||||||
+ VectorMask<Float> bestDistanceMask = distance.lt(bestDistances);
|
|
||||||
+ bestDistances = bestDistances.blend(distance, bestDistanceMask); // Update the best distances
|
|
||||||
+
|
|
||||||
+ // Update the result array
|
|
||||||
+ // We also AND with the modification mask because we don't want to interfere if the alpha value isn't large enough.
|
|
||||||
+ resultIndex = resultIndex.blend(c, bestDistanceMask.cast(I_SPEC).and(modificationMask)); // Update the results
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ for (int j = 0; j < speciesLength; j++) {
|
|
||||||
+ int index = resultIndex.lane(j);
|
|
||||||
+ out[i + j] = (byte) (index < 128 ? index : -129 + (index - 127));
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ // For the final ones, fall back to the regular method
|
|
||||||
+ for (; i < in.length; i++) {
|
|
||||||
+ out[i] = MapPalette.matchColor(new Color(in[i], true));
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+}
|
|
||||||
diff --git a/src/main/java/org/bukkit/map/MapPalette.java b/src/main/java/org/bukkit/map/MapPalette.java
|
|
||||||
index 3a9aaca2e76411a9c27f9f5e0f22d060d5a66d06..9584e245144b561b4f6745b2f26a4f69a6f92891 100644
|
|
||||||
--- a/src/main/java/org/bukkit/map/MapPalette.java
|
|
||||||
+++ b/src/main/java/org/bukkit/map/MapPalette.java
|
|
||||||
@@ -1,6 +1,7 @@
|
|
||||||
package org.bukkit.map;
|
|
||||||
|
|
||||||
import com.google.common.base.Preconditions;
|
|
||||||
+import gg.pufferfish.pufferfish.simd.SIMDDetection; // Pufferfish
|
|
||||||
import java.awt.Color;
|
|
||||||
import java.awt.Graphics2D;
|
|
||||||
import java.awt.Image;
|
|
||||||
@@ -40,7 +41,7 @@ public final class MapPalette {
|
|
||||||
}
|
|
||||||
|
|
||||||
@NotNull
|
|
||||||
- static final Color[] colors = {
|
|
||||||
+ public static final Color[] colors = { // Pufferfish - public access
|
|
||||||
c(0, 0, 0, 0), c(0, 0, 0, 0), c(0, 0, 0, 0), c(0, 0, 0, 0),
|
|
||||||
c(89, 125, 39), c(109, 153, 48), c(127, 178, 56), c(67, 94, 29),
|
|
||||||
c(174, 164, 115), c(213, 201, 140), c(247, 233, 163), c(130, 123, 86),
|
|
||||||
@@ -211,9 +212,15 @@ public final class MapPalette {
|
|
||||||
temp.getRGB(0, 0, temp.getWidth(), temp.getHeight(), pixels, 0, temp.getWidth());
|
|
||||||
|
|
||||||
byte[] result = new byte[temp.getWidth() * temp.getHeight()];
|
|
||||||
+ // Pufferfish start
|
|
||||||
+ if (!SIMDDetection.isEnabled) {
|
|
||||||
for (int i = 0; i < pixels.length; i++) {
|
|
||||||
result[i] = matchColor(new Color(pixels[i], true));
|
|
||||||
}
|
|
||||||
+ } else {
|
|
||||||
+ gg.pufferfish.pufferfish.simd.VectorMapPalette.matchColorVectorized(pixels, result);
|
|
||||||
+ }
|
|
||||||
+ // Pufferfish end
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
diff --git a/src/main/java/org/bukkit/plugin/SimplePluginManager.java b/src/main/java/org/bukkit/plugin/SimplePluginManager.java
|
|
||||||
index fc2dae69165776d08274e34a69962cc70445f411..899d67fa782fac639fe7fb096e05c551d75bd647 100644
|
|
||||||
--- a/src/main/java/org/bukkit/plugin/SimplePluginManager.java
|
|
||||||
+++ b/src/main/java/org/bukkit/plugin/SimplePluginManager.java
|
|
||||||
@@ -584,7 +584,9 @@ public final class SimplePluginManager implements PluginManager {
|
|
||||||
|
|
||||||
// Paper start
|
|
||||||
private void handlePluginException(String msg, Throwable ex, Plugin plugin) {
|
|
||||||
+ gg.pufferfish.pufferfish.sentry.SentryContext.setPluginContext(plugin); // Pufferfish
|
|
||||||
server.getLogger().log(Level.SEVERE, msg, ex);
|
|
||||||
+ gg.pufferfish.pufferfish.sentry.SentryContext.removePluginContext(); // Pufferfish
|
|
||||||
callEvent(new com.destroystokyo.paper.event.server.ServerExceptionEvent(new com.destroystokyo.paper.exception.ServerPluginEnableDisableException(msg, ex, plugin)));
|
|
||||||
}
|
|
||||||
// Paper end
|
|
||||||
@@ -654,9 +656,11 @@ public final class SimplePluginManager implements PluginManager {
|
|
||||||
));
|
|
||||||
}
|
|
||||||
} catch (Throwable ex) {
|
|
||||||
+ gg.pufferfish.pufferfish.sentry.SentryContext.setEventContext(event, registration); // Pufferfish
|
|
||||||
// Paper start - error reporting
|
|
||||||
String msg = "Could not pass event " + event.getEventName() + " to " + registration.getPlugin().getDescription().getFullName();
|
|
||||||
server.getLogger().log(Level.SEVERE, msg, ex);
|
|
||||||
+ gg.pufferfish.pufferfish.sentry.SentryContext.removeEventContext(); // Pufferfish
|
|
||||||
if (!(event instanceof com.destroystokyo.paper.event.server.ServerExceptionEvent)) { // We don't want to cause an endless event loop
|
|
||||||
callEvent(new com.destroystokyo.paper.event.server.ServerExceptionEvent(new com.destroystokyo.paper.exception.ServerEventException(msg, ex, registration.getPlugin(), registration.getListener(), event)));
|
|
||||||
}
|
|
||||||
diff --git a/src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java b/src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java
|
|
||||||
index eaefbb00e9993d54906cc8cf35cf753c0d6c7707..301e82369603f3dd6e6c1bd380da4bacacd7ef6c 100644
|
|
||||||
--- a/src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java
|
|
||||||
+++ b/src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java
|
|
||||||
@@ -336,7 +336,13 @@ public final class JavaPluginLoader implements PluginLoader {
|
|
||||||
try {
|
|
||||||
jPlugin.setEnabled(true);
|
|
||||||
} catch (Throwable ex) {
|
|
||||||
+ gg.pufferfish.pufferfish.sentry.SentryContext.setPluginContext(plugin); // Pufferfish
|
|
||||||
server.getLogger().log(Level.SEVERE, "Error occurred while enabling " + plugin.getDescription().getFullName() + " (Is it up to date?)", ex);
|
|
||||||
+ gg.pufferfish.pufferfish.sentry.SentryContext.removePluginContext(); // Pufferfish
|
|
||||||
+ // Paper start - Disable plugins that fail to load
|
|
||||||
+ this.server.getPluginManager().disablePlugin(jPlugin);
|
|
||||||
+ return;
|
|
||||||
+ // Paper end
|
|
||||||
}
|
|
||||||
|
|
||||||
// Perhaps abort here, rather than continue going, but as it stands,
|
|
||||||
@@ -361,7 +367,9 @@ public final class JavaPluginLoader implements PluginLoader {
|
|
||||||
try {
|
|
||||||
jPlugin.setEnabled(false);
|
|
||||||
} catch (Throwable ex) {
|
|
||||||
+ gg.pufferfish.pufferfish.sentry.SentryContext.setPluginContext(plugin); // Pufferfish
|
|
||||||
server.getLogger().log(Level.SEVERE, "Error occurred while disabling " + plugin.getDescription().getFullName() + " (Is it up to date?)", ex);
|
|
||||||
+ gg.pufferfish.pufferfish.sentry.SentryContext.removePluginContext(); // Pufferfish
|
|
||||||
}
|
|
||||||
|
|
||||||
if (cloader instanceof PluginClassLoader) {
|
|
||||||
diff --git a/src/main/java/org/bukkit/plugin/java/PluginClassLoader.java b/src/main/java/org/bukkit/plugin/java/PluginClassLoader.java
|
|
||||||
index 13da387d3b59bc67c0d73e3fbd3a4034b1281527..7572a0bf6614b02be3cbccc7b86e52ee1b8df621 100644
|
|
||||||
--- a/src/main/java/org/bukkit/plugin/java/PluginClassLoader.java
|
|
||||||
+++ b/src/main/java/org/bukkit/plugin/java/PluginClassLoader.java
|
|
||||||
@@ -48,6 +48,8 @@ public final class PluginClassLoader extends URLClassLoader implements io.paperm
|
|
||||||
private io.papermc.paper.plugin.provider.classloader.PluginClassLoaderGroup classLoaderGroup; // Paper
|
|
||||||
public io.papermc.paper.plugin.provider.entrypoint.DependencyContext dependencyContext; // Paper
|
|
||||||
|
|
||||||
+ private boolean closed = false; // Pufferfish
|
|
||||||
+
|
|
||||||
static {
|
|
||||||
ClassLoader.registerAsParallelCapable();
|
|
||||||
}
|
|
||||||
@@ -183,6 +185,7 @@ public final class PluginClassLoader extends URLClassLoader implements io.paperm
|
|
||||||
throw new ClassNotFoundException(name);
|
|
||||||
}
|
|
||||||
|
|
||||||
+ public boolean _airplane_hasClass(@NotNull String name) { return this.classes.containsKey(name); } // Pufferfish
|
|
||||||
@Override
|
|
||||||
protected Class<?> findClass(String name) throws ClassNotFoundException {
|
|
||||||
if (name.startsWith("org.bukkit.") || name.startsWith("net.minecraft.")) {
|
|
||||||
@@ -190,7 +193,7 @@ public final class PluginClassLoader extends URLClassLoader implements io.paperm
|
|
||||||
}
|
|
||||||
Class<?> result = classes.get(name);
|
|
||||||
|
|
||||||
- if (result == null) {
|
|
||||||
+ if (result == null && !this.closed) { // Pufferfish
|
|
||||||
String path = name.replace('.', '/').concat(".class");
|
|
||||||
JarEntry entry = jar.getJarEntry(path);
|
|
||||||
|
|
||||||
@@ -237,6 +240,7 @@ public final class PluginClassLoader extends URLClassLoader implements io.paperm
|
|
||||||
this.setClass(name, result); // Paper
|
|
||||||
}
|
|
||||||
|
|
||||||
+ if (result == null) throw new ClassNotFoundException(name); // Pufferfish
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -251,6 +255,7 @@ public final class PluginClassLoader extends URLClassLoader implements io.paperm
|
|
||||||
// Paper end
|
|
||||||
super.close();
|
|
||||||
} finally {
|
|
||||||
+ this.closed = true; // Pufferfish
|
|
||||||
jar.close();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
File diff suppressed because it is too large
Load Diff
150
patches/api/0002-Use-Gradle-Version-Catalogs.patch
Normal file
150
patches/api/0002-Use-Gradle-Version-Catalogs.patch
Normal file
@@ -0,0 +1,150 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: AlphaKR93 <dev@alpha93.kr>
|
||||||
|
Date: Sun, 14 Jan 2024 19:50:29 +0900
|
||||||
|
Subject: [PATCH] Use Gradle Version Catalogs
|
||||||
|
|
||||||
|
|
||||||
|
diff --git a/build.gradle.kts b/build.gradle.kts
|
||||||
|
index 628ec6699d34c1877c02001de95096bc7b44120e..782a4c89b2f861f4c96718713ed2e4cd443084af 100644
|
||||||
|
--- a/build.gradle.kts
|
||||||
|
+++ b/build.gradle.kts
|
||||||
|
@@ -9,11 +9,13 @@ java {
|
||||||
|
withJavadocJar()
|
||||||
|
}
|
||||||
|
|
||||||
|
+/* // Plazma - Use Gradle Versuib Catalogs
|
||||||
|
val annotationsVersion = "24.1.0"
|
||||||
|
val bungeeCordChatVersion = "1.20-R0.2"
|
||||||
|
val adventureVersion = "4.17.0"
|
||||||
|
val slf4jVersion = "2.0.9"
|
||||||
|
val log4jVersion = "2.17.1"
|
||||||
|
+ */
|
||||||
|
val apiAndDocs: Configuration by configurations.creating {
|
||||||
|
attributes {
|
||||||
|
attribute(Category.CATEGORY_ATTRIBUTE, objects.named(Category.DOCUMENTATION))
|
||||||
|
@@ -27,57 +29,29 @@ configurations.api {
|
||||||
|
}
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
- api("com.mojang:brigadier:1.2.9") // Paper - Brigadier command api
|
||||||
|
- // api dependencies are listed transitively to API consumers
|
||||||
|
- api("com.google.guava:guava:32.1.2-jre")
|
||||||
|
- api("com.google.code.gson:gson:2.10.1")
|
||||||
|
- // Paper start - adventure
|
||||||
|
- api("net.md-5:bungeecord-chat:$bungeeCordChatVersion-deprecated+build.18") {
|
||||||
|
- exclude("com.google.guava", "guava")
|
||||||
|
- }
|
||||||
|
- // Paper - adventure
|
||||||
|
- api("org.yaml:snakeyaml:2.2")
|
||||||
|
- api("org.joml:joml:1.10.5")
|
||||||
|
- // Paper start
|
||||||
|
- api("com.googlecode.json-simple:json-simple:1.1.1") {
|
||||||
|
- isTransitive = false // includes junit
|
||||||
|
- }
|
||||||
|
- api("it.unimi.dsi:fastutil:8.5.6")
|
||||||
|
- apiAndDocs(platform("net.kyori:adventure-bom:$adventureVersion"))
|
||||||
|
- apiAndDocs("net.kyori:adventure-api")
|
||||||
|
- apiAndDocs("net.kyori:adventure-text-minimessage")
|
||||||
|
- apiAndDocs("net.kyori:adventure-text-serializer-gson")
|
||||||
|
- apiAndDocs("net.kyori:adventure-text-serializer-legacy")
|
||||||
|
- apiAndDocs("net.kyori:adventure-text-serializer-plain")
|
||||||
|
- apiAndDocs("net.kyori:adventure-text-logger-slf4j")
|
||||||
|
- api("org.apache.logging.log4j:log4j-api:$log4jVersion")
|
||||||
|
- api("org.slf4j:slf4j-api:$slf4jVersion")
|
||||||
|
- api("io.sentry:sentry:5.4.0") // Pufferfish
|
||||||
|
-
|
||||||
|
- implementation("org.ow2.asm:asm:9.7.1")
|
||||||
|
- implementation("org.ow2.asm:asm-commons:9.7.1")
|
||||||
|
- // Paper end
|
||||||
|
-
|
||||||
|
- api("org.apache.maven:maven-resolver-provider:3.9.6") // Paper - make API dependency for Paper Plugins
|
||||||
|
- compileOnly("org.apache.maven.resolver:maven-resolver-connector-basic:1.9.18")
|
||||||
|
- compileOnly("org.apache.maven.resolver:maven-resolver-transport-http:1.9.18")
|
||||||
|
-
|
||||||
|
- val annotations = "org.jetbrains:annotations:$annotationsVersion" // Paper - we don't want Java 5 annotations...
|
||||||
|
- compileOnly(annotations)
|
||||||
|
- testCompileOnly(annotations)
|
||||||
|
-
|
||||||
|
- // Paper start - add checker
|
||||||
|
- val checkerQual = "org.checkerframework:checker-qual:3.33.0"
|
||||||
|
- compileOnlyApi(checkerQual)
|
||||||
|
- testCompileOnly(checkerQual)
|
||||||
|
- // Paper end
|
||||||
|
- api("org.jspecify:jspecify:1.0.0") // Paper - add jspecify
|
||||||
|
-
|
||||||
|
- testImplementation("org.apache.commons:commons-lang3:3.12.0")
|
||||||
|
- testImplementation("org.junit.jupiter:junit-jupiter:5.10.2")
|
||||||
|
- testImplementation("org.hamcrest:hamcrest:2.2")
|
||||||
|
- testImplementation("org.mockito:mockito-core:5.14.1")
|
||||||
|
- testImplementation("org.ow2.asm:asm-tree:9.7.1")
|
||||||
|
+ // Plazma start - Use Gradle Version Catalogs
|
||||||
|
+ implementation(common.bundles.asm)
|
||||||
|
+
|
||||||
|
+ api(api.bundles.api)
|
||||||
|
+ api(common.snakeyaml)
|
||||||
|
+ api(common.log4j.api)
|
||||||
|
+ api(common.maven.provider)
|
||||||
|
+ api(api.jsonsimple) { isTransitive = false }
|
||||||
|
+ api(api.bungeechat) { exclude("com.google.guava", "guava") }
|
||||||
|
+ apiAndDocs(platform(common.adventure.bom))
|
||||||
|
+ apiAndDocs(common.bundles.adventure)
|
||||||
|
+
|
||||||
|
+ compileOnly(common.bundles.maven)
|
||||||
|
+ compileOnly(api.annotations)
|
||||||
|
+ compileOnlyApi(api.checkerqual)
|
||||||
|
+
|
||||||
|
+ testImplementation(common.asm.tree)
|
||||||
|
+ testImplementation(common.commons.lang3)
|
||||||
|
+ testImplementation(common.bundles.test)
|
||||||
|
+
|
||||||
|
+ testCompileOnly(api.annotations)
|
||||||
|
+ testCompileOnly(api.checkerqual)
|
||||||
|
+ // Plazma end
|
||||||
|
}
|
||||||
|
|
||||||
|
// Paper start
|
||||||
|
@@ -162,27 +136,24 @@ tasks.withType<Javadoc> {
|
||||||
|
options.use()
|
||||||
|
options.isDocFilesSubDirs = true
|
||||||
|
options.links(
|
||||||
|
- "https://guava.dev/releases/32.1.2-jre/api/docs/",
|
||||||
|
- "https://javadoc.io/doc/org.yaml/snakeyaml/2.2/",
|
||||||
|
- "https://javadoc.io/doc/org.jetbrains/annotations/$annotationsVersion/", // Paper - we don't want Java 5 annotations
|
||||||
|
- // "https://javadoc.io/doc/net.md-5/bungeecord-chat/$bungeeCordChatVersion/", // Paper - don't link to bungee chat
|
||||||
|
- // Paper start - add missing javadoc links
|
||||||
|
- "https://javadoc.io/doc/org.joml/joml/1.10.5/index.html",
|
||||||
|
- "https://www.javadoc.io/doc/com.google.code.gson/gson/2.10.1",
|
||||||
|
"https://jspecify.dev/docs/api/",
|
||||||
|
- // Paper end
|
||||||
|
- // Paper start
|
||||||
|
- "https://jd.advntr.dev/api/$adventureVersion/",
|
||||||
|
- "https://jd.advntr.dev/key/$adventureVersion/",
|
||||||
|
- "https://jd.advntr.dev/text-minimessage/$adventureVersion/",
|
||||||
|
- "https://jd.advntr.dev/text-serializer-gson/$adventureVersion/",
|
||||||
|
- "https://jd.advntr.dev/text-serializer-legacy/$adventureVersion/",
|
||||||
|
- "https://jd.advntr.dev/text-serializer-plain/$adventureVersion/",
|
||||||
|
- "https://jd.advntr.dev/text-logger-slf4j/$adventureVersion/",
|
||||||
|
- "https://javadoc.io/doc/org.slf4j/slf4j-api/$slf4jVersion/",
|
||||||
|
- "https://javadoc.io/doc/org.apache.logging.log4j/log4j-api/$log4jVersion/",
|
||||||
|
- // Paper end
|
||||||
|
- "https://javadoc.io/doc/org.apache.maven.resolver/maven-resolver-api/1.7.3", // Paper
|
||||||
|
+ // Plazma start - Use Gradle Version Catalogs
|
||||||
|
+ "https://jd.advntr.dev/api/${common.adventure.api.orNull?.version}/",
|
||||||
|
+ "https://jd.advntr.dev/key/${common.adventure.api.orNull?.version}/",
|
||||||
|
+ "https://jd.advntr.dev/text-minimessage/${common.adventure.api.orNull?.version}/",
|
||||||
|
+ "https://jd.advntr.dev/text-serializer-gson/${common.adventure.api.orNull?.version}/",
|
||||||
|
+ "https://jd.advntr.dev/text-serializer-legacy/${common.adventure.api.orNull?.version}/",
|
||||||
|
+ "https://jd.advntr.dev/text-serializer-plain/${common.adventure.api.orNull?.version}/",
|
||||||
|
+ "https://jd.advntr.dev/text-logger-slf4j/${common.adventure.api.orNull?.version}/",
|
||||||
|
+ "https://guava.dev/releases/${api.guava.orNull?.version}/api/docs/",
|
||||||
|
+ "https://javadoc.io/doc/org.yaml/snakeyaml/${common.snakeyaml.orNull?.version}/",
|
||||||
|
+ "https://javadoc.io/doc/org.jetbrains/annotations/${api.annotations.orNull?.version}/",
|
||||||
|
+ "https://javadoc.io/doc/org.joml/joml/${api.joml.orNull?.version}/index.html",
|
||||||
|
+ "https://www.javadoc.io/doc/com.google.code.gson/gson/${api.gson.orNull?.version}",
|
||||||
|
+ "https://javadoc.io/doc/org.slf4j/slf4j-api/${api.slf4j.api.orNull?.version}/",
|
||||||
|
+ "https://javadoc.io/doc/org.apache.logging.log4j/log4j-api/${common.log4j.api.orNull?.version}/",
|
||||||
|
+ "https://javadoc.io/doc/org.apache.maven.resolver/maven-resolver-api/${common.maven.connector.orNull?.version}",
|
||||||
|
+ // Plazma end
|
||||||
|
)
|
||||||
|
options.tags("apiNote:a:API Note:")
|
||||||
|
|
||||||
93
patches/api/0003-Fork-friendly-Rebranding.patch
Normal file
93
patches/api/0003-Fork-friendly-Rebranding.patch
Normal file
@@ -0,0 +1,93 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: AlphaKR93 <dev@alpha93.kr>
|
||||||
|
Date: Tue, 14 May 2024 18:36:30 +0900
|
||||||
|
Subject: [PATCH] Fork-friendly Rebranding
|
||||||
|
|
||||||
|
|
||||||
|
diff --git a/src/main/java/co/aikar/timings/TimingHandler.java b/src/main/java/co/aikar/timings/TimingHandler.java
|
||||||
|
index 199789d56d22fcb1b77ebd56805cc28aa5a5ab0a..41d10421e1e79711e2e90ff2dc225bfd9cac9284 100644
|
||||||
|
--- a/src/main/java/co/aikar/timings/TimingHandler.java
|
||||||
|
+++ b/src/main/java/co/aikar/timings/TimingHandler.java
|
||||||
|
@@ -127,7 +127,7 @@ class TimingHandler implements Timing {
|
||||||
|
while ((last = TIMING_STACK.removeLast()) != this) {
|
||||||
|
last.timingDepth = 0;
|
||||||
|
if ("Minecraft".equalsIgnoreCase(last.identifier.group)) {
|
||||||
|
- Logger.getGlobal().log(Level.SEVERE, "TIMING_STACK_CORRUPTION - Look above this for any errors and report this to Paper unless it has a plugin in the stack trace (" + last.identifier + " did not stopTiming)");
|
||||||
|
+ Logger.getGlobal().log(Level.SEVERE, "TIMING_STACK_CORRUPTION - Look above this for any errors and report this to " + io.papermc.paper.ServerBuildInfo.buildInfo().brandName() + " unless it has a plugin in the stack trace (" + last.identifier + " did not stopTiming)"); // Plazma - Fork-friendly Rebranding
|
||||||
|
} else {
|
||||||
|
Logger.getGlobal().log(Level.SEVERE, "TIMING_STACK_CORRUPTION - Report this to the plugin " + last.identifier.group + " (Look for errors above this in the logs) (" + last.identifier + " did not stopTiming)", new Throwable());
|
||||||
|
}
|
||||||
|
diff --git a/src/main/java/io/papermc/paper/ServerBuildInfo.java b/src/main/java/io/papermc/paper/ServerBuildInfo.java
|
||||||
|
index 7196594e07af19a14c320d77df893978525fe386..6ac3376f12df2ee3e0519ab8b5a0c8211350e550 100644
|
||||||
|
--- a/src/main/java/io/papermc/paper/ServerBuildInfo.java
|
||||||
|
+++ b/src/main/java/io/papermc/paper/ServerBuildInfo.java
|
||||||
|
@@ -33,6 +33,29 @@ public interface ServerBuildInfo {
|
||||||
|
Key BRAND_PURPUR_ID = Key.key("purpurmc", "purpur");
|
||||||
|
// Purpur end
|
||||||
|
|
||||||
|
+ // Plazma start - Fork-friendly Rebranding
|
||||||
|
+ /**
|
||||||
|
+ * The brand id for Plazma.
|
||||||
|
+ */
|
||||||
|
+ Key BRAND_PLAZMA_ID = Key.key("plazmamc", "plazma");
|
||||||
|
+
|
||||||
|
+ // For those who fork Plazma - please add the new branding key here
|
||||||
|
+
|
||||||
|
+ /**
|
||||||
|
+ * The brand id of the server.
|
||||||
|
+ */
|
||||||
|
+ Key BRAND_ID = BRAND_PLAZMA_ID;
|
||||||
|
+
|
||||||
|
+ /**
|
||||||
|
+ * Supported brands of the server.
|
||||||
|
+ */
|
||||||
|
+ java.util.List<Key> SUPPORTED_BRANDS = java.util.Arrays.asList(
|
||||||
|
+ BRAND_PAPER_ID,
|
||||||
|
+ BRAND_PURPUR_ID,
|
||||||
|
+ BRAND_PLAZMA_ID
|
||||||
|
+ );
|
||||||
|
+ // Plazma end - Fork-friendly Rebranding
|
||||||
|
+
|
||||||
|
/**
|
||||||
|
* Gets the {@code ServerBuildInfo}.
|
||||||
|
*
|
||||||
|
diff --git a/src/main/java/org/bukkit/command/defaults/VersionCommand.java b/src/main/java/org/bukkit/command/defaults/VersionCommand.java
|
||||||
|
index c880d0010849ab733ad13bbd18fab3c864d0cf61..316317222a137c2781b9b0c38948912e9dd08c76 100644
|
||||||
|
--- a/src/main/java/org/bukkit/command/defaults/VersionCommand.java
|
||||||
|
+++ b/src/main/java/org/bukkit/command/defaults/VersionCommand.java
|
||||||
|
@@ -259,7 +259,7 @@ public class VersionCommand extends BukkitCommand {
|
||||||
|
// Purpur start
|
||||||
|
int distance = getVersionFetcher().distance();
|
||||||
|
final Component message = Component.join(net.kyori.adventure.text.JoinConfiguration.separator(Component.newline()),
|
||||||
|
- ChatColor.parseMM("<grey>Current Purpur Version: %s%s*", distance == 0 ? "<green>" : distance > 0 ? "<yellow>" : "<red>", Bukkit.getVersion()),
|
||||||
|
+ ChatColor.parseMM("<grey>Current " + io.papermc.paper.ServerBuildInfo.buildInfo().brandName() + " Version: %s%s*", distance == 0 ? "<green>" : distance > 0 ? "<yellow>" : "<red>", Bukkit.getVersion()), // Plazma - Fork-friendly Rebranding
|
||||||
|
// Purpur end
|
||||||
|
msg
|
||||||
|
);
|
||||||
|
@@ -282,6 +282,7 @@ public class VersionCommand extends BukkitCommand {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
+ /* // Plazma - Fork-friendly Rebranding
|
||||||
|
private static int getDistance(@NotNull String repo, @NotNull String hash) {
|
||||||
|
try {
|
||||||
|
BufferedReader reader = Resources.asCharSource(
|
||||||
|
@@ -302,4 +303,5 @@ public class VersionCommand extends BukkitCommand {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
+ */ // Plazma - Fork-friendly Rebranding
|
||||||
|
}
|
||||||
|
diff --git a/src/main/java/org/bukkit/plugin/EventExecutor.java b/src/main/java/org/bukkit/plugin/EventExecutor.java
|
||||||
|
index 60e086be70529e0804280b24a2a3e7ae72d8d363..dcf1d53af919e94a6947bc3f81121bd4fad1a163 100644
|
||||||
|
--- a/src/main/java/org/bukkit/plugin/EventExecutor.java
|
||||||
|
+++ b/src/main/java/org/bukkit/plugin/EventExecutor.java
|
||||||
|
@@ -54,7 +54,7 @@ public interface EventExecutor {
|
||||||
|
if (m.getReturnType() != Void.TYPE) {
|
||||||
|
final org.bukkit.plugin.java.JavaPlugin plugin = org.bukkit.plugin.java.JavaPlugin.getProvidingPlugin(m.getDeclaringClass());
|
||||||
|
org.bukkit.Bukkit.getLogger().warning("@EventHandler method " + m.getDeclaringClass().getName() + (Modifier.isStatic(m.getModifiers()) ? '.' : '#') + m.getName()
|
||||||
|
- + " returns non-void type " + m.getReturnType().getName() + ". This is unsupported behavior and will no longer work in a future version of Paper."
|
||||||
|
+ + " returns non-void type " + m.getReturnType().getName() + ". This is unsupported behavior and will no longer work in a future version of " + io.papermc.paper.ServerBuildInfo.buildInfo().brandName() + "." // Plazma - Fork-friendly Rebranding
|
||||||
|
+ " This should be reported to the developers of " + plugin.getPluginMeta().getDisplayName() + " (" + String.join(",", plugin.getPluginMeta().getAuthors()) + ')');
|
||||||
|
}
|
||||||
|
if (Modifier.isStatic(m.getModifiers())) {
|
||||||
@@ -5,20 +5,20 @@ Subject: [PATCH] Plazma Configurations
|
|||||||
|
|
||||||
|
|
||||||
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 aaef58468a3c31f35e5067ed4263e9dd3fbddddd..0852f1a18106a81a60726756aae1d9c2ba30b111 100644
|
index eb29794f6ca2efc9cde4dd1685822f9a3a73f3b9..d84c788fe1183833c86cde0ba8e174418cede950 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
|
||||||
@@ -2121,6 +2121,13 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi
|
@@ -2277,6 +2277,13 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi
|
||||||
}
|
}
|
||||||
// Paper end
|
// Purpur end
|
||||||
|
|
||||||
+ // Plazma start
|
+ // Plazma start - Plazma Configuration API
|
||||||
+ @NotNull
|
+ @NotNull
|
||||||
+ public org.bukkit.configuration.file.YamlConfiguration getPlazmaConfiguration() {
|
+ public org.bukkit.configuration.file.YamlConfiguration getPlazmaConfig() {
|
||||||
+ throw new UnsupportedOperationException("Not supported yet.");
|
+ throw new UnsupportedOperationException("Not supported yet.");
|
||||||
+ }
|
+ }
|
||||||
+ // Plazma end
|
+ // Plazma end
|
||||||
+
|
+
|
||||||
// Purpur start
|
/**
|
||||||
@NotNull
|
* Sends the component to the player
|
||||||
public org.bukkit.configuration.file.YamlConfiguration getPurpurConfig() {
|
*
|
||||||
@@ -1,34 +0,0 @@
|
|||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: IPECTER <ipectert@gmail.com>
|
|
||||||
Date: Mon, 19 Jun 2023 18:19:50 +0900
|
|
||||||
Subject: [PATCH] Publish-Packages
|
|
||||||
|
|
||||||
|
|
||||||
diff --git a/build.gradle.kts b/build.gradle.kts
|
|
||||||
index dfb989a18ab17fec3b8f0cf90ce2fc1048215265..bfcb6cf6cf29fec6e22a89cc6045c7030262bb1c 100644
|
|
||||||
--- a/build.gradle.kts
|
|
||||||
+++ b/build.gradle.kts
|
|
||||||
@@ -168,3 +168,22 @@ tasks.check {
|
|
||||||
dependsOn(scanJar)
|
|
||||||
}
|
|
||||||
// Paper end
|
|
||||||
+// Plazma start
|
|
||||||
+publishing {
|
|
||||||
+ repositories {
|
|
||||||
+ maven {
|
|
||||||
+ name = "githubPackage"
|
|
||||||
+ url = uri("https://maven.pkg.github.com/PlazmaMC/Plazma")
|
|
||||||
+
|
|
||||||
+ credentials.username = System.getenv("GITHUB_USERNAME")
|
|
||||||
+ credentials.password = System.getenv("GITHUB_TOKEN")
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ publications {
|
|
||||||
+ register<MavenPublication>("gpr") {
|
|
||||||
+ from(components["java"])
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+}
|
|
||||||
+// Plazma end
|
|
||||||
\ No newline at end of file
|
|
||||||
26
patches/api/0005-Various-API-Tweaks.patch
Normal file
26
patches/api/0005-Various-API-Tweaks.patch
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: AlphaKR93 <dev@alpha93.kr>
|
||||||
|
Date: Mon, 6 May 2024 20:43:37 +0900
|
||||||
|
Subject: [PATCH] Various API Tweaks
|
||||||
|
|
||||||
|
|
||||||
|
diff --git a/src/main/java/com/destroystokyo/paper/MaterialTags.java b/src/main/java/com/destroystokyo/paper/MaterialTags.java
|
||||||
|
index 41eaa8159f8c028faa118300e95f6a0fb9cfe989..76a5381a959ae4e153dba291a362f3d58aeceac9 100644
|
||||||
|
--- a/src/main/java/com/destroystokyo/paper/MaterialTags.java
|
||||||
|
+++ b/src/main/java/com/destroystokyo/paper/MaterialTags.java
|
||||||
|
@@ -584,6 +584,15 @@ public class MaterialTags {
|
||||||
|
.add(material -> material.name().startsWith("DEEPSLATE_") && material.name().endsWith("_ORE"))
|
||||||
|
.ensureSize("DEEPSLATE_ORES", 8).lock();
|
||||||
|
|
||||||
|
+ // Plazma start - Various API Tweaks
|
||||||
|
+ /**
|
||||||
|
+ * Covers the variants of stone ores.
|
||||||
|
+ */
|
||||||
|
+ public static final MaterialSetTag STONE_ORES = new MaterialSetTag(keyFor("stone_ores"))
|
||||||
|
+ .add(material -> !material.name().startsWith("DEEPSLATE_") && !material.name().startsWith("NETHER_") && material.name().endsWith("_ORE"))
|
||||||
|
+ .ensureSize("STONE_ORES", 8).lock();
|
||||||
|
+ // Plazma end - Various API Tweaks
|
||||||
|
+
|
||||||
|
/**
|
||||||
|
* Covers the variants of raw ore blocks.
|
||||||
|
*/
|
||||||
2520
patches/api/0006-Completely-remove-timings-implementations.patch
Normal file
2520
patches/api/0006-Completely-remove-timings-implementations.patch
Normal file
File diff suppressed because it is too large
Load Diff
342
patches/api/0007-Reduce-allocations.patch
Normal file
342
patches/api/0007-Reduce-allocations.patch
Normal file
@@ -0,0 +1,342 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: AlphaKR93 <dev@alpha93.kr>
|
||||||
|
Date: Mon, 4 Nov 2024 16:04:55 +0900
|
||||||
|
Subject: [PATCH] Reduce allocations
|
||||||
|
|
||||||
|
|
||||||
|
diff --git a/src/main/java/io/papermc/paper/command/brigadier/BasicCommand.java b/src/main/java/io/papermc/paper/command/brigadier/BasicCommand.java
|
||||||
|
index c89d6c4c38e2390cb11ffba182f8741d3726cfd1..2451f466ae6f953b01ad2cbaeac7d163f09f1c5c 100644
|
||||||
|
--- a/src/main/java/io/papermc/paper/command/brigadier/BasicCommand.java
|
||||||
|
+++ b/src/main/java/io/papermc/paper/command/brigadier/BasicCommand.java
|
||||||
|
@@ -16,6 +16,17 @@ import org.jspecify.annotations.Nullable;
|
||||||
|
@FunctionalInterface
|
||||||
|
public interface BasicCommand {
|
||||||
|
|
||||||
|
+ // Plazma start - Reduce allocations
|
||||||
|
+ /**
|
||||||
|
+ * Executes the command with the given {@link CommandSourceStack} and arguments.
|
||||||
|
+ *
|
||||||
|
+ * @param commandSourceStack the commandSourceStack of the command
|
||||||
|
+ */
|
||||||
|
+ default void execute(CommandSourceStack commandSourceStack) {
|
||||||
|
+ this.execute(commandSourceStack, org.plazmamc.plazma.constants.Null.STRING);
|
||||||
|
+ }
|
||||||
|
+ // Plazma end - Reduce allocations
|
||||||
|
+
|
||||||
|
/**
|
||||||
|
* Executes the command with the given {@link CommandSourceStack} and arguments.
|
||||||
|
*
|
||||||
|
diff --git a/src/main/java/org/bukkit/Fluid.java b/src/main/java/org/bukkit/Fluid.java
|
||||||
|
index a3ff4fefaf50f3e99a69ba68cbe8e30c95dac5df..284b351e3628bf278afb43cc6f6bdf1e6b295366 100644
|
||||||
|
--- a/src/main/java/org/bukkit/Fluid.java
|
||||||
|
+++ b/src/main/java/org/bukkit/Fluid.java
|
||||||
|
@@ -10,6 +10,7 @@ import org.jetbrains.annotations.NotNull;
|
||||||
|
* Represents a fluid type.
|
||||||
|
*/
|
||||||
|
public interface Fluid extends OldEnum<Fluid>, Keyed {
|
||||||
|
+ Fluid[] EMPTY_ARRAY = new Fluid[0]; // Plazma - Reduce allocations
|
||||||
|
|
||||||
|
/**
|
||||||
|
* No fluid.
|
||||||
|
@@ -57,6 +58,6 @@ public interface Fluid extends OldEnum<Fluid>, Keyed {
|
||||||
|
@NotNull
|
||||||
|
@Deprecated(since = "1.21.3", forRemoval = true) @org.jetbrains.annotations.ApiStatus.ScheduledForRemoval(inVersion = "1.22") // Paper - will be removed via asm-utils
|
||||||
|
static Fluid[] values() {
|
||||||
|
- return Lists.newArrayList(Registry.FLUID).toArray(new Fluid[0]);
|
||||||
|
+ return Lists.newArrayList(Registry.FLUID).toArray(EMPTY_ARRAY); // Plazma - Reduce allocations
|
||||||
|
}
|
||||||
|
}
|
||||||
|
diff --git a/src/main/java/org/bukkit/attribute/Attribute.java b/src/main/java/org/bukkit/attribute/Attribute.java
|
||||||
|
index 521f035409ee61a9ad73d39bec938f2938892570..4ca383b167326a2ccc21b2435eb96ff41c49cc31 100644
|
||||||
|
--- a/src/main/java/org/bukkit/attribute/Attribute.java
|
||||||
|
+++ b/src/main/java/org/bukkit/attribute/Attribute.java
|
||||||
|
@@ -15,6 +15,7 @@ import org.jetbrains.annotations.NotNull;
|
||||||
|
* Types of attributes which may be present on an {@link Attributable}.
|
||||||
|
*/
|
||||||
|
public interface Attribute extends OldEnum<Attribute>, Keyed, Translatable, net.kyori.adventure.translation.Translatable { // Paper - Adventure translations
|
||||||
|
+ Attribute[] EMPTY_ARRAY = new Attribute[0]; // Plazma - Reduce allocations
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Maximum health of an Entity.
|
||||||
|
@@ -170,6 +171,6 @@ public interface Attribute extends OldEnum<Attribute>, Keyed, Translatable, net.
|
||||||
|
@NotNull
|
||||||
|
@Deprecated(since = "1.21.3", forRemoval = true) @org.jetbrains.annotations.ApiStatus.ScheduledForRemoval(inVersion = "1.22") // Paper - will be removed via asm-utils
|
||||||
|
static Attribute[] values() {
|
||||||
|
- return Lists.newArrayList(Registry.ATTRIBUTE).toArray(new Attribute[0]);
|
||||||
|
+ return Lists.newArrayList(Registry.ATTRIBUTE).toArray(EMPTY_ARRAY); // Plazma - Reduce allocations
|
||||||
|
}
|
||||||
|
}
|
||||||
|
diff --git a/src/main/java/org/bukkit/block/Biome.java b/src/main/java/org/bukkit/block/Biome.java
|
||||||
|
index 464f8f81ba907a61588e4ab869e4f8269830195a..c5f1cc1660c69dfd827344cbafee08005121fb62 100644
|
||||||
|
--- a/src/main/java/org/bukkit/block/Biome.java
|
||||||
|
+++ b/src/main/java/org/bukkit/block/Biome.java
|
||||||
|
@@ -23,6 +23,7 @@ import org.jetbrains.annotations.NotNull;
|
||||||
|
* which can be accessed via {@link Registry#BIOME}.
|
||||||
|
*/
|
||||||
|
public interface Biome extends OldEnum<Biome>, Keyed, net.kyori.adventure.translation.Translatable { // Paper - Adventure translations
|
||||||
|
+ Biome[] EMPTY_ARRAY = new Biome[0]; // Plazma - Reduce allocations
|
||||||
|
|
||||||
|
Biome OCEAN = getBiome("ocean");
|
||||||
|
Biome PLAINS = getBiome("plains");
|
||||||
|
@@ -129,7 +130,7 @@ public interface Biome extends OldEnum<Biome>, Keyed, net.kyori.adventure.transl
|
||||||
|
@NotNull
|
||||||
|
@Deprecated(since = "1.21.3", forRemoval = true) @org.jetbrains.annotations.ApiStatus.ScheduledForRemoval(inVersion = "1.22") // Paper - will be removed via asm-utils
|
||||||
|
static Biome[] values() {
|
||||||
|
- return Lists.newArrayList(Registry.BIOME).toArray(new Biome[0]);
|
||||||
|
+ return Lists.newArrayList(Registry.BIOME).toArray(EMPTY_ARRAY); // Plazma - Reduce allocations
|
||||||
|
}
|
||||||
|
|
||||||
|
// Paper start
|
||||||
|
diff --git a/src/main/java/org/bukkit/block/banner/PatternType.java b/src/main/java/org/bukkit/block/banner/PatternType.java
|
||||||
|
index 70904d6c43b93cb7b9d74d20666fac93a6b4996c..ce88fc3594a6b5e85009707e1319f7f87524dd5f 100644
|
||||||
|
--- a/src/main/java/org/bukkit/block/banner/PatternType.java
|
||||||
|
+++ b/src/main/java/org/bukkit/block/banner/PatternType.java
|
||||||
|
@@ -12,6 +12,8 @@ import org.jetbrains.annotations.NotNull;
|
||||||
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
|
public interface PatternType extends OldEnum<PatternType>, Keyed {
|
||||||
|
+ PatternType[] EMPTY_ARRAY = new PatternType[0]; // Plazma - Reduce allocations
|
||||||
|
+
|
||||||
|
PatternType BASE = getType("base");
|
||||||
|
PatternType SQUARE_BOTTOM_LEFT = getType("square_bottom_left");
|
||||||
|
PatternType SQUARE_BOTTOM_RIGHT = getType("square_bottom_right");
|
||||||
|
@@ -130,6 +132,6 @@ public interface PatternType extends OldEnum<PatternType>, Keyed {
|
||||||
|
@NotNull
|
||||||
|
@Deprecated(since = "1.21", forRemoval = true) @org.jetbrains.annotations.ApiStatus.ScheduledForRemoval(inVersion = "1.22") // Paper - will be removed via asm-utils
|
||||||
|
static PatternType[] values() {
|
||||||
|
- return Lists.newArrayList(Registry.BANNER_PATTERN).toArray(new PatternType[0]);
|
||||||
|
+ return Lists.newArrayList(Registry.BANNER_PATTERN).toArray(EMPTY_ARRAY); // Plazma - Reduce allocations
|
||||||
|
}
|
||||||
|
}
|
||||||
|
diff --git a/src/main/java/org/bukkit/command/Command.java b/src/main/java/org/bukkit/command/Command.java
|
||||||
|
index 0a26fffe9b1e5080b5639767a03af11006108b4a..bcd12e352d8846826a678ff72742fc7038daf812 100644
|
||||||
|
--- a/src/main/java/org/bukkit/command/Command.java
|
||||||
|
+++ b/src/main/java/org/bukkit/command/Command.java
|
||||||
|
@@ -58,6 +58,19 @@ public abstract class Command {
|
||||||
|
this.activeAliases = new ArrayList<String>(aliases);
|
||||||
|
}
|
||||||
|
|
||||||
|
+ // Plazma start - Reduce allocations
|
||||||
|
+ /**
|
||||||
|
+ * Executes the command, returning its success
|
||||||
|
+ *
|
||||||
|
+ * @param sender Source object which is executing this command
|
||||||
|
+ * @param commandLabel The alias of the command used
|
||||||
|
+ * @return true if the command was successful, otherwise false
|
||||||
|
+ */
|
||||||
|
+ public boolean execute(@NotNull CommandSender sender, @NotNull String commandLabel) {
|
||||||
|
+ return this.execute(sender, commandLabel, org.plazmamc.plazma.constants.Null.STRING);
|
||||||
|
+ }
|
||||||
|
+ // Plazma end - Reduce allocations
|
||||||
|
+
|
||||||
|
/**
|
||||||
|
* Executes the command, returning its success
|
||||||
|
*
|
||||||
|
diff --git a/src/main/java/org/bukkit/enchantments/Enchantment.java b/src/main/java/org/bukkit/enchantments/Enchantment.java
|
||||||
|
index 43e306584988e39a6daca78c621a937acdce48a1..ec6dc4747c8bcdca1cf866ba135fb772e79a73d1 100644
|
||||||
|
--- a/src/main/java/org/bukkit/enchantments/Enchantment.java
|
||||||
|
+++ b/src/main/java/org/bukkit/enchantments/Enchantment.java
|
||||||
|
@@ -15,6 +15,8 @@ import org.jetbrains.annotations.Nullable;
|
||||||
|
* The various type of enchantments that may be added to armour or weapons
|
||||||
|
*/
|
||||||
|
public abstract class Enchantment implements Keyed, Translatable, net.kyori.adventure.translation.Translatable { // Paper - Adventure translations
|
||||||
|
+ private static final Enchantment[] EMPTY_ARRAY = new Enchantment[0]; // Plazma - Reduce allocations
|
||||||
|
+
|
||||||
|
/**
|
||||||
|
* Provides protection against environmental damage
|
||||||
|
*/
|
||||||
|
@@ -536,6 +538,6 @@ public abstract class Enchantment implements Keyed, Translatable, net.kyori.adve
|
||||||
|
@NotNull
|
||||||
|
@Deprecated
|
||||||
|
public static Enchantment[] values() {
|
||||||
|
- return Lists.newArrayList(Registry.ENCHANTMENT).toArray(new Enchantment[0]);
|
||||||
|
+ return Lists.newArrayList(Registry.ENCHANTMENT).toArray(EMPTY_ARRAY); // Plazma - Reduce allocations
|
||||||
|
}
|
||||||
|
}
|
||||||
|
diff --git a/src/main/java/org/bukkit/entity/Cat.java b/src/main/java/org/bukkit/entity/Cat.java
|
||||||
|
index fca4671c6976aee9e981ef344244f9322651d0c9..ef53ca228492434b1b8bc615a33690bb93dec72b 100644
|
||||||
|
--- a/src/main/java/org/bukkit/entity/Cat.java
|
||||||
|
+++ b/src/main/java/org/bukkit/entity/Cat.java
|
||||||
|
@@ -51,6 +51,7 @@ public interface Cat extends Tameable, Sittable, io.papermc.paper.entity.CollarC
|
||||||
|
* Represents the various different cat types there are.
|
||||||
|
*/
|
||||||
|
interface Type extends OldEnum<Type>, Keyed {
|
||||||
|
+ Type[] EMPTY_ARRAY = new Type[0]; // Plazma - Reduce allocations
|
||||||
|
|
||||||
|
Type TABBY = getType("tabby");
|
||||||
|
Type BLACK = getType("black");
|
||||||
|
@@ -89,7 +90,7 @@ public interface Cat extends Tameable, Sittable, io.papermc.paper.entity.CollarC
|
||||||
|
@NotNull
|
||||||
|
@Deprecated(since = "1.21", forRemoval = true) @org.jetbrains.annotations.ApiStatus.ScheduledForRemoval(inVersion = "1.22") // Paper - will be removed via asm-utils
|
||||||
|
static Type[] values() {
|
||||||
|
- return Lists.newArrayList(Registry.CAT_VARIANT).toArray(new Type[0]);
|
||||||
|
+ return Lists.newArrayList(Registry.CAT_VARIANT).toArray(EMPTY_ARRAY); // Plazma - Reduce allocations
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
diff --git a/src/main/java/org/bukkit/entity/Frog.java b/src/main/java/org/bukkit/entity/Frog.java
|
||||||
|
index f661a6b4797dd814a197e9245bcb2ddf2fca773f..6b3c10d378e9e80805d8cd2d8671b313bddd23e9 100644
|
||||||
|
--- a/src/main/java/org/bukkit/entity/Frog.java
|
||||||
|
+++ b/src/main/java/org/bukkit/entity/Frog.java
|
||||||
|
@@ -49,6 +49,7 @@ public interface Frog extends Animals {
|
||||||
|
* Represents the variant of a frog - ie its color.
|
||||||
|
*/
|
||||||
|
interface Variant extends OldEnum<Variant>, Keyed {
|
||||||
|
+ Variant[] EMPTY_ARRAY = new Variant[0]; // Plazma - Reduce allocations
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Temperate (brown-orange) frog.
|
||||||
|
@@ -88,7 +89,7 @@ public interface Frog extends Animals {
|
||||||
|
@NotNull
|
||||||
|
@Deprecated(since = "1.21", forRemoval = true) @org.jetbrains.annotations.ApiStatus.ScheduledForRemoval(inVersion = "1.22") // Paper - will be removed via asm-utils
|
||||||
|
static Variant[] values() {
|
||||||
|
- return Lists.newArrayList(Registry.FROG_VARIANT).toArray(new Variant[0]);
|
||||||
|
+ return Lists.newArrayList(Registry.FROG_VARIANT).toArray(EMPTY_ARRAY); // Plazma - Reduce allocations
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
diff --git a/src/main/java/org/bukkit/entity/Villager.java b/src/main/java/org/bukkit/entity/Villager.java
|
||||||
|
index 9c722a762c88a88bb5ef18c3b9eab8b371360dac..87c3e94a2b5e9205a9ad13a920ed7b9dfba03340 100644
|
||||||
|
--- a/src/main/java/org/bukkit/entity/Villager.java
|
||||||
|
+++ b/src/main/java/org/bukkit/entity/Villager.java
|
||||||
|
@@ -170,6 +170,7 @@ public interface Villager extends AbstractVillager {
|
||||||
|
* in.
|
||||||
|
*/
|
||||||
|
interface Type extends OldEnum<Type>, Keyed {
|
||||||
|
+ Type[] EMPTY_ARRAY = new Type[0]; // Plazma - Reduce allocations
|
||||||
|
|
||||||
|
Type DESERT = getType("desert");
|
||||||
|
Type JUNGLE = getType("jungle");
|
||||||
|
@@ -204,7 +205,7 @@ public interface Villager extends AbstractVillager {
|
||||||
|
@NotNull
|
||||||
|
@Deprecated(since = "1.21", forRemoval = true) @org.jetbrains.annotations.ApiStatus.ScheduledForRemoval(inVersion = "1.22") // Paper - will be removed via asm-utils
|
||||||
|
static Type[] values() {
|
||||||
|
- return Lists.newArrayList(Registry.VILLAGER_TYPE).toArray(new Type[0]);
|
||||||
|
+ return Lists.newArrayList(Registry.VILLAGER_TYPE).toArray(EMPTY_ARRAY); // Plazma - Reduce allocations
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -213,6 +214,7 @@ public interface Villager extends AbstractVillager {
|
||||||
|
* Villagers have different trading options depending on their profession,
|
||||||
|
*/
|
||||||
|
interface Profession extends OldEnum<Profession>, Keyed, net.kyori.adventure.translation.Translatable {
|
||||||
|
+ Profession[] EMPTY_ARRAY = new Profession[0]; // Plazma - Reduce allocations
|
||||||
|
|
||||||
|
Profession NONE = getProfession("none");
|
||||||
|
/**
|
||||||
|
@@ -311,7 +313,7 @@ public interface Villager extends AbstractVillager {
|
||||||
|
@NotNull
|
||||||
|
@Deprecated(since = "1.21", forRemoval = true) @org.jetbrains.annotations.ApiStatus.ScheduledForRemoval(inVersion = "1.22") // Paper - will be removed via asm-utils
|
||||||
|
static Profession[] values() {
|
||||||
|
- return Lists.newArrayList(Registry.VILLAGER_PROFESSION).toArray(new Profession[0]);
|
||||||
|
+ return Lists.newArrayList(Registry.VILLAGER_PROFESSION).toArray(EMPTY_ARRAY); // Plazma - Reduce allocations
|
||||||
|
}
|
||||||
|
|
||||||
|
// Paper start
|
||||||
|
diff --git a/src/main/java/org/bukkit/map/MapCursor.java b/src/main/java/org/bukkit/map/MapCursor.java
|
||||||
|
index eb73f3224e7d2314c4209a3743a37bdae2395670..1b660fd1334847d8f8cd7eeff3d5ebd085fdfcfd 100644
|
||||||
|
--- a/src/main/java/org/bukkit/map/MapCursor.java
|
||||||
|
+++ b/src/main/java/org/bukkit/map/MapCursor.java
|
||||||
|
@@ -286,6 +286,7 @@ public final class MapCursor {
|
||||||
|
* resource pack.
|
||||||
|
*/
|
||||||
|
public interface Type extends OldEnum<Type>, Keyed {
|
||||||
|
+ Type[] EMPTY_ARRAY = new Type[0]; // Plazma - Reduce allocations
|
||||||
|
|
||||||
|
Type PLAYER = getType("player");
|
||||||
|
Type FRAME = getType("frame");
|
||||||
|
@@ -387,7 +388,7 @@ public final class MapCursor {
|
||||||
|
@NotNull
|
||||||
|
@Deprecated(since = "1.21", forRemoval = true) @org.jetbrains.annotations.ApiStatus.ScheduledForRemoval(inVersion = "1.22") // Paper - will be removed via asm-utils
|
||||||
|
static Type[] values() {
|
||||||
|
- return Lists.newArrayList(Registry.MAP_DECORATION_TYPE).toArray(new Type[0]);
|
||||||
|
+ return Lists.newArrayList(Registry.MAP_DECORATION_TYPE).toArray(EMPTY_ARRAY); // Plazma - Reduce allocations
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
diff --git a/src/main/java/org/bukkit/plugin/SimplePluginManager.java b/src/main/java/org/bukkit/plugin/SimplePluginManager.java
|
||||||
|
index 11b973b70ce62a6e227d343bdef6dcb9ece3f97d..ccb4245b214444153cbca487ca98cb2ad65ccbae 100644
|
||||||
|
--- a/src/main/java/org/bukkit/plugin/SimplePluginManager.java
|
||||||
|
+++ b/src/main/java/org/bukkit/plugin/SimplePluginManager.java
|
||||||
|
@@ -47,6 +47,7 @@ import org.jetbrains.annotations.Nullable;
|
||||||
|
@Deprecated(forRemoval = true) // Paper - This implementation may be replaced in a future version of Paper.
|
||||||
|
// Plugins may still reflect into this class to modify permission logic for the time being.
|
||||||
|
public final class SimplePluginManager implements PluginManager {
|
||||||
|
+ public static final Plugin[] EMPTY_PLUGIN = new Plugin[0]; // Plazma - Reduce allocations
|
||||||
|
private final Server server;
|
||||||
|
private final Map<Pattern, PluginLoader> fileAssociations = new HashMap<Pattern, PluginLoader>();
|
||||||
|
private final List<Plugin> plugins = new ArrayList<Plugin>();
|
||||||
|
@@ -133,7 +134,7 @@ public final class SimplePluginManager implements PluginManager {
|
||||||
|
this.server.getLogger().log(Level.SEVERE, "Plugin loading error!", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
- return pluginList.toArray(new Plugin[0]);
|
||||||
|
+ return pluginList.toArray(EMPTY_PLUGIN); // Plazma - Reduce allocations
|
||||||
|
}
|
||||||
|
Preconditions.checkArgument(directory != null, "Directory cannot be null");
|
||||||
|
Preconditions.checkArgument(directory.isDirectory(), "Directory must be a directory");
|
||||||
|
diff --git a/src/main/java/org/bukkit/potion/PotionEffectType.java b/src/main/java/org/bukkit/potion/PotionEffectType.java
|
||||||
|
index 294ba70f1e446ec8d502e5c14f82ae52547aeb21..beb22bb6ca719ef11814e7cc80cc1aef7cb6f0ec 100644
|
||||||
|
--- a/src/main/java/org/bukkit/potion/PotionEffectType.java
|
||||||
|
+++ b/src/main/java/org/bukkit/potion/PotionEffectType.java
|
||||||
|
@@ -19,6 +19,7 @@ import org.jetbrains.annotations.Nullable;
|
||||||
|
*/
|
||||||
|
public abstract class PotionEffectType implements Keyed, Translatable, net.kyori.adventure.translation.Translatable, io.papermc.paper.world.flag.FeatureDependant { // Paper - implement Translatable & feature flag API
|
||||||
|
private static final BiMap<Integer, PotionEffectType> ID_MAP = HashBiMap.create();
|
||||||
|
+ private static final PotionEffectType[] EMPTY_ARRAY = new PotionEffectType[0]; // Plazma - Reduce allocations
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Increases movement speed.
|
||||||
|
@@ -358,7 +359,7 @@ public abstract class PotionEffectType implements Keyed, Translatable, net.kyori
|
||||||
|
@NotNull
|
||||||
|
@Deprecated
|
||||||
|
public static PotionEffectType[] values() {
|
||||||
|
- return Lists.newArrayList(Registry.EFFECT).toArray(new PotionEffectType[0]);
|
||||||
|
+ return Lists.newArrayList(Registry.EFFECT).toArray(EMPTY_ARRAY); // Plazma - Reduce allocations
|
||||||
|
}
|
||||||
|
|
||||||
|
// Paper start
|
||||||
|
diff --git a/src/main/java/org/plazmamc/plazma/Constants.java b/src/main/java/org/plazmamc/plazma/Constants.java
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000000000000000000000000000000000000..137f4f511998828476c2ac408a9a76289a44d071
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/src/main/java/org/plazmamc/plazma/Constants.java
|
||||||
|
@@ -0,0 +1,7 @@
|
||||||
|
+package org.plazmamc.plazma;
|
||||||
|
+
|
||||||
|
+public interface Constants {
|
||||||
|
+
|
||||||
|
+ int[] ZERO_INT_ARRAY = new int[]{0};
|
||||||
|
+
|
||||||
|
+}
|
||||||
|
diff --git a/src/main/java/org/plazmamc/plazma/constants/Null.java b/src/main/java/org/plazmamc/plazma/constants/Null.java
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000000000000000000000000000000000000..6018a9230d0d92e23f09cc5b5cc042446bed9962
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/src/main/java/org/plazmamc/plazma/constants/Null.java
|
||||||
|
@@ -0,0 +1,25 @@
|
||||||
|
+package org.plazmamc.plazma.constants;
|
||||||
|
+
|
||||||
|
+import net.md_5.bungee.api.chat.BaseComponent;
|
||||||
|
+import java.net.URL;
|
||||||
|
+import java.util.concurrent.CompletableFuture;
|
||||||
|
+import java.util.regex.Pattern;
|
||||||
|
+
|
||||||
|
+public interface Null {
|
||||||
|
+
|
||||||
|
+ byte[] BYTE = new byte[0];
|
||||||
|
+ short[] SHORT = new short[0];
|
||||||
|
+ int[] INT = new int[0];
|
||||||
|
+ long[] LONG = new long[0];
|
||||||
|
+
|
||||||
|
+ Object[] OBJECT = new Object[0];
|
||||||
|
+ String[] STRING = new String[0];
|
||||||
|
+ URL[] URL = new URL[0];
|
||||||
|
+ Pattern[] REGEX = new Pattern[0];
|
||||||
|
+
|
||||||
|
+ BaseComponent[] COMPONENT = new BaseComponent[0];
|
||||||
|
+
|
||||||
|
+ @SuppressWarnings("rawtypes")
|
||||||
|
+ CompletableFuture[] FUTURE = new CompletableFuture[0];
|
||||||
|
+
|
||||||
|
+}
|
||||||
@@ -0,0 +1,49 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: granny <contact@granny.dev>
|
||||||
|
Date: Thu, 18 Jan 2024 21:01:12 +0900
|
||||||
|
Subject: [PATCH] Purpur Generated API Changes
|
||||||
|
|
||||||
|
PurpurMC
|
||||||
|
Copyright (C) 2024 PurpurMC
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
||||||
|
|
||||||
|
diff --git a/com/destroystokyo/paper/entity/ai/VanillaGoal.java b/com/destroystokyo/paper/entity/ai/VanillaGoal.java
|
||||||
|
index e0aa5b925cbd6c2733ad70cb0722c7ab7c4d0419..51cea31c55c7e1a00cfb966349147fc874e1736b 100644
|
||||||
|
--- a/com/destroystokyo/paper/entity/ai/VanillaGoal.java
|
||||||
|
+++ b/com/destroystokyo/paper/entity/ai/VanillaGoal.java
|
||||||
|
@@ -440,6 +440,18 @@ public interface VanillaGoal<T extends Mob> extends Goal<T> {
|
||||||
|
|
||||||
|
GoalKey<Zombie> ZOMBIE_ATTACK_TURTLE_EGG = create("zombie_attack_turtle_egg", Zombie.class);
|
||||||
|
|
||||||
|
+ // Purpur start
|
||||||
|
+ GoalKey<Mob> MOB_HAS_RIDER = GoalKey.of(Mob.class, NamespacedKey.minecraft("has_rider"));
|
||||||
|
+ GoalKey<AbstractHorse> HORSE_HAS_RIDER = GoalKey.of(AbstractHorse.class, NamespacedKey.minecraft("horse_has_rider"));
|
||||||
|
+ GoalKey<Llama> LLAMA_HAS_RIDER = GoalKey.of(Llama.class, NamespacedKey.minecraft("llama_has_rider"));
|
||||||
|
+ GoalKey<Phantom> FIND_CRYSTAL = GoalKey.of(Phantom.class, NamespacedKey.minecraft("find_crystal"));
|
||||||
|
+ GoalKey<Phantom> ORBIT_CRYSTAL = GoalKey.of(Phantom.class, NamespacedKey.minecraft("orbit_crystal"));
|
||||||
|
+ GoalKey<Drowned> DROWNED_ATTACK_VILLAGER = GoalKey.of(Drowned.class, NamespacedKey.minecraft("drowned_attack_villager"));
|
||||||
|
+ GoalKey<Zombie> ZOMBIE_ATTACK_VILLAGER = GoalKey.of(Zombie.class, NamespacedKey.minecraft("zombie_attack_villager"));
|
||||||
|
+ GoalKey<Wolf> AVOID_RABID_WOLF = GoalKey.of(Wolf.class, NamespacedKey.minecraft("avoid_rabid_wolf"));
|
||||||
|
+ GoalKey<IronGolem> RECEIVE_FLOWER = GoalKey.of(IronGolem.class, NamespacedKey.minecraft("receive_flower"));
|
||||||
|
+ // Purpur end
|
||||||
|
+
|
||||||
|
private static <T extends Mob> @NonNull GoalKey<T> create(final @NonNull String key,
|
||||||
|
final @NonNull Class<T> type) {
|
||||||
|
return GoalKey.of(type, NamespacedKey.minecraft(key));
|
||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
21
patches/server/0002-mc-dev-fixes.patch
Normal file
21
patches/server/0002-mc-dev-fixes.patch
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: AlphaKR93 <dev@alpha93.kr>
|
||||||
|
Date: Sat, 2 Nov 2024 15:26:27 +0900
|
||||||
|
Subject: [PATCH] mc dev fixes
|
||||||
|
|
||||||
|
|
||||||
|
diff --git a/src/main/java/net/minecraft/world/entity/animal/allay/AllayAi.java b/src/main/java/net/minecraft/world/entity/animal/allay/AllayAi.java
|
||||||
|
index 3fc1ec01e1a77a169ec762a23f15b97f040ce5f8..b5464708c1fa949e7df8aed71126ccad72d66ee3 100644
|
||||||
|
--- a/src/main/java/net/minecraft/world/entity/animal/allay/AllayAi.java
|
||||||
|
+++ b/src/main/java/net/minecraft/world/entity/animal/allay/AllayAi.java
|
||||||
|
@@ -62,8 +62,8 @@ public class AllayAi {
|
||||||
|
Activity.CORE,
|
||||||
|
0,
|
||||||
|
ImmutableList.of(
|
||||||
|
- new Swim<>(0.8F),
|
||||||
|
- new AnimalPanic(2.5F),
|
||||||
|
+ new Swim<Allay>(0.8F), // Plazma - mc dev fixes
|
||||||
|
+ new AnimalPanic<Allay>(2.5F), // Plazma - mc dev fixes
|
||||||
|
new LookAtTargetSink(45, 90),
|
||||||
|
new MoveToTargetSink(),
|
||||||
|
new CountDownCooldownTicks(MemoryModuleType.LIKED_NOTEBLOCK_COOLDOWN_TICKS),
|
||||||
117
patches/server/0003-Build-System-Changes.patch
Normal file
117
patches/server/0003-Build-System-Changes.patch
Normal file
@@ -0,0 +1,117 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: AlphaKR93 <dev@alpha93.kr>
|
||||||
|
Date: Sun, 14 Jan 2024 19:51:19 +0900
|
||||||
|
Subject: [PATCH] Build System Changes
|
||||||
|
|
||||||
|
|
||||||
|
diff --git a/build.gradle.kts b/build.gradle.kts
|
||||||
|
index ccb31eb5993db028d0cbf104261205c9462f8734..44ebd149b18cf002cb9ffc9073c95ab1bd9bd356 100644
|
||||||
|
--- a/build.gradle.kts
|
||||||
|
+++ b/build.gradle.kts
|
||||||
|
@@ -13,63 +13,29 @@ configurations.named(log4jPlugins.compileClasspathConfigurationName) {
|
||||||
|
val alsoShade: Configuration by configurations.creating
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
- implementation(project(":purpur-api")) // Pufferfish // Paper // Purpur
|
||||||
|
- // Paper start
|
||||||
|
- implementation("org.jline:jline-terminal-jansi:3.21.0")
|
||||||
|
- implementation("net.minecrell:terminalconsoleappender:1.3.0")
|
||||||
|
- implementation("net.kyori:adventure-text-serializer-ansi:4.17.0") // Keep in sync with adventureVersion from Paper-API build file
|
||||||
|
- /*
|
||||||
|
- Required to add the missing Log4j2Plugins.dat file from log4j-core
|
||||||
|
- which has been removed by Mojang. Without it, log4j has to classload
|
||||||
|
- all its classes to check if they are plugins.
|
||||||
|
- Scanning takes about 1-2 seconds so adding this speeds up the server start.
|
||||||
|
- */
|
||||||
|
- implementation("org.apache.logging.log4j:log4j-core:2.19.0") // Paper - implementation
|
||||||
|
- 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:netty-codec-haproxy:4.1.97.Final") // Paper - Add support for proxy protocol
|
||||||
|
- // Paper end
|
||||||
|
- implementation("org.apache.logging.log4j:log4j-iostreams:2.22.1") // Paper - remove exclusion
|
||||||
|
- implementation("org.ow2.asm:asm-commons:9.7.1")
|
||||||
|
- implementation("org.spongepowered:configurate-yaml:4.2.0-SNAPSHOT") // Paper - config files
|
||||||
|
- implementation("commons-lang:commons-lang:2.6")
|
||||||
|
- runtimeOnly("org.xerial:sqlite-jdbc:3.46.1.3")
|
||||||
|
- runtimeOnly("com.mysql:mysql-connector-j:9.1.0")
|
||||||
|
- runtimeOnly("com.lmax:disruptor:3.4.4") // Paper
|
||||||
|
- // Paper start - Use Velocity cipher
|
||||||
|
- implementation("com.velocitypowered:velocity-native:3.3.0-SNAPSHOT") {
|
||||||
|
- isTransitive = false
|
||||||
|
- }
|
||||||
|
- // Paper end - Use Velocity cipher
|
||||||
|
-
|
||||||
|
- runtimeOnly("org.apache.maven:maven-resolver-provider:3.9.6")
|
||||||
|
- runtimeOnly("org.apache.maven.resolver:maven-resolver-connector-basic:1.9.18")
|
||||||
|
- runtimeOnly("org.apache.maven.resolver:maven-resolver-transport-http:1.9.18")
|
||||||
|
-
|
||||||
|
- implementation("org.mozilla:rhino-runtime:1.7.14") // Purpur
|
||||||
|
- implementation("org.mozilla:rhino-engine:1.7.14") // Purpur
|
||||||
|
- implementation("dev.omega24:upnp4j:1.0") // Purpur
|
||||||
|
-
|
||||||
|
- testImplementation("io.github.classgraph:classgraph:4.8.47") // Paper - mob goal test
|
||||||
|
- testImplementation("org.junit.jupiter:junit-jupiter:5.10.2")
|
||||||
|
- testImplementation("org.junit.platform:junit-platform-suite-engine:1.10.0")
|
||||||
|
- testImplementation("org.hamcrest:hamcrest:2.2")
|
||||||
|
- testImplementation("org.mockito:mockito-core:5.14.1")
|
||||||
|
- testImplementation("org.ow2.asm:asm-tree:9.7.1")
|
||||||
|
- testImplementation("org.junit-pioneer:junit-pioneer:2.2.0") // Paper - CartesianTest
|
||||||
|
- implementation("net.neoforged:srgutils:1.0.9") // Paper - mappings handling
|
||||||
|
- implementation("net.neoforged:AutoRenamingTool:2.0.3") // Paper - remap plugins
|
||||||
|
- // Paper start - Remap reflection
|
||||||
|
- val reflectionRewriterVersion = "0.0.3"
|
||||||
|
- implementation("io.papermc:reflection-rewriter:$reflectionRewriterVersion")
|
||||||
|
- implementation("io.papermc:reflection-rewriter-runtime:$reflectionRewriterVersion")
|
||||||
|
- implementation("io.papermc:reflection-rewriter-proxy-generator:$reflectionRewriterVersion")
|
||||||
|
- // Paper end - Remap reflection
|
||||||
|
- // Paper start - spark
|
||||||
|
- implementation("me.lucko:spark-api:0.1-20240720.200737-2")
|
||||||
|
- implementation("me.lucko:spark-paper:1.10.105-SNAPSHOT")
|
||||||
|
- // Paper end - spark
|
||||||
|
+ // Plazma start - Build System Changes
|
||||||
|
+ implementation(project(":${rootProject.providers.gradleProperty("brandName").get().lowercase()}-api"))
|
||||||
|
+ implementation(common.snakeyaml)
|
||||||
|
+ implementation(common.asm.commons)
|
||||||
|
+ implementation(common.log4j.core)
|
||||||
|
+ implementation(common.log4j.iostreams)
|
||||||
|
+ implementation(common.commons.lang2)
|
||||||
|
+ implementation(common.adventure.serializer.ansi)
|
||||||
|
+ implementation(server.velocity) { isTransitive = false }
|
||||||
|
+ implementation(server.simpleyaml) { exclude(group="org.yaml", module="snakeyaml") }
|
||||||
|
+ implementation(server.bundles.implementation)
|
||||||
|
+
|
||||||
|
+ log4jPlugins.annotationProcessorConfigurationName(common.log4j.core)
|
||||||
|
+ alsoShade(log4jPlugins.output) // diff on changes
|
||||||
|
+ runtimeOnly(log4jPlugins.output) // diff on changes
|
||||||
|
+
|
||||||
|
+ runtimeOnly(common.maven.provider)
|
||||||
|
+ runtimeOnly(common.bundles.maven)
|
||||||
|
+ runtimeOnly(server.bundles.runtime)
|
||||||
|
+
|
||||||
|
+ testImplementation(common.bundles.test)
|
||||||
|
+ testImplementation(server.bundles.test)
|
||||||
|
+ // Plazma end - Build System Changes
|
||||||
|
}
|
||||||
|
|
||||||
|
paperweight {
|
||||||
|
@@ -89,14 +55,14 @@ tasks.jar {
|
||||||
|
val gitBranch = git("rev-parse", "--abbrev-ref", "HEAD").getText().trim() // Paper
|
||||||
|
attributes(
|
||||||
|
"Main-Class" to "org.bukkit.craftbukkit.Main",
|
||||||
|
- "Implementation-Title" to "Purpur", // Pufferfish // Purpur
|
||||||
|
+ "Implementation-Title" to rootProject.providers.gradleProperty("brandName").get(), // Pufferfish // Purpur // Plazma - Fork-friendly Rebranding
|
||||||
|
"Implementation-Version" to implementationVersion,
|
||||||
|
"Implementation-Vendor" to date, // Paper
|
||||||
|
- "Specification-Title" to "Purpur", // Pufferfish // Purpur
|
||||||
|
+ "Specification-Title" to rootProject.providers.gradleProperty("brandName").get(), // Pufferfish // Purpur // Plazma - Fork-friendly Rebranding
|
||||||
|
"Specification-Version" to project.version,
|
||||||
|
- "Specification-Vendor" to "Purpur Team", // Pufferfish // Purpur
|
||||||
|
- "Brand-Id" to "purpurmc:purpur", // Pufferfish // Purpur
|
||||||
|
- "Brand-Name" to "Purpur", // Pufferfish // Purpur
|
||||||
|
+ "Specification-Vendor" to rootProject.providers.gradleProperty("providerName").get(), // Purpur // Plazma - Fork-friendly Rebranding
|
||||||
|
+ "Brand-Id" to rootProject.providers.gradleProperty("brandKey").get(), // Purpur // Plazma - Fork-friendly Rebranding
|
||||||
|
+ "Brand-Name" to rootProject.providers.gradleProperty("brandName").get(), // Pufferfish // Purpur // Plazma - Fork-friendly Rebranding
|
||||||
|
"Build-Number" to (build ?: ""),
|
||||||
|
"Build-Time" to Instant.now().toString(),
|
||||||
|
"Git-Branch" to gitBranch, // Paper
|
||||||
@@ -1,75 +0,0 @@
|
|||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: IPECTER <ipectert@gmail.com>
|
|
||||||
Date: Tue, 30 May 2023 12:12:29 +0900
|
|
||||||
Subject: [PATCH] MC Dev fixes
|
|
||||||
|
|
||||||
|
|
||||||
diff --git a/src/main/java/net/minecraft/util/datafix/fixes/LeavesFix.java b/src/main/java/net/minecraft/util/datafix/fixes/LeavesFix.java
|
|
||||||
index 11ae164cce84081843518953bbeaf29904334fa9..131a0bb93c0711cc657c5571f3d8313b4bf154a8 100644
|
|
||||||
--- a/src/main/java/net/minecraft/util/datafix/fixes/LeavesFix.java
|
|
||||||
+++ b/src/main/java/net/minecraft/util/datafix/fixes/LeavesFix.java
|
|
||||||
@@ -71,14 +71,14 @@ public class LeavesFix extends DataFix {
|
|
||||||
return this.fixTypeEverywhereTyped("Leaves fix", type, (typed) -> {
|
|
||||||
return typed.updateTyped(opticFinder, (typedx) -> {
|
|
||||||
int[] is = new int[]{0};
|
|
||||||
- Typed<?> typed2 = typedx.updateTyped(opticFinder2, (typed) -> {
|
|
||||||
- Int2ObjectMap<LeavesFix.LeavesSection> int2ObjectMap = new Int2ObjectOpenHashMap<>(typed.getAllTyped(opticFinder3).stream().map((typedx) -> {
|
|
||||||
- return new LeavesFix.LeavesSection(typedx, this.getInputSchema());
|
|
||||||
+ Typed<?> typed2 = typedx.updateTyped(opticFinder2, (typed2x) -> {
|
|
||||||
+ Int2ObjectMap<LeavesFix.LeavesSection> int2ObjectMap = new Int2ObjectOpenHashMap<>(typed2x.getAllTyped(opticFinder3).stream().map((typedx2) -> {
|
|
||||||
+ return new LeavesFix.LeavesSection(typedx2, this.getInputSchema());
|
|
||||||
}).collect(Collectors.toMap(LeavesFix.Section::getIndex, (leavesSection) -> {
|
|
||||||
return leavesSection;
|
|
||||||
})));
|
|
||||||
if (int2ObjectMap.values().stream().allMatch(LeavesFix.Section::isSkippable)) {
|
|
||||||
- return typed;
|
|
||||||
+ return typed2x;
|
|
||||||
} else {
|
|
||||||
List<IntSet> list = Lists.newArrayList();
|
|
||||||
|
|
||||||
@@ -134,8 +134,8 @@ public class LeavesFix extends DataFix {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
- return typed.updateTyped(opticFinder3, (typedx) -> {
|
|
||||||
- return int2ObjectMap.get(typedx.get(DSL.remainderFinder()).get("Y").asInt(0)).write(typedx);
|
|
||||||
+ return typed.updateTyped(opticFinder3, (typedx2) -> {
|
|
||||||
+ return int2ObjectMap.get(typedx2.get(DSL.remainderFinder()).get("Y").asInt(0)).write(typedx2);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
@@ -298,8 +298,8 @@ public class LeavesFix extends DataFix {
|
|
||||||
throw new IllegalStateException("Block state type is not what was expected.");
|
|
||||||
} else {
|
|
||||||
Optional<List<Pair<String, Dynamic<?>>>> optional = typed.getOptional(this.paletteFinder);
|
|
||||||
- this.palette = optional.map((list) -> {
|
|
||||||
- return list.stream().map(Pair::getSecond).collect(Collectors.toList());
|
|
||||||
+ this.palette = (java.util.List)optional.map((list) -> {
|
|
||||||
+ return (java.util.List)list.stream().map(Pair::getSecond).collect(Collectors.toList());
|
|
||||||
}).orElse(ImmutableList.of());
|
|
||||||
Dynamic<?> dynamic = typed.get(DSL.remainderFinder());
|
|
||||||
this.index = dynamic.get("Y").asInt(0);
|
|
||||||
@@ -321,7 +321,7 @@ public class LeavesFix extends DataFix {
|
|
||||||
public Typed<?> write(Typed<?> typed) {
|
|
||||||
return this.isSkippable() ? typed : typed.update(DSL.remainderFinder(), (dynamic) -> {
|
|
||||||
return dynamic.set("BlockStates", dynamic.createLongList(Arrays.stream(this.storage.getRaw())));
|
|
||||||
- }).set(this.paletteFinder, this.palette.stream().map((dynamic) -> {
|
|
||||||
+ }).set(this.paletteFinder, (java.util.List)this.palette.stream().map((dynamic) -> {
|
|
||||||
return Pair.of(References.BLOCK_STATE.typeName(), dynamic);
|
|
||||||
}).collect(Collectors.toList()));
|
|
||||||
}
|
|
||||||
diff --git a/src/main/java/net/minecraft/world/level/storage/loot/entries/EntryGroup.java b/src/main/java/net/minecraft/world/level/storage/loot/entries/EntryGroup.java
|
|
||||||
index 6e971a9891e43b971d439c3ca11eff8965f3dae9..da1b5c6b68f14969b85472826d3d36ca673a0e5a 100644
|
|
||||||
--- a/src/main/java/net/minecraft/world/level/storage/loot/entries/EntryGroup.java
|
|
||||||
+++ b/src/main/java/net/minecraft/world/level/storage/loot/entries/EntryGroup.java
|
|
||||||
@@ -31,8 +31,8 @@ public class EntryGroup extends CompositeEntryBase {
|
|
||||||
};
|
|
||||||
default:
|
|
||||||
return (context, lootChoiceExpander) -> {
|
|
||||||
- for(ComposableEntryContainer composableEntryContainer : children) {
|
|
||||||
- composableEntryContainer.expand(context, lootChoiceExpander);
|
|
||||||
+ for(ComposableEntryContainer composableEntryContainer3 : children) { // Plazma - decompile fix
|
|
||||||
+ composableEntryContainer3.expand(context, lootChoiceExpander);
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
426
patches/server/0004-Fork-friendly-Rebranding.patch
Normal file
426
patches/server/0004-Fork-friendly-Rebranding.patch
Normal file
@@ -0,0 +1,426 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: AlphaKR93 <dev@alpha93.kr>
|
||||||
|
Date: Wed, 21 Dec 2022 19:31:24 +0900
|
||||||
|
Subject: [PATCH] Fork-friendly Rebranding
|
||||||
|
|
||||||
|
|
||||||
|
diff --git a/src/main/java/com/destroystokyo/paper/Metrics.java b/src/main/java/com/destroystokyo/paper/Metrics.java
|
||||||
|
index 8cde30544e14f8fc2dac32966ae3c21f8cf3a551..8d5a52c5762c3d9b44dcdf00ae312e0bdc01fa1f 100644
|
||||||
|
--- a/src/main/java/com/destroystokyo/paper/Metrics.java
|
||||||
|
+++ b/src/main/java/com/destroystokyo/paper/Metrics.java
|
||||||
|
@@ -593,7 +593,7 @@ public class Metrics {
|
||||||
|
boolean logFailedRequests = config.getBoolean("logFailedRequests", false);
|
||||||
|
// Only start Metrics, if it's enabled in the config
|
||||||
|
if (config.getBoolean("enabled", true)) {
|
||||||
|
- Metrics metrics = new Metrics("Purpur", serverUUID, logFailedRequests, Bukkit.getLogger()); // Pufferfish // Purpur
|
||||||
|
+ Metrics metrics = new Metrics(io.papermc.paper.ServerBrandConstants.BRAND_NAME, serverUUID, logFailedRequests, Bukkit.getLogger()); // Pufferfish // Purpur // Plazma - Fork-friendly Rebranding
|
||||||
|
|
||||||
|
metrics.addCustomChart(new Metrics.SimplePie("minecraft_version", () -> {
|
||||||
|
String minecraftVersion = Bukkit.getVersion();
|
||||||
|
diff --git a/src/main/java/com/destroystokyo/paper/PaperVersionFetcher.java b/src/main/java/com/destroystokyo/paper/PaperVersionFetcher.java
|
||||||
|
index 6d36fc6d8e22d9b68dea3830f6ecc8763184c343..6995627310de4911d87a2f93a723d6b93dc0612f 100644
|
||||||
|
--- a/src/main/java/com/destroystokyo/paper/PaperVersionFetcher.java
|
||||||
|
+++ b/src/main/java/com/destroystokyo/paper/PaperVersionFetcher.java
|
||||||
|
@@ -36,7 +36,7 @@ public class PaperVersionFetcher implements VersionFetcher {
|
||||||
|
private static final int DISTANCE_ERROR = -1;
|
||||||
|
private static final int DISTANCE_UNKNOWN = -2;
|
||||||
|
// Purpur start
|
||||||
|
- private static final String DOWNLOAD_PAGE = "https://purpurmc.org/downloads";
|
||||||
|
+ // private static final String DOWNLOAD_PAGE = "https://purpurmc.org/downloads"; // Plazma - Fork-friendly Rebranding
|
||||||
|
private static int distance = DISTANCE_UNKNOWN; public int distance() { return distance; }
|
||||||
|
// Purpur end
|
||||||
|
|
||||||
|
@@ -52,7 +52,7 @@ public class PaperVersionFetcher implements VersionFetcher {
|
||||||
|
if (build.buildNumber().isEmpty() && build.gitCommit().isEmpty()) {
|
||||||
|
updateMessage = text("You are running a development version without access to version information", color(0xFF5300));
|
||||||
|
} else {
|
||||||
|
- updateMessage = getUpdateStatusMessage("PurpurMC/Purpur", build); // Purpur
|
||||||
|
+ updateMessage = getUpdateStatusMessage("PlazmaMC/Plazma", build); // Purpur // Plazma - Fork-friendly Rebranding
|
||||||
|
}
|
||||||
|
final @Nullable Component history = this.getHistory();
|
||||||
|
|
||||||
|
@@ -63,8 +63,12 @@ public class PaperVersionFetcher implements VersionFetcher {
|
||||||
|
//int distance = DISTANCE_ERROR; // Purpur - use field
|
||||||
|
|
||||||
|
final OptionalInt buildNumber = build.buildNumber();
|
||||||
|
- if (buildNumber.isPresent()) {
|
||||||
|
- distance = fetchDistanceFromSiteApi(build, buildNumber.getAsInt());
|
||||||
|
+ // Plazma start - TODO: CI Checking
|
||||||
|
+ //noinspection PointlessBooleanExpression
|
||||||
|
+ if (false && buildNumber.isPresent()) {
|
||||||
|
+ throw new UnsupportedOperationException("Version fetching from CI is not supported yet");
|
||||||
|
+ // distance = fetchDistanceFromSiteApi(build, buildNumber.getAsInt());
|
||||||
|
+ // Plazma end - TODO: CI Checking
|
||||||
|
} else {
|
||||||
|
final Optional<String> gitBranch = build.gitBranch();
|
||||||
|
final Optional<String> gitCommit = build.gitCommit();
|
||||||
|
@@ -80,12 +84,13 @@ public class PaperVersionFetcher implements VersionFetcher {
|
||||||
|
default -> text("* You are " + distance + " version(s) behind", NamedTextColor.YELLOW) // Purpur
|
||||||
|
.append(Component.newline())
|
||||||
|
.append(text("Download the new version at: ")
|
||||||
|
- .append(text(DOWNLOAD_PAGE, NamedTextColor.GOLD)
|
||||||
|
+ .append(text(io.papermc.paper.ServerBrandConstants.DOWNLOAD_PAGE, NamedTextColor.GOLD) // Plazma - Fork-friendly Rebranding
|
||||||
|
.hoverEvent(text("Click to open", NamedTextColor.WHITE))
|
||||||
|
- .clickEvent(ClickEvent.openUrl(DOWNLOAD_PAGE))));
|
||||||
|
+ .clickEvent(ClickEvent.openUrl(io.papermc.paper.ServerBrandConstants.DOWNLOAD_PAGE)))); // Plazma - Fork-friendly Rebranding
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
+ /* // Plazma - TODO: CI Checking
|
||||||
|
private static int fetchDistanceFromSiteApi(final ServerBuildInfo build, final int jenkinsBuild) {
|
||||||
|
try {
|
||||||
|
try (final BufferedReader reader = Resources.asCharSource(
|
||||||
|
@@ -105,6 +110,7 @@ public class PaperVersionFetcher implements VersionFetcher {
|
||||||
|
return DISTANCE_ERROR;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
+ */ // Plazma - TODO: CI Checking
|
||||||
|
|
||||||
|
// Contributed by Techcable <Techcable@outlook.com> in GH-65
|
||||||
|
private static int fetchDistanceFromGitHub(final String repo, final String branch, final String hash) {
|
||||||
|
diff --git a/src/main/java/com/destroystokyo/paper/console/PaperConsole.java b/src/main/java/com/destroystokyo/paper/console/PaperConsole.java
|
||||||
|
index 90b3526479320064378f2cde6c2f2b8e48a59ba6..21658c61ad091647d5421d1dbf892d03ca175c74 100644
|
||||||
|
--- a/src/main/java/com/destroystokyo/paper/console/PaperConsole.java
|
||||||
|
+++ b/src/main/java/com/destroystokyo/paper/console/PaperConsole.java
|
||||||
|
@@ -20,7 +20,7 @@ public final class PaperConsole extends SimpleTerminalConsole {
|
||||||
|
@Override
|
||||||
|
protected LineReader buildReader(LineReaderBuilder builder) {
|
||||||
|
builder
|
||||||
|
- .appName("Purpur") // Purpur
|
||||||
|
+ .appName(io.papermc.paper.ServerBrandConstants.BRAND_NAME) // Purpur // Plazma - Fork-friendly Rebranding
|
||||||
|
.variable(LineReader.HISTORY_FILE, java.nio.file.Paths.get(".console_history"))
|
||||||
|
.completer(new ConsoleCommandCompleter(this.server))
|
||||||
|
.option(LineReader.Option.COMPLETE_IN_WORD, true);
|
||||||
|
diff --git a/src/main/java/io/papermc/paper/ServerBrandConstants.java b/src/main/java/io/papermc/paper/ServerBrandConstants.java
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000000000000000000000000000000000000..3af005ce2bbd30601917987d8c831db23c733ab8
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/src/main/java/io/papermc/paper/ServerBrandConstants.java
|
||||||
|
@@ -0,0 +1,29 @@
|
||||||
|
+package io.papermc.paper;
|
||||||
|
+
|
||||||
|
+import org.jetbrains.annotations.Nullable;
|
||||||
|
+
|
||||||
|
+public interface ServerBrandConstants {
|
||||||
|
+
|
||||||
|
+ // Basic brand informations
|
||||||
|
+ String BRAND_NAME = "Plazma";
|
||||||
|
+ String RESOURCE_PATH = "META-INF/maven/org.plazmamc.plazma/plazma-api/pom.properties";
|
||||||
|
+
|
||||||
|
+ @Nullable
|
||||||
|
+ String ASCII_LOGO = """
|
||||||
|
+
|
||||||
|
+ \033[38;2;215;23;133m█\033[38;2;212;24;134m█\033[38;2;209;26;134m█\033[38;2;205;27;135m█\033[38;2;202;28;136m█\033[38;2;199;30;136m█\033[38;2;196;31;137m╗\033[38;2;193;33;138m \033[38;2;190;34;138m█\033[38;2;186;35;139m█\033[38;2;183;37;140m╗\033[38;2;180;38;140m \033[38;2;177;39;141m \033[38;2;174;41;142m \033[38;2;170;42;142m \033[38;2;167;43;143m \033[38;2;164;45;144m \033[38;2;161;46;144m█\033[38;2;158;47;145m█\033[38;2;155;49;146m█\033[38;2;151;50;146m█\033[38;2;148;52;147m█\033[38;2;145;53;148m╗\033[38;2;142;54;148m \033[38;2;139;56;149m█\033[38;2;135;57;149m█\033[38;2;132;58;150m█\033[38;2;129;60;151m█\033[38;2;126;61;151m█\033[38;2;123;62;152m█\033[38;2;120;64;153m█\033[38;2;116;65;153m╗ \033[38;2;113;67;154m█\033[38;2;110;68;155m█\033[38;2;107;69;155m█\033[38;2;104;71;156m╗\033[38;2;101;72;157m \033[38;2;97;73;157m \033[38;2;94;75;158m \033[38;2;91;76;159m█\033[38;2;88;77;159m█\033[38;2;85;79;160m█\033[38;2;81;80;161m╗ \033[38;2;78;81;161m \033[38;2;75;83;162m█\033[38;2;72;84;163m█\033[38;2;69;86;163m█\033[38;2;66;87;164m█\033[38;2;62;88;165m█\033[38;2;59;90;165m╗\033[38;2;56;91;166m\s
|
||||||
|
+ \033[38;2;215;23;133m█\033[38;2;212;24;134m█\033[38;2;209;26;134m╔\033[38;2;205;27;135m═\033[38;2;202;28;136m═\033[38;2;199;30;136m█\033[38;2;196;31;137m█\033[38;2;193;33;138m╗ \033[38;2;190;34;138m█\033[38;2;186;35;139m█\033[38;2;183;37;140m║\033[38;2;180;38;140m \033[38;2;177;39;141m \033[38;2;174;41;142m \033[38;2;170;42;142m \033[38;2;167;43;143m \033[38;2;164;45;144m█\033[38;2;161;46;144m█\033[38;2;158;47;145m╔\033[38;2;155;49;146m═\033[38;2;151;50;146m═\033[38;2;148;52;147m█\033[38;2;145;53;148m█\033[38;2;142;54;148m╗ \033[38;2;139;56;149m╚\033[38;2;135;57;149m═\033[38;2;132;58;150m═\033[38;2;129;60;151m█\033[38;2;126;61;151m█\033[38;2;123;62;152m█\033[38;2;120;64;153m╔\033[38;2;116;65;153m╝ \033[38;2;113;67;154m█\033[38;2;110;68;155m█\033[38;2;107;69;155m█\033[38;2;104;71;156m█\033[38;2;101;72;157m╗\033[38;2;97;73;157m \033[38;2;94;75;158m█\033[38;2;91;76;159m█\033[38;2;88;77;159m█\033[38;2;85;79;160m█\033[38;2;81;80;161m║ \033[38;2;78;81;161m█\033[38;2;75;83;162m█\033[38;2;72;84;163m╔\033[38;2;69;86;163m═\033[38;2;66;87;164m═\033[38;2;62;88;165m█\033[38;2;59;90;165m█\033[38;2;56;91;166m╗
|
||||||
|
+ \033[38;2;215;23;133m█\033[38;2;212;24;134m█\033[38;2;209;26;134m█\033[38;2;205;27;135m█\033[38;2;202;28;136m█\033[38;2;199;30;136m█\033[38;2;196;31;137m╔\033[38;2;193;33;138m╝ \033[38;2;190;34;138m█\033[38;2;186;35;139m█\033[38;2;183;37;140m║\033[38;2;180;38;140m \033[38;2;177;39;141m \033[38;2;174;41;142m \033[38;2;170;42;142m \033[38;2;167;43;143m \033[38;2;164;45;144m█\033[38;2;161;46;144m█\033[38;2;158;47;145m█\033[38;2;155;49;146m█\033[38;2;151;50;146m█\033[38;2;148;52;147m█\033[38;2;145;53;148m█\033[38;2;142;54;148m║ \033[38;2;139;56;149m \033[38;2;135;57;149m \033[38;2;132;58;150m█\033[38;2;129;60;151m█\033[38;2;126;61;151m█\033[38;2;123;62;152m╔\033[38;2;120;64;153m╝\033[38;2;116;65;153m \033[38;2;113;67;154m█\033[38;2;110;68;155m█\033[38;2;107;69;155m╔\033[38;2;104;71;156m█\033[38;2;101;72;157m█\033[38;2;97;73;157m█\033[38;2;94;75;158m█\033[38;2;91;76;159m╔\033[38;2;88;77;159m█\033[38;2;85;79;160m█\033[38;2;81;80;161m║ \033[38;2;78;81;161m█\033[38;2;75;83;162m█\033[38;2;72;84;163m█\033[38;2;69;86;163m█\033[38;2;66;87;164m█\033[38;2;62;88;165m█\033[38;2;59;90;165m█\033[38;2;56;91;166m║
|
||||||
|
+ \033[38;2;215;23;133m█\033[38;2;212;24;134m█\033[38;2;209;26;134m╔\033[38;2;205;27;135m═\033[38;2;202;28;136m═\033[38;2;199;30;136m═\033[38;2;196;31;137m╝\033[38;2;193;33;138m \033[38;2;190;34;138m█\033[38;2;186;35;139m█\033[38;2;183;37;140m║\033[38;2;180;38;140m \033[38;2;177;39;141m \033[38;2;174;41;142m \033[38;2;170;42;142m \033[38;2;167;43;143m \033[38;2;164;45;144m█\033[38;2;161;46;144m█\033[38;2;158;47;145m╔\033[38;2;155;49;146m═\033[38;2;151;50;146m═\033[38;2;148;52;147m█\033[38;2;145;53;148m█\033[38;2;142;54;148m║ \033[38;2;139;56;149m \033[38;2;135;57;149m█\033[38;2;132;58;150m█\033[38;2;129;60;151m█\033[38;2;126;61;151m╔\033[38;2;123;62;152m╝\033[38;2;120;64;153m \033[38;2;116;65;153m \033[38;2;113;67;154m█\033[38;2;110;68;155m█\033[38;2;107;69;155m║\033[38;2;104;71;156m╚\033[38;2;101;72;157m█\033[38;2;97;73;157m█\033[38;2;94;75;158m╔\033[38;2;91;76;159m╝\033[38;2;88;77;159m█\033[38;2;85;79;160m█\033[38;2;81;80;161m║ \033[38;2;78;81;161m█\033[38;2;75;83;162m█\033[38;2;72;84;163m╔\033[38;2;69;86;163m═\033[38;2;66;87;164m═\033[38;2;62;88;165m█\033[38;2;59;90;165m█\033[38;2;56;91;166m║
|
||||||
|
+ \033[38;2;215;23;133m█\033[38;2;212;24;134m█\033[38;2;209;26;134m║\033[38;2;205;27;135m \033[38;2;202;28;136m \033[38;2;199;30;136m \033[38;2;196;31;137m \033[38;2;193;33;138m \033[38;2;190;34;138m█\033[38;2;186;35;139m█\033[38;2;183;37;140m█\033[38;2;180;38;140m█\033[38;2;177;39;141m█\033[38;2;174;41;142m█\033[38;2;170;42;142m█\033[38;2;167;43;143m╗ \033[38;2;164;45;144m█\033[38;2;161;46;144m█\033[38;2;158;47;145m║\033[38;2;155;49;146m \033[38;2;151;50;146m \033[38;2;148;52;147m█\033[38;2;145;53;148m█\033[38;2;142;54;148m║ \033[38;2;139;56;149m█\033[38;2;135;57;149m█\033[38;2;132;58;150m█\033[38;2;129;60;151m█\033[38;2;126;61;151m█\033[38;2;123;62;152m█\033[38;2;120;64;153m█\033[38;2;116;65;153m╗ \033[38;2;113;67;154m█\033[38;2;110;68;155m█\033[38;2;107;69;155m║\033[38;2;104;71;156m \033[38;2;101;72;157m╚\033[38;2;97;73;157m═\033[38;2;94;75;158m╝\033[38;2;91;76;159m \033[38;2;88;77;159m█\033[38;2;85;79;160m█\033[38;2;81;80;161m║ \033[38;2;78;81;161m█\033[38;2;75;83;162m█\033[38;2;72;84;163m║\033[38;2;69;86;163m \033[38;2;66;87;164m \033[38;2;62;88;165m█\033[38;2;59;90;165m█\033[38;2;56;91;166m║
|
||||||
|
+ \033[38;2;215;23;133m╚\033[38;2;212;24;134m═\033[38;2;209;26;134m╝\033[38;2;205;27;135m \033[38;2;202;28;136m \033[38;2;199;30;136m \033[38;2;196;31;137m \033[38;2;193;33;138m \033[38;2;190;34;138m╚\033[38;2;186;35;139m═\033[38;2;183;37;140m═\033[38;2;180;38;140m═\033[38;2;177;39;141m═\033[38;2;174;41;142m═\033[38;2;170;42;142m═\033[38;2;167;43;143m╝ \033[38;2;164;45;144m╚\033[38;2;161;46;144m═\033[38;2;158;47;145m╝\033[38;2;155;49;146m \033[38;2;151;50;146m \033[38;2;148;52;147m╚\033[38;2;145;53;148m═\033[38;2;142;54;148m╝ \033[38;2;139;56;149m╚\033[38;2;135;57;149m═\033[38;2;132;58;150m═\033[38;2;129;60;151m═\033[38;2;126;61;151m═\033[38;2;123;62;152m═\033[38;2;120;64;153m═\033[38;2;116;65;153m╝ \033[38;2;113;67;154m╚\033[38;2;110;68;155m═\033[38;2;107;69;155m╝\033[38;2;104;71;156m \033[38;2;101;72;157m \033[38;2;97;73;157m \033[38;2;94;75;158m \033[38;2;91;76;159m \033[38;2;88;77;159m╚\033[38;2;85;79;160m═\033[38;2;81;80;161m╝ \033[38;2;78;81;161m╚\033[38;2;75;83;162m═\033[38;2;72;84;163m╝\033[38;2;69;86;163m \033[38;2;66;87;164m \033[38;2;62;88;165m╚\033[38;2;59;90;165m═\033[38;2;56;91;166m╝\033[0m
|
||||||
|
+ """;
|
||||||
|
+
|
||||||
|
+ // Support URLs
|
||||||
|
+ String DOWNLOAD_PAGE = "https://plazmamc.org/downloads";
|
||||||
|
+ String CONFIG_REFERENCE = "https://docs.plazmamc.org/plazma/administration/reference/configurations";
|
||||||
|
+ String START_GUIDE = "https://docs.plazmamc.org/plazma/administration/getting-started";
|
||||||
|
+ String USAGE_GUIDE = "https://docs.plazmamc.org/plazma/administration/getting-started/next-step";
|
||||||
|
+ String SUPPORT_PAGE = "https://github.com/PlazmaMC/Plazma/issues";
|
||||||
|
+
|
||||||
|
+}
|
||||||
|
diff --git a/src/main/java/io/papermc/paper/ServerBuildInfoImpl.java b/src/main/java/io/papermc/paper/ServerBuildInfoImpl.java
|
||||||
|
index a6e5950b5875cafd734300cdfbf58f5d3736f3c8..a337e2c9576fb70a8ee9082e9b69719c804b286e 100644
|
||||||
|
--- a/src/main/java/io/papermc/paper/ServerBuildInfoImpl.java
|
||||||
|
+++ b/src/main/java/io/papermc/paper/ServerBuildInfoImpl.java
|
||||||
|
@@ -30,9 +30,6 @@ public record ServerBuildInfoImpl(
|
||||||
|
private static final String ATTRIBUTE_GIT_BRANCH = "Git-Branch";
|
||||||
|
private static final String ATTRIBUTE_GIT_COMMIT = "Git-Commit";
|
||||||
|
|
||||||
|
- private static final String BRAND_PAPER_NAME = "Paper";
|
||||||
|
- private static final String BRAND_PURPUR_NAME = "Purpur"; // Purpur
|
||||||
|
-
|
||||||
|
private static final String BUILD_DEV = "DEV";
|
||||||
|
|
||||||
|
public ServerBuildInfoImpl() {
|
||||||
|
@@ -43,9 +40,9 @@ public record ServerBuildInfoImpl(
|
||||||
|
this(
|
||||||
|
getManifestAttribute(manifest, ATTRIBUTE_BRAND_ID)
|
||||||
|
.map(Key::key)
|
||||||
|
- .orElse(BRAND_PURPUR_ID), // Purpur
|
||||||
|
+ .orElse(BRAND_ID), // Purpur // Plazma - Fork-friendly Rebranding
|
||||||
|
getManifestAttribute(manifest, ATTRIBUTE_BRAND_NAME)
|
||||||
|
- .orElse(BRAND_PURPUR_NAME), // Purpur
|
||||||
|
+ .orElse(ServerBrandConstants.BRAND_NAME), // Purpur // Plazma - Fork-friendly Rebranding
|
||||||
|
SharedConstants.getCurrentVersion().getId(),
|
||||||
|
SharedConstants.getCurrentVersion().getName(),
|
||||||
|
getManifestAttribute(manifest, ATTRIBUTE_BUILD_NUMBER)
|
||||||
|
@@ -62,7 +59,7 @@ public record ServerBuildInfoImpl(
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isBrandCompatible(final @NotNull Key brandId) {
|
||||||
|
- return brandId.equals(this.brandId) || brandId.equals(BRAND_PAPER_ID); // Purpur
|
||||||
|
+ return brandId.equals(this.brandId) || SUPPORTED_BRANDS.contains(brandId); // Purpur // Plazma - Fork-friendly Rebranding
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
diff --git a/src/main/java/io/papermc/paper/configuration/Configurations.java b/src/main/java/io/papermc/paper/configuration/Configurations.java
|
||||||
|
index 87e5f614ba988547a827486740db217e28585773..f5aac6cde46ca08a4d4792e38f514bb3d8188ae8 100644
|
||||||
|
--- a/src/main/java/io/papermc/paper/configuration/Configurations.java
|
||||||
|
+++ b/src/main/java/io/papermc/paper/configuration/Configurations.java
|
||||||
|
@@ -113,9 +113,7 @@ public abstract class Configurations<G, W> {
|
||||||
|
try {
|
||||||
|
loader.save(node);
|
||||||
|
} catch (ConfigurateException ex) {
|
||||||
|
- if (ex.getCause() instanceof AccessDeniedException) {
|
||||||
|
- LOGGER.warn("Could not save {}: Paper could not persist the full set of configuration settings in the configuration file. Any setting missing from the configuration file will be set with its default value in memory. Admins should make sure to review the configuration documentation at https://docs.papermc.io/paper/configuration for more details.", filename, ex);
|
||||||
|
- } else throw ex;
|
||||||
|
+ if (ex.getCause() instanceof AccessDeniedException) LOGGER.warn("Could not save {}: {} could not persist the full set of configuration settings in the configuration file. Any setting missing from the configuration file will be set with its default value in memory. Admins should make sure to review the configuration documentation at {} for more details.", filename, io.papermc.paper.ServerBrandConstants.BRAND_NAME, io.papermc.paper.ServerBrandConstants.CONFIG_REFERENCE, ex); else throw ex; // Plazma - Fork-friendly Rebranding
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
diff --git a/src/main/java/net/minecraft/CrashReport.java b/src/main/java/net/minecraft/CrashReport.java
|
||||||
|
index 710477ae27ebc5afdf0012ef0867d05efd293c24..3a5e7546c5cc1fcec880cece3f0d0b04ec23cc18 100644
|
||||||
|
--- a/src/main/java/net/minecraft/CrashReport.java
|
||||||
|
+++ b/src/main/java/net/minecraft/CrashReport.java
|
||||||
|
@@ -32,13 +32,13 @@ public class CrashReport {
|
||||||
|
private boolean trackingStackTrace = true;
|
||||||
|
private StackTraceElement[] uncategorizedStackTrace = new StackTraceElement[0];
|
||||||
|
private final SystemReport systemReport = new SystemReport();
|
||||||
|
- private List<String> extraInfo = List.of("", "DO NOT REPORT THIS TO PAPER! REPORT TO PURPUR INSTEAD!", ""); // Purpur - Rebrand
|
||||||
|
+ private List<String> extraInfo = List.of("", "DO NOT REPORT THIS TO PAPER OR PURPUR! REPORT TO " + io.papermc.paper.ServerBrandConstants.BRAND_NAME.toUpperCase() + " INSTEAD!", ""); // Purpur - Rebrand // Plazma - Fork-friendly Rebranding
|
||||||
|
|
||||||
|
public CrashReport(String message, Throwable cause) {
|
||||||
|
io.papermc.paper.util.StacktraceDeobfuscator.INSTANCE.deobfuscateThrowable(cause); // Paper
|
||||||
|
this.title = message;
|
||||||
|
this.exception = cause;
|
||||||
|
- this.systemReport.setDetail("CraftBukkit Information", new org.bukkit.craftbukkit.CraftCrashReport()); // CraftBukkit
|
||||||
|
+ this.systemReport.setDetail(io.papermc.paper.ServerBrandConstants.BRAND_NAME + " CraftBukkit Information", new org.bukkit.craftbukkit.CraftCrashReport()); // CraftBukkit // Plazma - Fork-friendly Rebranding
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getTitle() {
|
||||||
|
diff --git a/src/main/java/net/minecraft/server/Main.java b/src/main/java/net/minecraft/server/Main.java
|
||||||
|
index f0d762bd140fad27ae73bcf3e61b640b9e3f2592..3a9f7143505ba1a70bcd224ee8fef5c844a94ed1 100644
|
||||||
|
--- a/src/main/java/net/minecraft/server/Main.java
|
||||||
|
+++ b/src/main/java/net/minecraft/server/Main.java
|
||||||
|
@@ -108,6 +108,11 @@ public class Main {
|
||||||
|
*/ // CraftBukkit end
|
||||||
|
|
||||||
|
try {
|
||||||
|
+ // Plazma start - Fork-friendly Rebranding
|
||||||
|
+ //noinspection ConstantValue
|
||||||
|
+ if (io.papermc.paper.ServerBrandConstants.ASCII_LOGO != null)
|
||||||
|
+ System.out.println(io.papermc.paper.ServerBrandConstants.ASCII_LOGO);
|
||||||
|
+ // Plazma end - Fork-friendly Rebranding
|
||||||
|
|
||||||
|
Path path = (Path) optionset.valueOf("pidFile"); // CraftBukkit
|
||||||
|
|
||||||
|
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||||
|
index 1ad565ad881cb7efd4a3919c164f275006b4b789..b281048d9cb54d3acb53da8f722d00c1786f1fb6 100644
|
||||||
|
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||||
|
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||||
|
@@ -1277,7 +1277,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
||||||
|
LOGGER.info("*************************************************************************************");
|
||||||
|
LOGGER.info("This is the first time you're starting this server.");
|
||||||
|
LOGGER.info("It's recommended you read our 'Getting Started' documentation for guidance.");
|
||||||
|
- LOGGER.info("View this and more helpful information here: https://docs.papermc.io/paper/next-steps");
|
||||||
|
+ LOGGER.info("View this and more helpful information here: {}", io.papermc.paper.ServerBrandConstants.START_GUIDE); // Plazma - Fork-friendly Rebranding
|
||||||
|
LOGGER.info("*************************************************************************************");
|
||||||
|
}
|
||||||
|
// Paper end - Add onboarding message for initial server start
|
||||||
|
diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
|
||||||
|
index e9ad8e2ac267c46df80e884308df8bb12d0deeff..4aaeb0521a5e48a7d74a7968c952fcca7b6c0433 100644
|
||||||
|
--- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
|
||||||
|
+++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
|
||||||
|
@@ -775,7 +775,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
|
||||||
|
org.bukkit.plugin.Plugin[] plugins = this.server.getPluginManager().getPlugins();
|
||||||
|
|
||||||
|
result.append(this.server.getName());
|
||||||
|
- result.append(" on Bukkit ");
|
||||||
|
+ result.append(" on ").append(io.papermc.paper.ServerBrandConstants.BRAND_NAME).append(" "); // Plazma - Fork-friendly Rebranding
|
||||||
|
result.append(this.server.getBukkitVersion());
|
||||||
|
|
||||||
|
if (plugins.length > 0 && this.server.getQueryPlugins()) {
|
||||||
|
diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServerProperties.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServerProperties.java
|
||||||
|
index ee70e7a2f87ca31b1c2918148d585e90601d277b..568141881ffb26b425be452c79ecc146821ba1d9 100644
|
||||||
|
--- a/src/main/java/net/minecraft/server/dedicated/DedicatedServerProperties.java
|
||||||
|
+++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServerProperties.java
|
||||||
|
@@ -56,10 +56,10 @@ public class DedicatedServerProperties extends Settings<DedicatedServerPropertie
|
||||||
|
public final boolean onlineMode = this.get("online-mode", true);
|
||||||
|
public final boolean preventProxyConnections = this.get("prevent-proxy-connections", false);
|
||||||
|
public final String serverIp = this.get("server-ip", "");
|
||||||
|
- public final String serverName = this.get("server-name", "Unknown Server"); // Purpur
|
||||||
|
+ public final String serverName = this.get("server-name", "A " + io.papermc.paper.ServerBrandConstants.BRAND_NAME + " Server"); // Purpur // Plazma - Fork-friendly Rebranding
|
||||||
|
public final boolean pvp = this.get("pvp", true);
|
||||||
|
public final boolean allowFlight = this.get("allow-flight", false);
|
||||||
|
- public final String motd = this.get("motd", "A Minecraft Server");
|
||||||
|
+ public final String motd = this.get("motd", "A " + io.papermc.paper.ServerBrandConstants.BRAND_NAME + " Server"); // Plazma - Fork-friendly Rebranding
|
||||||
|
public final String bugReportLink = this.get("bug-report-link", "");
|
||||||
|
public final boolean forceGameMode = this.get("force-gamemode", false);
|
||||||
|
public final boolean enforceWhitelist = this.get("enforce-whitelist", false);
|
||||||
|
diff --git a/src/main/java/net/minecraft/server/gui/MinecraftServerGui.java b/src/main/java/net/minecraft/server/gui/MinecraftServerGui.java
|
||||||
|
index 8f74c2ec5252b6265549589310d742337c91cb2c..ecb5a046514e3cd448cbf633c728831b1eb5d30b 100644
|
||||||
|
--- a/src/main/java/net/minecraft/server/gui/MinecraftServerGui.java
|
||||||
|
+++ b/src/main/java/net/minecraft/server/gui/MinecraftServerGui.java
|
||||||
|
@@ -56,7 +56,7 @@ public class MinecraftServerGui extends JComponent {
|
||||||
|
;
|
||||||
|
}
|
||||||
|
|
||||||
|
- final JFrame jframe = new JFrame("Purpur Minecraft server"); // Purpur
|
||||||
|
+ final JFrame jframe = new JFrame(io.papermc.paper.ServerBrandConstants.BRAND_NAME + " Minecraft server"); // Purpur // Plazma - Fork-friendly Rebranding
|
||||||
|
final MinecraftServerGui servergui = new MinecraftServerGui(server);
|
||||||
|
|
||||||
|
jframe.setDefaultCloseOperation(2);
|
||||||
|
@@ -64,7 +64,7 @@ public class MinecraftServerGui extends JComponent {
|
||||||
|
jframe.pack();
|
||||||
|
jframe.setLocationRelativeTo((Component) null);
|
||||||
|
jframe.setVisible(true);
|
||||||
|
- jframe.setName("Purpur Minecraft server"); // Paper - Improve ServerGUI // Purpur
|
||||||
|
+ jframe.setName(io.papermc.paper.ServerBrandConstants.BRAND_NAME + " Minecraft server"); // Paper - Improve ServerGUI // Purpur // Plazma - Fork-friendly Rebranding
|
||||||
|
|
||||||
|
// Paper start - Improve ServerGUI
|
||||||
|
try {
|
||||||
|
@@ -76,7 +76,7 @@ public class MinecraftServerGui extends JComponent {
|
||||||
|
jframe.addWindowListener(new WindowAdapter() {
|
||||||
|
public void windowClosing(WindowEvent windowevent) {
|
||||||
|
if (!servergui.isClosing.getAndSet(true)) {
|
||||||
|
- jframe.setTitle("Purpur Minecraft server - shutting down!"); // Purpur
|
||||||
|
+ jframe.setTitle(io.papermc.paper.ServerBrandConstants.BRAND_NAME + " Minecraft server - shutting down!"); // Purpur // Plazma - Fork-friendly Rebranding
|
||||||
|
server.halt(true);
|
||||||
|
servergui.runFinalizers();
|
||||||
|
}
|
||||||
|
@@ -123,7 +123,7 @@ public class MinecraftServerGui extends JComponent {
|
||||||
|
|
||||||
|
// Paper start - Add onboarding message for initial server start
|
||||||
|
private JComponent buildOnboardingPanel() {
|
||||||
|
- String onboardingLink = "https://docs.papermc.io/paper/next-steps";
|
||||||
|
+ String onboardingLink = io.papermc.paper.ServerBrandConstants.USAGE_GUIDE; // Plazma - Fork-friendly Rebranding
|
||||||
|
JPanel jPanel = new JPanel();
|
||||||
|
|
||||||
|
javax.swing.JLabel jLabel = new javax.swing.JLabel("If you need help setting up your server you can visit:");
|
||||||
|
diff --git a/src/main/java/net/minecraft/world/damagesource/DamageSource.java b/src/main/java/net/minecraft/world/damagesource/DamageSource.java
|
||||||
|
index 4a96d914f8aa6f0c5f13fc85369a311f25835ac2..5b4285d6b37346bcea3bf072c6f00bd50c62e703 100644
|
||||||
|
--- a/src/main/java/net/minecraft/world/damagesource/DamageSource.java
|
||||||
|
+++ b/src/main/java/net/minecraft/world/damagesource/DamageSource.java
|
||||||
|
@@ -89,7 +89,7 @@ public class DamageSource {
|
||||||
|
|
||||||
|
public DamageSource customEventDamager(Entity entity) {
|
||||||
|
if (this.directEntity != null) {
|
||||||
|
- throw new IllegalStateException("Cannot set custom event damager when direct entity is already set (report a bug to Paper)");
|
||||||
|
+ throw new IllegalStateException("Cannot set custom event damager when direct entity is already set (report a bug to " + io.papermc.paper.ServerBrandConstants.BRAND_NAME + ")"); // Plazma - Fork-friendly Rebranding
|
||||||
|
}
|
||||||
|
DamageSource damageSource = this.cloneInstance();
|
||||||
|
damageSource.customEventDamager = entity;
|
||||||
|
diff --git a/src/main/java/net/minecraft/world/level/chunk/storage/RegionFileStorage.java b/src/main/java/net/minecraft/world/level/chunk/storage/RegionFileStorage.java
|
||||||
|
index 0dde7cd71a32e6c0cde6cbbaef585896a3d7dae7..9b4afcd708270225da272ba5278397ffe1f91403 100644
|
||||||
|
--- a/src/main/java/net/minecraft/world/level/chunk/storage/RegionFileStorage.java
|
||||||
|
+++ b/src/main/java/net/minecraft/world/level/chunk/storage/RegionFileStorage.java
|
||||||
|
@@ -274,7 +274,7 @@ public class RegionFileStorage implements AutoCloseable, ca.spottedleaf.moonrise
|
||||||
|
|
||||||
|
// Paper start
|
||||||
|
private static void printOversizedLog(String msg, Path file, int x, int z) {
|
||||||
|
- org.apache.logging.log4j.LogManager.getLogger().fatal(msg + " (" + file.toString().replaceAll(".+[\\\\/]", "") + " - " + x + "," + z + ") Go clean it up to remove this message. /minecraft:tp " + (x<<4)+" 128 "+(z<<4) + " - DO NOT REPORT THIS TO PURPUR - You may ask for help on Discord, but do not file an issue. These error messages can not be removed."); // Purpur
|
||||||
|
+ org.apache.logging.log4j.LogManager.getLogger().fatal(msg + " (" + file.toString().replaceAll(".+[\\\\/]", "") + " - " + x + "," + z + ") Go clean it up to remove this message. /minecraft:tp " + (x<<4)+" 128 "+(z<<4) + " - DO NOT REPORT THIS TO " + io.papermc.paper.ServerBrandConstants.BRAND_NAME + " - You may ask for help on Discord, but do not file an issue. These error messages can not be removed."); // Purpur // Plazma - Fork-friendly Rebranding
|
||||||
|
}
|
||||||
|
|
||||||
|
private static CompoundTag readOversizedChunk(RegionFile regionfile, ChunkPos chunkCoordinate) throws IOException {
|
||||||
|
diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java
|
||||||
|
index b2d60b214b58d9a5fadf3629e5ebc358c904d1c6..f9ee08eae4a1e1c6490e4682901609c0e4d52579 100644
|
||||||
|
--- a/src/main/java/org/bukkit/craftbukkit/Main.java
|
||||||
|
+++ b/src/main/java/org/bukkit/craftbukkit/Main.java
|
||||||
|
@@ -143,7 +143,7 @@ public class Main {
|
||||||
|
|
||||||
|
this.acceptsAll(Main.asList("noconsole"), "Disables the console");
|
||||||
|
|
||||||
|
- this.acceptsAll(Main.asList("v", "version"), "Show the CraftBukkit Version");
|
||||||
|
+ this.acceptsAll(Main.asList("v", "version"), "Show the " + io.papermc.paper.ServerBrandConstants.BRAND_NAME + " Version"); // Plazma - Fork-friendly Rebranding
|
||||||
|
|
||||||
|
this.acceptsAll(Main.asList("demo"), "Demo mode");
|
||||||
|
|
||||||
|
@@ -188,7 +188,7 @@ public class Main {
|
||||||
|
acceptsAll(asList("server-name"), "Name of the server")
|
||||||
|
.withRequiredArg()
|
||||||
|
.ofType(String.class)
|
||||||
|
- .defaultsTo("Unknown Server")
|
||||||
|
+ .defaultsTo("A " + io.papermc.paper.ServerBrandConstants.BRAND_NAME + " Server") // Plazma - Fork-friendly Rebranding
|
||||||
|
.describedAs("Name");
|
||||||
|
// Paper end
|
||||||
|
}
|
||||||
|
diff --git a/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java b/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java
|
||||||
|
index c914e1e13c4f64f24efa5f825e58efb69632bfa6..c558a2621381cf54661fd3926a00982af2037365 100644
|
||||||
|
--- a/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java
|
||||||
|
+++ b/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java
|
||||||
|
@@ -491,7 +491,7 @@ public class CraftScheduler implements BukkitScheduler {
|
||||||
|
this.parsePending();
|
||||||
|
} else {
|
||||||
|
// this.debugTail = this.debugTail.setNext(new CraftAsyncDebugger(this.currentTick + CraftScheduler.RECENT_TICKS, task.getOwner(), task.getTaskClass())); // Paper
|
||||||
|
- task.getOwner().getLogger().log(Level.SEVERE, "Unexpected Async Task in the Sync Scheduler. Report this to Purpur"); // Paper // Purpur
|
||||||
|
+ task.getOwner().getLogger().log(Level.SEVERE, "Unexpected Async Task in the Sync Scheduler. Report this to " + io.papermc.paper.ServerBrandConstants.BRAND_NAME); // Paper // Purpur // Plazma - Fork-friendly Rebranding
|
||||||
|
// We don't need to parse pending
|
||||||
|
// (async tasks must live with race-conditions if they attempt to cancel between these few lines of code)
|
||||||
|
}
|
||||||
|
diff --git a/src/main/java/org/bukkit/craftbukkit/util/Versioning.java b/src/main/java/org/bukkit/craftbukkit/util/Versioning.java
|
||||||
|
index 99597258e8e88cd9e2c901c4ac3ff7faeeabee2b..e0414f59b7c5ef149d8e52ebf76dc3e46d9de4d3 100644
|
||||||
|
--- a/src/main/java/org/bukkit/craftbukkit/util/Versioning.java
|
||||||
|
+++ b/src/main/java/org/bukkit/craftbukkit/util/Versioning.java
|
||||||
|
@@ -11,7 +11,7 @@ public final class Versioning {
|
||||||
|
public static String getBukkitVersion() {
|
||||||
|
String result = "Unknown-Version";
|
||||||
|
|
||||||
|
- InputStream stream = Bukkit.class.getClassLoader().getResourceAsStream("META-INF/maven/org.purpurmc.purpur/purpur-api/pom.properties"); // Pufferfish // Purpur
|
||||||
|
+ InputStream stream = Bukkit.class.getClassLoader().getResourceAsStream(io.papermc.paper.ServerBrandConstants.RESOURCE_PATH); // Pufferfish // Purpur // Plazma - Fork-friendly Rebranding
|
||||||
|
Properties properties = new Properties();
|
||||||
|
|
||||||
|
if (stream != null) {
|
||||||
|
@@ -20,7 +20,7 @@ public final class Versioning {
|
||||||
|
|
||||||
|
result = properties.getProperty("version");
|
||||||
|
} catch (IOException ex) {
|
||||||
|
- Logger.getLogger(Versioning.class.getName()).log(Level.SEVERE, "Could not get Bukkit version!", ex);
|
||||||
|
+ Logger.getLogger(Versioning.class.getName()).log(Level.SEVERE, "Could not get " + io.papermc.paper.ServerBrandConstants.BRAND_NAME + " version!", ex); // Plazma - Fork-friendly Rebranding
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
diff --git a/src/main/java/org/spigotmc/WatchdogThread.java b/src/main/java/org/spigotmc/WatchdogThread.java
|
||||||
|
index f51cc3de3ca935ef90f7f0e9dd0506b856fc55f3..d889d964067058762fcffab9945fe586ce8d2a07 100644
|
||||||
|
--- a/src/main/java/org/spigotmc/WatchdogThread.java
|
||||||
|
+++ b/src/main/java/org/spigotmc/WatchdogThread.java
|
||||||
|
@@ -155,14 +155,14 @@ public class WatchdogThread extends ca.spottedleaf.moonrise.common.util.TickThre
|
||||||
|
if (isLongTimeout) {
|
||||||
|
// Paper end
|
||||||
|
log.log( Level.SEVERE, "------------------------------" );
|
||||||
|
- log.log( Level.SEVERE, "The server has stopped responding! This is (probably) not a Purpur bug." ); // Paper // Purpur
|
||||||
|
+ log.log( Level.SEVERE, "The server has stopped responding! This is (probably) not a " + io.papermc.paper.ServerBrandConstants.BRAND_NAME + " bug." ); // Paper // Purpur // Plazma - Fork-friendly Rebranding
|
||||||
|
log.log( Level.SEVERE, "If you see a plugin in the Server thread dump below, then please report it to that author" );
|
||||||
|
log.log( Level.SEVERE, "\t *Especially* if it looks like HTTP or MySQL operations are occurring" );
|
||||||
|
log.log( Level.SEVERE, "If you see a world save or edit, then it means you did far more than your server can handle at once" );
|
||||||
|
log.log( Level.SEVERE, "\t If this is the case, consider increasing timeout-time in spigot.yml but note that this will replace the crash with LARGE lag spikes" );
|
||||||
|
- log.log( Level.SEVERE, "If you are unsure or still think this is a Purpur bug, please report this to https://github.com/PurpurMC/Purpur/issues" ); // Purpur
|
||||||
|
+ log.log( Level.SEVERE, "If you are unsure or still think this is a " + io.papermc.paper.ServerBrandConstants.BRAND_NAME + " bug, please report this to " + io.papermc.paper.ServerBrandConstants.SUPPORT_PAGE ); // Purpur // Plazma - Fork-friendly Rebranding
|
||||||
|
log.log( Level.SEVERE, "Be sure to include ALL relevant console errors and Minecraft crash reports" );
|
||||||
|
- log.log( Level.SEVERE, "Purpur version: " + Bukkit.getServer().getVersion() ); // Purpur
|
||||||
|
+ log.log( Level.SEVERE, io.papermc.paper.ServerBrandConstants.BRAND_NAME + " version: " + Bukkit.getServer().getVersion() ); // Purpur // Plazma - Fork-friendly Rebranding
|
||||||
|
//
|
||||||
|
if ( net.minecraft.world.level.Level.lastPhysicsProblem != null )
|
||||||
|
{
|
||||||
|
@@ -184,12 +184,12 @@ public class WatchdogThread extends ca.spottedleaf.moonrise.common.util.TickThre
|
||||||
|
// Paper end
|
||||||
|
} else
|
||||||
|
{
|
||||||
|
- log.log(Level.SEVERE, "--- DO NOT REPORT THIS TO PURPUR - THIS IS NOT A BUG OR A CRASH - " + Bukkit.getServer().getVersion() + " ---"); // Purpur
|
||||||
|
+ log.log(Level.SEVERE, "--- DO NOT REPORT THIS TO " + io.papermc.paper.ServerBrandConstants.BRAND_NAME.toUpperCase() + " - THIS IS NOT A BUG OR A CRASH - " + Bukkit.getServer().getVersion() + " ---"); // Purpur // Plazma - Fork-friendly Rebranding
|
||||||
|
log.log(Level.SEVERE, "The server has not responded for " + (currentTime - lastTick) / 1000 + " seconds! Creating thread dump");
|
||||||
|
}
|
||||||
|
// Paper end - Different message for short timeout
|
||||||
|
log.log( Level.SEVERE, "------------------------------" );
|
||||||
|
- log.log( Level.SEVERE, "Server thread dump (Look for plugins here before reporting to Purpur!):" ); // Paper // Purpur
|
||||||
|
+ log.log( Level.SEVERE, "Server thread dump (Look for plugins here before reporting to " + io.papermc.paper.ServerBrandConstants.BRAND_NAME + "!):" ); // Paper // Purpur // Plazma - Fork-friendly Rebranding
|
||||||
|
ca.spottedleaf.moonrise.patches.chunk_system.scheduling.ChunkTaskScheduler.dumpAllChunkLoadInfo(MinecraftServer.getServer(), isLongTimeout); // Paper - rewrite chunk system
|
||||||
|
this.dumpTickingInfo(); // Paper - log detailed tick information
|
||||||
|
WatchdogThread.dumpThread( ManagementFactory.getThreadMXBean().getThreadInfo( MinecraftServer.getServer().serverThread.getId(), Integer.MAX_VALUE ), log );
|
||||||
|
@@ -205,7 +205,7 @@ public class WatchdogThread extends ca.spottedleaf.moonrise.common.util.TickThre
|
||||||
|
WatchdogThread.dumpThread( thread, log );
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
- log.log(Level.SEVERE, "--- DO NOT REPORT THIS TO PURPUR - THIS IS NOT A BUG OR A CRASH ---"); // Purpur
|
||||||
|
+ log.log(Level.SEVERE, "--- DO NOT REPORT THIS TO " + io.papermc.paper.ServerBrandConstants.BRAND_NAME + " - THIS IS NOT A BUG OR A CRASH ---"); // Purpur // Plazma - Fork-friendly Rebranding
|
||||||
|
}
|
||||||
|
|
||||||
|
log.log( Level.SEVERE, "------------------------------" );
|
||||||
@@ -1,382 +0,0 @@
|
|||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: AlphaKR93 <alphakr93@outlook.com>
|
|
||||||
Date: Wed, 21 Dec 2022 19:31:24 +0900
|
|
||||||
Subject: [PATCH] Rebrand
|
|
||||||
|
|
||||||
|
|
||||||
diff --git a/build.gradle.kts b/build.gradle.kts
|
|
||||||
index 3d5397e2e7edf2ea1e1687c58126fd9a5d5d5736..8a12e0dda9d03f265603b80c9fa108eea736ae84 100644
|
|
||||||
--- a/build.gradle.kts
|
|
||||||
+++ b/build.gradle.kts
|
|
||||||
@@ -14,7 +14,7 @@ val alsoShade: Configuration by configurations.creating
|
|
||||||
|
|
||||||
dependencies {
|
|
||||||
// Purpur start
|
|
||||||
- implementation(project(":purpur-api"))
|
|
||||||
+ implementation(project(":plazma-api"))
|
|
||||||
implementation("io.papermc.paper:paper-mojangapi:${project.version}") {
|
|
||||||
exclude("io.papermc.paper", "paper-api")
|
|
||||||
}
|
|
||||||
@@ -95,7 +95,7 @@ tasks.jar {
|
|
||||||
attributes(
|
|
||||||
"Main-Class" to "org.bukkit.craftbukkit.Main",
|
|
||||||
"Implementation-Title" to "CraftBukkit",
|
|
||||||
- "Implementation-Version" to "git-Purpur-$implementationVersion", // Pufferfish // Purpur
|
|
||||||
+ "Implementation-Version" to "git-Plazma-$implementationVersion", // Pufferfish // Purpur
|
|
||||||
"Implementation-Vendor" to date, // Paper
|
|
||||||
"Specification-Title" to "Bukkit",
|
|
||||||
"Specification-Version" to project.version,
|
|
||||||
diff --git a/src/main/java/com/destroystokyo/paper/Metrics.java b/src/main/java/com/destroystokyo/paper/Metrics.java
|
|
||||||
index 8cde30544e14f8fc2dac32966ae3c21f8cf3a551..7d80d2cf5d607d6051e99e4b08bc1b76098a79da 100644
|
|
||||||
--- a/src/main/java/com/destroystokyo/paper/Metrics.java
|
|
||||||
+++ b/src/main/java/com/destroystokyo/paper/Metrics.java
|
|
||||||
@@ -593,7 +593,7 @@ public class Metrics {
|
|
||||||
boolean logFailedRequests = config.getBoolean("logFailedRequests", false);
|
|
||||||
// Only start Metrics, if it's enabled in the config
|
|
||||||
if (config.getBoolean("enabled", true)) {
|
|
||||||
- Metrics metrics = new Metrics("Purpur", serverUUID, logFailedRequests, Bukkit.getLogger()); // Pufferfish // Purpur
|
|
||||||
+ Metrics metrics = new Metrics("Plazma", serverUUID, logFailedRequests, Bukkit.getLogger()); // Pufferfish // Purpur // Plazma
|
|
||||||
|
|
||||||
metrics.addCustomChart(new Metrics.SimplePie("minecraft_version", () -> {
|
|
||||||
String minecraftVersion = Bukkit.getVersion();
|
|
||||||
@@ -603,7 +603,7 @@ public class Metrics {
|
|
||||||
|
|
||||||
metrics.addCustomChart(new Metrics.SingleLineChart("players", () -> Bukkit.getOnlinePlayers().size()));
|
|
||||||
metrics.addCustomChart(new Metrics.SimplePie("online_mode", () -> Bukkit.getOnlineMode() ? "online" : (io.papermc.paper.configuration.GlobalConfiguration.get().proxies.isProxyOnlineMode() ? "bungee" : "offline"))); // Purpur
|
|
||||||
- metrics.addCustomChart(new Metrics.SimplePie("purpur_version", () -> (org.bukkit.craftbukkit.Main.class.getPackage().getImplementationVersion() != null) ? org.bukkit.craftbukkit.Main.class.getPackage().getImplementationVersion() : "unknown")); // Purpur
|
|
||||||
+ metrics.addCustomChart(new Metrics.SimplePie("plazma_version", () -> (org.bukkit.craftbukkit.Main.class.getPackage().getImplementationVersion() != null) ? org.bukkit.craftbukkit.Main.class.getPackage().getImplementationVersion() : "unknown")); // Purpur // Plazma
|
|
||||||
|
|
||||||
metrics.addCustomChart(new Metrics.DrilldownPie("java_version", () -> {
|
|
||||||
Map<String, Map<String, Integer>> map = new HashMap<>();
|
|
||||||
diff --git a/src/main/java/com/destroystokyo/paper/PaperVersionFetcher.java b/src/main/java/com/destroystokyo/paper/PaperVersionFetcher.java
|
|
||||||
index 462a6eed350fd660ddaf25d567bb6e97b77d0b2b..fec95437c1ad602f64c4d4d02c276199f27babbd 100644
|
|
||||||
--- a/src/main/java/com/destroystokyo/paper/PaperVersionFetcher.java
|
|
||||||
+++ b/src/main/java/com/destroystokyo/paper/PaperVersionFetcher.java
|
|
||||||
@@ -20,7 +20,7 @@ import java.util.stream.StreamSupport;
|
|
||||||
public class PaperVersionFetcher implements VersionFetcher {
|
|
||||||
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
|
|
||||||
// Purpur start
|
|
||||||
- private static final String DOWNLOAD_PAGE = "https://purpurmc.org/downloads";
|
|
||||||
+ private static final String DOWNLOAD_PAGE = "https://github.com/PlazmaMC/Plazma/releases"; // Plazma
|
|
||||||
private static int distance = -2; public int distance() { return distance; }
|
|
||||||
// Purpur end
|
|
||||||
private static @Nullable String mcVer;
|
|
||||||
@@ -33,8 +33,8 @@ public class PaperVersionFetcher implements VersionFetcher {
|
|
||||||
@Nonnull
|
|
||||||
@Override
|
|
||||||
public Component getVersionMessage(@Nonnull String serverVersion) {
|
|
||||||
- String[] parts = serverVersion.substring("git-Purpur-".length()).split("[-\\s]"); // Purpur
|
|
||||||
- final Component updateMessage = getUpdateStatusMessage("PurpurMC/Purpur", "ver/" + getMinecraftVersion(), parts[0]); // Purpur
|
|
||||||
+ String[] parts = serverVersion.substring("git-Plazma-".length()).split("[-\\s]"); // Purpur // Plazma
|
|
||||||
+ final Component updateMessage = getUpdateStatusMessage("PlazmaMC/Plazma", "ver/" + getMinecraftVersion(), parts[0]); // Purpur // Plazma
|
|
||||||
final Component history = getHistory();
|
|
||||||
|
|
||||||
return history != null ? Component.join(net.kyori.adventure.text.JoinConfiguration.separator(Component.newline()), history, updateMessage) : updateMessage; // Purpur
|
|
||||||
@@ -47,7 +47,7 @@ public class PaperVersionFetcher implements VersionFetcher {
|
|
||||||
String result = matcher.group();
|
|
||||||
mcVer = result.substring(0, result.length() - 2); // strip 'R' anchor and trailing '-'
|
|
||||||
} else {
|
|
||||||
- org.bukkit.Bukkit.getLogger().warning("Unable to match version to pattern! Report to Purpur!"); // Purpur
|
|
||||||
+ org.bukkit.Bukkit.getLogger().warning("Unable to match version to pattern! Report to Plazma!"); // Purpur // Plazma
|
|
||||||
org.bukkit.Bukkit.getLogger().warning("Pattern: " + VER_PATTERN.toString());
|
|
||||||
org.bukkit.Bukkit.getLogger().warning("Version: " + org.bukkit.Bukkit.getBukkitVersion());
|
|
||||||
}
|
|
||||||
@@ -57,6 +57,7 @@ public class PaperVersionFetcher implements VersionFetcher {
|
|
||||||
}
|
|
||||||
|
|
||||||
private static Component getUpdateStatusMessage(@Nonnull String repo, @Nonnull String branch, @Nonnull String versionInfo) {
|
|
||||||
+ /* // Plazma - Disable CI Checking
|
|
||||||
//int distance; // Purpur - use field
|
|
||||||
try {
|
|
||||||
int jenkinsBuild = Integer.parseInt(versionInfo);
|
|
||||||
@@ -65,6 +66,11 @@ public class PaperVersionFetcher implements VersionFetcher {
|
|
||||||
versionInfo = versionInfo.replace("\"", "");
|
|
||||||
distance = fetchDistanceFromGitHub(repo, branch, versionInfo);
|
|
||||||
}
|
|
||||||
+ // Plazma start - Disable CI Checking
|
|
||||||
+ */
|
|
||||||
+ versionInfo = versionInfo.replace("\"", ""); // Plazma
|
|
||||||
+ distance = fetchDistanceFromGitHub(repo, branch, versionInfo); // Plazma
|
|
||||||
+ // Plazma end
|
|
||||||
|
|
||||||
switch (distance) {
|
|
||||||
case -1:
|
|
||||||
@@ -83,6 +89,7 @@ public class PaperVersionFetcher implements VersionFetcher {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
+ /* // Plazma - Disable CI Checking
|
|
||||||
private static int fetchDistanceFromSiteApi(int jenkinsBuild, @Nullable String siteApiVersion) {
|
|
||||||
if (siteApiVersion == null) { return -1; }
|
|
||||||
try {
|
|
||||||
@@ -102,6 +109,7 @@ public class PaperVersionFetcher implements VersionFetcher {
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
+ */ // Plazma - Disable CI Checking
|
|
||||||
|
|
||||||
// Contributed by Techcable <Techcable@outlook.com> in GH-65
|
|
||||||
private static int fetchDistanceFromGitHub(@Nonnull String repo, @Nonnull String branch, @Nonnull String hash) {
|
|
||||||
diff --git a/src/main/java/com/destroystokyo/paper/console/PaperConsole.java b/src/main/java/com/destroystokyo/paper/console/PaperConsole.java
|
|
||||||
index 3cb56595822799926a8141e60a42f5d1edfc6de5..19d1d136fc28d6c114f6bc44c6450d2df51c3cb9 100644
|
|
||||||
--- a/src/main/java/com/destroystokyo/paper/console/PaperConsole.java
|
|
||||||
+++ b/src/main/java/com/destroystokyo/paper/console/PaperConsole.java
|
|
||||||
@@ -17,7 +17,7 @@ public final class PaperConsole extends SimpleTerminalConsole {
|
|
||||||
@Override
|
|
||||||
protected LineReader buildReader(LineReaderBuilder builder) {
|
|
||||||
builder
|
|
||||||
- .appName("Purpur") // Purpur
|
|
||||||
+ .appName("Plazma") // Purpur // Plazma
|
|
||||||
.variable(LineReader.HISTORY_FILE, java.nio.file.Paths.get(".console_history"))
|
|
||||||
.completer(new ConsoleCommandCompleter(this.server))
|
|
||||||
.option(LineReader.Option.COMPLETE_IN_WORD, true);
|
|
||||||
diff --git a/src/main/java/net/minecraft/CrashReport.java b/src/main/java/net/minecraft/CrashReport.java
|
|
||||||
index b5b6657e52e4f7a630229bd3ba433438af293e22..c468733f44ccb3ff4ba3c20921a4ec52658f0689 100644
|
|
||||||
--- a/src/main/java/net/minecraft/CrashReport.java
|
|
||||||
+++ b/src/main/java/net/minecraft/CrashReport.java
|
|
||||||
@@ -35,7 +35,7 @@ public class CrashReport {
|
|
||||||
io.papermc.paper.util.StacktraceDeobfuscator.INSTANCE.deobfuscateThrowable(cause); // Paper
|
|
||||||
this.title = message;
|
|
||||||
this.exception = cause;
|
|
||||||
- this.systemReport.setDetail("CraftBukkit Information", new org.bukkit.craftbukkit.CraftCrashReport()); // CraftBukkit
|
|
||||||
+ this.systemReport.setDetail("Plazma Information", new org.bukkit.craftbukkit.CraftCrashReport()); // CraftBukkit // Plazma
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getTitle() {
|
|
||||||
@@ -125,7 +125,7 @@ public class CrashReport {
|
|
||||||
stringbuilder.append("---- Minecraft Crash Report ----\n");
|
|
||||||
// Purpur start
|
|
||||||
stringbuilder.append("// ");
|
|
||||||
- stringbuilder.append("// DO NOT REPORT THIS TO PAPER! REPORT TO PURPUR INSTEAD!");
|
|
||||||
+ stringbuilder.append("// DO NOT REPORT THIS TO PAPER OR PURPUR! REPORT TO PLAZMA INSTEAD!"); // Plazma
|
|
||||||
// Purpur end
|
|
||||||
stringbuilder.append("// ");
|
|
||||||
stringbuilder.append(CrashReport.getErrorComment());
|
|
||||||
diff --git a/src/main/java/net/minecraft/server/Main.java b/src/main/java/net/minecraft/server/Main.java
|
|
||||||
index a7ebf851a65231074c89a24f30de4ac2fb5b63e4..ed7bcd832340a7a46897f0275c99e72b7247a5de 100644
|
|
||||||
--- a/src/main/java/net/minecraft/server/Main.java
|
|
||||||
+++ b/src/main/java/net/minecraft/server/Main.java
|
|
||||||
@@ -111,6 +111,18 @@ public class Main {
|
|
||||||
*/ // CraftBukkit end
|
|
||||||
|
|
||||||
try {
|
|
||||||
+ // Plazma start - Branding
|
|
||||||
+ System.out.println("""
|
|
||||||
+ \033[38;2;236;61;151m┏\033[38;2;236;61;157m━\033[38;2;237;62;163m━\033[38;2;237;62;169m━\033[38;2;238;62;175m━\033[38;2;238;63;181m━\033[38;2;239;63;187m┓\033[38;2;239;63;193m \033[38;2;239;64;200m┏\033[38;2;240;64;206m━\033[38;2;240;64;212m┓\033[38;2;241;65;218m \033[38;2;241;65;224m \033[38;2;242;65;230m \033[38;2;242;66;236m \033[38;2;242;66;242m \033[38;2;237;66;243m \033[38;2;232;67;243m┏\033[38;2;227;67;244m━\033[38;2;221;67;244m━\033[38;2;216;68;244m━\033[38;2;211;68;245m━\033[38;2;205;69;245m┓\033[38;2;200;69;246m \033[38;2;195;69;246m┏\033[38;2;189;70;246m━\033[38;2;184;70;247m━\033[38;2;179;70;247m━\033[38;2;173;71;247m━\033[38;2;168;71;248m━\033[38;2;163;72;248m━\033[38;2;157;72;249m┓\033[38;2;152;72;249m┏\033[38;2;147;73;249m━\033[38;2;141;73;250m━\033[38;2;136;74;250m┓\033[38;2;131;74;250m \033[38;2;125;74;251m \033[38;2;120;75;251m \033[38;2;115;75;251m┏\033[38;2;109;76;252m━\033[38;2;104;76;252m━\033[38;2;99;77;252m┓\033[38;2;94;77;253m \033[38;2;88;77;253m┏\033[38;2;83;78;253m━\033[38;2;78;79;254m━\033[38;2;79;85;254m━\033[38;2;79;91;254m━\033[38;2;80;97;255m┓\033[38;2;80;103;255m\s
|
|
||||||
+ \033[38;2;236;61;151m┃\033[38;2;236;61;157m┏\033[38;2;237;62;163m━\033[38;2;237;62;169m━\033[38;2;238;62;175m━\033[38;2;238;63;181m┓\033[38;2;239;63;187m┗\033[38;2;239;63;193m┓\033[38;2;239;64;200m┃\033[38;2;240;64;206m \033[38;2;240;64;212m┃\033[38;2;241;65;218m \033[38;2;241;65;224m \033[38;2;242;65;230m \033[38;2;242;66;236m \033[38;2;242;66;242m \033[38;2;237;66;243m┏\033[38;2;232;67;243m┛\033[38;2;227;67;244m┏\033[38;2;221;67;244m━\033[38;2;216;68;244m━\033[38;2;211;68;245m┓\033[38;2;205;69;245m┗\033[38;2;200;69;246m┓\033[38;2;195;69;246m┗\033[38;2;189;70;246m━\033[38;2;184;70;247m━\033[38;2;179;70;247m┓\033[38;2;173;71;247m \033[38;2;168;71;248m \033[38;2;163;72;248m┏\033[38;2;157;72;249m┛\033[38;2;152;72;249m┃\033[38;2;147;73;249m \033[38;2;141;73;250m \033[38;2;136;74;250m┗\033[38;2;131;74;250m┓\033[38;2;125;74;251m \033[38;2;120;75;251m┏\033[38;2;115;75;251m┛\033[38;2;109;76;252m \033[38;2;104;76;252m \033[38;2;99;77;252m┃\033[38;2;94;77;253m┏\033[38;2;88;77;253m┛\033[38;2;83;78;253m┏\033[38;2;78;79;254m━\033[38;2;79;85;254m━\033[38;2;79;91;254m┓\033[38;2;80;97;255m┗\033[38;2;80;103;255m┓
|
|
||||||
+ \033[38;2;236;61;151m┃\033[38;2;236;61;157m┗\033[38;2;237;62;163m━\033[38;2;237;62;169m━\033[38;2;238;62;175m━\033[38;2;238;63;181m┛\033[38;2;239;63;187m┏\033[38;2;239;63;193m┛\033[38;2;239;64;200m┃\033[38;2;240;64;206m \033[38;2;240;64;212m┃\033[38;2;241;65;218m \033[38;2;241;65;224m \033[38;2;242;65;230m \033[38;2;242;66;236m \033[38;2;242;66;242m \033[38;2;237;66;243m┃\033[38;2;232;67;243m \033[38;2;227;67;244m┗\033[38;2;221;67;244m━\033[38;2;216;68;244m━\033[38;2;211;68;245m┛\033[38;2;205;69;245m \033[38;2;200;69;246m┃\033[38;2;195;69;246m \033[38;2;189;70;246m \033[38;2;184;70;247m┏\033[38;2;179;70;247m┛\033[38;2;173;71;247m \033[38;2;168;71;248m┏\033[38;2;163;72;248m┛\033[38;2;157;72;249m \033[38;2;152;72;249m┃\033[38;2;147;73;249m \033[38;2;141;73;250m┏\033[38;2;136;74;250m┓\033[38;2;131;74;250m┗\033[38;2;125;74;251m━\033[38;2;120;75;251m┛\033[38;2;115;75;251m┏\033[38;2;109;76;252m┓\033[38;2;104;76;252m \033[38;2;99;77;252m┃\033[38;2;94;77;253m┃\033[38;2;88;77;253m \033[38;2;83;78;253m┗\033[38;2;78;79;254m━\033[38;2;79;85;254m━\033[38;2;79;91;254m┛\033[38;2;80;97;255m \033[38;2;80;103;255m┃
|
|
||||||
+ \033[38;2;236;61;151m┃\033[38;2;236;61;157m \033[38;2;237;62;163m┏\033[38;2;237;62;169m━\033[38;2;238;62;175m━\033[38;2;238;63;181m━\033[38;2;239;63;187m┛\033[38;2;239;63;193m \033[38;2;239;64;200m┃\033[38;2;240;64;206m \033[38;2;240;64;212m┃\033[38;2;241;65;218m \033[38;2;241;65;224m \033[38;2;242;65;230m \033[38;2;242;66;236m \033[38;2;242;66;242m \033[38;2;237;66;243m┃\033[38;2;232;67;243m \033[38;2;227;67;244m┏\033[38;2;221;67;244m━\033[38;2;216;68;244m━\033[38;2;211;68;245m┓\033[38;2;205;69;245m \033[38;2;200;69;246m┃\033[38;2;195;69;246m \033[38;2;189;70;246m┏\033[38;2;184;70;247m┛\033[38;2;179;70;247m \033[38;2;173;71;247m┏\033[38;2;168;71;248m┛\033[38;2;163;72;248m \033[38;2;157;72;249m \033[38;2;152;72;249m┃\033[38;2;147;73;249m \033[38;2;141;73;250m┃\033[38;2;136;74;250m┗\033[38;2;131;74;250m┓\033[38;2;125;74;251m \033[38;2;120;75;251m┏\033[38;2;115;75;251m┛\033[38;2;109;76;252m┃\033[38;2;104;76;252m \033[38;2;99;77;252m┃\033[38;2;94;77;253m┃\033[38;2;88;77;253m \033[38;2;83;78;253m┏\033[38;2;78;79;254m━\033[38;2;79;85;254m━\033[38;2;79;91;254m┓\033[38;2;80;97;255m \033[38;2;80;103;255m┃
|
|
||||||
+ \033[38;2;236;61;151m┃\033[38;2;236;61;157m \033[38;2;237;62;163m┃\033[38;2;237;62;169m \033[38;2;238;62;175m \033[38;2;238;63;181m \033[38;2;239;63;187m \033[38;2;239;63;193m \033[38;2;239;64;200m┃\033[38;2;240;64;206m \033[38;2;240;64;212m┗\033[38;2;241;65;218m━\033[38;2;241;65;224m━\033[38;2;242;65;230m━\033[38;2;242;66;236m━\033[38;2;242;66;242m┓\033[38;2;237;66;243m┃\033[38;2;232;67;243m \033[38;2;227;67;244m┃\033[38;2;221;67;244m \033[38;2;216;68;244m \033[38;2;211;68;245m┃\033[38;2;205;69;245m \033[38;2;200;69;246m┃\033[38;2;195;69;246m┏\033[38;2;189;70;246m┛\033[38;2;184;70;247m \033[38;2;179;70;247m \033[38;2;173;71;247m┗\033[38;2;168;71;248m━\033[38;2;163;72;248m━\033[38;2;157;72;249m┓\033[38;2;152;72;249m┃\033[38;2;147;73;249m \033[38;2;141;73;250m┃\033[38;2;136;74;250m \033[38;2;131;74;250m┗\033[38;2;125;74;251m━\033[38;2;120;75;251m┛\033[38;2;115;75;251m \033[38;2;109;76;252m┃\033[38;2;104;76;252m \033[38;2;99;77;252m┃\033[38;2;94;77;253m┃\033[38;2;88;77;253m \033[38;2;83;78;253m┃\033[38;2;78;79;254m \033[38;2;79;85;254m \033[38;2;79;91;254m┃\033[38;2;80;97;255m \033[38;2;80;103;255m┃
|
|
||||||
+ \033[38;2;236;61;151m┗\033[38;2;236;61;157m━\033[38;2;237;62;163m┛\033[38;2;237;62;169m \033[38;2;238;62;175m \033[38;2;238;63;181m \033[38;2;239;63;187m \033[38;2;239;63;193m \033[38;2;239;64;200m┗\033[38;2;240;64;206m━\033[38;2;240;64;212m━\033[38;2;241;65;218m━\033[38;2;241;65;224m━\033[38;2;242;65;230m━\033[38;2;242;66;236m━\033[38;2;242;66;242m┛\033[38;2;237;66;243m┗\033[38;2;232;67;243m━\033[38;2;227;67;244m┛\033[38;2;221;67;244m \033[38;2;216;68;244m \033[38;2;211;68;245m┗\033[38;2;205;69;245m━\033[38;2;200;69;246m┛\033[38;2;195;69;246m┗\033[38;2;189;70;246m━\033[38;2;184;70;247m━\033[38;2;179;70;247m━\033[38;2;173;71;247m━\033[38;2;168;71;248m━\033[38;2;163;72;248m━\033[38;2;157;72;249m┛\033[38;2;152;72;249m┗\033[38;2;147;73;249m━\033[38;2;141;73;250m┛\033[38;2;136;74;250m \033[38;2;131;74;250m \033[38;2;125;74;251m \033[38;2;120;75;251m \033[38;2;115;75;251m \033[38;2;109;76;252m┗\033[38;2;104;76;252m━\033[38;2;99;77;252m┛\033[38;2;94;77;253m┗\033[38;2;88;77;253m━\033[38;2;83;78;253m┛\033[38;2;78;79;254m \033[38;2;79;85;254m \033[38;2;79;91;254m┗\033[38;2;80;97;255m━\033[38;2;80;103;255m┛
|
|
||||||
+ """);
|
|
||||||
+ LOGGER.warn("Warning! Plazma may cause unexpected problems, so be sure to test it thoroughly before using it on a public server.");
|
|
||||||
+ // Plazma end
|
|
||||||
+
|
|
||||||
// Paper start
|
|
||||||
if (Boolean.getBoolean("Paper.isRunDev")) {
|
|
||||||
net.minecraft.server.packs.VanillaPackResourcesBuilder.developmentConfig = builder -> {
|
|
||||||
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
|
|
||||||
index e6ddf69ade7ae51640569150f7db10d1afa63691..77b40f3d7162befe4da29a60b3de2b93b261412c 100644
|
|
||||||
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
|
|
||||||
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
|
|
||||||
@@ -925,7 +925,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
|
||||||
shutdownThread = Thread.currentThread();
|
|
||||||
org.spigotmc.WatchdogThread.doStop(); // Paper
|
|
||||||
if (!isSameThread()) {
|
|
||||||
- MinecraftServer.LOGGER.info("Stopping main thread (Ignore any thread death message you see! - DO NOT REPORT THREAD DEATH TO PURPUR)"); // Purpur
|
|
||||||
+ MinecraftServer.LOGGER.info("Stopping main thread (Ignore any thread death message you see! - DO NOT REPORT THREAD DEATH TO PLAZMA)"); // Purpur // Plazma
|
|
||||||
while (this.getRunningThread().isAlive()) {
|
|
||||||
this.getRunningThread().stop();
|
|
||||||
try {
|
|
||||||
diff --git a/src/main/java/net/minecraft/server/gui/MinecraftServerGui.java b/src/main/java/net/minecraft/server/gui/MinecraftServerGui.java
|
|
||||||
index be7b3fe2dc84493dcde9e185717b0b7c7c2e9822..cfdaa744ff40c8a171ca9b36b305b326fc57c32c 100644
|
|
||||||
--- a/src/main/java/net/minecraft/server/gui/MinecraftServerGui.java
|
|
||||||
+++ b/src/main/java/net/minecraft/server/gui/MinecraftServerGui.java
|
|
||||||
@@ -56,7 +56,7 @@ public class MinecraftServerGui extends JComponent {
|
|
||||||
;
|
|
||||||
}
|
|
||||||
|
|
||||||
- final JFrame jframe = new JFrame("Purpur Minecraft server"); // Purpur
|
|
||||||
+ final JFrame jframe = new JFrame("Plazma Minecraft server"); // Purpur // Plazma
|
|
||||||
final MinecraftServerGui servergui = new MinecraftServerGui(server);
|
|
||||||
|
|
||||||
jframe.setDefaultCloseOperation(2);
|
|
||||||
@@ -64,7 +64,7 @@ public class MinecraftServerGui extends JComponent {
|
|
||||||
jframe.pack();
|
|
||||||
jframe.setLocationRelativeTo((Component) null);
|
|
||||||
jframe.setVisible(true);
|
|
||||||
- jframe.setName("Purpur Minecraft server"); // Paper // Purpur
|
|
||||||
+ jframe.setName("Plazma Minecraft server"); // Paper // Purpur // Plazma
|
|
||||||
|
|
||||||
// Paper start - Add logo as frame image
|
|
||||||
try {
|
|
||||||
@@ -76,7 +76,7 @@ public class MinecraftServerGui extends JComponent {
|
|
||||||
jframe.addWindowListener(new WindowAdapter() {
|
|
||||||
public void windowClosing(WindowEvent windowevent) {
|
|
||||||
if (!servergui.isClosing.getAndSet(true)) {
|
|
||||||
- jframe.setTitle("Purpur Minecraft server - shutting down!"); // Purpur
|
|
||||||
+ jframe.setTitle("Plazma Minecraft server - shutting down!"); // Purpur // Plazma
|
|
||||||
server.halt(true);
|
|
||||||
servergui.runFinalizers();
|
|
||||||
}
|
|
||||||
diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java
|
|
||||||
index 713a091b8083e46b395311889c2a1482279c27ec..c80d73035b05bfb6b3639175c51bb37c477c28d1 100644
|
|
||||||
--- a/src/main/java/net/minecraft/world/level/Level.java
|
|
||||||
+++ b/src/main/java/net/minecraft/world/level/Level.java
|
|
||||||
@@ -1034,7 +1034,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
|
|
||||||
TickingBlockEntity tickingblockentity = (TickingBlockEntity) this.blockEntityTickers.get(tileTickPosition);
|
|
||||||
// Spigot start
|
|
||||||
if (tickingblockentity == null) {
|
|
||||||
- this.getCraftServer().getLogger().severe("Spigot has detected a null entity and has removed it, preventing a crash");
|
|
||||||
+ this.getCraftServer().getLogger().severe("Plazma has detected a null entity and has removed it, preventing a crash"); // Plazma
|
|
||||||
tilesThisCycle--;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
diff --git a/src/main/java/net/minecraft/world/level/chunk/storage/RegionFileStorage.java b/src/main/java/net/minecraft/world/level/chunk/storage/RegionFileStorage.java
|
|
||||||
index 81554c321a78258ff78da3801f00d0fb90b9e113..ba2eab8a835c2396fca25d7993443d5db26c9c16 100644
|
|
||||||
--- a/src/main/java/net/minecraft/world/level/chunk/storage/RegionFileStorage.java
|
|
||||||
+++ b/src/main/java/net/minecraft/world/level/chunk/storage/RegionFileStorage.java
|
|
||||||
@@ -156,7 +156,7 @@ public class RegionFileStorage implements AutoCloseable {
|
|
||||||
|
|
||||||
// Paper start
|
|
||||||
private static void printOversizedLog(String msg, Path file, int x, int z) {
|
|
||||||
- org.apache.logging.log4j.LogManager.getLogger().fatal(msg + " (" + file.toString().replaceAll(".+[\\\\/]", "") + " - " + x + "," + z + ") Go clean it up to remove this message. /minecraft:tp " + (x<<4)+" 128 "+(z<<4) + " - DO NOT REPORT THIS TO PAPER - You may ask for help on Discord, but do not file an issue. These error messages can not be removed.");
|
|
||||||
+ org.apache.logging.log4j.LogManager.getLogger().fatal(msg + " (" + file.toString().replaceAll(".+[\\\\/]", "") + " - " + x + "," + z + ") Go clean it up to remove this message. /minecraft:tp " + (x<<4)+" 128 "+(z<<4) + " - DO NOT REPORT THIS TO PLAZMA - You may ask for help on Discord, but do not file an issue. These error messages can not be removed."); // Plazma
|
|
||||||
}
|
|
||||||
|
|
||||||
private static final int DEFAULT_SIZE_THRESHOLD = 1024 * 8;
|
|
||||||
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
|
||||||
index b21bc96232d0fd52e5dae7fa1c413714f8ddd7ee..875cc2357d17d37d8df921a84cf8af7b99d860f2 100644
|
|
||||||
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
|
||||||
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
|
||||||
@@ -265,7 +265,7 @@ import javax.annotation.Nullable; // Paper
|
|
||||||
import javax.annotation.Nonnull; // Paper
|
|
||||||
|
|
||||||
public final class CraftServer implements Server {
|
|
||||||
- private final String serverName = "Purpur"; // Paper // Pufferfish // Purpur
|
|
||||||
+ private final String serverName = "Plazma"; // Paper // Pufferfish // Purpur // Plazma
|
|
||||||
private final String serverVersion;
|
|
||||||
private final String bukkitVersion = Versioning.getBukkitVersion();
|
|
||||||
private final Logger logger = Logger.getLogger("Minecraft");
|
|
||||||
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
|
|
||||||
index b473f89c59c0fc080fadd0d4db320895e917fd41..cdf28d1b5da2f602b020142d5bfc37922e315718 100644
|
|
||||||
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
|
|
||||||
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
|
|
||||||
@@ -912,7 +912,7 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity {
|
|
||||||
return EntityCategory.WATER;
|
|
||||||
}
|
|
||||||
|
|
||||||
- throw new UnsupportedOperationException("Unsupported monster type: " + type + ". This is a bug, report this to Purpur."); // Purpur
|
|
||||||
+ throw new UnsupportedOperationException("Unsupported monster type: " + type + ". This is a bug, report this to Plazma."); // Purpur // Plazma
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
diff --git a/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java b/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java
|
|
||||||
index a4567188e2fe3f922bb6aeb71a2845d1a1be536f..267555c309c44067ac0e011784870bad802bc292 100644
|
|
||||||
--- a/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java
|
|
||||||
+++ b/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java
|
|
||||||
@@ -501,7 +501,7 @@ public class CraftScheduler implements BukkitScheduler {
|
|
||||||
this.parsePending();
|
|
||||||
} else {
|
|
||||||
// this.debugTail = this.debugTail.setNext(new CraftAsyncDebugger(currentTick + CraftScheduler.RECENT_TICKS, task.getOwner(), task.getTaskClass())); // Paper
|
|
||||||
- task.getOwner().getLogger().log(Level.SEVERE, "Unexpected Async Task in the Sync Scheduler. Report this to Purpur"); // Paper // Purpur
|
|
||||||
+ task.getOwner().getLogger().log(Level.SEVERE, "Unexpected Async Task in the Sync Scheduler. Report this to Plazma"); // Paper // Purpur // Plazma
|
|
||||||
// We don't need to parse pending
|
|
||||||
// (async tasks must live with race-conditions if they attempt to cancel between these few lines of code)
|
|
||||||
}
|
|
||||||
diff --git a/src/main/java/org/bukkit/craftbukkit/util/Versioning.java b/src/main/java/org/bukkit/craftbukkit/util/Versioning.java
|
|
||||||
index 99597258e8e88cd9e2c901c4ac3ff7faeeabee2b..0e695ea608c4e4770f5491d54ad47616d4e857c6 100644
|
|
||||||
--- a/src/main/java/org/bukkit/craftbukkit/util/Versioning.java
|
|
||||||
+++ b/src/main/java/org/bukkit/craftbukkit/util/Versioning.java
|
|
||||||
@@ -8,22 +8,25 @@ import java.util.logging.Logger;
|
|
||||||
import org.bukkit.Bukkit;
|
|
||||||
|
|
||||||
public final class Versioning {
|
|
||||||
- public static String getBukkitVersion() {
|
|
||||||
- String result = "Unknown-Version";
|
|
||||||
-
|
|
||||||
- InputStream stream = Bukkit.class.getClassLoader().getResourceAsStream("META-INF/maven/org.purpurmc.purpur/purpur-api/pom.properties"); // Pufferfish // Purpur
|
|
||||||
+ // Plazma start
|
|
||||||
+ public static String version = "Unknown-Version";
|
|
||||||
+ static {
|
|
||||||
+ InputStream stream = Bukkit.class.getClassLoader().getResourceAsStream("META-INF/maven/org.plazmamc.plazma/plazma-api/pom.properties");
|
|
||||||
Properties properties = new Properties();
|
|
||||||
|
|
||||||
if (stream != null) {
|
|
||||||
try {
|
|
||||||
properties.load(stream);
|
|
||||||
|
|
||||||
- result = properties.getProperty("version");
|
|
||||||
+ version = properties.getProperty("version");
|
|
||||||
} catch (IOException ex) {
|
|
||||||
- Logger.getLogger(Versioning.class.getName()).log(Level.SEVERE, "Could not get Bukkit version!", ex);
|
|
||||||
+ Logger.getLogger(Versioning.class.getName()).log(Level.SEVERE, "Could not get Plazma version!", ex);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
+ }
|
|
||||||
|
|
||||||
- return result;
|
|
||||||
+ public static String getBukkitVersion() {
|
|
||||||
+ return version;
|
|
||||||
}
|
|
||||||
+ // Plazma end
|
|
||||||
}
|
|
||||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
|
||||||
index 3633574e112f217b412217dd243a631dc4e9c40c..d0d31002562e728fa1a6c9bc81baa4534f11d365 100644
|
|
||||||
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
|
||||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
|
||||||
@@ -231,7 +231,7 @@ public class PurpurConfig {
|
|
||||||
deathMessageOnlyBroadcastToAffectedPlayer = getBoolean("settings.broadcasts.death.only-broadcast-to-affected-player", deathMessageOnlyBroadcastToAffectedPlayer);
|
|
||||||
}
|
|
||||||
|
|
||||||
- public static String serverModName = "Purpur";
|
|
||||||
+ public static String serverModName = "Plazma"; // Plazma
|
|
||||||
private static void serverModName() {
|
|
||||||
serverModName = getString("settings.server-mod-name", serverModName);
|
|
||||||
}
|
|
||||||
diff --git a/src/main/java/org/spigotmc/WatchdogThread.java b/src/main/java/org/spigotmc/WatchdogThread.java
|
|
||||||
index dbd502761ff6e6efb252bb41376a7ff028c73895..c765cb5dd8c3c1b668b7031e6c784ed9cf2d58e1 100644
|
|
||||||
--- a/src/main/java/org/spigotmc/WatchdogThread.java
|
|
||||||
+++ b/src/main/java/org/spigotmc/WatchdogThread.java
|
|
||||||
@@ -155,14 +155,14 @@ public final class WatchdogThread extends io.papermc.paper.util.TickThread // Pa
|
|
||||||
if (isLongTimeout) {
|
|
||||||
// Paper end
|
|
||||||
log.log( Level.SEVERE, "------------------------------" );
|
|
||||||
- log.log( Level.SEVERE, "The server has stopped responding! This is (probably) not a Purpur bug." ); // Paper // Purpur
|
|
||||||
+ log.log( Level.SEVERE, "The server has stopped responding! This is (probably) not a Plazma bug." ); // Paper // Purpur // Plazma
|
|
||||||
log.log( Level.SEVERE, "If you see a plugin in the Server thread dump below, then please report it to that author" );
|
|
||||||
log.log( Level.SEVERE, "\t *Especially* if it looks like HTTP or MySQL operations are occurring" );
|
|
||||||
log.log( Level.SEVERE, "If you see a world save or edit, then it means you did far more than your server can handle at once" );
|
|
||||||
log.log( Level.SEVERE, "\t If this is the case, consider increasing timeout-time in spigot.yml but note that this will replace the crash with LARGE lag spikes" );
|
|
||||||
- log.log( Level.SEVERE, "If you are unsure or still think this is a Purpur bug, please report this to https://github.com/PurpurMC/Purpur/issues" ); // Purpur
|
|
||||||
+ log.log( Level.SEVERE, "If you are unsure or still think this is a Plazma bug, please report this to https://github.com/PlazmaMC/Plazma/issues" ); // Purpur // Plazma
|
|
||||||
log.log( Level.SEVERE, "Be sure to include ALL relevant console errors and Minecraft crash reports" );
|
|
||||||
- log.log( Level.SEVERE, "Purpur version: " + Bukkit.getServer().getVersion() ); // Purpur
|
|
||||||
+ log.log( Level.SEVERE, "Plazma version: " + Bukkit.getServer().getVersion() ); // Purpur // Plazma
|
|
||||||
//
|
|
||||||
if ( net.minecraft.world.level.Level.lastPhysicsProblem != null )
|
|
||||||
{
|
|
||||||
@@ -185,12 +185,12 @@ public final class WatchdogThread extends io.papermc.paper.util.TickThread // Pa
|
|
||||||
// Paper end
|
|
||||||
} else
|
|
||||||
{
|
|
||||||
- log.log(Level.SEVERE, "--- DO NOT REPORT THIS TO PURPUR - THIS IS NOT A BUG OR A CRASH - " + Bukkit.getServer().getVersion() + " ---"); // Purpur
|
|
||||||
+ log.log(Level.SEVERE, "--- DO NOT REPORT THIS TO PLAZMA - THIS IS NOT A BUG OR A CRASH - " + Bukkit.getServer().getVersion() + " ---"); // Purpur // Plazma
|
|
||||||
log.log(Level.SEVERE, "The server has not responded for " + (currentTime - lastTick) / 1000 + " seconds! Creating thread dump");
|
|
||||||
}
|
|
||||||
// Paper end - Different message for short timeout
|
|
||||||
log.log( Level.SEVERE, "------------------------------" );
|
|
||||||
- log.log( Level.SEVERE, "Server thread dump (Look for plugins here before reporting to Purpur!):" ); // Paper // Purpur
|
|
||||||
+ log.log( Level.SEVERE, "Server thread dump (Look for plugins here before reporting to Plazma!):" ); // Paper // Purpur // Plazma
|
|
||||||
io.papermc.paper.chunk.system.scheduling.ChunkTaskScheduler.dumpAllChunkLoadInfo(isLongTimeout); // Paper // Paper - rewrite chunk system
|
|
||||||
this.dumpTickingInfo(); // Paper - log detailed tick information
|
|
||||||
WatchdogThread.dumpThread( ManagementFactory.getThreadMXBean().getThreadInfo( MinecraftServer.getServer().serverThread.getId(), Integer.MAX_VALUE ), log );
|
|
||||||
@@ -206,7 +206,7 @@ public final class WatchdogThread extends io.papermc.paper.util.TickThread // Pa
|
|
||||||
WatchdogThread.dumpThread( thread, log );
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
- log.log(Level.SEVERE, "--- DO NOT REPORT THIS TO PURPUR - THIS IS NOT A BUG OR A CRASH ---"); // Purpur
|
|
||||||
+ log.log(Level.SEVERE, "--- DO NOT REPORT THIS TO PLAZMA - THIS IS NOT A BUG OR A CRASH ---"); // Purpur // Plazma
|
|
||||||
}
|
|
||||||
|
|
||||||
log.log( Level.SEVERE, "------------------------------" );
|
|
||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -1,75 +0,0 @@
|
|||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: AlphaKR93 <dev@alpha93.kr>
|
|
||||||
Date: Fri, 24 Mar 2023 23:54:51 +0900
|
|
||||||
Subject: [PATCH] Add more metrics
|
|
||||||
|
|
||||||
|
|
||||||
diff --git a/src/main/java/com/destroystokyo/paper/Metrics.java b/src/main/java/com/destroystokyo/paper/Metrics.java
|
|
||||||
index 7d80d2cf5d607d6051e99e4b08bc1b76098a79da..067bcbcb81802a3a52ecff737ddf2c033696ecfb 100644
|
|
||||||
--- a/src/main/java/com/destroystokyo/paper/Metrics.java
|
|
||||||
+++ b/src/main/java/com/destroystokyo/paper/Metrics.java
|
|
||||||
@@ -636,12 +636,63 @@ public class Metrics {
|
|
||||||
return map;
|
|
||||||
}));
|
|
||||||
|
|
||||||
+ // Plazma start
|
|
||||||
+ metrics.addCustomChart(new Metrics.DrilldownPie("datapacks", () -> {
|
|
||||||
+ Map<String, Map<String, Integer>> map = new HashMap<>();
|
|
||||||
+ int datapacks = Bukkit.getServer().getDatapackManager().getEnabledPacks().size();
|
|
||||||
+ Map<String, Integer> entry = new HashMap<>();
|
|
||||||
+ entry.put(String.valueOf(datapacks), 1);
|
|
||||||
+
|
|
||||||
+ if (datapacks == 0)
|
|
||||||
+ map.put("0", entry);
|
|
||||||
+ else if (datapacks <= 5)
|
|
||||||
+ map.put("1-5", entry);
|
|
||||||
+ else if (datapacks <= 10)
|
|
||||||
+ map.put("6-10", entry);
|
|
||||||
+ else if (datapacks <= 25)
|
|
||||||
+ map.put("11-25", entry);
|
|
||||||
+ else
|
|
||||||
+ map.put("26+", entry);
|
|
||||||
+
|
|
||||||
+ return map;
|
|
||||||
+ }));
|
|
||||||
+
|
|
||||||
+ List<Plugin> plugins = new ArrayList<>();
|
|
||||||
+ for (Plugin plugin : Bukkit.getPluginManager().getPlugins()) {
|
|
||||||
+ if (plugin.isEnabled()) {
|
|
||||||
+ plugins.add(plugin);
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ metrics.addCustomChart(new Metrics.DrilldownPie("plugins", () -> {
|
|
||||||
+ Map<String, Map<String, Integer>> map = new HashMap<>();
|
|
||||||
+ int plugins1 = plugins.size();
|
|
||||||
+ Map<String, Integer> entry = new HashMap<>();
|
|
||||||
+ entry.put(String.valueOf(plugins1), 1);
|
|
||||||
+
|
|
||||||
+ if (plugins1 == 0)
|
|
||||||
+ map.put("0", entry);
|
|
||||||
+ else if (plugins1 <= 5)
|
|
||||||
+ map.put("1-5", entry);
|
|
||||||
+ else if (plugins1 <= 10)
|
|
||||||
+ map.put("6-10", entry);
|
|
||||||
+ else if (plugins1 <= 25)
|
|
||||||
+ map.put("11-25", entry);
|
|
||||||
+ else if (plugins1 <= 50)
|
|
||||||
+ map.put("26-50", entry);
|
|
||||||
+ else
|
|
||||||
+ map.put("51+", entry);
|
|
||||||
+
|
|
||||||
+ return map;
|
|
||||||
+ }));
|
|
||||||
+ // Plazma end
|
|
||||||
+
|
|
||||||
metrics.addCustomChart(new Metrics.DrilldownPie("legacy_plugins", () -> {
|
|
||||||
Map<String, Map<String, Integer>> map = new HashMap<>();
|
|
||||||
|
|
||||||
// count legacy plugins
|
|
||||||
int legacy = 0;
|
|
||||||
- for (Plugin plugin : Bukkit.getPluginManager().getPlugins()) {
|
|
||||||
+ for (Plugin plugin : plugins) { // Plazma
|
|
||||||
if (CraftMagicNumbers.isLegacy(plugin.getDescription())) {
|
|
||||||
legacy++;
|
|
||||||
}
|
|
||||||
128
patches/server/0007-Setup-basic-configuration-sections.patch
Normal file
128
patches/server/0007-Setup-basic-configuration-sections.patch
Normal file
@@ -0,0 +1,128 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: AlphaKR93 <dev@alpha93.kr>
|
||||||
|
Date: Sun, 5 Nov 2023 10:47:05 +0900
|
||||||
|
Subject: [PATCH] Setup basic configuration sections
|
||||||
|
|
||||||
|
|
||||||
|
diff --git a/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java b/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java
|
||||||
|
index d8006ae086c18a4ef43906d516eba0d5fd397f5f..aff5c68bc715c6ea9b5b808e5a94cbac9a3725ba 100644
|
||||||
|
--- a/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java
|
||||||
|
+++ b/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java
|
||||||
|
@@ -3,6 +3,7 @@ package org.plazmamc.plazma.configurations;
|
||||||
|
import io.papermc.paper.configuration.Configuration;
|
||||||
|
import io.papermc.paper.configuration.ConfigurationPart;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
+import org.spongepowered.configurate.objectmapping.meta.PostProcess;
|
||||||
|
import org.spongepowered.configurate.objectmapping.meta.Setting;
|
||||||
|
|
||||||
|
@SuppressWarnings({"CanBeFinal", "FieldCanBeLocal", "FieldMayBeFinal", "InnerClassMayBeStatic"})
|
||||||
|
@@ -23,4 +24,49 @@ public class GlobalConfiguration extends ConfigurationPart {
|
||||||
|
@Setting(Configuration.VERSION_FIELD)
|
||||||
|
int version = VERSION;
|
||||||
|
|
||||||
|
+ public Player player;
|
||||||
|
+ public class Player extends ConfigurationPart {
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ @Setting("world-generation")
|
||||||
|
+ public WorldGeneration worldgen;
|
||||||
|
+ public class WorldGeneration extends ConfigurationPart {
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ public Entity entity;
|
||||||
|
+ public class Entity extends ConfigurationPart {
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+ @PostProcess
|
||||||
|
+ public void post() {
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ public World world;
|
||||||
|
+ public class World extends ConfigurationPart {
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+ @PostProcess
|
||||||
|
+ public void post() {
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ public Structure structure;
|
||||||
|
+ public class Structure extends ConfigurationPart {
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ public Miscellaneous misc;
|
||||||
|
+ public class Miscellaneous extends ConfigurationPart {
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
}
|
||||||
|
diff --git a/src/main/java/org/plazmamc/plazma/configurations/RemovedConfigurations.java b/src/main/java/org/plazmamc/plazma/configurations/RemovedConfigurations.java
|
||||||
|
index 25c0f5d28107b45677aa7b19bc0d5238512d9826..ac0f038de0ce5cf6df0b730af69d3229c3119eff 100644
|
||||||
|
--- a/src/main/java/org/plazmamc/plazma/configurations/RemovedConfigurations.java
|
||||||
|
+++ b/src/main/java/org/plazmamc/plazma/configurations/RemovedConfigurations.java
|
||||||
|
@@ -2,9 +2,12 @@ package org.plazmamc.plazma.configurations;
|
||||||
|
|
||||||
|
import org.spongepowered.configurate.NodePath;
|
||||||
|
|
||||||
|
+import static org.spongepowered.configurate.NodePath.path;
|
||||||
|
+
|
||||||
|
interface RemovedConfigurations {
|
||||||
|
|
||||||
|
NodePath[] WORLD_PATHS = {
|
||||||
|
+ path("structure", "nether-portal")
|
||||||
|
};
|
||||||
|
|
||||||
|
NodePath[] GLOBAL_PATHS = {
|
||||||
|
diff --git a/src/main/java/org/plazmamc/plazma/configurations/WorldConfigurations.java b/src/main/java/org/plazmamc/plazma/configurations/WorldConfigurations.java
|
||||||
|
index f2d3d51cb4b8fc7a5fd6db1a63289fff6d32a1ea..8dce68cf7769fcd5ea03be32621ccb6bab174697 100644
|
||||||
|
--- a/src/main/java/org/plazmamc/plazma/configurations/WorldConfigurations.java
|
||||||
|
+++ b/src/main/java/org/plazmamc/plazma/configurations/WorldConfigurations.java
|
||||||
|
@@ -19,4 +19,38 @@ public class WorldConfigurations extends ConfigurationPart {
|
||||||
|
@Setting(Configuration.VERSION_FIELD)
|
||||||
|
int version = VERSION;
|
||||||
|
|
||||||
|
+ public Miscellaneous misc;
|
||||||
|
+ public class Miscellaneous extends ConfigurationPart {
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ public Entity entity;
|
||||||
|
+ public class Entity extends ConfigurationPart {
|
||||||
|
+
|
||||||
|
+ public Phantom phantom;
|
||||||
|
+ public class Phantom extends ConfigurationPart {
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ public Structure structure;
|
||||||
|
+ public class Structure extends ConfigurationPart {
|
||||||
|
+
|
||||||
|
+ public NetherPortal netherPortal;
|
||||||
|
+ public class NetherPortal extends ConfigurationPart {
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ public Block block;
|
||||||
|
+ public class Block extends ConfigurationPart {
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
}
|
||||||
@@ -1,452 +0,0 @@
|
|||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: IPECTER <ipectert@gmail.com>
|
|
||||||
Date: Tue, 7 Mar 2023 12:28:34 +0900
|
|
||||||
Subject: [PATCH] Optimize Default Configurations
|
|
||||||
|
|
||||||
Original: YouHaveTrouble/minecraft-optimization, AkiraDevelopment/SimplyMC
|
|
||||||
Copyright (C) 2023 YouHaveTrouble, AkiraDevelopment
|
|
||||||
|
|
||||||
diff --git a/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java b/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java
|
|
||||||
index 3e36958365bc136516bafbaad0c168f7956406f1..b5eca4a809d5e7c77de9737941f3f6c35e4fc796 100644
|
|
||||||
--- a/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java
|
|
||||||
+++ b/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java
|
|
||||||
@@ -211,8 +211,8 @@ public class PufferfishConfig {
|
|
||||||
public static int maxProjectileLoadsPerTick;
|
|
||||||
public static int maxProjectileLoadsPerProjectile;
|
|
||||||
private static void projectileLoading() {
|
|
||||||
- maxProjectileLoadsPerTick = getInt("projectile.max-loads-per-tick", 10, "Controls how many chunks are allowed", "to be sync loaded by projectiles in a tick.");
|
|
||||||
- maxProjectileLoadsPerProjectile = getInt("projectile.max-loads-per-projectile", 10, "Controls how many chunks a projectile", "can load in its lifetime before it gets", "automatically removed.");
|
|
||||||
+ maxProjectileLoadsPerTick = getInt("projectile.max-loads-per-tick", Boolean.getBoolean("Plazma.disableConfigOptimization") ? 10 : 8, "Controls how many chunks are allowed", "to be sync loaded by projectiles in a tick."); // Plazma
|
|
||||||
+ maxProjectileLoadsPerProjectile = getInt("projectile.max-loads-per-projectile", 10, "Controls how many chunks a projectile", "can load in its lifetime before it gets", "automatically removed.");
|
|
||||||
|
|
||||||
setComment("projectile", "Optimizes projectile settings");
|
|
||||||
}
|
|
||||||
@@ -225,16 +225,16 @@ public class PufferfishConfig {
|
|
||||||
public static int activationDistanceMod;
|
|
||||||
|
|
||||||
private static void dynamicActivationOfBrains() throws IOException {
|
|
||||||
- dearEnabled = getBoolean("dab.enabled", "activation-range.enabled", false); // Purpur
|
|
||||||
- startDistance = getInt("dab.start-distance", "activation-range.start-distance", 12,
|
|
||||||
+ dearEnabled = getBoolean("dab.enabled", "activation-range.enabled", !Boolean.getBoolean("Plazma.disableConfigOptimization")); // Purpur // Plazma
|
|
||||||
+ startDistance = getInt("dab.start-distance", "activation-range.start-distance", 12,
|
|
||||||
"This value determines how far away an entity has to be",
|
|
||||||
"from the player to start being effected by DEAR.");
|
|
||||||
startDistanceSquared = startDistance * startDistance;
|
|
||||||
maximumActivationPrio = getInt("dab.max-tick-freq", "activation-range.max-tick-freq", 20,
|
|
||||||
"This value defines how often in ticks, the furthest entity",
|
|
||||||
"will get their pathfinders and behaviors ticked. 20 = 1s");
|
|
||||||
- activationDistanceMod = getInt("dab.activation-dist-mod", "activation-range.activation-dist-mod", 8,
|
|
||||||
- "This value defines how much distance modifies an entity's",
|
|
||||||
+ activationDistanceMod = getInt("dab.activation-dist-mod", "activation-range.activation-dist-mod", Boolean.getBoolean("Plazma.disableConfigOptimization") ? 8 : 7, // Plazma
|
|
||||||
+ "This value defines how much distance modifies an entity's",
|
|
||||||
"tick frequency. freq = (distanceToPlayer^2) / (2^value)",
|
|
||||||
"If you want further away entities to tick less often, use 7.",
|
|
||||||
"If you want further away entities to tick more often, try 9.");
|
|
||||||
diff --git a/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java b/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java
|
|
||||||
index 3bc7230ca62ebe3426da293e436a962bb0134f85..1a4b5dc4c5340de66553936bbbc074d1654a3ef8 100644
|
|
||||||
--- a/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java
|
|
||||||
+++ b/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java
|
|
||||||
@@ -143,7 +143,7 @@ public class GlobalConfiguration extends ConfigurationPart {
|
|
||||||
|
|
||||||
public class Watchdog extends ConfigurationPart {
|
|
||||||
public int earlyWarningEvery = 5000;
|
|
||||||
- public int earlyWarningDelay = 10000;
|
|
||||||
+ public int earlyWarningDelay = Boolean.getBoolean("Plazma.disableConfigOptimization") ? 10000 : 180000; // Plazma - Optimize Default Configurations
|
|
||||||
}
|
|
||||||
|
|
||||||
public SpamLimiter spamLimiter;
|
|
||||||
diff --git a/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java b/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java
|
|
||||||
index f45afb7e2607617d1239abeca13a9002dd9a3a18..844ecc2a6d6677742e87ef22dede28867892a301 100644
|
|
||||||
--- a/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java
|
|
||||||
+++ b/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java
|
|
||||||
@@ -88,15 +88,15 @@ public class WorldConfiguration extends ConfigurationPart {
|
|
||||||
|
|
||||||
public class AntiXray extends ConfigurationPart {
|
|
||||||
public boolean enabled = false;
|
|
||||||
- public EngineMode engineMode = EngineMode.HIDE;
|
|
||||||
+ public EngineMode engineMode = Boolean.getBoolean("Plazma.disableConfigOptimization") ? EngineMode.HIDE : EngineMode.OBFUSCATE_LAYER; // Plazma - Optimize Default Configurations
|
|
||||||
public int maxBlockHeight = 64;
|
|
||||||
public int updateRadius = 2;
|
|
||||||
public boolean lavaObscures = false;
|
|
||||||
public boolean usePermission = false;
|
|
||||||
- public List<String> hiddenBlocks = List.of("copper_ore", "deepslate_copper_ore", "gold_ore", "deepslate_gold_ore", "iron_ore", "deepslate_iron_ore",
|
|
||||||
- "coal_ore", "deepslate_coal_ore", "lapis_ore", "deepslate_lapis_ore", "mossy_cobblestone", "obsidian", "chest", "diamond_ore", "deepslate_diamond_ore",
|
|
||||||
- "redstone_ore", "deepslate_redstone_ore", "clay", "emerald_ore", "deepslate_emerald_ore", "ender_chest"); // TODO update type to List<Block>
|
|
||||||
- public List<String> replacementBlocks = List.of("stone", "oak_planks", "deepslate"); // TODO update type to List<Block>
|
|
||||||
+ // Plazma start - Optimize Default Configurations
|
|
||||||
+ public List<String> hiddenBlocks = List.of("air", "copper_ore", "deepslate_copper_ore", "raw_copper_block", "diamond_ore", "deepslate_diamond_ore", "gold_ore", "deepslate_gold_ore", "iron_ore", "deepslate_iron_ore", "raw_iron_block", "lapis_ore", "deepslate_lapis_ore", "redstone_ore", "deepslate_redstone_ore"); // TODO update type to List<Block>
|
|
||||||
+ public List<String> replacementBlocks = List.of("chest", "amethyst_block", "andesite", "budding_amethyst", "calcite", "coal_ore", "deepslate_coal_ore", "deepslate", "diorite", "dirt", "emerald_ore", "deepslate_emerald_ore", "granite", "gravel", "oak_planks", "smooth_basalt", "stone", "tuff"); // TODO update type to List<Block>
|
|
||||||
+ // Plazma end
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -150,7 +150,7 @@ public class WorldConfiguration extends ConfigurationPart {
|
|
||||||
@MergeMap
|
|
||||||
public Reference2IntMap<MobCategory> spawnLimits = Util.make(new Reference2IntOpenHashMap<>(NaturalSpawner.SPAWNING_CATEGORIES.length), map -> Arrays.stream(NaturalSpawner.SPAWNING_CATEGORIES).forEach(mobCategory -> map.put(mobCategory, -1)));
|
|
||||||
@MergeMap
|
|
||||||
- public Map<MobCategory, DespawnRange> despawnRanges = Arrays.stream(MobCategory.values()).collect(Collectors.toMap(Function.identity(), category -> new DespawnRange(category.getNoDespawnDistance(), category.getDespawnDistance())));
|
|
||||||
+ public Map<MobCategory, DespawnRange> despawnRanges = Arrays.stream(MobCategory.values()).collect(Collectors.toMap(Function.identity(), category -> new DespawnRange(category.getNoDespawnDistance(), Boolean.getBoolean("Plazma.disableConfigOptimization") ? category.getDespawnDistance() : (net.minecraft.server.MinecraftServer.getServer().server.getSimulationDistance() * 16) + 8))); // Plazma - Optimize Default Configurations
|
|
||||||
|
|
||||||
@ConfigSerializable
|
|
||||||
public record DespawnRange(@Required int soft, @Required int hard) {
|
|
||||||
@@ -372,7 +372,7 @@ public class WorldConfiguration extends ConfigurationPart {
|
|
||||||
public class Environment extends ConfigurationPart {
|
|
||||||
public boolean disableThunder = false;
|
|
||||||
public boolean disableIceAndSnow = false;
|
|
||||||
- public boolean optimizeExplosions = false;
|
|
||||||
+ public boolean optimizeExplosions = !Boolean.getBoolean("Plazma.disableConfigOptimization"); // Plazma - Optimize Default Configurations
|
|
||||||
public boolean disableExplosionKnockback = false;
|
|
||||||
public boolean generateFlatBedrock = false;
|
|
||||||
public FrostedIce frostedIce;
|
|
||||||
@@ -452,9 +452,9 @@ public class WorldConfiguration extends ConfigurationPart {
|
|
||||||
public class Collisions extends ConfigurationPart {
|
|
||||||
public boolean onlyPlayersCollide = false;
|
|
||||||
public boolean allowVehicleCollisions = true;
|
|
||||||
- public boolean fixClimbingBypassingCrammingRule = false;
|
|
||||||
+ public boolean fixClimbingBypassingCrammingRule = !Boolean.getBoolean("Plazma.disableConfigOptimization"); // Plazma - Optimize Default Configurations
|
|
||||||
@RequiresSpigotInitialization(MaxEntityCollisionsInitializer.class)
|
|
||||||
- public int maxEntityCollisions = 8;
|
|
||||||
+ public int maxEntityCollisions = Boolean.getBoolean("Plazma.disableConfigOptimization") ? 8 : 2; // Plazma - Optimize Default Configurations
|
|
||||||
public boolean allowPlayerCrammingDamage = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -462,18 +462,40 @@ public class WorldConfiguration extends ConfigurationPart {
|
|
||||||
|
|
||||||
public class Chunks extends ConfigurationPart {
|
|
||||||
public AutosavePeriod autoSaveInterval = AutosavePeriod.def();
|
|
||||||
- public int maxAutoSaveChunksPerTick = 24;
|
|
||||||
+ public int maxAutoSaveChunksPerTick = Boolean.getBoolean("Plazma.disableConfigOptimization") ? 24 : 8; // Plazma - Optimize Default Configurations
|
|
||||||
public int fixedChunkInhabitedTime = -1;
|
|
||||||
- public boolean preventMovingIntoUnloadedChunks = false;
|
|
||||||
+ public boolean preventMovingIntoUnloadedChunks = !Boolean.getBoolean("Plazma.disableConfigOptimization"); // Plazma - Optimize Default Configurations
|
|
||||||
public Duration delayChunkUnloadsBy = Duration.of("10s");
|
|
||||||
public Reference2IntMap<EntityType<?>> entityPerChunkSaveLimit = Util.make(new Reference2IntOpenHashMap<>(BuiltInRegistries.ENTITY_TYPE.size()), map -> {
|
|
||||||
- map.defaultReturnValue(-1);
|
|
||||||
- map.put(EntityType.EXPERIENCE_ORB, -1);
|
|
||||||
- map.put(EntityType.SNOWBALL, -1);
|
|
||||||
- map.put(EntityType.ENDER_PEARL, -1);
|
|
||||||
- map.put(EntityType.ARROW, -1);
|
|
||||||
- map.put(EntityType.FIREBALL, -1);
|
|
||||||
- map.put(EntityType.SMALL_FIREBALL, -1);
|
|
||||||
+ // Plazma start - Optimize Default Configurations
|
|
||||||
+ if (!Boolean.getBoolean("Plazma.disableConfigOptimization")) {
|
|
||||||
+ map.put(EntityType.AREA_EFFECT_CLOUD, 8);
|
|
||||||
+ map.put(EntityType.ARROW, 16);
|
|
||||||
+ map.put(EntityType.DRAGON_FIREBALL, 3);
|
|
||||||
+ map.put(EntityType.EGG, 8);
|
|
||||||
+ map.put(EntityType.ENDER_PEARL, 8);
|
|
||||||
+ map.put(EntityType.EXPERIENCE_BOTTLE, 3);
|
|
||||||
+ map.put(EntityType.EXPERIENCE_ORB, 16);
|
|
||||||
+ map.put(EntityType.EYE_OF_ENDER, 8);
|
|
||||||
+ map.put(EntityType.FIREBALL, 8);
|
|
||||||
+ map.put(EntityType.FIREWORK_ROCKET, 8);
|
|
||||||
+ map.put(EntityType.LLAMA_SPIT, 3);
|
|
||||||
+ map.put(EntityType.POTION, 8);
|
|
||||||
+ map.put(EntityType.SHULKER_BULLET, 8);
|
|
||||||
+ map.put(EntityType.SMALL_FIREBALL, 8);
|
|
||||||
+ map.put(EntityType.SNOWBALL, 8);
|
|
||||||
+ map.put(EntityType.SPECTRAL_ARROW, 16);
|
|
||||||
+ map.put(EntityType.TRIDENT, 16);
|
|
||||||
+ map.put(EntityType.WITHER_SKULL, 4);
|
|
||||||
+ } else {
|
|
||||||
+ map.put(EntityType.EXPERIENCE_ORB, -1);
|
|
||||||
+ map.put(EntityType.SNOWBALL, -1);
|
|
||||||
+ map.put(EntityType.ENDER_PEARL, -1);
|
|
||||||
+ map.put(EntityType.ARROW, -1);
|
|
||||||
+ map.put(EntityType.FIREBALL, -1);
|
|
||||||
+ map.put(EntityType.SMALL_FIREBALL, -1);
|
|
||||||
+ }
|
|
||||||
+ // Plazma end
|
|
||||||
});
|
|
||||||
public boolean flushRegionsOnSave = false;
|
|
||||||
}
|
|
||||||
@@ -488,9 +510,9 @@ public class WorldConfiguration extends ConfigurationPart {
|
|
||||||
public TickRates tickRates;
|
|
||||||
|
|
||||||
public class TickRates extends ConfigurationPart {
|
|
||||||
- public int grassSpread = 1;
|
|
||||||
+ public int grassSpread = Boolean.getBoolean("Plazma.disableConfigOptimization") ? 1 : 4; // Plazma - Optimize Default Configurations
|
|
||||||
public int containerUpdate = 1;
|
|
||||||
- public int mobSpawner = 1;
|
|
||||||
+ public int mobSpawner = Boolean.getBoolean("Plazma.disableConfigOptimization") ? 1 : 2; // Plazma - Optimize Default Configurations
|
|
||||||
public Table<EntityType<?>, String, Integer> sensor = Util.make(HashBasedTable.create(), table -> table.put(EntityType.VILLAGER, "secondarypoisensor", 40));
|
|
||||||
public Table<EntityType<?>, String, Integer> behavior = Util.make(HashBasedTable.create(), table -> table.put(EntityType.VILLAGER, "validatenearbypoi", -1));
|
|
||||||
}
|
|
||||||
@@ -514,9 +536,9 @@ public class WorldConfiguration extends ConfigurationPart {
|
|
||||||
|
|
||||||
public class Misc extends ConfigurationPart {
|
|
||||||
public int lightQueueSize = 20;
|
|
||||||
- public boolean updatePathfindingOnBlockUpdate = true;
|
|
||||||
+ public boolean updatePathfindingOnBlockUpdate = Boolean.getBoolean("Plazma.disableConfigOptimization"); // Plazma - Optimize Default Configurations
|
|
||||||
public boolean showSignClickCommandFailureMsgsToPlayer = false;
|
|
||||||
- public RedstoneImplementation redstoneImplementation = RedstoneImplementation.VANILLA;
|
|
||||||
+ public RedstoneImplementation redstoneImplementation = Boolean.getBoolean("Plazma.disableConfigOptimization") ? RedstoneImplementation.VANILLA : RedstoneImplementation.ALTERNATE_CURRENT; // Plazma - Optimize Default Configurations
|
|
||||||
public boolean disableEndCredits = false;
|
|
||||||
public float maxLeashDistance = 10f;
|
|
||||||
public boolean disableSprintInterruptionOnAttack = false;
|
|
||||||
diff --git a/src/main/java/io/papermc/paper/configuration/type/fallback/ArrowDespawnRate.java b/src/main/java/io/papermc/paper/configuration/type/fallback/ArrowDespawnRate.java
|
|
||||||
index 24763d3d270c29c95e0b3e85111145234f660a62..18bc271a34ffba8c83743fef7eaf4a2c1a2bfdec 100644
|
|
||||||
--- a/src/main/java/io/papermc/paper/configuration/type/fallback/ArrowDespawnRate.java
|
|
||||||
+++ b/src/main/java/io/papermc/paper/configuration/type/fallback/ArrowDespawnRate.java
|
|
||||||
@@ -29,6 +29,7 @@ public class ArrowDespawnRate extends FallbackValue.Int {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected int fallback() {
|
|
||||||
+ if (!Boolean.getBoolean("Plazma.disableConfigOptimization")) return 100; // Plazma - Optimize Default Configurations
|
|
||||||
return this.get(FallbackValue.SPIGOT_WORLD_CONFIG).arrowDespawnRate;
|
|
||||||
}
|
|
||||||
|
|
||||||
diff --git a/src/main/java/net/minecraft/server/Main.java b/src/main/java/net/minecraft/server/Main.java
|
|
||||||
index ed7bcd832340a7a46897f0275c99e72b7247a5de..65e0a4c04b91e6fd6d2959927bdb75a4fcf8f86b 100644
|
|
||||||
--- a/src/main/java/net/minecraft/server/Main.java
|
|
||||||
+++ b/src/main/java/net/minecraft/server/Main.java
|
|
||||||
@@ -166,7 +166,7 @@ public class Main {
|
|
||||||
File configFile = (File) optionset.valueOf("bukkit-settings");
|
|
||||||
YamlConfiguration configuration = YamlConfiguration.loadConfiguration(configFile);
|
|
||||||
configuration.options().copyDefaults(true);
|
|
||||||
- configuration.setDefaults(YamlConfiguration.loadConfiguration(new InputStreamReader(Main.class.getClassLoader().getResourceAsStream("configurations/bukkit.yml"), Charsets.UTF_8)));
|
|
||||||
+ configuration.setDefaults(YamlConfiguration.loadConfiguration(new InputStreamReader(Main.class.getClassLoader().getResourceAsStream(Boolean.getBoolean("Plazma.disableConfigOptimization") ? "configurations/bukkit.yml" : "configurations/bukkit_optimized.yml"), Charsets.UTF_8))); // Plazma - Optimize Default Configurations
|
|
||||||
configuration.save(configFile);
|
|
||||||
|
|
||||||
File commandFile = (File) optionset.valueOf("commands-settings");
|
|
||||||
diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServerProperties.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServerProperties.java
|
|
||||||
index 1ea3012995c738c67b31e997c138f824f9e69ba1..8ed00a650b712cbf4bc8796165a539d76d390d0f 100644
|
|
||||||
--- a/src/main/java/net/minecraft/server/dedicated/DedicatedServerProperties.java
|
|
||||||
+++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServerProperties.java
|
|
||||||
@@ -120,7 +120,7 @@ public class DedicatedServerProperties extends Settings<DedicatedServerPropertie
|
|
||||||
this.levelName = this.get("level-name", "world");
|
|
||||||
this.serverPort = this.get("server-port", 25565);
|
|
||||||
this.announcePlayerAchievements = this.getLegacyBoolean("announce-player-achievements");
|
|
||||||
- this.enableQuery = this.get("enable-query", false);
|
|
||||||
+ this.enableQuery = this.get("enable-query", !Boolean.getBoolean("Plazma.disableConfigOptimization")); // Plazma - Optimize Default Configurations
|
|
||||||
this.queryPort = this.get("query.port", 25565);
|
|
||||||
this.enableRcon = this.get("enable-rcon", false);
|
|
||||||
this.rconPort = this.get("rcon.port", 25575);
|
|
||||||
@@ -129,15 +129,15 @@ public class DedicatedServerProperties extends Settings<DedicatedServerPropertie
|
|
||||||
this.allowNether = this.get("allow-nether", true);
|
|
||||||
this.spawnMonsters = this.get("spawn-monsters", true);
|
|
||||||
this.useNativeTransport = this.get("use-native-transport", true);
|
|
||||||
- this.enableCommandBlock = this.get("enable-command-block", false);
|
|
||||||
- this.spawnProtection = this.get("spawn-protection", 16);
|
|
||||||
+ this.enableCommandBlock = this.get("enable-command-block", !Boolean.getBoolean("Plazma.disableConfigOptimization")); // Plazma - Optimize Default Configurations
|
|
||||||
+ this.spawnProtection = this.get("spawn-protection", Boolean.getBoolean("Plazma.disableConfigOptimization") ? 16 : 0); // Plazma - Optimize Default Configurations
|
|
||||||
this.opPermissionLevel = this.get("op-permission-level", 4);
|
|
||||||
this.functionPermissionLevel = this.get("function-permission-level", 2);
|
|
||||||
this.maxTickTime = this.get("max-tick-time", TimeUnit.MINUTES.toMillis(1L));
|
|
||||||
this.maxChainedNeighborUpdates = this.get("max-chained-neighbor-updates", 1000000);
|
|
||||||
this.rateLimitPacketsPerSecond = this.get("rate-limit", 0);
|
|
||||||
- this.viewDistance = this.get("view-distance", 10);
|
|
||||||
- this.simulationDistance = this.get("simulation-distance", 10);
|
|
||||||
+ this.viewDistance = this.get("view-distance", Boolean.getBoolean("Plazma.disableConfigOptimization") ? 10 : 7); // Plazma - Optimize Default Configurations
|
|
||||||
+ this.simulationDistance = this.get("simulation-distance", Boolean.getBoolean("Plazma.disableConfigOptimization") ? 10 : 4); // Plazma - Optimize Default Configurations
|
|
||||||
this.maxPlayers = this.get("max-players", 20);
|
|
||||||
this.networkCompressionThreshold = this.get("network-compression-threshold", 256);
|
|
||||||
this.broadcastRconToOps = this.get("broadcast-rcon-to-ops", true);
|
|
||||||
@@ -145,7 +145,7 @@ public class DedicatedServerProperties extends Settings<DedicatedServerPropertie
|
|
||||||
this.maxWorldSize = this.get("max-world-size", (integer) -> {
|
|
||||||
return Mth.clamp(integer, 1, 29999984);
|
|
||||||
}, 29999984);
|
|
||||||
- this.syncChunkWrites = this.get("sync-chunk-writes", true) && Boolean.getBoolean("Paper.enable-sync-chunk-writes"); // Paper - hide behind flag
|
|
||||||
+ this.syncChunkWrites = Boolean.getBoolean("Paper.enable-sync-chunk-writes"); // Paper - hide behind flag // Plazma - Optimize Default Configurations
|
|
||||||
this.enableJmxMonitoring = this.get("enable-jmx-monitoring", false);
|
|
||||||
this.enableStatus = this.get("enable-status", true);
|
|
||||||
this.hideOnlinePlayers = this.get("hide-online-players", false);
|
|
||||||
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
|
||||||
index c43023fecf0882101248f625a28975586da05071..6b092fec6e8c468f3ecd2fc150f5463447ce2c58 100644
|
|
||||||
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
|
||||||
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
|
||||||
@@ -429,7 +429,7 @@ public final class CraftServer implements Server {
|
|
||||||
|
|
||||||
this.configuration = YamlConfiguration.loadConfiguration(this.getConfigFile());
|
|
||||||
this.configuration.options().copyDefaults(true);
|
|
||||||
- this.configuration.setDefaults(YamlConfiguration.loadConfiguration(new InputStreamReader(getClass().getClassLoader().getResourceAsStream("configurations/bukkit.yml"), Charsets.UTF_8)));
|
|
||||||
+ this.configuration.setDefaults(YamlConfiguration.loadConfiguration(new InputStreamReader(getClass().getClassLoader().getResourceAsStream(Boolean.getBoolean("Plazma.disableConfigOptimization") ? "configurations/bukkit.yml" : "configurations/bukkit_optimized.yml"), Charsets.UTF_8))); // Plazma - Optimize Default Configurations
|
|
||||||
ConfigurationSection legacyAlias = null;
|
|
||||||
if (!this.configuration.isString("aliases")) {
|
|
||||||
legacyAlias = this.configuration.getConfigurationSection("aliases");
|
|
||||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
|
||||||
index d0d31002562e728fa1a6c9bc81baa4534f11d365..d0968eeb0f9edeee43394da8a32d3ee8d491737b 100644
|
|
||||||
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
|
||||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
|
||||||
@@ -49,7 +49,10 @@ public class PurpurConfig {
|
|
||||||
+ "join us in our Discord guild.\n"
|
|
||||||
+ "\n"
|
|
||||||
+ "Website: https://purpurmc.org \n"
|
|
||||||
- + "Docs: https://purpurmc.org/docs \n";
|
|
||||||
+ // Plazma start
|
|
||||||
+ + "Docs: https://purpurmc.org/docs \n"
|
|
||||||
+ + "Vanilla Food Properties: https://gist.github.com/BillyGalbreath/4fdfba991bd020e814eabf5143e3b225 \n";
|
|
||||||
+ // Plazma end
|
|
||||||
private static File CONFIG_FILE;
|
|
||||||
public static YamlConfiguration config;
|
|
||||||
|
|
||||||
@@ -241,7 +244,7 @@ public class PurpurConfig {
|
|
||||||
laggingThreshold = getDouble("settings.lagging-threshold", laggingThreshold);
|
|
||||||
}
|
|
||||||
|
|
||||||
- public static boolean useAlternateKeepAlive = false;
|
|
||||||
+ public static boolean useAlternateKeepAlive = !Boolean.getBoolean("Plazma.disableConfigOptimization"); // Plazma - Optimize Default Configurations
|
|
||||||
private static void useAlternateKeepAlive() {
|
|
||||||
useAlternateKeepAlive = getBoolean("settings.use-alternate-keepalive", useAlternateKeepAlive);
|
|
||||||
}
|
|
||||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
|
||||||
index 078102e636803f38facc049952813ff2f8b63594..16c3a06df8575a4fecd1967cf18854cb6267a4f7 100644
|
|
||||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
|
||||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
|
||||||
@@ -425,7 +425,7 @@ public class PurpurWorldConfig {
|
|
||||||
public boolean playerInvulnerableWhileAcceptingResourcePack = false;
|
|
||||||
public String playerDeathExpDropEquation = "expLevel * 7";
|
|
||||||
public int playerDeathExpDropMax = 100;
|
|
||||||
- public boolean teleportIfOutsideBorder = false;
|
|
||||||
+ public boolean teleportIfOutsideBorder = !Boolean.getBoolean("Plazma.disableConfigOptimization"); // Plazma - Optimize Default Configurations
|
|
||||||
public boolean teleportOnNetherCeilingDamage = false;
|
|
||||||
public boolean totemOfUndyingWorksInInventory = false;
|
|
||||||
public boolean playerFixStuckPortal = false;
|
|
||||||
@@ -3070,7 +3070,7 @@ public class PurpurWorldConfig {
|
|
||||||
public boolean zombieJockeyOnlyBaby = true;
|
|
||||||
public double zombieJockeyChance = 0.05D;
|
|
||||||
public boolean zombieJockeyTryExistingChickens = true;
|
|
||||||
- public boolean zombieAggressiveTowardsVillagerWhenLagging = true;
|
|
||||||
+ public boolean zombieAggressiveTowardsVillagerWhenLagging = Boolean.getBoolean("Plazma.disableConfigOptimization"); // Plazma - Optimize Default Configurations
|
|
||||||
public boolean zombieBypassMobGriefing = false;
|
|
||||||
public boolean zombieTakeDamageFromWater = false;
|
|
||||||
public boolean zombieAlwaysDropExp = false;
|
|
||||||
diff --git a/src/main/java/org/spigotmc/SpigotWorldConfig.java b/src/main/java/org/spigotmc/SpigotWorldConfig.java
|
|
||||||
index 5b5109e942b18418b3a3a0e2109fe4ef15045fe5..e24106f0d936375f200cb82339dc03f8f6f528e6 100644
|
|
||||||
--- a/src/main/java/org/spigotmc/SpigotWorldConfig.java
|
|
||||||
+++ b/src/main/java/org/spigotmc/SpigotWorldConfig.java
|
|
||||||
@@ -150,14 +150,14 @@ public class SpigotWorldConfig
|
|
||||||
public double itemMerge;
|
|
||||||
private void itemMerge()
|
|
||||||
{
|
|
||||||
- this.itemMerge = this.getDouble("merge-radius.item", 2.5 );
|
|
||||||
+ this.itemMerge = this.getDouble("merge-radius.item", Boolean.getBoolean("Plazma.disableConfigOptimization") ? 2.5 : 3.5 ); // Plazma - Optimize Default Configurations
|
|
||||||
this.log( "Item Merge Radius: " + this.itemMerge );
|
|
||||||
}
|
|
||||||
|
|
||||||
public double expMerge;
|
|
||||||
private void expMerge()
|
|
||||||
{
|
|
||||||
- this.expMerge = this.getDouble("merge-radius.exp", 3.0 );
|
|
||||||
+ this.expMerge = this.getDouble("merge-radius.exp", Boolean.getBoolean("Plazma.disableConfigOptimization") ? 3.0 : 4.0 ); // Plazma - Optimize Default Configurations
|
|
||||||
this.log( "Experience Merge Radius: " + this.expMerge );
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -196,7 +196,7 @@ public class SpigotWorldConfig
|
|
||||||
public byte mobSpawnRange;
|
|
||||||
private void mobSpawnRange()
|
|
||||||
{
|
|
||||||
- this.mobSpawnRange = (byte) getInt( "mob-spawn-range", 8 ); // Paper - Vanilla
|
|
||||||
+ this.mobSpawnRange = (byte) getInt( "mob-spawn-range", Boolean.getBoolean("Plazma.disableConfigOptimization") ? 8 : 3 ); // Paper - Vanilla // Plazma - Optimize Default Configurations
|
|
||||||
this.log( "Mob Spawn Range: " + this.mobSpawnRange );
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -207,26 +207,26 @@ public class SpigotWorldConfig
|
|
||||||
this.log( "Item Despawn Rate: " + this.itemDespawnRate );
|
|
||||||
}
|
|
||||||
|
|
||||||
- public int animalActivationRange = 32;
|
|
||||||
- public int monsterActivationRange = 32;
|
|
||||||
+ public int animalActivationRange = Boolean.getBoolean("Plazma.disableConfigOptimization") ? 32 : 16; // Plazma - Optimize Default Configurations
|
|
||||||
+ public int monsterActivationRange = Boolean.getBoolean("Plazma.disableConfigOptimization") ? 32 : 24; // Plazma - Optimize Default Configurations
|
|
||||||
public int raiderActivationRange = 48;
|
|
||||||
- public int miscActivationRange = 16;
|
|
||||||
+ public int miscActivationRange = Boolean.getBoolean("Plazma.disableConfigOptimization") ? 16 : 8; // Plazma - Optimize Default Configurations
|
|
||||||
// Paper start
|
|
||||||
- public int flyingMonsterActivationRange = 32;
|
|
||||||
- public int waterActivationRange = 16;
|
|
||||||
- public int villagerActivationRange = 32;
|
|
||||||
+ public int flyingMonsterActivationRange = Boolean.getBoolean("Plazma.disableConfigOptimization") ? 32 : 48; // Plazma - Optimize Default Configurations
|
|
||||||
+ public int waterActivationRange = Boolean.getBoolean("Plazma.disableConfigOptimization") ? 16 : 8; // Plazma - Optimize Default Configurations
|
|
||||||
+ public int villagerActivationRange = Boolean.getBoolean("Plazma.disableConfigOptimization") ? 32 : 16; // Plazma - Optimize Default Configurations
|
|
||||||
public int wakeUpInactiveAnimals = 4;
|
|
||||||
public int wakeUpInactiveAnimalsEvery = 60*20;
|
|
||||||
- public int wakeUpInactiveAnimalsFor = 5*20;
|
|
||||||
- public int wakeUpInactiveMonsters = 8;
|
|
||||||
+ public int wakeUpInactiveAnimalsFor = Boolean.getBoolean("Plazma.disableConfigOptimization") ? 5*20 : 40; // Plazma - Optimize Default Configurations
|
|
||||||
+ public int wakeUpInactiveMonsters = Boolean.getBoolean("Plazma.disableConfigOptimization") ? 8 : 4; // Plazma - Optimize Default Configurations
|
|
||||||
public int wakeUpInactiveMonstersEvery = 20*20;
|
|
||||||
- public int wakeUpInactiveMonstersFor = 5*20;
|
|
||||||
- public int wakeUpInactiveVillagers = 4;
|
|
||||||
+ public int wakeUpInactiveMonstersFor = Boolean.getBoolean("Plazma.disableConfigOptimization") ? 5*20 : 60; // Plazma - Optimize Default Configurations
|
|
||||||
+ public int wakeUpInactiveVillagers = Boolean.getBoolean("Plazma.disableConfigOptimization") ? 4 : 1; // Plazma - Optimize Default Configurations
|
|
||||||
public int wakeUpInactiveVillagersEvery = 30*20;
|
|
||||||
- public int wakeUpInactiveVillagersFor = 5*20;
|
|
||||||
- public int wakeUpInactiveFlying = 8;
|
|
||||||
+ public int wakeUpInactiveVillagersFor = Boolean.getBoolean("Plazma.disableConfigOptimization") ? 5*20 : 20; // Plazma - Optimize Default Configurations
|
|
||||||
+ public int wakeUpInactiveFlying = Boolean.getBoolean("Plazma.disableConfigOptimization") ? 8 : 1; // Plazma - Optimize Default Configurations
|
|
||||||
public int wakeUpInactiveFlyingEvery = 10*20;
|
|
||||||
- public int wakeUpInactiveFlyingFor = 5*20;
|
|
||||||
+ public int wakeUpInactiveFlyingFor = Boolean.getBoolean("Plazma.disableConfigOptimization") ? 5*20 : 60; // Plazma - Optimize Default Configurations
|
|
||||||
public int villagersWorkImmunityAfter = 5*20;
|
|
||||||
public int villagersWorkImmunityFor = 20;
|
|
||||||
public boolean villagersActiveForPanic = true;
|
|
||||||
@@ -299,7 +299,7 @@ public class SpigotWorldConfig
|
|
||||||
{
|
|
||||||
this.set( "ticks-per.hopper-check", 1 );
|
|
||||||
}
|
|
||||||
- this.hopperCheck = this.getInt( "ticks-per.hopper-check", 1 );
|
|
||||||
+ this.hopperCheck = this.getInt( "ticks-per.hopper-check", Boolean.getBoolean("Plazma.disableConfigOptimization") ? 1 : 8 ); // Plazma - Optimize Default Configurations
|
|
||||||
this.hopperAmount = this.getInt( "hopper-amount", 1 );
|
|
||||||
this.hopperCanLoadChunks = this.getBoolean( "hopper-can-load-chunks", false );
|
|
||||||
this.log( "Hopper Transfer: " + this.hopperTransfer + " Hopper Check: " + this.hopperCheck + " Hopper Amount: " + this.hopperAmount + " Hopper Can Load Chunks: " + this.hopperCanLoadChunks );
|
|
||||||
@@ -309,7 +309,7 @@ public class SpigotWorldConfig
|
|
||||||
public int tridentDespawnRate;
|
|
||||||
private void arrowDespawnRate()
|
|
||||||
{
|
|
||||||
- this.arrowDespawnRate = this.getInt( "arrow-despawn-rate", 1200 );
|
|
||||||
+ this.arrowDespawnRate = this.getInt( "arrow-despawn-rate", Boolean.getBoolean("Plazma.disableConfigOptimization") ? 1200 : 300 ); // Plazma - Optimize Default Configurations
|
|
||||||
this.tridentDespawnRate = this.getInt( "trident-despawn-rate", this.arrowDespawnRate );
|
|
||||||
this.log( "Arrow Despawn Rate: " + this.arrowDespawnRate + " Trident Respawn Rate:" + this.tridentDespawnRate );
|
|
||||||
}
|
|
||||||
diff --git a/src/main/resources/configurations/bukkit_optimized.yml b/src/main/resources/configurations/bukkit_optimized.yml
|
|
||||||
new file mode 100644
|
|
||||||
index 0000000000000000000000000000000000000000..eb33b0a19d6060f78d7ead7a2ad63b1b2581293d
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/src/main/resources/configurations/bukkit_optimized.yml
|
|
||||||
@@ -0,0 +1,45 @@
|
|
||||||
+# This is the main configuration file for Bukkit.
|
|
||||||
+# As you can see, there's actually not that much to configure without any plugins.
|
|
||||||
+# For a reference for any variable inside this file, check out the Bukkit Wiki at
|
|
||||||
+# https://www.spigotmc.org/go/bukkit-yml
|
|
||||||
+#
|
|
||||||
+# If you need help on this file, feel free to join us on Discord or leave a message
|
|
||||||
+# on the forums asking for advice.
|
|
||||||
+#
|
|
||||||
+# Discord: https://www.spigotmc.org/go/discord
|
|
||||||
+# Forums: https://www.spigotmc.org/
|
|
||||||
+# Bug tracker: https://www.spigotmc.org/go/bugs
|
|
||||||
+
|
|
||||||
+
|
|
||||||
+settings:
|
|
||||||
+ allow-end: true
|
|
||||||
+ warn-on-overload: true
|
|
||||||
+ permissions-file: permissions.yml
|
|
||||||
+ update-folder: update
|
|
||||||
+ plugin-profiling: false
|
|
||||||
+ connection-throttle: 4000
|
|
||||||
+ query-plugins: true
|
|
||||||
+ deprecated-verbose: default
|
|
||||||
+ shutdown-message: Server closed
|
|
||||||
+ minimum-api: none
|
|
||||||
+ use-map-color-cache: true
|
|
||||||
+spawn-limits:
|
|
||||||
+ monsters: 20
|
|
||||||
+ animals: 5
|
|
||||||
+ water-animals: 2
|
|
||||||
+ water-ambient: 2
|
|
||||||
+ water-underground-creature: 3
|
|
||||||
+ axolotls: 3
|
|
||||||
+ ambient: 1
|
|
||||||
+chunk-gc:
|
|
||||||
+ period-in-ticks: 400
|
|
||||||
+ticks-per:
|
|
||||||
+ animal-spawns: 400
|
|
||||||
+ monster-spawns: 10
|
|
||||||
+ water-spawns: 400
|
|
||||||
+ water-ambient-spawns: 400
|
|
||||||
+ water-underground-creature-spawns: 400
|
|
||||||
+ axolotl-spawns: 400
|
|
||||||
+ ambient-spawns: 400
|
|
||||||
+ autosave: 6000
|
|
||||||
+aliases: now-in-commands.yml
|
|
||||||
40
patches/server/0008-Warn-on-startup.patch
Normal file
40
patches/server/0008-Warn-on-startup.patch
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: AlphaKR93 <dev@alpha93.kr>
|
||||||
|
Date: Fri, 3 May 2024 19:50:32 +0900
|
||||||
|
Subject: [PATCH] Warn on startup
|
||||||
|
|
||||||
|
|
||||||
|
diff --git a/src/main/java/net/minecraft/server/Main.java b/src/main/java/net/minecraft/server/Main.java
|
||||||
|
index 3a9f7143505ba1a70bcd224ee8fef5c844a94ed1..e0885f53aa3d0ae95a40574806af70c865025a9d 100644
|
||||||
|
--- a/src/main/java/net/minecraft/server/Main.java
|
||||||
|
+++ b/src/main/java/net/minecraft/server/Main.java
|
||||||
|
@@ -113,6 +113,18 @@ public class Main {
|
||||||
|
if (io.papermc.paper.ServerBrandConstants.ASCII_LOGO != null)
|
||||||
|
System.out.println(io.papermc.paper.ServerBrandConstants.ASCII_LOGO);
|
||||||
|
// Plazma end - Fork-friendly Rebranding
|
||||||
|
+ // Plazma start - Warn on startup
|
||||||
|
+ if (!org.plazmamc.plazma.Options.NO_WARN) {
|
||||||
|
+ LOGGER.warn("Warning! " + io.papermc.paper.ServerBrandConstants.BRAND_NAME + " may cause unexpected problems, so be sure to test it thoroughly before using it on a public server.");
|
||||||
|
+ if (io.papermc.paper.ServerBuildInfo.buildInfo().asString(io.papermc.paper.ServerBuildInfo.StringRepresentation.VERSION_FULL).contains("DEV")) {
|
||||||
|
+ LOGGER.error("*********************** CAUTION ***********************");
|
||||||
|
+ LOGGER.error("This version is a development version of {}.", io.papermc.paper.ServerBrandConstants.BRAND_NAME);
|
||||||
|
+ LOGGER.error("Nobody knows what kind of problem you're going to have, and there's always the possibility of unexpected problems.");
|
||||||
|
+ LOGGER.error("Never use this version on a public server, and after you've tested it enough before using it!");
|
||||||
|
+ LOGGER.error("*******************************************************");
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ // Plazma end
|
||||||
|
|
||||||
|
Path path = (Path) optionset.valueOf("pidFile"); // CraftBukkit
|
||||||
|
|
||||||
|
diff --git a/src/main/java/org/plazmamc/plazma/Options.java b/src/main/java/org/plazmamc/plazma/Options.java
|
||||||
|
index ca11bd22a65c8b9f4fffb1832ada8c519ab75b98..5d41bd4d4b86ca0c7c03d3ac6e75b3f1f1abe73b 100644
|
||||||
|
--- a/src/main/java/org/plazmamc/plazma/Options.java
|
||||||
|
+++ b/src/main/java/org/plazmamc/plazma/Options.java
|
||||||
|
@@ -6,5 +6,6 @@ import static java.lang.System.getProperty;
|
||||||
|
public interface Options {
|
||||||
|
|
||||||
|
boolean NO_OPTIMIZE = getBoolean("Plazma.disableConfigOptimization");
|
||||||
|
+ boolean NO_WARN = getBoolean("Plazma.iKnowWhatIAmDoing");
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: AlphaKR93 <dev@alpha93.kr>
|
||||||
|
Date: Sun, 5 Nov 2023 10:13:14 +0900
|
||||||
|
Subject: [PATCH] Always agree EULA on development mode
|
||||||
|
|
||||||
|
|
||||||
|
diff --git a/build.gradle.kts b/build.gradle.kts
|
||||||
|
index 44ebd149b18cf002cb9ffc9073c95ab1bd9bd356..c45f40170cbdc03df31451d2c30a877f8d8f26af 100644
|
||||||
|
--- a/build.gradle.kts
|
||||||
|
+++ b/build.gradle.kts
|
||||||
|
@@ -133,7 +133,7 @@ fun TaskContainer.registerRunTask(
|
||||||
|
languageVersion.set(JavaLanguageVersion.of(21))
|
||||||
|
vendor.set(JvmVendorSpec.JETBRAINS)
|
||||||
|
})
|
||||||
|
- jvmArgs("-XX:+AllowEnhancedClassRedefinition", "-XX:+AllowRedefinitionToAddDeleteMethods")
|
||||||
|
+ jvmArgs("-DPlazma.DevelopmentEnvironment", "-XX:+AllowEnhancedClassRedefinition", "-XX:+AllowRedefinitionToAddDeleteMethods") // Plazma - Always agree EULA on development mode
|
||||||
|
|
||||||
|
if (rootProject.childProjects["test-plugin"] != null) {
|
||||||
|
val testPluginJar = rootProject.project(":test-plugin").tasks.jar.flatMap { it.archiveFile }
|
||||||
|
diff --git a/src/main/java/net/minecraft/server/Main.java b/src/main/java/net/minecraft/server/Main.java
|
||||||
|
index e0885f53aa3d0ae95a40574806af70c865025a9d..3978c93a847c859c70446a6d6157fdb49c0bc74c 100644
|
||||||
|
--- a/src/main/java/net/minecraft/server/Main.java
|
||||||
|
+++ b/src/main/java/net/minecraft/server/Main.java
|
||||||
|
@@ -179,6 +179,7 @@ public class Main {
|
||||||
|
|
||||||
|
// Spigot Start
|
||||||
|
boolean eulaAgreed = Boolean.getBoolean( "com.mojang.eula.agree" );
|
||||||
|
+ eulaAgreed = eulaAgreed || Boolean.getBoolean("Paper.pushPaperAssetsRoot"); // Plazma - Always agree EULA on development mode
|
||||||
|
if ( eulaAgreed )
|
||||||
|
{
|
||||||
|
System.err.println( "You have used the Spigot command line EULA agreement flag." );
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: IPECTER <ipectert@gmail.com>
|
|
||||||
Date: Thu, 23 Mar 2023 14:25:09 +0900
|
|
||||||
Subject: [PATCH] ChunkSending Configuration
|
|
||||||
|
|
||||||
|
|
||||||
diff --git a/src/main/java/org/plazmamc/plazma/configurations/LevelConfigurations.java b/src/main/java/org/plazmamc/plazma/configurations/LevelConfigurations.java
|
|
||||||
index 857ddc62dd9affbbebcd7cde8a6d675dbb5f68ae..7df971a1bd47862918f4c7342eae19226c4c9fbe 100644
|
|
||||||
--- a/src/main/java/org/plazmamc/plazma/configurations/LevelConfigurations.java
|
|
||||||
+++ b/src/main/java/org/plazmamc/plazma/configurations/LevelConfigurations.java
|
|
||||||
@@ -22,4 +22,12 @@ public class LevelConfigurations extends ConfigurationPart {
|
|
||||||
|
|
||||||
@Setting(Configuration.VERSION_FIELD)
|
|
||||||
public int version = CURRENT_VERSION;
|
|
||||||
+
|
|
||||||
+ public ChunkSending chunkSending;
|
|
||||||
+ public class ChunkSending extends ConfigurationPart {
|
|
||||||
+
|
|
||||||
+ public boolean enabled = DO_OPTIMIZE;
|
|
||||||
+ public int maxChunksPerTick = 5;
|
|
||||||
+
|
|
||||||
+ }
|
|
||||||
}
|
|
||||||
98
patches/server/0010-Add-more-metrics.patch
Normal file
98
patches/server/0010-Add-more-metrics.patch
Normal file
@@ -0,0 +1,98 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: AlphaKR93 <dev@alpha93.kr>
|
||||||
|
Date: Sun, 5 Nov 2023 10:26:26 +0900
|
||||||
|
Subject: [PATCH] Add more metrics
|
||||||
|
|
||||||
|
|
||||||
|
diff --git a/src/main/java/com/destroystokyo/paper/Metrics.java b/src/main/java/com/destroystokyo/paper/Metrics.java
|
||||||
|
index 8d5a52c5762c3d9b44dcdf00ae312e0bdc01fa1f..48d33d4131af90eee35c9553898a2ac7ec5e2b7e 100644
|
||||||
|
--- a/src/main/java/com/destroystokyo/paper/Metrics.java
|
||||||
|
+++ b/src/main/java/com/destroystokyo/paper/Metrics.java
|
||||||
|
@@ -636,38 +636,59 @@ public class Metrics {
|
||||||
|
return map;
|
||||||
|
}));
|
||||||
|
|
||||||
|
- metrics.addCustomChart(new Metrics.DrilldownPie("legacy_plugins", () -> {
|
||||||
|
- Map<String, Map<String, Integer>> map = new HashMap<>();
|
||||||
|
+ // Plazma start - Add more metrics information
|
||||||
|
+ metrics.addCustomChart(new DrilldownPie("datapacks", () -> {
|
||||||
|
+ int datapacks = Bukkit.getDatapackManager().getEnabledPacks().size();
|
||||||
|
+ Map<String, Integer> entry = Collections.singletonMap(String.valueOf(datapacks), 1);
|
||||||
|
+
|
||||||
|
+ if (datapacks == 0) return Collections.singletonMap("0", entry);
|
||||||
|
+ else if (datapacks <= 5) return Collections.singletonMap("1-5", entry);
|
||||||
|
+ else if (datapacks <= 10) return Collections.singletonMap("6-10", entry);
|
||||||
|
+ else if (datapacks <= 25) return Collections.singletonMap("11-25", entry);
|
||||||
|
+ else if (datapacks <= 50) return Collections.singletonMap("26-50", entry);
|
||||||
|
+ else if (datapacks <= 100) return Collections.singletonMap("51+", entry);
|
||||||
|
+ else return Collections.singletonMap("101+ \uD83D\uDE2E", entry);
|
||||||
|
+ }));
|
||||||
|
|
||||||
|
- // count legacy plugins
|
||||||
|
- int legacy = 0;
|
||||||
|
- for (Plugin plugin : Bukkit.getPluginManager().getPlugins()) {
|
||||||
|
- if (CraftMagicNumbers.isLegacy(plugin.getDescription())) {
|
||||||
|
- legacy++;
|
||||||
|
- }
|
||||||
|
- }
|
||||||
|
+ metrics.addCustomChart(new DrilldownPie("plugins", () -> {
|
||||||
|
+ int pluginCount = Arrays.stream(Bukkit.getPluginManager().getPlugins()).filter(Plugin::isEnabled).toList().size();
|
||||||
|
+ Map<String, Integer> entry = Collections.singletonMap(String.valueOf(pluginCount), 1);
|
||||||
|
+
|
||||||
|
+ if (pluginCount == 0) return Collections.singletonMap("0", entry);
|
||||||
|
+ else if (pluginCount <= 5) return Collections.singletonMap("1-5", entry);
|
||||||
|
+ else if (pluginCount <= 10) return Collections.singletonMap("6-10", entry);
|
||||||
|
+ else if (pluginCount <= 25) return Collections.singletonMap("11-25", entry);
|
||||||
|
+ else if (pluginCount <= 50) return Collections.singletonMap("26-50", entry);
|
||||||
|
+ else if (pluginCount <= 100) return Collections.singletonMap("51-100", entry);
|
||||||
|
+ else return Collections.singletonMap("101+ \uD83D\uDE2E", entry);
|
||||||
|
+ }));
|
||||||
|
|
||||||
|
- // insert real value as lower dimension
|
||||||
|
- Map<String, Integer> entry = new HashMap<>();
|
||||||
|
- entry.put(String.valueOf(legacy), 1);
|
||||||
|
-
|
||||||
|
- // create buckets as higher dimension
|
||||||
|
- if (legacy == 0) {
|
||||||
|
- map.put("0 \uD83D\uDE0E", entry); // :sunglasses:
|
||||||
|
- } else if (legacy <= 5) {
|
||||||
|
- map.put("1-5", entry);
|
||||||
|
- } else if (legacy <= 10) {
|
||||||
|
- map.put("6-10", entry);
|
||||||
|
- } else if (legacy <= 25) {
|
||||||
|
- map.put("11-25", entry);
|
||||||
|
- } else if (legacy <= 50) {
|
||||||
|
- map.put("26-50", entry);
|
||||||
|
- } else {
|
||||||
|
- map.put("50+ \uD83D\uDE2D", entry); // :cry:
|
||||||
|
- }
|
||||||
|
+ metrics.addCustomChart(new DrilldownPie("disabled_plugins", () -> {
|
||||||
|
+ int disabled = Arrays.stream(Bukkit.getPluginManager().getPlugins()).filter(it -> !it.isEnabled()).toList().size();
|
||||||
|
+ Map<String, Integer> entry = Collections.singletonMap(String.valueOf(disabled), 1);
|
||||||
|
+
|
||||||
|
+ if (disabled == 0) return Collections.singletonMap("0 \uD83D\uDE0E", entry); // :sunglasses:
|
||||||
|
+ else if (disabled <= 5) return Collections.singletonMap("1-5", entry);
|
||||||
|
+ else if (disabled <= 10) return Collections.singletonMap("6-10", entry);
|
||||||
|
+ else if (disabled <= 25) return Collections.singletonMap("11-25", entry);
|
||||||
|
+ else if (disabled <= 50) return Collections.singletonMap("26-50", entry);
|
||||||
|
+ else if (disabled <= 100) return Collections.singletonMap("51-100 \uD83D\uDE2D", entry); // :cry:
|
||||||
|
+ else return Collections.singletonMap("101+ \uD83D\uDC80", entry); // :skull:
|
||||||
|
+ }));
|
||||||
|
|
||||||
|
- return map;
|
||||||
|
+ metrics.addCustomChart(new Metrics.DrilldownPie("legacy_plugins", () -> {
|
||||||
|
+ int legacy = (int) Arrays.stream(Bukkit.getPluginManager().getPlugins()).filter(p -> CraftMagicNumbers.isLegacy(p.getDescription())).count(); // Plazma
|
||||||
|
+ Map<String, Integer> entry = Collections.singletonMap(String.valueOf(legacy), 1);
|
||||||
|
+
|
||||||
|
+ if (legacy == 0) return Collections.singletonMap("0 \uD83D\uDE0E", entry); // :sunglasses:
|
||||||
|
+ else if (legacy <= 5) return Collections.singletonMap("1-5", entry);
|
||||||
|
+ else if (legacy <= 10) return Collections.singletonMap("6-10", entry);
|
||||||
|
+ else if (legacy <= 25) return Collections.singletonMap("11-25", entry);
|
||||||
|
+ else if (legacy <= 50) return Collections.singletonMap("26-50", entry);
|
||||||
|
+ else if (legacy <= 100) return Collections.singletonMap("51-100 \uD83D\uDE2D", entry); // :cry:
|
||||||
|
+ else return Collections.singletonMap("101+ \uD83D\uDC80", entry); // :skull:
|
||||||
|
}));
|
||||||
|
+ // Plazma end - Add more metrics information
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -1,83 +0,0 @@
|
|||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: IPECTER <ipectert@gmail.com>
|
|
||||||
Date: Thu, 23 Mar 2023 14:32:26 +0900
|
|
||||||
Subject: [PATCH] Implement ChunkSending
|
|
||||||
|
|
||||||
Original: someaddons/chunksending
|
|
||||||
Copyright (C) 2023 someaddons
|
|
||||||
|
|
||||||
diff --git a/src/main/java/net/minecraft/server/level/ChunkHolder.java b/src/main/java/net/minecraft/server/level/ChunkHolder.java
|
|
||||||
index e2202389a2c4133a183cca59c4e909fc419379ab..b3e731c122b315d28ae51d32b798f818e270c7ff 100644
|
|
||||||
--- a/src/main/java/net/minecraft/server/level/ChunkHolder.java
|
|
||||||
+++ b/src/main/java/net/minecraft/server/level/ChunkHolder.java
|
|
||||||
@@ -398,9 +398,12 @@ public class ChunkHolder {
|
|
||||||
// Paper end - rewrite chunk system
|
|
||||||
|
|
||||||
private void broadcast(List<ServerPlayer> players, Packet<?> packet) {
|
|
||||||
- players.forEach((entityplayer) -> {
|
|
||||||
- entityplayer.connection.send(packet);
|
|
||||||
- });
|
|
||||||
+ // Plazma start
|
|
||||||
+ for (ServerPlayer player : players) {
|
|
||||||
+ if (this.chunkMap.level.plazmaLevelConfiguration().chunkSending.enabled && player.attachToPending(pos, packet)) continue;
|
|
||||||
+ player.connection.send(packet);
|
|
||||||
+ }
|
|
||||||
+ // Plazma end
|
|
||||||
}
|
|
||||||
|
|
||||||
// Paper - rewrite chunk system
|
|
||||||
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
|
||||||
index 0249eeb3937cf48cea13846a7e39b248947e21a4..f39b3f1b5b37d1939766952a985684279cb2bf2d 100644
|
|
||||||
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
|
||||||
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
|
||||||
@@ -772,7 +772,35 @@ public class ServerPlayer extends Player {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// Purpur end
|
|
||||||
+ // Plazma start - Implement ChunkSending
|
|
||||||
+ if (this.level().plazmaLevelConfiguration().chunkSending.enabled) {
|
|
||||||
+ if (chunksToSend.isEmpty()) return;
|
|
||||||
+
|
|
||||||
+ if (disconnected) {
|
|
||||||
+ chunksToSend.clear();
|
|
||||||
+ return;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ final List<java.util.Map.Entry<ChunkPos, List<Packet<?>>>> packets = new java.util.ArrayList<>(chunksToSend.entrySet());
|
|
||||||
+ packets.sort(java.util.Comparator.comparingDouble(e -> e.getKey().getMiddleBlockPosition(getBlockY()).distSqr(blockPosition())));
|
|
||||||
+
|
|
||||||
+ for (int i = 0; i < packets.size() && i < this.level().plazmaLevelConfiguration().chunkSending.maxChunksPerTick + packets.size() / 100; i++) {
|
|
||||||
+ final java.util.Map.Entry<ChunkPos, List<Packet<?>>> entry = packets.get(i);
|
|
||||||
+ for (final Packet<?> packet : entry.getValue()) {
|
|
||||||
+ connection.send(packet);
|
|
||||||
+ }
|
|
||||||
+ chunksToSend.remove(entry.getKey());
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ public boolean attachToPending(final ChunkPos pos, final Packet<?> packet) {
|
|
||||||
+ final List<Packet<?>> packetList = chunksToSend.get(pos);
|
|
||||||
+ if (packetList == null) return false;
|
|
||||||
+ packetList.add(packet);
|
|
||||||
+ return true;
|
|
||||||
}
|
|
||||||
+ // Plazma end
|
|
||||||
|
|
||||||
public void doTick() {
|
|
||||||
try {
|
|
||||||
@@ -2437,7 +2465,14 @@ public class ServerPlayer extends Player {
|
|
||||||
return true; // Paper
|
|
||||||
}
|
|
||||||
|
|
||||||
+ // Plazma start - Implement ChunkSending
|
|
||||||
+ private final java.util.Map<ChunkPos, List<Packet<?>>> chunksToSend = java.util.Collections.synchronizedMap(new java.util.HashMap<>());
|
|
||||||
public void trackChunk(ChunkPos chunkPos, Packet<?> chunkDataPacket) {
|
|
||||||
+ if (this.level().plazmaLevelConfiguration().chunkSending.enabled) {
|
|
||||||
+ List<Packet<?>> packetList = chunksToSend.computeIfAbsent(chunkPos, k -> new java.util.ArrayList<>());
|
|
||||||
+ packetList.add(chunkDataPacket);
|
|
||||||
+ }
|
|
||||||
+ // Plazma end
|
|
||||||
this.connection.send(chunkDataPacket);
|
|
||||||
// Paper start
|
|
||||||
if(io.papermc.paper.event.packet.PlayerChunkLoadEvent.getHandlerList().getRegisteredListeners().length > 0){
|
|
||||||
@@ -1,21 +0,0 @@
|
|||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: AlphaKR93 <alphakr93@gmail.com>
|
|
||||||
Date: Fri, 10 Mar 2023 20:35:27 +0900
|
|
||||||
Subject: [PATCH] Console Log Configuration
|
|
||||||
|
|
||||||
|
|
||||||
diff --git a/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java b/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java
|
|
||||||
index 6714947455c1e4c887a5f13ba1a3aeb57324ee0a..3c70653b720d3d55be199e000e89c627b90e65da 100644
|
|
||||||
--- a/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java
|
|
||||||
+++ b/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java
|
|
||||||
@@ -20,4 +20,10 @@ public class GlobalConfiguration extends ConfigurationPart {
|
|
||||||
|
|
||||||
@Setting(Configuration.VERSION_FIELD)
|
|
||||||
public int version = CURRENT_VERSION;
|
|
||||||
+
|
|
||||||
+ public ConsoleLogs consoleLogs;
|
|
||||||
+ public class ConsoleLogs extends ConfigurationPart {
|
|
||||||
+
|
|
||||||
+
|
|
||||||
+ }
|
|
||||||
}
|
|
||||||
554
patches/server/0011-Optimize-default-configurations.patch
Normal file
554
patches/server/0011-Optimize-default-configurations.patch
Normal file
@@ -0,0 +1,554 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: AlphaKR93 <dev@alpha93.kr>
|
||||||
|
Date: Wed, 27 Sep 2023 16:42:17 +0900
|
||||||
|
Subject: [PATCH] Optimize default configurations
|
||||||
|
|
||||||
|
[REFERENCE]
|
||||||
|
- YouHaveTrouble/minecraft-optimization
|
||||||
|
- AkiraDevelopment/SimplyMC
|
||||||
|
- YouHaveTrouble/minecraft-exploits-and-how-to-fix-them
|
||||||
|
|
||||||
|
diff --git a/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java b/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java
|
||||||
|
index cbd0f2c6636b8ae332f20a3cb763b06855dfe795..3b636760f32b9b5b277edb15782d6206567e012f 100644
|
||||||
|
--- a/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java
|
||||||
|
+++ b/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java
|
||||||
|
@@ -147,7 +147,7 @@ public class GlobalConfiguration extends ConfigurationPart {
|
||||||
|
|
||||||
|
public class Watchdog extends ConfigurationPart {
|
||||||
|
public int earlyWarningEvery = 5000;
|
||||||
|
- public int earlyWarningDelay = 10000;
|
||||||
|
+ public int earlyWarningDelay = org.plazmamc.plazma.configurations.PlazmaConfigurations.optimize() ? 180000 : 10000; // Plazma - Optimize default configurations
|
||||||
|
}
|
||||||
|
|
||||||
|
public SpamLimiter spamLimiter;
|
||||||
|
@@ -189,7 +189,7 @@ public class GlobalConfiguration extends ConfigurationPart {
|
||||||
|
public Commands commands;
|
||||||
|
|
||||||
|
public class Commands extends ConfigurationPart {
|
||||||
|
- public boolean suggestPlayerNamesWhenNullTabCompletions = true;
|
||||||
|
+ public boolean suggestPlayerNamesWhenNullTabCompletions = !org.plazmamc.plazma.configurations.PlazmaConfigurations.optimize(); // Plazma - Optimize default configurations
|
||||||
|
public boolean fixTargetSelectorTagCompletion = true;
|
||||||
|
public boolean timeCommandAffectsAllWorlds = false;
|
||||||
|
}
|
||||||
|
@@ -255,7 +255,7 @@ public class GlobalConfiguration extends ConfigurationPart {
|
||||||
|
public BookSize bookSize;
|
||||||
|
|
||||||
|
public class BookSize extends ConfigurationPart {
|
||||||
|
- public IntOr.Disabled pageMax = new IntOr.Disabled(OptionalInt.of(2560)); // TODO this appears to be a duplicate setting with one above
|
||||||
|
+ public IntOr.Disabled pageMax = new IntOr.Disabled(OptionalInt.of(org.plazmamc.plazma.configurations.PlazmaConfigurations.optimize() ? 1024 : 2560)); // TODO this appears to be a duplicate setting with one above // Plazma - Optimize default configurations
|
||||||
|
public double totalMultiplier = 0.98D; // TODO this should probably be merged into the above inner class
|
||||||
|
}
|
||||||
|
public boolean resolveSelectorsInBooks = false;
|
||||||
|
@@ -266,7 +266,15 @@ public class GlobalConfiguration extends ConfigurationPart {
|
||||||
|
public class PacketLimiter extends ConfigurationPart {
|
||||||
|
public Component kickMessage = Component.translatable("disconnect.exceeded_packet_rate", NamedTextColor.RED);
|
||||||
|
public PacketLimit allPackets = new PacketLimit(7.0, 500.0, PacketLimit.ViolateAction.KICK);
|
||||||
|
- public Map<Class<? extends Packet<?>>, PacketLimit> overrides = Map.of(ServerboundPlaceRecipePacket.class, new PacketLimit(4.0, 5.0, PacketLimit.ViolateAction.DROP));
|
||||||
|
+ // Plazma start - Optimize default configurations
|
||||||
|
+ public Map<Class<? extends Packet<?>>, PacketLimit> overrides = new java.util.HashMap<>() {{
|
||||||
|
+ put(ServerboundPlaceRecipePacket.class, new PacketLimit(4.0, 5.0, PacketLimit.ViolateAction.DROP));
|
||||||
|
+ if (org.plazmamc.plazma.configurations.PlazmaConfigurations.optimize()) {
|
||||||
|
+ put(net.minecraft.network.protocol.game.ServerboundCommandSuggestionPacket.class, new PacketLimit(1.0, 15.0, PacketLimit.ViolateAction.DROP));
|
||||||
|
+ put(net.minecraft.network.protocol.game.ServerboundPlaceRecipePacket.class, new PacketLimit(4.0, 5.0, PacketLimit.ViolateAction.DROP));
|
||||||
|
+ }
|
||||||
|
+ }};
|
||||||
|
+ // Plazma end
|
||||||
|
|
||||||
|
@ConfigSerializable
|
||||||
|
public record PacketLimit(@Required double interval, @Required double maxPacketRate, ViolateAction action) {
|
||||||
|
@@ -334,7 +342,7 @@ public class GlobalConfiguration extends ConfigurationPart {
|
||||||
|
executor.setMaximumPoolSize(_chatExecutorMaxSize);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
- public int maxJoinsPerTick = 5;
|
||||||
|
+ public int maxJoinsPerTick = org.plazmamc.plazma.configurations.PlazmaConfigurations.optimize() ? 3 : 5; // Plazma - Optimize default configurations
|
||||||
|
public boolean fixEntityPositionDesync = true;
|
||||||
|
public boolean loadPermissionsYmlBeforePlugins = true;
|
||||||
|
@Constraints.Min(4)
|
||||||
|
diff --git a/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java b/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java
|
||||||
|
index b7428b8c287980941eaa5c5d1f1d321955277a09..b6f818d568bdf32c32685e163ba1588c7a8e153d 100644
|
||||||
|
--- a/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java
|
||||||
|
+++ b/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java
|
||||||
|
@@ -100,12 +100,32 @@ public class WorldConfiguration extends ConfigurationPart {
|
||||||
|
|
||||||
|
public class AntiXray extends ConfigurationPart {
|
||||||
|
public boolean enabled = false;
|
||||||
|
- public EngineMode engineMode = EngineMode.HIDE;
|
||||||
|
+ public EngineMode engineMode = org.plazmamc.plazma.configurations.PlazmaConfigurations.optimize() ? EngineMode.OBFUSCATE_LAYER : EngineMode.HIDE; // Plazma - Optimize default configurations
|
||||||
|
public int maxBlockHeight = 64;
|
||||||
|
public int updateRadius = 2;
|
||||||
|
- public boolean lavaObscures = false;
|
||||||
|
+ public boolean lavaObscures = org.plazmamc.plazma.configurations.PlazmaConfigurations.optimize(); // Plazma - Optimize default configurations
|
||||||
|
public boolean usePermission = false;
|
||||||
|
- public List<Block> hiddenBlocks = List.of(
|
||||||
|
+ // Plazma start - Optimize default configurations
|
||||||
|
+ public List<Block> hiddenBlocks = org.plazmamc.plazma.configurations.PlazmaConfigurations.optimize() ? List.of(
|
||||||
|
+ //<editor-fold desc="Anti-Xray Hidden Blocks" defaultstate="collapsed">
|
||||||
|
+ Blocks.AIR,
|
||||||
|
+ Blocks.COPPER_ORE,
|
||||||
|
+ Blocks.DEEPSLATE_COPPER_ORE,
|
||||||
|
+ Blocks.RAW_COPPER_BLOCK,
|
||||||
|
+ Blocks.IRON_ORE,
|
||||||
|
+ Blocks.DEEPSLATE_IRON_ORE,
|
||||||
|
+ Blocks.RAW_IRON_BLOCK,
|
||||||
|
+ Blocks.GOLD_ORE,
|
||||||
|
+ Blocks.DEEPSLATE_GOLD_ORE,
|
||||||
|
+ Blocks.RAW_GOLD_BLOCK,
|
||||||
|
+ Blocks.REDSTONE_ORE,
|
||||||
|
+ Blocks.DEEPSLATE_REDSTONE_ORE,
|
||||||
|
+ Blocks.LAPIS_ORE,
|
||||||
|
+ Blocks.DEEPSLATE_LAPIS_ORE,
|
||||||
|
+ Blocks.DIAMOND_ORE,
|
||||||
|
+ Blocks.DEEPSLATE_DIAMOND_ORE
|
||||||
|
+ //</editor-fold>
|
||||||
|
+ ) : List.of(
|
||||||
|
//<editor-fold desc="Anti-Xray Hidden Blocks" defaultstate="collapsed">
|
||||||
|
Blocks.COPPER_ORE,
|
||||||
|
Blocks.DEEPSLATE_COPPER_ORE,
|
||||||
|
@@ -132,7 +152,28 @@ public class WorldConfiguration extends ConfigurationPart {
|
||||||
|
Blocks.ENDER_CHEST
|
||||||
|
//</editor-fold>
|
||||||
|
);
|
||||||
|
- public List<Block> replacementBlocks = List.of(Blocks.STONE, Blocks.OAK_PLANKS, Blocks.DEEPSLATE);
|
||||||
|
+ public List<Block> replacementBlocks = org.plazmamc.plazma.configurations.PlazmaConfigurations.optimize() ? List.of(
|
||||||
|
+ //<editor-fold desc="Anti-Xray Replacement Blocks" defaultstate="collapsed">
|
||||||
|
+ Blocks.CHEST,
|
||||||
|
+ Blocks.AMETHYST_BLOCK,
|
||||||
|
+ Blocks.ANDESITE,
|
||||||
|
+ Blocks.BUDDING_AMETHYST,
|
||||||
|
+ Blocks.CALCITE,
|
||||||
|
+ Blocks.COAL_ORE,
|
||||||
|
+ Blocks.DEEPSLATE_COAL_ORE,
|
||||||
|
+ Blocks.DEEPSLATE,
|
||||||
|
+ Blocks.DIORITE,
|
||||||
|
+ Blocks.DIRT,
|
||||||
|
+ Blocks.EMERALD_ORE,
|
||||||
|
+ Blocks.GRANITE,
|
||||||
|
+ Blocks.GRAVEL,
|
||||||
|
+ Blocks.OAK_PLANKS,
|
||||||
|
+ Blocks.SMOOTH_BASALT,
|
||||||
|
+ Blocks.STONE,
|
||||||
|
+ Blocks.TUFF
|
||||||
|
+ //</editor-fold>
|
||||||
|
+ ) : List.of(Blocks.STONE, Blocks.OAK_PLANKS, Blocks.DEEPSLATE);
|
||||||
|
+ // Plazma end
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -154,14 +195,14 @@ public class WorldConfiguration extends ConfigurationPart {
|
||||||
|
public ArmorStands armorStands;
|
||||||
|
|
||||||
|
public class ArmorStands extends ConfigurationPart {
|
||||||
|
- public boolean doCollisionEntityLookups = true;
|
||||||
|
- public boolean tick = true;
|
||||||
|
+ public boolean doCollisionEntityLookups = !org.plazmamc.plazma.Options.AGGRESSIVE; // Plazma - Optimize default configurations
|
||||||
|
+ public boolean tick = !org.plazmamc.plazma.Options.AGGRESSIVE; // Plazma - Optimize default configurations
|
||||||
|
}
|
||||||
|
|
||||||
|
public Markers markers;
|
||||||
|
|
||||||
|
public class Markers extends ConfigurationPart {
|
||||||
|
- public boolean tick = true;
|
||||||
|
+ public boolean tick = !org.plazmamc.plazma.configurations.PlazmaConfigurations.optimize(); // Plazma - Optimize default configurations
|
||||||
|
}
|
||||||
|
|
||||||
|
public Sniffer sniffer;
|
||||||
|
@@ -406,7 +447,7 @@ public class WorldConfiguration extends ConfigurationPart {
|
||||||
|
public class Environment extends ConfigurationPart {
|
||||||
|
public boolean disableThunder = false;
|
||||||
|
public boolean disableIceAndSnow = false;
|
||||||
|
- public boolean optimizeExplosions = false;
|
||||||
|
+ public boolean optimizeExplosions = org.plazmamc.plazma.configurations.PlazmaConfigurations.optimize(); // Plazma - Optimize default configurations
|
||||||
|
public boolean disableExplosionKnockback = false;
|
||||||
|
public boolean generateFlatBedrock = false;
|
||||||
|
public FrostedIce frostedIce;
|
||||||
|
@@ -462,7 +503,7 @@ public class WorldConfiguration extends ConfigurationPart {
|
||||||
|
public Fixes fixes;
|
||||||
|
|
||||||
|
public class Fixes extends ConfigurationPart {
|
||||||
|
- public boolean fixItemsMergingThroughWalls = false;
|
||||||
|
+ public boolean fixItemsMergingThroughWalls = org.plazmamc.plazma.configurations.PlazmaConfigurations.optimize(); // Plazma - Optimize default configurations
|
||||||
|
public boolean disableUnloadedChunkEnderpearlExploit = false;
|
||||||
|
public boolean preventTntFromMovingInWater = false;
|
||||||
|
public boolean splitOverstackedLoot = true;
|
||||||
|
@@ -490,9 +531,9 @@ public class WorldConfiguration extends ConfigurationPart {
|
||||||
|
public class Collisions extends ConfigurationPart {
|
||||||
|
public boolean onlyPlayersCollide = false;
|
||||||
|
public boolean allowVehicleCollisions = true;
|
||||||
|
- public boolean fixClimbingBypassingCrammingRule = false;
|
||||||
|
+ public boolean fixClimbingBypassingCrammingRule = org.plazmamc.plazma.configurations.PlazmaConfigurations.optimize(); // Plazma - Optimize default configurations
|
||||||
|
@RequiresSpigotInitialization(MaxEntityCollisionsInitializer.class)
|
||||||
|
- public int maxEntityCollisions = 8;
|
||||||
|
+ public int maxEntityCollisions = org.plazmamc.plazma.configurations.PlazmaConfigurations.optimize() ? 2 : 8; // Plazma - Optimize default configurations
|
||||||
|
public boolean allowPlayerCrammingDamage = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -500,18 +541,41 @@ public class WorldConfiguration extends ConfigurationPart {
|
||||||
|
|
||||||
|
public class Chunks extends ConfigurationPart {
|
||||||
|
public AutosavePeriod autoSaveInterval = AutosavePeriod.def();
|
||||||
|
- public int maxAutoSaveChunksPerTick = 24;
|
||||||
|
+ public int maxAutoSaveChunksPerTick = org.plazmamc.plazma.configurations.PlazmaConfigurations.optimize() ? 8 : 24; // Plazma - Optimize default configurations
|
||||||
|
public int fixedChunkInhabitedTime = -1;
|
||||||
|
- public boolean preventMovingIntoUnloadedChunks = false;
|
||||||
|
+ public boolean preventMovingIntoUnloadedChunks = org.plazmamc.plazma.configurations.PlazmaConfigurations.optimize(); // Plazma - Optimize default configurations
|
||||||
|
public Duration delayChunkUnloadsBy = Duration.of("10s");
|
||||||
|
public Reference2IntMap<EntityType<?>> entityPerChunkSaveLimit = Util.make(new Reference2IntOpenHashMap<>(BuiltInRegistries.ENTITY_TYPE.size()), map -> {
|
||||||
|
map.defaultReturnValue(-1);
|
||||||
|
- map.put(EntityType.EXPERIENCE_ORB, -1);
|
||||||
|
- map.put(EntityType.SNOWBALL, -1);
|
||||||
|
- map.put(EntityType.ENDER_PEARL, -1);
|
||||||
|
- map.put(EntityType.ARROW, -1);
|
||||||
|
- map.put(EntityType.FIREBALL, -1);
|
||||||
|
- map.put(EntityType.SMALL_FIREBALL, -1);
|
||||||
|
+ // Plazma start - Optimize default configurations
|
||||||
|
+ if (org.plazmamc.plazma.configurations.PlazmaConfigurations.optimize()) {
|
||||||
|
+ map.put(EntityType.AREA_EFFECT_CLOUD, 8);
|
||||||
|
+ map.put(EntityType.ARROW, 16);
|
||||||
|
+ map.put(EntityType.DRAGON_FIREBALL, 3);
|
||||||
|
+ map.put(EntityType.EGG, 8);
|
||||||
|
+ map.put(EntityType.ENDER_PEARL, 8);
|
||||||
|
+ map.put(EntityType.EXPERIENCE_BOTTLE, 3);
|
||||||
|
+ map.put(EntityType.EXPERIENCE_ORB, 16);
|
||||||
|
+ map.put(EntityType.EYE_OF_ENDER, 8);
|
||||||
|
+ map.put(EntityType.FIREBALL, 8);
|
||||||
|
+ map.put(EntityType.FIREWORK_ROCKET, 8);
|
||||||
|
+ map.put(EntityType.LLAMA_SPIT, 3);
|
||||||
|
+ map.put(EntityType.POTION, 8);
|
||||||
|
+ map.put(EntityType.SHULKER_BULLET, 8);
|
||||||
|
+ map.put(EntityType.SMALL_FIREBALL, 8);
|
||||||
|
+ map.put(EntityType.SNOWBALL, 8);
|
||||||
|
+ map.put(EntityType.SPECTRAL_ARROW, 16);
|
||||||
|
+ map.put(EntityType.TRIDENT, 16);
|
||||||
|
+ map.put(EntityType.WITHER_SKULL, 4);
|
||||||
|
+ } else {
|
||||||
|
+ map.put(EntityType.EXPERIENCE_ORB, -1);
|
||||||
|
+ map.put(EntityType.SNOWBALL, -1);
|
||||||
|
+ map.put(EntityType.ENDER_PEARL, -1);
|
||||||
|
+ map.put(EntityType.ARROW, -1);
|
||||||
|
+ map.put(EntityType.FIREBALL, -1);
|
||||||
|
+ map.put(EntityType.SMALL_FIREBALL, -1);
|
||||||
|
+ }
|
||||||
|
+ // Plazma end
|
||||||
|
});
|
||||||
|
public boolean flushRegionsOnSave = false;
|
||||||
|
}
|
||||||
|
@@ -526,9 +590,9 @@ public class WorldConfiguration extends ConfigurationPart {
|
||||||
|
public TickRates tickRates;
|
||||||
|
|
||||||
|
public class TickRates extends ConfigurationPart {
|
||||||
|
- public int grassSpread = 1;
|
||||||
|
+ public int grassSpread = org.plazmamc.plazma.configurations.PlazmaConfigurations.optimize() ? 4 : 1; // Plazma - Optimize default configurations
|
||||||
|
public int containerUpdate = 1;
|
||||||
|
- public int mobSpawner = 1;
|
||||||
|
+ public int mobSpawner = org.plazmamc.plazma.configurations.PlazmaConfigurations.optimize() ? 2 : 1; // Plazma - Optimize default configurations
|
||||||
|
public int wetFarmland = 1;
|
||||||
|
public int dryFarmland = 1;
|
||||||
|
public Table<EntityType<?>, String, Integer> sensor = Util.make(HashBasedTable.create(), table -> table.put(EntityType.VILLAGER, "secondarypoisensor", 40));
|
||||||
|
@@ -562,9 +626,9 @@ public class WorldConfiguration extends ConfigurationPart {
|
||||||
|
|
||||||
|
public class Misc extends ConfigurationPart {
|
||||||
|
public int lightQueueSize = 20;
|
||||||
|
- public boolean updatePathfindingOnBlockUpdate = true;
|
||||||
|
+ public boolean updatePathfindingOnBlockUpdate = !org.plazmamc.plazma.Options.AGGRESSIVE; // Plazma - Optimize default configurations
|
||||||
|
public boolean showSignClickCommandFailureMsgsToPlayer = false;
|
||||||
|
- public RedstoneImplementation redstoneImplementation = RedstoneImplementation.VANILLA;
|
||||||
|
+ public RedstoneImplementation redstoneImplementation = org.plazmamc.plazma.configurations.PlazmaConfigurations.optimize() ? RedstoneImplementation.ALTERNATE_CURRENT : RedstoneImplementation.VANILLA; // Plazma - Optimize default configurations
|
||||||
|
public AlternateCurrentUpdateOrder alternateCurrentUpdateOrder = AlternateCurrentUpdateOrder.HORIZONTAL_FIRST_OUTWARD;
|
||||||
|
public boolean disableEndCredits = false;
|
||||||
|
public DoubleOr.Default maxLeashDistance = DoubleOr.Default.USE_DEFAULT;
|
||||||
|
diff --git a/src/main/java/io/papermc/paper/configuration/type/fallback/ArrowDespawnRate.java b/src/main/java/io/papermc/paper/configuration/type/fallback/ArrowDespawnRate.java
|
||||||
|
index 24763d3d270c29c95e0b3e85111145234f660a62..80ddc627e02e3c749e6b074afa93d357d9c7d62a 100644
|
||||||
|
--- a/src/main/java/io/papermc/paper/configuration/type/fallback/ArrowDespawnRate.java
|
||||||
|
+++ b/src/main/java/io/papermc/paper/configuration/type/fallback/ArrowDespawnRate.java
|
||||||
|
@@ -29,6 +29,7 @@ public class ArrowDespawnRate extends FallbackValue.Int {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected int fallback() {
|
||||||
|
+ if (org.plazmamc.plazma.configurations.PlazmaConfigurations.optimize()) return 100; // Plazma - Optimize default configurations
|
||||||
|
return this.get(FallbackValue.SPIGOT_WORLD_CONFIG).arrowDespawnRate;
|
||||||
|
}
|
||||||
|
|
||||||
|
diff --git a/src/main/java/net/minecraft/server/Main.java b/src/main/java/net/minecraft/server/Main.java
|
||||||
|
index 3978c93a847c859c70446a6d6157fdb49c0bc74c..a4ef13e8b91dcc4bea7b49c004af085357aba6ad 100644
|
||||||
|
--- a/src/main/java/net/minecraft/server/Main.java
|
||||||
|
+++ b/src/main/java/net/minecraft/server/Main.java
|
||||||
|
@@ -164,7 +164,7 @@ public class Main {
|
||||||
|
File configFile = (File) optionset.valueOf("bukkit-settings");
|
||||||
|
YamlConfiguration configuration = YamlConfiguration.loadConfiguration(configFile);
|
||||||
|
configuration.options().copyDefaults(true);
|
||||||
|
- configuration.setDefaults(YamlConfiguration.loadConfiguration(new InputStreamReader(Main.class.getClassLoader().getResourceAsStream("configurations/bukkit.yml"), Charsets.UTF_8)));
|
||||||
|
+ configuration.setDefaults(YamlConfiguration.loadConfiguration(new InputStreamReader(Main.class.getClassLoader().getResourceAsStream(org.plazmamc.plazma.configurations.PlazmaConfigurations.optimize() ? "configurations/bukkit_optimized.yml" : "configurations/bukkit.yml"), Charsets.UTF_8))); // Plazma - Optimize default configurations
|
||||||
|
configuration.save(configFile);
|
||||||
|
|
||||||
|
File commandFile = (File) optionset.valueOf("commands-settings");
|
||||||
|
diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServerProperties.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServerProperties.java
|
||||||
|
index 568141881ffb26b425be452c79ecc146821ba1d9..067f91dd019be40cb09f8fa78cae587429488201 100644
|
||||||
|
--- a/src/main/java/net/minecraft/server/dedicated/DedicatedServerProperties.java
|
||||||
|
+++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServerProperties.java
|
||||||
|
@@ -132,14 +132,14 @@ public class DedicatedServerProperties extends Settings<DedicatedServerPropertie
|
||||||
|
this.spawnMonsters = this.get("spawn-monsters", true);
|
||||||
|
this.useNativeTransport = this.get("use-native-transport", true);
|
||||||
|
this.enableCommandBlock = this.get("enable-command-block", false);
|
||||||
|
- this.spawnProtection = this.get("spawn-protection", 16);
|
||||||
|
+ this.spawnProtection = this.get("spawn-protection", org.plazmamc.plazma.configurations.PlazmaConfigurations.optimize() ? 0 : 16); // Plazma - Optimize default configurations
|
||||||
|
this.opPermissionLevel = this.get("op-permission-level", 4);
|
||||||
|
this.functionPermissionLevel = this.get("function-permission-level", 2);
|
||||||
|
this.maxTickTime = this.get("max-tick-time", TimeUnit.MINUTES.toMillis(1L));
|
||||||
|
- this.maxChainedNeighborUpdates = this.get("max-chained-neighbor-updates", 1000000);
|
||||||
|
+ this.maxChainedNeighborUpdates = this.get("max-chained-neighbor-updates", org.plazmamc.plazma.configurations.PlazmaConfigurations.optimize() ? 10000 : 1000000); // Plazma - Optimize default configurations
|
||||||
|
this.rateLimitPacketsPerSecond = this.get("rate-limit", 0);
|
||||||
|
- this.viewDistance = this.get("view-distance", 10);
|
||||||
|
- this.simulationDistance = this.get("simulation-distance", 10);
|
||||||
|
+ this.viewDistance = this.get("view-distance", org.plazmamc.plazma.configurations.PlazmaConfigurations.optimize() ? 7 : 10); // Plazma - Optimize default configurations
|
||||||
|
+ this.simulationDistance = this.get("simulation-distance", org.plazmamc.plazma.configurations.PlazmaConfigurations.optimize() ? 4 : 10); // Plazma - Optimize default configurations
|
||||||
|
this.maxPlayers = this.get("max-players", 20);
|
||||||
|
this.networkCompressionThreshold = this.get("network-compression-threshold", 256);
|
||||||
|
this.broadcastRconToOps = this.get("broadcast-rcon-to-ops", true);
|
||||||
|
@@ -147,7 +147,7 @@ public class DedicatedServerProperties extends Settings<DedicatedServerPropertie
|
||||||
|
this.maxWorldSize = this.get("max-world-size", (integer) -> {
|
||||||
|
return Mth.clamp(integer, 1, 29999984);
|
||||||
|
}, 29999984);
|
||||||
|
- this.syncChunkWrites = this.get("sync-chunk-writes", true) && Boolean.getBoolean("Paper.enable-sync-chunk-writes"); // Paper - Hide sync chunk writes behind flag
|
||||||
|
+ this.syncChunkWrites = Boolean.getBoolean("Paper.enable-sync-chunk-writes"); // Paper - Hide sync chunk writes behind flag // Plazma - Completely remove this setting
|
||||||
|
this.regionFileComression = this.get("region-file-compression", "deflate");
|
||||||
|
this.enableJmxMonitoring = this.get("enable-jmx-monitoring", false);
|
||||||
|
this.enableStatus = this.get("enable-status", true);
|
||||||
|
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
||||||
|
index d76e487529dd5661753a91230c9ebab5814f79d1..47fa401e484fc3ebc6b66013c225bc1bb20f00a9 100644
|
||||||
|
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
||||||
|
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
||||||
|
@@ -437,7 +437,7 @@ public final class CraftServer implements Server {
|
||||||
|
|
||||||
|
this.configuration = YamlConfiguration.loadConfiguration(this.getConfigFile());
|
||||||
|
this.configuration.options().copyDefaults(true);
|
||||||
|
- this.configuration.setDefaults(YamlConfiguration.loadConfiguration(new InputStreamReader(this.getClass().getClassLoader().getResourceAsStream("configurations/bukkit.yml"), Charsets.UTF_8)));
|
||||||
|
+ this.configuration.setDefaults(YamlConfiguration.loadConfiguration(new InputStreamReader(this.getClass().getClassLoader().getResourceAsStream(org.plazmamc.plazma.configurations.PlazmaConfigurations.optimize() ? "configurations/bukkit_optimized.yml" : "configurations/bukkit.yml"), Charsets.UTF_8))); // Plazma - Optimize default configurations
|
||||||
|
ConfigurationSection legacyAlias = null;
|
||||||
|
if (!this.configuration.isString("aliases")) {
|
||||||
|
legacyAlias = this.configuration.getConfigurationSection("aliases");
|
||||||
|
diff --git a/src/main/java/org/plazmamc/plazma/Options.java b/src/main/java/org/plazmamc/plazma/Options.java
|
||||||
|
index 5d41bd4d4b86ca0c7c03d3ac6e75b3f1f1abe73b..c608770ea0df26859a09b794e93292f4aa6881b4 100644
|
||||||
|
--- a/src/main/java/org/plazmamc/plazma/Options.java
|
||||||
|
+++ b/src/main/java/org/plazmamc/plazma/Options.java
|
||||||
|
@@ -7,5 +7,6 @@ public interface Options {
|
||||||
|
|
||||||
|
boolean NO_OPTIMIZE = getBoolean("Plazma.disableConfigOptimization");
|
||||||
|
boolean NO_WARN = getBoolean("Plazma.iKnowWhatIAmDoing");
|
||||||
|
+ boolean AGGRESSIVE = getBoolean("Plazma.aggressiveOptimize") && !NO_OPTIMIZE;
|
||||||
|
|
||||||
|
}
|
||||||
|
diff --git a/src/main/java/org/plazmamc/plazma/configurations/PlazmaConfigurations.java b/src/main/java/org/plazmamc/plazma/configurations/PlazmaConfigurations.java
|
||||||
|
index 09053b4ccf268fd204c81dbb8d4f10fa9edcad5f..93f67f125b3674e645cfdae27e579e12d31a236e 100644
|
||||||
|
--- a/src/main/java/org/plazmamc/plazma/configurations/PlazmaConfigurations.java
|
||||||
|
+++ b/src/main/java/org/plazmamc/plazma/configurations/PlazmaConfigurations.java
|
||||||
|
@@ -35,6 +35,15 @@ public class PlazmaConfigurations extends Configurations<GlobalConfiguration, Wo
|
||||||
|
static final String WORLD_CONFIG_FILE_NAME = "plazma-world.yml";
|
||||||
|
static final boolean OPTIMIZE = !Options.NO_OPTIMIZE;
|
||||||
|
|
||||||
|
+ static {
|
||||||
|
+ if (Options.AGGRESSIVE) {
|
||||||
|
+ LOGGER.warn("Aggressive configuration optimization is enabled. It can greatly affect gameplay.");
|
||||||
|
+ } else if (OPTIMIZE) {
|
||||||
|
+ LOGGER.warn("Default configuration optimization is enabled. It may have some impact on gameplay.");
|
||||||
|
+ LOGGER.warn("To disable default configuration optimization, type \"-DPlazma.disableConfigOptimization\" before the -jar in the server startup command.");
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
private static final String HEADER_START = """
|
||||||
|
#### ENGLISH ####
|
||||||
|
This is the %s configuration file for Plazma.
|
||||||
|
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
||||||
|
index 95cd1156766895546ef5574b33a60806bff08fa2..097f3c34d244b89e7dd9f8b6f2a3d8fdc67b36dc 100644
|
||||||
|
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
||||||
|
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
||||||
|
@@ -244,7 +244,7 @@ public class PurpurConfig {
|
||||||
|
laggingThreshold = getDouble("settings.lagging-threshold", laggingThreshold);
|
||||||
|
}
|
||||||
|
|
||||||
|
- public static boolean useAlternateKeepAlive = false;
|
||||||
|
+ public static boolean useAlternateKeepAlive = org.plazmamc.plazma.configurations.PlazmaConfigurations.optimize(); // Plazma - Optimize default configurations
|
||||||
|
private static void useAlternateKeepAlive() {
|
||||||
|
useAlternateKeepAlive = getBoolean("settings.use-alternate-keepalive", useAlternateKeepAlive);
|
||||||
|
}
|
||||||
|
@@ -491,7 +491,7 @@ public class PurpurConfig {
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean useUPnP = false;
|
||||||
|
- public static boolean maxJoinsPerSecond = false;
|
||||||
|
+ public static boolean maxJoinsPerSecond = org.plazmamc.plazma.configurations.PlazmaConfigurations.optimize(); // Plazma - Optimize default configurations
|
||||||
|
public static boolean kickForOutOfOrderChat = true;
|
||||||
|
private static void networkSettings() {
|
||||||
|
useUPnP = getBoolean("settings.network.upnp-port-forwarding", useUPnP);
|
||||||
|
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||||
|
index 742a46ef95a5e46e9c338cedcecaf008a7108c58..2198477c174f89fdaece5ffef8b40c8096a9c9a9 100644
|
||||||
|
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||||
|
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||||
|
@@ -422,7 +422,7 @@ public class PurpurWorldConfig {
|
||||||
|
public boolean idleTimeoutTargetPlayer = true;
|
||||||
|
public String playerDeathExpDropEquation = "expLevel * 7";
|
||||||
|
public int playerDeathExpDropMax = 100;
|
||||||
|
- public boolean teleportIfOutsideBorder = false;
|
||||||
|
+ public boolean teleportIfOutsideBorder = org.plazmamc.plazma.configurations.PlazmaConfigurations.optimize(); // Plazma - Optimize default configurations
|
||||||
|
public boolean teleportOnNetherCeilingDamage = false;
|
||||||
|
public boolean totemOfUndyingWorksInInventory = false;
|
||||||
|
public boolean playerFixStuckPortal = false;
|
||||||
|
@@ -3243,7 +3243,7 @@ public class PurpurWorldConfig {
|
||||||
|
public boolean zombieJockeyOnlyBaby = true;
|
||||||
|
public double zombieJockeyChance = 0.05D;
|
||||||
|
public boolean zombieJockeyTryExistingChickens = true;
|
||||||
|
- public boolean zombieAggressiveTowardsVillagerWhenLagging = true;
|
||||||
|
+ public boolean zombieAggressiveTowardsVillagerWhenLagging = org.plazmamc.plazma.configurations.PlazmaConfigurations.optimize(); // Plazma - Optimize default configurations
|
||||||
|
public boolean zombieBypassMobGriefing = false;
|
||||||
|
public boolean zombieTakeDamageFromWater = false;
|
||||||
|
public boolean zombieAlwaysDropExp = false;
|
||||||
|
diff --git a/src/main/java/org/spigotmc/SpigotWorldConfig.java b/src/main/java/org/spigotmc/SpigotWorldConfig.java
|
||||||
|
index 2c408fa4abcbe1171c58aee8799c8cf7867d0f0a..aadad0a1e3c7e20b0ab97095ee6e6fb7dbfbd234 100644
|
||||||
|
--- a/src/main/java/org/spigotmc/SpigotWorldConfig.java
|
||||||
|
+++ b/src/main/java/org/spigotmc/SpigotWorldConfig.java
|
||||||
|
@@ -150,14 +150,14 @@ public class SpigotWorldConfig
|
||||||
|
public double itemMerge;
|
||||||
|
private void itemMerge()
|
||||||
|
{
|
||||||
|
- this.itemMerge = this.getDouble("merge-radius.item", 0.5 );
|
||||||
|
+ this.itemMerge = this.getDouble("merge-radius.item", org.plazmamc.plazma.configurations.PlazmaConfigurations.optimize() ? 3.5 : 0.5); // Plazma - Optimize default configurations
|
||||||
|
this.log( "Item Merge Radius: " + this.itemMerge );
|
||||||
|
}
|
||||||
|
|
||||||
|
public double expMerge;
|
||||||
|
private void expMerge()
|
||||||
|
{
|
||||||
|
- this.expMerge = this.getDouble("merge-radius.exp", -1 );
|
||||||
|
+ this.expMerge = this.getDouble("merge-radius.exp", org.plazmamc.plazma.configurations.PlazmaConfigurations.optimize() ? 4.0 : -1); // Plazma - Optimize default configurations
|
||||||
|
this.log( "Experience Merge Radius: " + this.expMerge );
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -196,7 +196,7 @@ public class SpigotWorldConfig
|
||||||
|
public byte mobSpawnRange;
|
||||||
|
private void mobSpawnRange()
|
||||||
|
{
|
||||||
|
- this.mobSpawnRange = (byte) getInt( "mob-spawn-range", 8 ); // Paper - Vanilla
|
||||||
|
+ this.mobSpawnRange = (byte) getInt( "mob-spawn-range", org.plazmamc.plazma.configurations.PlazmaConfigurations.optimize() ? 3 : 8 ); // Paper - Vanilla // Plazma - Optimize default configurations
|
||||||
|
this.log( "Mob Spawn Range: " + this.mobSpawnRange );
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -207,27 +207,29 @@ public class SpigotWorldConfig
|
||||||
|
this.log( "Item Despawn Rate: " + this.itemDespawnRate );
|
||||||
|
}
|
||||||
|
|
||||||
|
- public int animalActivationRange = 32;
|
||||||
|
- public int monsterActivationRange = 32;
|
||||||
|
- public int raiderActivationRange = 64;
|
||||||
|
- public int miscActivationRange = 16;
|
||||||
|
- // Paper start
|
||||||
|
- public int flyingMonsterActivationRange = 32;
|
||||||
|
- public int waterActivationRange = 16;
|
||||||
|
- public int villagerActivationRange = 32;
|
||||||
|
- public int wakeUpInactiveAnimals = 4;
|
||||||
|
- public int wakeUpInactiveAnimalsEvery = 60*20;
|
||||||
|
- public int wakeUpInactiveAnimalsFor = 5*20;
|
||||||
|
- public int wakeUpInactiveMonsters = 8;
|
||||||
|
- public int wakeUpInactiveMonstersEvery = 20*20;
|
||||||
|
- public int wakeUpInactiveMonstersFor = 5*20;
|
||||||
|
- public int wakeUpInactiveVillagers = 4;
|
||||||
|
- public int wakeUpInactiveVillagersEvery = 30*20;
|
||||||
|
- public int wakeUpInactiveVillagersFor = 5*20;
|
||||||
|
- public int wakeUpInactiveFlying = 8;
|
||||||
|
- public int wakeUpInactiveFlyingEvery = 10*20;
|
||||||
|
- public int wakeUpInactiveFlyingFor = 5*20;
|
||||||
|
- public int villagersWorkImmunityAfter = 5*20;
|
||||||
|
+ // Plazma start - Optimize default configurations
|
||||||
|
+ public int animalActivationRange = org.plazmamc.plazma.configurations.PlazmaConfigurations.optimize() ? 16 : 32;
|
||||||
|
+ public int monsterActivationRange = org.plazmamc.plazma.configurations.PlazmaConfigurations.optimize() ? 24 : 32;
|
||||||
|
+ public int raiderActivationRange = 64; // diff on changes
|
||||||
|
+ public int miscActivationRange = org.plazmamc.plazma.configurations.PlazmaConfigurations.optimize() ? 8 : 16;
|
||||||
|
+ // Paper start // diff on changes
|
||||||
|
+ public int flyingMonsterActivationRange = org.plazmamc.plazma.configurations.PlazmaConfigurations.optimize() ? 48 : 32;
|
||||||
|
+ public int waterActivationRange = org.plazmamc.plazma.configurations.PlazmaConfigurations.optimize() ? 8 : 16;
|
||||||
|
+ public int villagerActivationRange = org.plazmamc.plazma.configurations.PlazmaConfigurations.optimize() ? 16 : 32;
|
||||||
|
+ public int wakeUpInactiveAnimals = 4; // diff on changes
|
||||||
|
+ public int wakeUpInactiveAnimalsEvery = 1200;
|
||||||
|
+ public int wakeUpInactiveAnimalsFor = org.plazmamc.plazma.configurations.PlazmaConfigurations.optimize() ? 40 : 100;
|
||||||
|
+ public int wakeUpInactiveMonsters = org.plazmamc.plazma.configurations.PlazmaConfigurations.optimize() ? 4 : 8;
|
||||||
|
+ public int wakeUpInactiveMonstersEvery = 400;
|
||||||
|
+ public int wakeUpInactiveMonstersFor = org.plazmamc.plazma.configurations.PlazmaConfigurations.optimize() ? 60 : 100;
|
||||||
|
+ public int wakeUpInactiveVillagers = org.plazmamc.plazma.configurations.PlazmaConfigurations.optimize() ? 1 : 4;
|
||||||
|
+ public int wakeUpInactiveVillagersEvery = 600;
|
||||||
|
+ public int wakeUpInactiveVillagersFor = org.plazmamc.plazma.configurations.PlazmaConfigurations.optimize() ? 20 : 100;
|
||||||
|
+ public int wakeUpInactiveFlying = org.plazmamc.plazma.configurations.PlazmaConfigurations.optimize() ? 1 : 8;
|
||||||
|
+ public int wakeUpInactiveFlyingEvery = 200;
|
||||||
|
+ public int wakeUpInactiveFlyingFor = org.plazmamc.plazma.configurations.PlazmaConfigurations.optimize() ? 60 : 100;
|
||||||
|
+ public int villagersWorkImmunityAfter = 100;
|
||||||
|
+ // Plazma end - Optimize default configurations
|
||||||
|
public int villagersWorkImmunityFor = 20;
|
||||||
|
public boolean villagersActiveForPanic = true;
|
||||||
|
// Paper end
|
||||||
|
@@ -299,7 +301,7 @@ public class SpigotWorldConfig
|
||||||
|
{
|
||||||
|
this.set( "ticks-per.hopper-check", 1 );
|
||||||
|
}
|
||||||
|
- this.hopperCheck = this.getInt( "ticks-per.hopper-check", 1 );
|
||||||
|
+ this.hopperCheck = this.getInt( "ticks-per.hopper-check", org.plazmamc.plazma.configurations.PlazmaConfigurations.optimize() ? 8: 1 ); // Plazma - Optimize default configurations
|
||||||
|
this.hopperAmount = this.getInt( "hopper-amount", 1 );
|
||||||
|
this.hopperCanLoadChunks = this.getBoolean( "hopper-can-load-chunks", false );
|
||||||
|
this.log( "Hopper Transfer: " + this.hopperTransfer + " Hopper Check: " + this.hopperCheck + " Hopper Amount: " + this.hopperAmount + " Hopper Can Load Chunks: " + this.hopperCanLoadChunks );
|
||||||
|
@@ -309,7 +311,7 @@ public class SpigotWorldConfig
|
||||||
|
public int tridentDespawnRate;
|
||||||
|
private void arrowDespawnRate()
|
||||||
|
{
|
||||||
|
- this.arrowDespawnRate = this.getInt( "arrow-despawn-rate", 1200 );
|
||||||
|
+ this.arrowDespawnRate = this.getInt( "arrow-despawn-rate", org.plazmamc.plazma.configurations.PlazmaConfigurations.optimize() ? 300 : 1200 ); // Plazma - Optimize default configurations
|
||||||
|
this.tridentDespawnRate = this.getInt( "trident-despawn-rate", this.arrowDespawnRate );
|
||||||
|
this.log( "Arrow Despawn Rate: " + this.arrowDespawnRate + " Trident Respawn Rate:" + this.tridentDespawnRate );
|
||||||
|
}
|
||||||
|
diff --git a/src/main/resources/configurations/bukkit_optimized.yml b/src/main/resources/configurations/bukkit_optimized.yml
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000000000000000000000000000000000000..eb33b0a19d6060f78d7ead7a2ad63b1b2581293d
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/src/main/resources/configurations/bukkit_optimized.yml
|
||||||
|
@@ -0,0 +1,45 @@
|
||||||
|
+# This is the main configuration file for Bukkit.
|
||||||
|
+# As you can see, there's actually not that much to configure without any plugins.
|
||||||
|
+# For a reference for any variable inside this file, check out the Bukkit Wiki at
|
||||||
|
+# https://www.spigotmc.org/go/bukkit-yml
|
||||||
|
+#
|
||||||
|
+# If you need help on this file, feel free to join us on Discord or leave a message
|
||||||
|
+# on the forums asking for advice.
|
||||||
|
+#
|
||||||
|
+# Discord: https://www.spigotmc.org/go/discord
|
||||||
|
+# Forums: https://www.spigotmc.org/
|
||||||
|
+# Bug tracker: https://www.spigotmc.org/go/bugs
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+settings:
|
||||||
|
+ allow-end: true
|
||||||
|
+ warn-on-overload: true
|
||||||
|
+ permissions-file: permissions.yml
|
||||||
|
+ update-folder: update
|
||||||
|
+ plugin-profiling: false
|
||||||
|
+ connection-throttle: 4000
|
||||||
|
+ query-plugins: true
|
||||||
|
+ deprecated-verbose: default
|
||||||
|
+ shutdown-message: Server closed
|
||||||
|
+ minimum-api: none
|
||||||
|
+ use-map-color-cache: true
|
||||||
|
+spawn-limits:
|
||||||
|
+ monsters: 20
|
||||||
|
+ animals: 5
|
||||||
|
+ water-animals: 2
|
||||||
|
+ water-ambient: 2
|
||||||
|
+ water-underground-creature: 3
|
||||||
|
+ axolotls: 3
|
||||||
|
+ ambient: 1
|
||||||
|
+chunk-gc:
|
||||||
|
+ period-in-ticks: 400
|
||||||
|
+ticks-per:
|
||||||
|
+ animal-spawns: 400
|
||||||
|
+ monster-spawns: 10
|
||||||
|
+ water-spawns: 400
|
||||||
|
+ water-ambient-spawns: 400
|
||||||
|
+ water-underground-creature-spawns: 400
|
||||||
|
+ axolotl-spawns: 400
|
||||||
|
+ ambient-spawns: 400
|
||||||
|
+ autosave: 6000
|
||||||
|
+aliases: now-in-commands.yml
|
||||||
@@ -0,0 +1,196 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: AlphaKR93 <dev@alpha93.kr>
|
||||||
|
Date: Wed, 15 May 2024 16:13:17 +0900
|
||||||
|
Subject: [PATCH] Add an option to apply the configuration to the vanilla
|
||||||
|
default
|
||||||
|
|
||||||
|
|
||||||
|
diff --git a/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java b/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java
|
||||||
|
index 3b636760f32b9b5b277edb15782d6206567e012f..6d0f1448a1546cdaf81335b47e3bc9e361095545 100644
|
||||||
|
--- a/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java
|
||||||
|
+++ b/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java
|
||||||
|
@@ -87,7 +87,7 @@ public class GlobalConfiguration extends ConfigurationPart {
|
||||||
|
public Component flyingVehicle = Component.translatable("multiplayer.disconnect.flying");
|
||||||
|
}
|
||||||
|
|
||||||
|
- public Component noPermission = Component.text("I'm sorry, but you do not have permission to perform this command. Please contact the server administrators if you believe that this is in error.", NamedTextColor.RED);
|
||||||
|
+ public Component noPermission = org.plazmamc.plazma.Options.VANILLAIZE ? Component.translatable("command.unknown.command") : Component.text("I'm sorry, but you do not have permission to perform this command. Please contact the server administrators if you believe that this is in error.", NamedTextColor.RED);
|
||||||
|
public boolean useDisplayNameInQuitMessage = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
||||||
|
index 47fa401e484fc3ebc6b66013c225bc1bb20f00a9..7e87db1f99888c206400add17f5ea514de242e9f 100644
|
||||||
|
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
||||||
|
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
||||||
|
@@ -437,7 +437,19 @@ public final class CraftServer implements Server {
|
||||||
|
|
||||||
|
this.configuration = YamlConfiguration.loadConfiguration(this.getConfigFile());
|
||||||
|
this.configuration.options().copyDefaults(true);
|
||||||
|
- this.configuration.setDefaults(YamlConfiguration.loadConfiguration(new InputStreamReader(this.getClass().getClassLoader().getResourceAsStream(org.plazmamc.plazma.configurations.PlazmaConfigurations.optimize() ? "configurations/bukkit_optimized.yml" : "configurations/bukkit.yml"), Charsets.UTF_8))); // Plazma - Optimize default configurations
|
||||||
|
+ // Plazma start - Add an option to apply the configuration to the vanilla default
|
||||||
|
+ String configPath;
|
||||||
|
+ if (org.plazmamc.plazma.Options.NO_OPTIMIZE) {
|
||||||
|
+ if (org.plazmamc.plazma.Options.VANILLAIZE) configPath = "configurations/bukkit_vanillaized.yml";
|
||||||
|
+ else configPath = "configurations/bukkit.yml";
|
||||||
|
+ } else {
|
||||||
|
+ if (org.plazmamc.plazma.Options.VANILLAIZE) configPath = "configurations/bukkit_optimized_vanillaized.yml";
|
||||||
|
+ else configPath = "configurations/bukkit_optimized.yml";
|
||||||
|
+ }
|
||||||
|
+ this.configuration.setDefaults(YamlConfiguration.loadConfiguration(
|
||||||
|
+ new InputStreamReader(this.getClass().getClassLoader().getResourceAsStream(configPath), Charsets.UTF_8)
|
||||||
|
+ )); // Plazma - Optimize default configurations
|
||||||
|
+ // Plazma end - Add an option to apply the configuration to the vanilla default
|
||||||
|
ConfigurationSection legacyAlias = null;
|
||||||
|
if (!this.configuration.isString("aliases")) {
|
||||||
|
legacyAlias = this.configuration.getConfigurationSection("aliases");
|
||||||
|
diff --git a/src/main/java/org/plazmamc/plazma/Options.java b/src/main/java/org/plazmamc/plazma/Options.java
|
||||||
|
index c608770ea0df26859a09b794e93292f4aa6881b4..063b71b3043a69a90130a81686b6a5f1e5f22fd1 100644
|
||||||
|
--- a/src/main/java/org/plazmamc/plazma/Options.java
|
||||||
|
+++ b/src/main/java/org/plazmamc/plazma/Options.java
|
||||||
|
@@ -8,5 +8,7 @@ public interface Options {
|
||||||
|
boolean NO_OPTIMIZE = getBoolean("Plazma.disableConfigOptimization");
|
||||||
|
boolean NO_WARN = getBoolean("Plazma.iKnowWhatIAmDoing");
|
||||||
|
boolean AGGRESSIVE = getBoolean("Plazma.aggressiveOptimize") && !NO_OPTIMIZE;
|
||||||
|
+ boolean VANILLAIZE = getBoolean("Plazma.vanillaize") && !AGGRESSIVE;
|
||||||
|
+ boolean USE_VANILLA = getBoolean("Plazma.useVanillaConfiguration") && !AGGRESSIVE && NO_OPTIMIZE;
|
||||||
|
|
||||||
|
}
|
||||||
|
diff --git a/src/main/java/org/spigotmc/SpigotConfig.java b/src/main/java/org/spigotmc/SpigotConfig.java
|
||||||
|
index 4dbb109d0526afee99b9190fc256585121aac9b5..3835a7aa3e3c60a6f50f1d6e781f280ea8a83fb3 100644
|
||||||
|
--- a/src/main/java/org/spigotmc/SpigotConfig.java
|
||||||
|
+++ b/src/main/java/org/spigotmc/SpigotConfig.java
|
||||||
|
@@ -193,8 +193,8 @@ public class SpigotConfig
|
||||||
|
public static String whitelistMessage;
|
||||||
|
public static String unknownCommandMessage;
|
||||||
|
public static String serverFullMessage;
|
||||||
|
- public static String outdatedClientMessage = "Outdated client! Please use {0}";
|
||||||
|
- public static String outdatedServerMessage = "Outdated server! I\'m still on {0}";
|
||||||
|
+ public static String outdatedClientMessage = org.plazmamc.plazma.Options.VANILLAIZE ? "<lang:multiplayer.disconnect.outdated_client>" : "Outdated client! Please use {0}";
|
||||||
|
+ public static String outdatedServerMessage = org.plazmamc.plazma.Options.VANILLAIZE ? "<lang:multiplayer.disconnect.outdated_server>" : "Outdated server! I'm still on {0}";
|
||||||
|
private static String transform(String s)
|
||||||
|
{
|
||||||
|
return ChatColor.translateAlternateColorCodes( '&', s ).replaceAll( "\\\\n", "\n" );
|
||||||
|
@@ -207,9 +207,9 @@ public class SpigotConfig
|
||||||
|
SpigotConfig.set( "messages.outdated-server", SpigotConfig.outdatedServerMessage );
|
||||||
|
}
|
||||||
|
|
||||||
|
- SpigotConfig.whitelistMessage = SpigotConfig.transform( SpigotConfig.getString( "messages.whitelist", "You are not whitelisted on this server!" ) );
|
||||||
|
- SpigotConfig.unknownCommandMessage = SpigotConfig.transform( SpigotConfig.getString( "messages.unknown-command", "Unknown command. Type \"/help\" for help." ) );
|
||||||
|
- SpigotConfig.serverFullMessage = SpigotConfig.transform( SpigotConfig.getString( "messages.server-full", "The server is full!" ) );
|
||||||
|
+ SpigotConfig.whitelistMessage = SpigotConfig.transform( SpigotConfig.getString( "messages.whitelist", org.plazmamc.plazma.Options.VANILLAIZE ? "<lang:multiplayer.disconnect.not_whitelisted>" : "You are not whitelisted on this server!" ) ); // Plazma - Add an option to apply the configuration to the vanilla default
|
||||||
|
+ SpigotConfig.unknownCommandMessage = SpigotConfig.transform( SpigotConfig.getString( "messages.unknown-command", org.plazmamc.plazma.Options.VANILLAIZE ? "<lang:command.unknown.command>" : "Unknown command. Type \"/help\" for help." ) );
|
||||||
|
+ SpigotConfig.serverFullMessage = SpigotConfig.transform( SpigotConfig.getString( "messages.server-full", org.plazmamc.plazma.Options.VANILLAIZE ? "<lang:multiplayer.disconnect.server_full>" : "The server is full!" ) );
|
||||||
|
SpigotConfig.outdatedClientMessage = SpigotConfig.transform( SpigotConfig.getString( "messages.outdated-client", SpigotConfig.outdatedClientMessage ) );
|
||||||
|
SpigotConfig.outdatedServerMessage = SpigotConfig.transform( SpigotConfig.getString( "messages.outdated-server", SpigotConfig.outdatedServerMessage ) );
|
||||||
|
}
|
||||||
|
@@ -223,7 +223,7 @@ public class SpigotConfig
|
||||||
|
SpigotConfig.timeoutTime = SpigotConfig.getInt( "settings.timeout-time", SpigotConfig.timeoutTime );
|
||||||
|
SpigotConfig.restartOnCrash = SpigotConfig.getBoolean( "settings.restart-on-crash", SpigotConfig.restartOnCrash );
|
||||||
|
SpigotConfig.restartScript = SpigotConfig.getString( "settings.restart-script", SpigotConfig.restartScript );
|
||||||
|
- SpigotConfig.restartMessage = SpigotConfig.transform( SpigotConfig.getString( "messages.restart", "Server is restarting" ) );
|
||||||
|
+ SpigotConfig.restartMessage = SpigotConfig.transform( SpigotConfig.getString( "messages.restart", org.plazmamc.plazma.Options.VANILLAIZE ? "<lang:disconnect.quitting>" : "Server is restarting" ) );
|
||||||
|
SpigotConfig.commands.put( "restart", new RestartCommand( "restart" ) );
|
||||||
|
// WatchdogThread.doStart( SpigotConfig.timeoutTime, SpigotConfig.restartOnCrash ); // Paper - moved to after paper config initialization
|
||||||
|
}
|
||||||
|
diff --git a/src/main/resources/configurations/bukkit_optimized_vanillaized.yml b/src/main/resources/configurations/bukkit_optimized_vanillaized.yml
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000000000000000000000000000000000000..b7ed456b0172caebdf5b548052ff2ae688377020
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/src/main/resources/configurations/bukkit_optimized_vanillaized.yml
|
||||||
|
@@ -0,0 +1,45 @@
|
||||||
|
+# This is the main configuration file for Bukkit.
|
||||||
|
+# As you can see, there's actually not that much to configure without any plugins.
|
||||||
|
+# For a reference for any variable inside this file, check out the Bukkit Wiki at
|
||||||
|
+# https://www.spigotmc.org/go/bukkit-yml
|
||||||
|
+#
|
||||||
|
+# If you need help on this file, feel free to join us on Discord or leave a message
|
||||||
|
+# on the forums asking for advice.
|
||||||
|
+#
|
||||||
|
+# Discord: https://www.spigotmc.org/go/discord
|
||||||
|
+# Forums: https://www.spigotmc.org/
|
||||||
|
+# Bug tracker: https://www.spigotmc.org/go/bugs
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+settings:
|
||||||
|
+ allow-end: true
|
||||||
|
+ warn-on-overload: true
|
||||||
|
+ permissions-file: permissions.yml
|
||||||
|
+ update-folder: update
|
||||||
|
+ plugin-profiling: false
|
||||||
|
+ connection-throttle: 4000
|
||||||
|
+ query-plugins: true
|
||||||
|
+ deprecated-verbose: default
|
||||||
|
+ shutdown-message: <lang:multiplayer.disconnect.server_shutdown>
|
||||||
|
+ minimum-api: none
|
||||||
|
+ use-map-color-cache: true
|
||||||
|
+spawn-limits:
|
||||||
|
+ monsters: 20
|
||||||
|
+ animals: 5
|
||||||
|
+ water-animals: 2
|
||||||
|
+ water-ambient: 2
|
||||||
|
+ water-underground-creature: 3
|
||||||
|
+ axolotls: 3
|
||||||
|
+ ambient: 1
|
||||||
|
+chunk-gc:
|
||||||
|
+ period-in-ticks: 400
|
||||||
|
+ticks-per:
|
||||||
|
+ animal-spawns: 400
|
||||||
|
+ monster-spawns: 10
|
||||||
|
+ water-spawns: 400
|
||||||
|
+ water-ambient-spawns: 400
|
||||||
|
+ water-underground-creature-spawns: 400
|
||||||
|
+ axolotl-spawns: 400
|
||||||
|
+ ambient-spawns: 400
|
||||||
|
+ autosave: 6000
|
||||||
|
+aliases: now-in-commands.yml
|
||||||
|
diff --git a/src/main/resources/configurations/bukkit_vanillaized.yml b/src/main/resources/configurations/bukkit_vanillaized.yml
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000000000000000000000000000000000000..22fe392b9970bb82db293d638b0dd5727bd60e5a
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/src/main/resources/configurations/bukkit_vanillaized.yml
|
||||||
|
@@ -0,0 +1,45 @@
|
||||||
|
+# This is the main configuration file for Bukkit.
|
||||||
|
+# As you can see, there's actually not that much to configure without any plugins.
|
||||||
|
+# For a reference for any variable inside this file, check out the Bukkit Wiki at
|
||||||
|
+# https://www.spigotmc.org/go/bukkit-yml
|
||||||
|
+#
|
||||||
|
+# If you need help on this file, feel free to join us on Discord or leave a message
|
||||||
|
+# on the forums asking for advice.
|
||||||
|
+#
|
||||||
|
+# Discord: https://www.spigotmc.org/go/discord
|
||||||
|
+# Forums: https://www.spigotmc.org/
|
||||||
|
+# Bug tracker: https://www.spigotmc.org/go/bugs
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+settings:
|
||||||
|
+ allow-end: true
|
||||||
|
+ warn-on-overload: true
|
||||||
|
+ permissions-file: permissions.yml
|
||||||
|
+ update-folder: update
|
||||||
|
+ plugin-profiling: false
|
||||||
|
+ connection-throttle: 4000
|
||||||
|
+ query-plugins: true
|
||||||
|
+ deprecated-verbose: default
|
||||||
|
+ shutdown-message: <lang:multiplayer.disconnect.server_shutdown>
|
||||||
|
+ minimum-api: none
|
||||||
|
+ use-map-color-cache: true
|
||||||
|
+spawn-limits:
|
||||||
|
+ monsters: 70
|
||||||
|
+ animals: 10
|
||||||
|
+ water-animals: 5
|
||||||
|
+ water-ambient: 20
|
||||||
|
+ water-underground-creature: 5
|
||||||
|
+ axolotls: 5
|
||||||
|
+ ambient: 15
|
||||||
|
+chunk-gc:
|
||||||
|
+ period-in-ticks: 600
|
||||||
|
+ticks-per:
|
||||||
|
+ animal-spawns: 400
|
||||||
|
+ monster-spawns: 1
|
||||||
|
+ water-spawns: 1
|
||||||
|
+ water-ambient-spawns: 1
|
||||||
|
+ water-underground-creature-spawns: 1
|
||||||
|
+ axolotl-spawns: 1
|
||||||
|
+ ambient-spawns: 1
|
||||||
|
+ autosave: 6000
|
||||||
|
+aliases: now-in-commands.yml
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: AlphaKR93 <dev@alpha93.kr>
|
|
||||||
Date: Thu, 23 Mar 2023 21:18:47 +0900
|
|
||||||
Subject: [PATCH] Player configuration section
|
|
||||||
|
|
||||||
|
|
||||||
diff --git a/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java b/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java
|
|
||||||
index 122482e1fae7d6ac8e6b32ebdcf3e611d47901c4..61f364abb094a1d137478c106fefa22ceb057ed2 100644
|
|
||||||
--- a/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java
|
|
||||||
+++ b/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java
|
|
||||||
@@ -27,5 +27,12 @@ public class GlobalConfiguration extends ConfigurationPart {
|
|
||||||
public boolean enableOfflineWarnings = true;
|
|
||||||
public boolean enableRootUserWarnings = true;
|
|
||||||
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ public Player player;
|
|
||||||
+ public class Player extends ConfigurationPart {
|
|
||||||
+
|
|
||||||
+
|
|
||||||
+
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,17 +1,14 @@
|
|||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
From: AlphaKR93 <alphakr93@gmail.com>
|
From: AlphaKR93 <dev@alpha93.kr>
|
||||||
Date: Fri, 10 Mar 2023 21:45:37 +0900
|
Date: Sun, 5 Nov 2023 10:40:49 +0900
|
||||||
Subject: [PATCH] Console log tweaks
|
Subject: [PATCH] Tweak console logging
|
||||||
|
|
||||||
[Offine Warning Configuration Patch]
|
|
||||||
Original by Irochi <me@irochi.moe>
|
|
||||||
Licensed under the GPL 3.0
|
|
||||||
|
|
||||||
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 e6f14bb0825e3b6987ebb2ec782c8316e3b7c094..191bebab12c94756e9f98cfacbf06eb9a7c2f2f9 100644
|
index 743ef664a84da93751feaa06e3522515cf9831f8..4e583dde426f8345fb931be6135a1427ed635ab2 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
|
||||||
@@ -180,16 +180,6 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
|
@@ -194,16 +194,6 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
|
||||||
DedicatedServer.LOGGER.warn("To start the server with more ram, launch it as \"java -Xmx1024M -Xms1024M -jar minecraft_server.jar\"");
|
DedicatedServer.LOGGER.warn("To start the server with more ram, launch it as \"java -Xmx1024M -Xms1024M -jar minecraft_server.jar\"");
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -23,52 +20,71 @@ index e6f14bb0825e3b6987ebb2ec782c8316e3b7c094..191bebab12c94756e9f98cfacbf06eb9
|
|||||||
- DedicatedServer.LOGGER.warn("FOR MORE INFORMATION, SEE https://madelinemiller.dev/blog/root-minecraft-server/");
|
- DedicatedServer.LOGGER.warn("FOR MORE INFORMATION, SEE https://madelinemiller.dev/blog/root-minecraft-server/");
|
||||||
- DedicatedServer.LOGGER.warn("****************************");
|
- DedicatedServer.LOGGER.warn("****************************");
|
||||||
- }
|
- }
|
||||||
- // Paper end
|
- // Paper end - detect running as root
|
||||||
-
|
-
|
||||||
DedicatedServer.LOGGER.info("Loading properties");
|
DedicatedServer.LOGGER.info("Loading properties");
|
||||||
DedicatedServerProperties dedicatedserverproperties = this.settings.getProperties();
|
DedicatedServerProperties dedicatedserverproperties = this.settings.getProperties();
|
||||||
|
|
||||||
@@ -321,7 +311,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
|
@@ -235,6 +225,15 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
|
||||||
String proxyFlavor = (io.papermc.paper.configuration.GlobalConfiguration.get().proxies.velocity.enabled) ? "Velocity" : "BungeeCord";
|
this.plazmaConfigurations.initializeGlobalConfiguration(this.registryAccess()); // Plazma - Configurable Plazma
|
||||||
String proxyLink = (io.papermc.paper.configuration.GlobalConfiguration.get().proxies.velocity.enabled) ? "https://docs.papermc.io/velocity/security" : "http://www.spigotmc.org/wiki/firewall-guide/";
|
this.plazmaConfigurations.initializeWorldDefaultsConfiguration(this.registryAccess()); // Plazma - Configurable Plazma
|
||||||
// Paper end
|
// Paper end - initialize global and world-defaults configuration
|
||||||
- if (!this.usesAuthentication()) {
|
+ // Paper start - detect running as root // Plazma - Tweak console logging (moved down)
|
||||||
+ if (org.plazmamc.plazma.configurations.GlobalConfiguration.get().consoleLogs.enableOfflineWarnings && !this.usesAuthentication()) { // Plazma
|
+ if (io.papermc.paper.util.ServerEnvironment.userIsRootOrAdmin()) {
|
||||||
DedicatedServer.LOGGER.warn("**** SERVER IS RUNNING IN OFFLINE/INSECURE MODE!");
|
|
||||||
DedicatedServer.LOGGER.warn("The server will make no attempt to authenticate usernames. Beware.");
|
|
||||||
// Spigot start
|
|
||||||
@@ -334,9 +324,20 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
|
|
||||||
DedicatedServer.LOGGER.warn("While this makes the game possible to play without internet access, it also opens up the ability for hackers to connect with any username they choose.");
|
|
||||||
}
|
|
||||||
// Spigot end
|
|
||||||
- DedicatedServer.LOGGER.warn("To change this, set \"online-mode\" to \"true\" in the server.properties file.");
|
|
||||||
+ DedicatedServer.LOGGER.warn("To change this, set \"online-mode\" to \"true\" in the \"server.properties\" file or set \"console-logs.offline-warning\" to \"false\" in the \"config/plazma-global.yml\" file."); // Plazma
|
|
||||||
}
|
|
||||||
|
|
||||||
+ // Plazma start - Moved down
|
|
||||||
+ // Paper start - detect running as root
|
|
||||||
+ if (org.plazmamc.plazma.configurations.GlobalConfiguration.get().consoleLogs.enableRootUserWarnings && io.papermc.paper.util.ServerEnvironment.userIsRootOrAdmin()) {
|
|
||||||
+ DedicatedServer.LOGGER.warn("****************************");
|
+ DedicatedServer.LOGGER.warn("****************************");
|
||||||
+ DedicatedServer.LOGGER.warn("YOU ARE RUNNING THIS SERVER AS AN ADMINISTRATIVE OR ROOT USER. THIS IS NOT ADVISED.");
|
+ DedicatedServer.LOGGER.warn("YOU ARE RUNNING THIS SERVER AS AN ADMINISTRATIVE OR ROOT USER. THIS IS NOT ADVISED.");
|
||||||
+ DedicatedServer.LOGGER.warn("YOU ARE OPENING YOURSELF UP TO POTENTIAL RISKS WHEN DOING THIS.");
|
+ DedicatedServer.LOGGER.warn("YOU ARE OPENING YOURSELF UP TO POTENTIAL RISKS WHEN DOING THIS.");
|
||||||
+ DedicatedServer.LOGGER.warn("FOR MORE INFORMATION, SEE https://madelinemiller.dev/blog/root-minecraft-server/");
|
+ DedicatedServer.LOGGER.warn("FOR MORE INFORMATION, SEE https://madelinemiller.dev/blog/root-minecraft-server/");
|
||||||
+ DedicatedServer.LOGGER.warn("****************************");
|
+ DedicatedServer.LOGGER.warn("****************************");
|
||||||
+ }
|
+ }
|
||||||
+ // Paper end
|
+ // Paper end - detect running as root
|
||||||
+ // Plazma end
|
this.server.spark.enableEarlyIfRequested(); // Paper - spark
|
||||||
|
// Paper start - fix converting txt to json file; convert old users earlier after PlayerList creation but before file load/save
|
||||||
|
if (this.convertOldUsers()) {
|
||||||
|
@@ -332,6 +331,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
|
||||||
|
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/";
|
||||||
|
// Paper end - Add Velocity IP Forwarding Support
|
||||||
|
+ if (org.plazmamc.plazma.configurations.GlobalConfiguration.get().consoleLogs.offlineWarnings && !(io.papermc.paper.configuration.GlobalConfiguration.get().proxies.velocity.enabled && io.papermc.paper.configuration.GlobalConfiguration.get().proxies.velocity.onlineMode)) // Plazma - Tweak console logging
|
||||||
|
if (!this.usesAuthentication()) {
|
||||||
|
DedicatedServer.LOGGER.warn("**** SERVER IS RUNNING IN OFFLINE/INSECURE MODE!");
|
||||||
|
DedicatedServer.LOGGER.warn("The server will make no attempt to authenticate usernames. Beware.");
|
||||||
|
@@ -345,7 +345,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
|
||||||
|
DedicatedServer.LOGGER.warn("While this makes the game possible to play without internet access, it also opens up the ability for hackers to connect with any username they choose.");
|
||||||
|
}
|
||||||
|
// Spigot end
|
||||||
|
- DedicatedServer.LOGGER.warn("To change this, set \"online-mode\" to \"true\" in the server.properties file.");
|
||||||
|
+ DedicatedServer.LOGGER.warn("To change this, set \"online-mode\" to \"true\" in the server.properties file or set \"console-logs.offline-warnings\" to \"false\" in the config/plazma-global.yml file."); // Plazma - Tweak console logging
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java
|
||||||
|
index 7d57f9b7fc4837f0f44f5c1cb76a5751a15b9254..8cc4907984f1a344e1983cd48744e92170ff650f 100644
|
||||||
|
--- a/src/main/java/net/minecraft/server/players/PlayerList.java
|
||||||
|
+++ b/src/main/java/net/minecraft/server/players/PlayerList.java
|
||||||
|
@@ -1426,6 +1426,7 @@ public abstract class PlayerList {
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean verifyChatTrusted(PlayerChatMessage message) { // Paper - private -> public
|
||||||
|
+ if (!org.plazmamc.plazma.configurations.GlobalConfiguration.get().consoleLogs.notSecurePrefix) return true; // Plazma - Tweak console logging
|
||||||
|
return message.hasSignature() && !message.hasExpiredServer(Instant.now());
|
||||||
|
}
|
||||||
|
|
||||||
if (!OldUsersConverter.serverReadyAfterUserconversion(this)) {
|
|
||||||
return false;
|
|
||||||
diff --git a/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java b/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java
|
diff --git a/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java b/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java
|
||||||
index 3c70653b720d3d55be199e000e89c627b90e65da..122482e1fae7d6ac8e6b32ebdcf3e611d47901c4 100644
|
index aff5c68bc715c6ea9b5b808e5a94cbac9a3725ba..a8586f1bd161ad3470ae7f0590f1bba0cf627bd0 100644
|
||||||
--- a/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java
|
--- a/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java
|
||||||
+++ b/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java
|
+++ b/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java
|
||||||
@@ -24,6 +24,8 @@ public class GlobalConfiguration extends ConfigurationPart {
|
@@ -69,4 +69,13 @@ public class GlobalConfiguration extends ConfigurationPart {
|
||||||
public ConsoleLogs consoleLogs;
|
|
||||||
public class ConsoleLogs extends ConfigurationPart {
|
|
||||||
|
|
||||||
+ public boolean enableOfflineWarnings = true;
|
|
||||||
+ public boolean enableRootUserWarnings = true;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
+ public ConsoleLogs consoleLogs;
|
||||||
|
+ public class ConsoleLogs extends ConfigurationPart {
|
||||||
|
+
|
||||||
|
+ public boolean offlineWarnings = true;
|
||||||
|
+ public boolean rootUserWarnings = true;
|
||||||
|
+ public boolean notSecurePrefix = true;
|
||||||
|
+
|
||||||
|
+ }
|
||||||
|
+
|
||||||
}
|
}
|
||||||
@@ -5,15 +5,15 @@ Subject: [PATCH] Add missing purpur configuration options
|
|||||||
|
|
||||||
|
|
||||||
diff --git a/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java b/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java
|
diff --git a/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java b/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java
|
||||||
index 7166f4a39fd615e10d7b1f53c57363832a41f365..599eeb043bba787b88003ad2ac128e8d7f3e69c6 100644
|
index f60961bd5fdf6d1417e458b92e311c1a0a62463d..026cd57df33476841ed3a8f9fdc4d17a77e037b0 100644
|
||||||
--- a/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java
|
--- a/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java
|
||||||
+++ b/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java
|
+++ b/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java
|
||||||
@@ -151,6 +151,23 @@ public class Allay extends PathfinderMob implements InventoryCarrier, VibrationS
|
@@ -160,6 +160,18 @@ public class Allay extends PathfinderMob implements InventoryCarrier, VibrationS
|
||||||
protected void registerGoals() {
|
this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.allayMaxHealth);
|
||||||
this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur
|
this.getAttribute(Attributes.SCALE).setBaseValue(this.level().purpurConfig.allayScale);
|
||||||
}
|
}
|
||||||
+
|
+
|
||||||
+ // Plazma start
|
+ // Plazma start - Add missing purpur configuration options
|
||||||
+ @Override
|
+ @Override
|
||||||
+ public boolean isSensitiveToWater() {
|
+ public boolean isSensitiveToWater() {
|
||||||
+ return level().purpurConfig.allayTakeDamageFromWater;
|
+ return level().purpurConfig.allayTakeDamageFromWater;
|
||||||
@@ -23,25 +23,20 @@ index 7166f4a39fd615e10d7b1f53c57363832a41f365..599eeb043bba787b88003ad2ac128e8d
|
|||||||
+ public boolean isAlwaysExperienceDropper() {
|
+ public boolean isAlwaysExperienceDropper() {
|
||||||
+ return level().purpurConfig.allayAlwaysDropExp;
|
+ return level().purpurConfig.allayAlwaysDropExp;
|
||||||
+ }
|
+ }
|
||||||
+
|
+ // Plazma end - Add missing purpur configuration options
|
||||||
+ @Override
|
|
||||||
+ public void initAttributes() {
|
|
||||||
+ this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(level().purpurConfig.allayMaxHealth);
|
|
||||||
+ }
|
|
||||||
+ // Plazma end
|
|
||||||
// Purpur end
|
// Purpur end
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
diff --git a/src/main/java/net/minecraft/world/entity/animal/camel/Camel.java b/src/main/java/net/minecraft/world/entity/animal/camel/Camel.java
|
diff --git a/src/main/java/net/minecraft/world/entity/animal/camel/Camel.java b/src/main/java/net/minecraft/world/entity/animal/camel/Camel.java
|
||||||
index 9f19ebfa6392a080672c472e08f755379e9776b4..e5aa7d1cf2e3178f7117e40f2df444963af43d67 100644
|
index 56d97225a909fd55f0d8aec992d5b6d42687c948..39cdecc382a71ef643d382ac506249bbb8df3d34 100644
|
||||||
--- a/src/main/java/net/minecraft/world/entity/animal/camel/Camel.java
|
--- a/src/main/java/net/minecraft/world/entity/animal/camel/Camel.java
|
||||||
+++ b/src/main/java/net/minecraft/world/entity/animal/camel/Camel.java
|
+++ b/src/main/java/net/minecraft/world/entity/animal/camel/Camel.java
|
||||||
@@ -93,6 +93,18 @@ public class Camel extends AbstractHorse implements PlayerRideableJumping, Rider
|
@@ -96,6 +96,18 @@ public class Camel extends AbstractHorse {
|
||||||
public int getPurpurBreedTime() {
|
public int getPurpurBreedTime() {
|
||||||
return this.level().purpurConfig.camelBreedingTicks;
|
return this.level().purpurConfig.camelBreedingTicks;
|
||||||
}
|
}
|
||||||
+
|
+
|
||||||
+ // Plazma start
|
+ // Plazma start - Add missing purpur configuration options
|
||||||
+ @Override
|
+ @Override
|
||||||
+ public boolean isSensitiveToWater() {
|
+ public boolean isSensitiveToWater() {
|
||||||
+ return level().purpurConfig.camelTakeDamageFromWater;
|
+ return level().purpurConfig.camelTakeDamageFromWater;
|
||||||
@@ -51,20 +46,20 @@ index 9f19ebfa6392a080672c472e08f755379e9776b4..e5aa7d1cf2e3178f7117e40f2df44496
|
|||||||
+ public boolean isAlwaysExperienceDropper() {
|
+ public boolean isAlwaysExperienceDropper() {
|
||||||
+ return level().purpurConfig.camelAlwaysDropExp;
|
+ return level().purpurConfig.camelAlwaysDropExp;
|
||||||
+ }
|
+ }
|
||||||
+ // Plazma end
|
+ // Plazma end - Add missing purpur configuration options
|
||||||
// Purpur end
|
// Purpur end
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
diff --git a/src/main/java/net/minecraft/world/entity/animal/frog/Frog.java b/src/main/java/net/minecraft/world/entity/animal/frog/Frog.java
|
diff --git a/src/main/java/net/minecraft/world/entity/animal/frog/Frog.java b/src/main/java/net/minecraft/world/entity/animal/frog/Frog.java
|
||||||
index dc1e8bcd8049d79c0e383ccd6a5697f79a3a2ebd..c0fce0582530e24d25368a9600b4f8c06d4f8286 100644
|
index 501a12398c56fe0df4e76a3bbce0f98c6c5aa6cb..94ca735513901a180d42ac1cfd48d841142a6ef5 100644
|
||||||
--- a/src/main/java/net/minecraft/world/entity/animal/frog/Frog.java
|
--- a/src/main/java/net/minecraft/world/entity/animal/frog/Frog.java
|
||||||
+++ b/src/main/java/net/minecraft/world/entity/animal/frog/Frog.java
|
+++ b/src/main/java/net/minecraft/world/entity/animal/frog/Frog.java
|
||||||
@@ -134,6 +134,23 @@ public class Frog extends Animal implements VariantHolder<FrogVariant> {
|
@@ -163,6 +163,23 @@ public class Frog extends Animal implements VariantHolder<Holder<FrogVariant>> {
|
||||||
public float getJumpPower() {
|
public float getJumpPower() {
|
||||||
return (getRider() != null && isControllable()) ? level().purpurConfig.frogRidableJumpHeight * this.getBlockJumpFactor() : super.getJumpPower();
|
return (getRider() != null && isControllable()) ? level().purpurConfig.frogRidableJumpHeight * this.getBlockJumpFactor() : super.getJumpPower();
|
||||||
}
|
}
|
||||||
+
|
+
|
||||||
+ // Plazma start
|
+ // Plazma start - Add missing purpur configuration options
|
||||||
+ @Override
|
+ @Override
|
||||||
+ public boolean isSensitiveToWater() {
|
+ public boolean isSensitiveToWater() {
|
||||||
+ return level().purpurConfig.frogTakeDamageFromWater;
|
+ return level().purpurConfig.frogTakeDamageFromWater;
|
||||||
@@ -79,20 +74,20 @@ index dc1e8bcd8049d79c0e383ccd6a5697f79a3a2ebd..c0fce0582530e24d25368a9600b4f8c0
|
|||||||
+ public void initAttributes() {
|
+ public void initAttributes() {
|
||||||
+ this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(level().purpurConfig.frogMaxHealth);
|
+ this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(level().purpurConfig.frogMaxHealth);
|
||||||
+ }
|
+ }
|
||||||
+ // Plazma end
|
+ // Plazma end - Add missing purpur configuration options
|
||||||
// Purpur end
|
// Purpur end
|
||||||
|
|
||||||
public int getPurpurBreedTime() {
|
public int getPurpurBreedTime() {
|
||||||
diff --git a/src/main/java/net/minecraft/world/entity/animal/frog/Tadpole.java b/src/main/java/net/minecraft/world/entity/animal/frog/Tadpole.java
|
diff --git a/src/main/java/net/minecraft/world/entity/animal/frog/Tadpole.java b/src/main/java/net/minecraft/world/entity/animal/frog/Tadpole.java
|
||||||
index 6b012bea26e8ef0c04571f43da67f6e108188830..7c816b879d47a1b8a480f4237d1ff0e11df4c98e 100644
|
index 071d14cc6697587ec14f02c69c78df364e7d8a8f..cc5c172b2fccc5fc59337203ed2b6edb2abc0c22 100644
|
||||||
--- a/src/main/java/net/minecraft/world/entity/animal/frog/Tadpole.java
|
--- a/src/main/java/net/minecraft/world/entity/animal/frog/Tadpole.java
|
||||||
+++ b/src/main/java/net/minecraft/world/entity/animal/frog/Tadpole.java
|
+++ b/src/main/java/net/minecraft/world/entity/animal/frog/Tadpole.java
|
||||||
@@ -87,6 +87,23 @@ public class Tadpole extends AbstractFish {
|
@@ -93,6 +93,23 @@ public class Tadpole extends AbstractFish {
|
||||||
protected void registerGoals() {
|
protected void registerGoals() {
|
||||||
this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur
|
this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur
|
||||||
}
|
}
|
||||||
+
|
+
|
||||||
+ // Plazma start
|
+ // Plazma start - Add missing purpur configuration options
|
||||||
+ @Override
|
+ @Override
|
||||||
+ public boolean isSensitiveToWater() {
|
+ public boolean isSensitiveToWater() {
|
||||||
+ return level().purpurConfig.tadpoleTakeDamageFromWater;
|
+ return level().purpurConfig.tadpoleTakeDamageFromWater;
|
||||||
@@ -107,20 +102,20 @@ index 6b012bea26e8ef0c04571f43da67f6e108188830..7c816b879d47a1b8a480f4237d1ff0e1
|
|||||||
+ public void initAttributes() {
|
+ public void initAttributes() {
|
||||||
+ this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(level().purpurConfig.tadpoleMaxHealth);
|
+ this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(level().purpurConfig.tadpoleMaxHealth);
|
||||||
+ }
|
+ }
|
||||||
+ // Plazma end
|
+ // Plazma end - Add missing purpur configuration options
|
||||||
// Purpur end
|
// Purpur end
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
diff --git a/src/main/java/net/minecraft/world/entity/animal/sniffer/Sniffer.java b/src/main/java/net/minecraft/world/entity/animal/sniffer/Sniffer.java
|
diff --git a/src/main/java/net/minecraft/world/entity/animal/sniffer/Sniffer.java b/src/main/java/net/minecraft/world/entity/animal/sniffer/Sniffer.java
|
||||||
index 552777d7ef6a1190a3b84bdf2f130f735c61d275..87f56c75742d856cdae24f525eac72aa5bce5ce2 100644
|
index 3fb4f12095883ea4ec6e0d60e0600b9de6ed7be2..f853730cee4fad2f3a5711e38918c65dcb1dc038 100644
|
||||||
--- a/src/main/java/net/minecraft/world/entity/animal/sniffer/Sniffer.java
|
--- a/src/main/java/net/minecraft/world/entity/animal/sniffer/Sniffer.java
|
||||||
+++ b/src/main/java/net/minecraft/world/entity/animal/sniffer/Sniffer.java
|
+++ b/src/main/java/net/minecraft/world/entity/animal/sniffer/Sniffer.java
|
||||||
@@ -105,6 +105,18 @@ public class Sniffer extends Animal {
|
@@ -116,6 +116,18 @@ public class Sniffer extends Animal {
|
||||||
public boolean isControllable() {
|
public int getPurpurBreedTime() {
|
||||||
return level().purpurConfig.snifferControllable;
|
return this.level().purpurConfig.snifferBreedingTicks;
|
||||||
}
|
}
|
||||||
+
|
+
|
||||||
+ // Plazma start
|
+ // Plazma start - Add missing purpur configuration options
|
||||||
+ @Override
|
+ @Override
|
||||||
+ public boolean isSensitiveToWater() {
|
+ public boolean isSensitiveToWater() {
|
||||||
+ return level().purpurConfig.snifferTakeDamageFromWater;
|
+ return level().purpurConfig.snifferTakeDamageFromWater;
|
||||||
@@ -130,20 +125,20 @@ index 552777d7ef6a1190a3b84bdf2f130f735c61d275..87f56c75742d856cdae24f525eac72aa
|
|||||||
+ public boolean isAlwaysExperienceDropper() {
|
+ public boolean isAlwaysExperienceDropper() {
|
||||||
+ return level().purpurConfig.snifferAlwaysDropExp;
|
+ return level().purpurConfig.snifferAlwaysDropExp;
|
||||||
+ }
|
+ }
|
||||||
+ // Plazma end
|
+ // Plazma end - Add missing purpur configuration options
|
||||||
// Purpur end
|
// Purpur end
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
diff --git a/src/main/java/net/minecraft/world/entity/monster/warden/Warden.java b/src/main/java/net/minecraft/world/entity/monster/warden/Warden.java
|
diff --git a/src/main/java/net/minecraft/world/entity/monster/warden/Warden.java b/src/main/java/net/minecraft/world/entity/monster/warden/Warden.java
|
||||||
index 3fa46affc4d77d01909cfeaeaba6e06ba9fd5592..6d3373393e38f0ee530baab0d828e7c2722e9b9b 100644
|
index 692261880d05daa75fc53dde31d0f2b95dc52746..9f542e4f0077a6abc89fdec1a4bf3e8f40203b2a 100644
|
||||||
--- a/src/main/java/net/minecraft/world/entity/monster/warden/Warden.java
|
--- a/src/main/java/net/minecraft/world/entity/monster/warden/Warden.java
|
||||||
+++ b/src/main/java/net/minecraft/world/entity/monster/warden/Warden.java
|
+++ b/src/main/java/net/minecraft/world/entity/monster/warden/Warden.java
|
||||||
@@ -145,6 +145,23 @@ public class Warden extends Monster implements VibrationSystem {
|
@@ -151,6 +151,23 @@ public class Warden extends Monster implements VibrationSystem {
|
||||||
this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur
|
this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur
|
||||||
this.targetSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur
|
this.targetSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur
|
||||||
}
|
}
|
||||||
+
|
+
|
||||||
+ // Plazma start
|
+ // Plazma start - Add missing purpur configuration options
|
||||||
+ @Override
|
+ @Override
|
||||||
+ public boolean isSensitiveToWater() {
|
+ public boolean isSensitiveToWater() {
|
||||||
+ return level().purpurConfig.wardenTakeDamageFromWater;
|
+ return level().purpurConfig.wardenTakeDamageFromWater;
|
||||||
@@ -158,89 +153,85 @@ index 3fa46affc4d77d01909cfeaeaba6e06ba9fd5592..6d3373393e38f0ee530baab0d828e7c2
|
|||||||
+ public void initAttributes() {
|
+ public void initAttributes() {
|
||||||
+ this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(level().purpurConfig.wardenMaxHealth);
|
+ this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(level().purpurConfig.wardenMaxHealth);
|
||||||
+ }
|
+ }
|
||||||
+ // Plazma end
|
+ // Plazma end - Add missing purpur configuration options
|
||||||
// Purpur end
|
// Purpur end
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
diff --git a/src/main/java/net/minecraft/world/entity/vehicle/ChestBoat.java b/src/main/java/net/minecraft/world/entity/vehicle/ChestBoat.java
|
diff --git a/src/main/java/net/minecraft/world/entity/vehicle/AbstractChestBoat.java b/src/main/java/net/minecraft/world/entity/vehicle/AbstractChestBoat.java
|
||||||
index e88c39d405fc7068db64ad34a03dec8d559e749e..bb5d42ca73722f3a02154ed889625ded2ac63e6f 100644
|
index 1f4cc08e84a23213bb9786ea09ad77caeec2d336..f888f1dd2e3c228b0a370fe920b63d547bbba571 100644
|
||||||
--- a/src/main/java/net/minecraft/world/entity/vehicle/ChestBoat.java
|
--- a/src/main/java/net/minecraft/world/entity/vehicle/AbstractChestBoat.java
|
||||||
+++ b/src/main/java/net/minecraft/world/entity/vehicle/ChestBoat.java
|
+++ b/src/main/java/net/minecraft/world/entity/vehicle/AbstractChestBoat.java
|
||||||
@@ -41,7 +41,7 @@ public class ChestBoat extends Boat implements HasCustomInventoryScreen, Contain
|
@@ -46,7 +46,7 @@ public abstract class AbstractChestBoat extends AbstractBoat implements HasCusto
|
||||||
|
|
||||||
public ChestBoat(EntityType<? extends Boat> type, Level world) {
|
public AbstractChestBoat(EntityType<? extends AbstractChestBoat> type, Level world, Supplier<Item> itemSupplier) {
|
||||||
super(type, world);
|
super(type, world, itemSupplier);
|
||||||
- this.itemStacks = NonNullList.withSize(27, ItemStack.EMPTY);
|
- this.itemStacks = NonNullList.withSize(27, ItemStack.EMPTY);
|
||||||
+ this.itemStacks = NonNullList.withSize(org.purpurmc.purpur.PurpurConfig.chestBoatRows * 9, ItemStack.EMPTY); // Plazma
|
+ this.itemStacks = NonNullList.withSize(org.purpurmc.purpur.PurpurConfig.chestBoatRows * 9, ItemStack.EMPTY); // Plazma - Add missing purpur configuration options
|
||||||
}
|
}
|
||||||
|
|
||||||
public ChestBoat(Level world, double d0, double d1, double d2) {
|
@Override
|
||||||
@@ -160,7 +160,7 @@ public class ChestBoat extends Boat implements HasCustomInventoryScreen, Contain
|
@@ -142,7 +142,7 @@ public abstract class AbstractChestBoat extends AbstractBoat implements HasCusto
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getContainerSize() {
|
public int getContainerSize() {
|
||||||
- return 27;
|
- return 27;
|
||||||
+ return org.purpurmc.purpur.PurpurConfig.chestBoatRows * 9; // Plazma
|
+ return org.purpurmc.purpur.PurpurConfig.chestBoatRows * 9; // Plazma - Add missing purpur configuration options
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
||||||
index d0968eeb0f9edeee43394da8a32d3ee8d491737b..00e4bea74de63da5dc174febe6d6473729ddf8ac 100644
|
index 097f3c34d244b89e7dd9f8b6f2a3d8fdc67b36dc..3f4c94aada930e55dfe6a2dd6f3bfb51b2276b0d 100644
|
||||||
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
||||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
||||||
@@ -331,6 +331,7 @@ public class PurpurConfig {
|
@@ -331,6 +331,7 @@ public class PurpurConfig {
|
||||||
}
|
}
|
||||||
|
|
||||||
public static int barrelRows = 3;
|
public static int barrelRows = 3;
|
||||||
+ public static int chestBoatRows = 3; // Plazma
|
+ public static int chestBoatRows = 3; // Plazma - Add missing purpur configuration options
|
||||||
public static boolean enderChestSixRows = false;
|
public static boolean enderChestSixRows = false;
|
||||||
public static boolean enderChestPermissionRows = false;
|
public static boolean enderChestPermissionRows = false;
|
||||||
public static boolean cryingObsidianValidForPortalFrame = false;
|
public static boolean cryingObsidianValidForPortalFrame = false;
|
||||||
@@ -371,6 +372,7 @@ public class PurpurConfig {
|
@@ -373,6 +374,7 @@ public class PurpurConfig {
|
||||||
case 1 -> 9;
|
case 1 -> 9;
|
||||||
default -> 27;
|
default -> 27;
|
||||||
});
|
});
|
||||||
+ chestBoatRows = getInt("settings.blocks.chest_boat.rows", chestBoatRows); // Plazma
|
+ chestBoatRows = getInt("settings.blocks.chest_boat.rows", chestBoatRows); // Plazma - Add missing purpur configuration options
|
||||||
enderChestSixRows = getBoolean("settings.blocks.ender_chest.six-rows", enderChestSixRows);
|
enderChestSixRows = getBoolean("settings.blocks.ender_chest.six-rows", enderChestSixRows);
|
||||||
org.bukkit.event.inventory.InventoryType.ENDER_CHEST.setDefaultSize(enderChestSixRows ? 54 : 27);
|
org.bukkit.event.inventory.InventoryType.ENDER_CHEST.setDefaultSize(enderChestSixRows ? 54 : 27);
|
||||||
enderChestPermissionRows = getBoolean("settings.blocks.ender_chest.use-permissions-for-rows", enderChestPermissionRows);
|
enderChestPermissionRows = getBoolean("settings.blocks.ender_chest.use-permissions-for-rows", enderChestPermissionRows);
|
||||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||||
index 16c3a06df8575a4fecd1967cf18854cb6267a4f7..9c7fd73a30edbf826c8670ac6141c73fa3d505f3 100644
|
index 2198477c174f89fdaece5ffef8b40c8096a9c9a9..046af5afaf3e234fb7d14c4a9ae183cda8cb0b0c 100644
|
||||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||||
@@ -1117,7 +1117,15 @@ public class PurpurWorldConfig {
|
@@ -1133,7 +1133,13 @@ public class PurpurWorldConfig {
|
||||||
public boolean allayRidableInWater = true;
|
|
||||||
public boolean allayControllable = true;
|
public boolean allayControllable = true;
|
||||||
public List<String> allayRespectNBT = new ArrayList<>();
|
public double allayMaxHealth = 20.0D;
|
||||||
|
public double allayScale = 1.0D;
|
||||||
+ // Plazma start - Add missing purpur config options
|
+ // Plazma start - Add missing purpur config options
|
||||||
+ public double allayMaxHealth = 20.0D;
|
|
||||||
+ public boolean allayTakeDamageFromWater = false;
|
+ public boolean allayTakeDamageFromWater = false;
|
||||||
+ public boolean allayAlwaysDropExp = false;
|
+ public boolean allayAlwaysDropExp = false;
|
||||||
private void allaySettings() {
|
private void allaySettings() {
|
||||||
+ allayMaxHealth = getDouble("mobs.allay.max-health", allayMaxHealth);
|
|
||||||
+ allayTakeDamageFromWater = getBoolean("mobs.allay.take-damage-from-water", allayTakeDamageFromWater);
|
+ allayTakeDamageFromWater = getBoolean("mobs.allay.take-damage-from-water", allayTakeDamageFromWater);
|
||||||
+ allayAlwaysDropExp = getBoolean("mobs.allay.always-drop-exp", allayAlwaysDropExp);
|
+ allayAlwaysDropExp = getBoolean("mobs.allay.always-drop-exp", allayAlwaysDropExp);
|
||||||
+ // Plazma end
|
+ // Plazma end - Add missing purpur configuration options
|
||||||
allayRidable = getBoolean("mobs.allay.ridable", allayRidable);
|
allayRidable = getBoolean("mobs.allay.ridable", allayRidable);
|
||||||
allayRidableInWater = getBoolean("mobs.allay.ridable-in-water", allayRidableInWater);
|
allayRidableInWater = getBoolean("mobs.allay.ridable-in-water", allayRidableInWater);
|
||||||
allayControllable = getBoolean("mobs.allay.controllable", allayControllable);
|
allayControllable = getBoolean("mobs.allay.controllable", allayControllable);
|
||||||
@@ -1236,7 +1244,15 @@ public class PurpurWorldConfig {
|
@@ -1288,7 +1294,13 @@ public class PurpurWorldConfig {
|
||||||
public double camelMovementSpeedMin = 0.09D;
|
public double camelMovementSpeedMin = 0.09D;
|
||||||
public double camelMovementSpeedMax = 0.09D;
|
public double camelMovementSpeedMax = 0.09D;
|
||||||
public int camelBreedingTicks = 6000;
|
public int camelBreedingTicks = 6000;
|
||||||
+ // Plazma start - Add missing purpur config options
|
+ // Plazma start - Add missing purpur config options
|
||||||
+ //public boolean camelRidableInWater = false;
|
|
||||||
+ public boolean camelTakeDamageFromWater = false;
|
+ public boolean camelTakeDamageFromWater = false;
|
||||||
+ public boolean camelAlwaysDropExp = false;
|
+ public boolean camelAlwaysDropExp = false;
|
||||||
private void camelSettings() {
|
private void camelSettings() {
|
||||||
+ //camelRidableInWater = getBoolean("mobs.camel.ridable-in-water", camelRidableInWater);
|
|
||||||
+ camelTakeDamageFromWater = getBoolean("mobs.camel.takes-damage-from-water", camelTakeDamageFromWater);
|
+ camelTakeDamageFromWater = getBoolean("mobs.camel.takes-damage-from-water", camelTakeDamageFromWater);
|
||||||
+ camelAlwaysDropExp = getBoolean("mobs.camel.always-drop-exp", camelAlwaysDropExp);
|
+ camelAlwaysDropExp = getBoolean("mobs.camel.always-drop-exp", camelAlwaysDropExp);
|
||||||
+ // Plazma end
|
+ // Plazma end - Add missing purpur configuration options
|
||||||
camelRidableInWater = getBoolean("mobs.camel.ridable-in-water", camelRidableInWater);
|
camelRidableInWater = getBoolean("mobs.camel.ridable-in-water", camelRidableInWater);
|
||||||
camelMaxHealthMin = getDouble("mobs.camel.attributes.max_health.min", camelMaxHealthMin);
|
camelMaxHealthMin = getDouble("mobs.camel.attributes.max_health.min", camelMaxHealthMin);
|
||||||
camelMaxHealthMax = getDouble("mobs.camel.attributes.max_health.max", camelMaxHealthMax);
|
camelMaxHealthMax = getDouble("mobs.camel.attributes.max_health.max", camelMaxHealthMax);
|
||||||
@@ -1664,7 +1680,15 @@ public class PurpurWorldConfig {
|
@@ -1740,7 +1752,15 @@ public class PurpurWorldConfig {
|
||||||
public boolean frogControllable = true;
|
public boolean frogControllable = true;
|
||||||
public float frogRidableJumpHeight = 0.65F;
|
public float frogRidableJumpHeight = 0.65F;
|
||||||
public int frogBreedingTicks = 6000;
|
public int frogBreedingTicks = 6000;
|
||||||
@@ -252,13 +243,13 @@ index 16c3a06df8575a4fecd1967cf18854cb6267a4f7..9c7fd73a30edbf826c8670ac6141c73f
|
|||||||
+ frogMaxHealth = getDouble("mobs.frog.attributes.max_health", frogMaxHealth);
|
+ frogMaxHealth = getDouble("mobs.frog.attributes.max_health", frogMaxHealth);
|
||||||
+ frogTakeDamageFromWater = getBoolean("mobs.frog.takes-damage-from-water", frogTakeDamageFromWater);
|
+ frogTakeDamageFromWater = getBoolean("mobs.frog.takes-damage-from-water", frogTakeDamageFromWater);
|
||||||
+ frogAlwaysDropExp = getBoolean("mobs.frog.always-drop-exp", frogAlwaysDropExp);
|
+ frogAlwaysDropExp = getBoolean("mobs.frog.always-drop-exp", frogAlwaysDropExp);
|
||||||
+ // Plazma end
|
+ // Plazma end - Add missing purpur configuration options
|
||||||
frogRidable = getBoolean("mobs.frog.ridable", frogRidable);
|
frogRidable = getBoolean("mobs.frog.ridable", frogRidable);
|
||||||
frogRidableInWater = getBoolean("mobs.frog.ridable-in-water", frogRidableInWater);
|
frogRidableInWater = getBoolean("mobs.frog.ridable-in-water", frogRidableInWater);
|
||||||
frogControllable = getBoolean("mobs.frog.controllable", frogControllable);
|
frogControllable = getBoolean("mobs.frog.controllable", frogControllable);
|
||||||
@@ -2617,7 +2641,13 @@ public class PurpurWorldConfig {
|
@@ -2752,7 +2772,13 @@ public class PurpurWorldConfig {
|
||||||
public boolean snifferControllable = true;
|
|
||||||
public double snifferMaxHealth = 14.0D;
|
public double snifferMaxHealth = 14.0D;
|
||||||
|
public double snifferScale = 1.0D;
|
||||||
public int snifferBreedingTicks = 6000;
|
public int snifferBreedingTicks = 6000;
|
||||||
+ // Plazma start - Add missing purpur config options
|
+ // Plazma start - Add missing purpur config options
|
||||||
+ public boolean snifferTakeDamageFromWater = false;
|
+ public boolean snifferTakeDamageFromWater = false;
|
||||||
@@ -266,11 +257,11 @@ index 16c3a06df8575a4fecd1967cf18854cb6267a4f7..9c7fd73a30edbf826c8670ac6141c73f
|
|||||||
private void snifferSettings() {
|
private void snifferSettings() {
|
||||||
+ snifferTakeDamageFromWater = getBoolean("mobs.sniffer.takes-damage-from-water", snifferTakeDamageFromWater);
|
+ snifferTakeDamageFromWater = getBoolean("mobs.sniffer.takes-damage-from-water", snifferTakeDamageFromWater);
|
||||||
+ snifferAlwaysDropExp = getBoolean("mobs.sniffer.always-drop-exp", snifferAlwaysDropExp);
|
+ snifferAlwaysDropExp = getBoolean("mobs.sniffer.always-drop-exp", snifferAlwaysDropExp);
|
||||||
+ // Plazma end
|
+ // Plazma end - Add missing purpur configuration options
|
||||||
snifferRidable = getBoolean("mobs.sniffer.ridable", snifferRidable);
|
snifferRidable = getBoolean("mobs.sniffer.ridable", snifferRidable);
|
||||||
snifferRidableInWater = getBoolean("mobs.sniffer.ridable-in-water", snifferRidableInWater);
|
snifferRidableInWater = getBoolean("mobs.sniffer.ridable-in-water", snifferRidableInWater);
|
||||||
snifferControllable = getBoolean("mobs.sniffer.controllable", snifferControllable);
|
snifferControllable = getBoolean("mobs.sniffer.controllable", snifferControllable);
|
||||||
@@ -2716,7 +2746,15 @@ public class PurpurWorldConfig {
|
@@ -2860,7 +2886,15 @@ public class PurpurWorldConfig {
|
||||||
public boolean tadpoleRidable = false;
|
public boolean tadpoleRidable = false;
|
||||||
public boolean tadpoleRidableInWater = true;
|
public boolean tadpoleRidableInWater = true;
|
||||||
public boolean tadpoleControllable = true;
|
public boolean tadpoleControllable = true;
|
||||||
@@ -282,11 +273,11 @@ index 16c3a06df8575a4fecd1967cf18854cb6267a4f7..9c7fd73a30edbf826c8670ac6141c73f
|
|||||||
+ tadpoleMaxHealth = getDouble("mobs.tadpole.attributes.max_health", tadpoleMaxHealth);
|
+ tadpoleMaxHealth = getDouble("mobs.tadpole.attributes.max_health", tadpoleMaxHealth);
|
||||||
+ tadpoleTakeDamageFromWater = getBoolean("mobs.tadpole.takes-damage-from-water", tadpoleTakeDamageFromWater);
|
+ tadpoleTakeDamageFromWater = getBoolean("mobs.tadpole.takes-damage-from-water", tadpoleTakeDamageFromWater);
|
||||||
+ tadpoleAlwaysDropExp = getBoolean("mobs.tadpole.always-drop-exp", tadpoleAlwaysDropExp);
|
+ tadpoleAlwaysDropExp = getBoolean("mobs.tadpole.always-drop-exp", tadpoleAlwaysDropExp);
|
||||||
+ // Plazma end
|
+ // Plazma end - Add missing purpur configuration options
|
||||||
tadpoleRidable = getBoolean("mobs.tadpole.ridable", tadpoleRidable);
|
tadpoleRidable = getBoolean("mobs.tadpole.ridable", tadpoleRidable);
|
||||||
tadpoleRidableInWater = getBoolean("mobs.tadpole.ridable-in-water", tadpoleRidableInWater);
|
tadpoleRidableInWater = getBoolean("mobs.tadpole.ridable-in-water", tadpoleRidableInWater);
|
||||||
tadpoleControllable = getBoolean("mobs.tadpole.controllable", tadpoleControllable);
|
tadpoleControllable = getBoolean("mobs.tadpole.controllable", tadpoleControllable);
|
||||||
@@ -2926,7 +2964,15 @@ public class PurpurWorldConfig {
|
@@ -3088,7 +3122,15 @@ public class PurpurWorldConfig {
|
||||||
public boolean wardenRidable = false;
|
public boolean wardenRidable = false;
|
||||||
public boolean wardenRidableInWater = true;
|
public boolean wardenRidableInWater = true;
|
||||||
public boolean wardenControllable = true;
|
public boolean wardenControllable = true;
|
||||||
@@ -298,7 +289,7 @@ index 16c3a06df8575a4fecd1967cf18854cb6267a4f7..9c7fd73a30edbf826c8670ac6141c73f
|
|||||||
+ wardenMaxHealth = getDouble("mobs.warden.attributes.max_health", wardenMaxHealth);
|
+ wardenMaxHealth = getDouble("mobs.warden.attributes.max_health", wardenMaxHealth);
|
||||||
+ wardenTakeDamageFromWater = getBoolean("mobs.warden.takes-damage-from-water", wardenTakeDamageFromWater);
|
+ wardenTakeDamageFromWater = getBoolean("mobs.warden.takes-damage-from-water", wardenTakeDamageFromWater);
|
||||||
+ wardenAlwaysDropExp = getBoolean("mobs.warden.always-drop-exp", wardenAlwaysDropExp);
|
+ wardenAlwaysDropExp = getBoolean("mobs.warden.always-drop-exp", wardenAlwaysDropExp);
|
||||||
+ // Plazma end
|
+ // Plazma end - Add missing purpur configuration options
|
||||||
wardenRidable = getBoolean("mobs.warden.ridable", wardenRidable);
|
wardenRidable = getBoolean("mobs.warden.ridable", wardenRidable);
|
||||||
wardenRidableInWater = getBoolean("mobs.warden.ridable-in-water", wardenRidableInWater);
|
wardenRidableInWater = getBoolean("mobs.warden.ridable-in-water", wardenRidableInWater);
|
||||||
wardenControllable = getBoolean("mobs.warden.controllable", wardenControllable);
|
wardenControllable = getBoolean("mobs.warden.controllable", wardenControllable);
|
||||||
@@ -1,32 +0,0 @@
|
|||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: AlphaKR93 <dev@alpha93.kr>
|
|
||||||
Date: Thu, 23 Mar 2023 21:20:20 +0900
|
|
||||||
Subject: [PATCH] Add option to allow any usernames
|
|
||||||
|
|
||||||
|
|
||||||
diff --git a/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java
|
|
||||||
index 01d5fa265fb2818465b5a71a2e2efeec751a7a05..0f1ebdc20460da22c1ff2fee2ff6428654139969 100644
|
|
||||||
--- a/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java
|
|
||||||
+++ b/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java
|
|
||||||
@@ -240,7 +240,7 @@ public class ServerLoginPacketListenerImpl implements ServerLoginPacketListener,
|
|
||||||
@Override
|
|
||||||
public void handleHello(ServerboundHelloPacket packet) {
|
|
||||||
Validate.validState(this.state == ServerLoginPacketListenerImpl.State.HELLO, "Unexpected hello packet", new Object[0]);
|
|
||||||
- Validate.validState(ServerLoginPacketListenerImpl.isValidUsername(packet.name()), "Invalid characters in username", new Object[0]);
|
|
||||||
+ if (!org.plazmamc.plazma.configurations.GlobalConfiguration.get().player.allowAnyUsername) Validate.validState(ServerLoginPacketListenerImpl.isValidUsername(packet.name()), "Invalid characters in username", new Object[0]); // Plazma
|
|
||||||
// Paper start - validate usernames
|
|
||||||
if (io.papermc.paper.configuration.GlobalConfiguration.get().proxies.isProxyOnlineMode() && io.papermc.paper.configuration.GlobalConfiguration.get().unsupportedSettings.performUsernameValidation) {
|
|
||||||
if (!this.iKnowThisMayNotBeTheBestIdeaButPleaseDisableUsernameValidation && !validateUsername(packet.name())) {
|
|
||||||
diff --git a/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java b/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java
|
|
||||||
index 61f364abb094a1d137478c106fefa22ceb057ed2..a45ff31d08129c0d5f159615d934a4450d54146e 100644
|
|
||||||
--- a/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java
|
|
||||||
+++ b/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java
|
|
||||||
@@ -32,7 +32,7 @@ public class GlobalConfiguration extends ConfigurationPart {
|
|
||||||
public Player player;
|
|
||||||
public class Player extends ConfigurationPart {
|
|
||||||
|
|
||||||
-
|
|
||||||
+ public boolean allowAnyUsername = false;
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,90 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: AlphaKR93 <dev@alpha93.kr>
|
||||||
|
Date: Sun, 5 Nov 2023 11:27:51 +0900
|
||||||
|
Subject: [PATCH] Add option to change nether portal size
|
||||||
|
|
||||||
|
|
||||||
|
diff --git a/src/main/java/net/minecraft/world/level/portal/PortalShape.java b/src/main/java/net/minecraft/world/level/portal/PortalShape.java
|
||||||
|
index acdff7b4a00d563739fd301c3633a266875296fa..1266aaf4bfcf53aa16d7b9bd697a0c483d3218a9 100644
|
||||||
|
--- a/src/main/java/net/minecraft/world/level/portal/PortalShape.java
|
||||||
|
+++ b/src/main/java/net/minecraft/world/level/portal/PortalShape.java
|
||||||
|
@@ -113,7 +113,7 @@ public class PortalShape {
|
||||||
|
private static int calculateWidth(BlockGetter iblockaccess, BlockPos blockposition, Direction enumdirection, BlockStateListPopulator blocks) { // CraftBukkit
|
||||||
|
int i = PortalShape.getDistanceUntilEdgeAboveFrame(iblockaccess, blockposition, enumdirection, blocks); // CraftBukkit
|
||||||
|
|
||||||
|
- return i >= 2 && i <= 21 ? i : 0;
|
||||||
|
+ return i >= org.plazmamc.plazma.configurations.GlobalConfiguration.get().structure.netherPortal.width.min() && i <= org.plazmamc.plazma.configurations.GlobalConfiguration.get().structure.netherPortal.width.max() ? i : 0; // Plazma - Configurable nether portal size
|
||||||
|
}
|
||||||
|
|
||||||
|
private static int getDistanceUntilEdgeAboveFrame(BlockGetter iblockaccess, BlockPos blockposition, Direction enumdirection, BlockStateListPopulator blocks) { // CraftBukkit
|
||||||
|
@@ -146,7 +146,7 @@ public class PortalShape {
|
||||||
|
BlockPos.MutableBlockPos blockposition_mutableblockposition = new BlockPos.MutableBlockPos();
|
||||||
|
int j = PortalShape.getDistanceUntilTop(iblockaccess, blockposition, enumdirection, blockposition_mutableblockposition, i, mutableint, blocks); // CraftBukkit
|
||||||
|
|
||||||
|
- return j >= 3 && j <= 21 && PortalShape.hasTopFrame(iblockaccess, blockposition, enumdirection, blockposition_mutableblockposition, i, j, blocks) ? j : 0; // CraftBukkit
|
||||||
|
+ return j >= org.plazmamc.plazma.configurations.GlobalConfiguration.get().structure.netherPortal.height.min() && j <= org.plazmamc.plazma.configurations.GlobalConfiguration.get().structure.netherPortal.height.max() && PortalShape.hasTopFrame(iblockaccess, blockposition, enumdirection, blockposition_mutableblockposition, i, j, blocks) ? j : 0; // Craftbukkit // Plazma - Configurable nether portal size
|
||||||
|
}
|
||||||
|
|
||||||
|
private static boolean hasTopFrame(BlockGetter iblockaccess, BlockPos blockposition, Direction enumdirection, BlockPos.MutableBlockPos blockposition_mutableblockposition, int i, int j, BlockStateListPopulator blocks) { // CraftBukkit
|
||||||
|
@@ -200,7 +200,7 @@ public class PortalShape {
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isValid() {
|
||||||
|
- return this.width >= 2 && this.width <= 21 && this.height >= 3 && this.height <= 21;
|
||||||
|
+ return this.width >= org.plazmamc.plazma.configurations.GlobalConfiguration.get().structure.netherPortal.width.min() && this.width <= org.plazmamc.plazma.configurations.GlobalConfiguration.get().structure.netherPortal.width.max() && this.height >= org.plazmamc.plazma.configurations.GlobalConfiguration.get().structure.netherPortal.height.min() && this.height <= org.plazmamc.plazma.configurations.GlobalConfiguration.get().structure.netherPortal.height.max(); // Plazma - Configurable nether portal size
|
||||||
|
}
|
||||||
|
|
||||||
|
// CraftBukkit start - return boolean, add entity
|
||||||
|
diff --git a/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java b/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java
|
||||||
|
index a8586f1bd161ad3470ae7f0590f1bba0cf627bd0..b3fccda131e51b03b1617b028f8d7488db342f24 100644
|
||||||
|
--- a/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java
|
||||||
|
+++ b/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java
|
||||||
|
@@ -60,6 +60,26 @@ public class GlobalConfiguration extends ConfigurationPart {
|
||||||
|
public Structure structure;
|
||||||
|
public class Structure extends ConfigurationPart {
|
||||||
|
|
||||||
|
+ public NetherPortal netherPortal;
|
||||||
|
+ public class NetherPortal extends ConfigurationPart {
|
||||||
|
+
|
||||||
|
+ public Width width;
|
||||||
|
+ public class Width extends ConfigurationPart {
|
||||||
|
+
|
||||||
|
+ int min = 2; public int min() { return Math.max(this.min, 1); }
|
||||||
|
+ int max = 21; public int max() { return Math.max(this.min, this.max); }
|
||||||
|
+
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ public Height height;
|
||||||
|
+ public class Height extends ConfigurationPart {
|
||||||
|
+
|
||||||
|
+ int min = 3; public int min() { return Math.max(this.min, 2); }
|
||||||
|
+ int max = 21; public int max() { return Math.max(this.min, this.max); }
|
||||||
|
+
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ }
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
diff --git a/src/main/java/org/plazmamc/plazma/configurations/WorldConfigurations.java b/src/main/java/org/plazmamc/plazma/configurations/WorldConfigurations.java
|
||||||
|
index 8dce68cf7769fcd5ea03be32621ccb6bab174697..e50118ec7a4c00bd367ca6c740214c53b0d60fc9 100644
|
||||||
|
--- a/src/main/java/org/plazmamc/plazma/configurations/WorldConfigurations.java
|
||||||
|
+++ b/src/main/java/org/plazmamc/plazma/configurations/WorldConfigurations.java
|
||||||
|
@@ -36,17 +36,6 @@ public class WorldConfigurations extends ConfigurationPart {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
- public Structure structure;
|
||||||
|
- public class Structure extends ConfigurationPart {
|
||||||
|
-
|
||||||
|
- public NetherPortal netherPortal;
|
||||||
|
- public class NetherPortal extends ConfigurationPart {
|
||||||
|
-
|
||||||
|
-
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
public Block block;
|
||||||
|
public class Block extends ConfigurationPart {
|
||||||
|
|
||||||
@@ -1,40 +0,0 @@
|
|||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: AlphaKR93 <dev@alpha93.kr>
|
|
||||||
Date: Thu, 23 Mar 2023 21:35:15 +0900
|
|
||||||
Subject: [PATCH] Add permission to bypass reducedDebugInfo gamerule
|
|
||||||
|
|
||||||
|
|
||||||
diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java
|
|
||||||
index 824f31b68b38f2f8642fb9d59a123cfdaffbb7b2..86932974a9101779691de336a8c45c464158fca8 100644
|
|
||||||
--- a/src/main/java/net/minecraft/server/players/PlayerList.java
|
|
||||||
+++ b/src/main/java/net/minecraft/server/players/PlayerList.java
|
|
||||||
@@ -282,7 +282,7 @@ public abstract class PlayerList {
|
|
||||||
ServerGamePacketListenerImpl playerconnection = new ServerGamePacketListenerImpl(this.server, connection, player);
|
|
||||||
GameRules gamerules = worldserver1.getGameRules();
|
|
||||||
boolean flag = gamerules.getBoolean(GameRules.RULE_DO_IMMEDIATE_RESPAWN);
|
|
||||||
- boolean flag1 = gamerules.getBoolean(GameRules.RULE_REDUCEDDEBUGINFO);
|
|
||||||
+ boolean flag1 = gamerules.getBoolean(GameRules.RULE_REDUCEDDEBUGINFO) && !(org.plazmamc.plazma.configurations.GlobalConfiguration.get().player.enableBypassReducedDebugInfoPermission && player.getBukkitEntity().hasPermission("plazma.bypass-reduced-debug-info-gamerule")); // Plazma
|
|
||||||
|
|
||||||
// Spigot - view distance
|
|
||||||
playerconnection.send(new ClientboundLoginPacket(player.getId(), worlddata.isHardcore(), player.gameMode.getGameModeForPlayer(), player.gameMode.getPreviousGameModeForPlayer(), this.server.levelKeys(), this.synchronizedRegistries, worldserver1.dimensionTypeId(), worldserver1.dimension(), BiomeManager.obfuscateSeed(worldserver1.getSeed()), this.getMaxPlayers(), worldserver1.getWorld().getSendViewDistance(), worldserver1.getWorld().getSimulationDistance(), flag1, !flag, worldserver1.isDebug(), worldserver1.isFlat(), player.getLastDeathLocation(), player.getPortalCooldown())); // Paper - replace old player chunk management
|
|
||||||
@@ -1315,7 +1315,7 @@ public abstract class PlayerList {
|
|
||||||
player.getEntityData().refresh(player); // CraftBukkkit - SPIGOT-7218: sync metadata
|
|
||||||
player.connection.send(new ClientboundSetCarriedItemPacket(player.getInventory().selected));
|
|
||||||
// CraftBukkit start - from GameRules
|
|
||||||
- int i = player.level().getGameRules().getBoolean(GameRules.RULE_REDUCEDDEBUGINFO) ? 22 : 23;
|
|
||||||
+ int i = player.level().getGameRules().getBoolean(GameRules.RULE_REDUCEDDEBUGINFO) && !(org.plazmamc.plazma.configurations.GlobalConfiguration.get().player.enableBypassReducedDebugInfoPermission && player.getBukkitEntity().hasPermission("plazma.bypass-reduced-debug-info-gamerule")) ? 22 : 23;
|
|
||||||
player.connection.send(new ClientboundEntityEventPacket(player, (byte) i));
|
|
||||||
float immediateRespawn = player.level().getGameRules().getBoolean(GameRules.RULE_DO_IMMEDIATE_RESPAWN) ? 1.0F: 0.0F;
|
|
||||||
player.connection.send(new ClientboundGameEventPacket(ClientboundGameEventPacket.IMMEDIATE_RESPAWN, immediateRespawn));
|
|
||||||
diff --git a/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java b/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java
|
|
||||||
index a45ff31d08129c0d5f159615d934a4450d54146e..4f54ae58bd20481f02aaec3f8406996a5e01b24f 100644
|
|
||||||
--- a/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java
|
|
||||||
+++ b/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java
|
|
||||||
@@ -33,6 +33,7 @@ public class GlobalConfiguration extends ConfigurationPart {
|
|
||||||
public class Player extends ConfigurationPart {
|
|
||||||
|
|
||||||
public boolean allowAnyUsername = false;
|
|
||||||
+ public boolean enableBypassReducedDebugInfoPermission = true; // TODO: Move to Player.Permissions class
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
33
patches/server/0016-Apply-various-optimizations.patch
Normal file
33
patches/server/0016-Apply-various-optimizations.patch
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: AlphaKR93 <dev@alpha93.kr>
|
||||||
|
Date: Wed, 27 Sep 2023 22:11:15 +0900
|
||||||
|
Subject: [PATCH] Apply various optimizations
|
||||||
|
|
||||||
|
[REFERENCE PATCHES]
|
||||||
|
Akarin - Swaps the predicate order of collision
|
||||||
|
|
||||||
|
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
|
||||||
|
index 6b32cd1391f39b6fe61c3c8c00249d1d4278cbd0..b94f3e2071e71b2b038e875b25c985b0c7c00fc0 100644
|
||||||
|
--- a/src/main/java/net/minecraft/world/entity/Entity.java
|
||||||
|
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
|
||||||
|
@@ -2341,8 +2341,9 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
|
||||||
|
public void playerTouch(Player player) {}
|
||||||
|
|
||||||
|
public void push(Entity entity) {
|
||||||
|
+ if (entity.noPhysics || this.noPhysics) return; // Plazma - Swaps the predicate order of collision
|
||||||
|
if (!this.isPassengerOfSameVehicle(entity)) {
|
||||||
|
- if (!entity.noPhysics && !this.noPhysics) {
|
||||||
|
+ //if (!entity.noPhysics && !this.noPhysics) { // Plazma - Swaps the predicate order of collision
|
||||||
|
if (this.level.paperConfig().collisions.onlyPlayersCollide && !(entity instanceof ServerPlayer || this instanceof ServerPlayer)) return; // Paper - Collision option for requiring a player participant
|
||||||
|
double d0 = entity.getX() - this.getX();
|
||||||
|
double d1 = entity.getZ() - this.getZ();
|
||||||
|
@@ -2370,8 +2371,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
|
||||||
|
entity.push(d0, 0.0D, d1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
-
|
||||||
|
- }
|
||||||
|
+ //} // Plazma - Swaps the predicate order of collision
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: AlphaKR93 <dev@alpha93.kr>
|
||||||
|
Date: Sun, 5 Nov 2023 12:07:06 +0900
|
||||||
|
Subject: [PATCH] Do not load chunks to spawn phantom
|
||||||
|
|
||||||
|
|
||||||
|
diff --git a/src/main/java/net/minecraft/world/level/levelgen/PhantomSpawner.java b/src/main/java/net/minecraft/world/level/levelgen/PhantomSpawner.java
|
||||||
|
index 27eb9a365006884c85603dc6d9dd8eee009c98b3..958a48d05aba8e500c7b19a466dcca6fea8a8bcc 100644
|
||||||
|
--- a/src/main/java/net/minecraft/world/level/levelgen/PhantomSpawner.java
|
||||||
|
+++ b/src/main/java/net/minecraft/world/level/levelgen/PhantomSpawner.java
|
||||||
|
@@ -70,6 +70,7 @@ public class PhantomSpawner implements CustomSpawner {
|
||||||
|
|
||||||
|
if (randomsource.nextInt(j) >= world.paperConfig().entities.behavior.playerInsomniaStartTicks) { // Paper - Ability to control player's insomnia and phantoms
|
||||||
|
BlockPos blockposition1 = blockposition.above(20 + randomsource.nextInt(15)).east(-10 + randomsource.nextInt(21)).south(-10 + randomsource.nextInt(21));
|
||||||
|
+ if (!world.plazmaConfig().entity.phantom.loadChunksToSpawn && !world.hasChunkAt(blockposition1)) continue; // Plazma - Do not load chunks to spawn phantom
|
||||||
|
BlockState iblockdata = world.getBlockState(blockposition1);
|
||||||
|
FluidState fluid = world.getFluidState(blockposition1);
|
||||||
|
|
||||||
|
diff --git a/src/main/java/org/plazmamc/plazma/configurations/WorldConfigurations.java b/src/main/java/org/plazmamc/plazma/configurations/WorldConfigurations.java
|
||||||
|
index e50118ec7a4c00bd367ca6c740214c53b0d60fc9..4d204a0dc976d96c98764092c8461b0e2b920fc1 100644
|
||||||
|
--- a/src/main/java/org/plazmamc/plazma/configurations/WorldConfigurations.java
|
||||||
|
+++ b/src/main/java/org/plazmamc/plazma/configurations/WorldConfigurations.java
|
||||||
|
@@ -31,6 +31,7 @@ public class WorldConfigurations extends ConfigurationPart {
|
||||||
|
public Phantom phantom;
|
||||||
|
public class Phantom extends ConfigurationPart {
|
||||||
|
|
||||||
|
+ public boolean loadChunksToSpawn = !OPTIMIZE;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
@@ -1,32 +0,0 @@
|
|||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: AlphaKR93 <dev@alpha93.kr>
|
|
||||||
Date: Sat, 25 Mar 2023 00:04:41 +0900
|
|
||||||
Subject: [PATCH] Structure Configuration
|
|
||||||
|
|
||||||
|
|
||||||
diff --git a/src/main/java/org/plazmamc/plazma/configurations/LevelConfigurations.java b/src/main/java/org/plazmamc/plazma/configurations/LevelConfigurations.java
|
|
||||||
index 7df971a1bd47862918f4c7342eae19226c4c9fbe..b1a75e865e61f9cdfb6a6a57cbab3db1f2a709d3 100644
|
|
||||||
--- a/src/main/java/org/plazmamc/plazma/configurations/LevelConfigurations.java
|
|
||||||
+++ b/src/main/java/org/plazmamc/plazma/configurations/LevelConfigurations.java
|
|
||||||
@@ -30,4 +30,21 @@ public class LevelConfigurations extends ConfigurationPart {
|
|
||||||
public int maxChunksPerTick = 5;
|
|
||||||
|
|
||||||
}
|
|
||||||
+
|
|
||||||
+ public Structure structure;
|
|
||||||
+ public class Structure extends ConfigurationPart {
|
|
||||||
+
|
|
||||||
+ public Portal portal;
|
|
||||||
+ public class Portal extends ConfigurationPart {
|
|
||||||
+
|
|
||||||
+ public NetherPortal netherPortal;
|
|
||||||
+ public class NetherPortal extends ConfigurationPart {
|
|
||||||
+
|
|
||||||
+
|
|
||||||
+
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ }
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,37 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: AlphaKR93 <dev@alpha93.kr>
|
||||||
|
Date: Sun, 5 Nov 2023 12:16:14 +0900
|
||||||
|
Subject: [PATCH] Add option to disable moved to quickly check for specific
|
||||||
|
players
|
||||||
|
|
||||||
|
|
||||||
|
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
||||||
|
index 61b19f52aeb371abdd29f41291099f35a9b4c258..dcb0a4461a2fca964e4d8390401e463648ed3351 100644
|
||||||
|
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
||||||
|
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
||||||
|
@@ -1694,7 +1694,13 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
+ // Plazma start - Add option to bypass moved to quickly check
|
||||||
|
private boolean shouldCheckPlayerMovement(boolean elytra) {
|
||||||
|
+ return (!this.player.getBukkitEntity().hasPermission("plazma.bypass-moved-to-quickly-check") || !(org.plazmamc.plazma.configurations.GlobalConfiguration.get().player.checkSpectatorMovedToQuickly && this.player.isSpectator())) && shouldCheckPlayerMovement0(elytra);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ private boolean shouldCheckPlayerMovement0(boolean elytra) {
|
||||||
|
+ // Plazma end - Add option to bypass moved to quickly check
|
||||||
|
if (this.isSingleplayerOwner()) {
|
||||||
|
return false;
|
||||||
|
} else if (this.player.isChangingDimension()) {
|
||||||
|
diff --git a/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java b/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java
|
||||||
|
index b3fccda131e51b03b1617b028f8d7488db342f24..6fd1f1c859a6e6cea780d9dfa9a2770d59ddfd04 100644
|
||||||
|
--- a/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java
|
||||||
|
+++ b/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java
|
||||||
|
@@ -27,6 +27,7 @@ public class GlobalConfiguration extends ConfigurationPart {
|
||||||
|
public Player player;
|
||||||
|
public class Player extends ConfigurationPart {
|
||||||
|
|
||||||
|
+ public boolean checkSpectatorMovedToQuickly = !OPTIMIZE;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
@@ -1,85 +0,0 @@
|
|||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: AlphaKR93 <dev@alpha93.kr>
|
|
||||||
Date: Sat, 25 Mar 2023 00:10:52 +0900
|
|
||||||
Subject: [PATCH] Configurable nether portal size
|
|
||||||
|
|
||||||
|
|
||||||
diff --git a/src/main/java/net/minecraft/world/level/portal/PortalShape.java b/src/main/java/net/minecraft/world/level/portal/PortalShape.java
|
|
||||||
index e7554ec800f321e4e34c926c53f2375a8c3aa979..677f546cee0ebda24a6e77cb5fedd41078c7fff4 100644
|
|
||||||
--- a/src/main/java/net/minecraft/world/level/portal/PortalShape.java
|
|
||||||
+++ b/src/main/java/net/minecraft/world/level/portal/PortalShape.java
|
|
||||||
@@ -100,7 +100,7 @@ public class PortalShape {
|
|
||||||
private int calculateWidth() {
|
|
||||||
int i = this.getDistanceUntilEdgeAboveFrame(this.bottomLeft, this.rightDir);
|
|
||||||
|
|
||||||
- return i >= 2 && i <= 21 ? i : 0;
|
|
||||||
+ return i >= this.level.getMinecraftWorld().plazmaLevelConfiguration().structure.portal.netherPortal.size.width.min() && i <= this.level.getMinecraftWorld().plazmaLevelConfiguration().structure.portal.netherPortal.size.width.max() ? i : 0; // Plazma
|
|
||||||
}
|
|
||||||
|
|
||||||
private int getDistanceUntilEdgeAboveFrame(BlockPos pos, Direction direction) {
|
|
||||||
@@ -133,7 +133,7 @@ public class PortalShape {
|
|
||||||
BlockPos.MutableBlockPos blockposition_mutableblockposition = new BlockPos.MutableBlockPos();
|
|
||||||
int i = this.getDistanceUntilTop(blockposition_mutableblockposition);
|
|
||||||
|
|
||||||
- return i >= 3 && i <= 21 && this.hasTopFrame(blockposition_mutableblockposition, i) ? i : 0;
|
|
||||||
+ return i >= this.level.getMinecraftWorld().plazmaLevelConfiguration().structure.portal.netherPortal.size.height.min() && i <= this.level.getMinecraftWorld().plazmaLevelConfiguration().structure.portal.netherPortal.size.height.max() && this.hasTopFrame(blockposition_mutableblockposition, i) ? i : 0; // Plazma
|
|
||||||
}
|
|
||||||
|
|
||||||
private boolean hasTopFrame(BlockPos.MutableBlockPos pos, int height) {
|
|
||||||
@@ -187,7 +187,7 @@ public class PortalShape {
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isValid() {
|
|
||||||
- return this.bottomLeft != null && this.width >= 2 && this.width <= 21 && this.height >= 3 && this.height <= 21;
|
|
||||||
+ return this.bottomLeft != null && this.width >= this.level.getMinecraftWorld().plazmaLevelConfiguration().structure.portal.netherPortal.size.width.min() && this.width <= this.level.getMinecraftWorld().plazmaLevelConfiguration().structure.portal.netherPortal.size.width.max() && this.height >= this.level.getMinecraftWorld().plazmaLevelConfiguration().structure.portal.netherPortal.size.height.min() && this.height <= this.level.getMinecraftWorld().plazmaLevelConfiguration().structure.portal.netherPortal.size.height.max(); // Plazma
|
|
||||||
}
|
|
||||||
|
|
||||||
// CraftBukkit start - return boolean
|
|
||||||
diff --git a/src/main/java/org/plazmamc/plazma/configurations/LevelConfigurations.java b/src/main/java/org/plazmamc/plazma/configurations/LevelConfigurations.java
|
|
||||||
index b1a75e865e61f9cdfb6a6a57cbab3db1f2a709d3..3ca0f64bf5dcf104a84db91f22fae75790468052 100644
|
|
||||||
--- a/src/main/java/org/plazmamc/plazma/configurations/LevelConfigurations.java
|
|
||||||
+++ b/src/main/java/org/plazmamc/plazma/configurations/LevelConfigurations.java
|
|
||||||
@@ -40,7 +40,43 @@ public class LevelConfigurations extends ConfigurationPart {
|
|
||||||
public NetherPortal netherPortal;
|
|
||||||
public class NetherPortal extends ConfigurationPart {
|
|
||||||
|
|
||||||
+ public Size size;
|
|
||||||
+ public class Size extends ConfigurationPart {
|
|
||||||
|
|
||||||
+ public Width width;
|
|
||||||
+ public Height height;
|
|
||||||
+
|
|
||||||
+ public class Width extends ConfigurationPart {
|
|
||||||
+
|
|
||||||
+ int min = 2;
|
|
||||||
+ int max = 21;
|
|
||||||
+
|
|
||||||
+ public int min() {
|
|
||||||
+ return Math.max(this.min, 1);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ public int max() {
|
|
||||||
+ return Math.max(this.min, this.max);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ public class Height extends ConfigurationPart {
|
|
||||||
+
|
|
||||||
+ int min = 3;
|
|
||||||
+ int max = 21;
|
|
||||||
+
|
|
||||||
+ public int min() {
|
|
||||||
+ return Math.max(this.min, 2);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ public int max() {
|
|
||||||
+ return Math.max(this.min, this.max);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ }
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
63
patches/server/0019-Configurable-cave-lava-sea-level.patch
Normal file
63
patches/server/0019-Configurable-cave-lava-sea-level.patch
Normal file
@@ -0,0 +1,63 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: AlphaKR93 <dev@alpha93.kr>
|
||||||
|
Date: Tue, 7 Nov 2023 15:32:24 +0900
|
||||||
|
Subject: [PATCH] Configurable cave lava sea level
|
||||||
|
|
||||||
|
This patch also fix MC-237017.
|
||||||
|
|
||||||
|
diff --git a/src/main/java/net/minecraft/world/level/levelgen/NoiseBasedChunkGenerator.java b/src/main/java/net/minecraft/world/level/levelgen/NoiseBasedChunkGenerator.java
|
||||||
|
index 3f39d6c786d9dfdd9ad591e08ff05fcbb41a1df6..0346fd4ab7095d66c0eef5a440afbc7a8ba52466 100644
|
||||||
|
--- a/src/main/java/net/minecraft/world/level/levelgen/NoiseBasedChunkGenerator.java
|
||||||
|
+++ b/src/main/java/net/minecraft/world/level/levelgen/NoiseBasedChunkGenerator.java
|
||||||
|
@@ -71,14 +71,14 @@ public final class NoiseBasedChunkGenerator extends ChunkGenerator {
|
||||||
|
}
|
||||||
|
|
||||||
|
private static Aquifer.FluidPicker createFluidPicker(NoiseGeneratorSettings settings) {
|
||||||
|
- Aquifer.FluidStatus aquifer_b = new Aquifer.FluidStatus(-54, Blocks.LAVA.defaultBlockState());
|
||||||
|
- int i = settings.seaLevel();
|
||||||
|
- Aquifer.FluidStatus aquifer_b1 = new Aquifer.FluidStatus(i, settings.defaultFluid());
|
||||||
|
- Aquifer.FluidStatus aquifer_b2 = new Aquifer.FluidStatus(DimensionType.MIN_Y * 2, Blocks.AIR.defaultBlockState());
|
||||||
|
-
|
||||||
|
- return (j, k, l) -> {
|
||||||
|
- return k < Math.min(-54, i) ? aquifer_b : aquifer_b1;
|
||||||
|
- };
|
||||||
|
+ // Plazma start - Configurable default lava sea level
|
||||||
|
+ int i = org.plazmamc.plazma.configurations.GlobalConfiguration.get().worldgen.lavaSea.startLevel;
|
||||||
|
+ int j = settings.seaLevel();
|
||||||
|
+ Aquifer.FluidStatus aquifer1 = new Aquifer.FluidStatus(i, org.plazmamc.plazma.configurations.GlobalConfiguration.get().worldgen.lavaSea.seaBlock());
|
||||||
|
+ Aquifer.FluidStatus aquifer2 = new Aquifer.FluidStatus(j, settings.defaultFluid());
|
||||||
|
+
|
||||||
|
+ return (x, y, z) -> y < Math.min(i, j) ? aquifer1 : aquifer2;
|
||||||
|
+ // Plazma end - Configurable default lava sea level
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
diff --git a/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java b/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java
|
||||||
|
index 6fd1f1c859a6e6cea780d9dfa9a2770d59ddfd04..af0ca8b0470c0e66cbc4cc0331219b71d0fa429f 100644
|
||||||
|
--- a/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java
|
||||||
|
+++ b/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java
|
||||||
|
@@ -35,6 +35,24 @@ public class GlobalConfiguration extends ConfigurationPart {
|
||||||
|
public WorldGeneration worldgen;
|
||||||
|
public class WorldGeneration extends ConfigurationPart {
|
||||||
|
|
||||||
|
+ public LavaSea lavaSea;
|
||||||
|
+ public class LavaSea extends ConfigurationPart {
|
||||||
|
+
|
||||||
|
+ public int startLevel = -54;
|
||||||
|
+ String seaBlock = "default";
|
||||||
|
+
|
||||||
|
+ public net.minecraft.world.level.block.state.BlockState seaBlock() {
|
||||||
|
+ if (this.seaBlock.equalsIgnoreCase("default")) return net.minecraft.world.level.block.Blocks.LAVA.defaultBlockState();
|
||||||
|
+ return net.minecraft.core.registries.BuiltInRegistries.BLOCK
|
||||||
|
+ .getOptional(net.minecraft.resources.ResourceLocation.tryParse(this.seaBlock))
|
||||||
|
+ .orElseGet(() -> {
|
||||||
|
+ PlazmaConfigurations.LOGGER.warn("Invalid custom sea level block: {}, defaulting to lava", this.seaBlock);
|
||||||
|
+ return net.minecraft.world.level.block.Blocks.LAVA;
|
||||||
|
+ })
|
||||||
|
+ .defaultBlockState();
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ }
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
@@ -1,40 +0,0 @@
|
|||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: AlphaKR93 <dev@alpha93.kr>
|
|
||||||
Date: Sat, 25 Mar 2023 19:52:12 +0900
|
|
||||||
Subject: [PATCH] Misc configuration
|
|
||||||
|
|
||||||
|
|
||||||
diff --git a/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java b/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java
|
|
||||||
index 4f54ae58bd20481f02aaec3f8406996a5e01b24f..61477d98f10ce7d0ec29d51de8c7a3b42026dd2d 100644
|
|
||||||
--- a/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java
|
|
||||||
+++ b/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java
|
|
||||||
@@ -35,5 +35,12 @@ public class GlobalConfiguration extends ConfigurationPart {
|
|
||||||
public boolean allowAnyUsername = false;
|
|
||||||
public boolean enableBypassReducedDebugInfoPermission = true; // TODO: Move to Player.Permissions class
|
|
||||||
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ public Misc misc;
|
|
||||||
+ public class Misc extends ConfigurationPart {
|
|
||||||
+
|
|
||||||
+
|
|
||||||
+
|
|
||||||
}
|
|
||||||
}
|
|
||||||
diff --git a/src/main/java/org/plazmamc/plazma/configurations/LevelConfigurations.java b/src/main/java/org/plazmamc/plazma/configurations/LevelConfigurations.java
|
|
||||||
index 3ca0f64bf5dcf104a84db91f22fae75790468052..843cf772c18d2e9386bf5a7b1731a86c349d6b98 100644
|
|
||||||
--- a/src/main/java/org/plazmamc/plazma/configurations/LevelConfigurations.java
|
|
||||||
+++ b/src/main/java/org/plazmamc/plazma/configurations/LevelConfigurations.java
|
|
||||||
@@ -82,5 +82,12 @@ public class LevelConfigurations extends ConfigurationPart {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ public Misc misc;
|
|
||||||
+ public class Misc extends ConfigurationPart {
|
|
||||||
+
|
|
||||||
+
|
|
||||||
+
|
|
||||||
}
|
|
||||||
}
|
|
||||||
36
patches/server/0020-Configurable-entity-sensor-tick.patch
Normal file
36
patches/server/0020-Configurable-entity-sensor-tick.patch
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: AlphaKR93 <dev@alpha93.kr>
|
||||||
|
Date: Mon, 6 Nov 2023 11:36:08 +0900
|
||||||
|
Subject: [PATCH] Configurable entity sensor tick
|
||||||
|
|
||||||
|
|
||||||
|
diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java
|
||||||
|
index ff9d23aef4658922692b43a859bd83632fe23612..8e5ad4cd6c8f61661b87dc96ba914c0bcd199879 100644
|
||||||
|
--- a/src/main/java/net/minecraft/world/entity/Mob.java
|
||||||
|
+++ b/src/main/java/net/minecraft/world/entity/Mob.java
|
||||||
|
@@ -949,10 +949,11 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab
|
||||||
|
//ProfilerFiller gameprofilerfiller = Profiler.get(); // Purpur
|
||||||
|
|
||||||
|
//gameprofilerfiller.push("sensing"); // Purpur
|
||||||
|
- this.sensing.tick();
|
||||||
|
+ //this.sensing.tick(); // Plazma - moved down
|
||||||
|
//gameprofilerfiller.pop(); // Purpur
|
||||||
|
int i = this.tickCount + this.getId();
|
||||||
|
|
||||||
|
+ if (i % this.level().plazmaConfig().entity.sensorTick == 0) this.sensing.tick(); // Plazma - Configurable entity sensor tick
|
||||||
|
if (i % 2 != 0 && this.tickCount > 1) {
|
||||||
|
//gameprofilerfiller.push("targetSelector"); // Purpur
|
||||||
|
this.targetSelector.tickRunningGoals(false);
|
||||||
|
diff --git a/src/main/java/org/plazmamc/plazma/configurations/WorldConfigurations.java b/src/main/java/org/plazmamc/plazma/configurations/WorldConfigurations.java
|
||||||
|
index 4d204a0dc976d96c98764092c8461b0e2b920fc1..33bcfec86f83ce6e0ec17436ad38da8aeced48be 100644
|
||||||
|
--- a/src/main/java/org/plazmamc/plazma/configurations/WorldConfigurations.java
|
||||||
|
+++ b/src/main/java/org/plazmamc/plazma/configurations/WorldConfigurations.java
|
||||||
|
@@ -28,6 +28,8 @@ public class WorldConfigurations extends ConfigurationPart {
|
||||||
|
public Entity entity;
|
||||||
|
public class Entity extends ConfigurationPart {
|
||||||
|
|
||||||
|
+ public int sensorTick = 1;
|
||||||
|
+
|
||||||
|
public Phantom phantom;
|
||||||
|
public class Phantom extends ConfigurationPart {
|
||||||
|
|
||||||
@@ -1,176 +0,0 @@
|
|||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: AlphaKR93 <dev@alpha93.kr>
|
|
||||||
Date: Sat, 25 Mar 2023 20:02:59 +0900
|
|
||||||
Subject: [PATCH] Reduce create random instance
|
|
||||||
|
|
||||||
|
|
||||||
diff --git a/src/main/java/net/minecraft/server/commands/SpreadPlayersCommand.java b/src/main/java/net/minecraft/server/commands/SpreadPlayersCommand.java
|
|
||||||
index f5bc3497831877e0c2b7dc1cbd8abe3a67d7695b..d157758282cc79d58134c056c52a43a24d443153 100644
|
|
||||||
--- a/src/main/java/net/minecraft/server/commands/SpreadPlayersCommand.java
|
|
||||||
+++ b/src/main/java/net/minecraft/server/commands/SpreadPlayersCommand.java
|
|
||||||
@@ -65,7 +65,7 @@ public class SpreadPlayersCommand {
|
|
||||||
if (maxY < j) {
|
|
||||||
throw SpreadPlayersCommand.ERROR_INVALID_MAX_HEIGHT.create(maxY, j);
|
|
||||||
} else {
|
|
||||||
- RandomSource randomsource = RandomSource.create();
|
|
||||||
+ RandomSource randomsource = worldserver.plazmaLevelConfiguration().misc.reduceCreateRandomInstance ? worldserver.getRandom() : RandomSource.create(); // Plazma
|
|
||||||
double d0 = (double) (center.x - maxRange);
|
|
||||||
double d1 = (double) (center.y - maxRange);
|
|
||||||
double d2 = (double) (center.x + maxRange);
|
|
||||||
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
|
||||||
index f39b3f1b5b37d1939766952a985684279cb2bf2d..69d22bc9f0087dc419b840c6626746e12f621012 100644
|
|
||||||
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
|
||||||
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
|
||||||
@@ -447,7 +447,7 @@ public class ServerPlayer extends Player {
|
|
||||||
long l = k * k;
|
|
||||||
int i1 = l > 2147483647L ? Integer.MAX_VALUE : (int) l;
|
|
||||||
int j1 = this.getCoprime(i1);
|
|
||||||
- int k1 = RandomSource.create().nextInt(i1);
|
|
||||||
+ int k1 = (worldserver.plazmaLevelConfiguration().misc.reduceCreateRandomInstance ? worldserver.getRandom() : RandomSource.create()).nextInt(i1); // Plazma
|
|
||||||
|
|
||||||
for (int l1 = 0; l1 < i1; ++l1) {
|
|
||||||
int i2 = (k1 + j1 * l1) % i1;
|
|
||||||
@@ -484,7 +484,7 @@ public class ServerPlayer extends Player {
|
|
||||||
long l = k * k;
|
|
||||||
int i1 = l > 2147483647L ? Integer.MAX_VALUE : (int) l;
|
|
||||||
int j1 = this.getCoprime(i1);
|
|
||||||
- int k1 = RandomSource.create().nextInt(i1);
|
|
||||||
+ int k1 = (world.plazmaLevelConfiguration().misc.reduceCreateRandomInstance ? world.getRandom() : RandomSource.create()).nextInt(i1); // Plazma
|
|
||||||
|
|
||||||
for (int l1 = 0; l1 < i1; ++l1) {
|
|
||||||
int i2 = (k1 + j1 * l1) % i1;
|
|
||||||
diff --git a/src/main/java/net/minecraft/server/rcon/thread/QueryThreadGs4.java b/src/main/java/net/minecraft/server/rcon/thread/QueryThreadGs4.java
|
|
||||||
index 1ef089dbf83de35d875c00efdf468c397be56978..dc111e0d1e7303c56cd12fa83be3ff85ab989e1b 100644
|
|
||||||
--- a/src/main/java/net/minecraft/server/rcon/thread/QueryThreadGs4.java
|
|
||||||
+++ b/src/main/java/net/minecraft/server/rcon/thread/QueryThreadGs4.java
|
|
||||||
@@ -349,7 +349,7 @@ public class QueryThreadGs4 extends GenericThread {
|
|
||||||
this.identBytes[2] = bs[5];
|
|
||||||
this.identBytes[3] = bs[6];
|
|
||||||
this.ident = new String(this.identBytes, StandardCharsets.UTF_8);
|
|
||||||
- this.challenge = RandomSource.create().nextInt(16777216);
|
|
||||||
+ this.challenge = org.plazmamc.plazma.configurations.GlobalConfiguration.get().misc.reduceCreateRandomInstance ? java.util.concurrent.ThreadLocalRandom.current().nextInt(16777216) : RandomSource.create().nextInt(16777216); // Plazma
|
|
||||||
this.challengeBytes = String.format(Locale.ROOT, "\t%s%d\u0000", this.ident, this.challenge).getBytes(StandardCharsets.UTF_8);
|
|
||||||
}
|
|
||||||
|
|
||||||
diff --git a/src/main/java/net/minecraft/world/entity/projectile/FishingHook.java b/src/main/java/net/minecraft/world/entity/projectile/FishingHook.java
|
|
||||||
index b8c238287e0639b578170c6fec0d4db5a1a59fe7..9e5eab45d589db16b4f1ec563e40dc3890581bf4 100644
|
|
||||||
--- a/src/main/java/net/minecraft/world/entity/projectile/FishingHook.java
|
|
||||||
+++ b/src/main/java/net/minecraft/world/entity/projectile/FishingHook.java
|
|
||||||
@@ -86,7 +86,7 @@ public class FishingHook extends Projectile {
|
|
||||||
|
|
||||||
private FishingHook(EntityType<? extends FishingHook> type, Level world, int luckOfTheSeaLevel, int lureLevel) {
|
|
||||||
super(type, world);
|
|
||||||
- this.syncronizedRandom = RandomSource.create();
|
|
||||||
+ this.syncronizedRandom = world.plazmaLevelConfiguration().misc.reduceCreateRandomInstance ? world.getRandom() : RandomSource.create(); // Plazma
|
|
||||||
this.openWater = true;
|
|
||||||
this.currentState = FishingHook.FishHookState.FLYING;
|
|
||||||
this.noCulling = true;
|
|
||||||
diff --git a/src/main/java/net/minecraft/world/entity/raid/Raid.java b/src/main/java/net/minecraft/world/entity/raid/Raid.java
|
|
||||||
index f7399737548483905f3b5c08a03876b0da54b714..7ff8e19fcee67a33bbc8603f8c089a5b76ed23b6 100644
|
|
||||||
--- a/src/main/java/net/minecraft/world/entity/raid/Raid.java
|
|
||||||
+++ b/src/main/java/net/minecraft/world/entity/raid/Raid.java
|
|
||||||
@@ -110,7 +110,7 @@ public class Raid {
|
|
||||||
|
|
||||||
public Raid(int id, ServerLevel world, BlockPos pos) {
|
|
||||||
this.raidEvent = new ServerBossEvent(Raid.RAID_NAME_COMPONENT, BossEvent.BossBarColor.RED, BossEvent.BossBarOverlay.NOTCHED_10);
|
|
||||||
- this.random = RandomSource.create();
|
|
||||||
+ this.random = world.plazmaLevelConfiguration().misc.reduceCreateRandomInstance ? world.getRandom() : RandomSource.create(); // Plazma
|
|
||||||
this.waveSpawnPos = Optional.empty();
|
|
||||||
this.id = id;
|
|
||||||
this.level = world;
|
|
||||||
@@ -124,7 +124,7 @@ public class Raid {
|
|
||||||
|
|
||||||
public Raid(ServerLevel world, CompoundTag nbt) {
|
|
||||||
this.raidEvent = new ServerBossEvent(Raid.RAID_NAME_COMPONENT, BossEvent.BossBarColor.RED, BossEvent.BossBarOverlay.NOTCHED_10);
|
|
||||||
- this.random = RandomSource.create();
|
|
||||||
+ this.random = world.plazmaLevelConfiguration().misc.reduceCreateRandomInstance ? world.getRandom() : RandomSource.create(); // Plazma
|
|
||||||
this.waveSpawnPos = Optional.empty();
|
|
||||||
this.level = world;
|
|
||||||
this.id = nbt.getInt("Id");
|
|
||||||
diff --git a/src/main/java/net/minecraft/world/level/Explosion.java b/src/main/java/net/minecraft/world/level/Explosion.java
|
|
||||||
index 4932374ab9a3d8582fb0ef024d817ad896dd23c4..fd9be520b838346555dee2dc13f54dcf0fe0e9d8 100644
|
|
||||||
--- a/src/main/java/net/minecraft/world/level/Explosion.java
|
|
||||||
+++ b/src/main/java/net/minecraft/world/level/Explosion.java
|
|
||||||
@@ -81,7 +81,7 @@ public class Explosion {
|
|
||||||
}
|
|
||||||
|
|
||||||
public Explosion(Level world, @Nullable Entity entity, @Nullable DamageSource damageSource, @Nullable ExplosionDamageCalculator behavior, double x, double y, double z, float power, boolean createFire, Explosion.BlockInteraction destructionType) {
|
|
||||||
- this.random = RandomSource.create();
|
|
||||||
+ this.random = world.plazmaLevelConfiguration().misc.reduceCreateRandomInstance ? world.getRandom() : RandomSource.create(); // Plazma
|
|
||||||
this.toBlow = new ObjectArrayList();
|
|
||||||
this.hitPlayers = Maps.newHashMap();
|
|
||||||
this.level = world;
|
|
||||||
diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java
|
|
||||||
index 6d513c903e06fe79dffdffd02871d00cb958b715..589c58c6057ba5fa9d44796f807b8378ee50d2ee 100644
|
|
||||||
--- a/src/main/java/net/minecraft/world/level/Level.java
|
|
||||||
+++ b/src/main/java/net/minecraft/world/level/Level.java
|
|
||||||
@@ -124,7 +124,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
|
|
||||||
public final Thread thread;
|
|
||||||
private final boolean isDebug;
|
|
||||||
private int skyDarken;
|
|
||||||
- protected int randValue = RandomSource.create().nextInt();
|
|
||||||
+ protected int randValue = org.plazmamc.plazma.configurations.GlobalConfiguration.get().misc.reduceCreateRandomInstance ? java.util.concurrent.ThreadLocalRandom.current().nextInt() : RandomSource.create().nextInt(); // Plazma
|
|
||||||
protected final int addend = 1013904223;
|
|
||||||
protected float oRainLevel;
|
|
||||||
public float rainLevel;
|
|
||||||
diff --git a/src/main/java/net/minecraft/world/level/block/entity/TheEndGatewayBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/TheEndGatewayBlockEntity.java
|
|
||||||
index 7291e4056b8e46ab59b71818388ac55fbb12993f..5e5efeec92f70060b0d409252ceff65691155367 100644
|
|
||||||
--- a/src/main/java/net/minecraft/world/level/block/entity/TheEndGatewayBlockEntity.java
|
|
||||||
+++ b/src/main/java/net/minecraft/world/level/block/entity/TheEndGatewayBlockEntity.java
|
|
||||||
@@ -368,7 +368,7 @@ public class TheEndGatewayBlockEntity extends TheEndPortalBlockEntity {
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void spawnGatewayPortal(ServerLevel world, BlockPos pos, EndGatewayConfiguration config) {
|
|
||||||
- Feature.END_GATEWAY.place(config, world, world.getChunkSource().getGenerator(), RandomSource.create(), pos);
|
|
||||||
+ Feature.END_GATEWAY.place(config, world, world.getChunkSource().getGenerator(), (world.plazmaLevelConfiguration().misc.reduceCreateRandomInstance ? world.getRandom() : RandomSource.create()), pos); // Plazma
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
diff --git a/src/main/java/net/minecraft/world/level/dimension/end/EndDragonFight.java b/src/main/java/net/minecraft/world/level/dimension/end/EndDragonFight.java
|
|
||||||
index 5b333bef255d7ef61c99510837536920c6fb6e8c..6331c068aefcdf07d2c880eef8df07add277f856 100644
|
|
||||||
--- a/src/main/java/net/minecraft/world/level/dimension/end/EndDragonFight.java
|
|
||||||
+++ b/src/main/java/net/minecraft/world/level/dimension/end/EndDragonFight.java
|
|
||||||
@@ -472,7 +472,7 @@ public class EndDragonFight {
|
|
||||||
this.level.registryAccess().registry(Registries.CONFIGURED_FEATURE).flatMap((iregistry) -> {
|
|
||||||
return iregistry.getHolder(EndFeatures.END_GATEWAY_DELAYED);
|
|
||||||
}).ifPresent((holder_c) -> {
|
|
||||||
- ((ConfiguredFeature) holder_c.value()).place(this.level, this.level.getChunkSource().getGenerator(), RandomSource.create(), pos);
|
|
||||||
+ ((ConfiguredFeature) holder_c.value()).place(this.level, this.level.getChunkSource().getGenerator(), (this.level.plazmaLevelConfiguration().misc.reduceCreateRandomInstance ? this.level.getRandom() : RandomSource.create()), pos);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -490,7 +490,7 @@ public class EndDragonFight {
|
|
||||||
this.portalLocation = this.portalLocation.atY(this.level.getMinBuildHeight() + 1);
|
|
||||||
}
|
|
||||||
// Paper end
|
|
||||||
- worldgenendtrophy.place(FeatureConfiguration.NONE, this.level, this.level.getChunkSource().getGenerator(), RandomSource.create(), this.portalLocation);
|
|
||||||
+ worldgenendtrophy.place(FeatureConfiguration.NONE, this.level, this.level.getChunkSource().getGenerator(), (this.level.plazmaLevelConfiguration().misc.reduceCreateRandomInstance ? this.level.getRandom() : RandomSource.create()), this.portalLocation);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Nullable
|
|
||||||
diff --git a/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java b/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java
|
|
||||||
index 61477d98f10ce7d0ec29d51de8c7a3b42026dd2d..3e0d0d21dc73b2a5d033d8bcd43b08866e0d6923 100644
|
|
||||||
--- a/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java
|
|
||||||
+++ b/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java
|
|
||||||
@@ -40,7 +40,7 @@ public class GlobalConfiguration extends ConfigurationPart {
|
|
||||||
public Misc misc;
|
|
||||||
public class Misc extends ConfigurationPart {
|
|
||||||
|
|
||||||
-
|
|
||||||
+ public boolean reduceCreateRandomInstance = DO_OPTIMIZE;
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
diff --git a/src/main/java/org/plazmamc/plazma/configurations/LevelConfigurations.java b/src/main/java/org/plazmamc/plazma/configurations/LevelConfigurations.java
|
|
||||||
index 843cf772c18d2e9386bf5a7b1731a86c349d6b98..14987ceec693397602b5c8e1fe460a6fc212a0ee 100644
|
|
||||||
--- a/src/main/java/org/plazmamc/plazma/configurations/LevelConfigurations.java
|
|
||||||
+++ b/src/main/java/org/plazmamc/plazma/configurations/LevelConfigurations.java
|
|
||||||
@@ -87,7 +87,7 @@ public class LevelConfigurations extends ConfigurationPart {
|
|
||||||
public Misc misc;
|
|
||||||
public class Misc extends ConfigurationPart {
|
|
||||||
|
|
||||||
-
|
|
||||||
+ public boolean reduceCreateRandomInstance = DO_OPTIMIZE;
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,32 +0,0 @@
|
|||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: AlphaKR93 <dev@alpha93.kr>
|
|
||||||
Date: Sat, 25 Mar 2023 20:38:21 +0900
|
|
||||||
Subject: [PATCH] Entity Configuration
|
|
||||||
|
|
||||||
|
|
||||||
diff --git a/src/main/java/org/plazmamc/plazma/configurations/LevelConfigurations.java b/src/main/java/org/plazmamc/plazma/configurations/LevelConfigurations.java
|
|
||||||
index 14987ceec693397602b5c8e1fe460a6fc212a0ee..5dcabaf3fa198a05afc25753f6d062fe7d86972e 100644
|
|
||||||
--- a/src/main/java/org/plazmamc/plazma/configurations/LevelConfigurations.java
|
|
||||||
+++ b/src/main/java/org/plazmamc/plazma/configurations/LevelConfigurations.java
|
|
||||||
@@ -90,4 +90,21 @@ public class LevelConfigurations extends ConfigurationPart {
|
|
||||||
public boolean reduceCreateRandomInstance = DO_OPTIMIZE;
|
|
||||||
|
|
||||||
}
|
|
||||||
+
|
|
||||||
+ public Entity entity;
|
|
||||||
+ public class Entity extends ConfigurationPart {
|
|
||||||
+
|
|
||||||
+ public Monster monster;
|
|
||||||
+ public class Monster extends ConfigurationPart {
|
|
||||||
+
|
|
||||||
+ public Phantom phantom;
|
|
||||||
+ public class Phantom extends ConfigurationPart {
|
|
||||||
+
|
|
||||||
+
|
|
||||||
+
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ }
|
|
||||||
}
|
|
||||||
77
patches/server/0021-Variable-entity-wakeup-duration.patch
Normal file
77
patches/server/0021-Variable-entity-wakeup-duration.patch
Normal file
@@ -0,0 +1,77 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: AlphaKR93 <dev@alpha93.kr>
|
||||||
|
Date: Mon, 4 Dec 2023 23:01:32 +0900
|
||||||
|
Subject: [PATCH] Variable entity wakeup duration
|
||||||
|
|
||||||
|
|
||||||
|
diff --git a/src/main/java/org/plazmamc/plazma/configurations/WorldConfigurations.java b/src/main/java/org/plazmamc/plazma/configurations/WorldConfigurations.java
|
||||||
|
index 33bcfec86f83ce6e0ec17436ad38da8aeced48be..b047af738236be3400d07d46c663017ed39b6f96 100644
|
||||||
|
--- a/src/main/java/org/plazmamc/plazma/configurations/WorldConfigurations.java
|
||||||
|
+++ b/src/main/java/org/plazmamc/plazma/configurations/WorldConfigurations.java
|
||||||
|
@@ -37,6 +37,20 @@ public class WorldConfigurations extends ConfigurationPart {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
+ public WakeUpDurationVariance wakeUpDurationVariance;
|
||||||
|
+ public class WakeUpDurationVariance extends ConfigurationPart {
|
||||||
|
+
|
||||||
|
+ private double defaultValue() {
|
||||||
|
+ return OPTIMIZE ? 0.2 : 0.0;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ double animal = defaultValue(); public double animal() { return Math.max(this.animal, 0.0); }
|
||||||
|
+ double monster = defaultValue(); public double monster() { return Math.max(this.monster, 0.0); }
|
||||||
|
+ double flying = defaultValue(); public double flying() { return Math.max(this.flying, 0.0); }
|
||||||
|
+ double villager = defaultValue(); public double villager() { return Math.max(this.villager, 0.0); }
|
||||||
|
+
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
}
|
||||||
|
|
||||||
|
public Block block;
|
||||||
|
diff --git a/src/main/java/org/spigotmc/ActivationRange.java b/src/main/java/org/spigotmc/ActivationRange.java
|
||||||
|
index 813b8aeb7bf39e03346fd9ca63c4c6498e162965..9843f440d921a61c60df5ec5e6e7ffebc9444b71 100644
|
||||||
|
--- a/src/main/java/org/spigotmc/ActivationRange.java
|
||||||
|
+++ b/src/main/java/org/spigotmc/ActivationRange.java
|
||||||
|
@@ -61,29 +61,37 @@ public class ActivationRange
|
||||||
|
net.minecraft.world.entity.schedule.Activity.PANIC
|
||||||
|
};
|
||||||
|
|
||||||
|
+ // Plazma start - Variable entity wakeup duration
|
||||||
|
+ private static int getWakeUpDuration(net.minecraft.util.RandomSource random, int duration, double deviation) {
|
||||||
|
+ if (deviation == 0) return duration;
|
||||||
|
+ return (int) Math.min(Integer.MAX_VALUE, Math.max(1, Math.round(duration * (1 + deviation * random.nextGaussian()))));
|
||||||
|
+ }
|
||||||
|
+ // Plazma end - Variable entity wakeup duration
|
||||||
|
+
|
||||||
|
private static int checkInactiveWakeup(Entity entity) {
|
||||||
|
Level world = entity.level();
|
||||||
|
SpigotWorldConfig config = world.spigotConfig;
|
||||||
|
+ org.plazmamc.plazma.configurations.WorldConfigurations plazmaConfig = world.plazmaConfig(); // Plazma - Variable entity wakeup duration
|
||||||
|
long inactiveFor = MinecraftServer.currentTick - entity.activatedTick;
|
||||||
|
if (entity.activationType == ActivationType.VILLAGER) {
|
||||||
|
if (inactiveFor > config.wakeUpInactiveVillagersEvery && world.wakeupInactiveRemainingVillagers > 0) {
|
||||||
|
world.wakeupInactiveRemainingVillagers--;
|
||||||
|
- return config.wakeUpInactiveVillagersFor;
|
||||||
|
+ return getWakeUpDuration(world.getRandom(), config.wakeUpInactiveVillagersFor, plazmaConfig.entity.wakeUpDurationVariance.villager()); // Plazma - Variable entity wakeup duration
|
||||||
|
}
|
||||||
|
} else if (entity.activationType == ActivationType.ANIMAL) {
|
||||||
|
if (inactiveFor > config.wakeUpInactiveAnimalsEvery && world.wakeupInactiveRemainingAnimals > 0) {
|
||||||
|
world.wakeupInactiveRemainingAnimals--;
|
||||||
|
- return config.wakeUpInactiveAnimalsFor;
|
||||||
|
+ return getWakeUpDuration(world.getRandom(), config.wakeUpInactiveAnimalsFor, plazmaConfig.entity.wakeUpDurationVariance.animal()); // Plazma - Variable entity wakeup duration
|
||||||
|
}
|
||||||
|
} else if (entity.activationType == ActivationType.FLYING_MONSTER) {
|
||||||
|
if (inactiveFor > config.wakeUpInactiveFlyingEvery && world.wakeupInactiveRemainingFlying > 0) {
|
||||||
|
world.wakeupInactiveRemainingFlying--;
|
||||||
|
- return config.wakeUpInactiveFlyingFor;
|
||||||
|
+ return getWakeUpDuration(world.getRandom(), config.wakeUpInactiveFlyingFor, plazmaConfig.entity.wakeUpDurationVariance.flying()); // Plazma - Variable entity wakeup duration
|
||||||
|
}
|
||||||
|
} else if (entity.activationType == ActivationType.MONSTER || entity.activationType == ActivationType.RAIDER) {
|
||||||
|
if (inactiveFor > config.wakeUpInactiveMonstersEvery && world.wakeupInactiveRemainingMonsters > 0) {
|
||||||
|
world.wakeupInactiveRemainingMonsters--;
|
||||||
|
- return config.wakeUpInactiveMonstersFor;
|
||||||
|
+ return getWakeUpDuration(world.getRandom(), config.wakeUpInactiveMonstersFor, plazmaConfig.entity.wakeUpDurationVariance.monster()); // Plazma - Variable entity wakeup duration
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return -1;
|
||||||
@@ -1,20 +1,19 @@
|
|||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
From: AlphaKR93 <dev@alpha93.kr>
|
From: AlphaKR93 <dev@alpha93.kr>
|
||||||
Date: Thu, 29 Jun 2023 05:49:26 +0000
|
Date: Mon, 4 Dec 2023 23:17:15 +0900
|
||||||
Subject: [PATCH] Skip event if no listeners
|
Subject: [PATCH] Skip event if no listeners
|
||||||
|
|
||||||
|
|
||||||
diff --git a/src/main/java/io/papermc/paper/plugin/manager/PaperEventManager.java b/src/main/java/io/papermc/paper/plugin/manager/PaperEventManager.java
|
diff --git a/src/main/java/io/papermc/paper/plugin/manager/PaperEventManager.java b/src/main/java/io/papermc/paper/plugin/manager/PaperEventManager.java
|
||||||
index 7ce9ebba8ce304d1f3f21d4f15ee5f3560d7700b..32305a34bcebd53aa523102a6da59bc2eb765055 100644
|
index 7ce9ebba8ce304d1f3f21d4f15ee5f3560d7700b..23594fb7eb4b2f33146592866608c2858ef23937 100644
|
||||||
--- a/src/main/java/io/papermc/paper/plugin/manager/PaperEventManager.java
|
--- a/src/main/java/io/papermc/paper/plugin/manager/PaperEventManager.java
|
||||||
+++ b/src/main/java/io/papermc/paper/plugin/manager/PaperEventManager.java
|
+++ b/src/main/java/io/papermc/paper/plugin/manager/PaperEventManager.java
|
||||||
@@ -36,15 +36,17 @@ class PaperEventManager {
|
@@ -36,15 +36,16 @@ class PaperEventManager {
|
||||||
|
|
||||||
// SimplePluginManager
|
// SimplePluginManager
|
||||||
public void callEvent(@NotNull Event event) {
|
public void callEvent(@NotNull Event event) {
|
||||||
+ // Plazma start
|
+ // Plazma start - Skip event if no listeners
|
||||||
+ HandlerList handlers = event.getHandlers();
|
+ RegisteredListener[] listeners = event.getHandlers().getRegisteredListeners();
|
||||||
+ RegisteredListener[] listeners = handlers.getRegisteredListeners();
|
|
||||||
+ if (listeners.length == 0) return;
|
+ if (listeners.length == 0) return;
|
||||||
+ // Plazma end
|
+ // Plazma end
|
||||||
if (event.isAsynchronous() && this.server.isPrimaryThread()) {
|
if (event.isAsynchronous() && this.server.isPrimaryThread()) {
|
||||||
@@ -1,108 +0,0 @@
|
|||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: AlphaKR93 <dev@alpha93.kr>
|
|
||||||
Date: Sat, 25 Mar 2023 20:42:23 +0900
|
|
||||||
Subject: [PATCH] Various Optimizations
|
|
||||||
|
|
||||||
[ORIGINAL PATCHES]
|
|
||||||
0007 - Avoid double I/O operation on load player file (Akarin)
|
|
||||||
0008 - Don't trigger Lootable Refresh for non player interaction
|
|
||||||
(Akarin)
|
|
||||||
0011 - Swaps the predicate order of collision (Akarin)
|
|
||||||
|
|
||||||
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
|
|
||||||
index cf0d8da4c4b5f4aa4e4ef15897ca252a2b52ec8d..42c1b7c635cd22125dbb6b4d195976daac0c9ea1 100644
|
|
||||||
--- a/src/main/java/net/minecraft/world/entity/Entity.java
|
|
||||||
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
|
|
||||||
@@ -2145,8 +2145,9 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
|
|
||||||
public void playerTouch(Player player) {}
|
|
||||||
|
|
||||||
public void push(Entity entity) {
|
|
||||||
+ if (entity.noPhysics || this.noPhysics) return; // Plazma
|
|
||||||
if (!this.isPassengerOfSameVehicle(entity)) {
|
|
||||||
- if (!entity.noPhysics && !this.noPhysics) {
|
|
||||||
+ //if (!entity.noPhysics && !this.noPhysics) { // Plazma - moved up
|
|
||||||
if (this.level.paperConfig().collisions.onlyPlayersCollide && !(entity instanceof ServerPlayer || this instanceof ServerPlayer)) return; // Paper
|
|
||||||
double d0 = entity.getX() - this.getX();
|
|
||||||
double d1 = entity.getZ() - this.getZ();
|
|
||||||
@@ -2174,8 +2175,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
|
|
||||||
entity.push(d0, 0.0D, d1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
-
|
|
||||||
- }
|
|
||||||
+ //} // Plazma
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
diff --git a/src/main/java/net/minecraft/world/level/block/entity/RandomizableContainerBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/RandomizableContainerBlockEntity.java
|
|
||||||
index 765ee7f78532a363813286ef7db2a7e48605cb06..47830edd65b7f54a01559c80d28586b91cc07739 100644
|
|
||||||
--- a/src/main/java/net/minecraft/world/level/block/entity/RandomizableContainerBlockEntity.java
|
|
||||||
+++ b/src/main/java/net/minecraft/world/level/block/entity/RandomizableContainerBlockEntity.java
|
|
||||||
@@ -70,6 +70,7 @@ public abstract class RandomizableContainerBlockEntity extends BaseContainerBloc
|
|
||||||
}
|
|
||||||
|
|
||||||
public void unpackLootTable(@Nullable Player player) {
|
|
||||||
+ if (org.plazmamc.plazma.configurations.GlobalConfiguration.get().misc.doNotTriggerLootTableRefreshForNonPlayerInteraction && player == null) return; // Plazma
|
|
||||||
if (this.lootableData.shouldReplenish(player) && this.level.getServer() != null) { // Paper
|
|
||||||
LootTable lootTable = this.level.getServer().getLootData().getLootTable(this.lootTable);
|
|
||||||
if (player instanceof ServerPlayer) {
|
|
||||||
diff --git a/src/main/java/net/minecraft/world/level/levelgen/PhantomSpawner.java b/src/main/java/net/minecraft/world/level/levelgen/PhantomSpawner.java
|
|
||||||
index f74c5eda91a3d521763ec7bc33f23e0c62458cc2..9f1ee01eb9dcb599d1eb453653c7e7479fb24a4c 100644
|
|
||||||
--- a/src/main/java/net/minecraft/world/level/levelgen/PhantomSpawner.java
|
|
||||||
+++ b/src/main/java/net/minecraft/world/level/levelgen/PhantomSpawner.java
|
|
||||||
@@ -71,6 +71,7 @@ public class PhantomSpawner implements CustomSpawner {
|
|
||||||
|
|
||||||
if (randomsource.nextInt(j) >= world.paperConfig().entities.behavior.playerInsomniaStartTicks) { // Paper
|
|
||||||
BlockPos blockposition1 = blockposition.above(20 + randomsource.nextInt(15)).east(-10 + randomsource.nextInt(21)).south(-10 + randomsource.nextInt(21));
|
|
||||||
+ if (world.plazmaLevelConfiguration().entity.monster.phantom.doNotLoadChunksToSpawn && world.hasChunkAt(blockposition1)) continue; // Plazma
|
|
||||||
BlockState iblockdata = world.getBlockState(blockposition1);
|
|
||||||
FluidState fluid = world.getFluidState(blockposition1);
|
|
||||||
|
|
||||||
diff --git a/src/main/java/net/minecraft/world/level/storage/PlayerDataStorage.java b/src/main/java/net/minecraft/world/level/storage/PlayerDataStorage.java
|
|
||||||
index 36af81f0957d17e170d229059c66f4eb4539dfeb..039c952f0c157cba6e79fa9b976958bd1763a922 100644
|
|
||||||
--- a/src/main/java/net/minecraft/world/level/storage/PlayerDataStorage.java
|
|
||||||
+++ b/src/main/java/net/minecraft/world/level/storage/PlayerDataStorage.java
|
|
||||||
@@ -56,7 +56,8 @@ public class PlayerDataStorage {
|
|
||||||
File file = new File(this.playerDir, player.getStringUUID() + ".dat");
|
|
||||||
// Spigot Start
|
|
||||||
boolean usingWrongFile = false;
|
|
||||||
- if ( org.bukkit.Bukkit.getOnlineMode() && !file.exists() ) // Paper - Check online mode first
|
|
||||||
+ boolean normalFile = file.exists() && file.isFile(); // Plazma - Avoid double I/O operation
|
|
||||||
+ if ( org.bukkit.Bukkit.getOnlineMode() && !normalFile ) // Paper - Check online mode first // Plazma - Avoid double I/O operation
|
|
||||||
{
|
|
||||||
file = new File( this.playerDir, java.util.UUID.nameUUIDFromBytes( ( "OfflinePlayer:" + player.getScoreboardName() ).getBytes( "UTF-8" ) ).toString() + ".dat");
|
|
||||||
if ( file.exists() )
|
|
||||||
@@ -67,7 +68,7 @@ public class PlayerDataStorage {
|
|
||||||
}
|
|
||||||
// Spigot End
|
|
||||||
|
|
||||||
- if (file.exists() && file.isFile()) {
|
|
||||||
+ if (normalFile) { // Plazma - Avoid double I/O operation
|
|
||||||
nbttagcompound = NbtIo.readCompressed(file);
|
|
||||||
}
|
|
||||||
// Spigot Start
|
|
||||||
diff --git a/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java b/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java
|
|
||||||
index 3e0d0d21dc73b2a5d033d8bcd43b08866e0d6923..e91b404fca2823748c2ed343cbd83301e55b2f0a 100644
|
|
||||||
--- a/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java
|
|
||||||
+++ b/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java
|
|
||||||
@@ -41,6 +41,7 @@ public class GlobalConfiguration extends ConfigurationPart {
|
|
||||||
public class Misc extends ConfigurationPart {
|
|
||||||
|
|
||||||
public boolean reduceCreateRandomInstance = DO_OPTIMIZE;
|
|
||||||
+ public boolean doNotTriggerLootTableRefreshForNonPlayerInteraction = DO_OPTIMIZE;
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
diff --git a/src/main/java/org/plazmamc/plazma/configurations/LevelConfigurations.java b/src/main/java/org/plazmamc/plazma/configurations/LevelConfigurations.java
|
|
||||||
index 5dcabaf3fa198a05afc25753f6d062fe7d86972e..504913e8e05869f8f0b88f0faaf684d39eb14ea7 100644
|
|
||||||
--- a/src/main/java/org/plazmamc/plazma/configurations/LevelConfigurations.java
|
|
||||||
+++ b/src/main/java/org/plazmamc/plazma/configurations/LevelConfigurations.java
|
|
||||||
@@ -100,7 +100,7 @@ public class LevelConfigurations extends ConfigurationPart {
|
|
||||||
public Phantom phantom;
|
|
||||||
public class Phantom extends ConfigurationPart {
|
|
||||||
|
|
||||||
-
|
|
||||||
+ public boolean doNotLoadChunksToSpawn = DO_OPTIMIZE;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -1,32 +0,0 @@
|
|||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: AlphaKR93 <dev@alpha93.kr>
|
|
||||||
Date: Sat, 25 Mar 2023 20:46:40 +0900
|
|
||||||
Subject: [PATCH] Add configuration to disable moved to quickly check for
|
|
||||||
spectators
|
|
||||||
|
|
||||||
|
|
||||||
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
|
||||||
index 255b422078880b46dfa6f5140f6c92fef057d09e..6b6e7b8fbc0bb8a177affff0d7c7029d571faea2 100644
|
|
||||||
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
|
||||||
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
|
||||||
@@ -1566,7 +1566,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
|
|
||||||
if (!this.player.isChangingDimension() && (!this.player.level().getGameRules().getBoolean(GameRules.RULE_DISABLE_ELYTRA_MOVEMENT_CHECK) || !this.player.isFallFlying())) {
|
|
||||||
float f2 = this.player.isFallFlying() ? 300.0F : 100.0F;
|
|
||||||
|
|
||||||
- if (d10 - d9 > Math.max(f2, Math.pow((double) (org.spigotmc.SpigotConfig.movedTooQuicklyMultiplier * (float) i * speed), 2)) && !this.isSingleplayerOwner()) {
|
|
||||||
+ if (!(this.player.level().plazmaLevelConfiguration().misc.checkSpectatorMovedToQuickly && this.player.isSpectator()) && d10 - d9 > Math.max(f2, Math.pow((double) (org.spigotmc.SpigotConfig.movedTooQuicklyMultiplier * (float) i * speed), 2)) && !this.isSingleplayerOwner()) { // Plazma
|
|
||||||
// CraftBukkit end
|
|
||||||
// Paper start - Add fail move event
|
|
||||||
io.papermc.paper.event.player.PlayerFailMoveEvent event = fireFailMove(io.papermc.paper.event.player.PlayerFailMoveEvent.FailReason.MOVED_TOO_QUICKLY,
|
|
||||||
diff --git a/src/main/java/org/plazmamc/plazma/configurations/LevelConfigurations.java b/src/main/java/org/plazmamc/plazma/configurations/LevelConfigurations.java
|
|
||||||
index 504913e8e05869f8f0b88f0faaf684d39eb14ea7..61c06213b4ceb8e38e9aa41c3517f152d0d669ad 100644
|
|
||||||
--- a/src/main/java/org/plazmamc/plazma/configurations/LevelConfigurations.java
|
|
||||||
+++ b/src/main/java/org/plazmamc/plazma/configurations/LevelConfigurations.java
|
|
||||||
@@ -88,6 +88,7 @@ public class LevelConfigurations extends ConfigurationPart {
|
|
||||||
public class Misc extends ConfigurationPart {
|
|
||||||
|
|
||||||
public boolean reduceCreateRandomInstance = DO_OPTIMIZE;
|
|
||||||
+ public boolean checkSpectatorMovedToQuickly = DO_OPTIMIZE;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
81
patches/server/0023-Add-entity-spawn-deadlock-timer.patch
Normal file
81
patches/server/0023-Add-entity-spawn-deadlock-timer.patch
Normal file
@@ -0,0 +1,81 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: AlphaKR93 <dev@alpha93.kr>
|
||||||
|
Date: Tue, 5 Dec 2023 13:29:28 +0900
|
||||||
|
Subject: [PATCH] Add entity spawn deadlock timer
|
||||||
|
|
||||||
|
[REFERENCE]
|
||||||
|
- AbsolemJackdaw/FixMySpawnR
|
||||||
|
|
||||||
|
diff --git a/src/main/java/net/minecraft/world/level/BaseSpawner.java b/src/main/java/net/minecraft/world/level/BaseSpawner.java
|
||||||
|
index bb4411cfdf1bc7adc12c2f918d2eec830299f38b..357d484029fe338bea4f5770d13ccfc0dce4432e 100644
|
||||||
|
--- a/src/main/java/net/minecraft/world/level/BaseSpawner.java
|
||||||
|
+++ b/src/main/java/net/minecraft/world/level/BaseSpawner.java
|
||||||
|
@@ -50,6 +50,8 @@ public abstract class BaseSpawner {
|
||||||
|
public int requiredPlayerRange = 16;
|
||||||
|
public int spawnRange = 4;
|
||||||
|
private int tickDelay = 0; // Paper - Configurable mob spawner tick rate
|
||||||
|
+ private int blockExistsTick = 0; // Plazma - Add entity spawn deadlock timer
|
||||||
|
+ private boolean blockLockedByTime = false; // Plazma - Add entity spawn deadlock timer
|
||||||
|
|
||||||
|
public BaseSpawner() {}
|
||||||
|
|
||||||
|
@@ -85,6 +87,17 @@ public abstract class BaseSpawner {
|
||||||
|
}
|
||||||
|
|
||||||
|
public void serverTick(ServerLevel world, BlockPos pos) {
|
||||||
|
+ // Plazma start - Add entity spawn deadlock timer
|
||||||
|
+ if (world.plazmaConfig().entity.spawnDeadlockTimer.enabled) {
|
||||||
|
+ if (!this.blockLockedByTime) {
|
||||||
|
+ if (this.blockExistsTick > world.plazmaConfig().entity.spawnDeadlockTimer.timerTimeout)
|
||||||
|
+ blockLockedByTime = true;
|
||||||
|
+ else blockExistsTick++;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (blockLockedByTime && world.getBestNeighborSignal(pos) > 0) return;
|
||||||
|
+ }
|
||||||
|
+ // Plazma end - Add entity spawn deadlock timer
|
||||||
|
if (spawnCount <= 0 || maxNearbyEntities <= 0) return; // Paper - Ignore impossible spawn tick
|
||||||
|
// Paper start - Configurable mob spawner tick rate
|
||||||
|
if (spawnDelay > 0 && --tickDelay > 0) return;
|
||||||
|
@@ -290,6 +303,13 @@ public abstract class BaseSpawner {
|
||||||
|
this.spawnRange = nbt.getShort("SpawnRange");
|
||||||
|
}
|
||||||
|
|
||||||
|
+ // Plazma start - Add entity spawn deadlock timer
|
||||||
|
+ if (nbt.contains("Plazma.SpawnerTicks", 99)) {
|
||||||
|
+ this.blockExistsTick = nbt.getInt("Plazma.SpawnerTicks");
|
||||||
|
+ this.blockLockedByTime = nbt.getBoolean("Plazma.SpawnerLocked");
|
||||||
|
+ }
|
||||||
|
+ // Plazma end - Add entity spawn deadlock timer
|
||||||
|
+
|
||||||
|
this.displayEntity = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -318,6 +338,8 @@ public abstract class BaseSpawner {
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
|
||||||
|
+ nbt.putInt("Plazma.SpawnerTicks", this.blockExistsTick); // Plazma - Add entity spawn deadlock timer
|
||||||
|
+ nbt.putBoolean("Plazma.SpawnerLocked", this.blockLockedByTime); // Plazma - Add entity spawn deadlock timer
|
||||||
|
nbt.put("SpawnPotentials", (Tag) SpawnData.LIST_CODEC.encodeStart(NbtOps.INSTANCE, this.spawnPotentials).getOrThrow());
|
||||||
|
return nbt;
|
||||||
|
}
|
||||||
|
diff --git a/src/main/java/org/plazmamc/plazma/configurations/WorldConfigurations.java b/src/main/java/org/plazmamc/plazma/configurations/WorldConfigurations.java
|
||||||
|
index b047af738236be3400d07d46c663017ed39b6f96..6c9c28ae5fbe62ba647e7790acccb377d1e62490 100644
|
||||||
|
--- a/src/main/java/org/plazmamc/plazma/configurations/WorldConfigurations.java
|
||||||
|
+++ b/src/main/java/org/plazmamc/plazma/configurations/WorldConfigurations.java
|
||||||
|
@@ -51,6 +51,14 @@ public class WorldConfigurations extends ConfigurationPart {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
+ public SpawnDeadlockTimer spawnDeadlockTimer;
|
||||||
|
+ public class SpawnDeadlockTimer extends ConfigurationPart {
|
||||||
|
+
|
||||||
|
+ public boolean enabled = OPTIMIZE;
|
||||||
|
+ public int timerTimeout = 0;
|
||||||
|
+
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
}
|
||||||
|
|
||||||
|
public Block block;
|
||||||
@@ -1,471 +0,0 @@
|
|||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: AlphaKR93 <dev@alpha93.kr>
|
|
||||||
Date: Sat, 25 Mar 2023 21:50:25 +0900
|
|
||||||
Subject: [PATCH] Apply faster random
|
|
||||||
|
|
||||||
|
|
||||||
diff --git a/src/main/java/com/destroystokyo/paper/loottable/PaperLootableInventoryData.java b/src/main/java/com/destroystokyo/paper/loottable/PaperLootableInventoryData.java
|
|
||||||
index 5408cbc21fc7577a6100b5a1ca0463e899d2df8b..4f264e098e7907c397f09ee23a579ed7da494edc 100644
|
|
||||||
--- a/src/main/java/com/destroystokyo/paper/loottable/PaperLootableInventoryData.java
|
|
||||||
+++ b/src/main/java/com/destroystokyo/paper/loottable/PaperLootableInventoryData.java
|
|
||||||
@@ -16,7 +16,7 @@ import java.util.UUID;
|
|
||||||
|
|
||||||
public class PaperLootableInventoryData {
|
|
||||||
|
|
||||||
- private static final Random RANDOM = new Random();
|
|
||||||
+ private static final Random RANDOM = Boolean.getBoolean("Plazma.doNotUseFasterRandom") ? new Random() : new org.plazmamc.plazma.Random(); // Plazma
|
|
||||||
|
|
||||||
private long lastFill = -1;
|
|
||||||
private long nextRefill = -1;
|
|
||||||
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
|
|
||||||
index 0acbaa18a61d1cfdb894c6c756d2b9bdc3599b82..93ff3ef401d4212cede5290990528988c7ca3a0c 100644
|
|
||||||
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
|
|
||||||
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
|
|
||||||
@@ -691,7 +691,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
|
||||||
ChunkPos chunkcoordintpair = new ChunkPos(chunkproviderserver.randomState().sampler().findSpawnPosition());
|
|
||||||
// CraftBukkit start
|
|
||||||
if (world.generator != null) {
|
|
||||||
- Random rand = new Random(world.getSeed());
|
|
||||||
+ Random rand = Boolean.getBoolean("Plazma.doNotUseFasterRandom") ? new Random() : new org.plazmamc.plazma.Random(); rand.setSeed(world.getSeed()); // Plazma
|
|
||||||
org.bukkit.Location spawn = world.generator.getFixedSpawnLocation(world.getWorld(), rand);
|
|
||||||
|
|
||||||
if (spawn != null) {
|
|
||||||
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
|
||||||
index 1392e483c363e25d1f16465d876cb7d7c70afa68..f4b99ffec5c84a5fa1f90060ec15d09b08239d49 100644
|
|
||||||
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
|
||||||
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
|
||||||
@@ -229,7 +229,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
|
|
||||||
}
|
|
||||||
// Paper end
|
|
||||||
|
|
||||||
- private static final Random rand = new Random();
|
|
||||||
+ private static final Random rand = Boolean.getBoolean("Plazma.doNotUseFasterRandom") ? new Random() : new org.plazmamc.plazma.Random(); // Plazma
|
|
||||||
|
|
||||||
public CraftWorld(ServerLevel world, ChunkGenerator gen, BiomeProvider biomeProvider, Environment env) {
|
|
||||||
this.world = world;
|
|
||||||
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftFirework.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftFirework.java
|
|
||||||
index 68c5af9b67a2834ee6e2f80ceefa19c3a982b8ed..7cd8a12ad560626ad3965bd46a5a71168ce6bf80 100644
|
|
||||||
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftFirework.java
|
|
||||||
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftFirework.java
|
|
||||||
@@ -14,7 +14,7 @@ import org.bukkit.inventory.meta.FireworkMeta;
|
|
||||||
|
|
||||||
public class CraftFirework extends CraftProjectile implements Firework {
|
|
||||||
|
|
||||||
- private final Random random = new Random();
|
|
||||||
+ private final Random random = Boolean.getBoolean("Plazma.doNotUseFasterRandom") ? new Random() : new org.plazmamc.plazma.Random(); // Plazma
|
|
||||||
//private CraftItemStack item; // Paper - Remove usage, not accurate representation of current item.
|
|
||||||
|
|
||||||
public CraftFirework(CraftServer server, FireworkRocketEntity entity) {
|
|
||||||
diff --git a/src/main/java/org/bukkit/craftbukkit/generator/CustomChunkGenerator.java b/src/main/java/org/bukkit/craftbukkit/generator/CustomChunkGenerator.java
|
|
||||||
index c3972ba41ad61af4c423e6f942ac984dc61716f0..f7b53cf1161e53d49ec2b72fed2473c1814159cd 100644
|
|
||||||
--- a/src/main/java/org/bukkit/craftbukkit/generator/CustomChunkGenerator.java
|
|
||||||
+++ b/src/main/java/org/bukkit/craftbukkit/generator/CustomChunkGenerator.java
|
|
||||||
@@ -48,7 +48,7 @@ public class CustomChunkGenerator extends InternalChunkGenerator {
|
|
||||||
private final net.minecraft.world.level.chunk.ChunkGenerator delegate;
|
|
||||||
private final ChunkGenerator generator;
|
|
||||||
private final ServerLevel world;
|
|
||||||
- private final Random random = new Random();
|
|
||||||
+ private final Random random = Boolean.getBoolean("Plazma.doNotUseFasterRandom") ? new Random() : new org.plazmamc.plazma.Random(); // Plazma
|
|
||||||
private boolean newApi;
|
|
||||||
private boolean implementBaseHeight = true;
|
|
||||||
|
|
||||||
diff --git a/src/main/java/org/plazmamc/plazma/Random.java b/src/main/java/org/plazmamc/plazma/Random.java
|
|
||||||
new file mode 100644
|
|
||||||
index 0000000000000000000000000000000000000000..e72e96be3938bdcc1ae1aa94f7465f644e1b3e16
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/src/main/java/org/plazmamc/plazma/Random.java
|
|
||||||
@@ -0,0 +1,394 @@
|
|
||||||
+package org.plazmamc.plazma;
|
|
||||||
+
|
|
||||||
+/**
|
|
||||||
+ + This is a faster implementation of java.util.Random
|
|
||||||
+ + Code from <a href="https://gist.github.com/Xyene/4637619">...</a> by Xyene
|
|
||||||
+ + Licensed unser GNU LGPL v3.0
|
|
||||||
+ + <p>
|
|
||||||
+ * A random number generator based on the simple and fast xor-shift pseudo
|
|
||||||
+ * random number generator (RNG) specified in:
|
|
||||||
+ * Marsaglia, George. (2003). Xorshift RNGs.
|
|
||||||
+ * <a href="http://www.jstatsoft.org/v08/i14/xorshift.pdf">...</a>
|
|
||||||
+ * Translated from:
|
|
||||||
+ * <a href="http://www.codeproject.com/Articles/9187/A-fast-equivalent-for-System-Random">...</a>.
|
|
||||||
+ */
|
|
||||||
+@SuppressWarnings("SuspiciousNameCombination")
|
|
||||||
+public class Random extends java.util.Random {
|
|
||||||
+ final double REAL_UNIT_INT = 1.0 / (0x7FFFFFFFL);
|
|
||||||
+ final double REAL_UNIT_UINT = 1.0 / (0xFFFFFFFFL);
|
|
||||||
+ final long Y = 842502087L, Z = 3579807591L, W = 273326509L;
|
|
||||||
+ long x, y, z, w;
|
|
||||||
+
|
|
||||||
+ public Random() {
|
|
||||||
+ seed((int) System.currentTimeMillis());
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ @Override
|
|
||||||
+ public void setSeed(long seed) {
|
|
||||||
+ seed((int) seed);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ public void seed(int seed) {
|
|
||||||
+ // The only stipulation stated for the xorshift RNG is that at least one of
|
|
||||||
+ // the seeds x,y,z,w is non-zero. We fulfill that requirement by only allowing
|
|
||||||
+ // resetting of the x seed
|
|
||||||
+ x = seed;
|
|
||||||
+ y = Y;
|
|
||||||
+ z = Z;
|
|
||||||
+ w = W;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ long boolBuffer;
|
|
||||||
+ int boolBufferBits = 0;
|
|
||||||
+
|
|
||||||
+ @Override
|
|
||||||
+ public boolean nextBoolean() {
|
|
||||||
+ if (boolBufferBits == 0) {
|
|
||||||
+ boolBuffer = nextUInt();
|
|
||||||
+ boolBufferBits = 32;
|
|
||||||
+ }
|
|
||||||
+ boolBuffer >>= 1;
|
|
||||||
+ boolean bit = (boolBuffer & 1) == 0;
|
|
||||||
+ --boolBufferBits;
|
|
||||||
+ return bit;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ @Override
|
|
||||||
+ public void nextBytes(byte[] buffer) {
|
|
||||||
+ // Fill up the bulk of the buffer in chunks of 4 bytes at a time.
|
|
||||||
+ long x = this.x, y = this.y, z = this.z, w = this.w;
|
|
||||||
+ int i = 0;
|
|
||||||
+ long t;
|
|
||||||
+ for (int bound = buffer.length - 3; i < bound; ) {
|
|
||||||
+ // Generate 4 bytes.
|
|
||||||
+ // Increased performance is achieved by generating 4 random bytes per loop.
|
|
||||||
+ // Also note that no mask needs to be applied to zero out the higher order bytes before
|
|
||||||
+ // casting because the cast ignores thos bytes. Thanks to Stefan Trosch黷z for pointing this out.
|
|
||||||
+ t = (x ^ (x << 11));
|
|
||||||
+ x = y;
|
|
||||||
+ y = z;
|
|
||||||
+ z = w;
|
|
||||||
+ w = (w ^ (w >> 19)) ^ (t ^ (t >> 8));
|
|
||||||
+
|
|
||||||
+ buffer[i++] = (byte) w;
|
|
||||||
+ buffer[i++] = (byte) (w >> 8);
|
|
||||||
+ buffer[i++] = (byte) (w >> 16);
|
|
||||||
+ buffer[i++] = (byte) (w >> 24);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ // Fill up any remaining bytes in the buffer.
|
|
||||||
+ if (i < buffer.length) {
|
|
||||||
+ // Generate 4 bytes.
|
|
||||||
+ t = (x ^ (x << 11));
|
|
||||||
+ x = y;
|
|
||||||
+ y = z;
|
|
||||||
+ z = w;
|
|
||||||
+ w = (w ^ (w >> 19)) ^ (t ^ (t >> 8));
|
|
||||||
+
|
|
||||||
+ buffer[i++] = (byte) w;
|
|
||||||
+ if (i < buffer.length) {
|
|
||||||
+ buffer[i++] = (byte) (w >> 8);
|
|
||||||
+ if (i < buffer.length) {
|
|
||||||
+ buffer[i++] = (byte) (w >> 16);
|
|
||||||
+ if (i < buffer.length) {
|
|
||||||
+ buffer[i] = (byte) (w >> 24);
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ this.x = x;
|
|
||||||
+ this.y = y;
|
|
||||||
+ this.z = z;
|
|
||||||
+ this.w = w;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ @Override
|
|
||||||
+ public double nextDouble() {
|
|
||||||
+ long t = (x ^ (x << 11));
|
|
||||||
+ x = y;
|
|
||||||
+ y = z;
|
|
||||||
+ z = w;
|
|
||||||
+
|
|
||||||
+ // Here we can gain a 2x speed improvement by generating a value that can be cast to
|
|
||||||
+ // an int instead of the more easily available uint. If we then explicitly cast to an
|
|
||||||
+ // int the compiler will then cast the int to a double to perform the multiplication,
|
|
||||||
+ // this final cast is a lot faster than casting from a uint to a double. The extra cast
|
|
||||||
+ // to an int is very fast (the allocated bits remain the same) and so the overall effect
|
|
||||||
+ // of the extra cast is a significant performance improvement.
|
|
||||||
+ //
|
|
||||||
+ // Also note that the loss of one bit of precision is equivalent to what occurs within
|
|
||||||
+ // System.Random.
|
|
||||||
+ return (REAL_UNIT_INT * (int) (0x7FFFFFFF & (w = (w ^ (w >> 19)) ^ (t ^ (t >> 8)))));
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ public double random() {
|
|
||||||
+ return nextDouble();
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ @Override
|
|
||||||
+ public float nextFloat() {
|
|
||||||
+ return (float) nextDouble();
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ @Override
|
|
||||||
+ public int nextInt() {
|
|
||||||
+ long t = (x ^ (x << 11));
|
|
||||||
+ x = y;
|
|
||||||
+ y = z;
|
|
||||||
+ z = w;
|
|
||||||
+ return (int) (0x7FFFFFFF & (w = (w ^ (w >> 19)) ^ (t ^ (t >> 8))));
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ @Override
|
|
||||||
+ public int nextInt(int upperBound) {
|
|
||||||
+ if (upperBound < 0)
|
|
||||||
+ throw new IllegalArgumentException("upperBound must be >=0");
|
|
||||||
+
|
|
||||||
+ long t = (x ^ (x << 11));
|
|
||||||
+ x = y;
|
|
||||||
+ y = z;
|
|
||||||
+ z = w;
|
|
||||||
+
|
|
||||||
+ return (int) ((REAL_UNIT_INT * (int) (0x7FFFFFFF & (w = (w ^ (w >> 19)) ^ (t ^ (t >> 8))))) * upperBound);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ public int nextInt(int lowerBound, int upperBound) {
|
|
||||||
+ if (lowerBound > upperBound)
|
|
||||||
+ throw new IllegalArgumentException("upperBound must be >=lowerBound");
|
|
||||||
+
|
|
||||||
+ long t = (x ^ (x << 11));
|
|
||||||
+ x = y;
|
|
||||||
+ y = z;
|
|
||||||
+ z = w;
|
|
||||||
+
|
|
||||||
+ // The explicit int cast before the first multiplication gives better performance.
|
|
||||||
+ // See comments in NextDouble.
|
|
||||||
+ int range = upperBound - lowerBound;
|
|
||||||
+ if (range < 0) {
|
|
||||||
+ // If range is <0 then an overflow has occured and must resort to using long integer arithmetic instead (slower).
|
|
||||||
+ // We also must use all 32 bits of precision, instead of the normal 31, which again is slower.
|
|
||||||
+ return lowerBound + (int) ((REAL_UNIT_UINT * (double) (w = (w ^ (w >> 19)) ^ (t ^ (t >> 8)))) * (double) ((long) upperBound - (long) lowerBound));
|
|
||||||
+ }
|
|
||||||
+ // 31 bits of precision will suffice if range<=int.MaxValue. This allows us to cast to an int and gain
|
|
||||||
+ // a little more performance.
|
|
||||||
+ return lowerBound + (int) ((REAL_UNIT_INT * (double) (int) (0x7FFFFFFF & (w = (w ^ (w >> 19)) ^ (t ^ (t >> 8))))) * (double) range);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ public long nextUInt() {
|
|
||||||
+ long t = (x ^ (x << 11));
|
|
||||||
+ x = y;
|
|
||||||
+ y = z;
|
|
||||||
+ z = w;
|
|
||||||
+ return (w = (w ^ (w >> 19)) ^ (t ^ (t >> 8))) & (0xFFFFFFFFL);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ @Override
|
|
||||||
+ public long nextLong() {
|
|
||||||
+ return nextUInt() << 32 + nextUInt();
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ double gaussNext;
|
|
||||||
+ boolean hasGaussNext;
|
|
||||||
+ final double TWOPI = Math.PI * 2;
|
|
||||||
+
|
|
||||||
+ /**
|
|
||||||
+ * Get a random number in the range [min, max) or [min, max] depending on rounding.
|
|
||||||
+ *
|
|
||||||
+ * @param min Low bound
|
|
||||||
+ * @param max High bound
|
|
||||||
+ * @return A uniformly distributed double
|
|
||||||
+ */
|
|
||||||
+ public double uniform(double min, double max) {
|
|
||||||
+ return min + (max - min) * nextDouble();
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ /**
|
|
||||||
+ * Triangular distribution.
|
|
||||||
+ * <p/>
|
|
||||||
+ * Continuous distribution bounded by given lower and upper limits,
|
|
||||||
+ * and having a given mode value in-between.
|
|
||||||
+ * http://en.wikipedia.org/wiki/Triangular_distribution
|
|
||||||
+ *
|
|
||||||
+ * @param low Low bound
|
|
||||||
+ * @param high High bound
|
|
||||||
+ * @param mode Mode
|
|
||||||
+ * @return A number from the triangular distribution specified
|
|
||||||
+ */
|
|
||||||
+ public double triangular(int low, int high, int mode) {
|
|
||||||
+ double u = nextDouble();
|
|
||||||
+ double c = (mode - low) / (high - low);
|
|
||||||
+ if (u > c) {
|
|
||||||
+ u = 1.0 - u;
|
|
||||||
+ c = 1.0 - c;
|
|
||||||
+ int k = low;
|
|
||||||
+ low = high;
|
|
||||||
+ high = k;
|
|
||||||
+ }
|
|
||||||
+ return low + (high - low) * Math.sqrt(u * c);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ /**
|
|
||||||
+ * Gaussian distribution, mean is 0 and standard deviation is 1.
|
|
||||||
+ * <p/>
|
|
||||||
+ * mu is the mean, and sigma is the standard deviation.
|
|
||||||
+ *
|
|
||||||
+ * @return A double in Gaussian distribution
|
|
||||||
+ */
|
|
||||||
+ public double gauss() {
|
|
||||||
+ return nextGaussian();
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ /**
|
|
||||||
+ * Gaussian distribution, with user-specified mean and standard deviation.
|
|
||||||
+ * <p/>
|
|
||||||
+ * mu is the mean, and sigma is the standard deviation.
|
|
||||||
+ *
|
|
||||||
+ * @return A double in Gaussian distribution
|
|
||||||
+ */
|
|
||||||
+ public double gauss(double mu, double sigma) {
|
|
||||||
+ return mu + sigma * nextGaussian();
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ public double gaussUnsigned(double mu, double sigma) {
|
|
||||||
+ double out = gauss(mu, sigma);
|
|
||||||
+ return out > 1 ? out : 1;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ /**
|
|
||||||
+ * Log normal distribution.
|
|
||||||
+ * <p/>
|
|
||||||
+ * If you take the natural logarithm of this distribution, you'll get a
|
|
||||||
+ * normal distribution with mean mu and standard deviation sigma.
|
|
||||||
+ * mu can have any value, and sigma must be greater than zero.
|
|
||||||
+ *
|
|
||||||
+ * @param mu Mean
|
|
||||||
+ * @param sigma Standard deviation
|
|
||||||
+ * @return A number from the log normal distribution specified
|
|
||||||
+ */
|
|
||||||
+ public double logNormal(double mu, double sigma) {
|
|
||||||
+ return Math.exp(gauss(mu, sigma));
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ /**
|
|
||||||
+ * Exponential distribution.
|
|
||||||
+ * <p/>
|
|
||||||
+ * lambda is 1.0 divided by the desired mean. It should be
|
|
||||||
+ * nonzero. Returned values range from 0 to positive infinity
|
|
||||||
+ * if lambda is positive, and from negative infinity to 0
|
|
||||||
+ * if lambda is negative.
|
|
||||||
+ *
|
|
||||||
+ * @param lambda A non-zero value
|
|
||||||
+ */
|
|
||||||
+ public double exponential(double lambda) {
|
|
||||||
+ return -Math.log(1.0 - random()) / lambda;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ /**
|
|
||||||
+ * Circular data distribution.
|
|
||||||
+ * <p/>
|
|
||||||
+ * If kappa is equal to zero, this distribution reduces
|
|
||||||
+ * to a uniform random angle over the range 0 to 2*pi.
|
|
||||||
+ *
|
|
||||||
+ * @param mu the mean angle, expressed in radians between 0 and 2*pi.
|
|
||||||
+ * @param kappa the concentration parameter, which must be greater than or
|
|
||||||
+ * equal to zero.
|
|
||||||
+ * @return A number from the circular data distribution specified
|
|
||||||
+ */
|
|
||||||
+ public double circularData(double mu, double kappa) {
|
|
||||||
+ if (kappa <= 1e-6)
|
|
||||||
+ return TWOPI * nextDouble();
|
|
||||||
+
|
|
||||||
+ double a = 1.0 + Math.sqrt(1.0 + 4.0 * kappa * kappa);
|
|
||||||
+ double b = (a - Math.sqrt(2.0 * a)) / (2.0 * kappa);
|
|
||||||
+ double r = (1.0 + b * b) / (2.0 * b);
|
|
||||||
+ double u1, u2, u3, f, c, z, theta = 0;
|
|
||||||
+
|
|
||||||
+ while (true) {
|
|
||||||
+ u1 = nextDouble();
|
|
||||||
+
|
|
||||||
+ z = Math.cos(Math.PI * u1);
|
|
||||||
+ f = (1.0 + r * z) / (r + z);
|
|
||||||
+ c = kappa * (r - f);
|
|
||||||
+
|
|
||||||
+ u2 = nextDouble();
|
|
||||||
+
|
|
||||||
+ if (u2 < c * (2.0 - c) || u2 <= c * Math.exp(1.0 - c))
|
|
||||||
+ break;
|
|
||||||
+
|
|
||||||
+ u3 = nextDouble();
|
|
||||||
+ if (u3 > 0.5)
|
|
||||||
+ theta = (mu % TWOPI) + Math.acos(f);
|
|
||||||
+ else
|
|
||||||
+ theta = (mu % TWOPI) - Math.acos(f);
|
|
||||||
+ }
|
|
||||||
+ return theta;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+
|
|
||||||
+ final double LOG4 = Math.log(4);
|
|
||||||
+ final double SG_MAGICCONST = 1.0 + Math.log(4.5);
|
|
||||||
+
|
|
||||||
+ /**
|
|
||||||
+ * Gamma distribution. Not the gamma function!
|
|
||||||
+ * Conditions on the parameters are alpha > 0 and beta > 0.
|
|
||||||
+ * <p/>
|
|
||||||
+ * The probability distribution function is:
|
|
||||||
+ * pdf(x) = (x ** (alpha - 1) * math.exp(-x / beta)) / (math.gamma(alpha) * beta ** alpha)
|
|
||||||
+ *
|
|
||||||
+ * @param alpha Alpha
|
|
||||||
+ * @param beta Beta
|
|
||||||
+ * @return A number from the gamma distribution specified
|
|
||||||
+ */
|
|
||||||
+ public double gamma(double alpha, double beta) {
|
|
||||||
+ if (alpha <= 0.0 || beta <= 0.0)
|
|
||||||
+ throw new IllegalArgumentException("alpha and beta must be > 0.0");
|
|
||||||
+
|
|
||||||
+ if (alpha > 1.0) {
|
|
||||||
+ double ainv = Math.sqrt(2.0 * alpha - 1.0);
|
|
||||||
+ double bbb = alpha - LOG4;
|
|
||||||
+ double ccc = alpha + ainv;
|
|
||||||
+ double u1, u2, v, x, z, r;
|
|
||||||
+
|
|
||||||
+ while (true) {
|
|
||||||
+ u1 = random();
|
|
||||||
+ if (!(1e-7 < u1 && u1 < .9999999))
|
|
||||||
+ continue;
|
|
||||||
+ u2 = 1.0 - random();
|
|
||||||
+ v = Math.log(u1 / (1.0 - u1)) / ainv;
|
|
||||||
+ x = alpha * Math.exp(v);
|
|
||||||
+ z = u1 * u1 * u2;
|
|
||||||
+ r = bbb + ccc * v - x;
|
|
||||||
+ if (r + SG_MAGICCONST - 4.5 * z >= 0.0 || r >= Math.log(z))
|
|
||||||
+ return x * beta;
|
|
||||||
+ }
|
|
||||||
+ } else if (alpha == 1.0) {
|
|
||||||
+ // exponential(1)
|
|
||||||
+ double u;
|
|
||||||
+ u = random();
|
|
||||||
+ while (u <= 1e-7)
|
|
||||||
+ u = random();
|
|
||||||
+ return -Math.log(u) * beta;
|
|
||||||
+ } else {
|
|
||||||
+ // alpha is between 0 and 1 (exclusive)
|
|
||||||
+ // Uses ALGORITHM GS of Statistical Computing -Kennedy & Gentle
|
|
||||||
+
|
|
||||||
+ double u, b, p, x, u1;
|
|
||||||
+ while (true) {
|
|
||||||
+ u = random();
|
|
||||||
+ b = (Math.E + alpha) / Math.E;
|
|
||||||
+ p = b * u;
|
|
||||||
+ if (p <= 1.0)
|
|
||||||
+ x = Math.pow(p, (1.0 / alpha));
|
|
||||||
+ else
|
|
||||||
+ x = -Math.log((b - p) / alpha);
|
|
||||||
+ u1 = random();
|
|
||||||
+ if (p > 1.0) {
|
|
||||||
+ if (u1 <= Math.pow(x, (alpha - 1.0)))
|
|
||||||
+ break;
|
|
||||||
+ } else if (u1 <= Math.exp(-x))
|
|
||||||
+ break;
|
|
||||||
+ }
|
|
||||||
+ return x * beta;
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+}
|
|
||||||
306
patches/server/0024-Lithium-HashedList.patch
Normal file
306
patches/server/0024-Lithium-HashedList.patch
Normal file
@@ -0,0 +1,306 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: AlphaKR93 <dev@alpha93.kr>
|
||||||
|
Date: Wed, 10 Jan 2024 18:08:59 +0900
|
||||||
|
Subject: [PATCH] Lithium - HashedList
|
||||||
|
|
||||||
|
|
||||||
|
diff --git a/src/main/java/me/jellysquid/mods/lithium/common/util/collections/HashedReferenceList.java b/src/main/java/me/jellysquid/mods/lithium/common/util/collections/HashedReferenceList.java
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000000000000000000000000000000000000..d11579075e653868a43fe826bdf9b41ddc031b85
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/src/main/java/me/jellysquid/mods/lithium/common/util/collections/HashedReferenceList.java
|
||||||
|
@@ -0,0 +1,277 @@
|
||||||
|
+package me.jellysquid.mods.lithium.common.util.collections;
|
||||||
|
+
|
||||||
|
+import it.unimi.dsi.fastutil.objects.Reference2IntOpenHashMap;
|
||||||
|
+import it.unimi.dsi.fastutil.objects.ReferenceArrayList;
|
||||||
|
+import it.unimi.dsi.fastutil.objects.ReferenceOpenHashSet;
|
||||||
|
+import org.jetbrains.annotations.NotNull;
|
||||||
|
+
|
||||||
|
+import java.util.*;
|
||||||
|
+
|
||||||
|
+/**
|
||||||
|
+ * Wraps a {@link List} with a hash table which provides O(1) lookups for {@link Collection#contains(Object)}. The type
|
||||||
|
+ * contained by this list must use reference-equality semantics.
|
||||||
|
+ */
|
||||||
|
+@SuppressWarnings("SuspiciousMethodCalls")
|
||||||
|
+public class HashedReferenceList<T> implements List<T> {
|
||||||
|
+ private final ReferenceArrayList<T> list;
|
||||||
|
+ private final Reference2IntOpenHashMap<T> counter;
|
||||||
|
+
|
||||||
|
+ public HashedReferenceList(List<T> list) {
|
||||||
|
+ this.list = new ReferenceArrayList<>();
|
||||||
|
+ this.list.addAll(list);
|
||||||
|
+
|
||||||
|
+ this.counter = new Reference2IntOpenHashMap<>();
|
||||||
|
+ this.counter.defaultReturnValue(0);
|
||||||
|
+
|
||||||
|
+ for (T obj : this.list) {
|
||||||
|
+ this.counter.addTo(obj, 1);
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ @Override
|
||||||
|
+ public int size() {
|
||||||
|
+ return this.list.size();
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ @Override
|
||||||
|
+ public boolean isEmpty() {
|
||||||
|
+ return this.list.isEmpty();
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ @Override
|
||||||
|
+ public boolean contains(Object o) {
|
||||||
|
+ return this.counter.containsKey(o);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ @Override
|
||||||
|
+ public @NotNull Iterator<T> iterator() {
|
||||||
|
+ return this.listIterator();
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ @Override
|
||||||
|
+ public Object @NotNull [] toArray() {
|
||||||
|
+ return this.list.toArray();
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ @Override
|
||||||
|
+ public <T1> T1 @NotNull [] toArray(T1 @NotNull [] a) {
|
||||||
|
+ return this.list.toArray(a);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ @Override
|
||||||
|
+ public boolean add(T t) {
|
||||||
|
+ this.trackReferenceAdded(t);
|
||||||
|
+
|
||||||
|
+ return this.list.add(t);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ @Override
|
||||||
|
+ public boolean remove(Object o) {
|
||||||
|
+ this.trackReferenceRemoved(o);
|
||||||
|
+
|
||||||
|
+ return this.list.remove(o);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ @Override
|
||||||
|
+ public boolean containsAll(Collection<?> c) {
|
||||||
|
+ for (Object obj : c) {
|
||||||
|
+ if (!this.counter.containsKey(obj)) {
|
||||||
|
+ return false;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ return true;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ @Override
|
||||||
|
+ public boolean addAll(Collection<? extends T> c) {
|
||||||
|
+ for (T obj : c) {
|
||||||
|
+ this.trackReferenceAdded(obj);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ return this.list.addAll(c);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ @Override
|
||||||
|
+ public boolean addAll(int index, Collection<? extends T> c) {
|
||||||
|
+ for (T obj : c) {
|
||||||
|
+ this.trackReferenceAdded(obj);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ return this.list.addAll(index, c);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ @Override
|
||||||
|
+ public boolean removeAll(@NotNull Collection<?> c) {
|
||||||
|
+ if (this.size() >= 2 && c.size() > 4 && c instanceof List) {
|
||||||
|
+ //HashReferenceList uses reference equality, so using ReferenceOpenHashSet is fine
|
||||||
|
+ c = new ReferenceOpenHashSet<>(c);
|
||||||
|
+ }
|
||||||
|
+ this.counter.keySet().removeAll(c);
|
||||||
|
+ return this.list.removeAll(c);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ @Override
|
||||||
|
+ public boolean retainAll(@NotNull Collection<?> c) {
|
||||||
|
+ this.counter.keySet().retainAll(c);
|
||||||
|
+ return this.list.retainAll(c);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ @Override
|
||||||
|
+ public void clear() {
|
||||||
|
+ this.counter.clear();
|
||||||
|
+ this.list.clear();
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ @Override
|
||||||
|
+ public T get(int index) {
|
||||||
|
+ return this.list.get(index);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ @Override
|
||||||
|
+ public T set(int index, T element) {
|
||||||
|
+ T prev = this.list.set(index, element);
|
||||||
|
+
|
||||||
|
+ if (prev != element) {
|
||||||
|
+ if (prev != null) {
|
||||||
|
+ this.trackReferenceRemoved(prev);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ this.trackReferenceAdded(element);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ return prev;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ @Override
|
||||||
|
+ public void add(int index, T element) {
|
||||||
|
+ this.trackReferenceAdded(element);
|
||||||
|
+
|
||||||
|
+ this.list.add(index, element);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ @Override
|
||||||
|
+ public T remove(int index) {
|
||||||
|
+ T prev = this.list.remove(index);
|
||||||
|
+
|
||||||
|
+ if (prev != null) {
|
||||||
|
+ this.trackReferenceRemoved(prev);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ return prev;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ @Override
|
||||||
|
+ public int indexOf(Object o) {
|
||||||
|
+ return this.list.indexOf(o);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ @Override
|
||||||
|
+ public int lastIndexOf(Object o) {
|
||||||
|
+ return this.list.lastIndexOf(o);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ @Override
|
||||||
|
+ public @NotNull ListIterator<T> listIterator() {
|
||||||
|
+ return this.listIterator(0);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ @Override
|
||||||
|
+ public @NotNull ListIterator<T> listIterator(int index) {
|
||||||
|
+ return new ListIterator<>() {
|
||||||
|
+ private final ListIterator<T> inner = HashedReferenceList.this.list.listIterator(index);
|
||||||
|
+
|
||||||
|
+ @Override
|
||||||
|
+ public boolean hasNext() {
|
||||||
|
+ return this.inner.hasNext();
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ @Override
|
||||||
|
+ public T next() {
|
||||||
|
+ return this.inner.next();
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ @Override
|
||||||
|
+ public boolean hasPrevious() {
|
||||||
|
+ return this.inner.hasPrevious();
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ @Override
|
||||||
|
+ public T previous() {
|
||||||
|
+ return this.inner.previous();
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ @Override
|
||||||
|
+ public int nextIndex() {
|
||||||
|
+ return this.inner.nextIndex();
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ @Override
|
||||||
|
+ public int previousIndex() {
|
||||||
|
+ return this.inner.previousIndex();
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ @Override
|
||||||
|
+ public void remove() {
|
||||||
|
+ int last = this.previousIndex();
|
||||||
|
+
|
||||||
|
+ if (last == -1) {
|
||||||
|
+ throw new NoSuchElementException();
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ T prev = HashedReferenceList.this.get(last);
|
||||||
|
+
|
||||||
|
+ if (prev != null) {
|
||||||
|
+ HashedReferenceList.this.trackReferenceRemoved(prev);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ this.inner.remove();
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ @Override
|
||||||
|
+ public void set(T t) {
|
||||||
|
+ int last = this.previousIndex();
|
||||||
|
+
|
||||||
|
+ if (last == -1) {
|
||||||
|
+ throw new NoSuchElementException();
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ T prev = HashedReferenceList.this.get(last);
|
||||||
|
+
|
||||||
|
+ if (prev != t) {
|
||||||
|
+ if (prev != null) {
|
||||||
|
+ HashedReferenceList.this.trackReferenceRemoved(prev);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ HashedReferenceList.this.trackReferenceAdded(t);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ this.inner.remove();
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ @Override
|
||||||
|
+ public void add(T t) {
|
||||||
|
+ HashedReferenceList.this.trackReferenceAdded(t);
|
||||||
|
+
|
||||||
|
+ this.inner.add(t);
|
||||||
|
+ }
|
||||||
|
+ };
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ @Override
|
||||||
|
+ public @NotNull List<T> subList(int fromIndex, int toIndex) {
|
||||||
|
+ return this.list.subList(fromIndex, toIndex);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ private void trackReferenceAdded(T t) {
|
||||||
|
+ this.counter.addTo(t, 1);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ @SuppressWarnings("unchecked")
|
||||||
|
+ private void trackReferenceRemoved(Object o) {
|
||||||
|
+ if (this.counter.addTo((T) o, -1) <= 1) {
|
||||||
|
+ this.counter.removeInt(o);
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+}
|
||||||
|
diff --git a/src/main/java/net/minecraft/util/random/WeightedRandomList.java b/src/main/java/net/minecraft/util/random/WeightedRandomList.java
|
||||||
|
index ef44047c3ea850fe52370b8176efbdf0515d20d6..30efa8704c1ae94027272602687cbc4a2bc8a772 100644
|
||||||
|
--- a/src/main/java/net/minecraft/util/random/WeightedRandomList.java
|
||||||
|
+++ b/src/main/java/net/minecraft/util/random/WeightedRandomList.java
|
||||||
|
@@ -10,10 +10,10 @@ import net.minecraft.util.RandomSource;
|
||||||
|
|
||||||
|
public class WeightedRandomList<E extends WeightedEntry> {
|
||||||
|
private final int totalWeight;
|
||||||
|
- private final ImmutableList<E> items;
|
||||||
|
+ private final List<E> items; // Plazma - Lithium: collections.mob_spawning
|
||||||
|
|
||||||
|
WeightedRandomList(List<? extends E> entries) {
|
||||||
|
- this.items = ImmutableList.copyOf(entries);
|
||||||
|
+ this.items = entries.size() > 4 ? ImmutableList.copyOf(entries) : java.util.Collections.unmodifiableList(new me.jellysquid.mods.lithium.common.util.collections.HashedReferenceList<>(entries)); // Plazma - Lithium: collections.mob_spawning
|
||||||
|
this.totalWeight = WeightedRandom.getTotalWeight(entries);
|
||||||
|
}
|
||||||
|
|
||||||
@@ -1,52 +0,0 @@
|
|||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: AlphaKR93 <dev@alpha93.kr>
|
|
||||||
Date: Sat, 25 Mar 2023 22:07:39 +0900
|
|
||||||
Subject: [PATCH] Do not send useless entity packets
|
|
||||||
|
|
||||||
|
|
||||||
diff --git a/src/main/java/net/minecraft/server/level/ServerEntity.java b/src/main/java/net/minecraft/server/level/ServerEntity.java
|
|
||||||
index fb11b020d52988360562db23d8568e5ef37e21c8..80ab684a33876d62186dcf86f555e46db1594b09 100644
|
|
||||||
--- a/src/main/java/net/minecraft/server/level/ServerEntity.java
|
|
||||||
+++ b/src/main/java/net/minecraft/server/level/ServerEntity.java
|
|
||||||
@@ -203,6 +203,7 @@ public class ServerEntity {
|
|
||||||
flag4 = true;
|
|
||||||
flag5 = true;
|
|
||||||
}
|
|
||||||
+ if (org.plazmamc.plazma.configurations.GlobalConfiguration.get().misc.doNotSendUselessEntityPackets && isUselessEntityPacket(packet1)) packet1 = null; // Plazma
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((this.trackDelta || this.entity.hasImpulse || this.entity instanceof LivingEntity && ((LivingEntity) this.entity).isFallFlying()) && this.tickCount > 0) {
|
|
||||||
@@ -275,6 +276,21 @@ public class ServerEntity {
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
+ // Plazma start
|
|
||||||
+ private boolean isUselessEntityPacket(@Nullable Packet<?> packet) {
|
|
||||||
+ if (packet == null) return false;
|
|
||||||
+ if (packet instanceof ClientboundMoveEntityPacket p) {
|
|
||||||
+ if (p instanceof ClientboundMoveEntityPacket.Pos)
|
|
||||||
+ return p.getXa() == 0 && p.getYa() == 0 && p.getZa() == 0;
|
|
||||||
+ else if (p instanceof ClientboundMoveEntityPacket.Rot)
|
|
||||||
+ return p.getxRot() == 0 && p.getyRot() == 0;
|
|
||||||
+ else if (p instanceof ClientboundMoveEntityPacket.PosRot)
|
|
||||||
+ return p.getXa() == 0 && p.getYa() == 0 && p.getZa() == 0 && p.getxRot() == 0 && p.getyRot() == 0;
|
|
||||||
+ }
|
|
||||||
+ return false;
|
|
||||||
+ }
|
|
||||||
+ // Plazma end
|
|
||||||
+
|
|
||||||
public void removePairing(ServerPlayer player) {
|
|
||||||
this.entity.stopSeenByPlayer(player);
|
|
||||||
player.connection.send(new ClientboundRemoveEntitiesPacket(new int[]{this.entity.getId()}));
|
|
||||||
diff --git a/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java b/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java
|
|
||||||
index e91b404fca2823748c2ed343cbd83301e55b2f0a..d21be63b98f026fa3ac7dcdc73f9f488a7000643 100644
|
|
||||||
--- a/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java
|
|
||||||
+++ b/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java
|
|
||||||
@@ -42,6 +42,7 @@ public class GlobalConfiguration extends ConfigurationPart {
|
|
||||||
|
|
||||||
public boolean reduceCreateRandomInstance = DO_OPTIMIZE;
|
|
||||||
public boolean doNotTriggerLootTableRefreshForNonPlayerInteraction = DO_OPTIMIZE;
|
|
||||||
+ public boolean doNotSendUselessEntityPackets = DO_OPTIMIZE;
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
18
patches/server/0025-Improve-SwingTime-ticking.patch
Normal file
18
patches/server/0025-Improve-SwingTime-ticking.patch
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: AlphaKR93 <dev@alpha93.kr>
|
||||||
|
Date: Wed, 10 Jan 2024 18:11:03 +0900
|
||||||
|
Subject: [PATCH] Improve SwingTime ticking
|
||||||
|
|
||||||
|
|
||||||
|
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
||||||
|
index 18648eed57dca05d89692064dcf4aa3172cd5914..bf5633f387e268191e2a33be2dcec6c514c0766f 100644
|
||||||
|
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
||||||
|
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
||||||
|
@@ -2771,6 +2771,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void updateSwingTime() {
|
||||||
|
+ if (!this.swinging && this.swingTime == 0) return; // Plazma - Improve SwingTime ticking
|
||||||
|
int i = this.getCurrentSwingDuration();
|
||||||
|
|
||||||
|
if (this.swinging) {
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user