Compare commits
183 Commits
release-3
...
old/1.20.4
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
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 | ||
|
|
4c26d69762 | ||
|
|
078fbd108c | ||
|
|
318376a16f | ||
|
|
74c593fa04 | ||
|
|
c6c048c34f | ||
|
|
017f695244 | ||
|
|
ecbebeb403 | ||
|
|
5bf8a8124e | ||
|
|
3e35bff9a0 | ||
|
|
cb7a348e89 | ||
|
|
eea08a3ecd | ||
|
|
b49ad3f336 | ||
|
|
3ba3fe9814 | ||
|
|
2adeb25bff | ||
|
|
c93e0ff16a | ||
|
|
5c5d10ae4e | ||
|
|
057b293ed5 | ||
|
|
9c54aed53d | ||
|
|
a637a72412 | ||
|
|
8f116cc067 | ||
|
|
8b317976a9 | ||
|
|
986a3f4598 | ||
|
|
5671b24941 | ||
|
|
59b163d8fa | ||
|
|
67c03ea3ec | ||
|
|
d8856b5127 | ||
|
|
a76facf92e | ||
|
|
34162ce62e | ||
|
|
eea18dca7c | ||
|
|
f427c79af9 | ||
|
|
a3142d6319 | ||
|
|
3949e2feb5 | ||
|
|
514495bb90 | ||
|
|
60aa2f51c4 | ||
|
|
ff191c4cca | ||
|
|
8058507e4d | ||
|
|
ef2cf1d921 | ||
|
|
e1445c2d7d | ||
|
|
8c84468144 | ||
|
|
9e6a4071bb | ||
|
|
567c2be31a | ||
|
|
37621427cf | ||
|
|
8a64698c4e | ||
|
|
acf6e2df01 | ||
|
|
1f0f3fe45f | ||
|
|
9237ea8410 | ||
|
|
e622c64617 | ||
|
|
6ddb56dde7 | ||
|
|
d598e114a6 | ||
|
|
f6a1d5825f | ||
|
|
0c997c2e0c | ||
|
|
8c336c7e8e | ||
|
|
af9f9f76f3 | ||
|
|
ed191511cf | ||
|
|
f0e1e58914 | ||
|
|
6bf0230eb6 | ||
|
|
11623bf432 | ||
|
|
23e724232e | ||
|
|
4193f4b1aa | ||
|
|
bb4a0d5d54 | ||
|
|
4e89f2a271 | ||
|
|
5184e6e4c1 | ||
|
|
d644aad71e | ||
|
|
5e4f190507 | ||
|
|
b4836df2f1 | ||
|
|
aac53a4a99 | ||
|
|
6745278fd3 | ||
|
|
d890f1a3d8 | ||
|
|
7d176f7404 | ||
|
|
9b5e4e162c | ||
|
|
d96d3069d7 | ||
|
|
31ab8fd1f4 | ||
|
|
e97aefe2a7 | ||
|
|
a4f2120454 | ||
|
|
84f31480cb | ||
|
|
9937ef0e3b | ||
|
|
41b1677130 | ||
|
|
26154a8a1a | ||
|
|
1cc6619c3d | ||
|
|
472833fe85 | ||
|
|
257f3db70f | ||
|
|
d87eaf8a8b | ||
|
|
58818c543a | ||
|
|
170e37b1a8 | ||
|
|
fd6b333892 | ||
|
|
9d437f2fb7 | ||
|
|
0e3c7ce677 | ||
|
|
f8a60b0396 | ||
|
|
4aa7f613a7 | ||
|
|
6c73bdb3af | ||
|
|
613b2276ac | ||
|
|
9f9706a976 | ||
|
|
54dfb768de | ||
|
|
02bf66a783 | ||
|
|
f0db903bb5 | ||
|
|
8a333120da | ||
|
|
424e876c7c | ||
|
|
e5e84f55ab | ||
|
|
2bfa77be48 | ||
|
|
8578903621 | ||
|
|
6a3b842b90 | ||
|
|
6c345e6680 | ||
|
|
60b13b6213 | ||
|
|
b602b8e073 | ||
|
|
02a7f7c066 |
40
.editorconfig
Normal file
40
.editorconfig
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
[*]
|
||||||
|
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
|
||||||
|
|
||||||
|
[*.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
|
||||||
|
|
||||||
|
[test-plugin/**/*.java]
|
||||||
|
ij_java_use_fq_class_names = false
|
||||||
|
|
||||||
|
[Paper-Server/src/main/resources/data/**/*.json]
|
||||||
|
indent_size = 2
|
||||||
|
|
||||||
|
[paper-api-generator/generated/**/*.java]
|
||||||
|
ij_java_imports_layout = $*,|,*
|
||||||
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.19.4
|
|
||||||
MAIN_BRANCH: ver/1.19.4
|
|
||||||
DEBUG: 'false'
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
release:
|
|
||||||
strategy:
|
|
||||||
matrix:
|
|
||||||
base_jdk: [19]
|
|
||||||
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
|
|
||||||
141
.github/workflows/release.yml
vendored
Normal file
141
.github/workflows/release.yml
vendored
Normal file
@@ -0,0 +1,141 @@
|
|||||||
|
name: Release Plazma (1.20.4)
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [ "ver/*", "dev/*", "feat/**/*" ]
|
||||||
|
paths:
|
||||||
|
- "**.patch"
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
env:
|
||||||
|
ORG_NAME: PlazmaMC
|
||||||
|
MC_VERSION: 1.20.4
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
release:
|
||||||
|
name: Release Plazma
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
base_jdk: [17]
|
||||||
|
os: [ubuntu-22.04]
|
||||||
|
|
||||||
|
if: "!startsWith(github.event.commits[0].message, '[CI-Skip]')"
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
steps:
|
||||||
|
- name: Setup Variables
|
||||||
|
id: setup
|
||||||
|
env:
|
||||||
|
BRANCH: ${{ github.ref_name }}
|
||||||
|
run: echo "branch=${BRANCH##*/}" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
|
- name: Checkout repository
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Checkout javadocs
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
continue-on-error: true
|
||||||
|
if: startsWith(github.ref_name, 'ver/') || startsWith(github.ref_name, 'dev/')
|
||||||
|
with:
|
||||||
|
repository: PlazmaMC/Javadocs
|
||||||
|
path: javadoc
|
||||||
|
ref: ${{ steps.setup.outputs.branch }}
|
||||||
|
token: ${{ secrets.GH_PAT }}
|
||||||
|
|
||||||
|
- name: Checkout javadocs
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
if: startsWith(github.ref_name, 'ver/') || startsWith(github.ref_name, 'dev/')
|
||||||
|
with:
|
||||||
|
repository: PlazmaMC/Javadocs
|
||||||
|
path: jdmain
|
||||||
|
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.GITHUB_TOKEN }}
|
||||||
|
java-version: ${{ matrix.base_jdk }}
|
||||||
|
version: latest
|
||||||
|
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
|
||||||
|
if: startsWith(github.ref_name, 'ver/') || startsWith(github.ref_name, 'dev/')
|
||||||
|
continue-on-error: true
|
||||||
|
run: |
|
||||||
|
if [ ! -d "javadoc" ]; then
|
||||||
|
mkdir javadoc
|
||||||
|
cd javadoc
|
||||||
|
git init && git branch -m ${{ steps.setup.outputs.branch }}
|
||||||
|
git remote add origin https://github.com/PlazmaMC/Javadocs
|
||||||
|
fi
|
||||||
|
|
||||||
|
(cd Plazma-API/build/docs/javadoc && tar c .) | (cd javadoc && tar xf -)
|
||||||
|
cd javadoc
|
||||||
|
git add . && git commit -m "Update Javadocs"
|
||||||
|
git push -f
|
||||||
|
|
||||||
|
cd ../jdmain
|
||||||
|
git submodule update
|
||||||
|
git add . && git commit -m "Update Javadocs"
|
||||||
|
git push
|
||||||
|
|
||||||
|
- name: Publish Packages
|
||||||
|
if: startsWith(github.ref_name, 'ver/') || startsWith(github.ref_name, 'dev/')
|
||||||
|
run: |
|
||||||
|
export GITHUB_USERNAME=${{ env.ORG_NAME }}
|
||||||
|
export GITHUB_TOKEN=${{ secrets.GITHUB_TOKEN }}
|
||||||
|
./gradlew publish --stacktrace
|
||||||
|
|
||||||
|
- name: Get Release Number
|
||||||
|
if: startsWith(github.ref_name, 'ver/')
|
||||||
|
run: echo "RELEASE=$(git ls-remote --tags origin | grep "build/${{ env.MC_VERSION }}" | wc -l)" >> $GITHUB_ENV
|
||||||
|
|
||||||
|
- name: Release Artifacts
|
||||||
|
if: startsWith(github.ref_name, 'ver/')
|
||||||
|
uses: softprops/action-gh-release@v0.1.15
|
||||||
|
with:
|
||||||
|
name: "Build #${{ env.RELEASE }} for ${{ env.MC_VERSION }}"
|
||||||
|
tag_name: build/${{ env.MC_VERSION }}/${{ env.RELEASE }}
|
||||||
|
target_commitish: ${{ github.ref_name }}
|
||||||
|
generate_release_notes: true
|
||||||
|
fail_on_unmatched_files: true
|
||||||
|
files: build/libs/*.jar
|
||||||
|
|
||||||
|
- name: Release Artifacts (Latest/Stable)
|
||||||
|
if: startsWith(github.ref_name, 'ver/')
|
||||||
|
uses: softprops/action-gh-release@v0.1.15
|
||||||
|
with:
|
||||||
|
name: "Build #${{ env.RELEASE }} for ${{ env.MC_VERSION }}"
|
||||||
|
tag_name: build/${{ env.MC_VERSION }}/latest
|
||||||
|
target_commitish: ${{ github.ref_name }}
|
||||||
|
generate_release_notes: true
|
||||||
|
fail_on_unmatched_files: true
|
||||||
|
files: build/libs/*.jar
|
||||||
|
|
||||||
|
- name: Release Artifacts (Latest/Development)
|
||||||
|
if: startsWith(github.ref_name, 'dev/')
|
||||||
|
uses: softprops/action-gh-release@v0.1.15
|
||||||
|
with:
|
||||||
|
name: "Development Build for ${{ env.MC_VERSION }}"
|
||||||
|
tag_name: build/${{ env.MC_VERSION }}/latest
|
||||||
|
target_commitish: ${{ github.ref_name }}
|
||||||
|
generate_release_notes: true
|
||||||
|
fail_on_unmatched_files: true
|
||||||
|
files: build/libs/*.jar
|
||||||
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
|
|
||||||
13
.gitignore
vendored
13
.gitignore
vendored
@@ -23,6 +23,8 @@ nbactions.xml
|
|||||||
.gradle/
|
.gradle/
|
||||||
build/
|
build/
|
||||||
*/build/
|
*/build/
|
||||||
|
run/
|
||||||
|
javadoc/
|
||||||
|
|
||||||
# we use maven!
|
# we use maven!
|
||||||
build.xml
|
build.xml
|
||||||
@@ -33,7 +35,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 +49,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 = 893ce2a77ae2c2c31638a4c1e73cde595c4c21ec
|
|
||||||
pufferfishCommit = d032415ca6fd0736d7cb0da28e3134b957fb83a0
|
|
||||||
52
README.md
52
README.md
@@ -1,48 +1,38 @@
|
|||||||
<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)
|
||||||
|
|
||||||
[](README.md)
|
[](https://discord.gg/MmfC52K8A8)
|
||||||
[](https://github.com/PlazmaMC/Plazma/actions/workflows/build.yml?query=branch:ver/1.19.4)
|
[](https://github.com/PlazmaMC/Plazma/actions/workflows/build.yml?query=branch:ver/1.20.4)
|
||||||
[](https://github.com/PlazmaMC/AlwaysUpToDate/actions/workflows/plazma.yml)
|
[](https://github.com/PlazmaMC/Plazma/releases/build/1.20.4/latest)
|
||||||
|
|
||||||
[](LICENSE)
|
[](LICENSE)
|
||||||
[](https://discord.gg/MmfC52K8A8)
|
[](https://github.com/PlazmaMC/Plazma/releases)
|
||||||
[](https://github.com/PlazmaMC/Plazma/releases/latest-1.19.4)
|
|
||||||
|
|
||||||
[](https://github.com/PlazmaMC/Plazma/releases/tag/latest-1.19.4)
|
|
||||||
[](https://github.com/PlazmaMC/Plazma/stargazers)
|
[](https://github.com/PlazmaMC/Plazma/stargazers)
|
||||||
[](https://github.com/PPlazmaMC/Plazma/network/members)
|
[](https://github.com/PPlazmaMC/Plazma/network/members)
|
||||||
[](https://github.com/PlazmaMC/Plazma/watchers)
|
[](https://github.com/PlazmaMC/Plazma/watchers)
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
## ⚠️ Warning
|
[main]: https://github.com/PlazmaMC/Plazma
|
||||||
- Plazma may cause **<u>unexpected problems</u>**, so **don't use** it in production server!
|
|
||||||
|
|
||||||
## 💬 About Plazma...
|
> [!IMPORTANT]
|
||||||
- **Plazma** is created from the merger of **[Andromeda](https://github.com/TeamEarendel/Andromeda)** and **[Fusion](https://github.com/RuinedTechnologyUnify/Fusion)**
|
This is the branch for Plazma 1.20.4. If you want to know more about Plazma, please check the **[main branch][main]**.<br>
|
||||||
- Compatible and effective patches from other bukkits and mods
|
이곳은 플라즈마의 1.20.4용 분기입니다. 플라즈마에 대해 자세히 알고 싶다면 **[main 분기][main]** 를 확인해주세요.
|
||||||
- We're always trying to keep it compatible and performance high.
|
|
||||||
|
|
||||||
## ⚙️ Features
|
|
||||||
- **Based on [Paper](https://github.com/PaperMC/Paper)** - Most plugins of Bukkit, Craft Bukkit, Spigot, and Paper are available
|
|
||||||
- **Including [Pufferfish](https://github.com/pufferfish-gg/Pufferfish) and [Purpur](https://github.com/PurpurMC/Purpur)** - Provides multiple optimizations and customizations
|
|
||||||
|
|
||||||
## ⬇️ Downloads
|
## ⬇️ Downloads
|
||||||
- You can download the file from [Releases](https://github.com/PlazmaMC/Plazma/releases)
|
> [!NOTE]
|
||||||
- Direct latest download: [Click here](https://github.com/PlazmaMC/Plazma/releases/download/latest-1.19.4/plazma-paperclip-1.19.4-R0.1-SNAPSHOT-reobf.jar)
|
If you don't know about Mojmap or Bundler, download **Reobf Paperclip**<br>
|
||||||
- NOTE: If you don't know about Mojmap or Bundler, download `plazma-paperclip-*-reobf.jar`
|
Mojmap 또는 Bundler에 대해 잘 알지 못한다면, **Reobf Paperclip**을 사용하세요
|
||||||
|
|
||||||
## ⚖️ License
|
<!--- LINKS --->
|
||||||
- This project and all patches are licensed under the [MIT license](LICENSE.md) unless otherwise noted in the patch headers.
|
[paperReobf]: https://github.com/PlazmaMC/Plazma/releases/download/build/1.20.4/latest/plazma-paperclip-1.20.4-R0.1-SNAPSHOT-reobf.jar
|
||||||
|
[paperMojmap]: https://github.com/PlazmaMC/Plazma/releases/download/build/1.20.4/latest/plazma-paperclip-1.20.4-R0.1-SNAPSHOT-mojmap.jar
|
||||||
|
[bundlerReobf]: https://github.com/PlazmaMC/Plazma/releases/download/build/1.20.4/latest/plazma-bundler-1.20.4-R0.1-SNAPSHOT-reobf.jar
|
||||||
|
[bundlerMojmap]: https://github.com/PlazmaMC/Plazma/releases/download/build/1.20.4/latest/plazma-bundler-1.20.4-R0.1-SNAPSHOT-mojmap.jar
|
||||||
|
|
||||||
## 🌀 Sponsorship - Minecraft Development Dictionary (KOREAN)
|
| **Reobf Paperclip (Default)** | Mojmap Paperclip | Reobf Bundler | Mojmap Bundler |
|
||||||
[](https://discord.gg/AZwXTA9Pgx)
|
|:-----------------------------:|:-----------------------:|:------------------------:|:-------------------------:|
|
||||||
- 한글로 번역&정리된 Minecraft와 서드파티 버킷들의 소식들을 빠르게 만나볼 수 있습니다.
|
| [Download][paperReobf] | [Download][paperMojmap] | [Download][bundlerReobf] | [Download][bundlerMojmap] |
|
||||||
- Skript와 Plugin등 서버 개발과 관련된 질문에 대한 답변을 받으실 수 있습니다.
|
|
||||||
|
|
||||||
## 📈 bStats
|
|
||||||
[](https://bstats.org/plugin/server-implementation/Plazma/18047)
|
|
||||||
|
|||||||
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,77 +1,96 @@
|
|||||||
import io.papermc.paperweight.patcher.*
|
import org.gradle.api.tasks.testing.logging.TestExceptionFormat
|
||||||
import io.papermc.paperweight.util.*
|
import org.gradle.api.tasks.testing.logging.TestLogEvent
|
||||||
import io.papermc.paperweight.util.constants.PAPERCLIP_CONFIG
|
|
||||||
|
|
||||||
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.3"
|
`always-up-to-date`
|
||||||
|
alias(libs.plugins.shadow) apply false
|
||||||
|
alias(libs.plugins.paperweight)
|
||||||
|
}
|
||||||
|
|
||||||
|
kotlin.jvmToolchain {
|
||||||
|
languageVersion = JavaLanguageVersion.of(17)
|
||||||
}
|
}
|
||||||
|
|
||||||
repositories {
|
repositories {
|
||||||
mavenCentral()
|
mavenCentral()
|
||||||
maven("https://papermc.io/repo/repository/maven-public/") {
|
maven("https://papermc.io/repo/repository/maven-public/") {
|
||||||
content {
|
content {
|
||||||
onlyForConfigurations(PAPERCLIP_CONFIG)
|
onlyForConfigurations(configurations.paperclip.name)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
remapper("net.fabricmc:tiny-remapper:0.8.6:fat")
|
remapper(libs.remapper)
|
||||||
decompiler("net.minecraftforge:forgeflower:2.0.605.2")
|
decompiler(libs.decompiler)
|
||||||
paperclip("io.papermc:paperclip:3.0.3")
|
paperclip(libs.paperclip)
|
||||||
}
|
}
|
||||||
|
|
||||||
subprojects {
|
allprojects {
|
||||||
apply(plugin = "java")
|
apply(plugin = "java")
|
||||||
|
apply(plugin = "maven-publish")
|
||||||
|
|
||||||
java {
|
java.toolchain.languageVersion.set(JavaLanguageVersion.of(17))
|
||||||
toolchain {
|
|
||||||
languageVersion.set(JavaLanguageVersion.of(17))
|
publishing {
|
||||||
|
repositories {
|
||||||
|
maven {
|
||||||
|
name = "githubPackage"
|
||||||
|
url = uri("https://maven.pkg.github.com/PlazmaMC/PlazmaBukkit")
|
||||||
|
|
||||||
|
credentials {
|
||||||
|
username = System.getenv("GITHUB_USERNAME")
|
||||||
|
password = System.getenv("GITHUB_TOKEN")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
publications.register<MavenPublication>("gpr") {
|
||||||
|
from(components["java"])
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
subprojects {
|
subprojects {
|
||||||
tasks.withType<JavaCompile>().configureEach {
|
tasks {
|
||||||
options.encoding = "UTF-8"
|
withType<JavaCompile>().configureEach {
|
||||||
options.release.set(17)
|
options.compilerArgs.addAll(listOf("--add-modules=jdk.incubator.vector", "-Xmaxwarns", "1"))
|
||||||
}
|
options.encoding = Charsets.UTF_8.name()
|
||||||
|
options.release = 17
|
||||||
tasks.withType<Javadoc> {
|
}
|
||||||
options.encoding = Charsets.UTF_8.name()
|
|
||||||
}
|
withType<Javadoc> {
|
||||||
|
options.encoding = Charsets.UTF_8.name()
|
||||||
tasks.withType<ProcessResources> {
|
}
|
||||||
filteringCharset = Charsets.UTF_8.name()
|
|
||||||
}
|
withType<ProcessResources> {
|
||||||
|
filteringCharset = Charsets.UTF_8.name()
|
||||||
tasks.withType<Test> {
|
}
|
||||||
minHeapSize = "2g"
|
|
||||||
maxHeapSize = "2g"
|
withType<Test> {
|
||||||
|
testLogging {
|
||||||
|
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(":plazma-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 {
|
||||||
@@ -81,33 +100,56 @@ paperweight {
|
|||||||
serverPatchDir.set(layout.projectDirectory.dir("patches/server"))
|
serverPatchDir.set(layout.projectDirectory.dir("patches/server"))
|
||||||
serverOutputDir.set(layout.projectDirectory.dir("Plazma-Server"))
|
serverOutputDir.set(layout.projectDirectory.dir("Plazma-Server"))
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
val upstreamTask = tasks.register("updateUpstream") {
|
patchTasks.register("generatedApi") {
|
||||||
finalizedBy("applyPatches")
|
isBareDirectory = true
|
||||||
|
upstreamDirPath = "paper-api-generator/generated"
|
||||||
val tempDir = layout.cacheDir("updateUpstream");
|
patchDir = layout.projectDirectory.dir("patches/generated-api")
|
||||||
val file = "gradle.properties";
|
outputDir = layout.projectDirectory.dir("paper-api-generator/generated")
|
||||||
|
|
||||||
doFirst {
|
|
||||||
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 {
|
|
||||||
from(file)
|
|
||||||
into(tempDir)
|
|
||||||
filter { line: String ->
|
|
||||||
line.replace("paperCommit = .*".toRegex(), "paperCommit = $latestCommit")
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
doLast {
|
patchTasks.register("mojangApi") {
|
||||||
copy {
|
isBareDirectory = true
|
||||||
from(tempDir.file("gradle.properties"))
|
upstreamDirPath = "Paper-MojangAPI"
|
||||||
into(project.file(file).parent)
|
patchDir = layout.projectDirectory.dir("patches/mojang-api")
|
||||||
|
outputDir = layout.projectDirectory.dir("Plazma-MojangAPI")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
alwaysUpToDate {
|
||||||
|
paperRepository.set("https://github.com/PaperMC/Paper")
|
||||||
|
paperBranch.set("master")
|
||||||
|
purpurRepository.set("https://github.com/PurpurMC/Purpur")
|
||||||
|
purpurBranch.set("ver/1.20.4")
|
||||||
|
pufferfishRepository.set("https://github.com/pufferfish-gg/Pufferfish")
|
||||||
|
pufferfishBranch.set("ver/1.20")
|
||||||
|
}
|
||||||
|
|
||||||
|
tasks {
|
||||||
|
applyPatches {
|
||||||
|
dependsOn("applyGeneratedApiPatches")
|
||||||
|
}
|
||||||
|
|
||||||
|
rebuildPatches {
|
||||||
|
dependsOn("rebuildGeneratedApiPatches")
|
||||||
|
}
|
||||||
|
|
||||||
|
generateDevelopmentBundle {
|
||||||
|
apiCoordinates.set("org.plazmamc.plazma:plazma-api")
|
||||||
|
mojangApiCoordinates.set("io.papermc.paper:paper-mojangapi")
|
||||||
|
libraryRepositories.addAll(
|
||||||
|
"https://repo.maven.apache.org/maven2/",
|
||||||
|
"https://maven.pkg.github.com/PlazmaMC/Plazma",
|
||||||
|
"https://papermc.io/repo/repository/maven-public/"
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
publishing {
|
||||||
|
publications.create<MavenPublication>("devBundle") {
|
||||||
|
artifact(tasks.generateDevelopmentBundle) {
|
||||||
|
artifactId = "dev-bundle"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
33
buildSrc/build.gradle.kts
Normal file
33
buildSrc/build.gradle.kts
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
plugins {
|
||||||
|
java
|
||||||
|
`kotlin-dsl`
|
||||||
|
id("com.github.johnrengelman.shadow") version "8.1.1"
|
||||||
|
}
|
||||||
|
|
||||||
|
repositories {
|
||||||
|
mavenCentral()
|
||||||
|
maven("https://papermc.io/repo/repository/maven-public/")
|
||||||
|
}
|
||||||
|
|
||||||
|
kotlin.jvmToolchain {
|
||||||
|
languageVersion = JavaLanguageVersion.of(17)
|
||||||
|
}
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
shadow("io.papermc.paperweight:paperweight-patcher:1.5.11-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,20 @@
|
|||||||
|
package org.plazmamc.alwaysuptodate
|
||||||
|
|
||||||
|
import org.gradle.api.Plugin
|
||||||
|
import org.gradle.api.Project
|
||||||
|
import org.plazmamc.alwaysuptodate.tasks.CheckPaperCommitTask
|
||||||
|
import org.plazmamc.alwaysuptodate.tasks.CheckPurpurCommitTask
|
||||||
|
import org.plazmamc.alwaysuptodate.tasks.PaperUpdateTask
|
||||||
|
import org.plazmamc.alwaysuptodate.tasks.PurpurUpdateTask
|
||||||
|
|
||||||
|
class AlwaysUpToDate : Plugin<Project> {
|
||||||
|
|
||||||
|
override fun apply(target: Project) {
|
||||||
|
target.extensions.create("alwaysUpToDate", AlwaysUpToDateExtension::class.java)
|
||||||
|
target.tasks.register("updatePaper", PaperUpdateTask::class.java)
|
||||||
|
target.tasks.register("updatePurpur", PurpurUpdateTask::class.java)
|
||||||
|
target.tasks.register("checkPaperCommit", CheckPaperCommitTask::class.java)
|
||||||
|
target.tasks.register("checkPurpurCommit", CheckPurpurCommitTask::class.java)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -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,16 @@
|
|||||||
|
package org.plazmamc.alwaysuptodate
|
||||||
|
|
||||||
|
import org.gradle.api.provider.Property
|
||||||
|
|
||||||
|
interface AlwaysUpToDateExtension {
|
||||||
|
|
||||||
|
val paperRepository: Property<String>
|
||||||
|
val paperBranch: Property<String>
|
||||||
|
|
||||||
|
val pufferfishRepository: Property<String>
|
||||||
|
val pufferfishBranch: Property<String>
|
||||||
|
|
||||||
|
val purpurRepository: Property<String>
|
||||||
|
val purpurBranch: Property<String>
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,64 @@
|
|||||||
|
package org.plazmamc.alwaysuptodate.tasks
|
||||||
|
|
||||||
|
import io.papermc.paperweight.util.Git
|
||||||
|
import io.papermc.paperweight.util.fromJson
|
||||||
|
import io.papermc.paperweight.util.gson
|
||||||
|
import org.gradle.api.Project
|
||||||
|
import org.gradle.api.tasks.TaskAction
|
||||||
|
import org.gradle.kotlin.dsl.get
|
||||||
|
import org.plazmamc.alwaysuptodate.AlwaysUpToDateException
|
||||||
|
import org.plazmamc.alwaysuptodate.AlwaysUpToDateExtension
|
||||||
|
import org.plazmamc.alwaysuptodate.utils.pathIO
|
||||||
|
import paper.libs.com.google.gson.JsonObject
|
||||||
|
import java.net.URI
|
||||||
|
|
||||||
|
abstract class CheckPaperCommitTask : Task() {
|
||||||
|
|
||||||
|
private val property = project.extensions["alwaysUpToDate"] as AlwaysUpToDateExtension
|
||||||
|
|
||||||
|
@TaskAction
|
||||||
|
fun check() {
|
||||||
|
println(project.checkCommit(property.paperRepository.get(), property.paperBranch.get(), "paperCommit"))
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
abstract class CheckPurpurCommitTask : Task() {
|
||||||
|
|
||||||
|
private val property = project.extensions["alwaysUpToDate"] as AlwaysUpToDateExtension
|
||||||
|
|
||||||
|
@TaskAction
|
||||||
|
fun check() {
|
||||||
|
println(project.checkCommit(property.purpurRepository.get(), property.purpurBranch.get(), "purpurCommit"))
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
fun Project.getLatest(repository: String, branch: String) : String {
|
||||||
|
val regex = "[a-z0-9]{40}\trefs/heads/$branch".toRegex()
|
||||||
|
|
||||||
|
return Git(project.pathIO)("ls-remote", repository).readText()?.lines()
|
||||||
|
?.filterNot { regex.matches(it) }?.first()?.split("\t")?.first()
|
||||||
|
?: throw AlwaysUpToDateException("Failed to get latest Purpur commit")
|
||||||
|
}
|
||||||
|
|
||||||
|
fun Project.checkCommit(repository: String, branch: String, propertyName: String) : Boolean {
|
||||||
|
val latestCommit = project.getLatest(repository, branch)
|
||||||
|
val currentCommit = project.properties[propertyName] as String
|
||||||
|
|
||||||
|
return currentCommit == latestCommit
|
||||||
|
}
|
||||||
|
|
||||||
|
fun Project.createCompareComment(repository: String, branch: String, before: String, clear: Boolean = false) {
|
||||||
|
val builder = StringBuilder()
|
||||||
|
val rawRepo = URI.create(repository).path.substring(1)
|
||||||
|
|
||||||
|
if (!clear) builder.append(project.file("compare.txt").readText())
|
||||||
|
builder.append("\n\n[${rawRepo.split("/").last()} Changes]")
|
||||||
|
|
||||||
|
gson.fromJson<JsonObject>(URI.create("https://api.github.com/repos/$rawRepo/compare/$before...$branch").toURL().readText())["commits"].asJsonArray.forEach {
|
||||||
|
val commit = it.asJsonObject
|
||||||
|
builder.append("$rawRepo@${commit["sha"].asString.subSequence(0, 7)}: ${commit["commit"].asJsonObject["message"].asString.split("\n")[0]}\n")
|
||||||
|
}
|
||||||
|
project.file("compare.txt").writeText(builder.toString())
|
||||||
|
}
|
||||||
@@ -0,0 +1,44 @@
|
|||||||
|
package org.plazmamc.alwaysuptodate.tasks
|
||||||
|
|
||||||
|
import io.papermc.paperweight.util.Git
|
||||||
|
import org.gradle.api.tasks.TaskAction
|
||||||
|
import org.gradle.kotlin.dsl.get
|
||||||
|
import org.plazmamc.alwaysuptodate.AlwaysUpToDateException
|
||||||
|
import org.plazmamc.alwaysuptodate.AlwaysUpToDateExtension
|
||||||
|
import java.io.File
|
||||||
|
|
||||||
|
abstract class PaperUpdateTask : Task() {
|
||||||
|
|
||||||
|
private val property = project.extensions["alwaysUpToDate"] as AlwaysUpToDateExtension
|
||||||
|
|
||||||
|
override fun init() {
|
||||||
|
outputs.upToDateWhen {
|
||||||
|
project.checkCommit(
|
||||||
|
property.paperRepository.get(),
|
||||||
|
property.paperBranch.get(),
|
||||||
|
"purpurCommit"
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@TaskAction
|
||||||
|
fun update() {
|
||||||
|
if (project.checkCommit(property.paperRepository.get(), property.paperBranch.get(), "purpurCommit")) return
|
||||||
|
project.createCompareComment(
|
||||||
|
property.paperRepository.get(),
|
||||||
|
property.paperBranch.get(),
|
||||||
|
project.properties["paperCommit"] as String,
|
||||||
|
true
|
||||||
|
)
|
||||||
|
updatePaperCommit(property.paperRepository.get(), property.paperBranch.get(), project.file("gradle.properties"))
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
fun updatePaperCommit(repo: String, branch: String, properties: File, regexRule: String = "paperCommit = ") {
|
||||||
|
val latestCommit = Git(properties.parentFile.toPath())("ls-remote", repo).readText()?.lines()
|
||||||
|
?.filterNot { "[a-z0-9]{40}\trefs/heads/$branch".toRegex().matches(it) }?.first()?.split("\t")?.first()
|
||||||
|
?: throw AlwaysUpToDateException("Failed to get latest Paper commit")
|
||||||
|
|
||||||
|
properties.writeText(properties.readText().replace("$regexRule.*".toRegex(), "$regexRule$latestCommit"))
|
||||||
|
}
|
||||||
@@ -0,0 +1,179 @@
|
|||||||
|
package org.plazmamc.alwaysuptodate.tasks
|
||||||
|
|
||||||
|
import io.papermc.paperweight.util.Git
|
||||||
|
import io.papermc.paperweight.util.cache
|
||||||
|
import io.papermc.paperweight.util.path
|
||||||
|
import org.gradle.api.tasks.TaskAction
|
||||||
|
import org.gradle.kotlin.dsl.get
|
||||||
|
import org.plazmamc.alwaysuptodate.AlwaysUpToDateException
|
||||||
|
import org.plazmamc.alwaysuptodate.AlwaysUpToDateExtension
|
||||||
|
import org.plazmamc.alwaysuptodate.utils.Gradle
|
||||||
|
import org.plazmamc.alwaysuptodate.utils.addCommit
|
||||||
|
import org.plazmamc.alwaysuptodate.utils.clone
|
||||||
|
import java.nio.file.Path
|
||||||
|
import kotlin.io.path.createDirectories
|
||||||
|
import kotlin.io.path.exists
|
||||||
|
|
||||||
|
abstract class PurpurUpdateTask : Task() {
|
||||||
|
|
||||||
|
private val property = project.extensions["alwaysUpToDate"] as AlwaysUpToDateExtension
|
||||||
|
private val pufferfishCommit = """
|
||||||
|
Pufferfish
|
||||||
|
Copyright (C) 2024 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 purpurCommit = """
|
||||||
|
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.
|
||||||
|
""".trimIndent()
|
||||||
|
|
||||||
|
override fun init() {
|
||||||
|
outputs.upToDateWhen {
|
||||||
|
project.checkCommit(
|
||||||
|
property.purpurRepository.get(),
|
||||||
|
property.purpurBranch.get(),
|
||||||
|
"purpurCommit"
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@TaskAction
|
||||||
|
fun update() {
|
||||||
|
if (project.checkCommit(property.purpurRepository.get(), property.purpurBranch.get(), "purpurCommit")) return
|
||||||
|
Git.checkForGit()
|
||||||
|
|
||||||
|
project.createCompareComment(
|
||||||
|
property.purpurRepository.get(),
|
||||||
|
property.purpurBranch.get(),
|
||||||
|
project.properties["purpurCommit"] as String,
|
||||||
|
true
|
||||||
|
)
|
||||||
|
val dir = project.layout.cache.resolve("AlwaysUpToDate/UpdatePurpur")
|
||||||
|
if (dir.exists()) dir.toFile().deleteRecursively()
|
||||||
|
|
||||||
|
dir.createDirectories()
|
||||||
|
|
||||||
|
val git = Git(dir)
|
||||||
|
val pufferfish = git.clone("Pufferfish", property.pufferfishRepository.get(), property.pufferfishBranch.get(), dir)
|
||||||
|
val purpur = git.clone("Purpur", property.purpurRepository.get(), property.purpurBranch.get(), dir)
|
||||||
|
|
||||||
|
updatePaperCommit(property.paperRepository.get(), property.paperBranch.get(), pufferfish.resolve("gradle.properties").toFile(), "paperRef=")
|
||||||
|
updatePaperCommit(property.paperRepository.get(), property.paperBranch.get(), purpur.resolve("gradle.properties").toFile())
|
||||||
|
|
||||||
|
if (!project.checkCommit(property.paperRepository.get(), property.paperBranch.get(), "paperCommit")) {
|
||||||
|
project.createCompareComment(
|
||||||
|
property.paperRepository.get(),
|
||||||
|
property.paperBranch.get(),
|
||||||
|
project.properties["paperCommit"] as String
|
||||||
|
)
|
||||||
|
updatePaperCommit(
|
||||||
|
property.paperRepository.get(),
|
||||||
|
property.paperBranch.get(),
|
||||||
|
project.file("gradle.properties")
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
val latestCommit = git("ls-remote", property.purpurRepository.get()).readText()?.lines()
|
||||||
|
?.filterNot { "[a-z0-9]{40}\trefs/heads/${property.purpurBranch.get()}".toRegex().matches(it) }?.first()?.split("\t")?.first()
|
||||||
|
?: throw AlwaysUpToDateException("Failed to get latest Purpur commit")
|
||||||
|
|
||||||
|
val purpurGradle = Gradle(purpur)
|
||||||
|
val purpurPatches = purpur.resolve("patches").also {
|
||||||
|
val puffefishPatches = pufferfish.resolve("patches").also { that -> that.toFile().deleteRecursively() }
|
||||||
|
copyPatch(it.resolve("server"), puffefishPatches.resolve("server"), "0001-Pufferfish-Server-Changes.patch")
|
||||||
|
copyPatch(it.resolve("api"), puffefishPatches.resolve("api"), "0001-Pufferfish-API-Changes.patch")
|
||||||
|
}
|
||||||
|
|
||||||
|
Gradle(pufferfish)("applyPatches").executeOut()
|
||||||
|
purpurGradle("applyPatches").executeOut()
|
||||||
|
|
||||||
|
pufferfish.resolve("pufferfish-server").also {
|
||||||
|
val dotGit = it.resolve(".git").toFile()
|
||||||
|
dotGit.deleteRecursively()
|
||||||
|
copySource(it)
|
||||||
|
|
||||||
|
val paper = pufferfish.resolve(".gradle/caches/paperweight/upstreams/paper/Paper-Server")
|
||||||
|
copySource(paper)
|
||||||
|
Git(paper)("add", ".").executeOut()
|
||||||
|
Git(paper)("commit", "-m", "Vanilla Sources", "--author=Vanilla <auto@mated.null>").executeOut()
|
||||||
|
Thread.sleep(1_000)
|
||||||
|
paper.resolve(".git").toFile().copyRecursively(dotGit, overwrite = true)
|
||||||
|
|
||||||
|
Git(it).addCommit("Pufferfish Server Changes\n\n$pufferfishCommit", "--author=Kevin Raneri <kevin.raneri@gmail.com>")
|
||||||
|
|
||||||
|
val server = purpur.resolve("Purpur-Server")
|
||||||
|
copySource(server)
|
||||||
|
dotGit.copyRecursively(server.resolve(".git").toFile().also { that -> that.deleteRecursively() }, overwrite = true)
|
||||||
|
Git(server).addCommit("Purpur Server Changes\n\n$purpurCommit", "--author=granny <contact@granny.dev>")
|
||||||
|
}
|
||||||
|
|
||||||
|
with(purpur.resolve("Purpur-API")) {
|
||||||
|
pufferfish.resolve("pufferfish-api/.git").toFile()
|
||||||
|
.copyRecursively(resolve(".git").toFile().also { it.deleteRecursively() }, overwrite = true)
|
||||||
|
Git(this).addCommit("Purpur API Changes\n\n$purpurCommit", "--author=granny <contact@granny.dev>")
|
||||||
|
}
|
||||||
|
|
||||||
|
purpurGradle("rebuildPatches").executeOut()
|
||||||
|
project.layout.projectDirectory.path.resolve("patches").also {
|
||||||
|
with(purpurPatches.resolve("server")) {
|
||||||
|
val target = it.resolve("server")
|
||||||
|
copyPatch(this, target, "0001-Pufferfish-Server-Changes.patch")
|
||||||
|
copyPatch(this, target, "0002-Purpur-Server-Changes.patch")
|
||||||
|
}
|
||||||
|
|
||||||
|
with(purpurPatches.resolve("api")) {
|
||||||
|
val target = it.resolve("api")
|
||||||
|
copyPatch(this, target, "0001-Pufferfish-API-Changes.patch")
|
||||||
|
copyPatch(this, target, "0002-Purpur-API-Changes.patch")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
project.file("gradle.properties").writeText(project.file("gradle.properties").readText().replace("purpurCommit = .*".toRegex(), "purpurCommit = $latestCommit"))
|
||||||
|
}
|
||||||
|
|
||||||
|
private 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("data").toFile().copyRecursively(target.resolve("resources/data").toFile(), overwrite = true)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun copyPatch(from: Path, to: Path, name: String) {
|
||||||
|
with(from.resolve(name)) {
|
||||||
|
if (exists()) toFile().copyTo(to.resolve(name).toFile(), overwrite = true)
|
||||||
|
else from.toFile().walk().filter { it.name.endsWith(name.substring(4)) }.first().copyTo(to.resolve(name).toFile(), overwrite = true)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
package org.plazmamc.alwaysuptodate.tasks
|
||||||
|
|
||||||
|
import org.gradle.api.DefaultTask
|
||||||
|
|
||||||
|
abstract class Task : DefaultTask() {
|
||||||
|
|
||||||
|
protected open fun init() {
|
||||||
|
}
|
||||||
|
|
||||||
|
init {
|
||||||
|
this.init()
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
package org.plazmamc.alwaysuptodate.utils
|
||||||
|
|
||||||
|
import io.papermc.paperweight.util.Git
|
||||||
|
import org.plazmamc.alwaysuptodate.AlwaysUpToDateException
|
||||||
|
import java.nio.file.Path
|
||||||
|
import kotlin.io.path.notExists
|
||||||
|
|
||||||
|
fun Git.clone(name: String, uri: String, branch: String, dir: Path): Path {
|
||||||
|
val target = dir.resolve(name)
|
||||||
|
this("clone", "--depth", "1", "--branch", branch, uri, target.toString()).executeSilently(silenceErr = true)
|
||||||
|
if (target.notExists()) throw AlwaysUpToDateException("Failed to clone repository")
|
||||||
|
return target
|
||||||
|
}
|
||||||
|
|
||||||
|
fun Git.addCommit(vararg args: String) {
|
||||||
|
this("add", ".").executeSilently(silenceErr = true)
|
||||||
|
this("commit", "-m", *args).executeSilently(silenceErr = true)
|
||||||
|
}
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
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,7 @@
|
|||||||
|
package org.plazmamc.alwaysuptodate.utils
|
||||||
|
|
||||||
|
import io.papermc.paperweight.util.path
|
||||||
|
import org.gradle.api.Project
|
||||||
|
import java.nio.file.Path
|
||||||
|
|
||||||
|
val Project.pathIO: Path get() = layout.projectDirectory.path
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
implementation-class=org.plazmamc.alwaysuptodate.AlwaysUpToDate
|
||||||
3
FixupAPI.sh → fxapi
Normal file → Executable file
3
FixupAPI.sh → fxapi
Normal file → Executable file
@@ -9,5 +9,6 @@ cd Plazma-API
|
|||||||
git add .
|
git add .
|
||||||
git commit -m "fixup"
|
git commit -m "fixup"
|
||||||
git format-patch -1
|
git format-patch -1
|
||||||
|
mv 0001-fixup.patch ../
|
||||||
|
|
||||||
cd ../
|
cd ../
|
||||||
3
FixupServer.sh → fxsrv
Normal file → Executable file
3
FixupServer.sh → fxsrv
Normal file → Executable file
@@ -9,5 +9,6 @@ cd Plazma-Server
|
|||||||
git add .
|
git add .
|
||||||
git commit -m "fixup"
|
git commit -m "fixup"
|
||||||
git format-patch -1
|
git format-patch -1
|
||||||
|
mv 0001-fixup.patch ../
|
||||||
|
|
||||||
cd ../
|
cd ../
|
||||||
@@ -1,9 +1,12 @@
|
|||||||
group = org.plazmamc.plazma
|
group = org.plazmamc.plazma
|
||||||
version = 1.19.4-R0.1-SNAPSHOT
|
org.gradle.deamon = true
|
||||||
|
|
||||||
paperCommit = fbf74ba0ac016c408bbec28e7da317b68a81e2e1
|
|
||||||
|
|
||||||
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
|
||||||
|
|
||||||
|
version = 1.20.4-R0.1-SNAPSHOT
|
||||||
|
mcVersion = 1.20.4
|
||||||
|
|
||||||
|
paperCommit = f4c7d373e4a1aff23539fe099745bf29a28559b9
|
||||||
|
purpurCommit = 6b1ee98f813ee19f8046b3c528feeee61840a35b
|
||||||
|
|||||||
15
gradle/libs.versions.toml
Normal file
15
gradle/libs.versions.toml
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
[versions]
|
||||||
|
shadow = "8.1.1"
|
||||||
|
paperweight = "1.5.15"
|
||||||
|
paperclip = "3.0.3"
|
||||||
|
decompiler = "1.10.1"
|
||||||
|
remapper = "0.10.1"
|
||||||
|
|
||||||
|
[libraries]
|
||||||
|
remapper = { group = "net.fabricmc", name = "tiny-remapper", version.ref="remapper" }
|
||||||
|
decompiler = { group = "org.vineflower", name = "vineflower", version.ref = "decompiler" }
|
||||||
|
paperclip = { group = "io.papermc", name = "paperclip", version.ref = "paperclip" }
|
||||||
|
|
||||||
|
[plugins]
|
||||||
|
shadow = { id = "com.github.johnrengelman.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.0.2-bin.zip
|
distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip
|
||||||
networkTimeout=10000
|
networkTimeout=10000
|
||||||
|
validateDistributionUrl=true
|
||||||
zipStoreBase=GRADLE_USER_HOME
|
zipStoreBase=GRADLE_USER_HOME
|
||||||
zipStorePath=wrapper/dists
|
zipStorePath=wrapper/dists
|
||||||
|
|||||||
29
gradlew
vendored
29
gradlew
vendored
@@ -83,10 +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
|
||||||
# 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"'
|
|
||||||
|
|
||||||
# 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
|
||||||
@@ -133,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.
|
||||||
@@ -144,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
|
||||||
@@ -152,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
|
||||||
@@ -197,11 +198,15 @@ if "$cygwin" || "$msys" ; then
|
|||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Collect all arguments for the java command;
|
|
||||||
# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of
|
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
||||||
# shell script including quotes and variable substitutions, so put them in
|
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
|
||||||
# double quotes to make sure that they get re-expanded; and
|
|
||||||
# * put everything else in single quotes, so that it's not re-expanded.
|
# Collect all arguments for the java command:
|
||||||
|
# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments,
|
||||||
|
# and any embedded shellness will be escaped.
|
||||||
|
# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be
|
||||||
|
# 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.
|
||||||
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.
|
||||||
echo.
|
echo.
|
||||||
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
|
||||||
echo location of your Java installation.
|
echo location of your Java installation.
|
||||||
|
|
||||||
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.
|
||||||
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
|
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
|
||||||
echo.
|
echo.
|
||||||
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
|
||||||
echo location of your Java installation.
|
echo location of your Java installation.
|
||||||
|
|
||||||
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
|
||||||
|
|||||||
29
libs/api.versions.toml
Normal file
29
libs/api.versions.toml
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
[versions]
|
||||||
|
gson = "2.10.1"
|
||||||
|
joml = "1.10.5"
|
||||||
|
guava = "32.1.2-jre"
|
||||||
|
sentry = "5.4.0"
|
||||||
|
fastutil = "8.5.6"
|
||||||
|
findbugs = "1.3.9"
|
||||||
|
slf4j-api = "2.0.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" }
|
||||||
|
fastutil = { group = "it.unimi.dsi", name = "fastutil", version.ref = "fastutil" }
|
||||||
|
findbugs = { group = "com.google.code.findbugs", name = "jsr305", version.ref = "findbugs" }
|
||||||
|
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 = [ "guava", "gson", "bungeechat", "joml", "fastutil", "slf4j-api", "sentry" ]
|
||||||
|
annotations = [ "annotations", "checkerqual" ]
|
||||||
45
libs/common.versions.toml
Normal file
45
libs/common.versions.toml
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
[versions]
|
||||||
|
asm = "9.6"
|
||||||
|
log4j = "2.19.0"
|
||||||
|
mockito = "5.5.0"
|
||||||
|
jupiter = "5.10.0"
|
||||||
|
hamcrest = "2.2"
|
||||||
|
snakeyaml = "2.2"
|
||||||
|
adventure = "4.16.0"
|
||||||
|
commons-lang2 = "2.6"
|
||||||
|
commons-lang3 = "3.12.0"
|
||||||
|
maven-provider = "3.9.6"
|
||||||
|
maven-resolver = "1.9.18"
|
||||||
|
|
||||||
|
[libraries]
|
||||||
|
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" ]
|
||||||
|
maven = [ "maven-connector", "maven-transport" ]
|
||||||
|
adventure = [ "adventure-api", "adventure-slf4j", "adventure-minimessage", "adventure-serializer-gson", "adventure-serializer-plain", "adventure-serializer-legacy" ]
|
||||||
40
libs/server.versions.toml
Normal file
40
libs/server.versions.toml
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
[versions]
|
||||||
|
upnp = "1.0"
|
||||||
|
ansi = "1.0.3"
|
||||||
|
jansi = "3.21.0"
|
||||||
|
rhino = "1.7.14"
|
||||||
|
mysql = "8.2.0"
|
||||||
|
sqlite = "3.42.0.1"
|
||||||
|
pioneer = "2.2.0"
|
||||||
|
haproxy = "4.1.97.Final"
|
||||||
|
velocity = "3.1.2-SNAPSHOT"
|
||||||
|
disruptor = "3.4.4"
|
||||||
|
simpleyaml = "1.8.4"
|
||||||
|
classgraph = "4.8.47"
|
||||||
|
mapping-io = "0.5.0"
|
||||||
|
configurate = "4.2.0-SNAPSHOT"
|
||||||
|
terminal-appender = "1.3.0"
|
||||||
|
|
||||||
|
[libraries]
|
||||||
|
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" }
|
||||||
|
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" }
|
||||||
|
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" }
|
||||||
|
|
||||||
|
rhino-engine = { group = "org.mozilla", name = "rhino-engine", version.ref = "rhino" }
|
||||||
|
rhino-runtime = { group = "org.mozilla", name = "rhino-runtime", version.ref = "rhino" }
|
||||||
|
terminal-appender = { group = "net.minecrell", name = "terminalconsoleappender", version.ref="terminal-appender" }
|
||||||
|
|
||||||
|
[bundles]
|
||||||
|
runtime = [ "sqlite", "mysql", "disruptor" ]
|
||||||
|
implementation = [ "jansi", "terminal-appender", "ansi", "upnp", "haproxy", "configurate", "mappingio", "rhino-engine", "rhino-runtime" ]
|
||||||
|
test = [ "classgraph", "pioneer" ]
|
||||||
0
PatchAPI.sh → mkapi
Normal file → Executable file
0
PatchAPI.sh → mkapi
Normal file → Executable file
0
PatchServer.sh → mksrv
Normal file → Executable file
0
PatchServer.sh → mksrv
Normal file → Executable file
@@ -1,10 +1,10 @@
|
|||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
From: AlphaKR93 <dev@alpha93.kr>
|
From: Kevin Raneri <kevin.raneri@gmail.com>
|
||||||
Date: Mon, 27 Mar 2023 02:50:22 +0000
|
Date: Tue, 9 Nov 2021 14:01:56 -0500
|
||||||
Subject: [PATCH] Pufferfish API Changes
|
Subject: [PATCH] Pufferfish API Changes
|
||||||
|
|
||||||
Original: Kevin Raneri <kevin.raneri@gmail.com>
|
Pufferfish
|
||||||
Copyright (C) 2023 Pufferfish Studios LLC
|
Copyright (C) 2024 Pufferfish Studios LLC
|
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify
|
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
|
it under the terms of the GNU General Public License as published by
|
||||||
@@ -20,18 +20,18 @@ You should have received a copy of the GNU General Public License
|
|||||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
diff --git a/build.gradle.kts b/build.gradle.kts
|
diff --git a/build.gradle.kts b/build.gradle.kts
|
||||||
index cad12a2632b9ebb569280441c42869685db1f31a..b83e2c5a0a094002d12aee55ec0cf8d12bf33f3e 100644
|
index 04853c43b99951bf0d4c96ef73724625bdaf018f..9164120d299d062c62529a7ef74eac0ded367993 100644
|
||||||
--- a/build.gradle.kts
|
--- a/build.gradle.kts
|
||||||
+++ b/build.gradle.kts
|
+++ b/build.gradle.kts
|
||||||
@@ -42,6 +42,7 @@ dependencies {
|
@@ -51,6 +51,7 @@ dependencies {
|
||||||
apiAndDocs("net.kyori:adventure-text-logger-slf4j")
|
apiAndDocs("net.kyori:adventure-text-logger-slf4j")
|
||||||
api("org.apache.logging.log4j:log4j-api:2.17.1")
|
api("org.apache.logging.log4j:log4j-api:$log4jVersion")
|
||||||
api("org.slf4j:slf4j-api:1.8.0-beta4")
|
api("org.slf4j:slf4j-api:$slf4jVersion")
|
||||||
+ api("io.sentry:sentry:5.4.0") // Pufferfish
|
+ api("io.sentry:sentry:5.4.0") // Pufferfish
|
||||||
|
|
||||||
implementation("org.ow2.asm:asm:9.4")
|
implementation("org.ow2.asm:asm:9.7")
|
||||||
implementation("org.ow2.asm:asm-commons:9.4")
|
implementation("org.ow2.asm:asm-commons:9.7")
|
||||||
@@ -85,6 +86,13 @@ val generateApiVersioningFile by tasks.registering {
|
@@ -109,6 +110,13 @@ val generateApiVersioningFile by tasks.registering {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -47,7 +47,7 @@ index cad12a2632b9ebb569280441c42869685db1f31a..b83e2c5a0a094002d12aee55ec0cf8d1
|
|||||||
into("META-INF/maven/${project.group}/${project.name}")
|
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
|
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
|
new file mode 100644
|
||||||
index 0000000000000000000000000000000000000000..6fbaf2a232745db0a41394b1c2cc0cc90cefc4ee
|
index 0000000000000000000000000000000000000000..10310fdd53de28efb8a8250f6d3b0c8eb08fb68a
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/src/main/java/gg/pufferfish/pufferfish/sentry/SentryContext.java
|
+++ b/src/main/java/gg/pufferfish/pufferfish/sentry/SentryContext.java
|
||||||
@@ -0,0 +1,161 @@
|
@@ -0,0 +1,161 @@
|
||||||
@@ -69,21 +69,21 @@ index 0000000000000000000000000000000000000000..6fbaf2a232745db0a41394b1c2cc0cc9
|
|||||||
+import org.jetbrains.annotations.Nullable;
|
+import org.jetbrains.annotations.Nullable;
|
||||||
+
|
+
|
||||||
+public class SentryContext {
|
+public class SentryContext {
|
||||||
+
|
+
|
||||||
+ private static final Gson GSON = new Gson();
|
+ private static final Gson GSON = new Gson();
|
||||||
+
|
+
|
||||||
+ public static void setPluginContext(@Nullable Plugin plugin) {
|
+ public static void setPluginContext(@Nullable Plugin plugin) {
|
||||||
+ if (plugin != null) {
|
+ if (plugin != null) {
|
||||||
+ ThreadContext.put("pufferfishsentry_pluginname", plugin.getName());
|
+ ThreadContext.put("pufferfishsentry_pluginname", plugin.getName());
|
||||||
+ ThreadContext.put("pufferfishsentry_pluginversion", plugin.getDescription().getVersion());
|
+ ThreadContext.put("pufferfishsentry_pluginversion", plugin.getDescription().getVersion());
|
||||||
+ }
|
+ }
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ public static void removePluginContext() {
|
+ public static void removePluginContext() {
|
||||||
+ ThreadContext.remove("pufferfishsentry_pluginname");
|
+ ThreadContext.remove("pufferfishsentry_pluginname");
|
||||||
+ ThreadContext.remove("pufferfishsentry_pluginversion");
|
+ ThreadContext.remove("pufferfishsentry_pluginversion");
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ public static void setSenderContext(@Nullable CommandSender sender) {
|
+ public static void setSenderContext(@Nullable CommandSender sender) {
|
||||||
+ if (sender != null) {
|
+ if (sender != null) {
|
||||||
+ ThreadContext.put("pufferfishsentry_playername", sender.getName());
|
+ ThreadContext.put("pufferfishsentry_playername", sender.getName());
|
||||||
@@ -92,15 +92,15 @@ index 0000000000000000000000000000000000000000..6fbaf2a232745db0a41394b1c2cc0cc9
|
|||||||
+ }
|
+ }
|
||||||
+ }
|
+ }
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ public static void removeSenderContext() {
|
+ public static void removeSenderContext() {
|
||||||
+ ThreadContext.remove("pufferfishsentry_playername");
|
+ ThreadContext.remove("pufferfishsentry_playername");
|
||||||
+ ThreadContext.remove("pufferfishsentry_playerid");
|
+ ThreadContext.remove("pufferfishsentry_playerid");
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ public static void setEventContext(Event event, RegisteredListener registration) {
|
+ public static void setEventContext(Event event, RegisteredListener registration) {
|
||||||
+ setPluginContext(registration.getPlugin());
|
+ setPluginContext(registration.getPlugin());
|
||||||
+
|
+
|
||||||
+ try {
|
+ try {
|
||||||
+ // Find the player that was involved with this event
|
+ // Find the player that was involved with this event
|
||||||
+ Player player = null;
|
+ Player player = null;
|
||||||
@@ -108,36 +108,36 @@ index 0000000000000000000000000000000000000000..6fbaf2a232745db0a41394b1c2cc0cc9
|
|||||||
+ player = ((PlayerEvent) event).getPlayer();
|
+ player = ((PlayerEvent) event).getPlayer();
|
||||||
+ } else {
|
+ } else {
|
||||||
+ Class<? extends Event> eventClass = event.getClass();
|
+ Class<? extends Event> eventClass = event.getClass();
|
||||||
+
|
+
|
||||||
+ Field playerField = null;
|
+ Field playerField = null;
|
||||||
+
|
+
|
||||||
+ for (Field field : eventClass.getDeclaredFields()) {
|
+ for (Field field : eventClass.getDeclaredFields()) {
|
||||||
+ if (field.getType().equals(Player.class)) {
|
+ if (field.getType().equals(Player.class)) {
|
||||||
+ playerField = field;
|
+ playerField = field;
|
||||||
+ break;
|
+ break;
|
||||||
+ }
|
+ }
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ if (playerField != null) {
|
+ if (playerField != null) {
|
||||||
+ playerField.setAccessible(true);
|
+ playerField.setAccessible(true);
|
||||||
+ player = (Player) playerField.get(event);
|
+ player = (Player) playerField.get(event);
|
||||||
+ }
|
+ }
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ if (player != null) {
|
+ if (player != null) {
|
||||||
+ setSenderContext(player);
|
+ setSenderContext(player);
|
||||||
+ }
|
+ }
|
||||||
+ } catch (Exception e) {} // We can't really safely log exceptions.
|
+ } catch (Exception e) {} // We can't really safely log exceptions.
|
||||||
+
|
+
|
||||||
+ ThreadContext.put("pufferfishsentry_eventdata", GSON.toJson(serializeFields(event)));
|
+ ThreadContext.put("pufferfishsentry_eventdata", GSON.toJson(serializeFields(event)));
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ public static void removeEventContext() {
|
+ public static void removeEventContext() {
|
||||||
+ removePluginContext();
|
+ removePluginContext();
|
||||||
+ removeSenderContext();
|
+ removeSenderContext();
|
||||||
+ ThreadContext.remove("pufferfishsentry_eventdata");
|
+ ThreadContext.remove("pufferfishsentry_eventdata");
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ private static Map<String, String> serializeFields(Object object) {
|
+ private static Map<String, String> serializeFields(Object object) {
|
||||||
+ Map<String, String> fields = new TreeMap<>();
|
+ Map<String, String> fields = new TreeMap<>();
|
||||||
+ fields.put("_class", object.getClass().getName());
|
+ fields.put("_class", object.getClass().getName());
|
||||||
@@ -146,7 +146,7 @@ index 0000000000000000000000000000000000000000..6fbaf2a232745db0a41394b1c2cc0cc9
|
|||||||
+ if (Modifier.isStatic(declaredField.getModifiers())) {
|
+ if (Modifier.isStatic(declaredField.getModifiers())) {
|
||||||
+ continue;
|
+ continue;
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ String fieldName = declaredField.getName();
|
+ String fieldName = declaredField.getName();
|
||||||
+ if (fieldName.equals("handlers")) {
|
+ if (fieldName.equals("handlers")) {
|
||||||
+ continue;
|
+ continue;
|
||||||
@@ -162,51 +162,51 @@ index 0000000000000000000000000000000000000000..6fbaf2a232745db0a41394b1c2cc0cc9
|
|||||||
+ }
|
+ }
|
||||||
+ return fields;
|
+ return fields;
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ public static class State {
|
+ public static class State {
|
||||||
+
|
+
|
||||||
+ private Plugin plugin;
|
+ private Plugin plugin;
|
||||||
+ private Command command;
|
+ private Command command;
|
||||||
+ private String commandLine;
|
+ private String commandLine;
|
||||||
+ private Event event;
|
+ private Event event;
|
||||||
+ private RegisteredListener registeredListener;
|
+ private RegisteredListener registeredListener;
|
||||||
+
|
+
|
||||||
+ public Plugin getPlugin() {
|
+ public Plugin getPlugin() {
|
||||||
+ return plugin;
|
+ return plugin;
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ public void setPlugin(Plugin plugin) {
|
+ public void setPlugin(Plugin plugin) {
|
||||||
+ this.plugin = plugin;
|
+ this.plugin = plugin;
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ public Command getCommand() {
|
+ public Command getCommand() {
|
||||||
+ return command;
|
+ return command;
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ public void setCommand(Command command) {
|
+ public void setCommand(Command command) {
|
||||||
+ this.command = command;
|
+ this.command = command;
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ public String getCommandLine() {
|
+ public String getCommandLine() {
|
||||||
+ return commandLine;
|
+ return commandLine;
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ public void setCommandLine(String commandLine) {
|
+ public void setCommandLine(String commandLine) {
|
||||||
+ this.commandLine = commandLine;
|
+ this.commandLine = commandLine;
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ public Event getEvent() {
|
+ public Event getEvent() {
|
||||||
+ return event;
|
+ return event;
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ public void setEvent(Event event) {
|
+ public void setEvent(Event event) {
|
||||||
+ this.event = event;
|
+ this.event = event;
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ public RegisteredListener getRegisteredListener() {
|
+ public RegisteredListener getRegisteredListener() {
|
||||||
+ return registeredListener;
|
+ return registeredListener;
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ public void setRegisteredListener(RegisteredListener registeredListener) {
|
+ public void setRegisteredListener(RegisteredListener registeredListener) {
|
||||||
+ this.registeredListener = registeredListener;
|
+ this.registeredListener = registeredListener;
|
||||||
+ }
|
+ }
|
||||||
@@ -214,7 +214,7 @@ index 0000000000000000000000000000000000000000..6fbaf2a232745db0a41394b1c2cc0cc9
|
|||||||
+}
|
+}
|
||||||
diff --git a/src/main/java/gg/pufferfish/pufferfish/simd/SIMDChecker.java b/src/main/java/gg/pufferfish/pufferfish/simd/SIMDChecker.java
|
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
|
new file mode 100644
|
||||||
index 0000000000000000000000000000000000000000..6d266ebf5e52745ad13e90e5754b524383fa9b29
|
index 0000000000000000000000000000000000000000..ab5fea0b03224bf249352ce340e94704ff713345
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/src/main/java/gg/pufferfish/pufferfish/simd/SIMDChecker.java
|
+++ b/src/main/java/gg/pufferfish/pufferfish/simd/SIMDChecker.java
|
||||||
@@ -0,0 +1,40 @@
|
@@ -0,0 +1,40 @@
|
||||||
@@ -231,7 +231,7 @@ index 0000000000000000000000000000000000000000..6d266ebf5e52745ad13e90e5754b5243
|
|||||||
+ */
|
+ */
|
||||||
+@Deprecated
|
+@Deprecated
|
||||||
+public class SIMDChecker {
|
+public class SIMDChecker {
|
||||||
+
|
+
|
||||||
+ @Deprecated
|
+ @Deprecated
|
||||||
+ public static boolean canEnable(Logger logger) {
|
+ public static boolean canEnable(Logger logger) {
|
||||||
+ try {
|
+ try {
|
||||||
@@ -239,13 +239,13 @@ index 0000000000000000000000000000000000000000..6d266ebf5e52745ad13e90e5754b5243
|
|||||||
+ return false;
|
+ return false;
|
||||||
+ } else {
|
+ } else {
|
||||||
+ SIMDDetection.testRun = true;
|
+ SIMDDetection.testRun = true;
|
||||||
+
|
+
|
||||||
+ VectorSpecies<Integer> ISPEC = IntVector.SPECIES_PREFERRED;
|
+ VectorSpecies<Integer> ISPEC = IntVector.SPECIES_PREFERRED;
|
||||||
+ VectorSpecies<Float> FSPEC = FloatVector.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 " + ISPEC.vectorBitSize() + " bits (int)");
|
||||||
+ logger.log(Level.INFO, "Max SIMD vector size on this system is " + FSPEC.vectorBitSize() + " bits (float)");
|
+ logger.log(Level.INFO, "Max SIMD vector size on this system is " + FSPEC.vectorBitSize() + " bits (float)");
|
||||||
+
|
+
|
||||||
+ if (ISPEC.elementSize() < 2 || FSPEC.elementSize() < 2) {
|
+ if (ISPEC.elementSize() < 2 || FSPEC.elementSize() < 2) {
|
||||||
+ logger.log(Level.WARNING, "SIMD is not properly supported on this system!");
|
+ logger.log(Level.WARNING, "SIMD is not properly supported on this system!");
|
||||||
+ return false;
|
+ return false;
|
||||||
@@ -256,11 +256,11 @@ index 0000000000000000000000000000000000000000..6d266ebf5e52745ad13e90e5754b5243
|
|||||||
+ } catch (NoClassDefFoundError | Exception ignored) {} // Basically, we don't do anything. This lets us detect if it's not functional and disable it.
|
+ } catch (NoClassDefFoundError | Exception ignored) {} // Basically, we don't do anything. This lets us detect if it's not functional and disable it.
|
||||||
+ return false;
|
+ return false;
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+}
|
+}
|
||||||
diff --git a/src/main/java/gg/pufferfish/pufferfish/simd/SIMDDetection.java b/src/main/java/gg/pufferfish/pufferfish/simd/SIMDDetection.java
|
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
|
new file mode 100644
|
||||||
index 0000000000000000000000000000000000000000..fd708554d6dab2ddcd24c3024330b8ebf9462111
|
index 0000000000000000000000000000000000000000..a84889d3e9cfc4d7ab5f867820a6484c6070711b
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/src/main/java/gg/pufferfish/pufferfish/simd/SIMDDetection.java
|
+++ b/src/main/java/gg/pufferfish/pufferfish/simd/SIMDDetection.java
|
||||||
@@ -0,0 +1,35 @@
|
@@ -0,0 +1,35 @@
|
||||||
@@ -270,11 +270,11 @@ index 0000000000000000000000000000000000000000..fd708554d6dab2ddcd24c3024330b8eb
|
|||||||
+
|
+
|
||||||
+@Deprecated
|
+@Deprecated
|
||||||
+public class SIMDDetection {
|
+public class SIMDDetection {
|
||||||
+
|
+
|
||||||
+ public static boolean isEnabled = false;
|
+ public static boolean isEnabled = false;
|
||||||
+ public static boolean versionLimited = false;
|
+ public static boolean versionLimited = false;
|
||||||
+ public static boolean testRun = false;
|
+ public static boolean testRun = false;
|
||||||
+
|
+
|
||||||
+ @Deprecated
|
+ @Deprecated
|
||||||
+ public static boolean canEnable(Logger logger) {
|
+ public static boolean canEnable(Logger logger) {
|
||||||
+ try {
|
+ try {
|
||||||
@@ -283,7 +283,7 @@ index 0000000000000000000000000000000000000000..fd708554d6dab2ddcd24c3024330b8eb
|
|||||||
+ return false;
|
+ return false;
|
||||||
+ }
|
+ }
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ @Deprecated
|
+ @Deprecated
|
||||||
+ public static int getJavaVersion() {
|
+ public static int getJavaVersion() {
|
||||||
+ // https://stackoverflow.com/a/2591122
|
+ // https://stackoverflow.com/a/2591122
|
||||||
@@ -297,11 +297,11 @@ index 0000000000000000000000000000000000000000..fd708554d6dab2ddcd24c3024330b8eb
|
|||||||
+ version = version.split("-")[0]; // Azul is stupid
|
+ version = version.split("-")[0]; // Azul is stupid
|
||||||
+ return Integer.parseInt(version);
|
+ 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
|
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
|
new file mode 100644
|
||||||
index 0000000000000000000000000000000000000000..20ec3b29b0cb4061cc89d635b3929ffe71008e22
|
index 0000000000000000000000000000000000000000..ae2464920c9412ac90b819a540ee58be0741465f
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/src/main/java/gg/pufferfish/pufferfish/simd/VectorMapPalette.java
|
+++ b/src/main/java/gg/pufferfish/pufferfish/simd/VectorMapPalette.java
|
||||||
@@ -0,0 +1,83 @@
|
@@ -0,0 +1,83 @@
|
||||||
@@ -316,10 +316,10 @@ index 0000000000000000000000000000000000000000..20ec3b29b0cb4061cc89d635b3929ffe
|
|||||||
+
|
+
|
||||||
+@Deprecated
|
+@Deprecated
|
||||||
+public class VectorMapPalette {
|
+public class VectorMapPalette {
|
||||||
+
|
+
|
||||||
+ private static final VectorSpecies<Integer> I_SPEC = IntVector.SPECIES_PREFERRED;
|
+ private static final VectorSpecies<Integer> I_SPEC = IntVector.SPECIES_PREFERRED;
|
||||||
+ private static final VectorSpecies<Float> F_SPEC = FloatVector.SPECIES_PREFERRED;
|
+ private static final VectorSpecies<Float> F_SPEC = FloatVector.SPECIES_PREFERRED;
|
||||||
+
|
+
|
||||||
+ @Deprecated
|
+ @Deprecated
|
||||||
+ public static void matchColorVectorized(int[] in, byte[] out) {
|
+ public static void matchColorVectorized(int[] in, byte[] out) {
|
||||||
+ int speciesLength = I_SPEC.length();
|
+ int speciesLength = I_SPEC.length();
|
||||||
@@ -329,67 +329,67 @@ index 0000000000000000000000000000000000000000..20ec3b29b0cb4061cc89d635b3929ffe
|
|||||||
+ float[] bluesArr = new float[speciesLength];
|
+ float[] bluesArr = new float[speciesLength];
|
||||||
+ float[] greensArr = new float[speciesLength];
|
+ float[] greensArr = new float[speciesLength];
|
||||||
+ int[] alphasArr = new int[speciesLength];
|
+ int[] alphasArr = new int[speciesLength];
|
||||||
+
|
+
|
||||||
+ for (int j = 0; j < speciesLength; j++) {
|
+ for (int j = 0; j < speciesLength; j++) {
|
||||||
+ alphasArr[j] = (in[i + j] >> 24) & 0xFF;
|
+ alphasArr[j] = (in[i + j] >> 24) & 0xFF;
|
||||||
+ redsArr[j] = (in[i + j] >> 16) & 0xFF;
|
+ redsArr[j] = (in[i + j] >> 16) & 0xFF;
|
||||||
+ greensArr[j] = (in[i + j] >> 8) & 0xFF;
|
+ greensArr[j] = (in[i + j] >> 8) & 0xFF;
|
||||||
+ bluesArr[j] = (in[i + j] >> 0) & 0xFF;
|
+ bluesArr[j] = (in[i + j] >> 0) & 0xFF;
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ IntVector alphas = IntVector.fromArray(I_SPEC, alphasArr, 0);
|
+ IntVector alphas = IntVector.fromArray(I_SPEC, alphasArr, 0);
|
||||||
+ FloatVector reds = FloatVector.fromArray(F_SPEC, redsArr, 0);
|
+ FloatVector reds = FloatVector.fromArray(F_SPEC, redsArr, 0);
|
||||||
+ FloatVector greens = FloatVector.fromArray(F_SPEC, greensArr, 0);
|
+ FloatVector greens = FloatVector.fromArray(F_SPEC, greensArr, 0);
|
||||||
+ FloatVector blues = FloatVector.fromArray(F_SPEC, bluesArr, 0);
|
+ FloatVector blues = FloatVector.fromArray(F_SPEC, bluesArr, 0);
|
||||||
+ IntVector resultIndex = IntVector.zero(I_SPEC);
|
+ IntVector resultIndex = IntVector.zero(I_SPEC);
|
||||||
+ VectorMask<Integer> modificationMask = VectorMask.fromLong(I_SPEC, 0xffffffff);
|
+ VectorMask<Integer> modificationMask = VectorMask.fromLong(I_SPEC, 0xffffffff);
|
||||||
+
|
+
|
||||||
+ modificationMask = modificationMask.and(alphas.lt(128).not());
|
+ modificationMask = modificationMask.and(alphas.lt(128).not());
|
||||||
+ FloatVector bestDistances = FloatVector.broadcast(F_SPEC, Float.MAX_VALUE);
|
+ FloatVector bestDistances = FloatVector.broadcast(F_SPEC, Float.MAX_VALUE);
|
||||||
+
|
+
|
||||||
+ for (int c = 4; c < MapPalette.colors.length; c++) {
|
+ 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.
|
+ // 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.
|
+ // For correctness, the original algorithm uses 64-bit floats instead. Completely unnecessary.
|
||||||
+ FloatVector compReds = FloatVector.broadcast(F_SPEC, MapPalette.colors[c].getRed());
|
+ FloatVector compReds = FloatVector.broadcast(F_SPEC, MapPalette.colors[c].getRed());
|
||||||
+ FloatVector compGreens = FloatVector.broadcast(F_SPEC, MapPalette.colors[c].getGreen());
|
+ FloatVector compGreens = FloatVector.broadcast(F_SPEC, MapPalette.colors[c].getGreen());
|
||||||
+ FloatVector compBlues = FloatVector.broadcast(F_SPEC, MapPalette.colors[c].getBlue());
|
+ FloatVector compBlues = FloatVector.broadcast(F_SPEC, MapPalette.colors[c].getBlue());
|
||||||
+
|
+
|
||||||
+ FloatVector rMean = reds.add(compReds).div(2.0f);
|
+ FloatVector rMean = reds.add(compReds).div(2.0f);
|
||||||
+ FloatVector rDiff = reds.sub(compReds);
|
+ FloatVector rDiff = reds.sub(compReds);
|
||||||
+ FloatVector gDiff = greens.sub(compGreens);
|
+ FloatVector gDiff = greens.sub(compGreens);
|
||||||
+ FloatVector bDiff = blues.sub(compBlues);
|
+ FloatVector bDiff = blues.sub(compBlues);
|
||||||
+
|
+
|
||||||
+ FloatVector weightR = rMean.div(256.0f).add(2);
|
+ FloatVector weightR = rMean.div(256.0f).add(2);
|
||||||
+ FloatVector weightG = FloatVector.broadcast(F_SPEC, 4.0f);
|
+ 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 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));
|
+ 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.
|
+ // Now we compare to the best distance we've found.
|
||||||
+ // This mask contains a "1" if better, and a "0" otherwise.
|
+ // This mask contains a "1" if better, and a "0" otherwise.
|
||||||
+ VectorMask<Float> bestDistanceMask = distance.lt(bestDistances);
|
+ VectorMask<Float> bestDistanceMask = distance.lt(bestDistances);
|
||||||
+ bestDistances = bestDistances.blend(distance, bestDistanceMask); // Update the best distances
|
+ bestDistances = bestDistances.blend(distance, bestDistanceMask); // Update the best distances
|
||||||
+
|
+
|
||||||
+ // Update the result array
|
+ // 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.
|
+ // 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
|
+ resultIndex = resultIndex.blend(c, bestDistanceMask.cast(I_SPEC).and(modificationMask)); // Update the results
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ for (int j = 0; j < speciesLength; j++) {
|
+ for (int j = 0; j < speciesLength; j++) {
|
||||||
+ int index = resultIndex.lane(j);
|
+ int index = resultIndex.lane(j);
|
||||||
+ out[i + j] = (byte) (index < 128 ? index : -129 + (index - 127));
|
+ out[i + j] = (byte) (index < 128 ? index : -129 + (index - 127));
|
||||||
+ }
|
+ }
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ // For the final ones, fall back to the regular method
|
+ // For the final ones, fall back to the regular method
|
||||||
+ for (; i < in.length; i++) {
|
+ for (; i < in.length; i++) {
|
||||||
+ out[i] = MapPalette.matchColor(new Color(in[i], true));
|
+ 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
|
diff --git a/src/main/java/org/bukkit/map/MapPalette.java b/src/main/java/org/bukkit/map/MapPalette.java
|
||||||
index 3a9aaca2e76411a9c27f9f5e0f22d060d5a66d06..9584e245144b561b4f6745b2f26a4f69a6f92891 100644
|
index c80faa079eca1564847070f0338fc98024639829..e632d51d3487eb4807243b6705999ad124466bf5 100644
|
||||||
--- a/src/main/java/org/bukkit/map/MapPalette.java
|
--- a/src/main/java/org/bukkit/map/MapPalette.java
|
||||||
+++ b/src/main/java/org/bukkit/map/MapPalette.java
|
+++ b/src/main/java/org/bukkit/map/MapPalette.java
|
||||||
@@ -1,6 +1,7 @@
|
@@ -1,6 +1,7 @@
|
||||||
@@ -426,7 +426,7 @@ index 3a9aaca2e76411a9c27f9f5e0f22d060d5a66d06..9584e245144b561b4f6745b2f26a4f69
|
|||||||
}
|
}
|
||||||
|
|
||||||
diff --git a/src/main/java/org/bukkit/plugin/SimplePluginManager.java b/src/main/java/org/bukkit/plugin/SimplePluginManager.java
|
diff --git a/src/main/java/org/bukkit/plugin/SimplePluginManager.java b/src/main/java/org/bukkit/plugin/SimplePluginManager.java
|
||||||
index 2b8308989fce7f8a16907f8711b362e671fdbfb6..bd4d1a40f53784662174d426533ef4b5433a15b7 100644
|
index fc2dae69165776d08274e34a69962cc70445f411..899d67fa782fac639fe7fb096e05c551d75bd647 100644
|
||||||
--- a/src/main/java/org/bukkit/plugin/SimplePluginManager.java
|
--- a/src/main/java/org/bukkit/plugin/SimplePluginManager.java
|
||||||
+++ b/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 {
|
@@ -584,7 +584,9 @@ public final class SimplePluginManager implements PluginManager {
|
||||||
@@ -480,10 +480,10 @@ index eaefbb00e9993d54906cc8cf35cf753c0d6c7707..301e82369603f3dd6e6c1bd380da4bac
|
|||||||
|
|
||||||
if (cloader instanceof PluginClassLoader) {
|
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
|
diff --git a/src/main/java/org/bukkit/plugin/java/PluginClassLoader.java b/src/main/java/org/bukkit/plugin/java/PluginClassLoader.java
|
||||||
index 1758e8a89c85eea8c2161ddcb5b0e745151a1f5e..fe21d31b463317eb90d58cbca5f098958ca93938 100644
|
index 7e4f7cb2afbc145e532285c793573ad107bc3033..12449e18180d604e9cbbc744da74a8b222a18e1f 100644
|
||||||
--- a/src/main/java/org/bukkit/plugin/java/PluginClassLoader.java
|
--- a/src/main/java/org/bukkit/plugin/java/PluginClassLoader.java
|
||||||
+++ b/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
|
@@ -50,6 +50,8 @@ public final class PluginClassLoader extends URLClassLoader implements io.paperm
|
||||||
private io.papermc.paper.plugin.provider.classloader.PluginClassLoaderGroup classLoaderGroup; // Paper
|
private io.papermc.paper.plugin.provider.classloader.PluginClassLoaderGroup classLoaderGroup; // Paper
|
||||||
public io.papermc.paper.plugin.provider.entrypoint.DependencyContext dependencyContext; // Paper
|
public io.papermc.paper.plugin.provider.entrypoint.DependencyContext dependencyContext; // Paper
|
||||||
|
|
||||||
@@ -492,7 +492,7 @@ index 1758e8a89c85eea8c2161ddcb5b0e745151a1f5e..fe21d31b463317eb90d58cbca5f09895
|
|||||||
static {
|
static {
|
||||||
ClassLoader.registerAsParallelCapable();
|
ClassLoader.registerAsParallelCapable();
|
||||||
}
|
}
|
||||||
@@ -183,6 +185,7 @@ public final class PluginClassLoader extends URLClassLoader implements io.paperm
|
@@ -197,6 +199,7 @@ public final class PluginClassLoader extends URLClassLoader implements io.paperm
|
||||||
throw new ClassNotFoundException(name);
|
throw new ClassNotFoundException(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -500,7 +500,7 @@ index 1758e8a89c85eea8c2161ddcb5b0e745151a1f5e..fe21d31b463317eb90d58cbca5f09895
|
|||||||
@Override
|
@Override
|
||||||
protected Class<?> findClass(String name) throws ClassNotFoundException {
|
protected Class<?> findClass(String name) throws ClassNotFoundException {
|
||||||
if (name.startsWith("org.bukkit.") || name.startsWith("net.minecraft.")) {
|
if (name.startsWith("org.bukkit.") || name.startsWith("net.minecraft.")) {
|
||||||
@@ -190,7 +193,7 @@ public final class PluginClassLoader extends URLClassLoader implements io.paperm
|
@@ -204,7 +207,7 @@ public final class PluginClassLoader extends URLClassLoader implements io.paperm
|
||||||
}
|
}
|
||||||
Class<?> result = classes.get(name);
|
Class<?> result = classes.get(name);
|
||||||
|
|
||||||
@@ -509,7 +509,7 @@ index 1758e8a89c85eea8c2161ddcb5b0e745151a1f5e..fe21d31b463317eb90d58cbca5f09895
|
|||||||
String path = name.replace('.', '/').concat(".class");
|
String path = name.replace('.', '/').concat(".class");
|
||||||
JarEntry entry = jar.getJarEntry(path);
|
JarEntry entry = jar.getJarEntry(path);
|
||||||
|
|
||||||
@@ -237,6 +240,7 @@ public final class PluginClassLoader extends URLClassLoader implements io.paperm
|
@@ -251,6 +254,7 @@ public final class PluginClassLoader extends URLClassLoader implements io.paperm
|
||||||
this.setClass(name, result); // Paper
|
this.setClass(name, result); // Paper
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -517,7 +517,7 @@ index 1758e8a89c85eea8c2161ddcb5b0e745151a1f5e..fe21d31b463317eb90d58cbca5f09895
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -251,6 +255,7 @@ public final class PluginClassLoader extends URLClassLoader implements io.paperm
|
@@ -265,6 +269,7 @@ public final class PluginClassLoader extends URLClassLoader implements io.paperm
|
||||||
// Paper end
|
// Paper end
|
||||||
super.close();
|
super.close();
|
||||||
} finally {
|
} finally {
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
115
patches/api/0003-Use-Gradle-Version-Catalogs.patch
Normal file
115
patches/api/0003-Use-Gradle-Version-Catalogs.patch
Normal file
@@ -0,0 +1,115 @@
|
|||||||
|
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 09e541dcbbb43699b4402036b8a3cc86a0ac9aad..085cdd8ccdc27f94b22baab7ea4ac0d02769378f 100644
|
||||||
|
--- a/build.gradle.kts
|
||||||
|
+++ b/build.gradle.kts
|
||||||
|
@@ -9,11 +9,13 @@ java {
|
||||||
|
withJavadocJar()
|
||||||
|
}
|
||||||
|
|
||||||
|
+/* // Plazma - Use Gradle Version Catalogs
|
||||||
|
val annotationsVersion = "24.0.1"
|
||||||
|
val bungeeCordChatVersion = "1.20-R0.2"
|
||||||
|
val adventureVersion = "4.16.0"
|
||||||
|
val slf4jVersion = "2.0.9"
|
||||||
|
val log4jVersion = "2.17.1"
|
||||||
|
+ */ // Plazma - Use Gradle Version Catalogs
|
||||||
|
val apiAndDocs: Configuration by configurations.creating {
|
||||||
|
attributes {
|
||||||
|
attribute(Category.CATEGORY_ATTRIBUTE, objects.named(Category.DOCUMENTATION))
|
||||||
|
@@ -27,6 +29,7 @@ configurations.api {
|
||||||
|
}
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
+ /* // Plazma - Use Gradle Version Catalogs
|
||||||
|
// 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")
|
||||||
|
@@ -39,6 +42,34 @@ dependencies {
|
||||||
|
api("org.joml:joml:1.10.5")
|
||||||
|
// Paper start
|
||||||
|
api("com.googlecode.json-simple:json-simple:1.1.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 // includes junit
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ apiAndDocs(common.bundles.adventure)
|
||||||
|
+ apiAndDocs(platform(common.adventure.bom))
|
||||||
|
+
|
||||||
|
+ compileOnly(api.findbugs)
|
||||||
|
+ compileOnly(api.annotations)
|
||||||
|
+ compileOnly(common.bundles.maven)
|
||||||
|
+
|
||||||
|
+ compileOnlyApi(api.checkerqual)
|
||||||
|
+
|
||||||
|
+ testImplementation(common.asm.tree)
|
||||||
|
+ testImplementation(common.bundles.test)
|
||||||
|
+ testImplementation(common.commons.lang3)
|
||||||
|
+
|
||||||
|
+ testCompileOnly(api.bundles.annotations)
|
||||||
|
+ /*
|
||||||
|
+ // Plazma end - Use Gradle Version Catalogs
|
||||||
|
isTransitive = false // includes junit
|
||||||
|
}
|
||||||
|
api("it.unimi.dsi:fastutil:8.5.6")
|
||||||
|
@@ -76,6 +107,7 @@ dependencies {
|
||||||
|
testImplementation("org.hamcrest:hamcrest:2.2")
|
||||||
|
testImplementation("org.mockito:mockito-core:5.11.0")
|
||||||
|
testImplementation("org.ow2.asm:asm-tree:9.7")
|
||||||
|
+ */ // Plazma - Use Gradle Version Catalogs
|
||||||
|
}
|
||||||
|
|
||||||
|
// Paper start
|
||||||
|
@@ -136,25 +168,25 @@ 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://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}/", // 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://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}",
|
||||||
|
// Paper end
|
||||||
|
// Paper start
|
||||||
|
- "https://jd.advntr.dev/api/$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/",
|
||||||
|
+ "https://jd.advntr.dev/api/${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://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}/",
|
||||||
|
// Paper end
|
||||||
|
- "https://javadoc.io/doc/org.apache.maven.resolver/maven-resolver-api/1.7.3", // Paper
|
||||||
|
+ "https://javadoc.io/doc/org.apache.maven.resolver/maven-resolver-api/${common.maven.connector.orNull?.version}", // Paper
|
||||||
|
)
|
||||||
|
options.tags("apiNote:a:API Note:")
|
||||||
|
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: AlphaKR93 <alphakr93@outlook.com>
|
|
||||||
Date: Thu, 22 Dec 2022 20:29:45 +0900
|
|
||||||
Subject: [PATCH] Bump Bungeecord Chat API to 1.19-R0.1-SNAPSHOT
|
|
||||||
|
|
||||||
|
|
||||||
diff --git a/build.gradle.kts b/build.gradle.kts
|
|
||||||
index b5835fa536f90b7f88a5ee4df78733cf43e1cb23..42de5c470a2fbb1e0bc9b809c033e3afe30502fa 100644
|
|
||||||
--- a/build.gradle.kts
|
|
||||||
+++ b/build.gradle.kts
|
|
||||||
@@ -25,7 +25,7 @@ dependencies {
|
|
||||||
// api dependencies are listed transitively to API consumers
|
|
||||||
api("com.google.guava:guava:31.1-jre")
|
|
||||||
api("com.google.code.gson:gson:2.10")
|
|
||||||
- api("net.md-5:bungeecord-chat:1.16-R0.4-deprecated+build.9") // Paper
|
|
||||||
+ api("net.md-5:bungeecord-chat:1.19-R0.1-SNAPSHOT") // Paper // Plazma
|
|
||||||
api("org.yaml:snakeyaml:1.33")
|
|
||||||
api("org.joml:joml:1.10.5")
|
|
||||||
// Paper start
|
|
||||||
@@ -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 e0f69edf603c2ec99bc92b16b18912272cc41bd9..188cd7b3270422719297a6fd3ecec4a20d9b4f3c 100644
|
index c15b0b05870a469ea5d314c9fac6a57a045f463c..b55834f2477d18290b2985685eeeb249114dca67 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
|
||||||
@@ -1971,6 +1971,13 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi
|
@@ -2247,6 +2247,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() {
|
*
|
||||||
79
patches/api/0005-Optimize-Spigot-event-bus.patch
Normal file
79
patches/api/0005-Optimize-Spigot-event-bus.patch
Normal file
@@ -0,0 +1,79 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: IPECTER <ipectert@gmail.com>
|
||||||
|
Date: Wed, 6 Sep 2023 15:04:25 +0900
|
||||||
|
Subject: [PATCH] Optimize Spigot event bus
|
||||||
|
|
||||||
|
|
||||||
|
diff --git a/src/main/java/org/bukkit/event/Event.java b/src/main/java/org/bukkit/event/Event.java
|
||||||
|
index 8ec56cd6b8e0f5c5dd8c7c88b4671e18dcf109d0..f1b3559bf9d2023ca59330c65e6e34714759dd9d 100644
|
||||||
|
--- a/src/main/java/org/bukkit/event/Event.java
|
||||||
|
+++ b/src/main/java/org/bukkit/event/Event.java
|
||||||
|
@@ -14,7 +14,7 @@ import org.jetbrains.annotations.NotNull;
|
||||||
|
*/
|
||||||
|
public abstract class Event {
|
||||||
|
private String name;
|
||||||
|
- private final boolean async;
|
||||||
|
+ private final net.kyori.adventure.util.TriState async; // Plazma - Optimize spigot event bus
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The default constructor is defined for cleaner code. This constructor
|
||||||
|
@@ -32,9 +32,35 @@ public abstract class Event {
|
||||||
|
* by default from default constructor
|
||||||
|
*/
|
||||||
|
public Event(boolean isAsync) {
|
||||||
|
+ this(net.kyori.adventure.util.TriState.byBoolean(isAsync)); // Plazma - Optimize spigot event bus
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ // Plazma start - Optimize spigot event bus
|
||||||
|
+ /**
|
||||||
|
+ * This constructor is used to explicitly declare an event as synchronous
|
||||||
|
+ * or asynchronous or potentially unset.
|
||||||
|
+ *
|
||||||
|
+ * @param isAsync true indicates the event will fire asynchronously, false
|
||||||
|
+ * by default from default constructor, unset indicates that the event may be called on either the server thread or off the server
|
||||||
|
+ * thread.
|
||||||
|
+ */
|
||||||
|
+ public Event(@NotNull final net.kyori.adventure.util.TriState isAsync) {
|
||||||
|
this.async = isAsync;
|
||||||
|
}
|
||||||
|
|
||||||
|
+ /**
|
||||||
|
+ * Returns a tristate that, when resolving to true or false, has the exact indications defined by {@link #isAsynchronous()}.
|
||||||
|
+ * <p>
|
||||||
|
+ * If the tristate resolves to NOT_SET, the event may or may not have been fired off the main thread, meaning a plugin would have
|
||||||
|
+ * to validate what thread the spigot event bus was called on.
|
||||||
|
+ *
|
||||||
|
+ * @return the tristate enum.
|
||||||
|
+ */
|
||||||
|
+ public final @NotNull net.kyori.adventure.util.TriState asynchronous() {
|
||||||
|
+ return this.async;
|
||||||
|
+ }
|
||||||
|
+ // Plazma end - Optimize Spigot event bus
|
||||||
|
+
|
||||||
|
// Paper start
|
||||||
|
/**
|
||||||
|
* Calls the event and tests if cancelled.
|
||||||
|
@@ -92,7 +118,7 @@ public abstract class Event {
|
||||||
|
* @return false by default, true if the event fires asynchronously
|
||||||
|
*/
|
||||||
|
public final boolean isAsynchronous() {
|
||||||
|
- return async;
|
||||||
|
+ return this.async == net.kyori.adventure.util.TriState.TRUE; // Plazma - Optimize spigot event bus
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum Result {
|
||||||
|
diff --git a/src/main/java/org/bukkit/plugin/RegisteredListener.java b/src/main/java/org/bukkit/plugin/RegisteredListener.java
|
||||||
|
index 3b3d9642a8d63798dc28f2f8df77f0466451cbff..0702e1692f7e671188ac18e22ca29f369b0b6352 100644
|
||||||
|
--- a/src/main/java/org/bukkit/plugin/RegisteredListener.java
|
||||||
|
+++ b/src/main/java/org/bukkit/plugin/RegisteredListener.java
|
||||||
|
@@ -62,8 +62,8 @@ public class RegisteredListener {
|
||||||
|
* @throws EventException If an event handler throws an exception.
|
||||||
|
*/
|
||||||
|
public void callEvent(@NotNull final Event event) throws EventException {
|
||||||
|
- if (event instanceof Cancellable) {
|
||||||
|
- if (((Cancellable) event).isCancelled() && isIgnoringCancelled()) {
|
||||||
|
+ if (isIgnoringCancelled()) { // Plazma - Optimize spigot event bus
|
||||||
|
+ if (event instanceof Cancellable cancellable && cancellable.isCancelled()) { // Plazma - Optimize spigot event bus
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,34 +0,0 @@
|
|||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: AlphaKR93 <alphakr93@outlook.com>
|
|
||||||
Date: Fri, 6 Jan 2023 17:11:31 +0900
|
|
||||||
Subject: [PATCH] Publish Packages
|
|
||||||
|
|
||||||
|
|
||||||
diff --git a/build.gradle.kts b/build.gradle.kts
|
|
||||||
index 42de5c470a2fbb1e0bc9b809c033e3afe30502fa..c2c506afd44c7f14de51bd93004aa8a32ff2103e 100644
|
|
||||||
--- a/build.gradle.kts
|
|
||||||
+++ b/build.gradle.kts
|
|
||||||
@@ -155,3 +155,23 @@ 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
|
|
||||||
19
patches/api/0006-Implement-No-Chat-Reports.patch
Normal file
19
patches/api/0006-Implement-No-Chat-Reports.patch
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: AlphaKR93 <dev@alpha93.kr>
|
||||||
|
Date: Thu, 28 Sep 2023 12:21:36 +0900
|
||||||
|
Subject: [PATCH] Implement No Chat Reports
|
||||||
|
|
||||||
|
|
||||||
|
diff --git a/src/main/java/org/bukkit/event/player/PlayerKickEvent.java b/src/main/java/org/bukkit/event/player/PlayerKickEvent.java
|
||||||
|
index f7f864a2b46129e4d61bc87f3e23c343417aa094..eb3cc41388a210f000bf637bfae135081bee51e9 100644
|
||||||
|
--- a/src/main/java/org/bukkit/event/player/PlayerKickEvent.java
|
||||||
|
+++ b/src/main/java/org/bukkit/event/player/PlayerKickEvent.java
|
||||||
|
@@ -216,6 +216,8 @@ public class PlayerKickEvent extends PlayerEvent implements Cancellable {
|
||||||
|
* Fallback cause
|
||||||
|
*/
|
||||||
|
UNKNOWN,
|
||||||
|
+
|
||||||
|
+ NCR_NOT_INSTALLED, // Plazma - Implement No Chat Reports
|
||||||
|
}
|
||||||
|
// Paper end
|
||||||
|
}
|
||||||
@@ -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 069f2668f5229b0368b796e65eef1648fba0a097..9b991201a2f6cc9feccccf7f4e7bcded64117764 100644
|
||||||
|
--- a/com/destroystokyo/paper/entity/ai/VanillaGoal.java
|
||||||
|
+++ b/com/destroystokyo/paper/entity/ai/VanillaGoal.java
|
||||||
|
@@ -442,6 +442,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
|
||||||
|
+
|
||||||
|
/**
|
||||||
|
* Removed in 1.20.2
|
||||||
|
*/
|
||||||
19
patches/mojang-api/0001-Rebrand.patch
Normal file
19
patches/mojang-api/0001-Rebrand.patch
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Alpha <dev@alpha93.kr>
|
||||||
|
Date: Tue, 27 Feb 2024 18:36:43 +0900
|
||||||
|
Subject: [PATCH] Rebrand
|
||||||
|
|
||||||
|
|
||||||
|
diff --git a/build.gradle.kts b/build.gradle.kts
|
||||||
|
index a278ee93d7001e8dc7fd2f5409c2f528c637cb2f..a00cf1659f1fd9dff3ff34561d78732645b51dfb 100644
|
||||||
|
--- a/build.gradle.kts
|
||||||
|
+++ b/build.gradle.kts
|
||||||
|
@@ -9,7 +9,7 @@ java {
|
||||||
|
}
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
- implementation(project(":paper-api"))
|
||||||
|
+ implementation(project(":plazma-api")) // Plazma - Rebrand
|
||||||
|
api("com.mojang:brigadier:1.0.18")
|
||||||
|
|
||||||
|
compileOnly("it.unimi.dsi:fastutil:8.5.6")
|
||||||
19
patches/placeholder/server/0007-Development-Build.patch
Normal file
19
patches/placeholder/server/0007-Development-Build.patch
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: AlphaKR93 <dev@alpha93.kr>
|
||||||
|
Date: Fri, 26 Jan 2024 15:34:53 +0900
|
||||||
|
Subject: [PATCH] Development Build
|
||||||
|
|
||||||
|
|
||||||
|
diff --git a/src/main/java/com/destroystokyo/paper/PaperVersionFetcher.java b/src/main/java/com/destroystokyo/paper/PaperVersionFetcher.java
|
||||||
|
index b04d3eea789f77b2435cb0192635f1be1bab597d..a58ce2c893d8c755ab3027207d512542d2d57c36 100644
|
||||||
|
--- a/src/main/java/com/destroystokyo/paper/PaperVersionFetcher.java
|
||||||
|
+++ b/src/main/java/com/destroystokyo/paper/PaperVersionFetcher.java
|
||||||
|
@@ -24,7 +24,7 @@ public class PaperVersionFetcher implements VersionFetcher {
|
||||||
|
private static int distance = -2; public int distance() { return distance; }
|
||||||
|
// Purpur end
|
||||||
|
private static @Nullable String mcVer;
|
||||||
|
- private static final boolean DEVELOPMENT = false; // Plazma
|
||||||
|
+ private static final boolean DEVELOPMENT = true; // Plazma
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public long getCacheTime() {
|
||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
87
patches/server/0003-Use-Gradle-Version-Catalogs.patch
Normal file
87
patches/server/0003-Use-Gradle-Version-Catalogs.patch
Normal file
@@ -0,0 +1,87 @@
|
|||||||
|
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] Use Gradle Version Catalogs
|
||||||
|
|
||||||
|
|
||||||
|
diff --git a/build.gradle.kts b/build.gradle.kts
|
||||||
|
index 1cad0728d..b97182b80 100644
|
||||||
|
--- a/build.gradle.kts
|
||||||
|
+++ b/build.gradle.kts
|
||||||
|
@@ -19,21 +19,38 @@ dependencies {
|
||||||
|
exclude("io.papermc.paper", "paper-api")
|
||||||
|
}
|
||||||
|
// Purpur end
|
||||||
|
+ // Plazma start - Use Gradle version catalogs
|
||||||
|
+ /*
|
||||||
|
// 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.14.0") // Keep in sync with adventureVersion from Paper-API build file
|
||||||
|
implementation("net.kyori:ansi:1.0.3") // Manually bump beyond above transitive dep
|
||||||
|
- /*
|
||||||
|
- 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
|
||||||
|
+ */
|
||||||
|
+ log4jPlugins.annotationProcessorConfigurationName(common.log4j.core)
|
||||||
|
+
|
||||||
|
+ implementation(common.log4j.core)
|
||||||
|
+ implementation(common.log4j.iostreams)
|
||||||
|
+ implementation(common.snakeyaml)
|
||||||
|
+ implementation(common.bundles.asm)
|
||||||
|
+ implementation(common.commons.lang2)
|
||||||
|
+ implementation(common.adventure.serializer.ansi)
|
||||||
|
+ implementation(server.ansi)
|
||||||
|
+ implementation(server.bundles.implementation)
|
||||||
|
+
|
||||||
|
+ runtimeOnly(common.bundles.maven)
|
||||||
|
+ runtimeOnly(common.maven.provider)
|
||||||
|
+ runtimeOnly(server.bundles.runtime)
|
||||||
|
runtimeOnly(log4jPlugins.output)
|
||||||
|
+
|
||||||
|
alsoShade(log4jPlugins.output)
|
||||||
|
+
|
||||||
|
+ testImplementation(common.bundles.test)
|
||||||
|
+ testImplementation(server.bundles.test)
|
||||||
|
+
|
||||||
|
+ /*
|
||||||
|
implementation("io.netty:netty-codec-haproxy:4.1.97.Final") // Paper - Add support for proxy protocol
|
||||||
|
// Paper end
|
||||||
|
implementation("org.apache.logging.log4j:log4j-iostreams:2.19.0") // Paper - remove exclusion
|
||||||
|
@@ -46,8 +63,11 @@ dependencies {
|
||||||
|
runtimeOnly("com.lmax:disruptor:3.4.4") // Paper
|
||||||
|
// Paper start - Use Velocity cipher
|
||||||
|
implementation("com.velocitypowered:velocity-native:3.1.2-SNAPSHOT") {
|
||||||
|
+ */
|
||||||
|
+ implementation(server.velocity) {
|
||||||
|
isTransitive = false
|
||||||
|
}
|
||||||
|
+ /*
|
||||||
|
// Paper end - Use Velocity cipher
|
||||||
|
|
||||||
|
runtimeOnly("org.apache.maven:maven-resolver-provider:3.9.6")
|
||||||
|
@@ -57,8 +77,11 @@ dependencies {
|
||||||
|
// Pufferfish start
|
||||||
|
implementation("org.yaml:snakeyaml:1.32")
|
||||||
|
implementation ("com.github.carleslc.Simple-YAML:Simple-Yaml:1.8.4") {
|
||||||
|
+ */
|
||||||
|
+ implementation(server.simpleyaml) {
|
||||||
|
exclude(group="org.yaml", module="snakeyaml")
|
||||||
|
}
|
||||||
|
+ /*
|
||||||
|
// Pufferfish end
|
||||||
|
|
||||||
|
implementation("org.mozilla:rhino-runtime:1.7.14") // Purpur
|
||||||
|
@@ -71,6 +94,7 @@ dependencies {
|
||||||
|
testImplementation("org.mockito:mockito-core:5.11.0")
|
||||||
|
testImplementation("org.ow2.asm:asm-tree:9.7")
|
||||||
|
testImplementation("org.junit-pioneer:junit-pioneer:2.2.0") // Paper - CartesianTest
|
||||||
|
+ */
|
||||||
|
}
|
||||||
|
|
||||||
|
val craftbukkitPackageVersion = "1_20_R3" // Paper
|
||||||
@@ -1,430 +0,0 @@
|
|||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: AlphaKR93 <alphakr93@gmail.com>
|
|
||||||
Date: Fri, 10 Mar 2023 22:08:56 +0900
|
|
||||||
Subject: [PATCH] Rebrand Logo
|
|
||||||
|
|
||||||
|
|
||||||
diff --git a/src/main/resources/logo.png b/src/main/resources/logo.png
|
|
||||||
index a7d785f60c884ee4ee487cc364402d66c3dc2ecc..278de5d47a7802ab89d9ae39c1560ef87d6d6fc4 100644
|
|
||||||
GIT binary patch
|
|
||||||
literal 7999
|
|
||||||
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
|
|
||||||
E0k}Z_!T<mO
|
|
||||||
|
|
||||||
literal 14310
|
|
||||||
zcmXY21yoy2uugDycPmm{N^yd_Q`}vP7YOd|PH`>8wLo!q*HRn`6f5rV?*HD)IX5{c
|
|
||||||
zxpy-=`|Zxo_svGBD$Agwkf4A-AaprdNp;|J<i86E0eG+0smTL@K32;~ifMY~oOB|4
|
|
||||||
zk?uFYy)FKcYT5sENxvF@$`?h3Gna1CI2cACKi}}1s=R8n*6JtRqsoMO0sL2S)G+$+
|
|
||||||
zwe03HtTTAKQV3~*0umofy#$i3BMyU+*?2sQemV<#a`oxkgdnZ$9;;DP_JdGD)$D|g
|
|
||||||
z72WX!|AFv<a0Dg>21vifLD%hMrT$lZeEex|7Xe0mqFAZArC{!qp)zJmbab@utqA`6
|
|
||||||
z61Z~|e!k$IbXNT?PvGuuzT7G514$8e!}lsR>%nURMm+~pde``@(!O=ISt0%B93;Ez
|
|
||||||
za-qRi4n0Q>zQ2#2^_y08QOl3jT*!Ir5@<8VrFx(6f<g#SP`8lK{xiWyOY4iZsp&Q=
|
|
||||||
zXovo!U=uNC1H)#a$L2hAG8ej#)@9UGQ&6z=D~(y(s8W?tT|q%%8g*tL5nUNV!1q4w
|
|
||||||
zeRWIAtsLkhESBPm*d~aq3v(ubbDuLjF`B-r-!^pxgk*TUXm=xJ*9`spkqyKL)-Cv^
|
|
||||||
z`8^ouoG~5&!3GjluYK_%ock-jO#u4LGOV+*m*_h@Lq1GH9dzMzWsmFt#}(Drl)XK(
|
|
||||||
zQiGay@j})8ip7q%+i3<AjGRCgj#PO|aSsm<DLJ`OLl8{|?=M!!l~%zKa*t`&^@{+b
|
|
||||||
z3(PVk#;sg9VGt*5X-SID-`6%{oo&Lsy0(^ma@J;{-0#LaIF4h5uxFbTu;_AZeEeLs
|
|
||||||
zLNk?{_3GEk+dJpSfS`FNkk)Ri=cNe*gNKjOkdHECB<K1b0}&JI#|4F|&#p1Q8&_sP
|
|
||||||
zF81!EW~%rmS*+Hr%&L%@%vdOyIkP!advkMuj+YY{$}eB4ZeVEmq6%0Fi^~&!f#qz&
|
|
||||||
zJ@eDL?}-cxD~K=N-b8XLb@*e}&dh95SWAmR(T6GNU!Gc3jfRzyrk2|RAnh;T1&tjU
|
|
||||||
z9b3)gDcKL5>9sP|H8ttjftN;wrX>jP4BcG1;MfU5x^L`zc0<A7b=d3bZvNqdokcd=
|
|
||||||
z*`V@M<m)S)O|$Lckz9XIk8U5OI(gk5oT@VpBOlnp10*i!lOX*;rPFtVl26td2FD7(
|
|
||||||
z&}(vX@)LNV_2Wu-P)Y!t^0R+1v1J4jYbzOp^9PpQXAeSYb0Ov2F&XP}7~VBqaWekX
|
|
||||||
z9(ZGr6got2TDP{XzJaszsGi=;YTxK~m#0z8N$BdPYc#h2D+D)@qww1|Sv@18E&%S1
|
|
||||||
zMgB!+=r6{z7co;mI(G=QBqd_fW(tt3{~4}eA9-}tb7H#-WUZAGk)<m7@5rJix@9k6
|
|
||||||
zz)xP&x^z%-BV&lb5fH=u(TqJ&@K!l7ppH~h5{+oTtu^w$ZGf#6y1NkSiVy5XmW?dd
|
|
||||||
zd@r@QxagUdnyLv!UsjL5OG2c-C$yp~BDS9mA2+dNA|gzMH2tuaC{F6%&LkqBjvNZS
|
|
||||||
zx}7I6TcoCPbw|)13o)T1FA9Q*M7W|N(}T;SHJcOuiOKV9dXT%kDH;-jKt3ghsRp13
|
|
||||||
z2SAb2Cjdnu3JjR)R+<OKwsEsh6@vbpD9GF>9u!bDBt#+l<W({$p3w2~%!OIy6U20i
|
|
||||||
zJDW%;$K4kscCQvjq=_S}SPO`WT$nRmuF%zqwdW2KSC_tfl)dh|3<aiMZF?RD>l=7@
|
|
||||||
zB;}A$BKgu}V?#qfHvm`~pt%wG2y{MOc%B!8I`p<X@<5o)EfV*g9pvGozhhJ)@Rrg_
|
|
||||||
zk51{HFj6-V7ubRs#Q?Qiq#}IDGT%r=g~%fw!jf<iMreD|VsUT6?cym+9ST)e->|pc
|
|
||||||
zO#?sq!Zd&j8UPmvY4RQnfo>!6{a}GFV!}g@qu<3Wu$07X(O`vikNW$~q!ngF23Ls2
|
|
||||||
z53p8js<-B_Qd?xX6rtq43Mdz(jOg2QXx#Wng_9^1^^~KqFNq{Kvb@Ap9}bf&xFA-C
|
|
||||||
z5+#cQ`#v$A=kd0O=agATcleBaxXf_(dnqbQz|cL9R&&Ni1omTs+6~YApmk)MCghxj
|
|
||||||
z1}mq&IU>1nEiF=q=PI`%jQbyRd=hVI83Sm{E-4uTc#w;NN<X9bHp)yNW*4(sF}kmh
|
|
||||||
zh|EV-<*{ALez=}IMFkaL#ki3?K7IY;3li<MO{AjE7$3B>wEW)C(C`xvWzY_%`_MmO
|
|
||||||
zD&g-sEaE)}6(&g)y-N&rNy;5@+{M`}!{60Y8wMgF5;HmO#B~hG`W$;7xLG*yF((rq
|
|
||||||
zxP6I#r#o`B3FppK{v(q1!C+YLFSfySDcHyoW!}EfzuCB1B|C5+oP}dt<N4UgYmmkJ
|
|
||||||
zu=mwXUDv!GNF`OyBy>ocnwkcNy1EZ6#5JX4=ePl&cu~0tMnt&79+I4%PaK>VqF<F{
|
|
||||||
zFZ1;DE;)Jdj`>x;r!Qd<o|T&8I*^GYG3A?bWY{3dQ+Z7>NmnxlEqdU-QR%Nmu{aWP
|
|
||||||
zJxwXv<K&Xd7ngEjj!ll3ELma&5vjOv@%HH>t5fFTCOV<Iwh1*<Rh|6j2Oq!>gB)Zq
|
|
||||||
z%H0U=9q7Y0lu&1kc4zYT3*lHA@XJfoK>3WFM&WWf2u6^+wCm8##D$x@Gkw+t^HoO(
|
|
||||||
z4pxDRqg;$5S=t^k22H5^V3V0Qfy%Ogl8I%LD$52=7)J>Ki9Ej1HyEi_u<Ky8nQV9t
|
|
||||||
z1(){P4e~c8WP(r`0t1nf8q6LW8?yt24Rqh1@Is!PaJEIFD0kufqd8?cxNzdq(}kLT
|
|
||||||
zuop#`KYTG+6f^N-J(U@l5n-7oK}@pcl&sDW<4Hw*&Gd9P;1Y_IT4yLQ@eOgPM!4t?
|
|
||||||
zv2K&6a4V+_7*?@1QlSXCBYfZX-mqFtqBL0{O<pcmuX>jELlz8$-+?cdD1Zxi02kW0
|
|
||||||
zaY=caFq4~s^R?zxcc3Z0X|az}Aww<{P$>6rk+5Di5J7$kWor0{Q&>+DWSBH^Gf`SP
|
|
||||||
zT{4}IOFh-hB7xwBdewq%de)q6QvxorV(()2>@j8i!kj)=<pXWeWZ(!&WCXYnJ(9dA
|
|
||||||
zhX`T@<E0GYl1247;Ses8Miyue;JI-q&Ziv;WJDEig*+%Pa5cvlHZ{GHH0xb?Za#Zj
|
|
||||||
zVU&wK|K~8kUt<~Db=5<o2Z49_J$0WXc?NAAAl-7|OG^gH)b<J|<u8%?EwB%)SZL!}
|
|
||||||
zUj0&76rIGg=2|6pHzsPHh<NR^BYz(lxO`Such&!htsiA@!<wr9@s7Su8ZD@iut7|I
|
|
||||||
zI;8w)-X-=+;jK00=?KXuIO+95T@)%$Wd_5`CFrfQG3`t;AOox!C|vLH%Z+1hPdPk&
|
|
||||||
zBWq?I+*jBk#h=lqY`AA}EqhHKiT}BNz#565iu9yu`-sqxhg6aq6<8I3Hwud(i>^hN
|
|
||||||
zl_N{$9xTHHA;V&Zx#tX&1pOO;<Ro@U45P!qAo?AASuYG*AYY&Ooi%x#%b)CFP0)D$
|
|
||||||
zs39{c0pHwy6+br@o&oE(5r`yfX10?(Fffn|$zj$3rqwf1kKN%NjPOs6Ko+jeK8t8t
|
|
||||||
zZx!Xg7{0F}|D=485U;R4V#!FyH#7-I#>v^NiOP#_UK@J;;lp+OOh<G`dG#Z+jD8-`
|
|
||||||
zuGy;l*h58S+P=TP-=A_HB{FdD&mXP-E`%KevQ3P5GJf@<`6K!%xGPSBBQ=b8+by`z
|
|
||||||
z5Ob1euIOf~IG*wn$@apA1`c${!tLpwm<=yl7WzaNXRmESFcVW!G&3_Qe|`w<$wfvK
|
|
||||||
zzN_sx8JSxzJ4}(5eP0U(4k99HewGgYSab}S5%pb|_xmtAY}LP&5^m0L==sR9mZtl~
|
|
||||||
zApb2RPCSW&4QJ<2P7&_<g<QMyBMXgB6I)wIw7y3nITujN=$q|AV1wD;p;U!Zst(=~
|
|
||||||
zl#i;Ou@6a!5pxX{btAw^GwAAQX}w2PQN9Vh!wA9sO61}kN_y2cdFQ3VN5nv-%$AZz
|
|
||||||
z`<&Gn`0Ycs5ePb+?E+(#J!nCW5szhQ6yKMr>OOO2mlMdxM;Qv-mWG+^vzox|8t`w|
|
|
||||||
z=gPlM3)y6G*hfV1WwuMe>bO-vP9g`h5BqgO9x{ROBD;aPl>XDmvt(3PUxt|4RFRpK
|
|
||||||
z5OEtRz{(Oa_W_!Z4XHf#h;Z-~71XM7wlF*L!-#h_Uy2tGuy-rAZ)4{qE~feNkp}qf
|
|
||||||
zgvBtLkFPI~I7<hoG?bkw)mOVF*%;)lK%ly{u|$|3Iw7J>%C=OHZfPZz$j>L9)rb;l
|
|
||||||
z@J^dxncy52;wmHg=wC3|Xn6jPYCR7<T~^e94N=B~zcTRf_@?^gFT)p?AIrBJa9;*Z
|
|
||||||
z(-DaG;r7--)hh<3{cpLe^qNuB)YNR8oQ4I@J3<0pj*XoKa(lZv_}#R?oc0q0pf@;Y
|
|
||||||
z@|$1S>xc}~D0wNjoYxmoRh_zh=6@8coM1UQIa_z*1)cZPw4v40qoZQp-uy#DLv=oP
|
|
||||||
zX9b3vzFA2r8}|_AO8W1(OMG__0{1AUD&Z%&7-(>s+Z-X6Sv}G5QguIbZ3mYa--?09
|
|
||||||
z;wNw?n=yAag4%m#w$$-YZ{(ZJUcwHfzu&!gykNjG)e}!=q8xy2_KS=ULsQwv45NK!
|
|
||||||
zVqqD8#S{vRjg4(Q6HM_F&tihNIQ<ph9XS{sw-<&Fv1e0-e57d}%5^<oCKT-=3{4`y
|
|
||||||
z64WO2DNM@9h#+<9z$P>ns<%DVjE$cv33ET>Dvc^#{z&#u&&9RgXO?ZLuebczKv#;!
|
|
||||||
zCS|2lIa37Bp#3RWj0$V3=I2>o40{(J^LD|EUH?!2;Z&HS*>7*V%{v1)wHaUP85mcX
|
|
||||||
z%q!K}Ntr*IzJD%++btJ;VQO*OjJL1t{GvR3cy@OC-~pe^bV?N`z0QKCr?Tom)4u%A
|
|
||||||
z3mi2k&eIgh0^rGI<D!3ppe*5I#u>#Di+&3lrsy-r+}zwBkDQtswtPbkj!Y^l`{f!#
|
|
||||||
zLseC0M;DiifDa!({-G4{W$Wxsgv*(NX%HMyXhArVwY105dUHg?+=@6Sy8n@slS76x
|
|
||||||
zU7%PI8ToKm#qahfR;7kn#|t@9y(0EkooWBDqA1(mpO)>BBz))giBi8xVHlj#dR9U8
|
|
||||||
zRo%`iBd<rib_r~m5n7z6NZ2m_7bsF#7pV!dC-}k@FFQM%1={&4v20&BgTVBJ*mWm<
|
|
||||||
zN23p!P@Cn5GW?{dLlUasjp@zUdq11tADUqVjY5iK4}(SR8OYv}JKyMhaynV&(oHy!
|
|
||||||
z@}!@UDNpAMBUmXC#>lj8%_tRn^qa%T>{nsLLwTNld&WHLyfbPzv2W62m6q=Nsdxnk
|
|
||||||
z#{P==5!Lidx3bcr_qlUl%BX!xjywA?jv>FU^mJDa0<zrP{CvIlmDTgZbbz$Kf7j-e
|
|
||||||
z+s*)TH@To{E4<{VPzP()4KKg`(U-QB{S9iS(ZEBSCBv-}8Az22>zQT9Kw8RRHq>7B
|
|
||||||
zb~DXw0(oqBrOQunsm2ghWV2i1VmN{F?)U;0%*j{FEUxazAJ3)KSWomuhklkDi<zIX
|
|
||||||
z9Be*3Rk+zpa@IW5+&kJBa)4JboSX7tEK}FzcS!}-&YS}K;LWnJigX2xl$)Dd&(uEq
|
|
||||||
z2&;t*>?5h*MTLDS5ma_Nk1sNZYzZ#$maGRyiXBzjG@(G__fuyBl(^A>s&{jF+J%5|
|
|
||||||
zv#7nD1XK806#_U_4#N2ANAxznk%;U$Y$z#{K*O07mADqx6LjACqwP<`HFV#C6Q*wx
|
|
||||||
z8JVP_qGF}V7B?^8)f*2F5AON7v$L~Kr?2}oPai_kG!_6MI(U`LS~+Mo*CSyrw>pPE
|
|
||||||
zllqxy<P@nA`e}=V#zMNQ)dt#A_#9nX(;m&YwQS&qp4EYe)+anT0N?#z4yCW}V|?08
|
|
||||||
zifKMLf9AwZ0;{@(dKX_&!2;%Qz^R*2)AC8R?qpzy$<pP+$qAVHfi2I$)_zDMbobk>
|
|
||||||
z^&rnDn4XA@AUY7~`1lwTCrm8KlVRqX&!kZFH&;i9@=R}UDxNSh*)Iq2U+#9}@ag1t
|
|
||||||
z%KUOEw0DXT)>hQoLTprY^z=BC=8NAyi3pZWT7A`?;rI<3%65Nqb93%pJ=!+dNtB>W
|
|
||||||
z7f3O-e-S7ZBgBntcyt~wOG_p$AU2zlGH8=%TEm+z8kLYReEMTkIo#2YiA=iKWrH);
|
|
||||||
zS%uT3xAyyY=!U)0Evpgx{{38MPR2nN<3913M<0O#YCO=TSt^4IzV3^D%2zC>t_OO}
|
|
||||||
z_h~AVOk+IIi$Ov;-g93a4j@WaekCC#HFm2_Vu9s)8-GbYtr{LgrxnSIN^PW9)!jYX
|
|
||||||
z?%-yssA~&R3F)C)wj5i|@!atCx?Qy%P1QEGSZm;iUNai`-F(8a%y+_a>CMzx$XEKx
|
|
||||||
z>sW|JbN36s+Y{4SZsrspH%UH=+Q6J<CRu^N5ZmJ?1SFBed~3QFJ^YZkw`cKu=Gje~
|
|
||||||
z(AOuPPZ=<sC*1n>`c&_-JLGL&5|$XUA1vFOC+rgoc&xT{dFT&pMaEBKwy<F(IR*1~
|
|
||||||
z?7VnM3^J({7}U8XhZU}UO%g=gp%x-^baW>D;plX0>2nla;jTlQ{!fn2M=Ak*=K*g%
|
|
||||||
zBm0-$ly1~}CT-5gv){jex9)7&b8u!a+vYHXU>=NF2>g3+_rN{(LUMGwRWKk49sS$v
|
|
||||||
zazyX8zZ1hwZ|U*5{fK@i@hRl*U%Q2cg+!iIfb)6W%S5F{91qinEZE%~4Gl>rBw9S<
|
|
||||||
zMP5$exl1j<!yq;^s?0O{SV9tFS$-AUOcp7)+G5dPiVUQ^Ww8PXV{7{=`gm9@8FCNX
|
|
||||||
zX_OEhjnV-)z(ORF{aBkd6c3lsC~u`q=_`fnK_#j=XrK1X(ZSkpmPYHd7I*HDiMhJ+
|
|
||||||
zHIDWeGWW+^<~MG0#<jQY2+ASuX`zsF-vdE^!Gu+Zp<4eN=9BfGgv?r1R99lY{AzZ+
|
|
||||||
zC?kMRSpc81|I}uA<fodVkCEdG<C~$y9UXnaiXqPL%A%Nbo#Z%Ca7ISrZgh?${VPnG
|
|
||||||
zl$10u;C)>E<KN49z-H}%ot>Syt}d~jo?hf`z^32b!}UGtJH+w9(0U<yHnZX%(jeWB
|
|
||||||
zT!I2a{KtyXqb|^n-xNw;b@I%XCOWVXKib*}Xw@1i<?Q9ZJs(8I-JI9m*P9Rj+X}%<
|
|
||||||
zrsRB=sv`QrlO?pTKp-C-6@v`ZcTc0zs%^1(vY`~z8EL`7;rTgTT6tLTo_EFU*XZ+g
|
|
||||||
zP^QlGgm_Kh?-Ir|`R6|$yL)#NM9(~X3+{(SU&R!e#yX1ro6L!6Y5P}KEM8#nY0UG|
|
|
||||||
zI-7h0-bhJIII@Y9Ko|Wu7qP}fP)T<{28-T1_mbTBZ`>rI#~Ei*ii&6z(AVE?(}k_A
|
|
||||||
zE9Z@mj7HF-ch46I0ipe3gapRj{=zk_J1E^b_JwdrhKi4ytBuwP)m>e$@9v`A{1N{h
|
|
||||||
zwUN6H=_W+h(a?rGaQ%%LP5C4)XiZ*`1uUwgqWvk`LyDD!Ps#Q5oI($KDJ%8n5kBi-
|
|
||||||
zghsLx`~mf<>WT)6-cJBbp|htk1NfkZ@e#B4@l?UH7!MDMpO?1NETGk_Eg{z!N3!D<
|
|
||||||
zWg8gtgS%b(0Bg7dw9u35xq)1vNdnM8iu7Eje*u?#sZ~%^q*HDaZC?5z4ZzhSA%ndS
|
|
||||||
z4&$M&7(|(9nWY%<jgk8_GM^FTg|SlXZlmIsmU#4_Ro-#1zn`Qt)Hp3dI>QShCnuN0
|
|
||||||
z`n9&UeypypUgx;R+x;XM#8uDM{p`9~j<49)^dotHJVO*A@HL&g7F={FP#trj@{dzm
|
|
||||||
zeQUi<SFsuQ=RF$2&W>qRWJ&pkKkA1O-|vOf8O1UQ$$0lIExffio|}F@ROV#MXcPH$
|
|
||||||
z?$$kxAF@B#KT}u;R@SVyIO>1sw1!i?C(_013w9@?8$bKaLQi34zC$g*^}F&(%NEO6
|
|
||||||
zQzD-^6}HQMnGJ{h$J*)HjSxjblWegsW&rLC8Ov_r_20jLjUS$Ptnm|p9fK%r0j+4;
|
|
||||||
z57^mjL&lISh8>DC;eB$B69$h4XxE3qU4T&zUpDeV@4g>or%D-x@qhie>6<d}0Ra)Q
|
|
||||||
zbII8MVZZgP{TRj-9X#19@Pe?v_M%s+Uix_TU*lzE^yZF^ry*zf6QSSHe9^(ua)T)g
|
|
||||||
z3lz|%@80!4$B=VVO7;IWqPV%b%KkgW47l&_(1)K0+uk<a*;UoE7kYSjko19zhLmNZ
|
|
||||||
zkxYSpy&?T@SamHIo#rmyj=ecv7CpF?BC-~S=^yE3xPGs_UgdYt&qNX|VG){VgLNA0
|
|
||||||
z_=gE6YUFnmp^+Cj!|+SiGz0r2+*s=4q?3OLrpUdCc%@~9rhLw2YimzdYY<){TNOgQ
|
|
||||||
zP~gtaj^OiA%!F5m6X}g(2=Qgw{QI9E%0NU?F7BUHIB~N_=NJ@G5i|U{eyBC%P2H7+
|
|
||||||
z)2Z?C7+kSW|Lq^3ad(>mqD959ck74(h?S0BA0}YQ18d?hr6}%}y{%ZNJ^-(?=Op~;
|
|
||||||
z#2-UNh)jH9>RXmv<m;Fv4ERg;DT>PJ<VaWa@ea?1=ze9YeHT5jn2DkNKps7vAw^~-
|
|
||||||
zUZA1a-t5X_&N}l-vL7S#O}(Pw#U+mzRaQe|UKVh))g=u*qU;-|?t~;jAPF8bq$i5}
|
|
||||||
zO-(u5x*!M*g!@kNsJPN-jY-_Fczl!cxtz>(Y!8(uhyW|sFpyvv)AaNeljHj^Fx+RC
|
|
||||||
z!`@c->W1C^FUKHmG2w_atkdsMnzY+l!CV8havQ8-Gu)<8t{#V*2Pwp4h?ayXsi5Z>
|
|
||||||
zo!guta>TA~iv#iJpQkN>#)QF%As@2WgU&V_Y^qm#E*O}M_ijJfFWq<OZB)JOp0y&C
|
|
||||||
ziVdtrh6gE@CCeflMKdV!Q~5LzkT)py2<#o(V;}(=RHo6d?KeyMA%0ABLt+m?son?j
|
|
||||||
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
|
|
||||||
WX&3$!%>|s_1IbA#OV)^+1pg1OmmZn`
|
|
||||||
|
|
||||||
@@ -1,33 +1,41 @@
|
|||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
From: AlphaKR93 <alphakr93@outlook.com>
|
From: AlphaKR93 <dev@alpha93.kr>
|
||||||
Date: Wed, 21 Dec 2022 19:31:24 +0900
|
Date: Wed, 21 Dec 2022 19:31:24 +0900
|
||||||
Subject: [PATCH] Rebrand
|
Subject: [PATCH] Rebrand
|
||||||
|
|
||||||
|
|
||||||
diff --git a/build.gradle.kts b/build.gradle.kts
|
diff --git a/build.gradle.kts b/build.gradle.kts
|
||||||
index 22470f0ab8354a9f31a0f195f3fe80f2f5ee2f0e..dc89b3a8956af69fa71a2bfa17c22aee6c5e9edf 100644
|
index b97182b806fddf53ddcdbe57a43500d36e97e2a4..055627fc478a3e64b0e0644cbd9ef4cf5438c696 100644
|
||||||
--- a/build.gradle.kts
|
--- a/build.gradle.kts
|
||||||
+++ b/build.gradle.kts
|
+++ b/build.gradle.kts
|
||||||
@@ -7,7 +7,7 @@ plugins {
|
@@ -13,12 +13,10 @@ configurations.named(log4jPlugins.compileClasspathConfigurationName) {
|
||||||
}
|
val alsoShade: Configuration by configurations.creating
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
- implementation(project(":purpur-api")) // Purpur
|
- // Purpur start
|
||||||
+ implementation(project(":plazma-api")) // Purpur
|
- implementation(project(":purpur-api"))
|
||||||
implementation("io.papermc.paper:paper-mojangapi:1.19.4-R0.1-SNAPSHOT") // Purpur
|
- implementation("io.papermc.paper:paper-mojangapi:${project.version}") {
|
||||||
|
- exclude("io.papermc.paper", "paper-api")
|
||||||
|
- }
|
||||||
|
- // Purpur end
|
||||||
|
+ // Plazma start - Branding
|
||||||
|
+ implementation(project(":plazma-api"))
|
||||||
|
+ implementation(project(":plazma-mojangapi"))
|
||||||
|
+ // Plazma end - Branding
|
||||||
|
// Plazma start - Use Gradle version catalogs
|
||||||
|
/*
|
||||||
// Paper start
|
// Paper start
|
||||||
implementation("org.jline:jline-terminal-jansi:3.21.0")
|
@@ -118,7 +116,7 @@ tasks.jar {
|
||||||
@@ -81,7 +81,7 @@ tasks.jar {
|
|
||||||
attributes(
|
attributes(
|
||||||
"Main-Class" to "org.bukkit.craftbukkit.Main",
|
"Main-Class" to "org.bukkit.craftbukkit.Main",
|
||||||
"Implementation-Title" to "CraftBukkit",
|
"Implementation-Title" to "CraftBukkit",
|
||||||
- "Implementation-Version" to "git-Purpur-$implementationVersion", // Pufferfish // Purpur
|
- "Implementation-Version" to "git-Purpur-$implementationVersion", // Pufferfish // Purpur
|
||||||
+ "Implementation-Version" to "git-Plazma-$implementationVersion", // Pufferfish // Purpur // Plazma
|
+ "Implementation-Version" to "git-Plazma-$implementationVersion", // Pufferfish // Purpur // Plazma - Setup Gradle Project
|
||||||
"Implementation-Vendor" to date, // Paper
|
"Implementation-Vendor" to date, // Paper
|
||||||
"Specification-Title" to "Bukkit",
|
"Specification-Title" to "Bukkit",
|
||||||
"Specification-Version" to project.version,
|
"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
|
diff --git a/src/main/java/com/destroystokyo/paper/Metrics.java b/src/main/java/com/destroystokyo/paper/Metrics.java
|
||||||
index 8cde30544e14f8fc2dac32966ae3c21f8cf3a551..7d80d2cf5d607d6051e99e4b08bc1b76098a79da 100644
|
index 8cde30544e14f8fc2dac32966ae3c21f8cf3a551..0b3d87d2d43148e6370e7a03e0bb6074891ac800 100644
|
||||||
--- a/src/main/java/com/destroystokyo/paper/Metrics.java
|
--- a/src/main/java/com/destroystokyo/paper/Metrics.java
|
||||||
+++ b/src/main/java/com/destroystokyo/paper/Metrics.java
|
+++ b/src/main/java/com/destroystokyo/paper/Metrics.java
|
||||||
@@ -593,7 +593,7 @@ public class Metrics {
|
@@ -593,7 +593,7 @@ public class Metrics {
|
||||||
@@ -35,7 +43,7 @@ index 8cde30544e14f8fc2dac32966ae3c21f8cf3a551..7d80d2cf5d607d6051e99e4b08bc1b76
|
|||||||
// Only start Metrics, if it's enabled in the config
|
// Only start Metrics, if it's enabled in the config
|
||||||
if (config.getBoolean("enabled", true)) {
|
if (config.getBoolean("enabled", true)) {
|
||||||
- Metrics metrics = new Metrics("Purpur", serverUUID, logFailedRequests, Bukkit.getLogger()); // Pufferfish // Purpur
|
- Metrics metrics = new Metrics("Purpur", serverUUID, logFailedRequests, Bukkit.getLogger()); // Pufferfish // Purpur
|
||||||
+ Metrics metrics = new Metrics("Plazma", serverUUID, logFailedRequests, Bukkit.getLogger()); // Pufferfish // Purpur // Plazma
|
+ Metrics metrics = new Metrics("Plazma", serverUUID, logFailedRequests, Bukkit.getLogger()); // Pufferfish // Purpur // Plazma - Branding
|
||||||
|
|
||||||
metrics.addCustomChart(new Metrics.SimplePie("minecraft_version", () -> {
|
metrics.addCustomChart(new Metrics.SimplePie("minecraft_version", () -> {
|
||||||
String minecraftVersion = Bukkit.getVersion();
|
String minecraftVersion = Bukkit.getVersion();
|
||||||
@@ -44,44 +52,48 @@ index 8cde30544e14f8fc2dac32966ae3c21f8cf3a551..7d80d2cf5d607d6051e99e4b08bc1b76
|
|||||||
metrics.addCustomChart(new Metrics.SingleLineChart("players", () -> Bukkit.getOnlinePlayers().size()));
|
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("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("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.SimplePie("plazma_version", () -> (org.bukkit.craftbukkit.Main.class.getPackage().getImplementationVersion() != null) ? org.bukkit.craftbukkit.Main.class.getPackage().getImplementationVersion() : "unknown")); // Purpur // Plazma // Plazma - Branding
|
||||||
|
|
||||||
metrics.addCustomChart(new Metrics.DrilldownPie("java_version", () -> {
|
metrics.addCustomChart(new Metrics.DrilldownPie("java_version", () -> {
|
||||||
Map<String, Map<String, Integer>> map = new HashMap<>();
|
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
|
diff --git a/src/main/java/com/destroystokyo/paper/PaperVersionFetcher.java b/src/main/java/com/destroystokyo/paper/PaperVersionFetcher.java
|
||||||
index 462a6eed350fd660ddaf25d567bb6e97b77d0b2b..fec95437c1ad602f64c4d4d02c276199f27babbd 100644
|
index 462a6eed350fd660ddaf25d567bb6e97b77d0b2b..b04d3eea789f77b2435cb0192635f1be1bab597d 100644
|
||||||
--- a/src/main/java/com/destroystokyo/paper/PaperVersionFetcher.java
|
--- a/src/main/java/com/destroystokyo/paper/PaperVersionFetcher.java
|
||||||
+++ b/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;
|
@@ -20,10 +20,11 @@ import java.util.stream.StreamSupport;
|
||||||
public class PaperVersionFetcher implements VersionFetcher {
|
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
|
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
|
// Purpur start
|
||||||
- private static final String DOWNLOAD_PAGE = "https://purpurmc.org/downloads";
|
- 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 final String DOWNLOAD_PAGE = "https://github.com/PlazmaMC/Plazma/releases"; // Plazma // Plazma - Branding
|
||||||
private static int distance = -2; public int distance() { return distance; }
|
private static int distance = -2; public int distance() { return distance; }
|
||||||
// Purpur end
|
// Purpur end
|
||||||
private static @Nullable String mcVer;
|
private static @Nullable String mcVer;
|
||||||
@@ -33,8 +33,8 @@ public class PaperVersionFetcher implements VersionFetcher {
|
+ private static final boolean DEVELOPMENT = false; // Plazma
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public long getCacheTime() {
|
||||||
|
@@ -33,8 +34,8 @@ public class PaperVersionFetcher implements VersionFetcher {
|
||||||
@Nonnull
|
@Nonnull
|
||||||
@Override
|
@Override
|
||||||
public Component getVersionMessage(@Nonnull String serverVersion) {
|
public Component getVersionMessage(@Nonnull String serverVersion) {
|
||||||
- String[] parts = serverVersion.substring("git-Purpur-".length()).split("[-\\s]"); // Purpur
|
- String[] parts = serverVersion.substring("git-Purpur-".length()).split("[-\\s]"); // Purpur
|
||||||
- final Component updateMessage = getUpdateStatusMessage("PurpurMC/Purpur", "ver/" + getMinecraftVersion(), parts[0]); // Purpur
|
- final Component updateMessage = getUpdateStatusMessage("PurpurMC/Purpur", "ver/" + getMinecraftVersion(), parts[0]); // Purpur
|
||||||
+ String[] parts = serverVersion.substring("git-Plazma-".length()).split("[-\\s]"); // Purpur // Plazma
|
+ String[] parts = serverVersion.substring("git-Plazma-".length()).split("[-\\s]"); // Purpur // Plazma // Plazma - Branding
|
||||||
+ final Component updateMessage = getUpdateStatusMessage("PlazmaMC/Plazma", "ver/" + getMinecraftVersion(), parts[0]); // Purpur // Plazma
|
+ final Component updateMessage = getUpdateStatusMessage("PlazmaMC/PlazmaBukkit", (DEVELOPMENT ? "dev/" : "ver/") + getMinecraftVersion(), parts[0]); // Purpur // Plazma // Plazma - Branding
|
||||||
final Component history = getHistory();
|
final Component history = getHistory();
|
||||||
|
|
||||||
return history != null ? Component.join(net.kyori.adventure.text.JoinConfiguration.separator(Component.newline()), history, updateMessage) : updateMessage; // Purpur
|
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 {
|
@@ -47,7 +48,7 @@ public class PaperVersionFetcher implements VersionFetcher {
|
||||||
String result = matcher.group();
|
String result = matcher.group();
|
||||||
mcVer = result.substring(0, result.length() - 2); // strip 'R' anchor and trailing '-'
|
mcVer = result.substring(0, result.length() - 2); // strip 'R' anchor and trailing '-'
|
||||||
} else {
|
} 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 Purpur!"); // Purpur
|
||||||
+ org.bukkit.Bukkit.getLogger().warning("Unable to match version to pattern! Report to Plazma!"); // Purpur // Plazma
|
+ org.bukkit.Bukkit.getLogger().warning("Unable to match version to pattern! Report to Plazma!"); // Purpur // Plazma // Plazma - Branding
|
||||||
org.bukkit.Bukkit.getLogger().warning("Pattern: " + VER_PATTERN.toString());
|
org.bukkit.Bukkit.getLogger().warning("Pattern: " + VER_PATTERN.toString());
|
||||||
org.bukkit.Bukkit.getLogger().warning("Version: " + org.bukkit.Bukkit.getBukkitVersion());
|
org.bukkit.Bukkit.getLogger().warning("Version: " + org.bukkit.Bukkit.getBukkitVersion());
|
||||||
}
|
}
|
||||||
@@ -57,6 +57,7 @@ public class PaperVersionFetcher implements VersionFetcher {
|
@@ -57,6 +58,7 @@ public class PaperVersionFetcher implements VersionFetcher {
|
||||||
}
|
}
|
||||||
|
|
||||||
private static Component getUpdateStatusMessage(@Nonnull String repo, @Nonnull String branch, @Nonnull String versionInfo) {
|
private static Component getUpdateStatusMessage(@Nonnull String repo, @Nonnull String branch, @Nonnull String versionInfo) {
|
||||||
@@ -89,7 +101,7 @@ index 462a6eed350fd660ddaf25d567bb6e97b77d0b2b..fec95437c1ad602f64c4d4d02c276199
|
|||||||
//int distance; // Purpur - use field
|
//int distance; // Purpur - use field
|
||||||
try {
|
try {
|
||||||
int jenkinsBuild = Integer.parseInt(versionInfo);
|
int jenkinsBuild = Integer.parseInt(versionInfo);
|
||||||
@@ -65,6 +66,11 @@ public class PaperVersionFetcher implements VersionFetcher {
|
@@ -65,6 +67,11 @@ public class PaperVersionFetcher implements VersionFetcher {
|
||||||
versionInfo = versionInfo.replace("\"", "");
|
versionInfo = versionInfo.replace("\"", "");
|
||||||
distance = fetchDistanceFromGitHub(repo, branch, versionInfo);
|
distance = fetchDistanceFromGitHub(repo, branch, versionInfo);
|
||||||
}
|
}
|
||||||
@@ -97,11 +109,11 @@ index 462a6eed350fd660ddaf25d567bb6e97b77d0b2b..fec95437c1ad602f64c4d4d02c276199
|
|||||||
+ */
|
+ */
|
||||||
+ versionInfo = versionInfo.replace("\"", ""); // Plazma
|
+ versionInfo = versionInfo.replace("\"", ""); // Plazma
|
||||||
+ distance = fetchDistanceFromGitHub(repo, branch, versionInfo); // Plazma
|
+ distance = fetchDistanceFromGitHub(repo, branch, versionInfo); // Plazma
|
||||||
+ // Plazma end
|
+ // Plazma end - Disable CI Checking
|
||||||
|
|
||||||
switch (distance) {
|
switch (distance) {
|
||||||
case -1:
|
case -1:
|
||||||
@@ -83,6 +89,7 @@ public class PaperVersionFetcher implements VersionFetcher {
|
@@ -83,6 +90,7 @@ public class PaperVersionFetcher implements VersionFetcher {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -109,7 +121,7 @@ index 462a6eed350fd660ddaf25d567bb6e97b77d0b2b..fec95437c1ad602f64c4d4d02c276199
|
|||||||
private static int fetchDistanceFromSiteApi(int jenkinsBuild, @Nullable String siteApiVersion) {
|
private static int fetchDistanceFromSiteApi(int jenkinsBuild, @Nullable String siteApiVersion) {
|
||||||
if (siteApiVersion == null) { return -1; }
|
if (siteApiVersion == null) { return -1; }
|
||||||
try {
|
try {
|
||||||
@@ -102,6 +109,7 @@ public class PaperVersionFetcher implements VersionFetcher {
|
@@ -102,6 +110,7 @@ public class PaperVersionFetcher implements VersionFetcher {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -118,7 +130,7 @@ index 462a6eed350fd660ddaf25d567bb6e97b77d0b2b..fec95437c1ad602f64c4d4d02c276199
|
|||||||
// Contributed by Techcable <Techcable@outlook.com> in GH-65
|
// Contributed by Techcable <Techcable@outlook.com> in GH-65
|
||||||
private static int fetchDistanceFromGitHub(@Nonnull String repo, @Nonnull String branch, @Nonnull String hash) {
|
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
|
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
|
index 3cb56595822799926a8141e60a42f5d1edfc6de5..3e32c28e1d4c157a2f00dbc6d6e9d71cb3b8f6b7 100644
|
||||||
--- a/src/main/java/com/destroystokyo/paper/console/PaperConsole.java
|
--- a/src/main/java/com/destroystokyo/paper/console/PaperConsole.java
|
||||||
+++ b/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 {
|
@@ -17,7 +17,7 @@ public final class PaperConsole extends SimpleTerminalConsole {
|
||||||
@@ -126,165 +138,188 @@ index 3cb56595822799926a8141e60a42f5d1edfc6de5..19d1d136fc28d6c114f6bc44c6450d2d
|
|||||||
protected LineReader buildReader(LineReaderBuilder builder) {
|
protected LineReader buildReader(LineReaderBuilder builder) {
|
||||||
builder
|
builder
|
||||||
- .appName("Purpur") // Purpur
|
- .appName("Purpur") // Purpur
|
||||||
+ .appName("Plazma") // Purpur // Plazma
|
+ .appName("Plazma") // Purpur // Plazma - Branding
|
||||||
.variable(LineReader.HISTORY_FILE, java.nio.file.Paths.get(".console_history"))
|
.variable(LineReader.HISTORY_FILE, java.nio.file.Paths.get(".console_history"))
|
||||||
.completer(new ConsoleCommandCompleter(this.server))
|
.completer(new ConsoleCommandCompleter(this.server))
|
||||||
.option(LineReader.Option.COMPLETE_IN_WORD, true);
|
.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
|
diff --git a/src/main/java/net/minecraft/CrashReport.java b/src/main/java/net/minecraft/CrashReport.java
|
||||||
index b5b6657e52e4f7a630229bd3ba433438af293e22..c468733f44ccb3ff4ba3c20921a4ec52658f0689 100644
|
index f91ea723a1c85f6cf8c4f6dd7f182b948c2f2e81..c5a3f9c2daf3da135cccecb757353534e1688821 100644
|
||||||
--- a/src/main/java/net/minecraft/CrashReport.java
|
--- a/src/main/java/net/minecraft/CrashReport.java
|
||||||
+++ b/src/main/java/net/minecraft/CrashReport.java
|
+++ b/src/main/java/net/minecraft/CrashReport.java
|
||||||
@@ -35,7 +35,7 @@ public class CrashReport {
|
@@ -37,7 +37,7 @@ public class CrashReport {
|
||||||
io.papermc.paper.util.StacktraceDeobfuscator.INSTANCE.deobfuscateThrowable(cause); // Paper
|
io.papermc.paper.util.StacktraceDeobfuscator.INSTANCE.deobfuscateThrowable(cause); // Paper
|
||||||
this.title = message;
|
this.title = message;
|
||||||
this.exception = cause;
|
this.exception = cause;
|
||||||
- this.systemReport.setDetail("CraftBukkit Information", new org.bukkit.craftbukkit.CraftCrashReport()); // CraftBukkit
|
- this.systemReport.setDetail("CraftBukkit Information", new org.bukkit.craftbukkit.CraftCrashReport()); // CraftBukkit
|
||||||
+ this.systemReport.setDetail("Plazma Information", new org.bukkit.craftbukkit.CraftCrashReport()); // CraftBukkit // Plazma
|
+ this.systemReport.setDetail("Plazma Information", new org.bukkit.craftbukkit.CraftCrashReport()); // CraftBukkit // Plazma - Branding
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getTitle() {
|
public String getTitle() {
|
||||||
@@ -125,7 +125,7 @@ public class CrashReport {
|
@@ -127,7 +127,7 @@ public class CrashReport {
|
||||||
stringbuilder.append("---- Minecraft Crash Report ----\n");
|
stringbuilder.append("---- Minecraft Crash Report ----\n");
|
||||||
// Purpur start
|
// Purpur start
|
||||||
stringbuilder.append("// ");
|
stringbuilder.append("// ");
|
||||||
- stringbuilder.append("// DO NOT REPORT THIS TO PAPER! REPORT TO PURPUR INSTEAD!");
|
- 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
|
+ stringbuilder.append("// DO NOT REPORT THIS TO PAPER OR PURPUR! REPORT TO PLAZMA INSTEAD!"); // Plazma - Branding
|
||||||
// Purpur end
|
// Purpur end
|
||||||
stringbuilder.append("// ");
|
stringbuilder.append("// ");
|
||||||
stringbuilder.append(CrashReport.getErrorComment());
|
stringbuilder.append(CrashReport.getErrorComment());
|
||||||
diff --git a/src/main/java/net/minecraft/server/Main.java b/src/main/java/net/minecraft/server/Main.java
|
diff --git a/src/main/java/net/minecraft/server/Main.java b/src/main/java/net/minecraft/server/Main.java
|
||||||
index c6fa6bcd66d61359124a8426b919493c6ec43f06..e0eaa847526431ac58d00f18f0fca6b1ef9a79cd 100644
|
index 4ef8eaad4485a2ee920f80556f9dda04e59d2b2a..b91c3b8ca8f840335ba6470658d82c5d71bb75e1 100644
|
||||||
--- a/src/main/java/net/minecraft/server/Main.java
|
--- a/src/main/java/net/minecraft/server/Main.java
|
||||||
+++ b/src/main/java/net/minecraft/server/Main.java
|
+++ b/src/main/java/net/minecraft/server/Main.java
|
||||||
@@ -81,6 +81,17 @@ public class Main {
|
@@ -105,6 +105,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┛\033[0m
|
||||||
|
+ """);
|
||||||
|
+ if (!org.plazmamc.plazma.Options.iKnowWhatIAmDoing)
|
||||||
|
+ LOGGER.warn("Warning! Plazma may cause unexpected problems, so be sure to test it thoroughly before using it on a public server.");
|
||||||
|
+ // Plazma end
|
||||||
|
|
||||||
|
Path path = (Path) optionset.valueOf("pidFile"); // CraftBukkit
|
||||||
|
|
||||||
@DontObfuscate
|
|
||||||
public static void main(final OptionSet optionset) { // CraftBukkit - replaces main(String[] astring)
|
|
||||||
+ // 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 DO NOT USE it on a production server!");
|
|
||||||
+ // Plazma end
|
|
||||||
SharedConstants.tryDetectVersion();
|
|
||||||
/* CraftBukkit start - Replace everything
|
|
||||||
OptionParser optionparser = new OptionParser();
|
|
||||||
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
|
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||||
index 2cc20cc768bbbd386972c426d3a131af33612294..b81f8207348992761eac2aca8bae370c9b39f0f3 100644
|
index 60b5e0643d933393b5473681ac9261db29fe2416..ac12ccf60b45b150982e79f32d3cdd21c4017cc8 100644
|
||||||
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
|
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||||
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
|
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||||
@@ -929,7 +929,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
@@ -956,7 +956,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
||||||
shutdownThread = Thread.currentThread();
|
shutdownThread = Thread.currentThread();
|
||||||
org.spigotmc.WatchdogThread.doStop(); // Paper
|
org.spigotmc.WatchdogThread.doStop(); // Paper
|
||||||
if (!isSameThread()) {
|
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 PURPUR)"); // Purpur
|
||||||
+ MinecraftServer.LOGGER.info("Stopping main thread (Ignore any thread death message you see! - DO NOT REPORT THREAD DEATH TO PLAZMA)"); // Purpur // Plazma
|
+ MinecraftServer.LOGGER.info("Stopping main thread (Ignore any thread death message you see! - DO NOT REPORT THREAD DEATH TO PLAZMA)"); // Purpur // Plazma - Branding
|
||||||
while (this.getRunningThread().isAlive()) {
|
while (this.getRunningThread().isAlive()) {
|
||||||
this.getRunningThread().stop();
|
this.getRunningThread().stop();
|
||||||
try {
|
try {
|
||||||
|
diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServerProperties.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServerProperties.java
|
||||||
|
index ae75edfaa9e4c72f11fbb7ffc66294be47c206cc..a66dcea06424518290576c7647ae0717040586f9 100644
|
||||||
|
--- a/src/main/java/net/minecraft/server/dedicated/DedicatedServerProperties.java
|
||||||
|
+++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServerProperties.java
|
||||||
|
@@ -57,7 +57,7 @@ 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 Plazma Server"); // Purpur // Plazma - Branding
|
||||||
|
public final boolean spawnAnimals = this.get("spawn-animals", true);
|
||||||
|
public final boolean spawnNpcs = this.get("spawn-npcs", true);
|
||||||
|
public final boolean pvp = this.get("pvp", true);
|
||||||
diff --git a/src/main/java/net/minecraft/server/gui/MinecraftServerGui.java b/src/main/java/net/minecraft/server/gui/MinecraftServerGui.java
|
diff --git a/src/main/java/net/minecraft/server/gui/MinecraftServerGui.java b/src/main/java/net/minecraft/server/gui/MinecraftServerGui.java
|
||||||
index c07918aa1ed2469ad7a76a0add60ab648ff7f421..d14e42612752ef1d5c37c492b62ed4a6d65c1e0e 100644
|
index 0dec2f3762aa55cfaa7af5b357f0fe243a3b2cc6..22d32ee08ee9419685a3e17d6e443396cff895e0 100644
|
||||||
--- a/src/main/java/net/minecraft/server/gui/MinecraftServerGui.java
|
--- a/src/main/java/net/minecraft/server/gui/MinecraftServerGui.java
|
||||||
+++ b/src/main/java/net/minecraft/server/gui/MinecraftServerGui.java
|
+++ b/src/main/java/net/minecraft/server/gui/MinecraftServerGui.java
|
||||||
@@ -51,7 +51,7 @@ public class MinecraftServerGui extends JComponent {
|
@@ -56,7 +56,7 @@ public class MinecraftServerGui extends JComponent {
|
||||||
;
|
;
|
||||||
}
|
}
|
||||||
|
|
||||||
- final JFrame jframe = new JFrame("Minecraft server");
|
- final JFrame jframe = new JFrame("Purpur Minecraft server"); // Purpur
|
||||||
+ final JFrame jframe = new JFrame("Plazma"); // Plazma
|
+ final JFrame jframe = new JFrame("Plazma Minecraft server"); // Purpur // Plazma - Branding
|
||||||
final MinecraftServerGui servergui = new MinecraftServerGui(server);
|
final MinecraftServerGui servergui = new MinecraftServerGui(server);
|
||||||
|
|
||||||
jframe.setDefaultCloseOperation(2);
|
jframe.setDefaultCloseOperation(2);
|
||||||
@@ -59,7 +59,7 @@ public class MinecraftServerGui extends JComponent {
|
@@ -64,7 +64,7 @@ public class MinecraftServerGui extends JComponent {
|
||||||
jframe.pack();
|
jframe.pack();
|
||||||
jframe.setLocationRelativeTo((Component) null);
|
jframe.setLocationRelativeTo((Component) null);
|
||||||
jframe.setVisible(true);
|
jframe.setVisible(true);
|
||||||
- jframe.setName("Minecraft server"); // Paper
|
- jframe.setName("Purpur Minecraft server"); // Paper - Improve ServerGUI // Purpur
|
||||||
+ jframe.setName("Plazma"); // Paper // Plazma
|
+ jframe.setName("Plazma Minecraft server"); // Paper - Improve ServerGUI // Purpur // Plazma - Branding
|
||||||
|
|
||||||
// Paper start - Add logo as frame image
|
// Paper start - Improve ServerGUI
|
||||||
try {
|
try {
|
||||||
@@ -71,7 +71,7 @@ public class MinecraftServerGui extends JComponent {
|
@@ -76,7 +76,7 @@ public class MinecraftServerGui extends JComponent {
|
||||||
jframe.addWindowListener(new WindowAdapter() {
|
jframe.addWindowListener(new WindowAdapter() {
|
||||||
public void windowClosing(WindowEvent windowevent) {
|
public void windowClosing(WindowEvent windowevent) {
|
||||||
if (!servergui.isClosing.getAndSet(true)) {
|
if (!servergui.isClosing.getAndSet(true)) {
|
||||||
- jframe.setTitle("Minecraft server - shutting down!");
|
- jframe.setTitle("Purpur Minecraft server - shutting down!"); // Purpur
|
||||||
+ jframe.setTitle("Plazma - shutting down"); // Plazma
|
+ jframe.setTitle("Plazma Minecraft server - shutting down!"); // Purpur // Plazma - Branding
|
||||||
server.halt(true);
|
server.halt(true);
|
||||||
servergui.runFinalizers();
|
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 b8001bca2a33ec1e60566948a651400418a6e9e7..92b440b24c6b083f81837611d08fbd6773a2a6e6 100644
|
|
||||||
--- a/src/main/java/net/minecraft/world/level/Level.java
|
|
||||||
+++ b/src/main/java/net/minecraft/world/level/Level.java
|
|
||||||
@@ -1041,7 +1041,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
|
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 bd502ca721de0cab438d995efa00ad0554c0d2fe..d72f61f545c3929825e628607b85e0d25f79db1f 100644
|
index fe312b1aef579cb4bf81bdd967cf72ff880d7505..97628761958289612ada0374f56e7d8f6af21512 100644
|
||||||
--- a/src/main/java/net/minecraft/world/level/chunk/storage/RegionFileStorage.java
|
--- a/src/main/java/net/minecraft/world/level/chunk/storage/RegionFileStorage.java
|
||||||
+++ b/src/main/java/net/minecraft/world/level/chunk/storage/RegionFileStorage.java
|
+++ b/src/main/java/net/minecraft/world/level/chunk/storage/RegionFileStorage.java
|
||||||
@@ -113,7 +113,7 @@ public class RegionFileStorage implements AutoCloseable {
|
@@ -153,7 +153,7 @@ public class RegionFileStorage implements AutoCloseable {
|
||||||
|
|
||||||
// Paper start
|
// Paper start
|
||||||
private static void printOversizedLog(String msg, Path file, int x, int z) {
|
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 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
|
+ 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 - Branding
|
||||||
}
|
}
|
||||||
|
|
||||||
private static final int DEFAULT_SIZE_THRESHOLD = 1024 * 8;
|
private static CompoundTag readOversizedChunk(RegionFile regionfile, ChunkPos chunkCoordinate) throws IOException {
|
||||||
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
||||||
index bc1a2df0a7ddaf030917e4723994464d77e55d02..e59532dda47d0f9635b5393cb4ef0484fd6bb9ae 100644
|
index dabaf0cff6dafe8ca411996e67ead9a2cf84dfb8..b2470f03eecb1b81d3f0acbd9bc3c38f321ef3d9 100644
|
||||||
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
||||||
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
||||||
@@ -256,7 +256,7 @@ import javax.annotation.Nullable; // Paper
|
@@ -266,7 +266,7 @@ import javax.annotation.Nullable; // Paper
|
||||||
import javax.annotation.Nonnull; // Paper
|
import javax.annotation.Nonnull; // Paper
|
||||||
|
|
||||||
public final class CraftServer implements Server {
|
public final class CraftServer implements Server {
|
||||||
- private final String serverName = "Purpur"; // Paper // Pufferfish // Purpur
|
- private final String serverName = "Purpur"; // Paper // Pufferfish // Purpur
|
||||||
+ private final String serverName = "Plazma"; // Paper // Pufferfish // Purpur // Plazma
|
+ private final String serverName = "Plazma"; // Paper // Pufferfish // Purpur // Plazma - Branding
|
||||||
private final String serverVersion;
|
private final String serverVersion;
|
||||||
private final String bukkitVersion = Versioning.getBukkitVersion();
|
private final String bukkitVersion = Versioning.getBukkitVersion();
|
||||||
private final Logger logger = Logger.getLogger("Minecraft");
|
private final Logger logger = Logger.getLogger("Minecraft");
|
||||||
|
diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java
|
||||||
|
index 409c0e81571e23c9d535b541c61538424259d60a..d36c880012153058803b595429084adb36458741 100644
|
||||||
|
--- a/src/main/java/org/bukkit/craftbukkit/Main.java
|
||||||
|
+++ b/src/main/java/org/bukkit/craftbukkit/Main.java
|
||||||
|
@@ -141,7 +141,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 Plazma Version"); // Plazma - Branding
|
||||||
|
|
||||||
|
this.acceptsAll(Main.asList("demo"), "Demo mode");
|
||||||
|
|
||||||
|
@@ -192,7 +192,7 @@ public class Main {
|
||||||
|
acceptsAll(asList("server-name"), "Name of the server")
|
||||||
|
.withRequiredArg()
|
||||||
|
.ofType(String.class)
|
||||||
|
- .defaultsTo("Unknown Server")
|
||||||
|
+ .defaultsTo("Plazma Server") // Plazma - Branding
|
||||||
|
.describedAs("Name");
|
||||||
|
// Paper end
|
||||||
|
}
|
||||||
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
|
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
|
||||||
index cf7ba8724ab68f6955b5ebfa1ba46c4397da32b3..54cbe906619a30b5f7b5dbb344eebf3452e1b200 100644
|
index 64c73cc7370c23c9ce68b68476fd0ddb3ca6beca..cd0e9020e28ff97063bd335dcdbb32ac3225ffb3 100644
|
||||||
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
|
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
|
||||||
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
|
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
|
||||||
@@ -883,7 +883,7 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity {
|
@@ -969,7 +969,7 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity {
|
||||||
return EntityCategory.WATER;
|
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 Purpur."); // Purpur
|
||||||
+ throw new UnsupportedOperationException("Unsupported monster type: " + type + ". This is a bug, report this to Plazma."); // Purpur // Plazma
|
+ throw new UnsupportedOperationException("Unsupported monster type: " + type + ". This is a bug, report this to Plazma."); // Purpur // Plazma - Branding
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
diff --git a/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java b/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java
|
diff --git a/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java b/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java
|
||||||
index 5402098dce0d64d3dceea51f248d7d366850a74f..c49bed43a34549936b5751678f2389c2d9a6e1ec 100644
|
index ca8ae8e1c51b937dac916e0b0dc94b5e2e61efeb..6bab5f9e40987d1a8ca9c17118d2a14135df5dff 100644
|
||||||
--- a/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java
|
--- a/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java
|
||||||
+++ b/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java
|
+++ b/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java
|
||||||
@@ -504,7 +504,7 @@ public class CraftScheduler implements BukkitScheduler {
|
@@ -503,7 +503,7 @@ public class CraftScheduler implements BukkitScheduler {
|
||||||
this.parsePending();
|
this.parsePending();
|
||||||
} else {
|
} else {
|
||||||
//this.debugTail = this.debugTail.setNext(new CraftAsyncDebugger(currentTick + CraftScheduler.RECENT_TICKS, task.getOwner(), task.getTaskClass())); // Paper
|
// 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 Purpur"); // Paper // Purpur
|
||||||
+ task.getOwner().getLogger().log(Level.SEVERE, "Unexpected Async Task in the Sync Scheduler. Report this to Plazma"); // Paper // Purpur // Plazma
|
+ task.getOwner().getLogger().log(Level.SEVERE, "Unexpected Async Task in the Sync Scheduler. Report this to Plazma"); // Paper // Purpur // Plazma - Branding
|
||||||
// We don't need to parse pending
|
// 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)
|
// (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
|
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
|
index 99597258e8e88cd9e2c901c4ac3ff7faeeabee2b..73b4818998098b08abcbee4d29915492aa09b5ef 100644
|
||||||
--- a/src/main/java/org/bukkit/craftbukkit/util/Versioning.java
|
--- a/src/main/java/org/bukkit/craftbukkit/util/Versioning.java
|
||||||
+++ b/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;
|
@@ -8,22 +8,25 @@ import java.util.logging.Logger;
|
||||||
@@ -295,7 +330,7 @@ index 99597258e8e88cd9e2c901c4ac3ff7faeeabee2b..0e695ea608c4e4770f5491d54ad47616
|
|||||||
- String result = "Unknown-Version";
|
- 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("META-INF/maven/org.purpurmc.purpur/purpur-api/pom.properties"); // Pufferfish // Purpur
|
||||||
+ // Plazma start
|
+ // Plazma start - Branding & Improve Versioning
|
||||||
+ public static String version = "Unknown-Version";
|
+ public static String version = "Unknown-Version";
|
||||||
+ static {
|
+ static {
|
||||||
+ InputStream stream = Bukkit.class.getClassLoader().getResourceAsStream("META-INF/maven/org.plazmamc.plazma/plazma-api/pom.properties");
|
+ InputStream stream = Bukkit.class.getClassLoader().getResourceAsStream("META-INF/maven/org.plazmamc.plazma/plazma-api/pom.properties");
|
||||||
@@ -318,73 +353,77 @@ index 99597258e8e88cd9e2c901c4ac3ff7faeeabee2b..0e695ea608c4e4770f5491d54ad47616
|
|||||||
+ public static String getBukkitVersion() {
|
+ public static String getBukkitVersion() {
|
||||||
+ return version;
|
+ return version;
|
||||||
}
|
}
|
||||||
+ // Plazma end
|
+ // Plazma end - Branding & Improve Versioning
|
||||||
}
|
}
|
||||||
|
diff --git a/src/main/java/org/plazmamc/plazma/Options.java b/src/main/java/org/plazmamc/plazma/Options.java
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000000000000000000000000000000000000..a858b7ddef7f6877c0b92f4150e0dd37bea121aa
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/src/main/java/org/plazmamc/plazma/Options.java
|
||||||
|
@@ -0,0 +1,7 @@
|
||||||
|
+package org.plazmamc.plazma;
|
||||||
|
+
|
||||||
|
+public interface Options {
|
||||||
|
+
|
||||||
|
+ boolean iKnowWhatIAmDoing = Boolean.getBoolean("Plazma.iKnowWhatIAmDoing");
|
||||||
|
+
|
||||||
|
+}
|
||||||
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 0bcbe1f07ff8e552d2abd6e432af5710005acc04..ac238eeea791180b66677870401c0b756f0db07b 100644
|
index efe25d3894f3ad000257c72d9a5e06ef22446d41..a937993f318ef5703420f57fe65c5d990ce2c4dd 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
|
||||||
@@ -227,7 +227,7 @@ public class PurpurConfig {
|
@@ -231,7 +231,7 @@ public class PurpurConfig {
|
||||||
deathMessageOnlyBroadcastToAffectedPlayer = getBoolean("settings.broadcasts.death.only-broadcast-to-affected-player", deathMessageOnlyBroadcastToAffectedPlayer);
|
deathMessageOnlyBroadcastToAffectedPlayer = getBoolean("settings.broadcasts.death.only-broadcast-to-affected-player", deathMessageOnlyBroadcastToAffectedPlayer);
|
||||||
}
|
}
|
||||||
|
|
||||||
- public static String serverModName = "Purpur";
|
- public static String serverModName = "Purpur";
|
||||||
+ public static String serverModName = "Plazma"; // Plazma
|
+ public static String serverModName = "Plazma"; // Plazma - Branding
|
||||||
private static void serverModName() {
|
private static void serverModName() {
|
||||||
serverModName = getString("settings.server-mod-name", 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
|
diff --git a/src/main/java/org/spigotmc/WatchdogThread.java b/src/main/java/org/spigotmc/WatchdogThread.java
|
||||||
index a810bfd3b8d6bd4d8f2ef8797e4281ae4fe8a67f..a7017a0f8326e307397d357774d39216e525bdd8 100644
|
index f7296691cb4af7814de1520347b307ff209082e4..090eb94fe8088d0ae98bfbe8bbd32a3cac2015d0 100644
|
||||||
--- a/src/main/java/org/spigotmc/WatchdogThread.java
|
--- a/src/main/java/org/spigotmc/WatchdogThread.java
|
||||||
+++ b/src/main/java/org/spigotmc/WatchdogThread.java
|
+++ b/src/main/java/org/spigotmc/WatchdogThread.java
|
||||||
@@ -96,7 +96,7 @@ public final class WatchdogThread extends io.papermc.paper.util.TickThread // Pa
|
|
||||||
|
|
||||||
private WatchdogThread(long timeoutTime, boolean restart)
|
|
||||||
{
|
|
||||||
- super( "Watchdog Thread" ); // Purpur - use a generic name
|
|
||||||
+ super( "Plazma Watchdog Thread" ); // Purpur - use a generic name // Plazma
|
|
||||||
this.timeoutTime = timeoutTime;
|
|
||||||
this.restart = restart;
|
|
||||||
earlyWarningEvery = Math.min(io.papermc.paper.configuration.GlobalConfiguration.get().watchdog.earlyWarningEvery, timeoutTime); // Paper
|
|
||||||
@@ -155,14 +155,14 @@ public final class WatchdogThread extends io.papermc.paper.util.TickThread // Pa
|
@@ -155,14 +155,14 @@ public final class WatchdogThread extends io.papermc.paper.util.TickThread // Pa
|
||||||
if (isLongTimeout) {
|
if (isLongTimeout) {
|
||||||
// Paper end
|
// Paper end
|
||||||
log.log( Level.SEVERE, "------------------------------" );
|
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 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, "The server has stopped responding! This is (probably) not a Plazma bug." ); // Paper // Purpur // Plazma - Branding
|
||||||
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, "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, "\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, "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, "\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 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, "If you are unsure or still think this is a Plazma bug, please report this to https://github.com/PlazmaMC/Plazma/issues" ); // Purpur // Plazma - Branding
|
||||||
log.log( Level.SEVERE, "Be sure to include ALL relevant console errors and Minecraft crash reports" );
|
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, "Purpur version: " + Bukkit.getServer().getVersion() ); // Purpur
|
||||||
+ log.log( Level.SEVERE, "Plazma version: " + Bukkit.getServer().getVersion() ); // Purpur
|
+ log.log( Level.SEVERE, "Plazma version: " + Bukkit.getServer().getVersion() ); // Purpur // Plazma - Branding
|
||||||
//
|
//
|
||||||
if ( net.minecraft.world.level.Level.lastPhysicsProblem != null )
|
if ( net.minecraft.world.level.Level.lastPhysicsProblem != null )
|
||||||
{
|
{
|
||||||
@@ -185,12 +185,12 @@ public final class WatchdogThread extends io.papermc.paper.util.TickThread // Pa
|
@@ -184,12 +184,12 @@ public final class WatchdogThread extends io.papermc.paper.util.TickThread // Pa
|
||||||
// Paper end
|
// Paper end
|
||||||
} else
|
} 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 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, "--- DO NOT REPORT THIS TO PLAZMA - THIS IS NOT A BUG OR A CRASH - " + Bukkit.getServer().getVersion() + " ---"); // Purpur // Plazma - Branding
|
||||||
log.log(Level.SEVERE, "The server has not responded for " + (currentTime - lastTick) / 1000 + " seconds! Creating thread dump");
|
log.log(Level.SEVERE, "The server has not responded for " + (currentTime - lastTick) / 1000 + " seconds! Creating thread dump");
|
||||||
}
|
}
|
||||||
// Paper end - Different message for short timeout
|
// Paper end - Different message for short timeout
|
||||||
log.log( Level.SEVERE, "------------------------------" );
|
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 Purpur!):" ); // Paper // Purpur
|
||||||
+ log.log( Level.SEVERE, "Server thread dump (Look for plugins here before reporting to Plazma!):" ); // Paper // Purpur // Plazma
|
+ log.log( Level.SEVERE, "Server thread dump (Look for plugins here before reporting to Plazma!):" ); // Paper // Purpur // Plazma - Branding
|
||||||
io.papermc.paper.chunk.system.scheduling.ChunkTaskScheduler.dumpAllChunkLoadInfo(isLongTimeout); // Paper // Paper - rewrite chunk system
|
io.papermc.paper.chunk.system.scheduling.ChunkTaskScheduler.dumpAllChunkLoadInfo(isLongTimeout); // Paper - rewrite chunk system
|
||||||
this.dumpTickingInfo(); // Paper - log detailed tick information
|
this.dumpTickingInfo(); // Paper - log detailed tick information
|
||||||
WatchdogThread.dumpThread( ManagementFactory.getThreadMXBean().getThreadInfo( MinecraftServer.getServer().serverThread.getId(), Integer.MAX_VALUE ), log );
|
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
|
@@ -205,7 +205,7 @@ public final class WatchdogThread extends io.papermc.paper.util.TickThread // Pa
|
||||||
WatchdogThread.dumpThread( thread, log );
|
WatchdogThread.dumpThread( thread, log );
|
||||||
}
|
}
|
||||||
} else {
|
} 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 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, "--- DO NOT REPORT THIS TO PLAZMA - THIS IS NOT A BUG OR A CRASH ---"); // Purpur // Plazma - Branding
|
||||||
}
|
}
|
||||||
|
|
||||||
log.log( Level.SEVERE, "------------------------------" );
|
log.log( Level.SEVERE, "------------------------------" );
|
||||||
File diff suppressed because it is too large
Load Diff
333
patches/server/0005-Rebrand-Logo.patch
Normal file
333
patches/server/0005-Rebrand-Logo.patch
Normal file
@@ -0,0 +1,333 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: AlphaKR93 <dev@alpha93.kr>
|
||||||
|
Date: Fri, 10 Mar 2023 22:08:56 +0900
|
||||||
|
Subject: [PATCH] Rebrand Logo
|
||||||
|
|
||||||
|
|
||||||
|
diff --git a/src/main/resources/logo.png b/src/main/resources/logo.png
|
||||||
|
index 518591dd83289e041a16e2c2e7d7e7640d4b2e1b..278de5d47a7802ab89d9ae39c1560ef87d6d6fc4 100644
|
||||||
|
GIT binary patch
|
||||||
|
literal 7999
|
||||||
|
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
|
||||||
|
E0k}Z_!T<mO
|
||||||
|
|
||||||
|
literal 9260
|
||||||
|
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
|
||||||
|
HqBZh=dic2S
|
||||||
|
|
||||||
@@ -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++;
|
|
||||||
}
|
|
||||||
1109
patches/server/0006-Reduce-allocations.patch
Normal file
1109
patches/server/0006-Reduce-allocations.patch
Normal file
File diff suppressed because it is too large
Load Diff
@@ -1,490 +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 62b2a3a44929b80b813bc24a33cd1f5049fecbb2..cea33db916f9fd828f3cb131a4b2ebdd16866649 100644
|
|
||||||
--- a/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java
|
|
||||||
+++ b/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java
|
|
||||||
@@ -211,7 +211,7 @@ 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.");
|
|
||||||
+ 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,7 +225,7 @@ public class PufferfishConfig {
|
|
||||||
public static int activationDistanceMod;
|
|
||||||
|
|
||||||
private static void dynamicActivationOfBrains() throws IOException {
|
|
||||||
- dearEnabled = getBoolean("dab.enabled", "activation-range.enabled", false); // Purpur
|
|
||||||
+ 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.");
|
|
||||||
@@ -233,7 +233,7 @@ public class PufferfishConfig {
|
|
||||||
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,
|
|
||||||
+ 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.",
|
|
||||||
@@ -269,16 +269,16 @@ public class PufferfishConfig {
|
|
||||||
|
|
||||||
public static boolean throttleInactiveGoalSelectorTick;
|
|
||||||
private static void inactiveGoalSelectorThrottle() {
|
|
||||||
- getBoolean("inactive-goal-selector-throttle", "inactive-goal-selector-disable", false, // Purpur
|
|
||||||
+ getBoolean("inactive-goal-selector-throttle", "inactive-goal-selector-disable", !Boolean.getBoolean("Plazma.disableConfigOptimization"), // Purpur // Plazma
|
|
||||||
"Throttles the AI goal selector in entity inactive ticks.",
|
|
||||||
"This can improve performance by a few percent, but has minor gameplay implications.");
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
- public static boolean disableMethodProfiler;
|
|
||||||
+ public static boolean disableMethodProfiler = true; // Plazma
|
|
||||||
public static boolean disableOutOfOrderChat;
|
|
||||||
private static void miscSettings() {
|
|
||||||
- disableMethodProfiler = getBoolean("misc.disable-method-profiler", true);
|
|
||||||
+ //disableMethodProfiler = getBoolean("misc.disable-method-profiler", true); // Plazma
|
|
||||||
disableOutOfOrderChat = getBoolean("misc.disable-out-of-order-chat", false);
|
|
||||||
setComment("misc", "Settings for things that don't belong elsewhere");
|
|
||||||
}
|
|
||||||
diff --git a/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java b/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java
|
|
||||||
index 6bf14183a3fcd2b3d166752ce33240d2ff1ffa7c..4398c1b992f53248bb13180d4a69e55c0e742387 100644
|
|
||||||
--- a/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java
|
|
||||||
+++ b/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java
|
|
||||||
@@ -114,7 +114,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 51cf0014c4229fc8671804d885b6381996810130..9b7fbdb170c9d936b874f7462b1eeff7a65d5262 100644
|
|
||||||
--- a/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java
|
|
||||||
+++ b/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java
|
|
||||||
@@ -84,15 +84,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; // 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
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -133,7 +133,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) {
|
|
||||||
@@ -317,7 +317,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;
|
|
||||||
@@ -397,9 +397,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;
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -407,18 +407,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
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -432,11 +454,30 @@ 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 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));
|
|
||||||
+ public int mobSpawner = Boolean.getBoolean("Plazma.disableConfigOptimization") ? 1 : 2; // Plazma - Optimize Default Configurations
|
|
||||||
+ // Plazma start - Optimize Default Configurations
|
|
||||||
+ public Table<EntityType<?>, String, Integer> sensor = Util.make(HashBasedTable.create(), table -> {
|
|
||||||
+ if (!Boolean.getBoolean("Plazma.disableConfigOptimization")) {
|
|
||||||
+ table.put(EntityType.VILLAGER, "secondarypoisensor", 80);
|
|
||||||
+ table.put(EntityType.VILLAGER, "nearestbedsensor", 80);
|
|
||||||
+ table.put(EntityType.VILLAGER, "villagerbabiessensor", 40);
|
|
||||||
+ table.put(EntityType.VILLAGER, "playersensor", 40);
|
|
||||||
+ table.put(EntityType.VILLAGER, "nearestlivingentitysensor", 40);
|
|
||||||
+ } else {
|
|
||||||
+ table.put(EntityType.VILLAGER, "secondarypoisensor", 40);
|
|
||||||
+ }
|
|
||||||
+ });
|
|
||||||
+ public Table<EntityType<?>, String, Integer> behavior = Util.make(HashBasedTable.create(), table -> {
|
|
||||||
+ if (!Boolean.getBoolean("Plazma.disableConfigOptimization")) {
|
|
||||||
+ table.put(EntityType.VILLAGER, "acquirepoi", 120);
|
|
||||||
+ table.put(EntityType.VILLAGER, "validatenearbypoi", 60);
|
|
||||||
+ } else {
|
|
||||||
+ table.put(EntityType.VILLAGER, "validatenearbypoi", -1);
|
|
||||||
+ }
|
|
||||||
+ });
|
|
||||||
+ // Plazma end
|
|
||||||
}
|
|
||||||
|
|
||||||
@Setting(FeatureSeedsGeneration.FEATURE_SEEDS_KEY)
|
|
||||||
@@ -458,9 +499,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 e0eaa847526431ac58d00f18f0fca6b1ef9a79cd..214690b1531d8b25e9bddb54f630e0d9b3504f96 100644
|
|
||||||
--- a/src/main/java/net/minecraft/server/Main.java
|
|
||||||
+++ b/src/main/java/net/minecraft/server/Main.java
|
|
||||||
@@ -154,7 +154,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 7b7c9c8aa1bb949b6076161f5b175941e407b9b6..5f06d41d74d769281a05d98db806172c92b88388 100644
|
|
||||||
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
|
||||||
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
|
||||||
@@ -346,7 +346,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 ac238eeea791180b66677870401c0b756f0db07b..ce960bc620d84e56c4e7fc9b721fd45c4cfc4dac 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;
|
|
||||||
|
|
||||||
@@ -237,7 +240,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 d3f2002759ac4788feca1e62c90c2e64596eb2f2..47f2c8f23e318b89324bfcb1342dadc325f53afc 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;
|
|
||||||
@@ -3026,7 +3026,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 5503ad6a93d331771a0e92c0da6adedf2ac81aff..0125edd56ff021c2c719965ff6eb921ba8c4935c 100644
|
|
||||||
--- a/src/main/java/org/spigotmc/SpigotWorldConfig.java
|
|
||||||
+++ b/src/main/java/org/spigotmc/SpigotWorldConfig.java
|
|
||||||
@@ -146,14 +146,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 );
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -192,7 +192,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 );
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -203,26 +203,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;
|
|
||||||
@@ -293,7 +293,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 );
|
|
||||||
@@ -303,7 +303,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
|
|
||||||
1334
patches/server/0007-Plazma-Configurations.patch
Normal file
1334
patches/server/0007-Plazma-Configurations.patch
Normal file
File diff suppressed because it is too large
Load Diff
@@ -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..8ba1c5b6731d43c02b415e4d79a20c1de0c03ad5 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 = true;
|
|
||||||
+ public int maxChunksPerTick = 5;
|
|
||||||
+
|
|
||||||
+ }
|
|
||||||
}
|
|
||||||
99
patches/server/0008-Setup-basic-configuration-sections.patch
Normal file
99
patches/server/0008-Setup-basic-configuration-sections.patch
Normal file
@@ -0,0 +1,99 @@
|
|||||||
|
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..57d29f8f3bc89529db9ee8f6dc3fffdbd4a03ceb 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,43 @@ 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 Miscellaneous misc;
|
||||||
|
+ public class Miscellaneous extends ConfigurationPart {
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
}
|
||||||
|
diff --git a/src/main/java/org/plazmamc/plazma/configurations/WorldConfigurations.java b/src/main/java/org/plazmamc/plazma/configurations/WorldConfigurations.java
|
||||||
|
index f2d3d51cb4b8fc7a5fd6db1a63289fff6d32a1ea..42d639688b6f0b9ff53debf49a920f5c8e232a19 100644
|
||||||
|
--- a/src/main/java/org/plazmamc/plazma/configurations/WorldConfigurations.java
|
||||||
|
+++ b/src/main/java/org/plazmamc/plazma/configurations/WorldConfigurations.java
|
||||||
|
@@ -19,4 +19,32 @@ 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 {
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
}
|
||||||
@@ -1,90 +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 904fcdeb7937d36208cc9a8d5eca9ef3a5b2cd9e..7f749579fe056a8436e6625204ae31f1fcc15f32 100644
|
|
||||||
--- a/src/main/java/net/minecraft/server/level/ChunkHolder.java
|
|
||||||
+++ b/src/main/java/net/minecraft/server/level/ChunkHolder.java
|
|
||||||
@@ -362,15 +362,14 @@ public class ChunkHolder {
|
|
||||||
}
|
|
||||||
|
|
||||||
Object[] backingSet = players.getBackingSet();
|
|
||||||
- for (int i = 0, len = backingSet.length; i < len; ++i) {
|
|
||||||
- if (!(backingSet[i] instanceof ServerPlayer player)) {
|
|
||||||
- continue;
|
|
||||||
- }
|
|
||||||
- if (!this.chunkMap.playerChunkManager.isChunkSent(player, this.pos.x, this.pos.z, onlyOnWatchDistanceEdge)) {
|
|
||||||
- continue;
|
|
||||||
- }
|
|
||||||
+ // Plazma start - Implement ChunkSending
|
|
||||||
+ for (Object o : backingSet) {
|
|
||||||
+ if (!(o instanceof ServerPlayer player)
|
|
||||||
+ || !this.chunkMap.playerChunkManager.isChunkSent(player, this.pos.x, this.pos.z, onlyOnWatchDistanceEdge)
|
|
||||||
+ || (this.chunkMap.level.plazmaLevelConfiguration().chunkSending.enabled && player.attachToPending(pos, packet))) continue;
|
|
||||||
player.connection.send(packet);
|
|
||||||
}
|
|
||||||
+ // Plazma end
|
|
||||||
// Paper end - per player view distance
|
|
||||||
}
|
|
||||||
|
|
||||||
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
|
||||||
index 8a4be66f967dfd6b57ab542ae9b06c840647486d..29c46144de1aad31b997ee5000114e6f33f1a1f7 100644
|
|
||||||
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
|
||||||
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
|
||||||
@@ -728,8 +728,36 @@ 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; 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 {
|
|
||||||
if (valid && !this.isSpectator() || !this.touchingUnloadedChunk()) { // Paper - don't tick dead players that are not in the world currently (pending respawn)
|
|
||||||
@@ -2356,7 +2384,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){
|
|
||||||
118
patches/server/0009-Port-SparklyPaper-patches.patch
Normal file
118
patches/server/0009-Port-SparklyPaper-patches.patch
Normal file
@@ -0,0 +1,118 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: AlphaKR93 <dev@alpha93.kr>
|
||||||
|
Date: Thu, 25 Jan 2024 17:13:09 +0900
|
||||||
|
Subject: [PATCH] Port SparklyPaper patches
|
||||||
|
|
||||||
|
SparklyPower
|
||||||
|
Copyright (C) 2024 SparklyPower
|
||||||
|
|
||||||
|
Based on commit: 29212936a832106c4d68e2a2017acbea2fdd3cc4
|
||||||
|
|
||||||
|
diff --git a/src/main/java/net/minecraft/server/level/ServerEntity.java b/src/main/java/net/minecraft/server/level/ServerEntity.java
|
||||||
|
index 04b98e23eed926d8473cc2464e04a5b9f18f1140..cf098d4a3111771c13766285c5ec5f1fc1f539a4 100644
|
||||||
|
--- a/src/main/java/net/minecraft/server/level/ServerEntity.java
|
||||||
|
+++ b/src/main/java/net/minecraft/server/level/ServerEntity.java
|
||||||
|
@@ -74,6 +74,7 @@ public class ServerEntity {
|
||||||
|
private List<SynchedEntityData.DataValue<?>> trackedDataValues;
|
||||||
|
// CraftBukkit start
|
||||||
|
public final Set<ServerPlayerConnection> trackedPlayers; // Purpur - private -> public
|
||||||
|
+ public static boolean skipSqrWhenNoDeltaChanges = false; // Plazma - SparklyPaper port; Skip distanceToSqr if the delta movement hasn't changed
|
||||||
|
|
||||||
|
public ServerEntity(ServerLevel worldserver, Entity entity, int i, boolean flag, Consumer<Packet<?>> consumer, Set<ServerPlayerConnection> trackedPlayers) {
|
||||||
|
this.trackedPlayers = trackedPlayers;
|
||||||
|
@@ -210,12 +211,14 @@ public class ServerEntity {
|
||||||
|
|
||||||
|
if ((this.trackDelta || this.entity.hasImpulse || this.entity instanceof LivingEntity && ((LivingEntity) this.entity).isFallFlying()) && this.tickCount > 0) {
|
||||||
|
Vec3 vec3d1 = this.entity.getDeltaMovement();
|
||||||
|
+ if (!skipSqrWhenNoDeltaChanges && vec3d1 != this.ap) { // Plazma - SparklyPaper port; Skip distanceToSqr if the delta movement hasn't changed
|
||||||
|
double d0 = vec3d1.distanceToSqr(this.ap);
|
||||||
|
|
||||||
|
if (d0 > 1.0E-7D || d0 > 0.0D && vec3d1.lengthSqr() == 0.0D) {
|
||||||
|
this.ap = vec3d1;
|
||||||
|
this.broadcast.accept(new ClientboundSetEntityMotionPacket(this.entity.getId(), this.ap));
|
||||||
|
}
|
||||||
|
+ } // Plazma - SparklyPaper port; Skip distanceToSqr if the delta movement hasn't changed
|
||||||
|
}
|
||||||
|
|
||||||
|
if (packet1 != null) {
|
||||||
|
diff --git a/src/main/java/net/minecraft/stats/ServerStatsCounter.java b/src/main/java/net/minecraft/stats/ServerStatsCounter.java
|
||||||
|
index f890738d3bb9fb5e70a9d323c6cec97f9948f9cf..52e72277c661b67a54bc5ce584efb04134599dd3 100644
|
||||||
|
--- a/src/main/java/net/minecraft/stats/ServerStatsCounter.java
|
||||||
|
+++ b/src/main/java/net/minecraft/stats/ServerStatsCounter.java
|
||||||
|
@@ -243,7 +243,7 @@ public class ServerStatsCounter extends StatsCounter {
|
||||||
|
|
||||||
|
public void sendStats(ServerPlayer player) {
|
||||||
|
Object2IntMap<Stat<?>> object2intmap = new Object2IntOpenHashMap();
|
||||||
|
- Iterator iterator = this.getDirty().iterator();
|
||||||
|
+ Iterator<Stat<?>> iterator = this.dirty.iterator(); // Plazma - SparklyPaper port; Skip dirty stats copy when requesting player stats
|
||||||
|
|
||||||
|
while (iterator.hasNext()) {
|
||||||
|
Stat<?> statistic = (Stat) iterator.next();
|
||||||
|
@@ -251,6 +251,7 @@ public class ServerStatsCounter extends StatsCounter {
|
||||||
|
object2intmap.put(statistic, this.getValue(statistic));
|
||||||
|
}
|
||||||
|
|
||||||
|
+ this.dirty.clear(); // Plazma - SparklyPaper port; Skip dirty stats copy when requesting player stats
|
||||||
|
player.connection.send(new ClientboundAwardStatsPacket(object2intmap));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
diff --git a/src/main/java/net/minecraft/world/item/MapItem.java b/src/main/java/net/minecraft/world/item/MapItem.java
|
||||||
|
index 8d3c1897044f9a2bbe1911e1a72dc9a00fb246df..a68112a1d1904edfc84acb6c209e13f0836d97e0 100644
|
||||||
|
--- a/src/main/java/net/minecraft/world/item/MapItem.java
|
||||||
|
+++ b/src/main/java/net/minecraft/world/item/MapItem.java
|
||||||
|
@@ -313,12 +313,14 @@ public class MapItem extends ComplexItem {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
+ public static boolean skipTickWhenCraftNotPresent = false; // Plazma - SparklyPaper port; Skip map item ticking if the craft map renderer is not present
|
||||||
|
@Override
|
||||||
|
public void inventoryTick(ItemStack stack, Level world, Entity entity, int slot, boolean selected) {
|
||||||
|
if (!world.isClientSide) {
|
||||||
|
MapItemSavedData worldmap = MapItem.getSavedData(stack, world);
|
||||||
|
|
||||||
|
if (worldmap != null) {
|
||||||
|
+ if (skipTickWhenCraftNotPresent && worldmap.mapView.getRenderers().stream().noneMatch(mapRenderer -> mapRenderer.getClass() == org.bukkit.craftbukkit.map.CraftMapRenderer.class)) return; // Plazma - SparklyPaper port; Skip map item ticking if the craft map renderer is not present
|
||||||
|
if (entity instanceof Player) {
|
||||||
|
Player entityhuman = (Player) entity;
|
||||||
|
|
||||||
|
diff --git a/src/main/java/org/bukkit/craftbukkit/map/CraftMapColorCache.java b/src/main/java/org/bukkit/craftbukkit/map/CraftMapColorCache.java
|
||||||
|
index 8149b9c51b78eb5c689b7218a2ca3aab60e73bcf..b9a303f6280a2f6ad3616da152922a4f4a504281 100644
|
||||||
|
--- a/src/main/java/org/bukkit/craftbukkit/map/CraftMapColorCache.java
|
||||||
|
+++ b/src/main/java/org/bukkit/craftbukkit/map/CraftMapColorCache.java
|
||||||
|
@@ -145,7 +145,7 @@ public class CraftMapColorCache implements MapPalette.MapColorCache {
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
- public boolean isCached() {
|
||||||
|
+ public synchronized boolean isCached() { // Plazma - Fix concurrency issues when using "imageToBytes" in multiple threads
|
||||||
|
return this.cached || (!this.running.get() && this.initCache().isDone());
|
||||||
|
}
|
||||||
|
|
||||||
|
diff --git a/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java b/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java
|
||||||
|
index 57d29f8f3bc89529db9ee8f6dc3fffdbd4a03ceb..9c830ec9129ac94aa08e914a82792210c13fc1a3 100644
|
||||||
|
--- a/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java
|
||||||
|
+++ b/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java
|
||||||
|
@@ -40,9 +40,11 @@ public class GlobalConfiguration extends ConfigurationPart {
|
||||||
|
public Entity entity;
|
||||||
|
public class Entity extends ConfigurationPart {
|
||||||
|
|
||||||
|
+ boolean skipSqrWhenNoDeltaChanges = OPTIMIZE;
|
||||||
|
|
||||||
|
@PostProcess
|
||||||
|
public void post() {
|
||||||
|
+ net.minecraft.server.level.ServerEntity.skipSqrWhenNoDeltaChanges = this.skipSqrWhenNoDeltaChanges;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
@@ -50,9 +52,11 @@ public class GlobalConfiguration extends ConfigurationPart {
|
||||||
|
public World world;
|
||||||
|
public class World extends ConfigurationPart {
|
||||||
|
|
||||||
|
+ boolean skipTickWhenCraftNotPresent = OPTIMIZE;
|
||||||
|
|
||||||
|
@PostProcess
|
||||||
|
public void post() {
|
||||||
|
+ net.minecraft.world.item.MapItem.skipTickWhenCraftNotPresent = this.skipTickWhenCraftNotPresent;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
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/src/main/java/net/minecraft/server/Main.java b/src/main/java/net/minecraft/server/Main.java
|
||||||
|
index b91c3b8ca8f840335ba6470658d82c5d71bb75e1..23f0302f2d90b7229828890eb364bc2c9abc11d2 100644
|
||||||
|
--- a/src/main/java/net/minecraft/server/Main.java
|
||||||
|
+++ b/src/main/java/net/minecraft/server/Main.java
|
||||||
|
@@ -168,6 +168,7 @@ public class Main {
|
||||||
|
|
||||||
|
// Spigot Start
|
||||||
|
boolean eulaAgreed = Boolean.getBoolean( "com.mojang.eula.agree" );
|
||||||
|
+ eulaAgreed = eulaAgreed || Boolean.getBoolean("Paper.isRunDev"); // Plazma - Always agree EULA on development mode
|
||||||
|
if ( eulaAgreed )
|
||||||
|
{
|
||||||
|
System.err.println( "You have used the Spigot command line EULA agreement flag." );
|
||||||
@@ -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 {
|
|
||||||
+
|
|
||||||
+
|
|
||||||
+ }
|
|
||||||
}
|
|
||||||
98
patches/server/0011-Add-more-metrics.patch
Normal file
98
patches/server/0011-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 0b3d87d2d43148e6370e7a03e0bb6074891ac800..8783c81af1d09e6682256dee0dd546de0be418cd 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
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
599
patches/server/0012-Optimize-default-configurations.patch
Normal file
599
patches/server/0012-Optimize-default-configurations.patch
Normal file
@@ -0,0 +1,599 @@
|
|||||||
|
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/gg/pufferfish/pufferfish/PufferfishConfig.java b/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java
|
||||||
|
index 8afc58f35deb49084a20b803e91ce4692ce6e4d6..1febd6d0743aadb4002b447c07ec43098ca96c18 100644
|
||||||
|
--- a/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java
|
||||||
|
+++ b/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java
|
||||||
|
@@ -64,7 +64,7 @@ public class PufferfishConfig {
|
||||||
|
getString("info.version", "1.0");
|
||||||
|
setComment("info",
|
||||||
|
"Pufferfish Configuration",
|
||||||
|
- "Check out Pufferfish Host for maximum performance server hosting: https://pufferfish.host",
|
||||||
|
+ //"Check out Pufferfish Host for maximum performance server hosting: https://pufferfish.host", // Plazma - Sponsorblock
|
||||||
|
"Join our Discord for support: https://discord.gg/reZw4vQV9H",
|
||||||
|
"Download new builds at https://ci.pufferfish.host/job/Pufferfish");
|
||||||
|
|
||||||
|
@@ -219,7 +219,7 @@ 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.");
|
||||||
|
+ maxProjectileLoadsPerTick = getInt("projectile.max-loads-per-tick", org.plazmamc.plazma.configurations.PlazmaConfigurations.optimize() ? 8 : 10, "Controls how many chunks are allowed", "to be sync loaded by projectiles in a tick."); // Plazma - Optimize default configurations
|
||||||
|
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");
|
||||||
|
@@ -233,7 +233,7 @@ public class PufferfishConfig {
|
||||||
|
public static int activationDistanceMod;
|
||||||
|
|
||||||
|
private static void dynamicActivationOfBrains() throws IOException {
|
||||||
|
- dearEnabled = getBoolean("dab.enabled", "activation-range.enabled", false); // Purpur
|
||||||
|
+ dearEnabled = getBoolean("dab.enabled", "activation-range.enabled", org.plazmamc.plazma.configurations.PlazmaConfigurations.optimize()); // Purpur // Plazma - Optimize default configurations
|
||||||
|
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.");
|
||||||
|
@@ -241,7 +241,7 @@ public class PufferfishConfig {
|
||||||
|
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,
|
||||||
|
+ activationDistanceMod = getInt("dab.activation-dist-mod", "activation-range.activation-dist-mod", org.plazmamc.plazma.configurations.PlazmaConfigurations.optimize() ? 7 : 8, // Plazma - Optimize default configurations
|
||||||
|
"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.",
|
||||||
|
@@ -261,8 +261,18 @@ public class PufferfishConfig {
|
||||||
|
public static Map<String, Integer> projectileTimeouts;
|
||||||
|
private static void projectileTimeouts() {
|
||||||
|
// Set some defaults
|
||||||
|
+ // Plazma start - Optimize default configurations
|
||||||
|
+ if (org.plazmamc.plazma.configurations.PlazmaConfigurations.optimize()) {
|
||||||
|
+ getInt("entity_timeouts.ARROW", 200);
|
||||||
|
+ getInt("entity_timeouts.EGG", 200);
|
||||||
|
+ getInt("entity_timeouts.ENDER_PEARL", 200);
|
||||||
|
+ getInt("entity_timeouts.SNOWBALL", 200);
|
||||||
|
+ getInt("entity_timeouts.LLAMA_SPIT", 200);
|
||||||
|
+ } else {
|
||||||
|
+ // Plazma end - Optimize default configurations
|
||||||
|
getInt("entity_timeouts.SNOWBALL", -1);
|
||||||
|
getInt("entity_timeouts.LLAMA_SPIT", -1);
|
||||||
|
+ } // Plazma - Optimize default configurations
|
||||||
|
setComment("entity_timeouts",
|
||||||
|
"These values define a entity's maximum lifespan. If an",
|
||||||
|
"entity is in this list and it has survived for longer than",
|
||||||
|
diff --git a/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java b/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java
|
||||||
|
index 30fe1c0645a07d663b08c0f988a1ab3a750bf7c4..c71daa5d3665cec2836770e5f04da222bc5f90ed 100644
|
||||||
|
--- a/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java
|
||||||
|
+++ b/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java
|
||||||
|
@@ -156,7 +156,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;
|
||||||
|
@@ -198,7 +198,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;
|
||||||
|
}
|
||||||
|
@@ -247,7 +247,7 @@ public class GlobalConfiguration extends ConfigurationPart {
|
||||||
|
public BookSize bookSize;
|
||||||
|
|
||||||
|
public class BookSize extends ConfigurationPart {
|
||||||
|
- public int pageMax = 2560; // TODO this appears to be a duplicate setting with one above
|
||||||
|
+ public int pageMax = 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;
|
||||||
|
@@ -258,7 +258,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) {
|
||||||
|
@@ -326,7 +334,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 d3fdf62912d190f8b468b77230a927023c361074..6be96d4a772255ac03addd1775008d897ab34ac8 100644
|
||||||
|
--- a/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java
|
||||||
|
+++ b/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java
|
||||||
|
@@ -96,12 +96,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,
|
||||||
|
@@ -128,7 +148,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
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -152,14 +193,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.aggressiveOptimize; // Plazma - Optimize default configurations
|
||||||
|
+ public boolean tick = !org.plazmamc.plazma.Options.aggressiveOptimize; // 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;
|
||||||
|
@@ -182,7 +223,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(), org.plazmamc.plazma.configurations.PlazmaConfigurations.optimize() ? (net.minecraft.server.MinecraftServer.getServer().server.getSimulationDistance() * 16) + 8 : category.getDespawnDistance()))); // Plazma - Optimize default configurations
|
||||||
|
@MergeMap
|
||||||
|
public Reference2IntMap<MobCategory> ticksPerSpawn = Util.make(new Reference2IntOpenHashMap<>(NaturalSpawner.SPAWNING_CATEGORIES.length), map -> Arrays.stream(NaturalSpawner.SPAWNING_CATEGORIES).forEach(mobCategory -> map.put(mobCategory, -1)));
|
||||||
|
|
||||||
|
@@ -383,7 +424,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;
|
||||||
|
@@ -438,7 +479,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 = true;
|
||||||
|
public boolean preventTntFromMovingInWater = false;
|
||||||
|
public boolean splitOverstackedLoot = true;
|
||||||
|
@@ -466,9 +507,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;
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -476,18 +517,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;
|
||||||
|
}
|
||||||
|
@@ -502,9 +566,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));
|
||||||
|
@@ -538,9 +602,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.aggressiveOptimize; // 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 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..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 23f0302f2d90b7229828890eb364bc2c9abc11d2..a9753f799ef944a46ee3cedd68c8aad7aacc2612 100644
|
||||||
|
--- a/src/main/java/net/minecraft/server/Main.java
|
||||||
|
+++ b/src/main/java/net/minecraft/server/Main.java
|
||||||
|
@@ -153,7 +153,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 a66dcea06424518290576c7647ae0717040586f9..41d5d15dfa2affdee68501efb2447a209c38992d 100644
|
||||||
|
--- a/src/main/java/net/minecraft/server/dedicated/DedicatedServerProperties.java
|
||||||
|
+++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServerProperties.java
|
||||||
|
@@ -130,14 +130,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);
|
||||||
|
@@ -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 sync chunk writes behind flag
|
||||||
|
+ this.syncChunkWrites = this.get("sync-chunk-writes", false) && Boolean.getBoolean("Paper.enable-sync-chunk-writes"); // Paper - Hide sync chunk writes behind flag // Plazma - Show disabled by default
|
||||||
|
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 ceea71c3e6886b03d017c44c287dc20928f63f09..e250196a4210c5b2fe5eadda6312ebc5e17590b8 100644
|
||||||
|
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
||||||
|
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
||||||
|
@@ -426,7 +426,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 a858b7ddef7f6877c0b92f4150e0dd37bea121aa..eab5ea835a524482f8cc043c7be190a835335ed2 100644
|
||||||
|
--- a/src/main/java/org/plazmamc/plazma/Options.java
|
||||||
|
+++ b/src/main/java/org/plazmamc/plazma/Options.java
|
||||||
|
@@ -3,5 +3,6 @@ package org.plazmamc.plazma;
|
||||||
|
public interface Options {
|
||||||
|
|
||||||
|
boolean iKnowWhatIAmDoing = Boolean.getBoolean("Plazma.iKnowWhatIAmDoing");
|
||||||
|
+ boolean aggressiveOptimize = Boolean.getBoolean("Plazma.aggressiveOptimize");
|
||||||
|
|
||||||
|
}
|
||||||
|
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
||||||
|
index a937993f318ef5703420f57fe65c5d990ce2c4dd..65b9e4fc073d0e97c6f90587d20e3ecbdaaf2c71 100644
|
||||||
|
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
||||||
|
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
||||||
|
@@ -49,6 +49,7 @@ public class PurpurConfig {
|
||||||
|
+ "join us in our Discord guild.\n"
|
||||||
|
+ "\n"
|
||||||
|
+ "Website: https://purpurmc.org \n"
|
||||||
|
+ + "Vanilla Food Properties: https://gist.github.com/BillyGalbreath/4fdfba991bd020e814eabf5143e3b225 \n" // Plazma
|
||||||
|
+ "Docs: https://purpurmc.org/docs \n";
|
||||||
|
private static File CONFIG_FILE;
|
||||||
|
public static YamlConfiguration config;
|
||||||
|
@@ -241,7 +242,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);
|
||||||
|
}
|
||||||
|
@@ -486,7 +487,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 7dc82ffccc157a17335f1bc56ab81be3813294f6..d756c25e6d0af3153e510d0162e65348b1675366 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 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;
|
||||||
|
@@ -3127,7 +3127,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 1cf6d4f854d89c515e48e1fb365eb95ff9340765..7d1ae99e83dc6511838092c3ab6e0fd5f39faabc 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", org.plazmamc.plazma.configurations.PlazmaConfigurations.optimize() ? 3.5 : 2.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", org.plazmamc.plazma.configurations.PlazmaConfigurations.optimize() ? 4.0 : 3.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", org.plazmamc.plazma.configurations.PlazmaConfigurations.optimize() ? 3 : 8 ); // 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 = org.plazmamc.plazma.configurations.PlazmaConfigurations.optimize() ? 16 : 32; // Plazma - Optimize default configurations
|
||||||
|
+ public int monsterActivationRange = org.plazmamc.plazma.configurations.PlazmaConfigurations.optimize() ? 24 : 32; // Plazma - Optimize default configurations
|
||||||
|
public int raiderActivationRange = 48;
|
||||||
|
- public int miscActivationRange = 16;
|
||||||
|
+ public int miscActivationRange = org.plazmamc.plazma.configurations.PlazmaConfigurations.optimize() ? 8 : 16; // Plazma - Optimize default configurations
|
||||||
|
// Paper start
|
||||||
|
- public int flyingMonsterActivationRange = 32;
|
||||||
|
- public int waterActivationRange = 16;
|
||||||
|
- public int villagerActivationRange = 32;
|
||||||
|
+ public int flyingMonsterActivationRange = org.plazmamc.plazma.configurations.PlazmaConfigurations.optimize() ? 48 : 32; // Plazma - Optimize default configurations
|
||||||
|
+ public int waterActivationRange = org.plazmamc.plazma.configurations.PlazmaConfigurations.optimize() ? 8 : 16; // Plazma - Optimize default configurations
|
||||||
|
+ public int villagerActivationRange = org.plazmamc.plazma.configurations.PlazmaConfigurations.optimize() ? 16 : 32; // 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 = org.plazmamc.plazma.configurations.PlazmaConfigurations.optimize() ? 40 : 100; // Plazma - Optimize default configurations
|
||||||
|
+ public int wakeUpInactiveMonsters = org.plazmamc.plazma.configurations.PlazmaConfigurations.optimize() ? 4 : 8; // Plazma - Optimize default configurations
|
||||||
|
public int wakeUpInactiveMonstersEvery = 20*20;
|
||||||
|
- public int wakeUpInactiveMonstersFor = 5*20;
|
||||||
|
- public int wakeUpInactiveVillagers = 4;
|
||||||
|
+ public int wakeUpInactiveMonstersFor = org.plazmamc.plazma.configurations.PlazmaConfigurations.optimize() ? 60 : 100; // Plazma - Optimize default configurations
|
||||||
|
+ public int wakeUpInactiveVillagers = org.plazmamc.plazma.configurations.PlazmaConfigurations.optimize() ? 1 : 4; // Plazma - Optimize default configurations
|
||||||
|
public int wakeUpInactiveVillagersEvery = 30*20;
|
||||||
|
- public int wakeUpInactiveVillagersFor = 5*20;
|
||||||
|
- public int wakeUpInactiveFlying = 8;
|
||||||
|
+ public int wakeUpInactiveVillagersFor = org.plazmamc.plazma.configurations.PlazmaConfigurations.optimize() ? 20 : 100; // Plazma - Optimize default configurations
|
||||||
|
+ public int wakeUpInactiveFlying = org.plazmamc.plazma.configurations.PlazmaConfigurations.optimize() ? 1 : 8; // Plazma - Optimize default configurations
|
||||||
|
public int wakeUpInactiveFlyingEvery = 10*20;
|
||||||
|
- public int wakeUpInactiveFlyingFor = 5*20;
|
||||||
|
+ public int wakeUpInactiveFlyingFor = org.plazmamc.plazma.configurations.PlazmaConfigurations.optimize() ? 60 : 100; // 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", 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 +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", 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
|
||||||
@@ -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 ba542542cbab63b0764d437049123a76ccaca716..3590442906a3f1cf27f621a1e093c1c4cc0887ac 100644
|
|
||||||
--- a/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java
|
|
||||||
+++ b/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java
|
|
||||||
@@ -28,5 +28,12 @@ public class GlobalConfiguration extends ConfigurationPart {
|
|
||||||
public boolean enableRootUserWarnings = true;
|
|
||||||
public boolean enableSecureChatMarker = DO_OPTIMIZE;
|
|
||||||
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ public Player player;
|
|
||||||
+ public class Player extends ConfigurationPart {
|
|
||||||
+
|
|
||||||
+
|
|
||||||
+
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -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 f719f8aafe7c75e2ef8fcb05f556a8d6bd94b9a0..06ff5dd9e39e2be8dd8397a764813111019ceaed 100644
|
|
||||||
--- a/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java
|
|
||||||
+++ b/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java
|
|
||||||
@@ -239,7 +239,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 3590442906a3f1cf27f621a1e093c1c4cc0887ac..b9a04a8042f1bedaeb27681f84f9e2df7cf1794d 100644
|
|
||||||
--- a/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java
|
|
||||||
+++ b/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java
|
|
||||||
@@ -33,7 +33,7 @@ public class GlobalConfiguration extends ConfigurationPart {
|
|
||||||
public Player player;
|
|
||||||
public class Player extends ConfigurationPart {
|
|
||||||
|
|
||||||
-
|
|
||||||
+ public boolean allowAnyUsername = false;
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,30 +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/io/papermc/paper/adventure/ChatProcessor.java b/src/main/java/io/papermc/paper/adventure/ChatProcessor.java
|
|
||||||
index 4d9bc4a62ebae0f3707900503576c64733de639f..20265e7c71c125bc5b77039f4901e230738e849f 100644
|
|
||||||
--- a/src/main/java/io/papermc/paper/adventure/ChatProcessor.java
|
|
||||||
+++ b/src/main/java/io/papermc/paper/adventure/ChatProcessor.java
|
|
||||||
@@ -353,7 +353,7 @@ public final class ChatProcessor {
|
|
||||||
|
|
||||||
private void sendToServer(final ChatType.Bound chatType, final @Nullable Function<Audience, net.minecraft.network.chat.Component> msgFunction) {
|
|
||||||
final PlayerChatMessage toConsoleMessage = msgFunction == null ? ChatProcessor.this.message : ChatProcessor.this.message.withUnsignedContent(msgFunction.apply(ChatProcessor.this.server.console));
|
|
||||||
- ChatProcessor.this.server.logChatMessage(toConsoleMessage.decoratedContent(), chatType, ChatProcessor.this.server.getPlayerList().verifyChatTrusted(toConsoleMessage) ? null : "Not Secure");
|
|
||||||
+ ChatProcessor.this.server.logChatMessage(toConsoleMessage.decoratedContent(), chatType, ChatProcessor.this.server.getPlayerList().verifyChatTrusted(toConsoleMessage) || !org.plazmamc.plazma.configurations.GlobalConfiguration.get().consoleLogs.enableSecureChatMarker ? null : "Not Secure");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
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 429ccd583ecd136a63862e94b8eb36b371e28d0f..efcee39cd7154493de04ca903edbd32b5901b191 100644
|
index b7709cbb1a78eb1daac2112cb9fbf5d379aaa662..2a73508dd8a59c6af8b65ab2db97b6e20b104c57 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
|
||||||
@@ -179,16 +179,6 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
|
@@ -180,16 +180,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\"");
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -36,66 +20,73 @@ index 429ccd583ecd136a63862e94b8eb36b371e28d0f..efcee39cd7154493de04ca903edbd32b
|
|||||||
- 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();
|
||||||
|
|
||||||
@@ -320,7 +310,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
|
@@ -212,6 +202,17 @@ 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()) {
|
+ // Plazma - Tweak console logging; Moved down
|
||||||
+ if (org.plazmamc.plazma.configurations.GlobalConfiguration.get().consoleLogs.enableOfflineWarnings && !this.usesAuthentication()) { // Plazma
|
|
||||||
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
|
|
||||||
@@ -333,9 +323,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 \"plazma.yml\" file."); // Plazma
|
|
||||||
}
|
|
||||||
|
|
||||||
+ // Plazma start - Moved down
|
|
||||||
+ // Paper start - detect running as root
|
+ // Paper start - detect running as root
|
||||||
+ if (org.plazmamc.plazma.configurations.GlobalConfiguration.get().consoleLogs.enableRootUserWarnings && io.papermc.paper.util.ServerEnvironment.userIsRootOrAdmin()) {
|
+ if (org.plazmamc.plazma.configurations.GlobalConfiguration.get().consoleLogs.rootUserWarnings && 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
|
+ // Plazma end - Tweak console logging
|
||||||
|
// Paper start - fix converting txt to json file; convert old users earlier after PlayerList creation but before file load/save
|
||||||
|
if (this.convertOldUsers()) {
|
||||||
|
this.getProfileCache().save(false); // Paper
|
||||||
|
@@ -320,6 +321,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.");
|
||||||
|
@@ -333,7 +335,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
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
if (!OldUsersConverter.serverReadyAfterUserconversion(this)) {
|
|
||||||
return false;
|
|
||||||
diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java
|
diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java
|
||||||
index 1a288ebcaade0cc44c7d09478f4f2f8eee7a4269..916b42ffaf5d60aebc0cc3f3c0ee37bdb7b5ca2d 100644
|
index 60aa2984e490374ab2659f9d0a4821f1ea17c700..14d15dd0d4973957871f5c06042fcaa4ea8b7a8a 100644
|
||||||
--- a/src/main/java/net/minecraft/server/players/PlayerList.java
|
--- a/src/main/java/net/minecraft/server/players/PlayerList.java
|
||||||
+++ b/src/main/java/net/minecraft/server/players/PlayerList.java
|
+++ b/src/main/java/net/minecraft/server/players/PlayerList.java
|
||||||
@@ -1426,7 +1426,7 @@ public abstract class PlayerList {
|
@@ -1469,6 +1469,7 @@ public abstract class PlayerList {
|
||||||
}
|
|
||||||
public void broadcastChatMessage(PlayerChatMessage message, Predicate<ServerPlayer> shouldSendFiltered, @Nullable ServerPlayer sender, ChatType.Bound params, @Nullable Function<net.kyori.adventure.audience.Audience, Component> unsignedFunction) {
|
public void broadcastChatMessage(PlayerChatMessage message, Predicate<ServerPlayer> shouldSendFiltered, @Nullable ServerPlayer sender, ChatType.Bound params, @Nullable Function<net.kyori.adventure.audience.Audience, Component> unsignedFunction) {
|
||||||
// Paper end
|
// Paper end
|
||||||
- boolean flag = this.verifyChatTrusted(message);
|
boolean flag = this.verifyChatTrusted(message);
|
||||||
+ boolean flag = this.verifyChatTrusted(message) || !org.plazmamc.plazma.configurations.GlobalConfiguration.get().consoleLogs.enableSecureChatMarker;
|
+ flag = flag || org.plazmamc.plazma.configurations.GlobalConfiguration.get().consoleLogs.notSecurePrefix; // Plazma - Tweak console logging
|
||||||
|
|
||||||
this.server.logChatMessage((unsignedFunction == null ? message.decoratedContent() : unsignedFunction.apply(this.server.console)), params, flag ? null : "Not Secure"); // Paper
|
this.server.logChatMessage((unsignedFunction == null ? message.decoratedContent() : unsignedFunction.apply(this.server.console)), params, flag ? null : "Not Secure"); // Paper
|
||||||
OutgoingChatMessage outgoingchatmessage = OutgoingChatMessage.create(message);
|
OutgoingChatMessage outgoingchatmessage = OutgoingChatMessage.create(message);
|
||||||
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..ba542542cbab63b0764d437049123a76ccaca716 100644
|
index 9c830ec9129ac94aa08e914a82792210c13fc1a3..f7457660566d64a8149db414e005f0b8ed2202b5 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,9 @@ public class GlobalConfiguration extends ConfigurationPart {
|
@@ -67,4 +67,13 @@ public class GlobalConfiguration extends ConfigurationPart {
|
||||||
public ConsoleLogs consoleLogs;
|
|
||||||
public class ConsoleLogs extends ConfigurationPart {
|
|
||||||
|
|
||||||
+ public boolean enableOfflineWarnings = true;
|
|
||||||
+ public boolean enableRootUserWarnings = true;
|
|
||||||
+ public boolean enableSecureChatMarker = DO_OPTIMIZE;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
+ public ConsoleLogs consoleLogs;
|
||||||
|
+ public class ConsoleLogs extends ConfigurationPart {
|
||||||
|
+
|
||||||
|
+ public boolean offlineWarnings = true;
|
||||||
|
+ public boolean rootUserWarnings = true;
|
||||||
|
+ public boolean notSecurePrefix = true;
|
||||||
|
+
|
||||||
|
+ }
|
||||||
|
+
|
||||||
}
|
}
|
||||||
@@ -5,215 +5,210 @@ 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 e95540122ae6a486ce12a5f50fb4d2d073239554..86c9b549e3e75adf9bd5562c4c8d303cf2080e45 100644
|
index 518660609566ffe943103b305472590ee9f0a257..a6a697868b22224a26d6c39e594533c3b33e724b 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
|
||||||
@@ -154,6 +154,23 @@ public class Allay extends PathfinderMob implements InventoryCarrier {
|
@@ -150,6 +150,23 @@ public class Allay extends PathfinderMob implements InventoryCarrier, VibrationS
|
||||||
|
protected void registerGoals() {
|
||||||
|
this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur
|
||||||
}
|
}
|
||||||
// Purpur end
|
+
|
||||||
|
+ // Plazma start - Add missing purpur configuration options
|
||||||
+ // Plazma start - Add missing purpur config options
|
|
||||||
+ @Override
|
+ @Override
|
||||||
+ public boolean isSensitiveToWater() {
|
+ public boolean isSensitiveToWater() {
|
||||||
+ return level.purpurConfig.allayTakeDamageFromWater;
|
+ return level().purpurConfig.allayTakeDamageFromWater;
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ @Override
|
+ @Override
|
||||||
+ public boolean isAlwaysExperienceDropper() {
|
+ public boolean isAlwaysExperienceDropper() {
|
||||||
+ return level.purpurConfig.allayAlwaysDropExp;
|
+ return level().purpurConfig.allayAlwaysDropExp;
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ @Override
|
+ @Override
|
||||||
+ public void initAttributes() {
|
+ public void initAttributes() {
|
||||||
+ this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(level.purpurConfig.allayMaxHealth);
|
+ this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(level().purpurConfig.allayMaxHealth);
|
||||||
+ }
|
+ }
|
||||||
+ // Plazma end
|
+ // Plazma end - Add missing purpur configuration options
|
||||||
+
|
// Purpur end
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected Brain.Provider<Allay> brainProvider() {
|
|
||||||
return Brain.provider(Allay.MEMORY_TYPES, Allay.SENSOR_TYPES);
|
|
||||||
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 31922ac1139f34e0da61a719e3645c1aaa188890..94536f25980cf642edbfcf0c3d338a0172e0b77f 100644
|
index 8616a8c09a21f576a07daaa93ebf64e0f03d0c88..77c1bcde8cc5c2f51418a6f385ce84f202a13787 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
|
||||||
@@ -90,6 +90,23 @@ public class Camel extends AbstractHorse implements PlayerRideableJumping, Rider
|
@@ -97,6 +97,18 @@ public class Camel extends AbstractHorse implements PlayerRideableJumping, Saddl
|
||||||
|
public int getPurpurBreedTime() {
|
||||||
|
return this.level().purpurConfig.camelBreedingTicks;
|
||||||
}
|
}
|
||||||
// Purpur end
|
|
||||||
|
|
||||||
+ // Plazma start - Add missing purpur config options
|
|
||||||
+ @Override
|
|
||||||
+ public boolean dismountsUnderwater() {
|
|
||||||
+ return level.purpurConfig.useDismountsUnderwaterTag ? super.dismountsUnderwater() : !level.purpurConfig.camelRidableInWater;
|
|
||||||
+ }
|
|
||||||
+
|
+
|
||||||
|
+ // Plazma start - Add missing purpur configuration options
|
||||||
+ @Override
|
+ @Override
|
||||||
+ public boolean isSensitiveToWater() {
|
+ public boolean isSensitiveToWater() {
|
||||||
+ return level.purpurConfig.camelTakeDamageFromWater;
|
+ return level().purpurConfig.camelTakeDamageFromWater;
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ @Override
|
+ @Override
|
||||||
+ 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
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void addAdditionalSaveData(CompoundTag nbt) {
|
|
||||||
super.addAdditionalSaveData(nbt);
|
|
||||||
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 c355aaed76663d37a5da8b2f49f9808828b4ef9b..dcc1b75361fe9eb250e3946e54454253a8f0e788 100644
|
index 37f1d3c656997906cef57d9dbefc226d04fc65fe..b3880426148bb1ffbf36113343c54850fc344d1c 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
|
||||||
@@ -145,6 +145,23 @@ public class Frog extends Animal implements VariantHolder<FrogVariant> {
|
@@ -161,6 +161,23 @@ public class Frog extends Animal implements VariantHolder<FrogVariant> {
|
||||||
|
public float getJumpPower() {
|
||||||
|
return (getRider() != null && isControllable()) ? level().purpurConfig.frogRidableJumpHeight * this.getBlockJumpFactor() : super.getJumpPower();
|
||||||
}
|
}
|
||||||
// Purpur end
|
+
|
||||||
|
+ // Plazma start - Add missing purpur configuration options
|
||||||
+ // Plazma start - Add missing purpur config options
|
|
||||||
+ @Override
|
+ @Override
|
||||||
+ public boolean isSensitiveToWater() {
|
+ public boolean isSensitiveToWater() {
|
||||||
+ return level.purpurConfig.frogTakeDamageFromWater;
|
+ return level().purpurConfig.frogTakeDamageFromWater;
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ @Override
|
+ @Override
|
||||||
+ public boolean isAlwaysExperienceDropper() {
|
+ public boolean isAlwaysExperienceDropper() {
|
||||||
+ return level.purpurConfig.frogAlwaysDropExp;
|
+ return level().purpurConfig.frogAlwaysDropExp;
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ @Override
|
+ @Override
|
||||||
+ 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
|
||||||
@Override
|
|
||||||
protected Brain.Provider<Frog> brainProvider() {
|
public int getPurpurBreedTime() {
|
||||||
return Brain.provider(MEMORY_TYPES, SENSOR_TYPES);
|
|
||||||
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 aadc6743deb195ac3368548a75be641ffd3da404..90314f86e17ac7756f8211519fc5cde5a411677d 100644
|
index 2a9c2a69a0589e4e7b7c79d3716376b360a2eba1..630eaae555403db79f4e16880ca443904b9254ab 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
|
||||||
@@ -89,6 +89,23 @@ public class Tadpole extends AbstractFish {
|
@@ -90,6 +90,23 @@ public class Tadpole extends AbstractFish {
|
||||||
|
protected void registerGoals() {
|
||||||
|
this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur
|
||||||
}
|
}
|
||||||
// Purpur end
|
+
|
||||||
|
+ // Plazma start - Add missing purpur configuration options
|
||||||
+ // Plazma start - Add missing purpur config options
|
|
||||||
+ @Override
|
+ @Override
|
||||||
+ public boolean isSensitiveToWater() {
|
+ public boolean isSensitiveToWater() {
|
||||||
+ return level.purpurConfig.tadpoleTakeDamageFromWater;
|
+ return level().purpurConfig.tadpoleTakeDamageFromWater;
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ @Override
|
+ @Override
|
||||||
+ public boolean isAlwaysExperienceDropper() {
|
+ public boolean isAlwaysExperienceDropper() {
|
||||||
+ return level.purpurConfig.tadpoleAlwaysDropExp;
|
+ return level().purpurConfig.tadpoleAlwaysDropExp;
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ @Override
|
+ @Override
|
||||||
+ 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
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected PathNavigation createNavigation(Level world) {
|
|
||||||
return new WaterBoundPathNavigation(this, world);
|
|
||||||
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 6e7c0e95b27c41bf12da1beb3458830ce27c6029..24de1e98661541f36715c59de1487959fb53b4db 100644
|
index 5e7d76dcdc170b809ab82f6e2259c9b4d3d741be..24e351b40745d15e065f4c3cd904596c6daf4cfb 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
|
||||||
@@ -108,6 +108,18 @@ public class Sniffer extends Animal {
|
@@ -106,6 +106,18 @@ public class Sniffer extends Animal {
|
||||||
|
public boolean isControllable() {
|
||||||
|
return level().purpurConfig.snifferControllable;
|
||||||
}
|
}
|
||||||
// Purpur end
|
+
|
||||||
|
+ // Plazma start - Add missing purpur configuration options
|
||||||
+ // Plazma start - Add missing purpur config options
|
|
||||||
+ @Override
|
+ @Override
|
||||||
+ public boolean isSensitiveToWater() {
|
+ public boolean isSensitiveToWater() {
|
||||||
+ return level.purpurConfig.snifferTakeDamageFromWater;
|
+ return level().purpurConfig.snifferTakeDamageFromWater;
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ @Override
|
+ @Override
|
||||||
+ 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
|
||||||
// CraftBukkit start - SPIGOT-7295: moved from constructor to appropriate location
|
|
||||||
@Override
|
@Override
|
||||||
protected void defineSynchedData() {
|
|
||||||
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 69e5b4b6c8d5725bc2fb7cd819219e4ff9df45bd..41301ad56fbcbe0f13447bd3b515d15bf58554c4 100644
|
index bf7ef72a7d92db8f11789a69583270644de0dac7..1f476a4fd148ac9a4c9ad5d12de46a16e4116239 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
|
||||||
@@ -146,6 +146,23 @@ public class Warden extends Monster implements VibrationListener.VibrationListen
|
@@ -147,6 +147,23 @@ public class Warden extends Monster implements VibrationSystem {
|
||||||
|
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
|
||||||
}
|
}
|
||||||
// Purpur end
|
+
|
||||||
|
+ // Plazma start - Add missing purpur configuration options
|
||||||
+ // Plazma start - Add missing purpur config options
|
|
||||||
+ @Override
|
+ @Override
|
||||||
+ public boolean isSensitiveToWater() {
|
+ public boolean isSensitiveToWater() {
|
||||||
+ return level.purpurConfig.wardenTakeDamageFromWater;
|
+ return level().purpurConfig.wardenTakeDamageFromWater;
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ @Override
|
+ @Override
|
||||||
+ public boolean isAlwaysExperienceDropper() {
|
+ public boolean isAlwaysExperienceDropper() {
|
||||||
+ return level.purpurConfig.wardenAlwaysDropExp;
|
+ return level().purpurConfig.wardenAlwaysDropExp;
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ @Override
|
+ @Override
|
||||||
+ 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
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Packet<ClientGamePacketListener> getAddEntityPacket() {
|
|
||||||
return new ClientboundAddEntityPacket(this, this.hasPose(Pose.EMERGING) ? 1 : 0);
|
|
||||||
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/ChestBoat.java b/src/main/java/net/minecraft/world/entity/vehicle/ChestBoat.java
|
||||||
index 3a720375c3daa961a34363f78c2c51d301c3fa06..90bd114feb0924669e61f92f301cdcf7f69405a4 100644
|
index 58af87b8faf4f8d6bdb111c49a429466acface68..22cc678f9bd39acc27ba2d2e7981f9e8026440d4 100644
|
||||||
--- a/src/main/java/net/minecraft/world/entity/vehicle/ChestBoat.java
|
--- a/src/main/java/net/minecraft/world/entity/vehicle/ChestBoat.java
|
||||||
+++ b/src/main/java/net/minecraft/world/entity/vehicle/ChestBoat.java
|
+++ b/src/main/java/net/minecraft/world/entity/vehicle/ChestBoat.java
|
||||||
@@ -41,7 +41,7 @@ public class ChestBoat extends Boat implements HasCustomInventoryScreen, Contain
|
@@ -43,7 +43,7 @@ public class ChestBoat extends Boat implements HasCustomInventoryScreen, Contain
|
||||||
|
|
||||||
public ChestBoat(EntityType<? extends Boat> type, Level world) {
|
public ChestBoat(EntityType<? extends Boat> type, Level world) {
|
||||||
super(type, world);
|
super(type, world);
|
||||||
- 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 - Add missing purpur config options
|
+ 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) {
|
public ChestBoat(Level world, double d0, double d1, double d2) {
|
||||||
@@ -160,7 +160,7 @@ public class ChestBoat extends Boat implements HasCustomInventoryScreen, Contain
|
@@ -170,7 +170,7 @@ public class ChestBoat extends Boat implements HasCustomInventoryScreen, Contain
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getContainerSize() {
|
public int getContainerSize() {
|
||||||
- return 27;
|
- return 27;
|
||||||
+ return org.purpurmc.purpur.PurpurConfig.chestBoatRows * 9; // Plazma - Add missing purpur config options
|
+ 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 ce960bc620d84e56c4e7fc9b721fd45c4cfc4dac..57534bdf23b8373078a5f39c930cdb1defd31416 100644
|
index 65b9e4fc073d0e97c6f90587d20e3ecbdaaf2c71..fc48ff9270e32c3b3dbf7ffd310cab7c33d459c0 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
|
||||||
@@ -327,6 +327,7 @@ public class PurpurConfig {
|
@@ -329,6 +329,7 @@ public class PurpurConfig {
|
||||||
}
|
}
|
||||||
|
|
||||||
public static int barrelRows = 3;
|
public static int barrelRows = 3;
|
||||||
+ public static int chestBoatRows = 3; // Plazma - Add missing purpur config options
|
+ 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;
|
||||||
@@ -367,6 +368,7 @@ public class PurpurConfig {
|
@@ -369,6 +370,7 @@ public class PurpurConfig {
|
||||||
case 1 -> 9;
|
case 1 -> 9;
|
||||||
default -> 27;
|
default -> 27;
|
||||||
});
|
});
|
||||||
+ chestBoatRows = getInt("settings.blocks.chest_boat.rows", chestBoatRows); // Plazma - Add missing purpur config options
|
+ 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 47f2c8f23e318b89324bfcb1342dadc325f53afc..eae616d7b0a318253725ef5bd3891f34b9d9b493 100644
|
index d756c25e6d0af3153e510d0162e65348b1675366..d723b9b6818eae3c40f16f9aeab9604bf6ab03ae 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
|
||||||
@@ -1084,7 +1084,15 @@ public class PurpurWorldConfig {
|
@@ -1170,7 +1170,15 @@ public class PurpurWorldConfig {
|
||||||
public boolean allayRidableInWater = true;
|
public boolean allayRidableInWater = true;
|
||||||
public boolean allayControllable = true;
|
public boolean allayControllable = true;
|
||||||
public List<String> allayRespectNBT = new ArrayList<>();
|
public List<String> allayRespectNBT = new ArrayList<>();
|
||||||
@@ -225,27 +220,27 @@ index 47f2c8f23e318b89324bfcb1342dadc325f53afc..eae616d7b0a318253725ef5bd3891f34
|
|||||||
+ allayMaxHealth = getDouble("mobs.allay.max-health", allayMaxHealth);
|
+ 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);
|
||||||
@@ -1195,7 +1203,15 @@ public class PurpurWorldConfig {
|
@@ -1289,7 +1297,15 @@ public class PurpurWorldConfig {
|
||||||
public double camelJumpStrengthMax = 0.42D;
|
|
||||||
public double camelMovementSpeedMin = 0.09D;
|
public double camelMovementSpeedMin = 0.09D;
|
||||||
public double camelMovementSpeedMax = 0.09D;
|
public double camelMovementSpeedMax = 0.09D;
|
||||||
|
public int camelBreedingTicks = 6000;
|
||||||
+ // Plazma start - Add missing purpur config options
|
+ // Plazma start - Add missing purpur config options
|
||||||
+ public boolean camelRidableInWater = false;
|
+ //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);
|
+ //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);
|
||||||
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);
|
||||||
camelJumpStrengthMin = getDouble("mobs.camel.attributes.jump_strength.min", camelJumpStrengthMin);
|
@@ -1717,7 +1733,15 @@ public class PurpurWorldConfig {
|
||||||
@@ -1622,7 +1638,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;
|
||||||
@@ -257,11 +252,11 @@ index 47f2c8f23e318b89324bfcb1342dadc325f53afc..eae616d7b0a318253725ef5bd3891f34
|
|||||||
+ 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);
|
||||||
@@ -2573,7 +2597,13 @@ public class PurpurWorldConfig {
|
@@ -2668,7 +2692,13 @@ public class PurpurWorldConfig {
|
||||||
public boolean snifferControllable = true;
|
public boolean snifferControllable = true;
|
||||||
public double snifferMaxHealth = 14.0D;
|
public double snifferMaxHealth = 14.0D;
|
||||||
public int snifferBreedingTicks = 6000;
|
public int snifferBreedingTicks = 6000;
|
||||||
@@ -271,11 +266,11 @@ index 47f2c8f23e318b89324bfcb1342dadc325f53afc..eae616d7b0a318253725ef5bd3891f34
|
|||||||
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);
|
||||||
@@ -2672,7 +2702,15 @@ public class PurpurWorldConfig {
|
@@ -2767,7 +2797,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;
|
||||||
@@ -287,11 +282,11 @@ index 47f2c8f23e318b89324bfcb1342dadc325f53afc..eae616d7b0a318253725ef5bd3891f34
|
|||||||
+ 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);
|
||||||
@@ -2882,7 +2920,15 @@ public class PurpurWorldConfig {
|
@@ -2983,7 +3021,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;
|
||||||
@@ -303,7 +298,7 @@ index 47f2c8f23e318b89324bfcb1342dadc325f53afc..eae616d7b0a318253725ef5bd3891f34
|
|||||||
+ 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,28 +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 916b42ffaf5d60aebc0cc3f3c0ee37bdb7b5ca2d..0615c92894f42ccc320a5a6f5e6c5289a2dee5f9 100644
|
|
||||||
--- a/src/main/java/net/minecraft/server/players/PlayerList.java
|
|
||||||
+++ b/src/main/java/net/minecraft/server/players/PlayerList.java
|
|
||||||
@@ -268,7 +268,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) || !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.getChunkSource().chunkMap.playerChunkManager.getTargetSendDistance(), worldserver1.getChunkSource().chunkMap.playerChunkManager.getTargetTickViewDistance(), flag1, !flag, worldserver1.isDebug(), worldserver1.isFlat(), player.getLastDeathLocation())); // Paper - replace old player chunk management
|
|
||||||
@@ -1293,7 +1293,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) && !player.getBukkitEntity().hasPermission("plazma.bypass-reduced-debug-info-gamerule") ? 22 : 23; // Plazma
|
|
||||||
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));
|
|
||||||
@@ -0,0 +1,53 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: AlphaKR93 <dev@alpha93.kr>
|
||||||
|
Date: Wed, 27 Sep 2023 18:29:51 +0900
|
||||||
|
Subject: [PATCH] Add some missing Pufferfish configurations
|
||||||
|
|
||||||
|
|
||||||
|
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 77c1bcde8cc5c2f51418a6f385ce84f202a13787..8ac2f6749f3bd85b73ac543bc9040aacb6032623 100644
|
||||||
|
--- a/src/main/java/net/minecraft/world/entity/animal/camel/Camel.java
|
||||||
|
+++ b/src/main/java/net/minecraft/world/entity/animal/camel/Camel.java
|
||||||
|
@@ -170,11 +170,12 @@ public class Camel extends AbstractHorse implements PlayerRideableJumping, Saddl
|
||||||
|
return dimensions.height - 0.1F * this.getScale();
|
||||||
|
}
|
||||||
|
|
||||||
|
+ private int behaviorTick = 0; // Plazma - Add missing pufferfish configurations
|
||||||
|
@Override
|
||||||
|
protected void customServerAiStep() {
|
||||||
|
//this.level().getProfiler().push("camelBrain"); // Purpur
|
||||||
|
Brain<Camel> behaviorcontroller = (Brain<Camel>) this.getBrain(); // CraftBukkit - decompile error
|
||||||
|
-
|
||||||
|
+ if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Plazma - Add missing pufferfish configurations
|
||||||
|
behaviorcontroller.tick((ServerLevel) this.level(), this);
|
||||||
|
//this.level().getProfiler().pop(); // Purpur
|
||||||
|
//this.level().getProfiler().push("camelActivityUpdate"); // Purpur
|
||||||
|
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 24e351b40745d15e065f4c3cd904596c6daf4cfb..aa60c4a251de2877a9b4ea72899f07194ce15ed7 100644
|
||||||
|
--- a/src/main/java/net/minecraft/world/entity/animal/sniffer/Sniffer.java
|
||||||
|
+++ b/src/main/java/net/minecraft/world/entity/animal/sniffer/Sniffer.java
|
||||||
|
@@ -527,9 +527,11 @@ public class Sniffer extends Animal {
|
||||||
|
return Brain.provider(SnifferAi.MEMORY_TYPES, SnifferAi.SENSOR_TYPES);
|
||||||
|
}
|
||||||
|
|
||||||
|
+ private int behaviorTick; // Plazma - Add missing pufferfish configurations
|
||||||
|
@Override
|
||||||
|
protected void customServerAiStep() {
|
||||||
|
//this.level().getProfiler().push("snifferBrain"); // Purpur
|
||||||
|
+ if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Plazma - Add missing pufferfish configurations
|
||||||
|
this.getBrain().tick((ServerLevel) this.level(), this);
|
||||||
|
//this.level().getProfiler().popPush("snifferActivityUpdate"); // Purpur
|
||||||
|
SnifferAi.updateActivity(this);
|
||||||
|
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 1f476a4fd148ac9a4c9ad5d12de46a16e4116239..707fd662c7f17986fffcabe774de176741456227 100644
|
||||||
|
--- a/src/main/java/net/minecraft/world/entity/monster/warden/Warden.java
|
||||||
|
+++ b/src/main/java/net/minecraft/world/entity/monster/warden/Warden.java
|
||||||
|
@@ -320,7 +320,7 @@ public class Warden extends Monster implements VibrationSystem {
|
||||||
|
ServerLevel worldserver = (ServerLevel) this.level();
|
||||||
|
|
||||||
|
//worldserver.getProfiler().push("wardenBrain"); // Purpur
|
||||||
|
- if (this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish
|
||||||
|
+ if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Plazma - Add missing pufferfish configurations
|
||||||
|
this.getBrain().tick(worldserver, this);
|
||||||
|
//this.level().getProfiler().pop(); // Purpur
|
||||||
|
super.customServerAiStep();
|
||||||
1487
patches/server/0016-Completely-remove-Mojang-Profiler.patch
Normal file
1487
patches/server/0016-Completely-remove-Mojang-Profiler.patch
Normal file
File diff suppressed because it is too large
Load Diff
@@ -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 8ba1c5b6731d43c02b415e4d79a20c1de0c03ad5..4ee9f3ca88e89a8dcbfe6c807036386ef679da0a 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,63 @@
|
|||||||
|
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 46910a3bdacc9df1835e16b300f9e107744d2660..9b372b494b831c374bab478267309544b4b31748 100644
|
||||||
|
--- a/src/main/java/net/minecraft/world/level/portal/PortalShape.java
|
||||||
|
+++ b/src/main/java/net/minecraft/world/level/portal/PortalShape.java
|
||||||
|
@@ -99,7 +99,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().plazmaConfig().structure.netherPortal.width.min() && i <= this.level.getMinecraftWorld().plazmaConfig().structure.netherPortal.width.max() ? i : 0; // Plazma - Configurable nether portal size
|
||||||
|
}
|
||||||
|
|
||||||
|
private int getDistanceUntilEdgeAboveFrame(BlockPos pos, Direction direction) {
|
||||||
|
@@ -132,7 +132,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().plazmaConfig().structure.netherPortal.height.min() && i <= this.level.getMinecraftWorld().plazmaConfig().structure.netherPortal.height.max() && this.hasTopFrame(blockposition_mutableblockposition, i) ? i : 0; // Plazma - Configurable nether portal size
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean hasTopFrame(BlockPos.MutableBlockPos pos, int height) {
|
||||||
|
@@ -186,7 +186,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().plazmaConfig().structure.netherPortal.width.min() && this.width <= this.level.getMinecraftWorld().plazmaConfig().structure.netherPortal.width.max() && this.height >= this.level.getMinecraftWorld().plazmaConfig().structure.netherPortal.height.min() && this.height <= this.level.getMinecraftWorld().plazmaConfig().structure.netherPortal.height.max(); // Plazma - Configurable nether portal size
|
||||||
|
}
|
||||||
|
|
||||||
|
// CraftBukkit start - return boolean
|
||||||
|
diff --git a/src/main/java/org/plazmamc/plazma/configurations/WorldConfigurations.java b/src/main/java/org/plazmamc/plazma/configurations/WorldConfigurations.java
|
||||||
|
index 42d639688b6f0b9ff53debf49a920f5c8e232a19..36728e206de513e071f387d36a608e70a5984a58 100644
|
||||||
|
--- a/src/main/java/org/plazmamc/plazma/configurations/WorldConfigurations.java
|
||||||
|
+++ b/src/main/java/org/plazmamc/plazma/configurations/WorldConfigurations.java
|
||||||
|
@@ -42,6 +42,21 @@ public class WorldConfigurations 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); }
|
||||||
|
+
|
||||||
|
+ }
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
@@ -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 4ee9f3ca88e89a8dcbfe6c807036386ef679da0a..1cf5344d3ade76f6c24c7ea68d98b02e0dc62001 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);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ }
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
307
patches/server/0018-Reduce-create-random-instance.patch
Normal file
307
patches/server/0018-Reduce-create-random-instance.patch
Normal file
@@ -0,0 +1,307 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: AlphaKR93 <dev@alpha93.kr>
|
||||||
|
Date: Wed, 27 Sep 2023 21:18:22 +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 b47a8a082170bcb630c4354be7c77a4cac71d105..7fe6b99e146e7374cd29534f1e89046edd340a82 100644
|
||||||
|
--- a/src/main/java/net/minecraft/server/commands/SpreadPlayersCommand.java
|
||||||
|
+++ b/src/main/java/net/minecraft/server/commands/SpreadPlayersCommand.java
|
||||||
|
@@ -66,7 +66,7 @@ public class SpreadPlayersCommand {
|
||||||
|
if (maxY < j) {
|
||||||
|
throw SpreadPlayersCommand.ERROR_INVALID_MAX_HEIGHT.create(maxY, j);
|
||||||
|
} else {
|
||||||
|
- RandomSource randomsource = RandomSource.create();
|
||||||
|
+ RandomSource randomsource = worldserver.plazmaConfig().misc.reduceRandom ? worldserver.getRandom() : RandomSource.create(); // Plazma - Reduce create random instance
|
||||||
|
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 305b90d10a499e9731f5178433fb10207e428091..47a4e4082571e43946b510a8447627923ee4086c 100644
|
||||||
|
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
||||||
|
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
||||||
|
@@ -456,7 +456,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.plazmaConfig().misc.reduceRandom ? worldserver.getRandom() : RandomSource.create()).nextInt(i1); // Plazma - Reduce create random instance
|
||||||
|
|
||||||
|
for (int l1 = 0; l1 < i1; ++l1) {
|
||||||
|
int i2 = (k1 + j1 * l1) % i1;
|
||||||
|
@@ -493,7 +493,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.plazmaConfig().misc.reduceRandom ? world.getRandom() : RandomSource.create()).nextInt(i1); // Plazma - Reduce create random instance
|
||||||
|
|
||||||
|
for (int l1 = 0; l1 < i1; ++l1) {
|
||||||
|
int i2 = (k1 + j1 * l1) % i1;
|
||||||
|
diff --git a/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java
|
||||||
|
index c0729d3a38e0b9924711c0ca96afd138fa69fa3b..d45a435a3aa8fc5b8f028e0455c3789b36cbdf12 100644
|
||||||
|
--- a/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java
|
||||||
|
+++ b/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java
|
||||||
|
@@ -71,7 +71,7 @@ public class ServerLoginPacketListenerImpl implements ServerLoginPacketListener,
|
||||||
|
this.serverId = "";
|
||||||
|
this.server = server;
|
||||||
|
this.connection = connection;
|
||||||
|
- this.challenge = Ints.toByteArray(RandomSource.create().nextInt());
|
||||||
|
+ this.challenge = Ints.toByteArray((org.plazmamc.plazma.configurations.GlobalConfiguration.get().misc.reduceRandom ? server.random() : RandomSource.create()).nextInt()); // Plazma - Reduce create random instance
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
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 0e0867d7add9a024bbe9471f8ff92bbb25996a3d..034b41aa8c8a5571f21530a4e8588b1cc110ecf3 100644
|
||||||
|
--- a/src/main/java/net/minecraft/server/rcon/thread/QueryThreadGs4.java
|
||||||
|
+++ b/src/main/java/net/minecraft/server/rcon/thread/QueryThreadGs4.java
|
||||||
|
@@ -341,7 +341,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.reduceRandom ? net.minecraft.server.MinecraftServer.getServer().random() : RandomSource.create()).nextInt(16777216); // Plazma - Reduce create random instance
|
||||||
|
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/ai/behavior/ShufflingList.java b/src/main/java/net/minecraft/world/entity/ai/behavior/ShufflingList.java
|
||||||
|
index 3fac11bf02652b5f51f30f99bdf516504467d0d2..add054ac26890b627d1eee87d1b0f88a84bf2aac 100644
|
||||||
|
--- a/src/main/java/net/minecraft/world/entity/ai/behavior/ShufflingList.java
|
||||||
|
+++ b/src/main/java/net/minecraft/world/entity/ai/behavior/ShufflingList.java
|
||||||
|
@@ -15,7 +15,7 @@ import net.minecraft.util.RandomSource;
|
||||||
|
|
||||||
|
public class ShufflingList<U> implements Iterable<U> {
|
||||||
|
protected final List<ShufflingList.WeightedEntry<U>> entries;
|
||||||
|
- private final RandomSource random = RandomSource.create();
|
||||||
|
+ private final RandomSource random = org.plazmamc.plazma.configurations.GlobalConfiguration.get().misc.reduceRandom ? net.minecraft.server.MinecraftServer.getServer().random() : RandomSource.create(); // Plazma - Reduce create random instance
|
||||||
|
private final boolean isUnsafe; // Paper - Fix Concurrency issue in ShufflingList during worldgen
|
||||||
|
|
||||||
|
public ShufflingList() {
|
||||||
|
diff --git a/src/main/java/net/minecraft/world/entity/ai/sensing/Sensor.java b/src/main/java/net/minecraft/world/entity/ai/sensing/Sensor.java
|
||||||
|
index e553f52de2e0b30511ac1b73cb436374017cd7d7..cbb94ec3111865563e451e758e5b9813f3c6102f 100644
|
||||||
|
--- a/src/main/java/net/minecraft/world/entity/ai/sensing/Sensor.java
|
||||||
|
+++ b/src/main/java/net/minecraft/world/entity/ai/sensing/Sensor.java
|
||||||
|
@@ -8,7 +8,7 @@ import net.minecraft.world.entity.ai.memory.MemoryModuleType;
|
||||||
|
import net.minecraft.world.entity.ai.targeting.TargetingConditions;
|
||||||
|
|
||||||
|
public abstract class Sensor<E extends LivingEntity> {
|
||||||
|
- private static final RandomSource RANDOM = RandomSource.createThreadSafe();
|
||||||
|
+ private static final RandomSource RANDOM = org.plazmamc.plazma.configurations.GlobalConfiguration.get().misc.reduceRandom && org.plazmamc.plazma.configurations.GlobalConfiguration.get().misc.ignoreThreadSafeRandom ? net.minecraft.server.MinecraftServer.getServer().random() : RandomSource.createThreadSafe(); // Plazma - Reduce create random instance
|
||||||
|
private static final int DEFAULT_SCAN_RATE = 20;
|
||||||
|
protected static final int TARGETING_RANGE = 16;
|
||||||
|
private static final TargetingConditions TARGET_CONDITIONS = TargetingConditions.forNonCombat().range(16.0);
|
||||||
|
diff --git a/src/main/java/net/minecraft/world/entity/monster/warden/AngerManagement.java b/src/main/java/net/minecraft/world/entity/monster/warden/AngerManagement.java
|
||||||
|
index 3d792957f27fd4bdfad8d76262a8e2a2012bf35f..2d96cf85fb9250bbbddb8065307a47929c0c905c 100644
|
||||||
|
--- a/src/main/java/net/minecraft/world/entity/monster/warden/AngerManagement.java
|
||||||
|
+++ b/src/main/java/net/minecraft/world/entity/monster/warden/AngerManagement.java
|
||||||
|
@@ -33,7 +33,7 @@ public class AngerManagement {
|
||||||
|
@VisibleForTesting
|
||||||
|
protected static final int MAX_ANGER = 150;
|
||||||
|
private static final int DEFAULT_ANGER_DECREASE = 1;
|
||||||
|
- private int conversionDelay = Mth.randomBetweenInclusive(RandomSource.create(), 0, 2);
|
||||||
|
+ private int conversionDelay = Mth.randomBetweenInclusive((org.plazmamc.plazma.configurations.GlobalConfiguration.get().misc.reduceRandom ? net.minecraft.server.MinecraftServer.getServer().random() : RandomSource.create()), 0, 2); // Plazma - Reduce create random instance
|
||||||
|
int highestAnger;
|
||||||
|
private static final Codec<Pair<UUID, Integer>> SUSPECT_ANGER_PAIR = RecordCodecBuilder.create(
|
||||||
|
instance -> instance.group(
|
||||||
|
diff --git a/src/main/java/net/minecraft/world/entity/npc/WanderingTraderSpawner.java b/src/main/java/net/minecraft/world/entity/npc/WanderingTraderSpawner.java
|
||||||
|
index 752b38d45d59d8b3cd492246e5aa4f378a78734d..38b534e4613641046ed3cd048f52dff0888acda2 100644
|
||||||
|
--- a/src/main/java/net/minecraft/world/entity/npc/WanderingTraderSpawner.java
|
||||||
|
+++ b/src/main/java/net/minecraft/world/entity/npc/WanderingTraderSpawner.java
|
||||||
|
@@ -32,7 +32,7 @@ public class WanderingTraderSpawner implements CustomSpawner {
|
||||||
|
private static final int SPAWN_CHANCE_INCREASE = 25;
|
||||||
|
private static final int SPAWN_ONE_IN_X_CHANCE = 10;
|
||||||
|
private static final int NUMBER_OF_SPAWN_ATTEMPTS = 10;
|
||||||
|
- private final RandomSource random = RandomSource.create();
|
||||||
|
+ private final RandomSource random = org.plazmamc.plazma.configurations.GlobalConfiguration.get().misc.reduceRandom ? net.minecraft.server.MinecraftServer.getServer().random() : RandomSource.create(); // Plazma - reduce create random instace
|
||||||
|
private final ServerLevelData serverLevelData;
|
||||||
|
private int tickDelay;
|
||||||
|
private int spawnDelay;
|
||||||
|
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 91497f5e6c07fcf1b05eca6846c51e1a15ed3bc0..1317d8289898798a9d86a4c995a4a1a317631bf7 100644
|
||||||
|
--- a/src/main/java/net/minecraft/world/entity/projectile/FishingHook.java
|
||||||
|
+++ b/src/main/java/net/minecraft/world/entity/projectile/FishingHook.java
|
||||||
|
@@ -87,7 +87,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.plazmaConfig().misc.reduceRandom ? world.getRandom() : RandomSource.create(); // Plazma - Reduce create random instance
|
||||||
|
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 bf2c23fad919820512ce031cf28a000b249b2876..cb81994735650ec7c54b3f5a97d94e069d254c35 100644
|
||||||
|
--- a/src/main/java/net/minecraft/world/entity/raid/Raid.java
|
||||||
|
+++ b/src/main/java/net/minecraft/world/entity/raid/Raid.java
|
||||||
|
@@ -114,7 +114,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.plazmaConfig().misc.reduceRandom ? world.getRandom() : RandomSource.create(); // Plazma - Reduce create random instace
|
||||||
|
this.waveSpawnPos = Optional.empty();
|
||||||
|
this.id = id;
|
||||||
|
this.level = world;
|
||||||
|
@@ -128,7 +128,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.plazmaConfig().misc.reduceRandom ? world.getRandom() : RandomSource.create(); // Plazma - Reduce create random instace
|
||||||
|
this.waveSpawnPos = Optional.empty();
|
||||||
|
this.level = world;
|
||||||
|
this.id = nbt.getInt("Id");
|
||||||
|
diff --git a/src/main/java/net/minecraft/world/inventory/EnchantmentMenu.java b/src/main/java/net/minecraft/world/inventory/EnchantmentMenu.java
|
||||||
|
index 1a686780e5aadcbdcfceb770ce8e283b38115209..6c1ba9631e56c336ed3ddee8e6435734597a3aa3 100644
|
||||||
|
--- a/src/main/java/net/minecraft/world/inventory/EnchantmentMenu.java
|
||||||
|
+++ b/src/main/java/net/minecraft/world/inventory/EnchantmentMenu.java
|
||||||
|
@@ -97,7 +97,7 @@ public class EnchantmentMenu extends AbstractContainerMenu {
|
||||||
|
}
|
||||||
|
// Purpur end
|
||||||
|
};
|
||||||
|
- this.random = RandomSource.create();
|
||||||
|
+ this.random = playerInventory.player.level().plazmaConfig().misc.reduceRandom ? playerInventory.player.level().random : RandomSource.create(); // Plazma - Reduce create random instace
|
||||||
|
this.enchantmentSeed = DataSlot.standalone();
|
||||||
|
this.costs = new int[3];
|
||||||
|
this.enchantClue = new int[]{-1, -1, -1};
|
||||||
|
diff --git a/src/main/java/net/minecraft/world/level/Explosion.java b/src/main/java/net/minecraft/world/level/Explosion.java
|
||||||
|
index 0be03430d8257d918b7cf646af518473ae027399..824f210af6d8467ed596ece1573740d99b92b7ba 100644
|
||||||
|
--- a/src/main/java/net/minecraft/world/level/Explosion.java
|
||||||
|
+++ b/src/main/java/net/minecraft/world/level/Explosion.java
|
||||||
|
@@ -92,7 +92,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, ParticleOptions particle, ParticleOptions emitterParticle, SoundEvent soundEvent) {
|
||||||
|
- this.random = RandomSource.create();
|
||||||
|
+ this.random = world.plazmaConfig().misc.reduceRandom ? world.getRandom() : RandomSource.create(); // Plazma - Reduce create random instace
|
||||||
|
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 16e6716f70d5b9090f29f8b2320302d98dd087c2..72420d9e79d4b480fa060f9b910cea7b677a1427 100644
|
||||||
|
--- a/src/main/java/net/minecraft/world/level/Level.java
|
||||||
|
+++ b/src/main/java/net/minecraft/world/level/Level.java
|
||||||
|
@@ -122,16 +122,16 @@ 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 final int addend = 1013904223;
|
||||||
|
protected float oRainLevel;
|
||||||
|
public float rainLevel;
|
||||||
|
protected float oThunderLevel;
|
||||||
|
public float thunderLevel;
|
||||||
|
public final RandomSource random = RandomSource.create();
|
||||||
|
+ protected int randValue = org.plazmamc.plazma.configurations.GlobalConfiguration.get().misc.reduceRandom ? random.nextInt() : RandomSource.create().nextInt(); // Plazma - Reduce create random instace
|
||||||
|
/** @deprecated */
|
||||||
|
@Deprecated
|
||||||
|
- private final RandomSource threadSafeRandom = RandomSource.createThreadSafe();
|
||||||
|
+ private final RandomSource threadSafeRandom = org.plazmamc.plazma.configurations.GlobalConfiguration.get().misc.ignoreThreadSafeRandom ? random : RandomSource.createThreadSafe(); // Plazma - Reduce create random instace
|
||||||
|
private final ResourceKey<DimensionType> dimensionTypeId;
|
||||||
|
private final Holder<DimensionType> dimensionTypeRegistration;
|
||||||
|
public final WritableLevelData levelData;
|
||||||
|
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 4997f120aa9877c199fbcaa0c2f65226e13b5a23..af393eaf3d21a260f0bfff5eaeb78c389161bffd 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
|
||||||
|
@@ -363,7 +363,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.plazmaConfig().misc.reduceRandom ? world.getRandom() : RandomSource.create()), pos); // Plazma - Reduce create random instance
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
diff --git a/src/main/java/net/minecraft/world/level/chunk/ChunkGeneratorStructureState.java b/src/main/java/net/minecraft/world/level/chunk/ChunkGeneratorStructureState.java
|
||||||
|
index 798e22fb4d685b5845ebf687e8004e94f13a9751..189f425565c9c38b29031ae26de667422eb3b6bb 100644
|
||||||
|
--- a/src/main/java/net/minecraft/world/level/chunk/ChunkGeneratorStructureState.java
|
||||||
|
+++ b/src/main/java/net/minecraft/world/level/chunk/ChunkGeneratorStructureState.java
|
||||||
|
@@ -224,7 +224,7 @@ public class ChunkGeneratorStructureState {
|
||||||
|
List<CompletableFuture<ChunkPos>> list = new ArrayList(j);
|
||||||
|
int k = placement.spread();
|
||||||
|
HolderSet<Biome> holderset = placement.preferredBiomes();
|
||||||
|
- RandomSource randomsource = RandomSource.create();
|
||||||
|
+ RandomSource randomsource = org.plazmamc.plazma.configurations.GlobalConfiguration.get().misc.reduceRandom ? net.minecraft.server.MinecraftServer.getServer().random() : RandomSource.create(); // Plazma - Reduce create random instace
|
||||||
|
|
||||||
|
// Paper start - Add missing structure set seed configs
|
||||||
|
if (this.conf.strongholdSeed != null && structureSetEntry.is(net.minecraft.world.level.levelgen.structure.BuiltinStructureSets.STRONGHOLDS)) {
|
||||||
|
diff --git a/src/main/java/net/minecraft/world/level/dimension/end/DragonRespawnAnimation.java b/src/main/java/net/minecraft/world/level/dimension/end/DragonRespawnAnimation.java
|
||||||
|
index 7bbe93966fa00b7001da53bf2f22f4d942b7cc22..6c5eececc83571b0f60e7f672ed185e1d262e99c 100644
|
||||||
|
--- a/src/main/java/net/minecraft/world/level/dimension/end/DragonRespawnAnimation.java
|
||||||
|
+++ b/src/main/java/net/minecraft/world/level/dimension/end/DragonRespawnAnimation.java
|
||||||
|
@@ -81,7 +81,7 @@ public enum DragonRespawnAnimation {
|
||||||
|
world.explode((Entity) null, (double) ((float) worldgenender_spike.getCenterX() + 0.5F), (double) worldgenender_spike.getHeight(), (double) ((float) worldgenender_spike.getCenterZ() + 0.5F), 5.0F, Level.ExplosionInteraction.BLOCK);
|
||||||
|
SpikeConfiguration worldgenfeatureendspikeconfiguration = new SpikeConfiguration(true, ImmutableList.of(worldgenender_spike), new BlockPos(0, 128, 0));
|
||||||
|
|
||||||
|
- Feature.END_SPIKE.place(worldgenfeatureendspikeconfiguration, world, world.getChunkSource().getGenerator(), RandomSource.create(), new BlockPos(worldgenender_spike.getCenterX(), 45, worldgenender_spike.getCenterZ()));
|
||||||
|
+ Feature.END_SPIKE.place(worldgenfeatureendspikeconfiguration, world, world.getChunkSource().getGenerator(), (world.plazmaConfig().misc.reduceRandom ? world.getRandom() : RandomSource.create()), new BlockPos(worldgenender_spike.getCenterX(), 45, worldgenender_spike.getCenterZ())); // Plazma - Reduce create random instance
|
||||||
|
}
|
||||||
|
} else if (flag1) {
|
||||||
|
fight.setRespawnStage(SUMMONING_DRAGON); // CraftBukkit - decompile error
|
||||||
|
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 d4f903c402765c6e8e1db99e148613748f530726..c8d76fdee94a0ffb76fcb476ca386acf154dda28 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);
|
||||||
|
+ holder_c.value().place(this.level, this.level.getChunkSource().getGenerator(), (this.level.plazmaConfig().misc.reduceRandom ? this.level.getRandom() : RandomSource.create()), pos); // Plazma - Reduce create random instace
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -490,7 +490,7 @@ public class EndDragonFight {
|
||||||
|
this.portalLocation = this.portalLocation.atY(this.level.getMinBuildHeight() + 1);
|
||||||
|
}
|
||||||
|
// Paper end - Prevent "softlocked" exit portal generation
|
||||||
|
- if (worldgenendtrophy.place(FeatureConfiguration.NONE, this.level, this.level.getChunkSource().getGenerator(), RandomSource.create(), this.portalLocation)) {
|
||||||
|
+ if (worldgenendtrophy.place(FeatureConfiguration.NONE, this.level, this.level.getChunkSource().getGenerator(), (this.level.plazmaConfig().misc.reduceRandom ? this.level.getRandom() : RandomSource.create()), this.portalLocation)) { // Plazma - Reduce create random instace
|
||||||
|
int i = Mth.positiveCeilDiv(4, 16);
|
||||||
|
|
||||||
|
this.level.getChunkSource().chunkMap.waitForLightBeforeSending(new ChunkPos(this.portalLocation), i);
|
||||||
|
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftFirework.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftFirework.java
|
||||||
|
index 1309fabd357eb9b8f90f882ec7ff3de9e60f187d..d300668899c3382a42e6a25dd084fb814b56f6bc 100644
|
||||||
|
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftFirework.java
|
||||||
|
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftFirework.java
|
||||||
|
@@ -14,11 +14,12 @@ import org.bukkit.inventory.meta.FireworkMeta;
|
||||||
|
|
||||||
|
public class CraftFirework extends CraftProjectile implements Firework {
|
||||||
|
|
||||||
|
- private final Random random = new Random();
|
||||||
|
+ private final net.minecraft.util.RandomSource random; // Plazma - Reduce create random instance
|
||||||
|
//private CraftItemStack item; // Paper - Remove usage, not accurate representation of current item.
|
||||||
|
|
||||||
|
public CraftFirework(CraftServer server, FireworkRocketEntity entity) {
|
||||||
|
super(server, entity);
|
||||||
|
+ this.random = this.getHandle().level().plazmaConfig().misc.reduceRandom ? this.getHandle().level().getRandom() : net.minecraft.util.RandomSource.create(); // Plazma - Reduce create random instance
|
||||||
|
|
||||||
|
// Paper start - Expose firework item directly
|
||||||
|
// ItemStack item = this.getHandle().getEntityData().get(FireworkRocketEntity.DATA_ID_FIREWORKS_ITEM);
|
||||||
|
diff --git a/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java b/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java
|
||||||
|
index f7457660566d64a8149db414e005f0b8ed2202b5..d922c572e2410fa1f719fe2371f65cd1542ca8b4 100644
|
||||||
|
--- a/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java
|
||||||
|
+++ b/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java
|
||||||
|
@@ -64,6 +64,8 @@ public class GlobalConfiguration extends ConfigurationPart {
|
||||||
|
public Miscellaneous misc;
|
||||||
|
public class Miscellaneous extends ConfigurationPart {
|
||||||
|
|
||||||
|
+ public boolean reduceRandom = OPTIMIZE;
|
||||||
|
+ public boolean ignoreThreadSafeRandom = false;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
diff --git a/src/main/java/org/plazmamc/plazma/configurations/WorldConfigurations.java b/src/main/java/org/plazmamc/plazma/configurations/WorldConfigurations.java
|
||||||
|
index 36728e206de513e071f387d36a608e70a5984a58..c8b10b3499fbdf41f0b268d8a9da729e3432bb66 100644
|
||||||
|
--- a/src/main/java/org/plazmamc/plazma/configurations/WorldConfigurations.java
|
||||||
|
+++ b/src/main/java/org/plazmamc/plazma/configurations/WorldConfigurations.java
|
||||||
|
@@ -22,6 +22,7 @@ public class WorldConfigurations extends ConfigurationPart {
|
||||||
|
public Miscellaneous misc;
|
||||||
|
public class Miscellaneous extends ConfigurationPart {
|
||||||
|
|
||||||
|
+ public boolean reduceRandom = OPTIMIZE;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
33
patches/server/0019-Apply-various-optimizations.patch
Normal file
33
patches/server/0019-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 f2c6b52fe7fbb05afa0074684cd195f6ae598f1f..f16a347e0e263a0479a73cb14626e31c9de37e6c 100644
|
||||||
|
--- a/src/main/java/net/minecraft/world/entity/Entity.java
|
||||||
|
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
|
||||||
|
@@ -2154,8 +2154,9 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
|
||||||
|
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();
|
||||||
|
@@ -2183,8 +2184,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
|
||||||
|
entity.push(d0, 0.0D, d1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
-
|
||||||
|
- }
|
||||||
|
+ //} // Plazma - Swaps the predicate order of collision
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@@ -1,202 +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 591163d8f8300b084ac734800efee902c4def958..d74401ca3182145d136ad668704f5c043b163317 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 29c46144de1aad31b997ee5000114e6f33f1a1f7..c6d860687f6a1c286c286bb64ac4eed75a88f0c4 100644
|
|
||||||
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
|
||||||
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
|
||||||
@@ -403,7 +403,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;
|
|
||||||
@@ -440,7 +440,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);
|
|
||||||
|
|
||||||
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 d77410588a1c10d8ac902f21a8bd7e35f74fecd2..95bf0537d7793391eae9dd67655dc0189eb047df 100644
|
|
||||||
--- a/src/main/java/net/minecraft/world/entity/projectile/FishingHook.java
|
|
||||||
+++ b/src/main/java/net/minecraft/world/entity/projectile/FishingHook.java
|
|
||||||
@@ -80,7 +80,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 879c3bb661e24b9682b654def57c2800f4f8ca92..4c465466543e51ff1e8343d3af7ee31a8b04b839 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/inventory/EnchantmentMenu.java b/src/main/java/net/minecraft/world/inventory/EnchantmentMenu.java
|
|
||||||
index 69ae671be07b1928e778399551991777829e432a..e39ac3557c7abd6081ae25df71d0fd134c9cc342 100644
|
|
||||||
--- a/src/main/java/net/minecraft/world/inventory/EnchantmentMenu.java
|
|
||||||
+++ b/src/main/java/net/minecraft/world/inventory/EnchantmentMenu.java
|
|
||||||
@@ -94,7 +94,7 @@ public class EnchantmentMenu extends AbstractContainerMenu {
|
|
||||||
}
|
|
||||||
// Purpur end
|
|
||||||
};
|
|
||||||
- this.random = RandomSource.create();
|
|
||||||
+ this.random = playerInventory.player.level.plazmaLevelConfiguration().misc.reduceCreateRandomInstance ? playerInventory.player.getRandom() : RandomSource.create(); // Plazma
|
|
||||||
this.enchantmentSeed = DataSlot.standalone();
|
|
||||||
this.costs = new int[3];
|
|
||||||
this.enchantClue = new int[]{-1, -1, -1};
|
|
||||||
diff --git a/src/main/java/net/minecraft/world/level/Explosion.java b/src/main/java/net/minecraft/world/level/Explosion.java
|
|
||||||
index 4beaedc5ec3562df62a7a9e6b2f40728bd933044..62c1b93ef872a40832ae6c223e99409aba2427db 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 058449f24eb3260dc230dad2a0b4c552d0b7f40e..cf0ad841267cac84ed058dee6cdd62a835325feb 100644
|
|
||||||
--- a/src/main/java/net/minecraft/world/level/Level.java
|
|
||||||
+++ b/src/main/java/net/minecraft/world/level/Level.java
|
|
||||||
@@ -125,7 +125,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 43ca8471d7d4d2d561cba7e2a952a16ed200a961..2260ddd570e40ce97c6a14de99afa550d9686178 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
|
|
||||||
@@ -369,7 +369,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 e9eb32469a5c03f7a3677ef50fd4541c1ed662ad..75665373c291faaea1cbf5f54c3634fdb042556c 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
|
|
||||||
@@ -411,7 +411,7 @@ public class EndDragonFight {
|
|
||||||
this.level.registryAccess().registry(Registries.CONFIGURED_FEATURE).flatMap((registry) -> {
|
|
||||||
return registry.getHolder(EndFeatures.END_GATEWAY_DELAYED);
|
|
||||||
}).ifPresent((reference) -> {
|
|
||||||
- reference.value().place(this.level, this.level.getChunkSource().getGenerator(), RandomSource.create(), pos);
|
|
||||||
+ reference.value().place(this.level, this.level.getChunkSource().getGenerator(), (this.level.plazmaLevelConfiguration().misc.reduceCreateRandomInstance ? this.level.getRandom() : RandomSource.create()), pos); // Plazma
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -427,7 +427,7 @@ public class EndDragonFight {
|
|
||||||
this.portalLocation = this.portalLocation.atY(this.level.getMinBuildHeight() + 1);
|
|
||||||
}
|
|
||||||
// Paper end
|
|
||||||
- endPodiumFeature.place(FeatureConfiguration.NONE, this.level, this.level.getChunkSource().getGenerator(), RandomSource.create(), this.portalLocation);
|
|
||||||
+ endPodiumFeature.place(FeatureConfiguration.NONE, this.level, this.level.getChunkSource().getGenerator(), (this.level.plazmaLevelConfiguration().misc.reduceCreateRandomInstance ? this.level.getRandom() : RandomSource.create()), this.portalLocation); // Plazma
|
|
||||||
}
|
|
||||||
|
|
||||||
@Nullable
|
|
||||||
diff --git a/src/main/java/net/minecraft/world/level/storage/loot/LootContext.java b/src/main/java/net/minecraft/world/level/storage/loot/LootContext.java
|
|
||||||
index 9e9ac64764cf0a84e25e75d8d6f516cde6047284..2d197a7de77657a19b1b527c0aa53ef9918eb15f 100644
|
|
||||||
--- a/src/main/java/net/minecraft/world/level/storage/loot/LootContext.java
|
|
||||||
+++ b/src/main/java/net/minecraft/world/level/storage/loot/LootContext.java
|
|
||||||
@@ -202,7 +202,7 @@ public class LootContext {
|
|
||||||
} else {
|
|
||||||
RandomSource randomSource = this.random;
|
|
||||||
if (randomSource == null) {
|
|
||||||
- randomSource = RandomSource.create();
|
|
||||||
+ randomSource = this.level.plazmaLevelConfiguration().misc.reduceCreateRandomInstance ? this.level.getRandom() : RandomSource.create();
|
|
||||||
}
|
|
||||||
|
|
||||||
MinecraftServer minecraftServer = this.level.getServer();
|
|
||||||
diff --git a/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java b/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java
|
|
||||||
index 1e979bb87ec743e87909927a517692da38e7b18f..66436d4eb66b5a71f18b7db359ab1d63bbac74c0 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 9416ce600d46fad167befe8d42f9a1a7d891a37f..2836447cf43e145d1fc1d24f6d054be49e9a14d9 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;
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: AlphaKR93 <dev@alpha93.kr>
|
||||||
|
Date: Wed, 27 Sep 2023 22:13:07 +0900
|
||||||
|
Subject: [PATCH] Avoid double I/O operation on load player file
|
||||||
|
|
||||||
|
|
||||||
|
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 e0f085169fafa5e574caf368efa343514540b348..042617c7de30707f66e60536cebc31e210647b64 100644
|
||||||
|
--- a/src/main/java/net/minecraft/world/level/storage/PlayerDataStorage.java
|
||||||
|
+++ b/src/main/java/net/minecraft/world/level/storage/PlayerDataStorage.java
|
||||||
|
@@ -60,7 +60,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 isNormalFile = file.exists() && file.isFile(); // Plazma - Avoid double I/O operation
|
||||||
|
+ if ( org.bukkit.Bukkit.getOnlineMode() && !isNormalFile ) // 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() )
|
||||||
|
@@ -71,7 +72,7 @@ public class PlayerDataStorage {
|
||||||
|
}
|
||||||
|
// Spigot End
|
||||||
|
|
||||||
|
- if (file.exists() && file.isFile()) {
|
||||||
|
+ if (isNormalFile) { // Plazma - Avoid double I/O operation
|
||||||
|
nbttagcompound = NbtIo.readCompressed(file.toPath(), NbtAccounter.unlimitedHeap());
|
||||||
|
}
|
||||||
|
// Spigot Start
|
||||||
@@ -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 2836447cf43e145d1fc1d24f6d054be49e9a14d9..f560db0cd544c96264ebad8af3ed3dd8379bab1b 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 {
|
|
||||||
+
|
|
||||||
+
|
|
||||||
+
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ }
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: AlphaKR93 <dev@alpha93.kr>
|
||||||
|
Date: Sun, 5 Nov 2023 12:03:06 +0900
|
||||||
|
Subject: [PATCH] Do not refresh LootTable for non player interaction
|
||||||
|
|
||||||
|
|
||||||
|
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 fa64bf5ad13c278438039b663ea3134e72108411..3ec9cb7c98cd5d3cb26e4a27174a75fe243c81c0 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
|
||||||
|
@@ -68,6 +68,7 @@ public abstract class RandomizableContainerBlockEntity extends BaseContainerBloc
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void unpackLootTable(@org.jetbrains.annotations.Nullable final Player player) {
|
||||||
|
+ if (player == null && org.plazmamc.plazma.configurations.GlobalConfiguration.get().misc.refreshLootTableForNonPlayerInteraction) return; // Plazma - Do not refresh LootTable for non player interaction
|
||||||
|
// Copied from super with changes, always check the original method
|
||||||
|
net.minecraft.world.level.Level level = this.getLevel();
|
||||||
|
BlockPos blockPos = this.getBlockPos();
|
||||||
|
diff --git a/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java b/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java
|
||||||
|
index d922c572e2410fa1f719fe2371f65cd1542ca8b4..a060257a62da7ed02b342b426e18e5f02ecdbdc9 100644
|
||||||
|
--- a/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java
|
||||||
|
+++ b/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java
|
||||||
|
@@ -66,6 +66,7 @@ public class GlobalConfiguration extends ConfigurationPart {
|
||||||
|
|
||||||
|
public boolean reduceRandom = OPTIMIZE;
|
||||||
|
public boolean ignoreThreadSafeRandom = false;
|
||||||
|
+ public boolean refreshLootTableForNonPlayerInteraction = !OPTIMIZE;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
@@ -1,107 +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 3c10c719f6172161a2dcc6592a0a1492e9b3d7c1..d64f188257c135e2a4af07e28ff8f912c80eac03 100644
|
|
||||||
--- a/src/main/java/net/minecraft/world/entity/Entity.java
|
|
||||||
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
|
|
||||||
@@ -1991,8 +1991,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
|
|
||||||
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();
|
|
||||||
@@ -2021,7 +2022,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
- }
|
|
||||||
+ //} // 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 6d62cc8fb347ccafd51df05896e616995990f005..c26e4795afd0bd450d304f4528d0b8e4cfa761ce 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().getLootTables().get(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 f55c50f6637a4f930b15565d6ac82bb4f27b9059..9c4e65a67bda331625a0891be10495eaae5f3f5e 100644
|
|
||||||
--- a/src/main/java/net/minecraft/world/level/levelgen/PhantomSpawner.java
|
|
||||||
+++ b/src/main/java/net/minecraft/world/level/levelgen/PhantomSpawner.java
|
|
||||||
@@ -73,6 +73,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 66436d4eb66b5a71f18b7db359ab1d63bbac74c0..87a85fb1cd9a19541df04a5d1c457d86cf7f68eb 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 f560db0cd544c96264ebad8af3ed3dd8379bab1b..80ee8293d73ecdb1a942ca88f1aa00813d600849 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 ae3c1bd67c144fe971d4df6df2ca171b431b6fc5..dee076d1e6e30f108a79565546182b4751737baa 100644
|
|
||||||
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
|
||||||
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
|
||||||
@@ -1534,7 +1534,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
|
|
||||||
if (!this.player.isChangingDimension() && (!this.player.getLevel().getGameRules().getBoolean(GameRules.RULE_DISABLE_ELYTRA_MOVEMENT_CHECK) || !this.player.isFallFlying())) {
|
|
||||||
float f2 = this.player.isFallFlying() ? 300.0F : 100.0F;
|
|
||||||
|
|
||||||
- if (d11 - d10 > Math.max(f2, Math.pow((double) (org.spigotmc.SpigotConfig.movedTooQuicklyMultiplier * (float) i * speed), 2)) && !this.isSingleplayerOwner()) {
|
|
||||||
+ if (!(this.player.getLevel().plazmaLevelConfiguration().misc.checkSpectatorMovedToQuickly && this.player.isSpectator()) && d11 - d10 > Math.max(f2, Math.pow((double) (org.spigotmc.SpigotConfig.movedTooQuicklyMultiplier * (float) i * speed), 2)) && !this.isSingleplayerOwner()) { // Plazma
|
|
||||||
// CraftBukkit end
|
|
||||||
ServerGamePacketListenerImpl.LOGGER.warn("{} moved too quickly! {},{},{}", new Object[]{this.player.getName().getString(), d7, d8, d9});
|
|
||||||
this.teleport(this.player.getX(), this.player.getY(), this.player.getZ(), this.player.getYRot(), this.player.getXRot());
|
|
||||||
diff --git a/src/main/java/org/plazmamc/plazma/configurations/LevelConfigurations.java b/src/main/java/org/plazmamc/plazma/configurations/LevelConfigurations.java
|
|
||||||
index 80ee8293d73ecdb1a942ca88f1aa00813d600849..e6c22ab535ab8fecaadbf06d4982440fd5863f17 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;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -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 0847aef56d8608cb1403485f231f30b2527f35ab..fee30f686a5d1ee50a00c2073efd5b0a80e85179 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 - 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 c8b10b3499fbdf41f0b268d8a9da729e3432bb66..922d1d250f2e2e5a4177bcf5fe7487ff2b43413b 100644
|
||||||
|
--- a/src/main/java/org/plazmamc/plazma/configurations/WorldConfigurations.java
|
||||||
|
+++ b/src/main/java/org/plazmamc/plazma/configurations/WorldConfigurations.java
|
||||||
|
@@ -32,6 +32,7 @@ public class WorldConfigurations extends ConfigurationPart {
|
||||||
|
public Phantom phantom;
|
||||||
|
public class Phantom extends ConfigurationPart {
|
||||||
|
|
||||||
|
+ public boolean loadChunksToSpawn = !OPTIMIZE;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
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 f7ac60e1aa188ec25a4c5d326cdd4a109a54101c..613f12a7194920690c42ffca2fdf6908700516e5 100644
|
||||||
|
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
||||||
|
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
||||||
|
@@ -1472,6 +1472,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
|
||||||
|
}
|
||||||
|
// Paper end - Prevent moving into unloaded chunks
|
||||||
|
|
||||||
|
+ if (!this.player.getBukkitEntity().hasPermission("plazma.bypass-moved-to-quickly-check") || !(org.plazmamc.plazma.configurations.GlobalConfiguration.get().player.checkSpectatorMovedToQuickly && this.player.isSpectator())) // Plazma - Options to bypass moved to quickly check
|
||||||
|
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;
|
||||||
|
|
||||||
|
diff --git a/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java b/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java
|
||||||
|
index a060257a62da7ed02b342b426e18e5f02ecdbdc9..f7e4d14a7eaa3e35c9b03f3c6a01ae8712ded569 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,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 e5ea9f27a1936ed9e329e74317c91c5df89b9fbd..7e7a4d872983cd2efdc575bc33353f94d73cc641 100644
|
|
||||||
--- a/src/main/java/com/destroystokyo/paper/loottable/PaperLootableInventoryData.java
|
|
||||||
+++ b/src/main/java/com/destroystokyo/paper/loottable/PaperLootableInventoryData.java
|
|
||||||
@@ -13,7 +13,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 9ba8bf1cc91494651a1855d12415f4ac3586cf9d..17cd928af104d74704d61ca26084bd60014af800 100644
|
|
||||||
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
|
|
||||||
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
|
|
||||||
@@ -693,7 +693,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 c6a3b59c65466f9f2b16cefe0059a6e5dd84044c..a3499de4efb45f598b3fae796618531164e0b209 100644
|
|
||||||
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
|
||||||
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
|
||||||
@@ -226,7 +226,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 d1c7ab67cba881d96b7a5e9220130d86d0514304..6018c5332410a5a0db29f35c0b4cb628df07f596 100644
|
|
||||||
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftFirework.java
|
|
||||||
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftFirework.java
|
|
||||||
@@ -15,7 +15,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 a9673a804d597599c35c83f4f245510c83005328..202ac2b0d96b870ce853959da89e82a4949ca585 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;
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+}
|
|
||||||
@@ -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 6afee2a744a3498d4a0eee35f77cde444f73d12c..dbb987d5896e199aeae3bcd86c69bf3327af8ada 100644
|
|
||||||
--- a/src/main/java/net/minecraft/server/level/ServerEntity.java
|
|
||||||
+++ b/src/main/java/net/minecraft/server/level/ServerEntity.java
|
|
||||||
@@ -207,6 +207,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) {
|
|
||||||
@@ -281,6 +282,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 87a85fb1cd9a19541df04a5d1c457d86cf7f68eb..989b6d20818dec0a527a170ad2b19d456ca023d9 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;
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
54
patches/server/0024-Ignore-useless-entity-packets.patch
Normal file
54
patches/server/0024-Ignore-useless-entity-packets.patch
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: AlphaKR93 <dev@alpha93.kr>
|
||||||
|
Date: Wed, 27 Sep 2023 22:35:19 +0900
|
||||||
|
Subject: [PATCH] Ignore useless entity packets
|
||||||
|
|
||||||
|
[REFERENCE]
|
||||||
|
- PurpurMC/Purpur
|
||||||
|
|
||||||
|
diff --git a/src/main/java/net/minecraft/server/level/ServerEntity.java b/src/main/java/net/minecraft/server/level/ServerEntity.java
|
||||||
|
index cf098d4a3111771c13766285c5ec5f1fc1f539a4..433e9a06db191f8a0ff6c23d1ac6122606e67959 100644
|
||||||
|
--- a/src/main/java/net/minecraft/server/level/ServerEntity.java
|
||||||
|
+++ b/src/main/java/net/minecraft/server/level/ServerEntity.java
|
||||||
|
@@ -207,6 +207,8 @@ public class ServerEntity {
|
||||||
|
flag4 = true;
|
||||||
|
flag5 = true;
|
||||||
|
}
|
||||||
|
+
|
||||||
|
+ if (this.level.plazmaConfig().entity.ignoreUselessPackets && isUselessPacket(packet1)) packet1 = null; // Plazma - Ignore useless entity packets
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((this.trackDelta || this.entity.hasImpulse || this.entity instanceof LivingEntity && ((LivingEntity) this.entity).isFallFlying()) && this.tickCount > 0) {
|
||||||
|
@@ -281,6 +283,19 @@ public class ServerEntity {
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
+ // Plazma start - Ignore useless entity packets
|
||||||
|
+ private boolean isUselessPacket(@Nullable Packet<?> packet) {
|
||||||
|
+ if (!(packet instanceof ClientboundMoveEntityPacket p)) return false;
|
||||||
|
+ if (p instanceof ClientboundMoveEntityPacket.Pos)
|
||||||
|
+ return p.getXa() == 0 && p.getYa() == 0 && p.getZa() == 0;
|
||||||
|
+ if (p instanceof ClientboundMoveEntityPacket.Rot)
|
||||||
|
+ return p.getxRot() == 0 && p.getyRot() == 0;
|
||||||
|
+ 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 - Ignore useless entity packets
|
||||||
|
+
|
||||||
|
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/WorldConfigurations.java b/src/main/java/org/plazmamc/plazma/configurations/WorldConfigurations.java
|
||||||
|
index 922d1d250f2e2e5a4177bcf5fe7487ff2b43413b..c8a3e91d0d6510b519e927027f5a534cddf7d0a3 100644
|
||||||
|
--- a/src/main/java/org/plazmamc/plazma/configurations/WorldConfigurations.java
|
||||||
|
+++ b/src/main/java/org/plazmamc/plazma/configurations/WorldConfigurations.java
|
||||||
|
@@ -29,6 +29,8 @@ public class WorldConfigurations extends ConfigurationPart {
|
||||||
|
public Entity entity;
|
||||||
|
public class Entity extends ConfigurationPart {
|
||||||
|
|
||||||
|
+ public boolean ignoreUselessPackets = OPTIMIZE;
|
||||||
|
+
|
||||||
|
public Phantom phantom;
|
||||||
|
public class Phantom extends ConfigurationPart {
|
||||||
|
|
||||||
28
patches/server/0025-Improve-biome-temperture-cache.patch
Normal file
28
patches/server/0025-Improve-biome-temperture-cache.patch
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: AlphaKR93 <dev@alpha93.kr>
|
||||||
|
Date: Sat, 27 Apr 2024 14:14:49 +0900
|
||||||
|
Subject: [PATCH] Improve biome temperture cache
|
||||||
|
|
||||||
|
|
||||||
|
diff --git a/src/main/java/net/minecraft/world/level/biome/Biome.java b/src/main/java/net/minecraft/world/level/biome/Biome.java
|
||||||
|
index 0c317b0147a73a8075e0883f0c132f4db0bdfea7..97c5cc3e2e6721321d9c500e331cab1aee37a0fc 100644
|
||||||
|
--- a/src/main/java/net/minecraft/world/level/biome/Biome.java
|
||||||
|
+++ b/src/main/java/net/minecraft/world/level/biome/Biome.java
|
||||||
|
@@ -64,7 +64,7 @@ public final class Biome {
|
||||||
|
private final MobSpawnSettings mobSettings;
|
||||||
|
private final BiomeSpecialEffects specialEffects;
|
||||||
|
// Pufferfish start - use our cache
|
||||||
|
- private final ThreadLocal<gg.airplane.structs.Long2FloatAgingCache> temperatureCache = ThreadLocal.withInitial(() -> Util.make(() -> {
|
||||||
|
+ private static final ThreadLocal<gg.airplane.structs.Long2FloatAgingCache> temperatureCache = ThreadLocal.withInitial(() -> Util.make(() -> { // Plazma - Improve biome temperature cache
|
||||||
|
/*
|
||||||
|
Long2FloatLinkedOpenHashMap long2FloatLinkedOpenHashMap = new Long2FloatLinkedOpenHashMap(1024, 0.25F) {
|
||||||
|
protected void rehash(int i) {
|
||||||
|
@@ -118,7 +118,7 @@ public final class Biome {
|
||||||
|
public float getTemperature(BlockPos blockPos) {
|
||||||
|
long l = blockPos.asLong();
|
||||||
|
// Pufferfish start
|
||||||
|
- gg.airplane.structs.Long2FloatAgingCache cache = this.temperatureCache.get();
|
||||||
|
+ gg.airplane.structs.Long2FloatAgingCache cache = temperatureCache.get(); // Plazma - Improve biome temperature cache
|
||||||
|
float f = cache.getValue(l);
|
||||||
|
if (!Float.isNaN(f)) {
|
||||||
|
return f;
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: AlphaKR93 <dev@alpha93.kr>
|
|
||||||
Date: Sun, 26 Mar 2023 13:43:01 +0900
|
|
||||||
Subject: [PATCH] No Chat Reports Configuration
|
|
||||||
|
|
||||||
|
|
||||||
diff --git a/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java b/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java
|
|
||||||
index 989b6d20818dec0a527a170ad2b19d456ca023d9..b6348572f4a90acbcf6ec234beac84e8a019ee50 100644
|
|
||||||
--- a/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java
|
|
||||||
+++ b/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java
|
|
||||||
@@ -44,5 +44,12 @@ public class GlobalConfiguration extends ConfigurationPart {
|
|
||||||
public boolean doNotTriggerLootTableRefreshForNonPlayerInteraction = DO_OPTIMIZE;
|
|
||||||
public boolean doNotSendUselessEntityPackets = DO_OPTIMIZE;
|
|
||||||
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ public NoChatReports noChatReports;
|
|
||||||
+ public class NoChatReports extends ConfigurationPart {
|
|
||||||
+
|
|
||||||
+
|
|
||||||
+
|
|
||||||
}
|
|
||||||
}
|
|
||||||
35
patches/server/0026-Configurable-entity-sensor-tick.patch
Normal file
35
patches/server/0026-Configurable-entity-sensor-tick.patch
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
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 41ee792f572b13054084b9ad6c6e4cf67ed10290..0d83baabdfabff925c11d363a78414afebe513d3 100644
|
||||||
|
--- a/src/main/java/net/minecraft/world/entity/Mob.java
|
||||||
|
+++ b/src/main/java/net/minecraft/world/entity/Mob.java
|
||||||
|
@@ -938,10 +938,11 @@ public abstract class Mob extends LivingEntity implements Targeting {
|
||||||
|
}
|
||||||
|
// Paper end - Allow nerfed mobs to jump and float
|
||||||
|
//this.level().getProfiler().push("sensing"); // Purpur
|
||||||
|
- this.sensing.tick();
|
||||||
|
+ //this.sensing.tick(); // Plazma - Moved down
|
||||||
|
//this.level().getProfiler().pop(); // Purpur
|
||||||
|
int i = this.level().getServer().getTickCount() + 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) {
|
||||||
|
//this.level().getProfiler().push("targetSelector"); // Purpur
|
||||||
|
if (this.targetSelector.inactiveTick(this.activatedPriority, false)) // Pufferfish - use this to alternate ticking
|
||||||
|
diff --git a/src/main/java/org/plazmamc/plazma/configurations/WorldConfigurations.java b/src/main/java/org/plazmamc/plazma/configurations/WorldConfigurations.java
|
||||||
|
index c8a3e91d0d6510b519e927027f5a534cddf7d0a3..bc283729cab4df2c596febf1df54241571227564 100644
|
||||||
|
--- a/src/main/java/org/plazmamc/plazma/configurations/WorldConfigurations.java
|
||||||
|
+++ b/src/main/java/org/plazmamc/plazma/configurations/WorldConfigurations.java
|
||||||
|
@@ -30,6 +30,7 @@ public class WorldConfigurations extends ConfigurationPart {
|
||||||
|
public class Entity extends ConfigurationPart {
|
||||||
|
|
||||||
|
public boolean ignoreUselessPackets = OPTIMIZE;
|
||||||
|
+ public int sensorTick = 1;
|
||||||
|
|
||||||
|
public Phantom phantom;
|
||||||
|
public class Phantom extends ConfigurationPart {
|
||||||
@@ -1,132 +0,0 @@
|
|||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: AlphaKR93 <dev@alpha93.kr>
|
|
||||||
Date: Sun, 26 Mar 2023 13:48:48 +0900
|
|
||||||
Subject: [PATCH] Implement No Chat Reports
|
|
||||||
|
|
||||||
|
|
||||||
diff --git a/src/main/java/net/minecraft/network/FriendlyByteBuf.java b/src/main/java/net/minecraft/network/FriendlyByteBuf.java
|
|
||||||
index 1f4b64a5f812376c499c98cb4be62469bd0b7dbe..59d3b33d523dea21e7a3f0747734b20226fd1dae 100644
|
|
||||||
--- a/src/main/java/net/minecraft/network/FriendlyByteBuf.java
|
|
||||||
+++ b/src/main/java/net/minecraft/network/FriendlyByteBuf.java
|
|
||||||
@@ -156,9 +156,14 @@ public class FriendlyByteBuf extends ByteBuf {
|
|
||||||
public <T> void writeJsonWithCodec(Codec<T> codec, T value) {
|
|
||||||
DataResult<JsonElement> dataresult = codec.encodeStart(JsonOps.INSTANCE, value);
|
|
||||||
|
|
||||||
- this.writeUtf(FriendlyByteBuf.GSON.toJson((JsonElement) Util.getOrThrow(dataresult, (s) -> {
|
|
||||||
- return new EncoderException("Failed to encode: " + s + " " + value);
|
|
||||||
- })));
|
|
||||||
+ // Plazma start - NCR
|
|
||||||
+ JsonElement element = Util.getOrThrow(dataresult, (s) -> new EncoderException("Failed to encode: " + s + " " + value));
|
|
||||||
+
|
|
||||||
+ if (codec == net.minecraft.network.protocol.status.ServerStatus.CODEC && org.plazmamc.plazma.configurations.GlobalConfiguration.get().noChatReports.addQueryData())
|
|
||||||
+ element.getAsJsonObject().addProperty("preventsChatReports", true);
|
|
||||||
+
|
|
||||||
+ this.writeUtf(FriendlyByteBuf.GSON.toJson(element));
|
|
||||||
+ // Plazma end
|
|
||||||
}
|
|
||||||
|
|
||||||
public <T> void writeId(IdMap<T> registry, T value) {
|
|
||||||
diff --git a/src/main/java/net/minecraft/network/protocol/game/ServerboundChatCommandPacket.java b/src/main/java/net/minecraft/network/protocol/game/ServerboundChatCommandPacket.java
|
|
||||||
index b8c1f3b9afddc87d56541c8af63cffecfcdd2653..c74c17f058b7a6587e3dcab35878d469e0599240 100644
|
|
||||||
--- a/src/main/java/net/minecraft/network/protocol/game/ServerboundChatCommandPacket.java
|
|
||||||
+++ b/src/main/java/net/minecraft/network/protocol/game/ServerboundChatCommandPacket.java
|
|
||||||
@@ -24,4 +24,10 @@ public record ServerboundChatCommandPacket(String command, Instant timeStamp, lo
|
|
||||||
public void handle(ServerGamePacketListener listener) {
|
|
||||||
listener.handleChatCommand(this);
|
|
||||||
}
|
|
||||||
+
|
|
||||||
+ // Plazma start - NCR
|
|
||||||
+ public ArgumentSignatures argumentSignatures() {
|
|
||||||
+ return org.plazmamc.plazma.configurations.GlobalConfiguration.get().noChatReports.enabled ? ArgumentSignatures.EMPTY : this.argumentSignatures;
|
|
||||||
+ }
|
|
||||||
+ // Plazma end
|
|
||||||
}
|
|
||||||
diff --git a/src/main/java/net/minecraft/network/protocol/game/ServerboundChatPacket.java b/src/main/java/net/minecraft/network/protocol/game/ServerboundChatPacket.java
|
|
||||||
index d1d2fc0c57523c1abf1e8bfec913c78927c3dafc..f93372070b3babc76d43b18df9a0f91a2125e37e 100644
|
|
||||||
--- a/src/main/java/net/minecraft/network/protocol/game/ServerboundChatPacket.java
|
|
||||||
+++ b/src/main/java/net/minecraft/network/protocol/game/ServerboundChatPacket.java
|
|
||||||
@@ -25,4 +25,11 @@ public record ServerboundChatPacket(String message, Instant timeStamp, long salt
|
|
||||||
public void handle(ServerGamePacketListener listener) {
|
|
||||||
listener.handleChat(this);
|
|
||||||
}
|
|
||||||
+
|
|
||||||
+ // Plazma start - NCR
|
|
||||||
+ @Nullable
|
|
||||||
+ public MessageSignature signature() {
|
|
||||||
+ return org.plazmamc.plazma.configurations.GlobalConfiguration.get().noChatReports.enabled ? null : this.signature;
|
|
||||||
+ }
|
|
||||||
+ // Plazma end
|
|
||||||
}
|
|
||||||
diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
|
|
||||||
index efcee39cd7154493de04ca903edbd32b5901b191..a398b71c52817bd68a05613ec037ed6d7ae6fb27 100644
|
|
||||||
--- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
|
|
||||||
+++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
|
|
||||||
@@ -683,7 +683,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean enforceSecureProfile() {
|
|
||||||
- return this.getProperties().enforceSecureProfile && this.getProperties().onlineMode;
|
|
||||||
+ return !org.plazmamc.plazma.configurations.GlobalConfiguration.get().noChatReports.enabled && this.getProperties().enforceSecureProfile && this.getProperties().onlineMode; // Plazma - NCR
|
|
||||||
}
|
|
||||||
|
|
||||||
protected boolean convertOldUsers() {
|
|
||||||
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
|
||||||
index dee076d1e6e30f108a79565546182b4751737baa..c18f953950fd2c00a3880fa20c9904a940191666 100644
|
|
||||||
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
|
||||||
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
|
||||||
@@ -2224,10 +2224,19 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void send(Packet<?> packet) {
|
|
||||||
- this.send(packet, (PacketSendListener) null);
|
|
||||||
+ // Plazma start - NCR
|
|
||||||
+ if (org.plazmamc.plazma.configurations.GlobalConfiguration.get().noChatReports.convertToGameMessage() && packet instanceof ClientboundPlayerChatPacket p)
|
|
||||||
+ packet = new ClientboundSystemChatPacket(null, Component.Serializer.toJson(p.chatType().resolve(this.player.level.registryAccess()).get().decorate(p.unsignedContent() != null ? p.unsignedContent() : Component.literal(p.body().content()))), false);
|
|
||||||
+ this.send(packet, null);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void send(Packet<?> packet, @Nullable PacketSendListener callbacks) {
|
|
||||||
+ if (org.plazmamc.plazma.configurations.GlobalConfiguration.get().noChatReports.convertToGameMessage() && packet instanceof ClientboundPlayerChatPacket p && callbacks != null) {
|
|
||||||
+ this.send(p);
|
|
||||||
+ return;
|
|
||||||
+ }
|
|
||||||
+ // Plazma end
|
|
||||||
+
|
|
||||||
// CraftBukkit start
|
|
||||||
if (packet == null || this.processedDisconnect) { // Spigot
|
|
||||||
return;
|
|
||||||
diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java
|
|
||||||
index 0615c92894f42ccc320a5a6f5e6c5289a2dee5f9..e9728c2b14462e7a8ce196bc59d8829d42177ef0 100644
|
|
||||||
--- a/src/main/java/net/minecraft/server/players/PlayerList.java
|
|
||||||
+++ b/src/main/java/net/minecraft/server/players/PlayerList.java
|
|
||||||
@@ -1457,7 +1457,7 @@ public abstract class PlayerList {
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean verifyChatTrusted(PlayerChatMessage message) { // Paper - private -> public
|
|
||||||
- return message.hasSignature() && !message.hasExpiredServer(Instant.now());
|
|
||||||
+ return org.plazmamc.plazma.configurations.GlobalConfiguration.get().noChatReports.enabled || message.hasSignature() && !message.hasExpiredServer(Instant.now()); // Plazma - NCR
|
|
||||||
}
|
|
||||||
|
|
||||||
// CraftBukkit start
|
|
||||||
diff --git a/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java b/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java
|
|
||||||
index b6348572f4a90acbcf6ec234beac84e8a019ee50..7a585540c72c1c18ddcb45ec1caa350f1f9ce544 100644
|
|
||||||
--- a/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java
|
|
||||||
+++ b/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java
|
|
||||||
@@ -49,7 +49,17 @@ public class GlobalConfiguration extends ConfigurationPart {
|
|
||||||
public NoChatReports noChatReports;
|
|
||||||
public class NoChatReports extends ConfigurationPart {
|
|
||||||
|
|
||||||
+ public boolean enabled = false;
|
|
||||||
+ boolean addQueryData = true;
|
|
||||||
+ boolean convertToGameMessage = true;
|
|
||||||
|
|
||||||
+ public boolean addQueryData() {
|
|
||||||
+ return enabled && addQueryData;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ public boolean convertToGameMessage() {
|
|
||||||
+ return enabled && convertToGameMessage;
|
|
||||||
+ }
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
57
patches/server/0027-Configurable-cave-lava-sea-level.patch
Normal file
57
patches/server/0027-Configurable-cave-lava-sea-level.patch
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
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 98c7f695093acbcf9382a5f07a7a89e373709763..a85b1ebb4236f131b9be0104c4aa56f22e661441 100644
|
||||||
|
--- a/src/main/java/net/minecraft/world/level/levelgen/NoiseBasedChunkGenerator.java
|
||||||
|
+++ b/src/main/java/net/minecraft/world/level/levelgen/NoiseBasedChunkGenerator.java
|
||||||
|
@@ -72,6 +72,15 @@ public final class NoiseBasedChunkGenerator extends ChunkGenerator {
|
||||||
|
}
|
||||||
|
|
||||||
|
private static Aquifer.FluidPicker createFluidPicker(NoiseGeneratorSettings settings) {
|
||||||
|
+ // Plazma start - Configurable cave lava sea level
|
||||||
|
+ if (true) {
|
||||||
|
+ org.plazmamc.plazma.configurations.GlobalConfiguration config = org.plazmamc.plazma.configurations.GlobalConfiguration.get();
|
||||||
|
+ return (x, y, z) -> new Aquifer.FluidStatus(
|
||||||
|
+ config.worldgen.caveLavaSeaLevel.useCustomSeaLevel ? config.worldgen.caveLavaSeaLevel.customSeaLevel : settings.seaLevel(),
|
||||||
|
+ config.worldgen.caveLavaSeaLevel.customSeaLevel(settings)
|
||||||
|
+ );
|
||||||
|
+ }
|
||||||
|
+ // Plazma end - Configurable cave lava sea level
|
||||||
|
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());
|
||||||
|
diff --git a/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java b/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java
|
||||||
|
index f7e4d14a7eaa3e35c9b03f3c6a01ae8712ded569..4f3ed01e12ccb8a6f1a5c4f605451bb36370a236 100644
|
||||||
|
--- a/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java
|
||||||
|
+++ b/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java
|
||||||
|
@@ -35,6 +35,25 @@ public class GlobalConfiguration extends ConfigurationPart {
|
||||||
|
public WorldGeneration worldgen;
|
||||||
|
public class WorldGeneration extends ConfigurationPart {
|
||||||
|
|
||||||
|
+ public CaveLavaSeaLevel caveLavaSeaLevel;
|
||||||
|
+ public class CaveLavaSeaLevel extends ConfigurationPart {
|
||||||
|
+
|
||||||
|
+ public boolean useCustomSeaLevel = false;
|
||||||
|
+ public int customSeaLevel = -54;
|
||||||
|
+ String customSeaBlock = "default";
|
||||||
|
+
|
||||||
|
+ public net.minecraft.world.level.block.state.BlockState customSeaLevel(net.minecraft.world.level.levelgen.NoiseGeneratorSettings settings) {
|
||||||
|
+ if (this.customSeaBlock.equalsIgnoreCase("default")) return settings.defaultFluid();
|
||||||
|
+ return net.minecraft.core.registries.BuiltInRegistries.BLOCK
|
||||||
|
+ .getOptional(new net.minecraft.resources.ResourceLocation(this.customSeaBlock))
|
||||||
|
+ .orElseGet(() -> {
|
||||||
|
+ PlazmaConfigurations.LOGGER.warn("Invalid custom sea level block: {}, defaulting to lava", this.customSeaBlock);
|
||||||
|
+ return net.minecraft.world.level.block.Blocks.LAVA;
|
||||||
|
+ })
|
||||||
|
+ .defaultBlockState();
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ }
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: IPECTER <ipectert@gmail.com>
|
|
||||||
Date: Sun, 26 Mar 2023 16:20:13 +0900
|
|
||||||
Subject: [PATCH] FixMySpawnR Configuration
|
|
||||||
|
|
||||||
|
|
||||||
diff --git a/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java b/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java
|
|
||||||
index 7a585540c72c1c18ddcb45ec1caa350f1f9ce544..088670ec016514b4a7fae402d7119a6aaa491c5d 100644
|
|
||||||
--- a/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java
|
|
||||||
+++ b/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java
|
|
||||||
@@ -62,4 +62,12 @@ public class GlobalConfiguration extends ConfigurationPart {
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
+
|
|
||||||
+ public FixMySpawnR fixMySpawnR;
|
|
||||||
+ public class FixMySpawnR extends ConfigurationPart {
|
|
||||||
+
|
|
||||||
+ public boolean enabled = DO_OPTIMIZE;
|
|
||||||
+ public int timerTimeOut = 0;
|
|
||||||
+
|
|
||||||
+ }
|
|
||||||
}
|
|
||||||
@@ -1,67 +0,0 @@
|
|||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: IPECTER <ipectert@gmail.com>
|
|
||||||
Date: Sun, 26 Mar 2023 13:17:24 +0900
|
|
||||||
Subject: [PATCH] Implement FixMySpawnR
|
|
||||||
|
|
||||||
Original: AbsolemJackdaw/FixMySpawnR
|
|
||||||
Copyright (C) 2023 AbsolemJackdaw
|
|
||||||
|
|
||||||
diff --git a/src/main/java/net/minecraft/world/level/BaseSpawner.java b/src/main/java/net/minecraft/world/level/BaseSpawner.java
|
|
||||||
index feb65fc9ee04141fe6f77400660442ed207547a1..9c759e71ef1d119d7807886f9e56b7230a334475 100644
|
|
||||||
--- a/src/main/java/net/minecraft/world/level/BaseSpawner.java
|
|
||||||
+++ b/src/main/java/net/minecraft/world/level/BaseSpawner.java
|
|
||||||
@@ -46,6 +46,8 @@ public abstract class BaseSpawner {
|
|
||||||
public int requiredPlayerRange = 16;
|
|
||||||
public int spawnRange = 4;
|
|
||||||
private int tickDelay = 0; // Paper
|
|
||||||
+ private int blockExistsTick = 0; // Plazma
|
|
||||||
+ private boolean blockLockedByTime = false; // Plazma
|
|
||||||
|
|
||||||
public BaseSpawner() {}
|
|
||||||
|
|
||||||
@@ -81,6 +83,18 @@ public abstract class BaseSpawner {
|
|
||||||
}
|
|
||||||
|
|
||||||
public void serverTick(ServerLevel world, BlockPos pos) {
|
|
||||||
+ // Plazma start - FixMySpawnR
|
|
||||||
+ if (org.plazmamc.plazma.configurations.GlobalConfiguration.get().fixMySpawnR.enabled) {
|
|
||||||
+ if (!blockLockedByTime) {
|
|
||||||
+ if (blockExistsTick > org.plazmamc.plazma.configurations.GlobalConfiguration.get().fixMySpawnR.timerTimeOut) {
|
|
||||||
+ blockLockedByTime = true;
|
|
||||||
+ } else {
|
|
||||||
+ blockExistsTick++;
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ if (blockLockedByTime && world.getBestNeighborSignal(pos) > 0) return;
|
|
||||||
+ // Plazma end
|
|
||||||
if (spawnCount <= 0 || maxNearbyEntities <= 0) return; // Paper - Ignore impossible spawn tick
|
|
||||||
// Paper start - Configurable mob spawner tick rate
|
|
||||||
if (spawnDelay > 0 && --tickDelay > 0) return;
|
|
||||||
@@ -292,6 +306,13 @@ public abstract class BaseSpawner {
|
|
||||||
this.spawnRange = nbt.getShort("SpawnRange");
|
|
||||||
}
|
|
||||||
|
|
||||||
+ // Plazma start - FixMySpawnR
|
|
||||||
+ if (org.plazmamc.plazma.configurations.GlobalConfiguration.get().fixMySpawnR.enabled && nbt.contains("SpawnRange", 99)) {
|
|
||||||
+ this.blockExistsTick = nbt.getInt("fixmyspawnrTicks");
|
|
||||||
+ this.blockLockedByTime = nbt.getBoolean("fixMySpawnerLocked");
|
|
||||||
+ }
|
|
||||||
+ // Plazma end
|
|
||||||
+
|
|
||||||
this.displayEntity = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -321,6 +342,12 @@ public abstract class BaseSpawner {
|
|
||||||
}
|
|
||||||
|
|
||||||
nbt.put("SpawnPotentials", (Tag) SpawnData.LIST_CODEC.encodeStart(NbtOps.INSTANCE, this.spawnPotentials).result().orElseThrow());
|
|
||||||
+ // Plazma start - FixMySpawnR
|
|
||||||
+ if (org.plazmamc.plazma.configurations.GlobalConfiguration.get().fixMySpawnR.enabled) {
|
|
||||||
+ nbt.putInt("fixmyspawnrTicks", blockExistsTick);
|
|
||||||
+ nbt.putBoolean("fixMySpawnerLocked", blockLockedByTime);
|
|
||||||
+ }
|
|
||||||
+ // Plazma end
|
|
||||||
return nbt;
|
|
||||||
}
|
|
||||||
|
|
||||||
76
patches/server/0028-Variable-entity-wakeup-duration.patch
Normal file
76
patches/server/0028-Variable-entity-wakeup-duration.patch
Normal file
@@ -0,0 +1,76 @@
|
|||||||
|
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 bc283729cab4df2c596febf1df54241571227564..1e7c23c8851ba1d0f37d2b17fd334220e060888e 100644
|
||||||
|
--- a/src/main/java/org/plazmamc/plazma/configurations/WorldConfigurations.java
|
||||||
|
+++ b/src/main/java/org/plazmamc/plazma/configurations/WorldConfigurations.java
|
||||||
|
@@ -39,6 +39,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 Structure structure;
|
||||||
|
diff --git a/src/main/java/org/spigotmc/ActivationRange.java b/src/main/java/org/spigotmc/ActivationRange.java
|
||||||
|
index 56e52b16b419c882440a15947f037ae1a902bc70..583647f6c9ca0fb092f30c97693bd548f692dfd3 100644
|
||||||
|
--- a/src/main/java/org/spigotmc/ActivationRange.java
|
||||||
|
+++ b/src/main/java/org/spigotmc/ActivationRange.java
|
||||||
|
@@ -68,29 +68,36 @@ public class ActivationRange
|
||||||
|
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;
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user