Compare commits

...

31 Commits

Author SHA1 Message Date
AlphaKR93
a020337531 rebuild patches 2025-02-24 16:56:51 +09:00
AlphaKR93
bcf356ff4a [ci skip] Update Gradle Wrapper version to 8.12.1 2025-02-24 16:39:14 +09:00
AlphaKR93
eead936c54 /gc, /heal 2025-02-24 02:50:43 +09:00
AlphaKR93
55fbffae38 Command related patches 2025-02-24 01:53:56 +09:00
AlphaKR93
637b0ef8cb PlayerVehicleMovedIncorrectlyEvent 2025-02-24 01:08:21 +09:00
AlphaKR93
4904f64392 Fix build 2025-02-23 23:42:01 +09:00
AlphaKR93
7456362b05 More optimizations 2025-02-23 23:37:08 +09:00
AlphaKR93
d9625f4213 Apply more optimizations 2025-02-23 23:22:13 +09:00
AlphaKR93
7fac157785 Reapply more patches 2025-02-23 22:54:00 +09:00
AlphaKR93
14403ebab9 Akarin ports 2025-02-23 22:35:05 +09:00
AlphaKR93
fb72bc56c3 [ci skip] Cleanup unapplied patches 2025-02-23 20:24:18 +09:00
AlphaKR93
4e0b4a2732 Remove Timings 2025-02-23 19:54:35 +09:00
AlphaKR93
96cb741c0e Remove Mojang Profiler 2025-02-23 18:58:11 +09:00
AlphaKR93
8b0a4c75c5 Remove unnecessary client features 2025-02-23 17:48:53 +09:00
AlphaKR93
e286d62894 comment some lines 2025-02-19 21:24:33 +09:00
AlphaKR93
883f334864 Fix NPE on startup 2025-02-19 21:07:18 +09:00
AlphaKR93
063137dce4 Plazma Configurations 2025-02-19 20:40:59 +09:00
AlphaKR93
6958022ef9 Rebrand 2025-02-19 12:56:37 +09:00
AlphaKR93
7e1f20905c Hardfork - Initial Commit 2025-02-19 10:57:48 +09:00
IPECTER 이팩터
b9b81666d7 Fix SparklyPaper - Optimize farm check 2025-02-06 18:07:43 +09:00
IPECTER 이팩터
fc74a019dc Fix SparklyPaper - Optimize farm check 2025-02-06 18:03:46 +09:00
AlphaKR93
5788942629 Some fixes 2025-01-22 13:54:35 +09:00
AlphaKR93
0c58a0b04a Fix build 2024-12-26 01:22:49 +09:00
AlphaKR93
379451fec5 fix build 2024-12-25 23:51:18 +09:00
AlphaKR93
fae89fb86d Add options for help.yml and version_history.json 2024-12-25 23:47:55 +09:00
AlphaKR93
b1368732a3 Fix #105, add /heal command, etc. 2024-12-25 19:12:48 +09:00
AlphaKR93
ebe98dd7f4 Add some features 2024-12-25 15:08:30 +09:00
Alpha
6d6a60fcde "sanpshots"
Signed-off-by: Alpha <dev@alpha93.kr>
2024-12-15 16:40:54 +09:00
Alpha
02ffa930f1 publish api (again)
Signed-off-by: Alpha <dev@alpha93.kr>
2024-12-15 16:07:30 +09:00
Alpha
eb4036a64d publish api
Signed-off-by: Alpha <dev@alpha93.kr>
2024-12-15 15:54:51 +09:00
AlphaKR93
1764f1095e 1.21.4 2024-12-15 15:04:13 +09:00
486 changed files with 33575 additions and 55073 deletions

245
.gitignore vendored
View File

@@ -1,64 +1,211 @@
# JVM crash related
core.*
# Generated from https://gitignore.io/
### Paperweight ###
run/
paper-api/
paper-server/
purpur-api/
purpur-server/
plazma-api/build.gradle.kts
plazma-server/build.gradle.kts
plazma-server/src/minecraft/
### Git ###
# Created by git when using merge tools for conflicts
*.orig
*.BACKUP.*
*.BASE.*
*.LOCAL.*
*.REMOTE.*
*_BACKUP_*.txt
*_BASE_*.txt
*_LOCAL_*.txt
*_REMOTE_*.txt
### Java ###
*.class
*.log
*.jar
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*
replay_pid*
# Intellij
.idea/
*.iml
*.ipr
*.iws
out/
# Kotlin DSL
.kotlin/
# Eclipse
.classpath
.project
.settings/
# netbeans
nbproject/
nbactions.xml
# vscode
.vscode/
# Gradle
!gradle-wrapper.jar
### Gradle ###
.gradle/
build/
*/build/
run/
javadoc/
# we use maven!
build.xml
# Avoid ignore Gradle wrappper properties
!gradle-wrapper.jar
!gradle-wrapper.properties
# Maven
log/
target/
dependency-reduced-pom.xml
# Cache of project
.gradletasknamecache
# various other potential build files
# Java heap dump
*.hprof
### Eclipse ###
*.tmp
*.bak
*.swp
*~.nib
local.properties
bin/
tmp/
.project/
.metadata/
.settings/
.loadpath/
.recommenders/
# External tool builders
.externalToolBuilders/
# Locally stored "Eclipse launch configurations"
*.launch
# JDT-specific (Eclipse Java Development Tools)
.classpath
# Java annotation processor (APT)
.factorypath
# Annotation Processing
.apt_generated/
.apt_generated_test/
### JetBrains ###
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
# Ignore everything but code style settings and run configurations
.idea/
!.idea/codeStyles
!.idea/runConfigurations
# IntelliJ
out/
# Fleet
.fleet/
### NetBeans ###
**/nbproject/private/
**/nbproject/Makefile-*.mk
**/nbproject/Package-*.bash
nbbuild/
dist/
manifest.mf
nbdist/
.nb-gradle/
# Mac
.DS_Store/
.DS_Store
### Vim ###
# Swap
[._]*.s[a-v][a-z]
[._]*.sw[a-p]
[._]s[a-rt-v][a-z]
[._]ss[a-gi-z]
[._]sw[a-p]
# vim
.*.sw[a-p]
# Session
Session.vim
Sessionx.vim
# Linux temp files
# Temporary
.netrwhist
# Auto-generated tag files
tags
# Persistent undo
[._]*.un~
### VisualStudioCode ###
.vscode/*
!.vscode/settings.json
!.vscode/tasks.json
!.vscode/launch.json
!.vscode/extensions.json
!.vscode/*.code-snippets
# Local History for Visual Studio Code
.history/
# Ignore all local history of files
.history
.ionide
### Linux ###
*~
# Paperweight
build-data/
*-API
*-MojangAPI
*-Server
paper-api-generator
compare.txt
*.patch
!patches/**/*
upstream
# temporary files which can be created if a process still has a handle open of a deleted file
.fuse_hidden*
# KDE directory preferences
.directory
# Linux trash folder which might appear on any partition or disk
.Trash-*
# .nfs files are created when an open file is removed but is still being accessed
.nfs*
### macOS ###
# General
.DS_Store
.AppleDouble
.LSOverride
# Icon must end with two \r
Icon
# Thumbnails
._*
# Files that might appear in the root of a volume
.DocumentRevisions-V100
.fseventsd
.Spotlight-V100
.TemporaryItems
.Trashes
.VolumeIcon.icns
.com.apple.timemachine.donotpresent
# Directories potentially created on remote AFP share
.AppleDB
.AppleDesktop
Network Trash Folder
Temporary Items
.apdisk
# iCloud generated files
*.icloud
### Windows ###
# Windows thumbnail cache files
Thumbs.db
Thumbs.db:encryptable
ehthumbs.db
ehthumbs_vista.db
# Dump file
*.stackdump
# Folder config file
[Dd]esktop.ini
# Recycle Bin used on file shares
$RECYCLE.BIN/
# Windows Installer files
*.cab
*.msi
*.msix
*.msm
*.msp
# Windows shortcuts
*.lnk

View File

@@ -1,23 +0,0 @@
The MIT License (MIT)
=====================
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.

View File

@@ -1,24 +0,0 @@
<div align="center">
[![image](https://raw.githubusercontent.com/PlazmaMC/Plazma/main/src/resources/title-900.png)](https://github.com/PlazmaMC/Plazma)
### A Server Platform for Minecraft: Java Edition based on [Paper](https://github.com/PaperMC/Paper)
[![Discord](https://api.plazmamc.org/internal/cdn/discord)](https://plazmamc.org/discord)
[![License](https://api.plazmamc.org/internal/cdn/license)](LICENSE.md)
[![Version](https://badge.plazmamc.org/1/MC/1.21.3/Webpack)](https://plazmamc.org/downloads)
[![Downloads](https://api.plazmamc.org/internal/cdn/dlcountmini)](https://plazmamc.org/downloads)
[![Stargazers](https://api.plazmamc.org/internal/cdn/starsmini)](https://github.com/PlazmaMC/Plazma/stargazers)
[![Forks](https://api.plazmamc.org/internal/cdn/forks)](https://github.com/PlazmaMC/Plazma/forks)
[![Watchers](https://api.plazmamc.org/internal/cdn/watches)](https://github.com/PlazmaMC/Plazma/watchers)
### [⬇️ Downloads](https://plazmamc.org/downloads)
</div>
[main]: https://github.com/PlazmaMC/PlazmaBukkit/blob/main/README.md
> [!IMPORTANT]
This is the branch for Plazma 1.21.2/3. If you want to know more about Plazma, please check the **[main branch][main]**.<br>
이곳은 플라즈마의 1.21.2/3용 분기입니다. 플라즈마에 대해 자세히 알고 싶다면 **[main 분기][main]** 를 확인해주세요.

View File

@@ -1,14 +0,0 @@
# 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
#

View File

@@ -2,165 +2,84 @@ import org.gradle.api.tasks.testing.logging.TestExceptionFormat
import org.gradle.api.tasks.testing.logging.TestLogEvent
plugins {
java
`kotlin-dsl`
`maven-publish`
`always-up-to-date`
alias(libs.plugins.shadow) apply false
alias(libs.plugins.paperweight)
id("io.papermc.paperweight.patcher") version "2.0.0-beta.14"
}
val jdkVersion = property("jdkVersion").toString().toInt()
kotlin.jvmToolchain(jdkVersion)
repositories {
mavenCentral()
maven("https://repo.papermc.io/repository/maven-public/") { name = "papermc"
content { onlyForConfigurations(configurations.paperclip.name) }
}
maven("https://repo.codemc.io/repository/maven-public/") { name = "codemc" }
maven("https://jitpack.io") { name = "jitpack" }
}
dependencies {
remapper(libs.remapper)
paperclip(libs.paperclip)
decompiler(libs.decompiler)
}
val brandName: String by project
val providerRepo: String by project
paperweight {
serverProject = project(":${brandName.lowercase()}-server")
upstreams.register("purpur") {
repo = github("PurpurMC", "Purpur")
ref = providers.gradleProperty("purpurRef")
remapRepo = "https://repo.papermc.io/repository/maven-public/"
decompileRepo = "https://repo.papermc.io/repository/maven-public/"
useStandardUpstream("paper") {
url = github("PaperMC", "Paper-archive")
ref = providers.gradleProperty("paperCommit")
withStandardPatcher {
baseName("Paper")
apiPatchDir.set(projectDir.resolve("patches/api"))
apiOutputDir.set(projectDir.resolve("$brandName-API"))
serverPatchDir.set(projectDir.resolve("patches/server"))
serverOutputDir.set(projectDir.resolve("$brandName-Server"))
patchFile {
path = "purpur-server/build.gradle.kts"
outputFile = file("plazma-server/build.gradle.kts")
patchFile = file("plazma-server/build.gradle.kts.patch")
}
patchTasks.register("generatedApi") {
isBareDirectory = true
upstreamDirPath = "paper-api-generator/generated"
patchDir = projectDir.resolve("patches/generated-api")
outputDir = projectDir.resolve("paper-api-generator/generated")
patchFile {
path = "purpur-api/build.gradle.kts"
outputFile = file("plazma-api/build.gradle.kts")
patchFile = file("plazma-api/build.gradle.kts.patch")
}
}
}
tasks {
applyPatches {
dependsOn("applyGeneratedApiPatches")
}
rebuildPatches {
dependsOn("rebuildGeneratedApiPatches")
}
generateDevelopmentBundle {
apiCoordinates.set("${project.group}:${brandName.lowercase()}-api")
libraryRepositories.addAll(
"https://repo1.maven.org/maven2/",
"https://papermc.io/repo/repository/maven-public/",
"https://repo.codemc.io/repository/maven-public/",
"https://jitpack.io",
)
}
}
publishing.publications.create<MavenPublication>("devBundle") {
artifact(tasks.generateDevelopmentBundle) { artifactId = "dev-bundle" }
}
val mavenUsername: String? by project
val mavenPassword: String? by project
allprojects {
apply(plugin = "java")
apply(plugin = "maven-publish")
java.toolchain.languageVersion.set(JavaLanguageVersion.of(jdkVersion))
publishing.repositories.maven("https://maven.pkg.github.com/$providerRepo") {
name = "github"
credentials {
username = mavenUsername ?: System.getenv("GRADLE_PROPERTY_MAVEN_USERNAME") ?: System.getenv("MAVEN_USERNAME")
password = mavenPassword ?: System.getenv("GRADLE_PROPERTY_MAVEN_PASSWORD") ?: System.getenv("MAVEN_PASSWORD")
patchRepo("paperApi") {
upstreamPath = "paper-api"
patchesDir = file("plazma-api/paper-patches")
outputDir = file("paper-api")
}
}
publishing.repositories.maven("https://repo.codemc.io/repository/PlazmaMC/") {
name = "codemc"
credentials {
username = mavenUsername ?: System.getenv("GRADLE_PROPERTY_MAVEN_USERNAME") ?: System.getenv("MAVEN_USERNAME")
password = mavenPassword ?: System.getenv("GRADLE_PROPERTY_MAVEN_PASSWORD") ?: System.getenv("MAVEN_PASSWORD")
patchDir("purpurApi") {
upstreamPath = "purpur-api"
excludes = listOf("build.gradle.kts", "build.gradle.kts.patch", "paper-patches")
patchesDir = file("plazma-api/purpur-patches")
outputDir = file("purpur-api")
}
}
}
subprojects {
apply(plugin = "java-library")
apply(plugin = "maven-publish")
extensions.configure<JavaPluginExtension> {
toolchain {
languageVersion = JavaLanguageVersion.of(21)
}
}
repositories {
mavenCentral()
maven("https://repo.papermc.io/repository/maven-public/") { name = "papermc" }
maven("https://repo.codemc.io/repository/maven-public/") { name = "codeme" }
maven("https://jitpack.io") { name = "jitpack" }
maven("https://repo.papermc.io/repository/maven-public/")
}
tasks {
withType<JavaCompile>().configureEach {
options.encoding = Charsets.UTF_8.name()
options.release = jdkVersion
tasks.withType<AbstractArchiveTask>().configureEach {
isPreserveFileTimestamps = false
isReproducibleFileOrder = true
}
tasks.withType<JavaCompile> {
options.encoding = Charsets.UTF_8.name()
options.release = 21
options.isFork = true
}
tasks.withType<Javadoc> {
options.encoding = Charsets.UTF_8.name()
}
tasks.withType<ProcessResources> {
filteringCharset = Charsets.UTF_8.name()
}
tasks.withType<Test> {
testLogging {
showStackTraces = true
exceptionFormat = TestExceptionFormat.FULL
events(TestLogEvent.STANDARD_OUT)
}
}
withType<Javadoc> {
options.encoding = Charsets.UTF_8.name()
}
withType<ProcessResources> {
filteringCharset = Charsets.UTF_8.name()
}
withType<Test> {
testLogging {
showStackTraces = true
exceptionFormat = TestExceptionFormat.FULL
events(TestLogEvent.STANDARD_OUT)
extensions.configure<PublishingExtension> {
repositories {
/*
maven("https://repo.papermc.io/repository/maven-snapshots/") {
name = "paperSnapshots"
credentials(PasswordCredentials::class)
}
*/
}
}
}
val paperRepoVal = property("paperRepo").toString()
val paperBranch = property("paperBranch").toString()
val purpurRepoVal = property("purpurRepo").toString()
val purpurBranch = property("purpurBranch").toString()
val pufferfishRepoVal = property("pufferfishRepo").toString()
val pufferfishBranch = property("pufferfishBranch").toString()
val isUsePufferfish = property("usePufferfish").toString().toBoolean()
alwaysUpToDate {
paperRepo.set(paperRepoVal)
paperRef.set(paperBranch)
paperCommitName.set("paperCommit")
purpurRepo.set(purpurRepoVal)
purpurRef.set(purpurBranch)
purpurCommitName.set("purpurCommit")
pufferfishRepo.set(pufferfishRepoVal)
pufferfishRef.set(pufferfishBranch)
usePufferfish.set(isUsePufferfish)
}

View File

@@ -1,31 +0,0 @@
plugins {
java
`kotlin-dsl`
id("com.gradleup.shadow") version "8.3.5"
}
kotlin.jvmToolchain(21)
repositories {
mavenCentral()
maven("https://papermc.io/repo/repository/maven-public/")
}
dependencies {
shadow("io.papermc.paperweight:paperweight-patcher:1.6.2-SNAPSHOT")
}
tasks {
jar {
finalizedBy(shadowJar)
}
shadowJar {
archiveFileName.set("buildSrc.jar")
configurations = listOf(project.configurations["shadow"])
exclude("META-INF/gradle-plugins/io.papermc.paperweight.patcher.properties")
relocate("io.papermc.paperweight", "org.plazmamc.alwaysuptodate.internal.paperweight")
minimize()
}
}

View File

@@ -1,79 +0,0 @@
package org.plazmamc.alwaysuptodate
import io.papermc.paperweight.util.Git
import org.gradle.api.Plugin
import org.gradle.api.Project
import org.gradle.api.provider.Property
import org.gradle.api.tasks.TaskProvider
import org.plazmamc.alwaysuptodate.tasks.*
import org.plazmamc.alwaysuptodate.utils.CheckGitTask
import org.plazmamc.alwaysuptodate.utils.configureTask
import org.plazmamc.alwaysuptodate.utils.flatten
import org.plazmamc.alwaysuptodate.utils.registerTask
class AlwaysUpToDate : Plugin<Project> {
@Suppress("UNUSED_VARIABLE")
override fun apply(target: Project): Unit = with(target) {
Git.checkForGit()
val extension = extensions.create("alwaysUpToDate", AlwaysUpToDateExtension::class.java)
val git = configureTask<CheckGitTask>("checkGitStatus", "Verify that Git is available")
fun generateTasks(
upstream: String,
provider: AlwaysUpToDateExtension.() -> Pair<Pair<Property<String>, Property<String>>, Property<String>>
): Triple<TaskProvider<CheckUpstreamCommit>, TaskProvider<CreateCompareComment>, TaskProvider<CreateCompareComment>> {
val i = registerTask<CheckUpstreamCommit>("check$upstream", "Check if the $upstream commit is up to date") {
dependsOn(git)
val (repo, ref, commitProperty) = extension.provider().flatten()
this.repo.set(repo)
this.ref.set(ref)
this.commitPropertyName.set(commitProperty)
}
val j = registerTask<CreateCompareComment>("compare$upstream", "Create a comment comparing the $upstream commit") {
dependsOn(git)
val (repo, ref, commitProperty) = extension.provider().flatten()
this.repo.set(repo)
this.ref.set(ref)
this.commitPropertyName.set(commitProperty)
this.clear.set(false)
}
val k = registerTask<CreateCompareComment>(
"cleanCompare$upstream",
"Create a comment comparing the $upstream commit"
) {
dependsOn(git)
val (repo, ref, commitProperty) = extension.provider().flatten()
this.repo.set(repo)
this.ref.set(ref)
this.commitPropertyName.set(commitProperty)
this.clear.set(true)
}
return (i to j to k).flatten()
}
val (checkPaper, comparePaper, cleanComparePaper) = generateTasks("Paper") { paperRepo to paperRef to paperCommitName }
val (checkPurpur, comparePurpur, cleanComparePurpur) = generateTasks("Purpur") { purpurRepo to purpurRef to purpurCommitName }
registerTask<SimpleUpstreamUpdateTask>("updateUpstream", "Update the upstream commit") {
dependsOn(git)
repo.convention(extension.paperRepo)
ref.convention(extension.paperRef)
workDir.set(layout.projectDirectory)
regex.convention("paperCommit = ")
}
registerTask<PurpurUpdateTask>("updateImplementation", "Update the implementation") {
dependsOn(git)
workDir.set(layout.projectDirectory)
}
}
}

View File

@@ -1,6 +0,0 @@
package org.plazmamc.alwaysuptodate
class AlwaysUpToDateException : Exception {
constructor(message: String) : super(message)
constructor(message: String, cause: Throwable?) : super(message, cause)
}

View File

@@ -1,20 +0,0 @@
package org.plazmamc.alwaysuptodate
import org.gradle.api.provider.Property
interface AlwaysUpToDateExtension {
val paperRepo: Property<String>
val paperRef: Property<String>
val purpurRepo: Property<String>
val purpurRef: Property<String>
val pufferfishRepo: Property<String>
val pufferfishRef: Property<String>
val usePufferfish: Property<Boolean>
val paperCommitName: Property<String>
val purpurCommitName: Property<String>
}

View File

@@ -1,40 +0,0 @@
package org.plazmamc.alwaysuptodate.tasks
import org.gradle.api.Project
import org.gradle.api.provider.Property
import org.gradle.api.tasks.Input
import org.plazmamc.alwaysuptodate.AlwaysUpToDateException
import org.plazmamc.alwaysuptodate.AlwaysUpToDateExtension
import org.plazmamc.alwaysuptodate.utils.extension
import org.plazmamc.alwaysuptodate.utils.flatten
import org.plazmamc.alwaysuptodate.utils.git
import org.plazmamc.alwaysuptodate.utils.property
abstract class CheckUpstreamCommit : Task() {
@get:Input
abstract val repo: Property<String>
@get:Input
abstract val ref: Property<String>
@get:Input
abstract val commitPropertyName: Property<String>
override fun init(): Unit = with(project) {
outputs.upToDateWhen { checkCommitFor { repo to ref to commitPropertyName } }
doLast {
println(checkCommitFor { repo to ref to commitPropertyName })
}
}
}
private fun Project.getLatest(repository: String, branch: String) =
git("ls-remote", repository).readText()?.lines()
?.first("[a-z0-9]{40}\trefs/heads/$branch".toRegex()::matches)?.split("\t")?.first()
?: throw AlwaysUpToDateException("Failed to get latest commit of $repository")
fun Project.checkCommitFor(block: AlwaysUpToDateExtension.() -> Pair<Pair<Property<String>, Property<String>>, Property<String>>): Boolean =
extension.block().flatten().let { getLatest(extension { it.first }, extension { it.second }) == property { it.third } }

View File

@@ -1,48 +0,0 @@
package org.plazmamc.alwaysuptodate.tasks
import io.papermc.paperweight.util.fromJson
import io.papermc.paperweight.util.gson
import org.gradle.api.provider.Property
import org.gradle.api.tasks.Input
import org.gradle.api.tasks.TaskAction
import org.plazmamc.alwaysuptodate.utils.property
import paper.libs.com.google.gson.JsonObject
import java.net.URI
abstract class CreateCompareComment : Task() {
@get:Input
abstract val clear: Property<Boolean>
@get:Input
abstract val repo: Property<String>
@get:Input
abstract val ref: Property<String>
@get:Input
abstract val commitPropertyName: Property<String>
@TaskAction
fun create() = with(project) {
val builder = StringBuilder()
val rawRepo = URI.create(repo.get()).path.substring(1)
if (clear.get() || !file("compare.txt").exists())
builder.append("\n\nUpstream has released updates that appear to apply and compile correctly.")
else
builder.append(file("compare.txt").readText())
builder.append("\n\n[${rawRepo.split("/").last()} Changes]\n")
gson.fromJson<JsonObject>(
URI.create("https://api.github.com/repos/$rawRepo/compare/${property { commitPropertyName }}...${ref.get()}").toURL().readText()
)["commits"].asJsonArray.forEach { obj ->
obj.asJsonObject.let {
builder.append("$rawRepo@${it["sha"].asString.subSequence(0, 7)}: ${it["commit"].asJsonObject["message"].asString.split("\n")[0]}\n")
}
}
file("compare.txt").writeText(builder.toString())
}
}

View File

@@ -1,38 +0,0 @@
package org.plazmamc.alwaysuptodate.tasks
import io.papermc.paperweight.util.Git
import io.papermc.paperweight.util.path
import org.gradle.api.file.DirectoryProperty
import org.gradle.api.provider.Property
import org.gradle.api.tasks.Input
import org.gradle.api.tasks.InputDirectory
import org.gradle.api.tasks.Internal
import org.gradle.api.tasks.TaskAction
import org.plazmamc.alwaysuptodate.utils.addCommit
abstract class GenerateMergedAPIPatch : Task() {
@get:InputDirectory
abstract val inputDir: DirectoryProperty
@get:Internal
abstract val workDir: DirectoryProperty
@get:Input
abstract val commitTitle: Property<String>
@get:Input
abstract val author: Property<String>
@get:Input
abstract val license: Property<String>
@TaskAction
fun generate() = with(workDir.path) {
val dotGit = resolve(".git").toFile().also(java.io.File::deleteRecursively)
inputDir.path.toFile().copyRecursively(dotGit, overwrite = true)
Git(this).addCommit("${commitTitle.get()}\n\n${license.get()}", "--author=${author.get()}")
}
}

View File

@@ -1,51 +0,0 @@
package org.plazmamc.alwaysuptodate.tasks
import io.papermc.paperweight.util.Git
import io.papermc.paperweight.util.path
import org.gradle.api.file.DirectoryProperty
import org.gradle.api.provider.Property
import org.gradle.api.tasks.Input
import org.gradle.api.tasks.Internal
import org.gradle.api.tasks.TaskAction
import org.plazmamc.alwaysuptodate.utils.addCommit
import java.io.File
import java.nio.file.Path
abstract class GenerateMergedServerPatch : Task() {
@get:Internal
abstract val workDir: DirectoryProperty
@get:Input
abstract val commitTitle: Property<String>
@get:Input
abstract val author: Property<String>
@get:Input
abstract val license: Property<String>
@TaskAction
fun generate() = with(workDir.path) {
val dotGit = resolve(".git").toFile().also(java.io.File::deleteRecursively)
copySource(this)
val paper = resolve("../.gradle/caches/paperweight/upstreams/paper/Paper-Server")
copySource(paper)
Git(paper).addCommit("Vanilla Sources", "--author=Automated <auto@mated.null>")
paper.resolve(".git").toFile().copyRecursively(dotGit, overwrite = true)
Git(this).addCommit("${commitTitle.get()}\n\n${license.get()}", "--author=${author.get()}")
}
}
internal fun copySource(dir: Path) = with(dir.resolve(".gradle/caches/paperweight/mc-dev-sources")) {
val target = dir.resolve("src/main")
resolve("net").toFile().copyRecursively(target.resolve("java/net").toFile(), overwrite = true)
resolve("com").toFile().copyRecursively(target.resolve("java/com").toFile(), overwrite = true)
resolve("data").toFile().copyRecursively(target.resolve("resources/data").toFile(), overwrite = true)
resolve("assets").toFile().copyRecursively(target.resolve("resources/assets").toFile(), overwrite = true)
}

View File

@@ -1,252 +0,0 @@
package org.plazmamc.alwaysuptodate.tasks
import io.papermc.paperweight.patcher.tasks.CheckoutRepo
import io.papermc.paperweight.util.Git
import io.papermc.paperweight.util.cache
import io.papermc.paperweight.util.path
import io.papermc.paperweight.util.set
import org.gradle.api.file.Directory
import org.gradle.api.file.DirectoryProperty
import org.gradle.api.provider.Provider
import org.gradle.api.tasks.Internal
import org.gradle.api.tasks.OutputDirectory
import org.gradle.api.tasks.TaskAction
import org.gradle.api.tasks.TaskProvider
import org.plazmamc.alwaysuptodate.utils.*
import java.io.File
import java.nio.file.Path
import java.util.*
import kotlin.io.path.ExperimentalPathApi
import kotlin.io.path.name
import kotlin.io.path.walk
@Deprecated("It will soon be changed to be available for other upstreams.")
abstract class PurpurUpdateTask : Task() {
private val pufferfishHeader = """
Pufferfish
Copyright (C) ${Calendar.getInstance().get(Calendar.YEAR)} Pufferfish Studios LLC
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
""".trimIndent()
private val pufferfishAuthor = "Kevin Raneri <kevin.raneri@gmail.com>"
private val purpurHeader = """
PurpurMC
Copyright (C) ${Calendar.getInstance().get(Calendar.YEAR)} PurpurMC
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
""".trimIndent()
private val purpurAuthor = "granny <contact@granny.dev>"
@get:Internal
abstract val workDir: DirectoryProperty
@get:OutputDirectory
abstract val purpurDir: DirectoryProperty
@get:OutputDirectory
abstract val pufferfishDir: DirectoryProperty
override fun init(): Unit = with(project) {
val wd = layout.cache.resolve("alwaysUpToDate/update/purpur").also { it.toFile().deleteRecursively() }
workDir.set(wd)
val compare =
configureTask<CreateCompareComment>("createPurpurCompareComment", "Create Purpur Compare Comment") {
clear.convention(true)
repo.convention(extension.purpurRepo)
ref.convention(extension.purpurRef)
commitPropertyName.convention(extension.purpurCommitName)
}
val paper = dependsOn<SimpleUpstreamUpdateTask>("updatePaper", "Update Paper") {
outputs.upToDateWhen { checkCommitFor { repo to ref to paperCommitName } }
dependsOn(compare)
repo.convention(extension.paperRepo)
ref.convention(extension.paperRef)
regex.convention("paperCommit = ")
workDir.set(layout.projectDirectory)
}
fun checkout(
name: String, repo: Provider<String>, ref: Provider<String>, regex: String, block: CheckoutRepo.() -> Unit
): Pair<TaskProvider<CheckoutRepo>, Directory> {
val updatePaper = configureTask<SimpleUpstreamUpdateTask>("update${name}Paper", "Update $name's Paper") {
this.repo.convention(extension.paperRepo)
this.ref.convention(extension.paperRef)
this.regex.convention(regex)
this.workDir.set(wd.resolve(name))
}
val checkout = dependsOn<CheckoutRepo>("checkout$name", "Checkout $name") {
this.dependsOn(paper)
this.repoName.convention(name)
this.url.convention(repo)
this.ref.convention(ref)
this.workDir.set(wd)
this.block()
// this.finalizedBy(updatePaper)
}
return checkout to checkout.flatMap { it.outputDir }.get()
}
val (checkoutPufferfish, pufferfish) =
checkout("Pufferfish", extension.pufferfishRepo, extension.pufferfishRef, "paperRef=") {
onlyIf { extension { usePufferfish } }
}
val (checkoutPurpur, purpur) =
checkout("Purpur", extension.purpurRepo, extension.purpurRef, "paperCommit = ") {}
pufferfishDir.set(pufferfish)
purpurDir.set(purpur)
val preparePurpur = configureTask("preparePurpur", "Prepare Purpur Sources") {
mustRunAfter(paper)
dependsOn(checkoutPurpur)
doLast { Gradle(purpur.path)("applyPatches").executeOut() }
}
val preparePufferfish = configureTask("preparePufferfish", "Prepare Pufferfish Sources") {
onlyIf { extension { usePufferfish } }
mustRunAfter(paper)
dependsOn(checkoutPurpur, checkoutPufferfish)
doLast {
val base = pufferfish.path.resolve("patches").also { it.toFile().deleteRecursively() }
val source = purpur.path.resolve("patches")
source.resolve("server").copyPatch(base.resolve("server"), "Pufferfish-Server-Changes")
source.resolve("api").copyPatch(base.resolve("api"), "Pufferfish-API-Changes")
Gradle(pufferfish.path)("applyPatches").executeOut()
}
}
dependsOn(preparePurpur, preparePufferfish)
val serverPatch =
configureTask<GenerateMergedServerPatch>("generateMergedServerPatches", "Generate Merged Server Patch") {
dependsOn(preparePurpur)
if (!extension { usePufferfish }) {
workDir.convention(purpur.dir("Purpur-Server"))
commitTitle.convention("Purpur Server Changes")
license.convention(purpurHeader)
author.convention(purpurAuthor)
return@configureTask
}
dependsOn(preparePufferfish)
workDir.convention(pufferfish.dir("pufferfish-server"))
commitTitle.convention("Pufferfish Server Changes")
license.convention(pufferfishHeader)
author.convention(pufferfishAuthor)
doLast {
val dotGit = pufferfish.dir("pufferfish-server/.git").path.toFile()
purpur.path.resolve("Purpur-Server").let {
val purpurDotGit = it.resolve(".git").toFile().also(File::deleteRecursively)
copySource(it)
dotGit.copyRecursively(purpurDotGit, overwrite = true)
Git(it).addCommit("Purpur Server Changes\n\n$purpurHeader", "--author=$purpurAuthor")
}
}
}
val pufferfishAPIChanges = configureTask<GenerateMergedAPIPatch>(
"generateMergedPufferfishAPIPatch",
"Generate Merged Pufferfish API Patch"
) {
dependsOn(preparePufferfish)
inputDir.convention(pufferfish.dir(".gradle/caches/paperweight/upstreams/paper/Paper-API/.git"))
workDir.convention(pufferfish.dir("pufferfish-api"))
commitTitle.convention("Pufferfish API Changes")
license.convention(pufferfishHeader)
author.convention(pufferfishAuthor)
}
val apiPatch = configureTask<GenerateMergedAPIPatch>(
"generateMergedAPIPatches",
"Generate Merged API Patches"
) {
dependsOn(preparePurpur)
if (extension { usePufferfish }) dependsOn(pufferfishAPIChanges)
workDir.convention(purpur.dir("Purpur-API"))
commitTitle.convention("Purpur API Changes")
license.convention(purpurHeader)
author.convention(purpurAuthor)
inputDir.convention(
if (extension { usePufferfish }) pufferfish.dir("pufferfish-api/.git")
else purpur.dir(".gradle/caches/paperweight/upstreams/paper/Paper-API/.git")
)
}
dependsOn("buildPatches", "Build Merged Patches") {
dependsOn(serverPatch, apiPatch)
doLast { Gradle(purpur.path)("rebuildPatches").executeOut() }
}
}
@TaskAction
fun update() = with(project) {
val purpur = purpurDir.path
val pufferfish = if (extension { usePufferfish }) pufferfishDir.path else null
val patches = purpur.resolve("patches")
with(layout.projectDirectory.path.resolve("patches")) {
patches.resolve("server").copyPatch( resolve("server"),
if (pufferfish == null) "" else "Pufferfish-Server-Changes",
"Purpur-Server-Changes"
)
patches.resolve("api").copyPatch( resolve("api"),
if (pufferfish == null) "" else "Pufferfish-API-Changes",
"Purpur-API-Changes"
)
}
file("gradle.properties").let {
it.writeText(
it.readText().replace("purpurCommit = .*".toRegex(), "purpurCommit = ${Git(purpur).revParse()}")
)
}
}
}
@OptIn(ExperimentalPathApi::class)
private fun Path.copyPatch(to: Path, vararg name: String) = walk().sorted()
.filter { entry -> name.filter { it != "" }.any { entry.name.endsWith("$it.patch") } }.map(Path::toFile)
.forEachIndexed { count, patch ->
patch.copyTo(
to.resolve("${count + 1}".padStart(4, '0') + "-" + name.first { patch.name.substring(5) == "$it.patch" } + ".patch").toFile(),
overwrite = true
)
}

View File

@@ -1,48 +0,0 @@
package org.plazmamc.alwaysuptodate.tasks
import io.papermc.paperweight.util.Git
import io.papermc.paperweight.util.path
import org.gradle.api.file.DirectoryProperty
import org.gradle.api.provider.Property
import org.gradle.api.tasks.Input
import org.gradle.api.tasks.InputDirectory
import org.gradle.api.tasks.Optional
import org.gradle.api.tasks.TaskAction
import org.plazmamc.alwaysuptodate.AlwaysUpToDateException
import org.plazmamc.alwaysuptodate.utils.dependsOn
import org.plazmamc.alwaysuptodate.utils.extension
abstract class SimpleUpstreamUpdateTask : Task() {
@get:Input
abstract val repo: Property<String>
@get:Input
abstract val ref: Property<String>
@get:InputDirectory
abstract val workDir: DirectoryProperty
@get:Input
abstract val regex: Property<String>
override fun init(): Unit = with(project) {
dependsOn<CreateCompareComment>("createCompareComment", "Create Paper Compare Comment") {
onlyIf { !this@SimpleUpstreamUpdateTask.state.upToDate }
clear.convention(false)
repo.convention(extension.paperRepo)
ref.convention(extension.paperRef)
commitPropertyName.convention(extension.paperCommitName)
}
}
@TaskAction
fun update() = (Git(workDir.path)("ls-remote", repo.get()).readText()?.lines()
?.filterNot("[a-z0-9]{40}\trefs/heads/${ref.get()}".toRegex()::matches)?.first()?.split("\t")?.first()
?: throw AlwaysUpToDateException("Failed to get latest commit")).let { commit ->
workDir.file("gradle.properties").path.toFile().let {
it.writeText(it.readText().replace("${regex.get()}.*".toRegex(), "${regex.get()}$commit"))
}
}
}

View File

@@ -1,13 +0,0 @@
package org.plazmamc.alwaysuptodate.tasks
import org.gradle.api.DefaultTask
abstract class Task : DefaultTask() {
protected open fun init() {}
init {
this.init()
}
}

View File

@@ -1,33 +0,0 @@
package org.plazmamc.alwaysuptodate.utils
import io.papermc.paperweight.util.Git
import org.gradle.api.tasks.TaskAction
import org.plazmamc.alwaysuptodate.tasks.Task
import java.nio.file.Path
import kotlin.io.path.exists
val Git.path: Path
get() = Git::class.java.getDeclaredField("repo").apply { isAccessible = true }.get(this) as Path
abstract class CheckGitTask : Task() {
@TaskAction
fun checkGit() = Git.checkForGit()
}
fun Git.revParse(): String = this("rev-parse", "HEAD").captureOut(true).out.trim()
fun Git.addCommit(vararg args: String) {
this("add", ".").executeSilently()
this("commit", "-m", *args).executeSilently()
this.wait()
}
fun Git.wait() {
val lockFile = path.resolve(".git/gc.pid")
while (lockFile.exists()) {
println("detected lockfile, waiting for it to be removed")
Thread.sleep(1000)
}
}

View File

@@ -1,36 +0,0 @@
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)
}
}
}

View File

@@ -1,116 +0,0 @@
package org.plazmamc.alwaysuptodate.utils
import io.papermc.paperweight.util.Git
import io.papermc.paperweight.util.configureTask
import io.papermc.paperweight.util.path
import org.gradle.api.DefaultTask
import org.gradle.api.Project
import org.gradle.api.Task
import org.gradle.api.provider.Property
import org.gradle.api.tasks.TaskProvider
import org.gradle.kotlin.dsl.get
import org.plazmamc.alwaysuptodate.AlwaysUpToDateExtension
private var extensionAccessor: AlwaysUpToDateExtension? = null
set(value) {
if (field != null) throw IllegalAccessException("ExtensionAccessor already initialized")
field = value
}
val Project.extension: AlwaysUpToDateExtension
get() {
if (extensionAccessor == null) extensionAccessor =
project.extensions["alwaysUpToDate"] as AlwaysUpToDateExtension
return extensionAccessor!!
}
val Project.git: Git get() = Git(layout.projectDirectory.path)
fun <T> Project.extension(block: AlwaysUpToDateExtension.() -> Property<T>): T =
extension.block().get()
fun Project.property(block: AlwaysUpToDateExtension.() -> Property<String>) =
this.property(extension(block)) as String
inline fun <reified T : Task> Task.dependsOn(
name: String,
description: String,
noinline block: T.() -> Unit = {}
): TaskProvider<T> =
project.configureTask<T>(name, description, block).also { this.dependsOn(it) }
@JvmName("dependsOnDefaultTask")
fun Task.dependsOn(
name: String,
description: String,
block: DefaultTask.() -> Unit = {}
): TaskProvider<DefaultTask> =
this.dependsOn<DefaultTask>(name, description, block)
inline fun <reified T : Task> Task.finalizedBy(
name: String,
description: String,
noinline block: T.() -> Unit = {}
): TaskProvider<T> =
project.configureTask<T>(name, description, block).also { this.finalizedBy(it) }
@JvmName("finalizedByDefaultTask")
fun Task.finalizedBy(
name: String,
description: String,
block: DefaultTask.() -> Unit = {}
): TaskProvider<DefaultTask> =
this.finalizedBy<DefaultTask>(name, description, block)
inline fun <reified T : Task> Task.mustRunAfter(
name: String,
description: String,
noinline block: T.() -> Unit = {}
): TaskProvider<T> =
project.configureTask<T>(name, description, block).also { this.mustRunAfter(it) }
@JvmName("mustRunAfterDefaultTask")
fun Task.mustRunAfter(
name: String,
description: String,
block: DefaultTask.() -> Unit = {}
): TaskProvider<DefaultTask> =
this.mustRunAfter<DefaultTask>(name, description, block)
inline fun <reified T : Task> Project.configureTask(
name: String,
description: String,
noinline block: T.() -> Unit = {}
): TaskProvider<T> =
tasks.configureTask<T>(name) {
this.group = "always up to date"
this.description = description
this.block()
}
@JvmName("configureDefaultTask")
fun Project.configureTask(
name: String,
description: String,
block: DefaultTask.() -> Unit = {}
): TaskProvider<DefaultTask> =
this.configureTask<DefaultTask>(name, description, block)
inline fun <reified T : Task> Project.registerTask(
name: String,
description: String,
crossinline block: T.() -> Unit = {}
): TaskProvider<T> =
tasks.register(name, T::class.java) {
this.group = "always up to date"
this.description = description
this.block()
}
@JvmName("registerDefaultTask")
fun Project.registerTask(
name: String,
description: String,
block: DefaultTask.() -> Unit = {}
): TaskProvider<DefaultTask> =
this.registerTask<DefaultTask>(name, description, block)

View File

@@ -1,3 +0,0 @@
package org.plazmamc.alwaysuptodate.utils
fun <A, B, C> Pair<Pair<A, B>, C>.flatten() = Triple(first.first, first.second, second)

View File

@@ -1 +0,0 @@
implementation-class=org.plazmamc.alwaysuptodate.AlwaysUpToDate

View File

@@ -1,29 +1,10 @@
org.gradle.daemon = true
org.gradle.caching = true
org.gradle.parallel = true
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
group=org.plazmamc.plazma
version=1.21.4-R0.1-SNAPSHOT
mcVersion=1.21.4
paper.runMemoryGb = 8
paper.runDisableWatchdog = true
purpurRef=a9862d7ec77a2b7690e73e635a5829f1596be84e
group = org.plazmamc.plazma
brandKey = plazmamc:plazma
brandName = Plazma
providerName = PlazmaMC
providerRepo = PlazmaMC/PlazmaBukkit
version = 1.21.3-R0.1-SNAPSHOT
mcVersion = 1.21.3
jdkVersion = 21
paperRepo = https://github.com/PaperMC/Paper-archive
paperBranch = ver/1.21.3
purpurRepo = https://github.com/PurpurMC/Purpur
purpurBranch = ver/1.21.3
pufferfishRepo = https://github.com/pufferfish-gg/Pufferfish
pufferfishBranch = ver/1.21
usePufferfish = false
paperCommit = da7138233f6392e791d790d1c3407414c855f9c2
purpurCommit = 16ce24aa7eb08232030e4570e027f7baefa5f3f9
org.gradle.configuration-cache=true
org.gradle.caching=true
org.gradle.parallel=true
org.gradle.vfs.watch=false

View File

@@ -1,15 +1,2 @@
[versions]
shadow = "8.3.5"
remapper = "0.10.3"
paperclip = "3.0.3"
paperweight = "1.7.4"
decompiler = "1.10.1"
[libraries]
paperclip = { group = "io.papermc", name = "paperclip", version.ref = "paperclip" }
remapper = { group = "net.fabricmc", name = "tiny-remapper", version.ref="remapper" }
decompiler = { group = "org.vineflower", name = "vineflower", version.ref = "decompiler" }
[plugins]
shadow = { id = "com.gradleup.shadow", version.ref = "shadow" }
paperweight = { id = "io.papermc.paperweight.patcher", version.ref = "paperweight" }
# This file was generated by the Gradle 'init' task.
# https://docs.gradle.org/current/userguide/platforms.html#sub::toml-dependencies-format

Binary file not shown.

View File

@@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.2-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-8.12.1-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME

4
gradlew vendored
View File

@@ -15,6 +15,8 @@
# See the License for the specific language governing permissions and
# limitations under the License.
#
# SPDX-License-Identifier: Apache-2.0
#
##############################################################################
#
@@ -84,7 +86,7 @@ done
# shellcheck disable=SC2034
APP_BASE_NAME=${0##*/}
# 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
APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s\n' "$PWD" ) || exit
# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD=maximum

2
gradlew.bat vendored
View File

@@ -13,6 +13,8 @@
@rem See the License for the specific language governing permissions and
@rem limitations under the License.
@rem
@rem SPDX-License-Identifier: Apache-2.0
@rem
@if "%DEBUG%"=="" @echo off
@rem ##########################################################################

136
initDev
View File

@@ -1,136 +0,0 @@
#!/bin/bash
# To initialize your development environment,
# run below command in your terminal:
# source ./initDev
PROJECT_DIR=$(pwd)
alias cl="clear;"
alias src="cd $PROJECT_DIR;"
alias ca="cd $PROJECT_DIR/*-API || exit 1; vs;"
alias cg="cd $PROJECT_DIR/paper-api-generator/generated || exit 1; vs;"
alias cs="cd $PROJECT_DIR/*-Server || exit 1; vs;"
alias fa="ca __generate_fixup_patch"
alias fg="cg __generate_fixup_patch"
alias fs="cs __generate_fixup_patch"
alias gradle="./gradlew" # TODO: Paperweight will not work with Gradle 8.10.2
alias gr="cd $PROJECT_DIR; gradle"
alias grc="gr --no-rebuild"
alias ap="grc applyPatches"
alias aap="grc applyAPIPatches"
alias agp="grc applyGeneratedAPIPatches"
alias asp="grc applyServerPatches"
alias aap!="rm -rf $PROJECT_DIR/*-API; aap"
alias agp!="rm -rf $PROJECT_DIR/paper-api-generator/generated; agp"
alias asp!="rm -rf $PROJECT_DIR/*-Server; asp"
alias aapa="ca vpa"
alias aapc="ca vpc"
alias aapc="ca vps"
alias agpa="cg vpa"
alias agpc="cg vpc"
alias agpc="cg vps"
alias aspa="cs vpa"
alias aspc="cs vpc"
alias aspc="cs vps"
alias rp="grc rebuildPatches"
alias rap="grc rebuildAPIPatches"
alias rgp="grc rebuildGeneratedAPIPatches"
alias rsp="grc rebuildServerPatches"
alias mk="gr build"
alias mko="gr createReobfPaperclipJar"
alias mkm="gr createMojmapPaperclipJar"
alias va="git add"
alias va.="git add ."
alias vl="git log --oneline base..HEAD"
alias vr="git rebase --autosquash base"
alias vra="git rebase --abort"
alias vrc="va.; git rebase --continue"
alias vrs="git rebase --skip"
alias vp="git am --show-current-patch"
alias vpa="git am --abort"
alias vpc="git am --continue"
alias vps="git am --skip"
alias vm="git commit --fixup"
alias vs="git status"
alias vc="git commit --verbose --no-interactive"
alias vcn="vc --no-message"
alias vcm="vc --message"
alias vca="git commit --verbose --no-interactive --all"
alias vcan="git commit --verbose --no-interactive --all --no-message"
alias vcam="git commit --verbose --no-interactive --all --message"
alias ve="git commit --verbose --no-interactive --amend"
alias ven="ve --no-message"
alias vem="ve --message"
alias vea="git commit --verbose --no-interactive --all --amend"
alias vean="vea --no-message"
alias veam="vea --message"
alias as="ca src"
alias al="ca vl"
alias ac="ca va.; vcm"
alias am="ca vm"
alias ae="ca ve"
alias aea="ca vea"
alias aean="ca vean"
alias aeam="ca veam"
alias gs="cg src"
alias gl="cg vl"
alias gc="cg va.; vcm"
alias gm="cg vm"
alias ge="cg ve"
alias gea="cg vea"
alias gean="cg vean"
alias geam="cg veam"
alias ss="cs src"
alias sl="cs vl"
alias sc="cs va.; vcm"
alias sm="cs vm"
alias se="cs ve"
alias sea="cs vea"
alias sean="cs vean"
alias seam="cs veam"
function __generate_fixup_patch() {
garg="."
[[ "$1" == "-x" ]] && garg="--amend"
git add .
git commit "$garg" -m "fixup"
git format-patch -1
mv 0001-fixup.patch ../ -f
cd ../
}
# Commit Updated Upstream
function cuu() {
# shellcheck disable=SC2059
printf "Updated Upstream ($1)$(/bin/cat compare.txt)" | git commit -F -
}
git update-index --assume-unchanged ./build-data/dev-imports.txt
if [ ! -L "$PROJECT_DIR/upstream" ]; then
grc applyPatches
ln -dsf "$PROJECT_DIR/.gradle/caches/paperweight/upstreams/paper" "$PROJECT_DIR/upstream"
fi

View File

@@ -1,47 +0,0 @@
[versions]
brigadier = "1.2.9"
guava = "33.3.1-jre"
gson = "2.11.0"
bungeechat = "1.20-R0.2-deprecated+build.19"
# snakeyaml
joml = "1.10.8"
json-simple = "1.1.1"
fastutil = "8.5.6"
# adventure
# log4j
slf4j-api = "2.0.9"
sentry = "5.4.0"
# asm
# mvn
annotations = "24.1.0"
checkerqual = "3.21.0"
jspecify = "1.0.0"
[libraries]
brigadier = { group = "com.mojang", name = "brigadier", version.ref = "brigadier" }
guava = { group = "com.google.guava", name = "guava", version.ref = "guava" }
gson = { group = "com.google.code.gson", name = "gson", version.ref = "gson" }
bungeechat = { group = "net.md-5", name = "bungeecord-chat", version.ref = "bungeechat" }
joml = { group = "org.joml", name = "joml", version.ref = "joml" }
jsonsimple = { group = "com.googlecode.json-simple", name = "json-simple", version.ref = "json-simple" }
fastutil = { group = "it.unimi.dsi", name = "fastutil", version.ref = "fastutil" }
slf4j = { group = "org.slf4j", name = "slf4j-api", version.ref = "slf4j-api" }
sentry = { group = "io.sentry", name = "sentry", version.ref = "sentry" }
annotations = { group = "org.jetbrains", name = "annotations", version.ref = "annotations" }
checkerqual = { group = "org.checkerframework", name = "checker-qual", version.ref = "checkerqual" }
jspecify = { group = "org.jspecify", name = "jspecify", version.ref = "jspecify" }
[bundles]
api = [ "brigadier", "guava", "gson", "joml", "fastutil", "slf4j", "sentry", "jspecify" ]
annotations = [ "annotations", "checkerqual" ]

View File

@@ -1,73 +0,0 @@
[versions]
adventure = "4.17.0"
log4j = "2.19.0"
asm = "9.7.1"
mvn = "3.9.6"
mvn-resolver = "1.9.18"
commons-lang2 = "2.6"
commons-lang3 = "3.12.0"
snakeyaml = "2.2"
junit = "1.10.0"
junit-jupiter = "5.10.0"
junit-pioneer = "2.2.0"
hamcrest = "2.2"
mockito = "5.14.1"
[libraries]
adventure-bom = { group = "net.kyori", name = "adventure-bom", version.ref = "adventure" }
adventure-api = { group = "net.kyori", name = "adventure-api", version.ref = "adventure" }
adventure-minimessage = { group = "net.kyori", name = "adventure-text-minimessage", version.ref = "adventure" }
adventure-logger-slf4j = { group = "net.kyori", name = "adventure-text-logger-slf4j", 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" }
log4j = { group = "org.apache.logging.log4j", name = "log4j-core", version.ref = "log4j" }
log4j-api = { group = "org.apache.logging.log4j", name = "log4j-api", version.ref = "log4j" }
log4j-stream = { group = "org.apache.logging.log4j", name = "log4j-iostreams", version.ref = "log4j" }
asm = { 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" }
mvn = { group = "org.apache.maven", name = "maven-resolver-provider", version.ref = "mvn" }
mvn-connector = { group = "org.apache.maven.resolver", name = "maven-resolver-connector-basic", version.ref = "mvn-resolver" }
mvn-transport = { group = "org.apache.maven.resolver", name = "maven-resolver-transport-http", version.ref = "mvn-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" }
snakeyaml = { group = "org.yaml", name = "snakeyaml", version.ref = "snakeyaml" }
junit = { group = "org.junit.platform", name = "junit-platform-suite-engine", version.ref = "junit" }
junit-jupiter = { group = "org.junit.jupiter", name = "junit-jupiter", version.ref = "junit-jupiter" }
junit-pioneer = { group = "org.junit-pioneer", name = "junit-pioneer", version.ref = "junit-pioneer" }
hamcrest = { group = "org.hamcrest", name = "hamcrest", version.ref = "hamcrest" }
mockito = { group = "org.mockito", name = "mockito-core", version.ref = "mockito" }
[bundles]
asm = [ "asm", "asm-commons" ]
mvn = [ "mvn-connector", "mvn-transport" ]
test = [
"junit-jupiter",
"hamcrest",
"mockito",
"asm-tree"
]
adventure = [
"adventure-api",
"adventure-minimessage",
"adventure-logger-slf4j",
"adventure-serializer-gson",
"adventure-serializer-plain",
"adventure-serializer-legacy"
]

View File

@@ -1,89 +0,0 @@
[versions]
jline = "3.27.1"
tca = "1.3.0"
# adventure
# log4j
netty = "4.1.97.Final"
# asm
configurate = "4.2.0-SNAPSHOT"
# commons2
sqlite = "3.46.1.3"
mysql = "9.1.0"
disruptor = "3.4.4"
velocity = "3.3.0-SNAPSHOT"
# mvn
# snakeyaml
simpleyaml = "1.8.4"
rhino = "1.7.14"
upnp = "1.0"
classgraph = "4.8.47"
# test (junit, hamcrest, mockito, asm-tree)
srgutils = "1.0.9"
art = "2.0.3"
rewriter = "0.0.3"
spark-api = "0.1-20240720.200737-2"
spark = "1.10.119-SNAPSHOT"
[libraries]
jline-ffm = { group = "org.jline", name = "jline-terminal-ffm", version.ref = "jline" }
jline-jni = { group = "org.jline", name = "jline-terminal-jni", version.ref = "jline" }
tca = { group = "net.minecrell", name = "terminalconsoleappender", version.ref="tca" }
# adventure
# log4j
netty-haproxy = { group = "io.netty", name = "netty-codec-haproxy", version.ref = "netty" }
# asm
configurate-yaml = { group = "org.spongepowered", name = "configurate-yaml", version.ref = "configurate" }
# commons2
sqlite = { group = "org.xerial", name = "sqlite-jdbc", version.ref = "sqlite" }
mysql = { group = "com.mysql", name = "mysql-connector-j", version.ref = "mysql" }
disruptor = { group = "com.lmax", name = "disruptor", version.ref = "disruptor" }
velocity-native = { group = "com.velocitypowered", name = "velocity-native", version.ref = "velocity" }
# snakeyaml
simpleyaml = { group = "com.github.carleslc.Simple-YAML", name = "Simple-Yaml", version.ref = "simpleyaml" }
rhino-runtime = { group = "org.mozilla", name = "rhino-runtime", version.ref = "rhino" }
rhino-engine = { group = "org.mozilla", name = "rhino-engine", version.ref = "rhino" }
upnp = { group = "dev.omega24", name = "upnp4j", version.ref = "upnp" }
classgraph = { group = "io.github.classgraph", name = "classgraph", version.ref = "classgraph" }
# test (junit, hamcrest, mockito, asm-tree)
srgutils = { group = "net.neoforged", name = "srgutils", version.ref = "srgutils" }
art = { group = "net.neoforged", name = "AutoRenamingTool", version.ref = "art" }
rewriter = { group = "io.papermc", name = "reflection-rewriter", version.ref = "rewriter" }
rewriter-runtime = { group = "io.papermc", name = "reflection-rewriter-runtime", version.ref = "rewriter" }
rewriter-proxy = { group = "io.papermc", name = "reflection-rewriter-proxy-generator", version.ref = "rewriter" }
spark-api = { group = "me.lucko", name = "spark-api", version.ref = "spark-api" }
spark = { group = "me.lucko", name = "spark-paper", version.ref = "spark" }
[bundles]
runtime = [ "sqlite", "mysql", "disruptor" ]
test = [ "classgraph" ]
implementation = [
"jline-ffm",
"jline-jni",
"tca",
"netty-haproxy",
"configurate-yaml",
"velocity-native",
"rhino-runtime",
"rhino-engine",
"upnp",
"srgutils",
"art",
"rewriter",
"rewriter-runtime",
"rewriter-proxy",
"spark-api",
"spark"
]

File diff suppressed because it is too large Load Diff

View File

@@ -1,154 +0,0 @@
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 b0fd6c1804844f09428051952e3ac4e58f8c859c..2b668f8a5c245d024e03c94b7d8872448f1929cf 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -9,11 +9,13 @@ java {
withJavadocJar()
}
+/* // Plazma - Use Gradle Version Catalogs
val annotationsVersion = "24.1.0"
val bungeeCordChatVersion = "1.20-R0.2"
val adventureVersion = "4.17.0"
val slf4jVersion = "2.0.9"
val log4jVersion = "2.17.1"
+ */ // Plazma - Use Gradle Version Catalogs
val apiAndDocs: Configuration by configurations.creating {
attributes {
attribute(Category.CATEGORY_ATTRIBUTE, objects.named(Category.DOCUMENTATION))
@@ -39,58 +41,30 @@ abstract class MockitoAgentProvider : CommandLineArgumentProvider {
// Paper end - configure mockito agent that is needed in newer java versions
dependencies {
- api("com.mojang:brigadier:1.2.9") // Paper - Brigadier command api
- // api dependencies are listed transitively to API consumers
- api("com.google.guava:guava:32.1.2-jre")
- api("com.google.code.gson:gson:2.10.1")
- // Paper start - adventure
- api("net.md-5:bungeecord-chat:$bungeeCordChatVersion-deprecated+build.18") {
- exclude("com.google.guava", "guava")
- }
- // Paper - adventure
- api("org.yaml:snakeyaml:2.2")
- api("org.joml:joml:1.10.5")
- // Paper start
- api("com.googlecode.json-simple:json-simple:1.1.1") {
- isTransitive = false // includes junit
- }
- api("it.unimi.dsi:fastutil:8.5.6")
- apiAndDocs(platform("net.kyori:adventure-bom:$adventureVersion"))
- apiAndDocs("net.kyori:adventure-api")
- apiAndDocs("net.kyori:adventure-text-minimessage")
- apiAndDocs("net.kyori:adventure-text-serializer-gson")
- apiAndDocs("net.kyori:adventure-text-serializer-legacy")
- apiAndDocs("net.kyori:adventure-text-serializer-plain")
- apiAndDocs("net.kyori:adventure-text-logger-slf4j")
- api("org.apache.logging.log4j:log4j-api:$log4jVersion")
- api("org.slf4j:slf4j-api:$slf4jVersion")
- api("io.sentry:sentry:5.4.0") // Pufferfish
-
- implementation("org.ow2.asm:asm:9.7.1")
- implementation("org.ow2.asm:asm-commons:9.7.1")
- // Paper end
-
- api("org.apache.maven:maven-resolver-provider:3.9.6") // Paper - make API dependency for Paper Plugins
- compileOnly("org.apache.maven.resolver:maven-resolver-connector-basic:1.9.18")
- compileOnly("org.apache.maven.resolver:maven-resolver-transport-http:1.9.18")
-
- val annotations = "org.jetbrains:annotations:$annotationsVersion" // Paper - we don't want Java 5 annotations...
- compileOnly(annotations)
- testCompileOnly(annotations)
-
- // Paper start - add checker
- val checkerQual = "org.checkerframework:checker-qual:3.33.0"
- compileOnlyApi(checkerQual)
- testCompileOnly(checkerQual)
- // Paper end
- api("org.jspecify:jspecify:1.0.0") // Paper - add jspecify
-
- testImplementation("org.apache.commons:commons-lang3:3.12.0")
- testImplementation("org.junit.jupiter:junit-jupiter:5.10.2")
- testImplementation("org.hamcrest:hamcrest:2.2")
- testImplementation("org.mockito:mockito-core:5.14.1")
- testImplementation("org.ow2.asm:asm-tree:9.7.1")
- mockitoAgent("org.mockito:mockito-core:5.14.1") { isTransitive = false } // Paper - configure mockito agent that is needed in newer java versions
+ // Plazma start - Use Gradle Version Catalogs
+ api(api.bundles.api)
+ api(api.bungeechat) { exclude("com.google.guava", "guava") }
+ api(common.snakeyaml)
+ api(api.jsonsimple) { isTransitive = false }
+ apiAndDocs(platform(common.adventure.bom))
+ apiAndDocs(common.bundles.adventure)
+ api(common.log4j.api)
+
+ implementation(common.bundles.asm)
+
+ api(common.mvn)
+ compileOnly(common.bundles.mvn)
+
+ compileOnly(api.annotations)
+ testCompileOnly(api.annotations)
+
+ compileOnlyApi(api.checkerqual)
+ testCompileOnly(api.checkerqual)
+
+ testImplementation(common.commons.lang3)
+ testImplementation(common.bundles.test)
+ mockitoAgent(common.mockito) { isTransitive = false }
+ // Plazma end
}
// Paper start
@@ -175,27 +149,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://javadoc.io/doc/net.md-5/bungeecord-chat/$bungeeCordChatVersion/", // Paper - don't link to bungee chat
- // Paper start - add missing javadoc links
- "https://javadoc.io/doc/org.joml/joml/1.10.5/index.html",
- "https://www.javadoc.io/doc/com.google.code.gson/gson/2.10.1",
- "https://jspecify.dev/docs/api/",
- // Paper end
- // Paper start
- "https://jd.advntr.dev/api/$adventureVersion/",
- "https://jd.advntr.dev/key/$adventureVersion/",
- "https://jd.advntr.dev/text-minimessage/$adventureVersion/",
- "https://jd.advntr.dev/text-serializer-gson/$adventureVersion/",
- "https://jd.advntr.dev/text-serializer-legacy/$adventureVersion/",
- "https://jd.advntr.dev/text-serializer-plain/$adventureVersion/",
- "https://jd.advntr.dev/text-logger-slf4j/$adventureVersion/",
- "https://javadoc.io/doc/org.slf4j/slf4j-api/$slf4jVersion/",
- "https://javadoc.io/doc/org.apache.logging.log4j/log4j-api/$log4jVersion/",
- // Paper end
- "https://javadoc.io/doc/org.apache.maven.resolver/maven-resolver-api/1.7.3", // Paper
+ // Plazma start - Use Gradle Version Catalogs
+ "https://guava.dev/releases/${api.guava.orNull?.version}/api/docs/",
+ "https://javadoc.io/doc/org.yaml/snakeyaml/${common.snakeyaml.orNull?.version}/",
+ "https://javadoc.io/doc/org.jetbrains/annotations/${api.annotations.orNull?.version}/",
+ "https://javadoc.io/doc/org.joml/joml/${api.joml.orNull?.version}/index.html",
+ "https://www.javadoc.io/doc/com.google.code.gson/gson/${api.gson.orNull?.version}",
+ "https://jspecify.dev/docs/api/", //diff on change
+ "https://jd.advntr.dev/api/${common.adventure.api.orNull?.version}/",
+ "https://jd.advntr.dev/key/${common.adventure.api.orNull?.version}/",
+ "https://jd.advntr.dev/text-minimessage/${common.adventure.api.orNull?.version}/",
+ "https://jd.advntr.dev/text-serializer-gson/${common.adventure.api.orNull?.version}/",
+ "https://jd.advntr.dev/text-serializer-legacy/${common.adventure.api.orNull?.version}/",
+ "https://jd.advntr.dev/text-serializer-plain/${common.adventure.api.orNull?.version}/",
+ "https://jd.advntr.dev/text-logger-slf4j/${common.adventure.api.orNull?.version}/",
+ "https://javadoc.io/doc/org.yaml/snakeyaml/${common.snakeyaml.orNull?.version}/",
+ "https://javadoc.io/doc/org.slf4j/slf4j-api/${api.slf4j.orNull?.version}/",
+ "https://javadoc.io/doc/org.apache.logging.log4j/log4j-api/${common.log4j.api.orNull?.version}/",
+ "https://javadoc.io/doc/org.apache.maven.resolver/maven-resolver-api/${common.mvn.connector.orNull?.version}",
+ // Plazma end
)
options.tags("apiNote:a:API Note:")

View File

@@ -1,93 +0,0 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: AlphaKR93 <dev@alpha93.kr>
Date: Tue, 14 May 2024 18:36:30 +0900
Subject: [PATCH] Fork-friendly Rebranding
diff --git a/src/main/java/co/aikar/timings/TimingHandler.java b/src/main/java/co/aikar/timings/TimingHandler.java
index 199789d56d22fcb1b77ebd56805cc28aa5a5ab0a..41d10421e1e79711e2e90ff2dc225bfd9cac9284 100644
--- a/src/main/java/co/aikar/timings/TimingHandler.java
+++ b/src/main/java/co/aikar/timings/TimingHandler.java
@@ -127,7 +127,7 @@ class TimingHandler implements Timing {
while ((last = TIMING_STACK.removeLast()) != this) {
last.timingDepth = 0;
if ("Minecraft".equalsIgnoreCase(last.identifier.group)) {
- Logger.getGlobal().log(Level.SEVERE, "TIMING_STACK_CORRUPTION - Look above this for any errors and report this to Paper unless it has a plugin in the stack trace (" + last.identifier + " did not stopTiming)");
+ Logger.getGlobal().log(Level.SEVERE, "TIMING_STACK_CORRUPTION - Look above this for any errors and report this to " + io.papermc.paper.ServerBuildInfo.buildInfo().brandName() + " unless it has a plugin in the stack trace (" + last.identifier + " did not stopTiming)"); // Plazma - Fork-friendly Rebranding
} else {
Logger.getGlobal().log(Level.SEVERE, "TIMING_STACK_CORRUPTION - Report this to the plugin " + last.identifier.group + " (Look for errors above this in the logs) (" + last.identifier + " did not stopTiming)", new Throwable());
}
diff --git a/src/main/java/io/papermc/paper/ServerBuildInfo.java b/src/main/java/io/papermc/paper/ServerBuildInfo.java
index 7196594e07af19a14c320d77df893978525fe386..6ac3376f12df2ee3e0519ab8b5a0c8211350e550 100644
--- a/src/main/java/io/papermc/paper/ServerBuildInfo.java
+++ b/src/main/java/io/papermc/paper/ServerBuildInfo.java
@@ -33,6 +33,29 @@ public interface ServerBuildInfo {
Key BRAND_PURPUR_ID = Key.key("purpurmc", "purpur");
// Purpur end
+ // Plazma start - Fork-friendly Rebranding
+ /**
+ * The brand id for Plazma.
+ */
+ Key BRAND_PLAZMA_ID = Key.key("plazmamc", "plazma");
+
+ // For those who fork Plazma - please add the new branding key here
+
+ /**
+ * The brand id of the server.
+ */
+ Key BRAND_ID = BRAND_PLAZMA_ID;
+
+ /**
+ * Supported brands of the server.
+ */
+ java.util.List<Key> SUPPORTED_BRANDS = java.util.Arrays.asList(
+ BRAND_PAPER_ID,
+ BRAND_PURPUR_ID,
+ BRAND_PLAZMA_ID
+ );
+ // Plazma end - Fork-friendly Rebranding
+
/**
* Gets the {@code ServerBuildInfo}.
*
diff --git a/src/main/java/org/bukkit/command/defaults/VersionCommand.java b/src/main/java/org/bukkit/command/defaults/VersionCommand.java
index c880d0010849ab733ad13bbd18fab3c864d0cf61..316317222a137c2781b9b0c38948912e9dd08c76 100644
--- a/src/main/java/org/bukkit/command/defaults/VersionCommand.java
+++ b/src/main/java/org/bukkit/command/defaults/VersionCommand.java
@@ -259,7 +259,7 @@ public class VersionCommand extends BukkitCommand {
// Purpur start
int distance = getVersionFetcher().distance();
final Component message = Component.join(net.kyori.adventure.text.JoinConfiguration.separator(Component.newline()),
- ChatColor.parseMM("<grey>Current Purpur Version: %s%s*", distance == 0 ? "<green>" : distance > 0 ? "<yellow>" : "<red>", Bukkit.getVersion()),
+ ChatColor.parseMM("<grey>Current " + io.papermc.paper.ServerBuildInfo.buildInfo().brandName() + " Version: %s%s*", distance == 0 ? "<green>" : distance > 0 ? "<yellow>" : "<red>", Bukkit.getVersion()), // Plazma - Fork-friendly Rebranding
// Purpur end
msg
);
@@ -282,6 +282,7 @@ public class VersionCommand extends BukkitCommand {
}
}
+ /* // Plazma - Fork-friendly Rebranding
private static int getDistance(@NotNull String repo, @NotNull String hash) {
try {
BufferedReader reader = Resources.asCharSource(
@@ -302,4 +303,5 @@ public class VersionCommand extends BukkitCommand {
return -1;
}
}
+ */ // Plazma - Fork-friendly Rebranding
}
diff --git a/src/main/java/org/bukkit/plugin/EventExecutor.java b/src/main/java/org/bukkit/plugin/EventExecutor.java
index 60e086be70529e0804280b24a2a3e7ae72d8d363..dcf1d53af919e94a6947bc3f81121bd4fad1a163 100644
--- a/src/main/java/org/bukkit/plugin/EventExecutor.java
+++ b/src/main/java/org/bukkit/plugin/EventExecutor.java
@@ -54,7 +54,7 @@ public interface EventExecutor {
if (m.getReturnType() != Void.TYPE) {
final org.bukkit.plugin.java.JavaPlugin plugin = org.bukkit.plugin.java.JavaPlugin.getProvidingPlugin(m.getDeclaringClass());
org.bukkit.Bukkit.getLogger().warning("@EventHandler method " + m.getDeclaringClass().getName() + (Modifier.isStatic(m.getModifiers()) ? '.' : '#') + m.getName()
- + " returns non-void type " + m.getReturnType().getName() + ". This is unsupported behavior and will no longer work in a future version of Paper."
+ + " returns non-void type " + m.getReturnType().getName() + ". This is unsupported behavior and will no longer work in a future version of " + io.papermc.paper.ServerBuildInfo.buildInfo().brandName() + "." // Plazma - Fork-friendly Rebranding
+ " This should be reported to the developers of " + plugin.getPluginMeta().getDisplayName() + " (" + String.join(",", plugin.getPluginMeta().getAuthors()) + ')');
}
if (Modifier.isStatic(m.getModifiers())) {

View File

@@ -1,24 +0,0 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: AlphaKR93 <alphakr93@outlook.com>
Date: Thu, 22 Dec 2022 20:20:03 +0900
Subject: [PATCH] Plazma Configurations
diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java
index ddb1ff894910761a78b91a343f32e129f03a03c4..bebe4116e50f0b0f64f6bdbd3f05f0b998225435 100644
--- a/src/main/java/org/bukkit/Server.java
+++ b/src/main/java/org/bukkit/Server.java
@@ -2295,6 +2295,13 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi
}
// Purpur end
+ // Plazma start - Plazma Configuration API
+ @NotNull
+ public org.bukkit.configuration.file.YamlConfiguration getPlazmaConfig() {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+ // Plazma end
+
/**
* Sends the component to the player
*

View File

@@ -1,26 +0,0 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: AlphaKR93 <dev@alpha93.kr>
Date: Mon, 6 May 2024 20:43:37 +0900
Subject: [PATCH] Various API Tweaks
diff --git a/src/main/java/com/destroystokyo/paper/MaterialTags.java b/src/main/java/com/destroystokyo/paper/MaterialTags.java
index 41eaa8159f8c028faa118300e95f6a0fb9cfe989..76a5381a959ae4e153dba291a362f3d58aeceac9 100644
--- a/src/main/java/com/destroystokyo/paper/MaterialTags.java
+++ b/src/main/java/com/destroystokyo/paper/MaterialTags.java
@@ -584,6 +584,15 @@ public class MaterialTags {
.add(material -> material.name().startsWith("DEEPSLATE_") && material.name().endsWith("_ORE"))
.ensureSize("DEEPSLATE_ORES", 8).lock();
+ // Plazma start - Various API Tweaks
+ /**
+ * Covers the variants of stone ores.
+ */
+ public static final MaterialSetTag STONE_ORES = new MaterialSetTag(keyFor("stone_ores"))
+ .add(material -> !material.name().startsWith("DEEPSLATE_") && !material.name().startsWith("NETHER_") && material.name().endsWith("_ORE"))
+ .ensureSize("STONE_ORES", 8).lock();
+ // Plazma end - Various API Tweaks
+
/**
* Covers the variants of raw ore blocks.
*/

View File

@@ -67,10 +67,10 @@ index 521f035409ee61a9ad73d39bec938f2938892570..6e53135579426cb677bf34a0813db826
}
}
diff --git a/src/main/java/org/bukkit/block/Biome.java b/src/main/java/org/bukkit/block/Biome.java
index 464f8f81ba907a61588e4ab869e4f8269830195a..6d50664e76e6e7ed98ca7b311fdb368886ab65a8 100644
index 20fc2b30fdcdedb012dfe129e746d0b9e162fc36..ca97debfd1a204d15bf5f6c176612cccc2596537 100644
--- a/src/main/java/org/bukkit/block/Biome.java
+++ b/src/main/java/org/bukkit/block/Biome.java
@@ -23,6 +23,7 @@ import org.jetbrains.annotations.NotNull;
@@ -21,6 +21,7 @@ import org.jetbrains.annotations.NotNull;
* which can be accessed via {@link Registry#BIOME}.
*/
public interface Biome extends OldEnum<Biome>, Keyed, net.kyori.adventure.translation.Translatable { // Paper - Adventure translations
@@ -78,7 +78,7 @@ index 464f8f81ba907a61588e4ab869e4f8269830195a..6d50664e76e6e7ed98ca7b311fdb3688
Biome OCEAN = getBiome("ocean");
Biome PLAINS = getBiome("plains");
@@ -129,7 +130,7 @@ public interface Biome extends OldEnum<Biome>, Keyed, net.kyori.adventure.transl
@@ -125,7 +126,7 @@ public interface Biome extends OldEnum<Biome>, Keyed, net.kyori.adventure.transl
@NotNull
@Deprecated(since = "1.21.3", forRemoval = true) @org.jetbrains.annotations.ApiStatus.ScheduledForRemoval(inVersion = "1.22") // Paper - will be removed via asm-utils
static Biome[] values() {

View File

@@ -1,49 +0,0 @@
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 35dfd25f21ca67b7f4d69326500980f4a021ef49..a9816fbfa466b3fe3f82c19aeeeb564c660e4b6a 100644
--- a/com/destroystokyo/paper/entity/ai/VanillaGoal.java
+++ b/com/destroystokyo/paper/entity/ai/VanillaGoal.java
@@ -441,6 +441,18 @@ public interface VanillaGoal<T extends Mob> extends Goal<T> {
GoalKey<Zombie> ZOMBIE_ATTACK_TURTLE_EGG = create("zombie_attack_turtle_egg", Zombie.class);
+ // Purpur start
+ GoalKey<Mob> MOB_HAS_RIDER = GoalKey.of(Mob.class, NamespacedKey.minecraft("has_rider"));
+ GoalKey<AbstractHorse> HORSE_HAS_RIDER = GoalKey.of(AbstractHorse.class, NamespacedKey.minecraft("horse_has_rider"));
+ GoalKey<Llama> LLAMA_HAS_RIDER = GoalKey.of(Llama.class, NamespacedKey.minecraft("llama_has_rider"));
+ GoalKey<Phantom> FIND_CRYSTAL = GoalKey.of(Phantom.class, NamespacedKey.minecraft("find_crystal"));
+ GoalKey<Phantom> ORBIT_CRYSTAL = GoalKey.of(Phantom.class, NamespacedKey.minecraft("orbit_crystal"));
+ GoalKey<Drowned> DROWNED_ATTACK_VILLAGER = GoalKey.of(Drowned.class, NamespacedKey.minecraft("drowned_attack_villager"));
+ GoalKey<Zombie> ZOMBIE_ATTACK_VILLAGER = GoalKey.of(Zombie.class, NamespacedKey.minecraft("zombie_attack_villager"));
+ GoalKey<Wolf> AVOID_RABID_WOLF = GoalKey.of(Wolf.class, NamespacedKey.minecraft("avoid_rabid_wolf"));
+ GoalKey<IronGolem> RECEIVE_FLOWER = GoalKey.of(IronGolem.class, NamespacedKey.minecraft("receive_flower"));
+ // Purpur end
+
private static <T extends Mob> GoalKey<T> create(final String key, final Class<T> type) {
return GoalKey.of(type, NamespacedKey.minecraft(key));
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,71 +0,0 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: AlphaKR93 <dev@alpha93.kr>
Date: Sat, 2 Nov 2024 15:26:27 +0900
Subject: [PATCH] mc dev fixes
diff --git a/src/main/java/net/minecraft/server/commands/DebugCommand.java b/src/main/java/net/minecraft/server/commands/DebugCommand.java
index 06568cc308e06b16f43ec7facd5e2c4e36f3fee9..f8cdd6911fe9d6402455b7368d0e98c25e9511ca 100644
--- a/src/main/java/net/minecraft/server/commands/DebugCommand.java
+++ b/src/main/java/net/minecraft/server/commands/DebugCommand.java
@@ -271,5 +271,12 @@ public class DebugCommand {
public void close() {
IOUtils.closeQuietly((Writer)this.output);
}
+
+ // Plazma start - Decompile fixes
+ @Override
+ public CommandSender getBukkitSender(final CommandSourceStack wrapper) {
+ return wrapper.getBukkitSender();
+ }
+ // Plazma end - Decompile fixes
}
}
diff --git a/src/main/java/net/minecraft/server/commands/ReturnCommand.java b/src/main/java/net/minecraft/server/commands/ReturnCommand.java
index 9f82ca1fee2a319d52a4106c3581f5e9a9554a9e..f5c7748117342dedd9d600881143c206e429fe5b 100644
--- a/src/main/java/net/minecraft/server/commands/ReturnCommand.java
+++ b/src/main/java/net/minecraft/server/commands/ReturnCommand.java
@@ -16,18 +16,18 @@ import net.minecraft.commands.execution.tasks.BuildContexts;
import net.minecraft.commands.execution.tasks.FallthroughTask;
public class ReturnCommand {
- public static <T extends ExecutionCommandSource<T>> void register(CommandDispatcher<T> dispatcher) {
- dispatcher.register(
- (LiteralArgumentBuilder<T>)LiteralArgumentBuilder.<ExecutionCommandSource>literal("return")
- .requires(source -> source.hasPermission(2))
- .then(
- RequiredArgumentBuilder.<T, Integer>argument("value", IntegerArgumentType.integer())
- .executes(new ReturnCommand.ReturnValueCustomExecutor<>())
- )
- .then(LiteralArgumentBuilder.<T>literal("fail").executes(new ReturnCommand.ReturnFailCustomExecutor<>()))
- .then(LiteralArgumentBuilder.<T>literal("run").forward(dispatcher.getRoot(), new ReturnCommand.ReturnFromCommandCustomModifier<>(), false))
+
+ // Plazma start - Decompile fixes
+ public static void register(CommandDispatcher<net.minecraft.commands.CommandSourceStack> dispatcher) {
+ dispatcher.register(net.minecraft.commands.Commands.literal("return")
+ .requires(source -> source.hasPermission(2))
+ .then(net.minecraft.commands.Commands.argument("value", IntegerArgumentType.integer())
+ .executes(new ReturnCommand.ReturnValueCustomExecutor<>()))
+ .then(net.minecraft.commands.Commands.literal("fail").executes(new ReturnCommand.ReturnFailCustomExecutor<>()))
+ .then(net.minecraft.commands.Commands.literal("run").forward(dispatcher.getRoot(), new ReturnCommand.ReturnFromCommandCustomModifier<>(), false))
);
}
+ // Plazma end - Decompile fixes
static class ReturnFailCustomExecutor<T extends ExecutionCommandSource<T>> implements CustomCommandExecutor.CommandAdapter<T> {
@Override
diff --git a/src/main/java/net/minecraft/world/entity/animal/allay/AllayAi.java b/src/main/java/net/minecraft/world/entity/animal/allay/AllayAi.java
index 3fc1ec01e1a77a169ec762a23f15b97f040ce5f8..b5464708c1fa949e7df8aed71126ccad72d66ee3 100644
--- a/src/main/java/net/minecraft/world/entity/animal/allay/AllayAi.java
+++ b/src/main/java/net/minecraft/world/entity/animal/allay/AllayAi.java
@@ -62,8 +62,8 @@ public class AllayAi {
Activity.CORE,
0,
ImmutableList.of(
- new Swim<>(0.8F),
- new AnimalPanic(2.5F),
+ new Swim<Allay>(0.8F), // Plazma - mc dev fixes
+ new AnimalPanic<Allay>(2.5F), // Plazma - mc dev fixes
new LookAtTargetSink(45, 90),
new MoveToTargetSink(),
new CountDownCooldownTicks(MemoryModuleType.LIKED_NOTEBLOCK_COOLDOWN_TICKS),

View File

@@ -1,19 +0,0 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: AlphaKR93 <dev@alpha93.kr>
Date: Fri, 13 Dec 2024 13:54:22 +0900
Subject: [PATCH] Minor code optimizations
diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java
index 34e8eb828be517d9ee3973597c74c5cac3d75c99..f8575f94a389d87d8043ae838720dbe2247235c4 100644
--- a/src/main/java/net/minecraft/world/level/Level.java
+++ b/src/main/java/net/minecraft/world/level/Level.java
@@ -1697,7 +1697,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl
@Override
public List<Entity> getEntities(@Nullable Entity except, AABB box, Predicate<? super Entity> predicate) {
Profiler.get().incrementCounter("getEntities");
- List<Entity> list = Lists.newArrayList();
+ //List<Entity> list = Lists.newArrayList(); // Plazma - minor optimizations
// Paper start - rewrite chunk system
final List<Entity> ret = new java.util.ArrayList<>();

View File

@@ -1,130 +0,0 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: AlphaKR93 <dev@alpha93.kr>
Date: Sun, 14 Jan 2024 19:51:19 +0900
Subject: [PATCH] Build System Changes
diff --git a/build.gradle.kts b/build.gradle.kts
index 77602e4445b1b45a17e5552ac6a769e0ed46ebc7..f021047331c7eb3dac7f0d56af73a9056ffe826b 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -26,71 +26,34 @@ abstract class MockitoAgentProvider : CommandLineArgumentProvider {
dependencies {
implementation(project(":purpur-api")) // Pufferfish // Paper // Purpur
- // Paper start
- implementation("org.jline:jline-terminal-ffm:3.27.1") // use ffm on java 22+
- implementation("org.jline:jline-terminal-jni:3.27.1") // fall back to jni on java 21
- implementation("net.minecrell:terminalconsoleappender:1.3.0")
- implementation("net.kyori:adventure-text-serializer-ansi:4.17.0") // Keep in sync with adventureVersion from Paper-API build file
- /*
- Required to add the missing Log4j2Plugins.dat file from log4j-core
- which has been removed by Mojang. Without it, log4j has to classload
- all its classes to check if they are plugins.
- Scanning takes about 1-2 seconds so adding this speeds up the server start.
- */
- implementation("org.apache.logging.log4j:log4j-core:2.19.0") // Paper - implementation
- log4jPlugins.annotationProcessorConfigurationName("org.apache.logging.log4j:log4j-core:2.19.0") // Paper - Needed to generate meta for our Log4j plugins
- runtimeOnly(log4jPlugins.output)
- alsoShade(log4jPlugins.output)
- implementation("io.netty:netty-codec-haproxy:4.1.97.Final") // Paper - Add support for proxy protocol
- // Paper end
- implementation("org.apache.logging.log4j:log4j-iostreams:2.22.1") // Paper - remove exclusion
- implementation("org.ow2.asm:asm-commons:9.7.1")
- implementation("org.spongepowered:configurate-yaml:4.2.0-SNAPSHOT") // Paper - config files
- implementation("commons-lang:commons-lang:2.6")
- runtimeOnly("org.xerial:sqlite-jdbc:3.46.1.3")
- runtimeOnly("com.mysql:mysql-connector-j:9.1.0")
- runtimeOnly("com.lmax:disruptor:3.4.4") // Paper
- // Paper start - Use Velocity cipher
- implementation("com.velocitypowered:velocity-native:3.3.0-SNAPSHOT") {
- isTransitive = false
- }
- // Paper end - Use Velocity cipher
-
- runtimeOnly("org.apache.maven:maven-resolver-provider:3.9.6")
- runtimeOnly("org.apache.maven.resolver:maven-resolver-connector-basic:1.9.18")
- runtimeOnly("org.apache.maven.resolver:maven-resolver-transport-http:1.9.18")
-
- // Pufferfish start
- implementation("org.yaml:snakeyaml:1.32")
- implementation ("com.github.carleslc.Simple-YAML:Simple-Yaml:1.8.4") { // Purpur
- exclude(group="org.yaml", module="snakeyaml")
- }
- // Pufferfish end
-
- implementation("org.mozilla:rhino-runtime:1.7.14") // Purpur
- implementation("org.mozilla:rhino-engine:1.7.14") // Purpur
- implementation("dev.omega24:upnp4j:1.0") // Purpur
-
- testImplementation("io.github.classgraph:classgraph:4.8.47") // Paper - mob goal test
- testImplementation("org.junit.jupiter:junit-jupiter:5.10.2")
- testImplementation("org.junit.platform:junit-platform-suite-engine:1.10.0")
- testImplementation("org.hamcrest:hamcrest:2.2")
- testImplementation("org.mockito:mockito-core:5.14.1")
- mockitoAgent("org.mockito:mockito-core:5.14.1") { isTransitive = false } // Paper - configure mockito agent that is needed in newer java versions
- testImplementation("org.ow2.asm:asm-tree:9.7.1")
- testImplementation("org.junit-pioneer:junit-pioneer:2.2.0") // Paper - CartesianTest
- implementation("net.neoforged:srgutils:1.0.9") // Paper - mappings handling
- implementation("net.neoforged:AutoRenamingTool:2.0.3") // Paper - remap plugins
- // Paper start - Remap reflection
- val reflectionRewriterVersion = "0.0.3"
- implementation("io.papermc:reflection-rewriter:$reflectionRewriterVersion")
- implementation("io.papermc:reflection-rewriter-runtime:$reflectionRewriterVersion")
- implementation("io.papermc:reflection-rewriter-proxy-generator:$reflectionRewriterVersion")
- // Paper end - Remap reflection
- // Paper start - spark
- implementation("me.lucko:spark-api:0.1-20240720.200737-2")
- implementation("me.lucko:spark-paper:1.10.119-SNAPSHOT")
- // Paper end - spark
+ // Plazma start - Use Gradle Version Catalogs
+ implementation(server.bundles.implementation)
+ implementation(common.adventure.serializer.ansi)
+ implementation(common.log4j.stream)
+
+ implementation(common.log4j)
+ log4jPlugins.annotationProcessorConfigurationName(common.log4j)
+ runtimeOnly(log4jPlugins.output) // diff on change
+ alsoShade(log4jPlugins.output) // diff on change
+
+ runtimeOnly(server.bundles.runtime)
+
+ implementation(common.bundles.asm)
+ implementation(common.commons.lang2)
+ implementation(server.velocity.native) { isTransitive = false }
+
+ runtimeOnly(common.mvn)
+ runtimeOnly(common.bundles.mvn)
+
+ implementation(common.snakeyaml)
+ implementation(server.simpleyaml) { exclude(group="org.yaml", module="snakeyaml") }
+
+ testImplementation(server.classgraph)
+ testImplementation(common.bundles.test)
+ testImplementation(common.junit)
+ mockitoAgent(common.mockito) { isTransitive = false }
+ testImplementation(common.junit.pioneer)
+ // Plazma end - Use Gradle Version Catalogs
}
paperweight {
@@ -118,14 +81,14 @@ tasks.jar {
val gitBranch = git("rev-parse", "--abbrev-ref", "HEAD").getText().trim() // Paper
attributes(
"Main-Class" to "org.bukkit.craftbukkit.Main",
- "Implementation-Title" to "Purpur", // Pufferfish // Purpur
+ "Implementation-Title" to rootProject.providers.gradleProperty("brandName").get(), // Pufferfish // Purpur // Plazma - Fork-friendly Rebranding
"Implementation-Version" to implementationVersion,
"Implementation-Vendor" to date, // Paper
- "Specification-Title" to "Purpur", // Pufferfish // Purpur
+ "Specification-Title" to rootProject.providers.gradleProperty("brandName").get(), // Pufferfish // Purpur // Plazma - Fork-friendly Rebranding
"Specification-Version" to project.version,
- "Specification-Vendor" to "Purpur Team", // Pufferfish // Purpur
- "Brand-Id" to "purpurmc:purpur", // Pufferfish // Purpur
- "Brand-Name" to "Purpur", // Pufferfish // Purpur
+ "Specification-Vendor" to rootProject.providers.gradleProperty("providerName").get(), // Purpur // Plazma - Fork-friendly Rebranding
+ "Brand-Id" to rootProject.providers.gradleProperty("brandKey").get(), // Purpur // Plazma - Fork-friendly Rebranding
+ "Brand-Name" to rootProject.providers.gradleProperty("brandName").get(), // Pufferfish // Purpur // Plazma - Fork-friendly Rebranding
"Build-Number" to (build ?: ""),
"Build-Time" to Instant.now().toString(),
"Git-Branch" to gitBranch, // Paper

View File

@@ -1,438 +0,0 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: AlphaKR93 <dev@alpha93.kr>
Date: Wed, 21 Dec 2022 19:31:24 +0900
Subject: [PATCH] Fork-friendly Rebranding
diff --git a/build.gradle.kts b/build.gradle.kts
index f021047331c7eb3dac7f0d56af73a9056ffe826b..41005f58fdd526907972185e728bbe1fa97171e9 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -25,7 +25,7 @@ abstract class MockitoAgentProvider : CommandLineArgumentProvider {
// Paper end - configure mockito agent that is needed in newer java versions
dependencies {
- implementation(project(":purpur-api")) // Pufferfish // Paper // Purpur
+ implementation(project(":plazma-api")) // Pufferfish // Paper // Purpur // Plazma
// Plazma start - Use Gradle Version Catalogs
implementation(server.bundles.implementation)
implementation(common.adventure.serializer.ansi)
diff --git a/src/main/java/com/destroystokyo/paper/Metrics.java b/src/main/java/com/destroystokyo/paper/Metrics.java
index 8cde30544e14f8fc2dac32966ae3c21f8cf3a551..8d5a52c5762c3d9b44dcdf00ae312e0bdc01fa1f 100644
--- a/src/main/java/com/destroystokyo/paper/Metrics.java
+++ b/src/main/java/com/destroystokyo/paper/Metrics.java
@@ -593,7 +593,7 @@ public class Metrics {
boolean logFailedRequests = config.getBoolean("logFailedRequests", false);
// Only start Metrics, if it's enabled in the config
if (config.getBoolean("enabled", true)) {
- Metrics metrics = new Metrics("Purpur", serverUUID, logFailedRequests, Bukkit.getLogger()); // Pufferfish // Purpur
+ Metrics metrics = new Metrics(io.papermc.paper.ServerBrandConstants.BRAND_NAME, serverUUID, logFailedRequests, Bukkit.getLogger()); // Pufferfish // Purpur // Plazma - Fork-friendly Rebranding
metrics.addCustomChart(new Metrics.SimplePie("minecraft_version", () -> {
String minecraftVersion = Bukkit.getVersion();
diff --git a/src/main/java/com/destroystokyo/paper/PaperVersionFetcher.java b/src/main/java/com/destroystokyo/paper/PaperVersionFetcher.java
index 6d36fc6d8e22d9b68dea3830f6ecc8763184c343..6995627310de4911d87a2f93a723d6b93dc0612f 100644
--- a/src/main/java/com/destroystokyo/paper/PaperVersionFetcher.java
+++ b/src/main/java/com/destroystokyo/paper/PaperVersionFetcher.java
@@ -36,7 +36,7 @@ public class PaperVersionFetcher implements VersionFetcher {
private static final int DISTANCE_ERROR = -1;
private static final int DISTANCE_UNKNOWN = -2;
// Purpur start
- private static final String DOWNLOAD_PAGE = "https://purpurmc.org/downloads";
+ // private static final String DOWNLOAD_PAGE = "https://purpurmc.org/downloads"; // Plazma - Fork-friendly Rebranding
private static int distance = DISTANCE_UNKNOWN; public int distance() { return distance; }
// Purpur end
@@ -52,7 +52,7 @@ public class PaperVersionFetcher implements VersionFetcher {
if (build.buildNumber().isEmpty() && build.gitCommit().isEmpty()) {
updateMessage = text("You are running a development version without access to version information", color(0xFF5300));
} else {
- updateMessage = getUpdateStatusMessage("PurpurMC/Purpur", build); // Purpur
+ updateMessage = getUpdateStatusMessage("PlazmaMC/Plazma", build); // Purpur // Plazma - Fork-friendly Rebranding
}
final @Nullable Component history = this.getHistory();
@@ -63,8 +63,12 @@ public class PaperVersionFetcher implements VersionFetcher {
//int distance = DISTANCE_ERROR; // Purpur - use field
final OptionalInt buildNumber = build.buildNumber();
- if (buildNumber.isPresent()) {
- distance = fetchDistanceFromSiteApi(build, buildNumber.getAsInt());
+ // Plazma start - TODO: CI Checking
+ //noinspection PointlessBooleanExpression
+ if (false && buildNumber.isPresent()) {
+ throw new UnsupportedOperationException("Version fetching from CI is not supported yet");
+ // distance = fetchDistanceFromSiteApi(build, buildNumber.getAsInt());
+ // Plazma end - TODO: CI Checking
} else {
final Optional<String> gitBranch = build.gitBranch();
final Optional<String> gitCommit = build.gitCommit();
@@ -80,12 +84,13 @@ public class PaperVersionFetcher implements VersionFetcher {
default -> text("* You are " + distance + " version(s) behind", NamedTextColor.YELLOW) // Purpur
.append(Component.newline())
.append(text("Download the new version at: ")
- .append(text(DOWNLOAD_PAGE, NamedTextColor.GOLD)
+ .append(text(io.papermc.paper.ServerBrandConstants.DOWNLOAD_PAGE, NamedTextColor.GOLD) // Plazma - Fork-friendly Rebranding
.hoverEvent(text("Click to open", NamedTextColor.WHITE))
- .clickEvent(ClickEvent.openUrl(DOWNLOAD_PAGE))));
+ .clickEvent(ClickEvent.openUrl(io.papermc.paper.ServerBrandConstants.DOWNLOAD_PAGE)))); // Plazma - Fork-friendly Rebranding
};
}
+ /* // Plazma - TODO: CI Checking
private static int fetchDistanceFromSiteApi(final ServerBuildInfo build, final int jenkinsBuild) {
try {
try (final BufferedReader reader = Resources.asCharSource(
@@ -105,6 +110,7 @@ public class PaperVersionFetcher implements VersionFetcher {
return DISTANCE_ERROR;
}
}
+ */ // Plazma - TODO: CI Checking
// Contributed by Techcable <Techcable@outlook.com> in GH-65
private static int fetchDistanceFromGitHub(final String repo, final String branch, final String hash) {
diff --git a/src/main/java/com/destroystokyo/paper/console/PaperConsole.java b/src/main/java/com/destroystokyo/paper/console/PaperConsole.java
index 90b3526479320064378f2cde6c2f2b8e48a59ba6..21658c61ad091647d5421d1dbf892d03ca175c74 100644
--- a/src/main/java/com/destroystokyo/paper/console/PaperConsole.java
+++ b/src/main/java/com/destroystokyo/paper/console/PaperConsole.java
@@ -20,7 +20,7 @@ public final class PaperConsole extends SimpleTerminalConsole {
@Override
protected LineReader buildReader(LineReaderBuilder builder) {
builder
- .appName("Purpur") // Purpur
+ .appName(io.papermc.paper.ServerBrandConstants.BRAND_NAME) // Purpur // Plazma - Fork-friendly Rebranding
.variable(LineReader.HISTORY_FILE, java.nio.file.Paths.get(".console_history"))
.completer(new ConsoleCommandCompleter(this.server))
.option(LineReader.Option.COMPLETE_IN_WORD, true);
diff --git a/src/main/java/io/papermc/paper/ServerBrandConstants.java b/src/main/java/io/papermc/paper/ServerBrandConstants.java
new file mode 100644
index 0000000000000000000000000000000000000000..3af005ce2bbd30601917987d8c831db23c733ab8
--- /dev/null
+++ b/src/main/java/io/papermc/paper/ServerBrandConstants.java
@@ -0,0 +1,29 @@
+package io.papermc.paper;
+
+import org.jetbrains.annotations.Nullable;
+
+public interface ServerBrandConstants {
+
+ // Basic brand informations
+ String BRAND_NAME = "Plazma";
+ String RESOURCE_PATH = "META-INF/maven/org.plazmamc.plazma/plazma-api/pom.properties";
+
+ @Nullable
+ String ASCII_LOGO = """
+
+ \033[38;2;215;23;133m█\033[38;2;212;24;134m█\033[38;2;209;26;134m█\033[38;2;205;27;135m█\033[38;2;202;28;136m█\033[38;2;199;30;136m█\033[38;2;196;31;137m╗\033[38;2;193;33;138m \033[38;2;190;34;138m█\033[38;2;186;35;139m█\033[38;2;183;37;140m╗\033[38;2;180;38;140m \033[38;2;177;39;141m \033[38;2;174;41;142m \033[38;2;170;42;142m \033[38;2;167;43;143m \033[38;2;164;45;144m \033[38;2;161;46;144m█\033[38;2;158;47;145m█\033[38;2;155;49;146m█\033[38;2;151;50;146m█\033[38;2;148;52;147m█\033[38;2;145;53;148m╗\033[38;2;142;54;148m \033[38;2;139;56;149m█\033[38;2;135;57;149m█\033[38;2;132;58;150m█\033[38;2;129;60;151m█\033[38;2;126;61;151m█\033[38;2;123;62;152m█\033[38;2;120;64;153m█\033[38;2;116;65;153m╗ \033[38;2;113;67;154m█\033[38;2;110;68;155m█\033[38;2;107;69;155m█\033[38;2;104;71;156m╗\033[38;2;101;72;157m \033[38;2;97;73;157m \033[38;2;94;75;158m \033[38;2;91;76;159m█\033[38;2;88;77;159m█\033[38;2;85;79;160m█\033[38;2;81;80;161m╗ \033[38;2;78;81;161m \033[38;2;75;83;162m█\033[38;2;72;84;163m█\033[38;2;69;86;163m█\033[38;2;66;87;164m█\033[38;2;62;88;165m█\033[38;2;59;90;165m╗\033[38;2;56;91;166m\s
+ \033[38;2;215;23;133m█\033[38;2;212;24;134m█\033[38;2;209;26;134m╔\033[38;2;205;27;135m═\033[38;2;202;28;136m═\033[38;2;199;30;136m█\033[38;2;196;31;137m█\033[38;2;193;33;138m╗ \033[38;2;190;34;138m█\033[38;2;186;35;139m█\033[38;2;183;37;140m║\033[38;2;180;38;140m \033[38;2;177;39;141m \033[38;2;174;41;142m \033[38;2;170;42;142m \033[38;2;167;43;143m \033[38;2;164;45;144m█\033[38;2;161;46;144m█\033[38;2;158;47;145m╔\033[38;2;155;49;146m═\033[38;2;151;50;146m═\033[38;2;148;52;147m█\033[38;2;145;53;148m█\033[38;2;142;54;148m╗ \033[38;2;139;56;149m╚\033[38;2;135;57;149m═\033[38;2;132;58;150m═\033[38;2;129;60;151m█\033[38;2;126;61;151m█\033[38;2;123;62;152m█\033[38;2;120;64;153m╔\033[38;2;116;65;153m╝ \033[38;2;113;67;154m█\033[38;2;110;68;155m█\033[38;2;107;69;155m█\033[38;2;104;71;156m█\033[38;2;101;72;157m╗\033[38;2;97;73;157m \033[38;2;94;75;158m█\033[38;2;91;76;159m█\033[38;2;88;77;159m█\033[38;2;85;79;160m█\033[38;2;81;80;161m║ \033[38;2;78;81;161m█\033[38;2;75;83;162m█\033[38;2;72;84;163m╔\033[38;2;69;86;163m═\033[38;2;66;87;164m═\033[38;2;62;88;165m█\033[38;2;59;90;165m█\033[38;2;56;91;166m╗
+ \033[38;2;215;23;133m█\033[38;2;212;24;134m█\033[38;2;209;26;134m█\033[38;2;205;27;135m█\033[38;2;202;28;136m█\033[38;2;199;30;136m█\033[38;2;196;31;137m╔\033[38;2;193;33;138m╝ \033[38;2;190;34;138m█\033[38;2;186;35;139m█\033[38;2;183;37;140m║\033[38;2;180;38;140m \033[38;2;177;39;141m \033[38;2;174;41;142m \033[38;2;170;42;142m \033[38;2;167;43;143m \033[38;2;164;45;144m█\033[38;2;161;46;144m█\033[38;2;158;47;145m█\033[38;2;155;49;146m█\033[38;2;151;50;146m█\033[38;2;148;52;147m█\033[38;2;145;53;148m█\033[38;2;142;54;148m║ \033[38;2;139;56;149m \033[38;2;135;57;149m \033[38;2;132;58;150m█\033[38;2;129;60;151m█\033[38;2;126;61;151m█\033[38;2;123;62;152m╔\033[38;2;120;64;153m╝\033[38;2;116;65;153m \033[38;2;113;67;154m█\033[38;2;110;68;155m█\033[38;2;107;69;155m╔\033[38;2;104;71;156m█\033[38;2;101;72;157m█\033[38;2;97;73;157m█\033[38;2;94;75;158m█\033[38;2;91;76;159m╔\033[38;2;88;77;159m█\033[38;2;85;79;160m█\033[38;2;81;80;161m║ \033[38;2;78;81;161m█\033[38;2;75;83;162m█\033[38;2;72;84;163m█\033[38;2;69;86;163m█\033[38;2;66;87;164m█\033[38;2;62;88;165m█\033[38;2;59;90;165m█\033[38;2;56;91;166m║
+ \033[38;2;215;23;133m█\033[38;2;212;24;134m█\033[38;2;209;26;134m╔\033[38;2;205;27;135m═\033[38;2;202;28;136m═\033[38;2;199;30;136m═\033[38;2;196;31;137m╝\033[38;2;193;33;138m \033[38;2;190;34;138m█\033[38;2;186;35;139m█\033[38;2;183;37;140m║\033[38;2;180;38;140m \033[38;2;177;39;141m \033[38;2;174;41;142m \033[38;2;170;42;142m \033[38;2;167;43;143m \033[38;2;164;45;144m█\033[38;2;161;46;144m█\033[38;2;158;47;145m╔\033[38;2;155;49;146m═\033[38;2;151;50;146m═\033[38;2;148;52;147m█\033[38;2;145;53;148m█\033[38;2;142;54;148m║ \033[38;2;139;56;149m \033[38;2;135;57;149m█\033[38;2;132;58;150m█\033[38;2;129;60;151m█\033[38;2;126;61;151m╔\033[38;2;123;62;152m╝\033[38;2;120;64;153m \033[38;2;116;65;153m \033[38;2;113;67;154m█\033[38;2;110;68;155m█\033[38;2;107;69;155m║\033[38;2;104;71;156m╚\033[38;2;101;72;157m█\033[38;2;97;73;157m█\033[38;2;94;75;158m╔\033[38;2;91;76;159m╝\033[38;2;88;77;159m█\033[38;2;85;79;160m█\033[38;2;81;80;161m║ \033[38;2;78;81;161m█\033[38;2;75;83;162m█\033[38;2;72;84;163m╔\033[38;2;69;86;163m═\033[38;2;66;87;164m═\033[38;2;62;88;165m█\033[38;2;59;90;165m█\033[38;2;56;91;166m║
+ \033[38;2;215;23;133m█\033[38;2;212;24;134m█\033[38;2;209;26;134m║\033[38;2;205;27;135m \033[38;2;202;28;136m \033[38;2;199;30;136m \033[38;2;196;31;137m \033[38;2;193;33;138m \033[38;2;190;34;138m█\033[38;2;186;35;139m█\033[38;2;183;37;140m█\033[38;2;180;38;140m█\033[38;2;177;39;141m█\033[38;2;174;41;142m█\033[38;2;170;42;142m█\033[38;2;167;43;143m╗ \033[38;2;164;45;144m█\033[38;2;161;46;144m█\033[38;2;158;47;145m║\033[38;2;155;49;146m \033[38;2;151;50;146m \033[38;2;148;52;147m█\033[38;2;145;53;148m█\033[38;2;142;54;148m║ \033[38;2;139;56;149m█\033[38;2;135;57;149m█\033[38;2;132;58;150m█\033[38;2;129;60;151m█\033[38;2;126;61;151m█\033[38;2;123;62;152m█\033[38;2;120;64;153m█\033[38;2;116;65;153m╗ \033[38;2;113;67;154m█\033[38;2;110;68;155m█\033[38;2;107;69;155m║\033[38;2;104;71;156m \033[38;2;101;72;157m╚\033[38;2;97;73;157m═\033[38;2;94;75;158m╝\033[38;2;91;76;159m \033[38;2;88;77;159m█\033[38;2;85;79;160m█\033[38;2;81;80;161m║ \033[38;2;78;81;161m█\033[38;2;75;83;162m█\033[38;2;72;84;163m║\033[38;2;69;86;163m \033[38;2;66;87;164m \033[38;2;62;88;165m█\033[38;2;59;90;165m█\033[38;2;56;91;166m║
+ \033[38;2;215;23;133m╚\033[38;2;212;24;134m═\033[38;2;209;26;134m╝\033[38;2;205;27;135m \033[38;2;202;28;136m \033[38;2;199;30;136m \033[38;2;196;31;137m \033[38;2;193;33;138m \033[38;2;190;34;138m╚\033[38;2;186;35;139m═\033[38;2;183;37;140m═\033[38;2;180;38;140m═\033[38;2;177;39;141m═\033[38;2;174;41;142m═\033[38;2;170;42;142m═\033[38;2;167;43;143m╝ \033[38;2;164;45;144m╚\033[38;2;161;46;144m═\033[38;2;158;47;145m╝\033[38;2;155;49;146m \033[38;2;151;50;146m \033[38;2;148;52;147m╚\033[38;2;145;53;148m═\033[38;2;142;54;148m╝ \033[38;2;139;56;149m╚\033[38;2;135;57;149m═\033[38;2;132;58;150m═\033[38;2;129;60;151m═\033[38;2;126;61;151m═\033[38;2;123;62;152m═\033[38;2;120;64;153m═\033[38;2;116;65;153m╝ \033[38;2;113;67;154m╚\033[38;2;110;68;155m═\033[38;2;107;69;155m╝\033[38;2;104;71;156m \033[38;2;101;72;157m \033[38;2;97;73;157m \033[38;2;94;75;158m \033[38;2;91;76;159m \033[38;2;88;77;159m╚\033[38;2;85;79;160m═\033[38;2;81;80;161m╝ \033[38;2;78;81;161m╚\033[38;2;75;83;162m═\033[38;2;72;84;163m╝\033[38;2;69;86;163m \033[38;2;66;87;164m \033[38;2;62;88;165m╚\033[38;2;59;90;165m═\033[38;2;56;91;166m╝\033[0m
+ """;
+
+ // Support URLs
+ String DOWNLOAD_PAGE = "https://plazmamc.org/downloads";
+ String CONFIG_REFERENCE = "https://docs.plazmamc.org/plazma/administration/reference/configurations";
+ String START_GUIDE = "https://docs.plazmamc.org/plazma/administration/getting-started";
+ String USAGE_GUIDE = "https://docs.plazmamc.org/plazma/administration/getting-started/next-step";
+ String SUPPORT_PAGE = "https://github.com/PlazmaMC/Plazma/issues";
+
+}
diff --git a/src/main/java/io/papermc/paper/ServerBuildInfoImpl.java b/src/main/java/io/papermc/paper/ServerBuildInfoImpl.java
index 3099c21ee589acf6edff5903a23673adf489024f..a337e2c9576fb70a8ee9082e9b69719c804b286e 100644
--- a/src/main/java/io/papermc/paper/ServerBuildInfoImpl.java
+++ b/src/main/java/io/papermc/paper/ServerBuildInfoImpl.java
@@ -30,10 +30,6 @@ public record ServerBuildInfoImpl(
private static final String ATTRIBUTE_GIT_BRANCH = "Git-Branch";
private static final String ATTRIBUTE_GIT_COMMIT = "Git-Commit";
- private static final String BRAND_PAPER_NAME = "Paper";
- private static final String BRAND_PUFFERFISH_NAME = "Pufferfish"; // Purpur
- private static final String BRAND_PURPUR_NAME = "Purpur"; // Purpur
-
private static final String BUILD_DEV = "DEV";
public ServerBuildInfoImpl() {
@@ -44,9 +40,9 @@ public record ServerBuildInfoImpl(
this(
getManifestAttribute(manifest, ATTRIBUTE_BRAND_ID)
.map(Key::key)
- .orElse(BRAND_PURPUR_ID), // Purpur
+ .orElse(BRAND_ID), // Purpur // Plazma - Fork-friendly Rebranding
getManifestAttribute(manifest, ATTRIBUTE_BRAND_NAME)
- .orElse(BRAND_PURPUR_NAME), // Purpur
+ .orElse(ServerBrandConstants.BRAND_NAME), // Purpur // Plazma - Fork-friendly Rebranding
SharedConstants.getCurrentVersion().getId(),
SharedConstants.getCurrentVersion().getName(),
getManifestAttribute(manifest, ATTRIBUTE_BUILD_NUMBER)
@@ -63,7 +59,7 @@ public record ServerBuildInfoImpl(
@Override
public boolean isBrandCompatible(final @NotNull Key brandId) {
- return brandId.equals(this.brandId) || brandId.equals(BRAND_PAPER_ID) || brandId.equals(BRAND_PUFFERFISH_ID); // Purpur
+ return brandId.equals(this.brandId) || SUPPORTED_BRANDS.contains(brandId); // Purpur // Plazma - Fork-friendly Rebranding
}
@Override
diff --git a/src/main/java/io/papermc/paper/configuration/Configurations.java b/src/main/java/io/papermc/paper/configuration/Configurations.java
index 8cf720f08514e8e4f62f4ad196f1277bd761c6b2..cda2ca940e30506807a5d12b84dbf69529051e26 100644
--- a/src/main/java/io/papermc/paper/configuration/Configurations.java
+++ b/src/main/java/io/papermc/paper/configuration/Configurations.java
@@ -112,7 +112,7 @@ public abstract class Configurations<G, W> {
loader.save(node);
} catch (ConfigurateException ex) {
if (ex.getCause() instanceof AccessDeniedException) {
- LOGGER.warn("Could not save {}: Paper could not persist the full set of configuration settings in the configuration file. Any setting missing from the configuration file will be set with its default value in memory. Admins should make sure to review the configuration documentation at https://docs.papermc.io/paper/configuration for more details.", filename, ex);
+ LOGGER.warn("Could not save {}: {} could not persist the full set of configuration settings in the configuration file. Any setting missing from the configuration file will be set with its default value in memory. Admins should make sure to review the configuration documentation at {} for more details.", filename, io.papermc.paper.ServerBrandConstants.BRAND_NAME, io.papermc.paper.ServerBrandConstants.CONFIG_REFERENCE, ex); // Plazma - Fork-friendly Rebranding
} else throw ex;
}
}
diff --git a/src/main/java/net/minecraft/CrashReport.java b/src/main/java/net/minecraft/CrashReport.java
index 710477ae27ebc5afdf0012ef0867d05efd293c24..3a5e7546c5cc1fcec880cece3f0d0b04ec23cc18 100644
--- a/src/main/java/net/minecraft/CrashReport.java
+++ b/src/main/java/net/minecraft/CrashReport.java
@@ -32,13 +32,13 @@ public class CrashReport {
private boolean trackingStackTrace = true;
private StackTraceElement[] uncategorizedStackTrace = new StackTraceElement[0];
private final SystemReport systemReport = new SystemReport();
- private List<String> extraInfo = List.of("", "DO NOT REPORT THIS TO PAPER! REPORT TO PURPUR INSTEAD!", ""); // Purpur - Rebrand
+ private List<String> extraInfo = List.of("", "DO NOT REPORT THIS TO PAPER OR PURPUR! REPORT TO " + io.papermc.paper.ServerBrandConstants.BRAND_NAME.toUpperCase() + " INSTEAD!", ""); // Purpur - Rebrand // Plazma - Fork-friendly Rebranding
public CrashReport(String message, Throwable cause) {
io.papermc.paper.util.StacktraceDeobfuscator.INSTANCE.deobfuscateThrowable(cause); // Paper
this.title = message;
this.exception = cause;
- this.systemReport.setDetail("CraftBukkit Information", new org.bukkit.craftbukkit.CraftCrashReport()); // CraftBukkit
+ this.systemReport.setDetail(io.papermc.paper.ServerBrandConstants.BRAND_NAME + " CraftBukkit Information", new org.bukkit.craftbukkit.CraftCrashReport()); // CraftBukkit // Plazma - Fork-friendly Rebranding
}
public String getTitle() {
diff --git a/src/main/java/net/minecraft/server/Main.java b/src/main/java/net/minecraft/server/Main.java
index ecaec3c7b5768771b00c4c33d48a76ba22653a79..8f77566bef4b992013e3b65068cabe7ee1921951 100644
--- a/src/main/java/net/minecraft/server/Main.java
+++ b/src/main/java/net/minecraft/server/Main.java
@@ -108,6 +108,11 @@ public class Main {
*/ // CraftBukkit end
try {
+ // Plazma start - Fork-friendly Rebranding
+ //noinspection ConstantValue
+ if (io.papermc.paper.ServerBrandConstants.ASCII_LOGO != null)
+ System.out.println(io.papermc.paper.ServerBrandConstants.ASCII_LOGO);
+ // Plazma end - Fork-friendly Rebranding
Path path = (Path) optionset.valueOf("pidFile"); // CraftBukkit
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index 23505b0f80d643d9ef569b49192f44e0373dfb5f..20f79bcd7613e426b6b1020f586773819f1ac9d0 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -1280,7 +1280,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
LOGGER.info("*************************************************************************************");
LOGGER.info("This is the first time you're starting this server.");
LOGGER.info("It's recommended you read our 'Getting Started' documentation for guidance.");
- LOGGER.info("View this and more helpful information here: https://docs.papermc.io/paper/next-steps");
+ LOGGER.info("View this and more helpful information here: {}", io.papermc.paper.ServerBrandConstants.START_GUIDE); // Plazma - Fork-friendly Rebranding
LOGGER.info("*************************************************************************************");
}
// Paper end - Add onboarding message for initial server start
diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
index 7a442fb4cf78bcb1268359ee41a6de138edb76b6..193c62ed303d25558d78f1e8dfb655919335fdf6 100644
--- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
+++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
@@ -779,7 +779,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
org.bukkit.plugin.Plugin[] plugins = this.server.getPluginManager().getPlugins();
result.append(this.server.getName());
- result.append(" on Bukkit ");
+ result.append(" on ").append(io.papermc.paper.ServerBrandConstants.BRAND_NAME).append(" "); // Plazma - Fork-friendly Rebranding
result.append(this.server.getBukkitVersion());
if (plugins.length > 0 && this.server.getQueryPlugins()) {
diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServerProperties.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServerProperties.java
index 05e16103af3fd276f0196ddf1a2e5b729b025c34..8f7e922ceca286b1a590181c301fbe9bff55c024 100644
--- a/src/main/java/net/minecraft/server/dedicated/DedicatedServerProperties.java
+++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServerProperties.java
@@ -56,10 +56,10 @@ public class DedicatedServerProperties extends Settings<DedicatedServerPropertie
public final boolean onlineMode = this.get("online-mode", true);
public final boolean preventProxyConnections = this.get("prevent-proxy-connections", false);
public final String serverIp = this.get("server-ip", "");
- public final String serverName = this.get("server-name", "Unknown Server"); // Purpur
+ public final String serverName = this.get("server-name", "A " + io.papermc.paper.ServerBrandConstants.BRAND_NAME + " Server"); // Purpur // Plazma - Fork-friendly Rebranding
public final boolean pvp = this.get("pvp", true);
public final boolean allowFlight = this.get("allow-flight", false);
- public final String motd = this.get("motd", "A Minecraft Server");
+ public final String motd = this.get("motd", "A " + io.papermc.paper.ServerBrandConstants.BRAND_NAME + " Server"); // Plazma - Fork-friendly Rebranding
public final String bugReportLink = this.get("bug-report-link", "");
public final boolean forceGameMode = this.get("force-gamemode", false);
public final boolean enforceWhitelist = this.get("enforce-whitelist", false);
diff --git a/src/main/java/net/minecraft/server/gui/MinecraftServerGui.java b/src/main/java/net/minecraft/server/gui/MinecraftServerGui.java
index 8f74c2ec5252b6265549589310d742337c91cb2c..ecb5a046514e3cd448cbf633c728831b1eb5d30b 100644
--- a/src/main/java/net/minecraft/server/gui/MinecraftServerGui.java
+++ b/src/main/java/net/minecraft/server/gui/MinecraftServerGui.java
@@ -56,7 +56,7 @@ public class MinecraftServerGui extends JComponent {
;
}
- final JFrame jframe = new JFrame("Purpur Minecraft server"); // Purpur
+ final JFrame jframe = new JFrame(io.papermc.paper.ServerBrandConstants.BRAND_NAME + " Minecraft server"); // Purpur // Plazma - Fork-friendly Rebranding
final MinecraftServerGui servergui = new MinecraftServerGui(server);
jframe.setDefaultCloseOperation(2);
@@ -64,7 +64,7 @@ public class MinecraftServerGui extends JComponent {
jframe.pack();
jframe.setLocationRelativeTo((Component) null);
jframe.setVisible(true);
- jframe.setName("Purpur Minecraft server"); // Paper - Improve ServerGUI // Purpur
+ jframe.setName(io.papermc.paper.ServerBrandConstants.BRAND_NAME + " Minecraft server"); // Paper - Improve ServerGUI // Purpur // Plazma - Fork-friendly Rebranding
// Paper start - Improve ServerGUI
try {
@@ -76,7 +76,7 @@ public class MinecraftServerGui extends JComponent {
jframe.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent windowevent) {
if (!servergui.isClosing.getAndSet(true)) {
- jframe.setTitle("Purpur Minecraft server - shutting down!"); // Purpur
+ jframe.setTitle(io.papermc.paper.ServerBrandConstants.BRAND_NAME + " Minecraft server - shutting down!"); // Purpur // Plazma - Fork-friendly Rebranding
server.halt(true);
servergui.runFinalizers();
}
@@ -123,7 +123,7 @@ public class MinecraftServerGui extends JComponent {
// Paper start - Add onboarding message for initial server start
private JComponent buildOnboardingPanel() {
- String onboardingLink = "https://docs.papermc.io/paper/next-steps";
+ String onboardingLink = io.papermc.paper.ServerBrandConstants.USAGE_GUIDE; // Plazma - Fork-friendly Rebranding
JPanel jPanel = new JPanel();
javax.swing.JLabel jLabel = new javax.swing.JLabel("If you need help setting up your server you can visit:");
diff --git a/src/main/java/net/minecraft/world/damagesource/DamageSource.java b/src/main/java/net/minecraft/world/damagesource/DamageSource.java
index 4a96d914f8aa6f0c5f13fc85369a311f25835ac2..5b4285d6b37346bcea3bf072c6f00bd50c62e703 100644
--- a/src/main/java/net/minecraft/world/damagesource/DamageSource.java
+++ b/src/main/java/net/minecraft/world/damagesource/DamageSource.java
@@ -89,7 +89,7 @@ public class DamageSource {
public DamageSource customEventDamager(Entity entity) {
if (this.directEntity != null) {
- throw new IllegalStateException("Cannot set custom event damager when direct entity is already set (report a bug to Paper)");
+ throw new IllegalStateException("Cannot set custom event damager when direct entity is already set (report a bug to " + io.papermc.paper.ServerBrandConstants.BRAND_NAME + ")"); // Plazma - Fork-friendly Rebranding
}
DamageSource damageSource = this.cloneInstance();
damageSource.customEventDamager = entity;
diff --git a/src/main/java/net/minecraft/world/level/chunk/storage/RegionFileStorage.java b/src/main/java/net/minecraft/world/level/chunk/storage/RegionFileStorage.java
index cf0f3a14584b9280211f88808cb1ddfb10105ec5..fffe0091008339d438961f0d9f6f62ad6d31859f 100644
--- a/src/main/java/net/minecraft/world/level/chunk/storage/RegionFileStorage.java
+++ b/src/main/java/net/minecraft/world/level/chunk/storage/RegionFileStorage.java
@@ -289,7 +289,7 @@ public class RegionFileStorage implements AutoCloseable, ca.spottedleaf.moonrise
// Paper start
private static void printOversizedLog(String msg, Path file, int x, int z) {
- org.apache.logging.log4j.LogManager.getLogger().fatal(msg + " (" + file.toString().replaceAll(".+[\\\\/]", "") + " - " + x + "," + z + ") Go clean it up to remove this message. /minecraft:tp " + (x<<4)+" 128 "+(z<<4) + " - DO NOT REPORT THIS TO PURPUR - You may ask for help on Discord, but do not file an issue. These error messages can not be removed."); // Purpur
+ org.apache.logging.log4j.LogManager.getLogger().fatal(msg + " (" + file.toString().replaceAll(".+[\\\\/]", "") + " - " + x + "," + z + ") Go clean it up to remove this message. /minecraft:tp " + (x<<4)+" 128 "+(z<<4) + " - DO NOT REPORT THIS TO " + io.papermc.paper.ServerBrandConstants.BRAND_NAME + " - You may ask for help on Discord, but do not file an issue. These error messages can not be removed."); // Purpur // Plazma - Fork-friendly Rebranding
}
private static CompoundTag readOversizedChunk(RegionFile regionfile, ChunkPos chunkCoordinate) throws IOException {
diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java
index 430407b0cf06ba337c59cd576c7e40a8e5fe8229..75a062e1105c2f7cc631a6b8b201b0e08621e3c5 100644
--- a/src/main/java/org/bukkit/craftbukkit/Main.java
+++ b/src/main/java/org/bukkit/craftbukkit/Main.java
@@ -143,7 +143,7 @@ public class Main {
this.acceptsAll(Main.asList("noconsole"), "Disables the console");
- this.acceptsAll(Main.asList("v", "version"), "Show the CraftBukkit Version");
+ this.acceptsAll(Main.asList("v", "version"), "Show the " + io.papermc.paper.ServerBrandConstants.BRAND_NAME + " Version"); // Plazma - Fork-friendly Rebranding
this.acceptsAll(Main.asList("demo"), "Demo mode");
@@ -194,7 +194,7 @@ public class Main {
acceptsAll(asList("server-name"), "Name of the server")
.withRequiredArg()
.ofType(String.class)
- .defaultsTo("Unknown Server")
+ .defaultsTo("A " + io.papermc.paper.ServerBrandConstants.BRAND_NAME + " Server") // Plazma - Fork-friendly Rebranding
.describedAs("Name");
// Paper end
}
diff --git a/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java b/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java
index 5e7b833fc9f37bc370c76e5c43e6c9919d6d20af..ddbda1491e5873be1b54f0a555cc5c675f4597d4 100644
--- a/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java
+++ b/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java
@@ -491,7 +491,7 @@ public class CraftScheduler implements BukkitScheduler {
this.parsePending();
} else {
// this.debugTail = this.debugTail.setNext(new CraftAsyncDebugger(this.currentTick + CraftScheduler.RECENT_TICKS, task.getOwner(), task.getTaskClass())); // Paper
- task.getOwner().getLogger().log(Level.SEVERE, "Unexpected Async Task in the Sync Scheduler. Report this to Purpur"); // Paper // Purpur
+ task.getOwner().getLogger().log(Level.SEVERE, "Unexpected Async Task in the Sync Scheduler. Report this to " + io.papermc.paper.ServerBrandConstants.BRAND_NAME); // Paper // Purpur // Plazma - Fork-friendly Rebranding
// We don't need to parse pending
// (async tasks must live with race-conditions if they attempt to cancel between these few lines of code)
}
diff --git a/src/main/java/org/bukkit/craftbukkit/util/Versioning.java b/src/main/java/org/bukkit/craftbukkit/util/Versioning.java
index 99597258e8e88cd9e2c901c4ac3ff7faeeabee2b..e0414f59b7c5ef149d8e52ebf76dc3e46d9de4d3 100644
--- a/src/main/java/org/bukkit/craftbukkit/util/Versioning.java
+++ b/src/main/java/org/bukkit/craftbukkit/util/Versioning.java
@@ -11,7 +11,7 @@ public final class Versioning {
public static String getBukkitVersion() {
String result = "Unknown-Version";
- InputStream stream = Bukkit.class.getClassLoader().getResourceAsStream("META-INF/maven/org.purpurmc.purpur/purpur-api/pom.properties"); // Pufferfish // Purpur
+ InputStream stream = Bukkit.class.getClassLoader().getResourceAsStream(io.papermc.paper.ServerBrandConstants.RESOURCE_PATH); // Pufferfish // Purpur // Plazma - Fork-friendly Rebranding
Properties properties = new Properties();
if (stream != null) {
@@ -20,7 +20,7 @@ public final class Versioning {
result = properties.getProperty("version");
} catch (IOException ex) {
- Logger.getLogger(Versioning.class.getName()).log(Level.SEVERE, "Could not get Bukkit version!", ex);
+ Logger.getLogger(Versioning.class.getName()).log(Level.SEVERE, "Could not get " + io.papermc.paper.ServerBrandConstants.BRAND_NAME + " version!", ex); // Plazma - Fork-friendly Rebranding
}
}
diff --git a/src/main/java/org/spigotmc/WatchdogThread.java b/src/main/java/org/spigotmc/WatchdogThread.java
index f51cc3de3ca935ef90f7f0e9dd0506b856fc55f3..d889d964067058762fcffab9945fe586ce8d2a07 100644
--- a/src/main/java/org/spigotmc/WatchdogThread.java
+++ b/src/main/java/org/spigotmc/WatchdogThread.java
@@ -155,14 +155,14 @@ public class WatchdogThread extends ca.spottedleaf.moonrise.common.util.TickThre
if (isLongTimeout) {
// Paper end
log.log( Level.SEVERE, "------------------------------" );
- log.log( Level.SEVERE, "The server has stopped responding! This is (probably) not a Purpur bug." ); // Paper // Purpur
+ log.log( Level.SEVERE, "The server has stopped responding! This is (probably) not a " + io.papermc.paper.ServerBrandConstants.BRAND_NAME + " bug." ); // Paper // Purpur // Plazma - Fork-friendly Rebranding
log.log( Level.SEVERE, "If you see a plugin in the Server thread dump below, then please report it to that author" );
log.log( Level.SEVERE, "\t *Especially* if it looks like HTTP or MySQL operations are occurring" );
log.log( Level.SEVERE, "If you see a world save or edit, then it means you did far more than your server can handle at once" );
log.log( Level.SEVERE, "\t If this is the case, consider increasing timeout-time in spigot.yml but note that this will replace the crash with LARGE lag spikes" );
- log.log( Level.SEVERE, "If you are unsure or still think this is a Purpur bug, please report this to https://github.com/PurpurMC/Purpur/issues" ); // Purpur
+ log.log( Level.SEVERE, "If you are unsure or still think this is a " + io.papermc.paper.ServerBrandConstants.BRAND_NAME + " bug, please report this to " + io.papermc.paper.ServerBrandConstants.SUPPORT_PAGE ); // Purpur // Plazma - Fork-friendly Rebranding
log.log( Level.SEVERE, "Be sure to include ALL relevant console errors and Minecraft crash reports" );
- log.log( Level.SEVERE, "Purpur version: " + Bukkit.getServer().getVersion() ); // Purpur
+ log.log( Level.SEVERE, io.papermc.paper.ServerBrandConstants.BRAND_NAME + " version: " + Bukkit.getServer().getVersion() ); // Purpur // Plazma - Fork-friendly Rebranding
//
if ( net.minecraft.world.level.Level.lastPhysicsProblem != null )
{
@@ -184,12 +184,12 @@ public class WatchdogThread extends ca.spottedleaf.moonrise.common.util.TickThre
// Paper end
} else
{
- log.log(Level.SEVERE, "--- DO NOT REPORT THIS TO PURPUR - THIS IS NOT A BUG OR A CRASH - " + Bukkit.getServer().getVersion() + " ---"); // Purpur
+ log.log(Level.SEVERE, "--- DO NOT REPORT THIS TO " + io.papermc.paper.ServerBrandConstants.BRAND_NAME.toUpperCase() + " - THIS IS NOT A BUG OR A CRASH - " + Bukkit.getServer().getVersion() + " ---"); // Purpur // Plazma - Fork-friendly Rebranding
log.log(Level.SEVERE, "The server has not responded for " + (currentTime - lastTick) / 1000 + " seconds! Creating thread dump");
}
// Paper end - Different message for short timeout
log.log( Level.SEVERE, "------------------------------" );
- log.log( Level.SEVERE, "Server thread dump (Look for plugins here before reporting to Purpur!):" ); // Paper // Purpur
+ log.log( Level.SEVERE, "Server thread dump (Look for plugins here before reporting to " + io.papermc.paper.ServerBrandConstants.BRAND_NAME + "!):" ); // Paper // Purpur // Plazma - Fork-friendly Rebranding
ca.spottedleaf.moonrise.patches.chunk_system.scheduling.ChunkTaskScheduler.dumpAllChunkLoadInfo(MinecraftServer.getServer(), isLongTimeout); // Paper - rewrite chunk system
this.dumpTickingInfo(); // Paper - log detailed tick information
WatchdogThread.dumpThread( ManagementFactory.getThreadMXBean().getThreadInfo( MinecraftServer.getServer().serverThread.getId(), Integer.MAX_VALUE ), log );
@@ -205,7 +205,7 @@ public class WatchdogThread extends ca.spottedleaf.moonrise.common.util.TickThre
WatchdogThread.dumpThread( thread, log );
}
} else {
- log.log(Level.SEVERE, "--- DO NOT REPORT THIS TO PURPUR - THIS IS NOT A BUG OR A CRASH ---"); // Purpur
+ log.log(Level.SEVERE, "--- DO NOT REPORT THIS TO " + io.papermc.paper.ServerBrandConstants.BRAND_NAME + " - THIS IS NOT A BUG OR A CRASH ---"); // Purpur // Plazma - Fork-friendly Rebranding
}
log.log( Level.SEVERE, "------------------------------" );

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,140 +0,0 @@
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 b638690d5cd2360444e6c525f97f634d8e1dc60e..35d5bd2f7dba1aa74547b6ae994bc84a56911bf2 100644
--- a/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java
+++ b/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java
@@ -6,6 +6,7 @@ import it.unimi.dsi.fastutil.objects.Reference2ObjectMap;
import it.unimi.dsi.fastutil.objects.Reference2ObjectOpenHashMap;
import net.minecraft.Util;
import org.jetbrains.annotations.NotNull;
+import org.spongepowered.configurate.objectmapping.meta.PostProcess;
import org.spongepowered.configurate.objectmapping.meta.Setting;
import java.util.List;
@@ -27,4 +28,55 @@ public class GlobalConfiguration extends ConfigurationPart {
@Setting(Configuration.VERSION_FIELD)
int version = VERSION;
+ public Command command;
+ public class Command extends ConfigurationPart {
+
+
+ }
+
+ public Player player;
+ public class Player extends ConfigurationPart {
+
+
+ }
+
+ @Setting("world-generation")
+ public WorldGeneration worldgen;
+ public class WorldGeneration extends ConfigurationPart {
+
+
+ }
+
+ public Entity entity;
+ public class Entity extends ConfigurationPart {
+
+
+ @PostProcess
+ public void post() {
+ }
+
+ }
+
+ public World world;
+ public class World extends ConfigurationPart {
+
+
+ @PostProcess
+ public void post() {
+ }
+
+ }
+
+ public Structure structure;
+ public class Structure extends ConfigurationPart {
+
+
+ }
+
+ public Miscellaneous misc;
+ public class Miscellaneous extends ConfigurationPart {
+
+
+ }
+
}
diff --git a/src/main/java/org/plazmamc/plazma/configurations/RemovedConfigurations.java b/src/main/java/org/plazmamc/plazma/configurations/RemovedConfigurations.java
index 25c0f5d28107b45677aa7b19bc0d5238512d9826..ac0f038de0ce5cf6df0b730af69d3229c3119eff 100644
--- a/src/main/java/org/plazmamc/plazma/configurations/RemovedConfigurations.java
+++ b/src/main/java/org/plazmamc/plazma/configurations/RemovedConfigurations.java
@@ -2,9 +2,12 @@ package org.plazmamc.plazma.configurations;
import org.spongepowered.configurate.NodePath;
+import static org.spongepowered.configurate.NodePath.path;
+
interface RemovedConfigurations {
NodePath[] WORLD_PATHS = {
+ path("structure", "nether-portal")
};
NodePath[] GLOBAL_PATHS = {
diff --git a/src/main/java/org/plazmamc/plazma/configurations/WorldConfigurations.java b/src/main/java/org/plazmamc/plazma/configurations/WorldConfigurations.java
index f2d3d51cb4b8fc7a5fd6db1a63289fff6d32a1ea..c222d58520b655b54b8975ec226a4ba948691cd4 100644
--- a/src/main/java/org/plazmamc/plazma/configurations/WorldConfigurations.java
+++ b/src/main/java/org/plazmamc/plazma/configurations/WorldConfigurations.java
@@ -19,4 +19,44 @@ public class WorldConfigurations extends ConfigurationPart {
@Setting(Configuration.VERSION_FIELD)
int version = VERSION;
+ public Miscellaneous misc;
+ public class Miscellaneous extends ConfigurationPart {
+
+
+ }
+
+ public Entity entity;
+ public class Entity extends ConfigurationPart {
+
+ public Phantom phantom;
+ public class Phantom extends ConfigurationPart {
+
+
+ }
+
+ }
+
+ public Structure structure;
+ public class Structure extends ConfigurationPart {
+
+ public NetherPortal netherPortal;
+ public class NetherPortal extends ConfigurationPart {
+
+
+ }
+
+ }
+
+ public Block block;
+ public class Block extends ConfigurationPart {
+
+
+ }
+
+ public Item item;
+ public class Item extends ConfigurationPart {
+
+
+ }
+
}

View File

@@ -1,40 +0,0 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: AlphaKR93 <dev@alpha93.kr>
Date: Fri, 3 May 2024 19:50:32 +0900
Subject: [PATCH] Warn on startup
diff --git a/src/main/java/net/minecraft/server/Main.java b/src/main/java/net/minecraft/server/Main.java
index 8f77566bef4b992013e3b65068cabe7ee1921951..65fd553887ed9eb9c26e036c8009179a7baf5380 100644
--- a/src/main/java/net/minecraft/server/Main.java
+++ b/src/main/java/net/minecraft/server/Main.java
@@ -113,6 +113,18 @@ public class Main {
if (io.papermc.paper.ServerBrandConstants.ASCII_LOGO != null)
System.out.println(io.papermc.paper.ServerBrandConstants.ASCII_LOGO);
// Plazma end - Fork-friendly Rebranding
+ // Plazma start - Warn on startup
+ if (!org.plazmamc.plazma.Options.NO_WARN) {
+ LOGGER.warn("Warning! " + io.papermc.paper.ServerBrandConstants.BRAND_NAME + " may cause unexpected problems, so be sure to test it thoroughly before using it on a public server.");
+ if (io.papermc.paper.ServerBuildInfo.buildInfo().asString(io.papermc.paper.ServerBuildInfo.StringRepresentation.VERSION_FULL).contains("DEV")) {
+ LOGGER.error("*********************** CAUTION ***********************");
+ LOGGER.error("This version is a development version of {}.", io.papermc.paper.ServerBrandConstants.BRAND_NAME);
+ LOGGER.error("Nobody knows what kind of problem you're going to have, and there's always the possibility of unexpected problems.");
+ LOGGER.error("Never use this version on a public server, and after you've tested it enough before using it!");
+ LOGGER.error("*******************************************************");
+ }
+ }
+ // Plazma end
Path path = (Path) optionset.valueOf("pidFile"); // CraftBukkit
diff --git a/src/main/java/org/plazmamc/plazma/Options.java b/src/main/java/org/plazmamc/plazma/Options.java
index ca11bd22a65c8b9f4fffb1832ada8c519ab75b98..5d41bd4d4b86ca0c7c03d3ac6e75b3f1f1abe73b 100644
--- a/src/main/java/org/plazmamc/plazma/Options.java
+++ b/src/main/java/org/plazmamc/plazma/Options.java
@@ -6,5 +6,6 @@ import static java.lang.System.getProperty;
public interface Options {
boolean NO_OPTIMIZE = getBoolean("Plazma.disableConfigOptimization");
+ boolean NO_WARN = getBoolean("Plazma.iKnowWhatIAmDoing");
}

View File

@@ -1,31 +0,0 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: AlphaKR93 <dev@alpha93.kr>
Date: Sun, 5 Nov 2023 10:13:14 +0900
Subject: [PATCH] Always agree EULA on development mode
diff --git a/build.gradle.kts b/build.gradle.kts
index 41005f58fdd526907972185e728bbe1fa97171e9..746ad8087192931400256c8a1ef71e966eaf6b1a 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -164,7 +164,7 @@ fun TaskContainer.registerRunTask(
languageVersion.set(JavaLanguageVersion.of(21))
vendor.set(JvmVendorSpec.JETBRAINS)
})
- jvmArgs("-XX:+AllowEnhancedClassRedefinition", "-XX:+AllowRedefinitionToAddDeleteMethods")
+ jvmArgs("-DPlazma.DevelopmentEnvironment", "-XX:+AllowEnhancedClassRedefinition", "-XX:+AllowRedefinitionToAddDeleteMethods") // Plazma - Always agree EULA on development mode
if (rootProject.childProjects["test-plugin"] != null) {
val testPluginJar = rootProject.project(":test-plugin").tasks.jar.flatMap { it.archiveFile }
diff --git a/src/main/java/net/minecraft/server/Main.java b/src/main/java/net/minecraft/server/Main.java
index 65fd553887ed9eb9c26e036c8009179a7baf5380..694b126df2c3d1d6fa40ee9731c28886caf1a4fc 100644
--- a/src/main/java/net/minecraft/server/Main.java
+++ b/src/main/java/net/minecraft/server/Main.java
@@ -179,6 +179,7 @@ public class Main {
// Spigot Start
boolean eulaAgreed = Boolean.getBoolean( "com.mojang.eula.agree" );
+ eulaAgreed = eulaAgreed || Boolean.getBoolean("Paper.pushPaperAssetsRoot"); // Plazma - Always agree EULA on development mode
if ( eulaAgreed )
{
System.err.println( "You have used the Spigot command line EULA agreement flag." );

View File

@@ -1,98 +0,0 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: AlphaKR93 <dev@alpha93.kr>
Date: Sun, 5 Nov 2023 10:26:26 +0900
Subject: [PATCH] Add more metrics
diff --git a/src/main/java/com/destroystokyo/paper/Metrics.java b/src/main/java/com/destroystokyo/paper/Metrics.java
index 8d5a52c5762c3d9b44dcdf00ae312e0bdc01fa1f..48d33d4131af90eee35c9553898a2ac7ec5e2b7e 100644
--- a/src/main/java/com/destroystokyo/paper/Metrics.java
+++ b/src/main/java/com/destroystokyo/paper/Metrics.java
@@ -636,38 +636,59 @@ public class Metrics {
return map;
}));
- metrics.addCustomChart(new Metrics.DrilldownPie("legacy_plugins", () -> {
- Map<String, Map<String, Integer>> map = new HashMap<>();
+ // Plazma start - Add more metrics information
+ metrics.addCustomChart(new DrilldownPie("datapacks", () -> {
+ int datapacks = Bukkit.getDatapackManager().getEnabledPacks().size();
+ Map<String, Integer> entry = Collections.singletonMap(String.valueOf(datapacks), 1);
+
+ if (datapacks == 0) return Collections.singletonMap("0", entry);
+ else if (datapacks <= 5) return Collections.singletonMap("1-5", entry);
+ else if (datapacks <= 10) return Collections.singletonMap("6-10", entry);
+ else if (datapacks <= 25) return Collections.singletonMap("11-25", entry);
+ else if (datapacks <= 50) return Collections.singletonMap("26-50", entry);
+ else if (datapacks <= 100) return Collections.singletonMap("51+", entry);
+ else return Collections.singletonMap("101+ \uD83D\uDE2E", entry);
+ }));
- // count legacy plugins
- int legacy = 0;
- for (Plugin plugin : Bukkit.getPluginManager().getPlugins()) {
- if (CraftMagicNumbers.isLegacy(plugin.getDescription())) {
- legacy++;
- }
- }
+ metrics.addCustomChart(new DrilldownPie("plugins", () -> {
+ int pluginCount = Arrays.stream(Bukkit.getPluginManager().getPlugins()).filter(Plugin::isEnabled).toList().size();
+ Map<String, Integer> entry = Collections.singletonMap(String.valueOf(pluginCount), 1);
+
+ if (pluginCount == 0) return Collections.singletonMap("0", entry);
+ else if (pluginCount <= 5) return Collections.singletonMap("1-5", entry);
+ else if (pluginCount <= 10) return Collections.singletonMap("6-10", entry);
+ else if (pluginCount <= 25) return Collections.singletonMap("11-25", entry);
+ else if (pluginCount <= 50) return Collections.singletonMap("26-50", entry);
+ else if (pluginCount <= 100) return Collections.singletonMap("51-100", entry);
+ else return Collections.singletonMap("101+ \uD83D\uDE2E", entry);
+ }));
- // insert real value as lower dimension
- Map<String, Integer> entry = new HashMap<>();
- entry.put(String.valueOf(legacy), 1);
-
- // create buckets as higher dimension
- if (legacy == 0) {
- map.put("0 \uD83D\uDE0E", entry); // :sunglasses:
- } else if (legacy <= 5) {
- map.put("1-5", entry);
- } else if (legacy <= 10) {
- map.put("6-10", entry);
- } else if (legacy <= 25) {
- map.put("11-25", entry);
- } else if (legacy <= 50) {
- map.put("26-50", entry);
- } else {
- map.put("50+ \uD83D\uDE2D", entry); // :cry:
- }
+ metrics.addCustomChart(new DrilldownPie("disabled_plugins", () -> {
+ int disabled = Arrays.stream(Bukkit.getPluginManager().getPlugins()).filter(it -> !it.isEnabled()).toList().size();
+ Map<String, Integer> entry = Collections.singletonMap(String.valueOf(disabled), 1);
+
+ if (disabled == 0) return Collections.singletonMap("0 \uD83D\uDE0E", entry); // :sunglasses:
+ else if (disabled <= 5) return Collections.singletonMap("1-5", entry);
+ else if (disabled <= 10) return Collections.singletonMap("6-10", entry);
+ else if (disabled <= 25) return Collections.singletonMap("11-25", entry);
+ else if (disabled <= 50) return Collections.singletonMap("26-50", entry);
+ else if (disabled <= 100) return Collections.singletonMap("51-100 \uD83D\uDE2D", entry); // :cry:
+ else return Collections.singletonMap("101+ \uD83D\uDC80", entry); // :skull:
+ }));
- return map;
+ metrics.addCustomChart(new Metrics.DrilldownPie("legacy_plugins", () -> {
+ int legacy = (int) Arrays.stream(Bukkit.getPluginManager().getPlugins()).filter(p -> CraftMagicNumbers.isLegacy(p.getDescription())).count(); // Plazma
+ Map<String, Integer> entry = Collections.singletonMap(String.valueOf(legacy), 1);
+
+ if (legacy == 0) return Collections.singletonMap("0 \uD83D\uDE0E", entry); // :sunglasses:
+ else if (legacy <= 5) return Collections.singletonMap("1-5", entry);
+ else if (legacy <= 10) return Collections.singletonMap("6-10", entry);
+ else if (legacy <= 25) return Collections.singletonMap("11-25", entry);
+ else if (legacy <= 50) return Collections.singletonMap("26-50", entry);
+ else if (legacy <= 100) return Collections.singletonMap("51-100 \uD83D\uDE2D", entry); // :cry:
+ else return Collections.singletonMap("101+ \uD83D\uDC80", entry); // :skull:
}));
+ // Plazma end - Add more metrics information
}
}

View File

@@ -1,91 +0,0 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: AlphaKR93 <dev@alpha93.kr>
Date: Sun, 5 Nov 2023 10:40:49 +0900
Subject: [PATCH] Tweak console logging
diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
index d4a9b187b01c63342d9b05b5c29bb1d199deed6c..38752c9ba1726e3c38dd758287a920bc476ef88a 100644
--- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
+++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
@@ -194,16 +194,6 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
DedicatedServer.LOGGER.warn("To start the server with more ram, launch it as \"java -Xmx1024M -Xms1024M -jar minecraft_server.jar\"");
}
- // Paper start - detect running as root
- if (io.papermc.paper.util.ServerEnvironment.userIsRootOrAdmin()) {
- 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 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("****************************");
- }
- // Paper end - detect running as root
-
DedicatedServer.LOGGER.info("Loading properties");
DedicatedServerProperties dedicatedserverproperties = this.settings.getProperties();
@@ -235,6 +225,15 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
this.plazmaConfigurations.initializeGlobalConfiguration(this.registryAccess()); // Plazma - Configurable Plazma
this.plazmaConfigurations.initializeWorldDefaultsConfiguration(this.registryAccess()); // Plazma - Configurable Plazma
// Paper end - initialize global and world-defaults configuration
+ // Paper start - detect running as root // Plazma - Tweak console logging (moved down)
+ if (io.papermc.paper.util.ServerEnvironment.userIsRootOrAdmin()) {
+ 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 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("****************************");
+ }
+ // Paper end - detect running as root
this.server.spark.enableEarlyIfRequested(); // Paper - spark
// Paper start - fix converting txt to json file; convert old users earlier after PlayerList creation but before file load/save
if (this.convertOldUsers()) {
@@ -335,6 +334,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.");
@@ -348,7 +348,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
DedicatedServer.LOGGER.warn("While this makes the game possible to play without internet access, it also opens up the ability for hackers to connect with any username they choose.");
}
// Spigot end
- DedicatedServer.LOGGER.warn("To change this, set \"online-mode\" to \"true\" in the server.properties file.");
+ DedicatedServer.LOGGER.warn("To change this, set \"online-mode\" to \"true\" in the server.properties file or set \"console-logs.offline-warnings\" to \"false\" in the config/plazma-global.yml file."); // Plazma - Tweak console logging
}
diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java
index 16999fa20c3621e016d1b0fadfb76f2fe03a2a69..8d7d050f12df83931bbb32f1832d7fcbc06317da 100644
--- a/src/main/java/net/minecraft/server/players/PlayerList.java
+++ b/src/main/java/net/minecraft/server/players/PlayerList.java
@@ -1426,6 +1426,7 @@ public abstract class PlayerList {
}
public boolean verifyChatTrusted(PlayerChatMessage message) { // Paper - private -> public
+ if (!org.plazmamc.plazma.configurations.GlobalConfiguration.get().consoleLogs.notSecurePrefix) return true; // Plazma - Tweak console logging
return message.hasSignature() && !message.hasExpiredServer(Instant.now());
}
diff --git a/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java b/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java
index 35d5bd2f7dba1aa74547b6ae994bc84a56911bf2..e153370e617e63a8e497036c93ea55dfe851bc6e 100644
--- a/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java
+++ b/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java
@@ -79,4 +79,14 @@ public class GlobalConfiguration extends ConfigurationPart {
}
+
+ public ConsoleLogs consoleLogs;
+ public class ConsoleLogs extends ConfigurationPart {
+
+ public boolean offlineWarnings = true;
+ public boolean rootUserWarnings = true;
+ public boolean notSecurePrefix = true;
+
+ }
+
}

View File

@@ -5,10 +5,10 @@ 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
index 0a173040c56fea6d8f83998b7c66aa8daaf648f2..16b98cad477d7af2d9534cc189aae43a5adc8d58 100644
index 67ff60909dee395d42619c310bafc381b9bfce5d..42fc51827240f9f0091e006fa84a17c2fb51dddd 100644
--- a/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java
+++ b/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java
@@ -160,6 +160,18 @@ public class Allay extends PathfinderMob implements InventoryCarrier, VibrationS
@@ -162,6 +162,18 @@ public class Allay extends PathfinderMob implements InventoryCarrier, VibrationS
this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.allayMaxHealth);
this.getAttribute(Attributes.SCALE).setBaseValue(this.level().purpurConfig.allayScale);
}
@@ -24,14 +24,14 @@ index 0a173040c56fea6d8f83998b7c66aa8daaf648f2..16b98cad477d7af2d9534cc189aae43a
+ return level().purpurConfig.allayAlwaysDropExp;
+ }
+ // Plazma end - Add missing purpur configuration options
// Purpur end
// Purpur end - Configurable entity base attributes
@Override
protected Brain.Provider<Allay> brainProvider() {
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 d2f0b14a0014802605b601e62d0eebddf06d3737..459a45f82c42b346a66bb1954e155a0970dcc30f 100644
index 36f8bb5cf25566784e11988c91e1c7409f1ac5c8..d364866de67341e4a781b4f2bf3e7c187ee2bc8c 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
@@ -96,6 +96,18 @@ public class Camel extends AbstractHorse {
@@ -99,6 +99,18 @@ public class Camel extends AbstractHorse {
public int getPurpurBreedTime() {
return this.level().purpurConfig.camelBreedingTicks;
}
@@ -47,11 +47,11 @@ index d2f0b14a0014802605b601e62d0eebddf06d3737..459a45f82c42b346a66bb1954e155a09
+ return level().purpurConfig.camelAlwaysDropExp;
+ }
+ // Plazma end - Add missing purpur configuration options
// Purpur end
// Purpur end - Make entity breeding times configurable
@Override
public void addAdditionalSaveData(CompoundTag 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
index 02581f47d1ca58c2b8abffc478adf48343585c8b..bd04af6311ca64d81c8829e731ac39a6486ee789 100644
index d09aa48e20c9a6e0d465b93e3759556638041394..70772863011ce270bceaf679ea3776fb36d4f0b9 100644
--- a/src/main/java/net/minecraft/world/entity/animal/frog/Frog.java
+++ b/src/main/java/net/minecraft/world/entity/animal/frog/Frog.java
@@ -163,6 +163,23 @@ public class Frog extends Animal implements VariantHolder<Holder<FrogVariant>> {
@@ -75,16 +75,16 @@ index 02581f47d1ca58c2b8abffc478adf48343585c8b..bd04af6311ca64d81c8829e731ac39a6
+ this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(level().purpurConfig.frogMaxHealth);
+ }
+ // Plazma end - Add missing purpur configuration options
// Purpur end
// Purpur end - Ridables
public int getPurpurBreedTime() {
// Purpur start - Make entity breeding times configurable
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 7e92e8c4fec36c8838604f17cf366cc80e82b19b..1b0e80ae62b5c5d4e1fcac71b90f83f12fe4878a 100644
index 33429a9afeefce9238969b2894d0a9c033baca51..fee263bd88c19188f6ec8017893dfc12bdd15737 100644
--- a/src/main/java/net/minecraft/world/entity/animal/frog/Tadpole.java
+++ b/src/main/java/net/minecraft/world/entity/animal/frog/Tadpole.java
@@ -93,6 +93,23 @@ public class Tadpole extends AbstractFish {
protected void registerGoals() {
this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur
this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - Ridables
}
+
+ // Plazma start - Add missing purpur configuration options
@@ -103,14 +103,14 @@ index 7e92e8c4fec36c8838604f17cf366cc80e82b19b..1b0e80ae62b5c5d4e1fcac71b90f83f1
+ this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(level().purpurConfig.tadpoleMaxHealth);
+ }
+ // Plazma end - Add missing purpur configuration options
// Purpur end
// Purpur end - Ridables
@Override
diff --git a/src/main/java/net/minecraft/world/entity/animal/sniffer/Sniffer.java b/src/main/java/net/minecraft/world/entity/animal/sniffer/Sniffer.java
index 6061cd4fc38fef0895571ab767e495d5755f9fc8..0bc7856065fdc599890f18f5a4e2f6c2b3d94ba7 100644
index 3fa391b638062196675d102b8731a96a51df8e15..86988932dc79e9ca33998044995187709ad5373b 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
@@ -116,6 +116,18 @@ public class Sniffer extends Animal {
@@ -119,6 +119,18 @@ public class Sniffer extends Animal {
public int getPurpurBreedTime() {
return this.level().purpurConfig.snifferBreedingTicks;
}
@@ -126,16 +126,16 @@ index 6061cd4fc38fef0895571ab767e495d5755f9fc8..0bc7856065fdc599890f18f5a4e2f6c2
+ return level().purpurConfig.snifferAlwaysDropExp;
+ }
+ // Plazma end - Add missing purpur configuration options
// Purpur end
// Purpur end - Make entity breeding times configurable
@Override
protected void defineSynchedData(SynchedEntityData.Builder builder) {
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 5a62fe9c4f0cee9e8b4a48564f76afec609335b1..79b090030b716029cc4cfc8bf9d81af0b2202313 100644
index 74011f1ab7e48490109ad93d658bba216eef9e80..5313f4c1ca76b120c0eb6beddc993b562f79344e 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
@@ -151,6 +151,23 @@ public class Warden extends Monster implements VibrationSystem {
this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur
this.targetSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur
this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - Ridables
this.targetSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - Ridables
}
+
+ // Plazma start - Add missing purpur configuration options
@@ -154,7 +154,7 @@ index 5a62fe9c4f0cee9e8b4a48564f76afec609335b1..79b090030b716029cc4cfc8bf9d81af0
+ this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(level().purpurConfig.wardenMaxHealth);
+ }
+ // Plazma end - Add missing purpur configuration options
// Purpur end
// Purpur end - Ridables
@Override
@@ -305,7 +322,7 @@ public class Warden extends Monster implements VibrationSystem {
@@ -189,7 +189,7 @@ index 1f4cc08e84a23213bb9786ea09ad77caeec2d336..f888f1dd2e3c228b0a370fe920b63d54
@Override
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
index 097f3c34d244b89e7dd9f8b6f2a3d8fdc67b36dc..3f4c94aada930e55dfe6a2dd6f3bfb51b2276b0d 100644
index f29059798c9dc642187b4939dd917ee15cbe120d..7a482099a69759659038e10632e7dd4626c187a1 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
@@ -331,6 +331,7 @@ public class PurpurConfig {
@@ -209,10 +209,10 @@ index 097f3c34d244b89e7dd9f8b6f2a3d8fdc67b36dc..3f4c94aada930e55dfe6a2dd6f3bfb51
org.bukkit.event.inventory.InventoryType.ENDER_CHEST.setDefaultSize(enderChestSixRows ? 54 : 27);
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
index e55993e318b7f7292e22c4539bc2fd1447f67fa8..b67b6147e9175041539b01357dd8b1e94cfd6841 100644
index 43ad38dadfe14b3dd0565c536b276eb3f9dbd813..474bab426175d8dece524faeffd8977a6e1bb074 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -1135,7 +1135,13 @@ public class PurpurWorldConfig {
@@ -1144,7 +1144,13 @@ public class PurpurWorldConfig {
public boolean allayControllable = true;
public double allayMaxHealth = 20.0D;
public double allayScale = 1.0D;
@@ -226,7 +226,7 @@ index e55993e318b7f7292e22c4539bc2fd1447f67fa8..b67b6147e9175041539b01357dd8b1e9
allayRidable = getBoolean("mobs.allay.ridable", allayRidable);
allayRidableInWater = getBoolean("mobs.allay.ridable-in-water", allayRidableInWater);
allayControllable = getBoolean("mobs.allay.controllable", allayControllable);
@@ -1290,7 +1296,13 @@ public class PurpurWorldConfig {
@@ -1299,7 +1305,13 @@ public class PurpurWorldConfig {
public double camelMovementSpeedMin = 0.09D;
public double camelMovementSpeedMax = 0.09D;
public int camelBreedingTicks = 6000;
@@ -240,7 +240,7 @@ index e55993e318b7f7292e22c4539bc2fd1447f67fa8..b67b6147e9175041539b01357dd8b1e9
camelRidableInWater = getBoolean("mobs.camel.ridable-in-water", camelRidableInWater);
camelMaxHealthMin = getDouble("mobs.camel.attributes.max_health.min", camelMaxHealthMin);
camelMaxHealthMax = getDouble("mobs.camel.attributes.max_health.max", camelMaxHealthMax);
@@ -1755,7 +1767,15 @@ public class PurpurWorldConfig {
@@ -1764,7 +1776,15 @@ public class PurpurWorldConfig {
public boolean frogControllable = true;
public float frogRidableJumpHeight = 0.65F;
public int frogBreedingTicks = 6000;
@@ -256,7 +256,7 @@ index e55993e318b7f7292e22c4539bc2fd1447f67fa8..b67b6147e9175041539b01357dd8b1e9
frogRidable = getBoolean("mobs.frog.ridable", frogRidable);
frogRidableInWater = getBoolean("mobs.frog.ridable-in-water", frogRidableInWater);
frogControllable = getBoolean("mobs.frog.controllable", frogControllable);
@@ -2767,7 +2787,13 @@ public class PurpurWorldConfig {
@@ -2776,7 +2796,13 @@ public class PurpurWorldConfig {
public double snifferMaxHealth = 14.0D;
public double snifferScale = 1.0D;
public int snifferBreedingTicks = 6000;
@@ -270,7 +270,7 @@ index e55993e318b7f7292e22c4539bc2fd1447f67fa8..b67b6147e9175041539b01357dd8b1e9
snifferRidable = getBoolean("mobs.sniffer.ridable", snifferRidable);
snifferRidableInWater = getBoolean("mobs.sniffer.ridable-in-water", snifferRidableInWater);
snifferControllable = getBoolean("mobs.sniffer.controllable", snifferControllable);
@@ -2875,7 +2901,15 @@ public class PurpurWorldConfig {
@@ -2884,7 +2910,15 @@ public class PurpurWorldConfig {
public boolean tadpoleRidable = false;
public boolean tadpoleRidableInWater = true;
public boolean tadpoleControllable = true;
@@ -286,7 +286,7 @@ index e55993e318b7f7292e22c4539bc2fd1447f67fa8..b67b6147e9175041539b01357dd8b1e9
tadpoleRidable = getBoolean("mobs.tadpole.ridable", tadpoleRidable);
tadpoleRidableInWater = getBoolean("mobs.tadpole.ridable-in-water", tadpoleRidableInWater);
tadpoleControllable = getBoolean("mobs.tadpole.controllable", tadpoleControllable);
@@ -3107,7 +3141,15 @@ public class PurpurWorldConfig {
@@ -3116,7 +3150,15 @@ public class PurpurWorldConfig {
public boolean wardenRidable = false;
public boolean wardenRidableInWater = true;
public boolean wardenControllable = true;

View File

@@ -1,33 +0,0 @@
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 aa171a1afb9800e6ec84f6b4f1b28e44177752f7..eaf53f5f4c33ca7a7a988e7bd04b7033e16f9529 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -2309,8 +2309,9 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
public void playerTouch(Player player) {}
public void push(Entity entity) {
+ if (entity.noPhysics || this.noPhysics) return; // Plazma - Swaps the predicate order of collision
if (!this.isPassengerOfSameVehicle(entity)) {
- if (!entity.noPhysics && !this.noPhysics) {
+ //if (!entity.noPhysics && !this.noPhysics) { // Plazma - Swaps the predicate order of collision
if (this.level.paperConfig().collisions.onlyPlayersCollide && !(entity instanceof ServerPlayer || this instanceof ServerPlayer)) return; // Paper - Collision option for requiring a player participant
double d0 = entity.getX() - this.getX();
double d1 = entity.getZ() - this.getZ();
@@ -2338,8 +2339,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
entity.push(d0, 0.0D, d1);
}
}
-
- }
+ //} // Plazma - Swaps the predicate order of collision
}
}

View File

@@ -1,30 +0,0 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: AlphaKR93 <dev@alpha93.kr>
Date: Sun, 5 Nov 2023 12:07:06 +0900
Subject: [PATCH] Do not load chunks to spawn phantom
diff --git a/src/main/java/net/minecraft/world/level/levelgen/PhantomSpawner.java b/src/main/java/net/minecraft/world/level/levelgen/PhantomSpawner.java
index 27eb9a365006884c85603dc6d9dd8eee009c98b3..958a48d05aba8e500c7b19a466dcca6fea8a8bcc 100644
--- a/src/main/java/net/minecraft/world/level/levelgen/PhantomSpawner.java
+++ b/src/main/java/net/minecraft/world/level/levelgen/PhantomSpawner.java
@@ -70,6 +70,7 @@ public class PhantomSpawner implements CustomSpawner {
if (randomsource.nextInt(j) >= world.paperConfig().entities.behavior.playerInsomniaStartTicks) { // Paper - Ability to control player's insomnia and phantoms
BlockPos blockposition1 = blockposition.above(20 + randomsource.nextInt(15)).east(-10 + randomsource.nextInt(21)).south(-10 + randomsource.nextInt(21));
+ if (!world.plazmaConfig().entity.phantom.loadChunksToSpawn && !world.hasChunkAt(blockposition1)) continue; // Plazma - Do not load chunks to spawn phantom
BlockState iblockdata = world.getBlockState(blockposition1);
FluidState fluid = world.getFluidState(blockposition1);
diff --git a/src/main/java/org/plazmamc/plazma/configurations/WorldConfigurations.java b/src/main/java/org/plazmamc/plazma/configurations/WorldConfigurations.java
index c703237d46b114227cf0d5cdff2e033839bc5f57..a976e2b960a5f3b7ecf6e42afcb1dd3bd140b8bd 100644
--- a/src/main/java/org/plazmamc/plazma/configurations/WorldConfigurations.java
+++ b/src/main/java/org/plazmamc/plazma/configurations/WorldConfigurations.java
@@ -31,6 +31,7 @@ public class WorldConfigurations extends ConfigurationPart {
public Phantom phantom;
public class Phantom extends ConfigurationPart {
+ public boolean loadChunksToSpawn = !OPTIMIZE;
}

View File

@@ -1,37 +0,0 @@
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 9ae16e24013ea5664d4ea6d52ed7dd188404890f..91f161d27a45174b6f3c31440eea46ff81185203 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
@@ -1695,7 +1695,13 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
}
}
+ // Plazma start - Add option to bypass moved to quickly check
private boolean shouldCheckPlayerMovement(boolean elytra) {
+ return (!this.player.getBukkitEntity().hasPermission("plazma.bypass-moved-to-quickly-check") || !(org.plazmamc.plazma.configurations.GlobalConfiguration.get().player.checkSpectatorMovedToQuickly && this.player.isSpectator())) && shouldCheckPlayerMovement0(elytra);
+ }
+
+ private boolean shouldCheckPlayerMovement0(boolean elytra) {
+ // Plazma end - Add option to bypass moved to quickly check
if (this.isSingleplayerOwner()) {
return false;
} else if (this.player.isChangingDimension()) {
diff --git a/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java b/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java
index 11d386d3e134b1994302c4e026b6a11c46336522..93d746b0e7f263b36a66864834445cb41e5e2cee 100644
--- a/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java
+++ b/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java
@@ -37,6 +37,7 @@ public class GlobalConfiguration extends ConfigurationPart {
public Player player;
public class Player extends ConfigurationPart {
+ public boolean checkSpectatorMovedToQuickly = !OPTIMIZE;
}

View File

@@ -1,36 +0,0 @@
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 7ca12a1128661ea36e2e33cda204c7d2df55a21c..331a75fee26e3fe2532e8661db282a0c207ddf9b 100644
--- a/src/main/java/net/minecraft/world/entity/Mob.java
+++ b/src/main/java/net/minecraft/world/entity/Mob.java
@@ -951,10 +951,11 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab
ProfilerFiller gameprofilerfiller = Profiler.get();
gameprofilerfiller.push("sensing");
- this.sensing.tick();
+ //this.sensing.tick(); // Plazma - moved down
gameprofilerfiller.pop();
int i = this.tickCount + this.getId();
+ if (i % this.level().plazmaConfig().entity.sensorTick == 0) this.sensing.tick(); // Plazma - Configurable entity sensor tick
if (i % 2 != 0 && this.tickCount > 1) {
gameprofilerfiller.push("targetSelector");
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 a976e2b960a5f3b7ecf6e42afcb1dd3bd140b8bd..9e408d6c1826d36a935b3e382e8eb0283f3d1580 100644
--- a/src/main/java/org/plazmamc/plazma/configurations/WorldConfigurations.java
+++ b/src/main/java/org/plazmamc/plazma/configurations/WorldConfigurations.java
@@ -28,6 +28,8 @@ public class WorldConfigurations extends ConfigurationPart {
public Entity entity;
public class Entity extends ConfigurationPart {
+ public int sensorTick = 1;
+
public Phantom phantom;
public class Phantom extends ConfigurationPart {

View File

@@ -1,18 +0,0 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: AlphaKR93 <dev@alpha93.kr>
Date: Wed, 10 Jan 2024 18:11:03 +0900
Subject: [PATCH] Improve SwingTime ticking
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
index f4604e543a980d6aeb485252da5a4e755aa12bfa..f2753cf51634479e501c1a3e7931d6d9882bc801 100644
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
@@ -2821,6 +2821,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
}
protected void updateSwingTime() {
+ if (!this.swinging && this.swingTime == 0) return; // Plazma - Improve SwingTime ticking
int i = this.getCurrentSwingDuration();
if (this.swinging) {

View File

@@ -1,19 +0,0 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: AlphaKR93 <dev@alpha93.kr>
Date: Mon, 6 May 2024 12:25:59 +0900
Subject: [PATCH] Use Akair's flag when running the test server with gradle
diff --git a/build.gradle.kts b/build.gradle.kts
index 746ad8087192931400256c8a1ef71e966eaf6b1a..14695f421c3751a1e75567aecf3685d901790011 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -164,7 +164,7 @@ fun TaskContainer.registerRunTask(
languageVersion.set(JavaLanguageVersion.of(21))
vendor.set(JvmVendorSpec.JETBRAINS)
})
- jvmArgs("-DPlazma.DevelopmentEnvironment", "-XX:+AllowEnhancedClassRedefinition", "-XX:+AllowRedefinitionToAddDeleteMethods") // Plazma - Always agree EULA on development mode
+ jvmArgs("-DPlazma.DevelopmentEnvironment", "--add-modules=jdk.incubator.vector", "-XX:+AllowEnhancedClassRedefinition", "-XX:+AllowRedefinitionToAddDeleteMethods", "-XX:+UseG1GC", "-XX:+ParallelRefProcEnabled", "-XX:MaxGCPauseMillis=200", "-XX:+UnlockExperimentalVMOptions", "-XX:+DisableExplicitGC", "-XX:+AlwaysPreTouch", "-XX:G1HeapWastePercent=5", "-XX:G1MixedGCCountTarget=4", "-XX:InitiatingHeapOccupancyPercent=15", "-XX:G1MixedGCLiveThresholdPercent=90", "-XX:G1RSetUpdatingPauseTimePercent=5", "-XX:SurvivorRatio=32", "-XX:+PerfDisableSharedMem", "-XX:MaxTenuringThreshold=1", "-Dusing.aikars.flags=https://mcflags.emc.gs", "-Daikars.new.flags=true", "-XX:G1NewSizePercent=40", "-XX:G1MaxNewSizePercent=50", "-XX:G1HeapRegionSize=16M", "-XX:G1ReservePercent=15") // Plazma - Always agree EULA on development mode; Use Akair's flag when running the test server with gradle
if (rootProject.childProjects["test-plugin"] != null) {
val testPluginJar = rootProject.project(":test-plugin").tasks.jar.flatMap { it.archiveFile }

View File

@@ -1,77 +0,0 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: AlphaKR93 <dev@alpha93.kr>
Date: Mon, 6 May 2024 13:40:48 +0900
Subject: [PATCH] Use Plazma logo instead if server favicon doesn't exist
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index 20266ef8f0974f47581e71175de4b01ea1a27bf0..54ef910938efb537a689dd5dbda119455bbf2a0e 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -1627,29 +1627,32 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
}
private Optional<ServerStatus.Favicon> loadStatusIcon() {
- Optional<Path> optional = Optional.of(this.getFile("server-icon.png")).filter((path) -> {
- return Files.isRegularFile(path, new LinkOption[0]);
- }).or(() -> {
- return this.storageSource.getIconFile().filter((path) -> {
- return Files.isRegularFile(path, new LinkOption[0]);
- });
- });
-
- return optional.flatMap((path) -> {
- try {
- BufferedImage bufferedimage = ImageIO.read(path.toFile());
-
- Preconditions.checkState(bufferedimage.getWidth() == 64, "Must be 64 pixels wide");
- Preconditions.checkState(bufferedimage.getHeight() == 64, "Must be 64 pixels high");
- ByteArrayOutputStream bytearrayoutputstream = new ByteArrayOutputStream();
-
- ImageIO.write(bufferedimage, "PNG", bytearrayoutputstream);
- return Optional.of(new ServerStatus.Favicon(bytearrayoutputstream.toByteArray()));
- } catch (Exception exception) {
- MinecraftServer.LOGGER.error("Couldn't load server icon", exception);
- return Optional.empty();
- }
- });
+ // Plazma start - Use Plazma logo instead if server favicon doesn't exist
+ @Nullable File file = Optional.of(this.getFile("server-icon.png").toAbsolutePath()).filter(Files::isRegularFile)
+ .or(() -> this.storageSource.getIconFile().filter(Files::isRegularFile)).map(Path::toFile).orElse(null);
+ try (
+ java.io.InputStream stream = (file != null)
+ ? new java.io.FileInputStream(file)
+ : (
+ org.plazmamc.plazma.Options.VANILLA_ICO
+ ? null
+ : MinecraftServer.class.getResourceAsStream("logo.png")
+ )
+ ) {
+ if (stream == null) return Optional.empty();
+ if (file == null && !org.plazmamc.plazma.Options.VANILLA_ICO)
+ LOGGER.info("No server icon found, using the logo instead.");
+ BufferedImage bufferedimage = ImageIO.read(stream);
+ Preconditions.checkState(bufferedimage.getWidth() == 64, "Must be 64 pixels wide");
+ Preconditions.checkState(bufferedimage.getHeight() == 64, "Must be 64 pixels high");
+ ByteArrayOutputStream bytearrayoutputstream = new ByteArrayOutputStream();
+ ImageIO.write(bufferedimage, "PNG", bytearrayoutputstream);
+ return Optional.of(new ServerStatus.Favicon(bytearrayoutputstream.toByteArray()));
+ } catch (Exception exception) {
+ MinecraftServer.LOGGER.error("Couldn't load server icon", exception);
+ return Optional.empty();
+ }
+ // Plazma end - Use Plazma logo instead if server favicon doesn't exist
}
public Optional<Path> getWorldScreenshotFile() {
diff --git a/src/main/java/org/plazmamc/plazma/Options.java b/src/main/java/org/plazmamc/plazma/Options.java
index 063b71b3043a69a90130a81686b6a5f1e5f22fd1..e7092aeb5abce5aa5f9bd434adc6acd4e43dec13 100644
--- a/src/main/java/org/plazmamc/plazma/Options.java
+++ b/src/main/java/org/plazmamc/plazma/Options.java
@@ -10,5 +10,6 @@ public interface Options {
boolean AGGRESSIVE = getBoolean("Plazma.aggressiveOptimize") && !NO_OPTIMIZE;
boolean VANILLAIZE = getBoolean("Plazma.vanillaize") && !AGGRESSIVE;
boolean USE_VANILLA = getBoolean("Plazma.useVanillaConfiguration") && !AGGRESSIVE && NO_OPTIMIZE;
+ boolean VANILLA_ICO = getBoolean("Plazma.useVanillaFavicon");
}

View File

@@ -1,41 +0,0 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: AlphaKR93 <dev@alpha93.kr>
Date: Fri, 25 Oct 2024 19:26:15 +0900
Subject: [PATCH] Suppress errors from dirty attributes
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
index f2753cf51634479e501c1a3e7931d6d9882bc801..02288d8f3521756770351c02f623f9db02efd40c 100644
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
@@ -1390,7 +1390,8 @@ public abstract class LivingEntity extends Entity implements Attackable {
}
private void refreshDirtyAttributes() {
- Set<AttributeInstance> set = this.getAttributes().getAttributesToUpdate();
+ Set<AttributeInstance> attr = this.getAttributes().getAttributesToUpdate(); // Plazma - Suppress errors from dirty attributes
+ final Set<AttributeInstance> set = level().plazmaConfig().entity.suppressErrorsFromDirtyAttributes ? java.util.Collections.synchronizedSet(attr) : attr; // Plazma - Suppress errors from dirty attributes
Iterator iterator = set.iterator();
while (iterator.hasNext()) {
@@ -1399,7 +1400,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
this.onAttributeUpdated(attributemodifiable.getAttribute());
}
- set.clear();
+ attr.clear(); // Plazma - Suppress errors from dirty attributes
}
protected void onAttributeUpdated(Holder<Attribute> attribute) {
diff --git a/src/main/java/org/plazmamc/plazma/configurations/WorldConfigurations.java b/src/main/java/org/plazmamc/plazma/configurations/WorldConfigurations.java
index f21ed3431fd8472c78c15578bbd12214c499ceea..9cfab16b9cdf40ccb709c0af66c406954560c0ef 100644
--- a/src/main/java/org/plazmamc/plazma/configurations/WorldConfigurations.java
+++ b/src/main/java/org/plazmamc/plazma/configurations/WorldConfigurations.java
@@ -29,6 +29,7 @@ public class WorldConfigurations extends ConfigurationPart {
public class Entity extends ConfigurationPart {
public int sensorTick = 1;
+ public boolean suppressErrorsFromDirtyAttributes = OPTIMIZE;
public Phantom phantom;
public class Phantom extends ConfigurationPart {

View File

@@ -1,73 +0,0 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: AlphaKR93 <dev@alpha93.kr>
Date: Sun, 27 Oct 2024 00:16:25 +0900
Subject: [PATCH] Optimize advancement criteria triggering
Based on bigenergy/achievements-optimizer
Copyright (C) 2024 bigenergy, Licensed under MIT License
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/src/main/java/net/minecraft/advancements/critereon/InventoryChangeTrigger.java b/src/main/java/net/minecraft/advancements/critereon/InventoryChangeTrigger.java
index ebbad97920df3d1645637e646a98e16cb04d361e..a149c949a042e1d1e504d9f5ce0bfa6df92db2fc 100644
--- a/src/main/java/net/minecraft/advancements/critereon/InventoryChangeTrigger.java
+++ b/src/main/java/net/minecraft/advancements/critereon/InventoryChangeTrigger.java
@@ -22,7 +22,21 @@ public class InventoryChangeTrigger extends SimpleCriterionTrigger<InventoryChan
return InventoryChangeTrigger.TriggerInstance.CODEC;
}
+ // Plazma start - Optimize advancement criteria triggering
+ public static int idleTick;
+ private int ticksSkipped;
+
+ private boolean shouldTick() {
+ if (++this.ticksSkipped <= idleTick) return false;
+
+ this.ticksSkipped = 0;
+ return true;
+ }
+ // Plazma end - Optimize advancement criteria triggering
+
public void trigger(ServerPlayer player, Inventory inventory, ItemStack stack) {
+ if (idleTick > 0 && !this.shouldTick()) return; // Plazma - Optimize advancement criteria triggering
+
int i = 0;
int j = 0;
int k = 0;
diff --git a/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java b/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java
index 7f30fa1928e1a7e59ee5acfdfd2334f810c30243..ba2c7b679f68d49add77731383bf68292fe9614a 100644
--- a/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java
+++ b/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java
@@ -139,4 +139,16 @@ public class GlobalConfiguration extends ConfigurationPart {
}
+ public Advancements advancements;
+ public class Advancements extends ConfigurationPart {
+
+ int criteriaTriggerIdleTick = OPTIMIZE ? 5 : 0;
+
+ @PostProcess
+ void post() {
+ net.minecraft.advancements.critereon.InventoryChangeTrigger.idleTick = this.criteriaTriggerIdleTick;
+ }
+
+ }
+
}

View File

@@ -1,34 +0,0 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: AlphaKR93 <dev@alpha93.kr>
Date: Sun, 27 Oct 2024 13:48:01 +0900
Subject: [PATCH] Configurable water flowing speed
diff --git a/src/main/java/net/minecraft/world/level/material/WaterFluid.java b/src/main/java/net/minecraft/world/level/material/WaterFluid.java
index 1e741f36b79585f33abe413beafe00cf5205d54f..028aea6640356ba80f5d682e3cc03b7f82f5b9c7 100644
--- a/src/main/java/net/minecraft/world/level/material/WaterFluid.java
+++ b/src/main/java/net/minecraft/world/level/material/WaterFluid.java
@@ -123,7 +123,7 @@ public abstract class WaterFluid extends FlowingFluid {
@Override
public int getTickDelay(LevelReader world) {
- return 5;
+ return world.getWorldBorder().world.plazmaConfig().block.waterFlowingTick; // Plazma - Configurable water flowing speed
}
@Override
diff --git a/src/main/java/org/plazmamc/plazma/configurations/WorldConfigurations.java b/src/main/java/org/plazmamc/plazma/configurations/WorldConfigurations.java
index 0e27e4a1f767842d1dcd2ed235a6a45f120bf32e..c1d4a96cf5be77f4460c54ed19622f527d42ca06 100644
--- a/src/main/java/org/plazmamc/plazma/configurations/WorldConfigurations.java
+++ b/src/main/java/org/plazmamc/plazma/configurations/WorldConfigurations.java
@@ -64,7 +64,9 @@ public class WorldConfigurations extends ConfigurationPart {
public Block block;
public class Block extends ConfigurationPart {
-
+
+ public int waterFlowingTick = 5;
+
public Hopper hopper;
public class Hopper extends ConfigurationPart {

View File

@@ -1,37 +0,0 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: AlphaKR93 <dev@alpha93.kr>
Date: Thu, 31 Oct 2024 22:53:16 +0900
Subject: [PATCH] cleanup logs
diff --git a/src/main/resources/log4j2.xml b/src/main/resources/log4j2.xml
index a056aa167887abef9e6d531a9edd2cda433567d2..dbd822604471e7405e350586ea0e294e0234cf06 100644
--- a/src/main/resources/log4j2.xml
+++ b/src/main/resources/log4j2.xml
@@ -7,7 +7,7 @@
<LoggerNamePatternSelector defaultPattern="%highlightGUIError{[%d{HH:mm:ss} %level]: [%logger] %stripAnsi{%msg}%n%xEx{full}}">
<!-- Log root, Minecraft, Mojang and Bukkit loggers without prefix -->
<!-- Disable prefix for various plugins that bypass the plugin logger -->
- <PatternMatch key=",net.minecraft.,Minecraft,com.mojang.,com.sk89q.,ru.tehkode.,Minecraft.AWE"
+ <PatternMatch key=",net.minecraft.,Minecraft,com.mojang.,com.sk89q.,ru.tehkode.,Minecraft.AWE,ca.spottedleaf."
pattern="%highlightGUIError{[%d{HH:mm:ss} %level]: %stripAnsi{%msg}%n%xEx{full}}" />
</LoggerNamePatternSelector>
</PatternLayout>
@@ -18,7 +18,7 @@
<LoggerNamePatternSelector defaultPattern="%highlightError{[%d{HH:mm:ss} %level]: [%logger] %msg%n%xEx{full}}">
<!-- Log root, Minecraft, Mojang and Bukkit loggers without prefix -->
<!-- Disable prefix for various plugins that bypass the plugin logger -->
- <PatternMatch key=",net.minecraft.,Minecraft,com.mojang.,com.sk89q.,ru.tehkode.,Minecraft.AWE"
+ <PatternMatch key=",net.minecraft.,Minecraft,com.mojang.,com.sk89q.,ru.tehkode.,Minecraft.AWE,ca.spottedleaf."
pattern="%highlightError{[%d{HH:mm:ss} %level]: %msg%n%xEx{full}}" />
</LoggerNamePatternSelector>
</PatternLayout>
@@ -28,7 +28,7 @@
<LoggerNamePatternSelector defaultPattern="[%d{HH:mm:ss}] [%t/%level]: [%logger] %stripAnsi{%msg}%n%xEx{full}">
<!-- Log root, Minecraft, Mojang and Bukkit loggers without prefix -->
<!-- Disable prefix for various plugins that bypass the plugin logger -->
- <PatternMatch key=",net.minecraft.,Minecraft,com.mojang.,com.sk89q.,ru.tehkode.,Minecraft.AWE"
+ <PatternMatch key=",net.minecraft.,Minecraft,com.mojang.,com.sk89q.,ru.tehkode.,Minecraft.AWE,ca.spottedleaf."
pattern="[%d{HH:mm:ss}] [%t/%level]: %stripAnsi{%msg}%n%xEx{full}" />
</LoggerNamePatternSelector>
</PatternLayout>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,36 +0,0 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: AlphaKR93 <dev@alpha93.kr>
Date: Sat, 14 Dec 2024 11:06:41 +0900
Subject: [PATCH] Tick toggle subcommand
diff --git a/src/main/java/net/minecraft/server/commands/TickCommand.java b/src/main/java/net/minecraft/server/commands/TickCommand.java
index 13d96b54f48d60b098b80e04ba6168762c335c75..5aab945085eb4ed2ea44832319c6daad96fe3a71 100644
--- a/src/main/java/net/minecraft/server/commands/TickCommand.java
+++ b/src/main/java/net/minecraft/server/commands/TickCommand.java
@@ -21,6 +21,10 @@ public class TickCommand {
dispatcher.register(
Commands.literal("tick")
.requires(source -> source.hasPermission(3))
+ // Plazma start - Tick toggle subcommand
+ .executes(context -> toggleFreeze(context.getSource()))
+ .then(Commands.literal("toggle").executes(context -> toggleFreeze(context.getSource())))
+ // Plazma end - Tick toggle subcommand
.then(Commands.literal("query").executes(context -> tickQuery(context.getSource())))
.then(
Commands.literal("rate")
@@ -108,6 +112,14 @@ public class TickCommand {
return 1;
}
+ // Plazma start - Tick toggle subcommand
+ private static int toggleFreeze(CommandSourceStack source) {
+ ServerTickRateManager serverTickRateManager = source.getServer().tickRateManager();
+ boolean frozen = !serverTickRateManager.isFrozen();
+ return setFreeze(source, frozen);
+ }
+ // Plazma end - Tick toggle subcommand
+
private static int setFreeze(CommandSourceStack source, boolean frozen) {
ServerTickRateManager serverTickRateManager = source.getServer().tickRateManager();
if (frozen) {

View File

@@ -8,8 +8,20 @@ Subject: [PATCH] Optimize default configurations
- AkiraDevelopment/SimplyMC
- YouHaveTrouble/minecraft-exploits-and-how-to-fix-them
diff --git a/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java b/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java
index c867796f6..ecced2072 100644
--- a/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java
+++ b/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java
@@ -181,7 +222,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)));
diff --git a/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java b/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java
index 411c81a88b8a008b2aaf0ca62fb7ffa1dd9e32a4..53dc2e3c22c5cb038b9a283112f265d362f187e3 100644
index 3ff4f092a59242a8cb930c084915a774db881652..66f797f5205b9b259cc6f6cfd710293fc73cdf59 100644
--- a/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java
+++ b/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java
@@ -61,7 +61,7 @@ public class PufferfishConfig {
@@ -34,8 +46,8 @@ index 411c81a88b8a008b2aaf0ca62fb7ffa1dd9e32a4..53dc2e3c22c5cb038b9a283112f265d3
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", plazma.Config.optimize()); // Purpur // Plazma - Optimize default configurations
- dearEnabled = getBoolean("dab.enabled", "activation-range.enabled", false); // Purpur - Fix pufferfish issues
+ dearEnabled = getBoolean("dab.enabled", "activation-range.enabled", plazma.Config.optimize()); // Purpur - Fix pufferfish issues // 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.");
@@ -46,10 +58,10 @@ index 411c81a88b8a008b2aaf0ca62fb7ffa1dd9e32a4..53dc2e3c22c5cb038b9a283112f265d3
"will get their pathfinders and behaviors ticked. 20 = 1s");
activationDistanceMod = getInt("dab.activation-dist-mod", "activation-range.activation-dist-mod", 8,
diff --git a/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java b/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java
index 17e23ca4dd2bbfba49ea00aa2b719a95feb931be..a8e75eaadfcc6c8b2503776d7de197f756712819 100644
index 088b8fe5d144807f4da1e85b2fa34dfd21286f8c..8c3c7987a269733a0f530e8f22c3f1a005de21ac 100644
--- a/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java
+++ b/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java
@@ -147,7 +147,7 @@ public class GlobalConfiguration extends ConfigurationPart {
@@ -148,7 +148,7 @@ public class GlobalConfiguration extends ConfigurationPart {
public class Watchdog extends ConfigurationPart {
public int earlyWarningEvery = 5000;
@@ -58,7 +70,7 @@ index 17e23ca4dd2bbfba49ea00aa2b719a95feb931be..a8e75eaadfcc6c8b2503776d7de197f7
}
public SpamLimiter spamLimiter;
@@ -187,7 +187,7 @@ public class GlobalConfiguration extends ConfigurationPart {
@@ -188,7 +188,7 @@ public class GlobalConfiguration extends ConfigurationPart {
public Commands commands;
public class Commands extends ConfigurationPart {
@@ -307,10 +319,10 @@ index 24763d3d270c29c95e0b3e85111145234f660a62..80ddc627e02e3c749e6b074afa93d357
}
diff --git a/src/main/java/net/minecraft/server/Main.java b/src/main/java/net/minecraft/server/Main.java
index 694b126df2c3d1d6fa40ee9731c28886caf1a4fc..822ecda5f4dc6cc8cd0cc4da577f27cdcc5c4967 100644
index fc378b08c10c7f670be93d52937c7642b986ed0d..9a436132faa04efbf25d8be9d5488e13f2111dac 100644
--- a/src/main/java/net/minecraft/server/Main.java
+++ b/src/main/java/net/minecraft/server/Main.java
@@ -164,7 +164,7 @@ public class Main {
@@ -166,7 +166,7 @@ public class Main {
File configFile = (File) optionset.valueOf("bukkit-settings");
YamlConfiguration configuration = YamlConfiguration.loadConfiguration(configFile);
configuration.options().copyDefaults(true);
@@ -352,7 +364,7 @@ index 8f7e922ceca286b1a590181c301fbe9bff55c024..3dd5c7441bb300ca17d717af37edbefb
this.enableJmxMonitoring = this.get("enable-jmx-monitoring", false);
this.enableStatus = this.get("enable-status", true);
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index 655463a7d588ed88778d137b6fe5ac18951ff172..cc4762c13e21600b4c5e287a6fae9e6e472080b3 100644
index 090cb821a43ccfea21a990580e47b592df9d030f..4177a12d333925dd7f3422861847119f344a441b 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -449,7 +449,7 @@ public final class CraftServer implements Server {
@@ -396,7 +408,7 @@ index 09053b4ccf268fd204c81dbb8d4f10fa9edcad5f..93f67f125b3674e645cfdae27e579e12
#### ENGLISH ####
This is the %s configuration file for Plazma.
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
index 95cd1156766895546ef5574b33a60806bff08fa2..097f3c34d244b89e7dd9f8b6f2a3d8fdc67b36dc 100644
index 7690441b5059ae6c7ca8519875ea8a515c5c5e93..f29059798c9dc642187b4939dd917ee15cbe120d 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
@@ -244,7 +244,7 @@ public class PurpurConfig {
@@ -418,10 +430,10 @@ index 95cd1156766895546ef5574b33a60806bff08fa2..097f3c34d244b89e7dd9f8b6f2a3d8fd
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 57ddb4e6a464567cc67e09ce06218cc25af4ddf9..e55993e318b7f7292e22c4539bc2fd1447f67fa8 100644
index 0d5a0e14cbaacc63eeced78a6c28cc64ad918522..43ad38dadfe14b3dd0565c536b276eb3f9dbd813 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -424,7 +424,7 @@ public class PurpurWorldConfig {
@@ -426,7 +426,7 @@ public class PurpurWorldConfig {
public boolean idleTimeoutTargetPlayer = true;
public String playerDeathExpDropEquation = "expLevel * 7";
public int playerDeathExpDropMax = 100;
@@ -430,7 +442,7 @@ index 57ddb4e6a464567cc67e09ce06218cc25af4ddf9..e55993e318b7f7292e22c4539bc2fd14
public boolean teleportOnNetherCeilingDamage = false;
public boolean totemOfUndyingWorksInInventory = false;
public boolean playerFixStuckPortal = false;
@@ -3262,7 +3262,7 @@ public class PurpurWorldConfig {
@@ -3271,7 +3271,7 @@ public class PurpurWorldConfig {
public boolean zombieJockeyOnlyBaby = true;
public double zombieJockeyChance = 0.05D;
public boolean zombieJockeyTryExistingChickens = true;

View File

@@ -6,10 +6,10 @@ Subject: [PATCH] Add an option to apply the configuration to the vanilla
diff --git a/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java b/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java
index a8e75eaadfcc6c8b2503776d7de197f756712819..99cf08bc17eec05463b300c0c9fd108cbfba1b8f 100644
index 8c3c7987a269733a0f530e8f22c3f1a005de21ac..20def77109eb9cd98a7677e73b4316544be86283 100644
--- a/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java
+++ b/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java
@@ -87,7 +87,7 @@ public class GlobalConfiguration extends ConfigurationPart {
@@ -88,7 +88,7 @@ public class GlobalConfiguration extends ConfigurationPart {
public Component flyingVehicle = Component.translatable("multiplayer.disconnect.flying");
}
@@ -19,7 +19,7 @@ index a8e75eaadfcc6c8b2503776d7de197f756712819..99cf08bc17eec05463b300c0c9fd108c
}
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index cc4762c13e21600b4c5e287a6fae9e6e472080b3..76f255d12189ffe83426cc7aa85771d5c7cfb111 100644
index 4177a12d333925dd7f3422861847119f344a441b..15527e902484496a6804c879d1de589bed3f8713 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -449,7 +449,19 @@ public final class CraftServer implements Server {

View File

@@ -7,7 +7,7 @@ Subject: [PATCH] Add entity spawn deadlock timer
- AbsolemJackdaw/FixMySpawnR
diff --git a/src/main/java/net/minecraft/world/level/BaseSpawner.java b/src/main/java/net/minecraft/world/level/BaseSpawner.java
index bb4411cfdf1bc7adc12c2f918d2eec830299f38b..357d484029fe338bea4f5770d13ccfc0dce4432e 100644
index 79a8e5dd1d189c4eaf93999925ea0790eb6ce368..ac3b0f95926aba8e99375f74dfca9d83ca1fbd57 100644
--- a/src/main/java/net/minecraft/world/level/BaseSpawner.java
+++ b/src/main/java/net/minecraft/world/level/BaseSpawner.java
@@ -50,6 +50,8 @@ public abstract class BaseSpawner {

View File

@@ -20,10 +20,10 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
index 38752c9ba1726e3c38dd758287a920bc476ef88a..45fa867a22481bbba86e587767cfdb96d9691c49 100644
index 32ebee3620b5ec1ff57b92a581fb2d7f5dfe17cf..214bd8084182ebd0d36cf9ddfac4411a5dce78be 100644
--- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
+++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
@@ -688,6 +688,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
@@ -697,6 +697,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
// Paper start - Add setting for proxy online mode status
return dedicatedserverproperties.enforceSecureProfile
&& io.papermc.paper.configuration.GlobalConfiguration.get().proxies.isProxyOnlineMode()
@@ -32,7 +32,7 @@ index 38752c9ba1726e3c38dd758287a920bc476ef88a..45fa867a22481bbba86e587767cfdb96
// Paper end - Add setting for proxy online mode status
}
diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java
index 8d7d050f12df83931bbb32f1832d7fcbc06317da..be4a5407fe9b692b72eb2b85e2dea160a0555bca 100644
index 459eea7dae68afdf7e1443f29f6f8d0c68668b74..aead28160c7a5067340ec80a833eafcab1817d67 100644
--- a/src/main/java/net/minecraft/server/players/PlayerList.java
+++ b/src/main/java/net/minecraft/server/players/PlayerList.java
@@ -135,6 +135,7 @@ public abstract class PlayerList {
@@ -52,10 +52,10 @@ index 8d7d050f12df83931bbb32f1832d7fcbc06317da..be4a5407fe9b692b72eb2b85e2dea160
player.loadGameTypes((CompoundTag) optional.orElse(null)); // CraftBukkit - decompile error
ServerGamePacketListenerImpl playerconnection = new ServerGamePacketListenerImpl(this.server, connection, player, clientData);
diff --git a/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java b/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java
index 0b59a3a36c86948877cb8cb875dc114e9f9d284a..6e14f6a03c7bcd820f3d787178a62844ad022332 100644
index 5450d2a784511122a8236d30485f6b1f798822f3..a0b1239e302f0366743949a895a0539348817077 100644
--- a/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java
+++ b/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java
@@ -39,6 +39,15 @@ public class GlobalConfiguration extends ConfigurationPart {
@@ -45,6 +45,15 @@ public class GlobalConfiguration extends ConfigurationPart {
public boolean checkSpectatorMovedToQuickly = !OPTIMIZE;

View File

@@ -240,10 +240,10 @@ index f1e0d3d7b1f458fcce83cf67762a16309123cdcb..6a8d5948f127ea87a0b4554ece4ad2c4
public boolean isIgnoreEntities() {
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
index 907fe00ab752ad124020755f211567af771b9d70..e041752bbcba5cefce0dde8db917510129d29987 100644
index 5d7af6c1ec557d2a2813b87a64b8c8a99d2f87e0..deddf588826dda9b15beff3acf20be56837d240b 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
@@ -288,7 +288,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@@ -289,7 +289,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
}
// Paper end

View File

@@ -464,12 +464,12 @@ index 0000000000000000000000000000000000000000..3456f38d381643b0461669b0b5fec6bf
+
+}
diff --git a/src/main/java/net/minecraft/world/entity/ai/behavior/AcquirePoi.java b/src/main/java/net/minecraft/world/entity/ai/behavior/AcquirePoi.java
index 3d7578605812021bc84b99d4db1672a682d897ad..58feaaed5e301eb402dab24e6f155beb865fa5ee 100644
index 273ba657926ce72a7c82861e880a82bf7f322a0b..f90a14860e4c9a11a972edc3cea011e1cf67b4eb 100644
--- a/src/main/java/net/minecraft/world/entity/ai/behavior/AcquirePoi.java
+++ b/src/main/java/net/minecraft/world/entity/ai/behavior/AcquirePoi.java
@@ -76,6 +76,35 @@ public class AcquirePoi {
io.papermc.paper.util.PoiAccess.findNearestPoiPositions(poiManager, poiPredicate, predicate2, entity.blockPosition(), world.purpurConfig.villagerAcquirePoiSearchRadius, world.purpurConfig.villagerAcquirePoiSearchRadius*world.purpurConfig.villagerAcquirePoiSearchRadius, PoiManager.Occupancy.HAS_SPACE, false, 5, poiposes);
Set<Pair<Holder<PoiType>, BlockPos>> set = new java.util.HashSet<>(poiposes);
@@ -94,6 +94,35 @@ public class AcquirePoi {
}
}
// Paper end - optimise POI access
+ // Plazma start - Process Pathfinding Asynchronously
+ if (org.plazmamc.plazma.configurations.GlobalConfiguration.get().entity.asyncPathProcess.enabled) {
@@ -653,23 +653,23 @@ index 6802e0c4d331c7125114dd86409f6a110465ab82..0b8973765bcaa77e70ac7afe5b6a99ab
if (path != null && path.canReach()) {
BlockPos blockPos = path.getTarget();
diff --git a/src/main/java/net/minecraft/world/entity/ai/goal/DoorInteractGoal.java b/src/main/java/net/minecraft/world/entity/ai/goal/DoorInteractGoal.java
index 74aca307b4ebffe4e33c4fca3e07c23ca87622ac..a1c99a611c9b0c99d851393c668fe02c5a31536f 100644
index 2846790fcd00788cf0284c348161ee1aee415f13..069e27041434c11ae5235ccb0e17544fe4a14e12 100644
--- a/src/main/java/net/minecraft/world/entity/ai/goal/DoorInteractGoal.java
+++ b/src/main/java/net/minecraft/world/entity/ai/goal/DoorInteractGoal.java
@@ -56,7 +56,7 @@ public abstract class DoorInteractGoal extends Goal {
} else {
GroundPathNavigation groundPathNavigation = (GroundPathNavigation)this.mob.getNavigation();
Path path = groundPathNavigation.getPath();
- if (path != null && !path.isDone() && groundPathNavigation.canOpenDoors()) {
+ if (path != null && path.isProcessed() && !path.isDone() && groundPathNavigation.canOpenDoors()) { // Plazma - Process Pathfinding asynchronously
- if (path != null && !path.isDone()) {
+ if (path != null && path.isProcessed() && !path.isDone()) { // Plazma - Process Pathfinding asynchronously
for (int i = 0; i < Math.min(path.getNextNodeIndex() + 2, path.getNodeCount()); i++) {
Node node = path.getNode(i);
this.doorPos = new BlockPos(node.x, node.y + 1, node.z);
diff --git a/src/main/java/net/minecraft/world/entity/ai/navigation/AmphibiousPathNavigation.java b/src/main/java/net/minecraft/world/entity/ai/navigation/AmphibiousPathNavigation.java
index ee38e447a810094d2253b85714b74282a4b4c2bc..8361b230963469d564d6280414ea083e975f9cf7 100644
index 29b852c3262c9cd0d2c77a93c01a386a2c184742..8361b230963469d564d6280414ea083e975f9cf7 100644
--- a/src/main/java/net/minecraft/world/entity/ai/navigation/AmphibiousPathNavigation.java
+++ b/src/main/java/net/minecraft/world/entity/ai/navigation/AmphibiousPathNavigation.java
@@ -12,12 +12,26 @@ public class AmphibiousPathNavigation extends PathNavigation {
@@ -12,11 +12,26 @@ public class AmphibiousPathNavigation extends PathNavigation {
super(mob, world);
}
@@ -687,7 +687,7 @@ index ee38e447a810094d2253b85714b74282a4b4c2bc..8361b230963469d564d6280414ea083e
@Override
protected PathFinder createPathFinder(int range) {
this.nodeEvaluator = new AmphibiousNodeEvaluator(false);
this.nodeEvaluator.setCanPassDoors(true);
+ this.nodeEvaluator.setCanPassDoors(true);
+ if (org.plazmamc.plazma.configurations.GlobalConfiguration.get().entity.asyncPathProcess.enabled)
+ return new PathFinder(this.nodeEvaluator, range, GENERATOR);
return new PathFinder(this.nodeEvaluator, range);
@@ -697,10 +697,10 @@ index ee38e447a810094d2253b85714b74282a4b4c2bc..8361b230963469d564d6280414ea083e
@Override
protected boolean canUpdatePath() {
diff --git a/src/main/java/net/minecraft/world/entity/ai/navigation/FlyingPathNavigation.java b/src/main/java/net/minecraft/world/entity/ai/navigation/FlyingPathNavigation.java
index a3e0c5af4cc9323c02e88e768cbda9e46854aea1..d68e97084ba6bc97312fc5b62ffcb6e6b21b056e 100644
index 2bd66da93227d4e4fc2ec4df47ae94b17f4d39d3..ee395676b5eb14cd24b7251a83be7154d71b7b20 100644
--- a/src/main/java/net/minecraft/world/entity/ai/navigation/FlyingPathNavigation.java
+++ b/src/main/java/net/minecraft/world/entity/ai/navigation/FlyingPathNavigation.java
@@ -16,12 +16,26 @@ public class FlyingPathNavigation extends PathNavigation {
@@ -16,11 +16,26 @@ public class FlyingPathNavigation extends PathNavigation {
super(entity, world);
}
@@ -713,12 +713,12 @@ index a3e0c5af4cc9323c02e88e768cbda9e46854aea1..d68e97084ba6bc97312fc5b62ffcb6e6
+ evaluator.setCanFloat(features.canFloat());
+ evaluator.setCanWalkOverFences(features.canWalkOverFences());
+ return evaluator;
+ };
+ };
+
@Override
protected PathFinder createPathFinder(int range) {
this.nodeEvaluator = new FlyNodeEvaluator();
this.nodeEvaluator.setCanPassDoors(true);
+ this.nodeEvaluator.setCanPassDoors(true);
+ if (org.plazmamc.plazma.configurations.GlobalConfiguration.get().entity.asyncPathProcess.enabled)
+ return new PathFinder(this.nodeEvaluator, range, GENERATOR);
return new PathFinder(this.nodeEvaluator, range);
@@ -727,7 +727,7 @@ index a3e0c5af4cc9323c02e88e768cbda9e46854aea1..d68e97084ba6bc97312fc5b62ffcb6e6
@Override
protected boolean canMoveDirectly(Vec3 origin, Vec3 target) {
@@ -50,6 +64,7 @@ public class FlyingPathNavigation extends PathNavigation {
@@ -49,6 +64,7 @@ public class FlyingPathNavigation extends PathNavigation {
this.recomputePath();
}
@@ -736,10 +736,10 @@ index a3e0c5af4cc9323c02e88e768cbda9e46854aea1..d68e97084ba6bc97312fc5b62ffcb6e6
if (this.canUpdatePath()) {
this.followThePath();
diff --git a/src/main/java/net/minecraft/world/entity/ai/navigation/GroundPathNavigation.java b/src/main/java/net/minecraft/world/entity/ai/navigation/GroundPathNavigation.java
index f73b559b8e60859020f762dab88b67b8c912bf8f..d218604447afbde96dc4af33ba90a87617a13ed4 100644
index 2796df7af365c452b28373adfd7daf1d6730bac5..921b0f792fbb3e7a0bb0275d8494a19830a08eae 100644
--- a/src/main/java/net/minecraft/world/entity/ai/navigation/GroundPathNavigation.java
+++ b/src/main/java/net/minecraft/world/entity/ai/navigation/GroundPathNavigation.java
@@ -24,10 +24,23 @@ public class GroundPathNavigation extends PathNavigation {
@@ -24,11 +24,25 @@ public class GroundPathNavigation extends PathNavigation {
super(entity, world);
}
@@ -753,16 +753,18 @@ index f73b559b8e60859020f762dab88b67b8c912bf8f..d218604447afbde96dc4af33ba90a876
+ evaluator.setCanWalkOverFences(features.canWalkOverFences());
+ return evaluator;
+ };
+ // Plazma end - Process pathfinding asynchronously
+
@Override
protected PathFinder createPathFinder(int range) {
this.nodeEvaluator = new WalkNodeEvaluator();
this.nodeEvaluator.setCanPassDoors(true);
+ if (org.plazmamc.plazma.configurations.GlobalConfiguration.get().entity.asyncPathProcess.enabled) return new PathFinder(this.nodeEvaluator, range, GENERATOR); // Plazma - Process pathfinding asynchronously
+ this.nodeEvaluator.setCanPassDoors(true);
+ if (org.plazmamc.plazma.configurations.GlobalConfiguration.get().entity.asyncPathProcess.enabled) return new PathFinder(this.nodeEvaluator, range, GENERATOR);
return new PathFinder(this.nodeEvaluator, range);
}
+ // Plazma end - Process pathfinding asynchronously
@Override
protected boolean canUpdatePath() {
diff --git a/src/main/java/net/minecraft/world/entity/ai/navigation/PathNavigation.java b/src/main/java/net/minecraft/world/entity/ai/navigation/PathNavigation.java
index 48c0de870a5bbf647309e69361dfb10ab56c65ab..99e31c8e8488ce7138c5385575cbbabe0bd7394e 100644
--- a/src/main/java/net/minecraft/world/entity/ai/navigation/PathNavigation.java
@@ -836,10 +838,10 @@ index 48c0de870a5bbf647309e69361dfb10ab56c65ab..99e31c8e8488ce7138c5385575cbbabe
Vec3 vec3 = new Vec3(((double)node.x + this.mob.getX()) / 2.0, ((double)node.y + this.mob.getY()) / 2.0, ((double)node.z + this.mob.getZ()) / 2.0);
return pos.closerToCenterThan(vec3, (double)(this.path.getNodeCount() - this.path.getNextNodeIndex()));
diff --git a/src/main/java/net/minecraft/world/entity/ai/navigation/WaterBoundPathNavigation.java b/src/main/java/net/minecraft/world/entity/ai/navigation/WaterBoundPathNavigation.java
index 0446ac540d8509a653abe1a8bc10f52fb43d6ae1..77c10a3e9570f53ce73dacb39cb86a00202e6ce6 100644
index 943c9944ae17fa7cd72e437cce61beaf3fc9505e..77c10a3e9570f53ce73dacb39cb86a00202e6ce6 100644
--- a/src/main/java/net/minecraft/world/entity/ai/navigation/WaterBoundPathNavigation.java
+++ b/src/main/java/net/minecraft/world/entity/ai/navigation/WaterBoundPathNavigation.java
@@ -15,10 +15,23 @@ public class WaterBoundPathNavigation extends PathNavigation {
@@ -15,11 +15,23 @@ public class WaterBoundPathNavigation extends PathNavigation {
super(entity, world);
}
@@ -859,6 +861,7 @@ index 0446ac540d8509a653abe1a8bc10f52fb43d6ae1..77c10a3e9570f53ce73dacb39cb86a00
protected PathFinder createPathFinder(int range) {
this.allowBreaching = this.mob.getType() == EntityType.DOLPHIN;
this.nodeEvaluator = new SwimNodeEvaluator(this.allowBreaching);
- this.nodeEvaluator.setCanPassDoors(false);
+ if (org.plazmamc.plazma.configurations.GlobalConfiguration.get().entity.asyncPathProcess.enabled) return new PathFinder(this.nodeEvaluator, range, GENERATOR); // Plazma - Process pathfinding asynchronously
return new PathFinder(this.nodeEvaluator, range);
}
@@ -894,10 +897,10 @@ index 9104d7010bda6f9f73b478c11490ef9c53f76da2..a53950a6e4cb2e672b6f130461fa6306
// Paper end - optimise POI access
if (path != null && path.canReach()) {
diff --git a/src/main/java/net/minecraft/world/entity/animal/Bee.java b/src/main/java/net/minecraft/world/entity/animal/Bee.java
index 6dec1720aea724baab541e26e14c9fa0646abdbf..bf4a3bc730709f41a5089dfe4c6342b08057ef02 100644
index ba0b72e648fad219d7b42f5d489b53ec41046826..d83f75719a3be1b5b2c544d89b63a4df420c73d2 100644
--- a/src/main/java/net/minecraft/world/entity/animal/Bee.java
+++ b/src/main/java/net/minecraft/world/entity/animal/Bee.java
@@ -1206,7 +1206,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal {
@@ -1243,7 +1243,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal {
} else {
Bee.this.pathfindRandomlyTowards(Bee.this.hivePos);
}
@@ -906,7 +909,7 @@ index 6dec1720aea724baab541e26e14c9fa0646abdbf..bf4a3bc730709f41a5089dfe4c6342b0
boolean flag = this.pathfindDirectlyTowards(Bee.this.hivePos);
if (!flag) {
@@ -1265,7 +1265,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal {
@@ -1302,7 +1302,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal {
} else {
Path pathentity = Bee.this.navigation.getPath();
@@ -916,10 +919,10 @@ index 6dec1720aea724baab541e26e14c9fa0646abdbf..bf4a3bc730709f41a5089dfe4c6342b0
}
}
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 17ba0c6060ab56ab97b133565ebf86320ab52e1b..305fe2c13ae2d81b99ff36f8ef18e24c23255eae 100644
index 05e5bb907edb77f2479b29d6e4a15ae446ab0620..963e55584c741a3a3f903f465d897c7ecbf5cd4d 100644
--- a/src/main/java/net/minecraft/world/entity/animal/frog/Frog.java
+++ b/src/main/java/net/minecraft/world/entity/animal/frog/Frog.java
@@ -506,10 +506,23 @@ public class Frog extends Animal implements VariantHolder<Holder<FrogVariant>> {
@@ -508,9 +508,23 @@ public class Frog extends Animal implements VariantHolder<Holder<FrogVariant>> {
return nodeType != PathType.WATER_BORDER && super.canCutCorner(nodeType);
}
@@ -938,16 +941,16 @@ index 17ba0c6060ab56ab97b133565ebf86320ab52e1b..305fe2c13ae2d81b99ff36f8ef18e24c
@Override
protected PathFinder createPathFinder(int range) {
this.nodeEvaluator = new Frog.FrogNodeEvaluator(true);
this.nodeEvaluator.setCanPassDoors(true);
+ this.nodeEvaluator.setCanPassDoors(true);
+ if (org.plazmamc.plazma.configurations.GlobalConfiguration.get().entity.asyncPathProcess.enabled) return new PathFinder(this.nodeEvaluator, range, GENERATOR); // Plazma - Process pathfinding asynchronously
return new PathFinder(this.nodeEvaluator, range);
}
}
diff --git a/src/main/java/net/minecraft/world/entity/monster/Drowned.java b/src/main/java/net/minecraft/world/entity/monster/Drowned.java
index 19bc362ff8e28cd0e26ba357dda425bac24c5a56..e4784d37c4b93c34325eb72cfbaa640c63d0c3c1 100644
index 902b4aff751a0f2a4fb8569eb2d88b7ceec7c40f..3235ea771c58ce9c09457a812416346341375613 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Drowned.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Drowned.java
@@ -308,7 +308,7 @@ public class Drowned extends Zombie implements RangedAttackMob {
@@ -309,7 +309,7 @@ public class Drowned extends Zombie implements RangedAttackMob {
protected boolean closeToNextPos() {
Path path = this.getNavigation().getPath();
@@ -957,10 +960,10 @@ index 19bc362ff8e28cd0e26ba357dda425bac24c5a56..e4784d37c4b93c34325eb72cfbaa640c
if (blockPos != null) {
double d = this.distanceToSqr((double)blockPos.getX(), (double)blockPos.getY(), (double)blockPos.getZ());
diff --git a/src/main/java/net/minecraft/world/entity/monster/Strider.java b/src/main/java/net/minecraft/world/entity/monster/Strider.java
index c09e49f928e32a3dc6c557f01d92c455d9bfc8c6..bf507bcb8746298ca96e50686cdf1bd91c91e4c1 100644
index 1cee20de1b691a92bee625a877e0ee9769e30b0b..ec871c81817ee82fa7b4ff929693b5ba045d35fb 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Strider.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Strider.java
@@ -610,10 +610,23 @@ public class Strider extends Animal implements ItemSteerable, Saddleable {
@@ -613,9 +613,23 @@ public class Strider extends Animal implements ItemSteerable, Saddleable {
super(entity, world);
}
@@ -979,19 +982,19 @@ index c09e49f928e32a3dc6c557f01d92c455d9bfc8c6..bf507bcb8746298ca96e50686cdf1bd9
@Override
protected PathFinder createPathFinder(int range) {
this.nodeEvaluator = new WalkNodeEvaluator();
this.nodeEvaluator.setCanPassDoors(true);
+ this.nodeEvaluator.setCanPassDoors(true);
+ if (org.plazmamc.plazma.configurations.GlobalConfiguration.get().entity.asyncPathProcess.enabled) return new PathFinder(this.nodeEvaluator, range, GENERATOR); // Plazma - Process pathfinding asynchronously
return new PathFinder(this.nodeEvaluator, range);
}
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 6cce132f43ce7aad6f5ee2b351855c9b57b8f0c1..4102dc4c8b63a1d00a8417aa303521590202f9a6 100644
index 771e1b5ecc1803079bbb9e4233c616cb3075470e..839a5550a6d613abf4567b32b5f1a04700d6ccf4 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
@@ -638,6 +638,15 @@ public class Warden extends Monster implements VibrationSystem {
@@ -637,6 +637,15 @@ public class Warden extends Monster implements VibrationSystem {
@Override
protected PathFinder createPathFinder(int range) {
this.nodeEvaluator = new WalkNodeEvaluator();
this.nodeEvaluator.setCanPassDoors(true);
+ // Plazma start - Process pathfinding asynchonously
+ if (org.plazmamc.plazma.configurations.GlobalConfiguration.get().entity.asyncPathProcess.enabled)
+ return new PathFinder(this.nodeEvaluator, range, GroundPathNavigation.GENERATOR) {
@@ -1298,10 +1301,10 @@ index 1c83926923f50fb4da1a83dc91614c20a831555f..aec2d0f9a957be65d031957dbff874d8
Command.broadcastCommandMessage(sender, text("Successfully reloaded Plazma configuration files.", NamedTextColor.GREEN));
diff --git a/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java b/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java
index ba2c7b679f68d49add77731383bf68292fe9614a..81f7ac9753058aa72dea5704fc9859ba3b909fb1 100644
index 8914159c17b3c8b0114e88c5317df5f17b05e5d6..92de32ee00bc9c4e8750773bca95a9cf5fbae067 100644
--- a/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java
+++ b/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java
@@ -80,6 +80,26 @@ public class GlobalConfiguration extends ConfigurationPart {
@@ -86,6 +86,26 @@ public class GlobalConfiguration extends ConfigurationPart {
public class Entity extends ConfigurationPart {

View File

@@ -218,10 +218,10 @@ index 0e6dfe2635ea5f5e410049b05f94f5083b2f18a4..584311a00c5037a6d5bc05b1261969aa
return null;
}
diff --git a/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java b/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java
index 81f7ac9753058aa72dea5704fc9859ba3b909fb1..dc632fe50e777c019705796602debc3a7f33152d 100644
index 92de32ee00bc9c4e8750773bca95a9cf5fbae067..fbcbbba15e8f7f8ea812a75d807908925305cb29 100644
--- a/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java
+++ b/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java
@@ -55,6 +55,8 @@ public class GlobalConfiguration extends ConfigurationPart {
@@ -61,6 +61,8 @@ public class GlobalConfiguration extends ConfigurationPart {
public WorldGeneration worldgen;
public class WorldGeneration extends ConfigurationPart {
@@ -230,7 +230,7 @@ index 81f7ac9753058aa72dea5704fc9859ba3b909fb1..dc632fe50e777c019705796602debc3a
public LavaSea lavaSea;
public class LavaSea extends ConfigurationPart {
@@ -74,6 +76,11 @@ public class GlobalConfiguration extends ConfigurationPart {
@@ -80,6 +82,11 @@ public class GlobalConfiguration extends ConfigurationPart {
}

View File

@@ -117,10 +117,10 @@ index 7e440b4a46b040365df7317035e577d93e7d855d..fd30799510b8230e11de10376ff9f781
players.add(player);
return;
diff --git a/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/level/entity/ChunkEntitySlices.java b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/level/entity/ChunkEntitySlices.java
index b3c993a790fc3fab6a408c731deb297f74c959ce..c53ea30fe9282ae1bb26b48b8844ef1e0e890545 100644
index d21ce54ebb5724c04eadf56a2cde701d5eeb5db2..31d61d0a252fadf26288ff8d3152ea4898c37edc 100644
--- a/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/level/entity/ChunkEntitySlices.java
+++ b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/level/entity/ChunkEntitySlices.java
@@ -387,7 +387,7 @@ public final class ChunkEntitySlices {
@@ -378,7 +378,7 @@ public final class ChunkEntitySlices {
private static final class BasicEntityList<E extends Entity> {
@@ -129,7 +129,7 @@ index b3c993a790fc3fab6a408c731deb297f74c959ce..c53ea30fe9282ae1bb26b48b8844ef1e
private static final int DEFAULT_CAPACITY = 4;
private E[] storage;
@@ -398,7 +398,7 @@ public final class ChunkEntitySlices {
@@ -389,7 +389,7 @@ public final class ChunkEntitySlices {
}
public BasicEntityList(final int cap) {
@@ -138,7 +138,7 @@ index b3c993a790fc3fab6a408c731deb297f74c959ce..c53ea30fe9282ae1bb26b48b8844ef1e
}
public boolean isEmpty() {
@@ -410,7 +410,7 @@ public final class ChunkEntitySlices {
@@ -401,7 +401,7 @@ public final class ChunkEntitySlices {
}
private void resize() {
@@ -165,10 +165,10 @@ index 58d9187adc188b693b6becc400f766e069bf1bf5..a3d186c80840fdb628a48181df219c46
public ServerEntityLookup(final ServerLevel world, final LevelCallback<Entity> worldCallback) {
super(world, worldCallback);
diff --git a/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/scheduling/ChunkTaskScheduler.java b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/scheduling/ChunkTaskScheduler.java
index b0bfe655922877676948d9b6ff3fa5a6ebb7a640..742594c95a6ea88f8e6e899e448277bc6f57ded7 100644
index 67532b85073b7978254a0b04caadfe822679e61f..bebb2f9c07175900f6720af6a249394be6219ed1 100644
--- a/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/scheduling/ChunkTaskScheduler.java
+++ b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/scheduling/ChunkTaskScheduler.java
@@ -921,9 +921,10 @@ public final class ChunkTaskScheduler {
@@ -938,9 +938,10 @@ public final class ChunkTaskScheduler {
}
}
@@ -346,10 +346,10 @@ index 1e9873d7b258ce1f0b2437cb1e487157a16f6834..94f1337bb63a505641b66e6cbf0cc288
public CrashReportCategory(String title) {
this.title = title;
diff --git a/src/main/java/net/minecraft/Util.java b/src/main/java/net/minecraft/Util.java
index 1360aa8202542d3d0f32247f1123575fc2c38ff1..c9c1a2bd96804835250ff3b921277e4fe6191bcc 100644
index 38ffa1c4c204f73746c4b87127de92b631548eb1..47d5d23f3cc3a173785c0f4971f97b343ba328df 100644
--- a/src/main/java/net/minecraft/Util.java
+++ b/src/main/java/net/minecraft/Util.java
@@ -592,7 +592,7 @@ public class Util {
@@ -597,7 +597,7 @@ public class Util {
} else if (futures.size() == 1) {
return futures.get(0).thenApply(List::of);
} else {
@@ -479,7 +479,7 @@ index a2920b8a9eff77d9c5d1d7f70ad3abdacba8f0fa..80a28985e072334d960fe5a674d9bb08
protected CipherBase(Cipher cipher) {
this.cipher = cipher;
diff --git a/src/main/java/net/minecraft/network/Connection.java b/src/main/java/net/minecraft/network/Connection.java
index 44a31f6f44885598ee06e88b940b84b1e89e5430..01158f1f4aa13cefb46c0ed7cce55dbbde89b521 100644
index 8661c1b1cfe2b3db000e1f08814fd4409c4b7fab..26456c0980315d8e38b68630ffeaf657aa02b0a0 100644
--- a/src/main/java/net/minecraft/network/Connection.java
+++ b/src/main/java/net/minecraft/network/Connection.java
@@ -326,7 +326,7 @@ public class Connection extends SimpleChannelInboundHandler<Packet<?>> {
@@ -609,10 +609,10 @@ index 8dd9375f2ad2c65a773a3195aeff1f977e09e7e0..89cfe5a4e1554dd722ca98ec8c896e85
private ChunkMap getChunkMap() {
return (ChunkMap)this.playerProvider;
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
index 3a8b566aa44df367c6edacf371c0b7a2bd2548b6..20d9cd87fcbdd666231746ca1b364cde7016b5d6 100644
index 25b646c973cc1d304b8adb3cef4cf443d459b489..df0f52ee12eeab816c8920d6844a284239143054 100644
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
@@ -1364,7 +1364,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
@@ -1366,7 +1366,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
public static List<Entity> getCurrentlyTickingEntities() {
Entity ticking = currentlyTickingEntity.get();
@@ -715,25 +715,25 @@ index a371f685534bf161f476ccea431fec6a80aca9c1..d2addf2453fa35779f0197f54a102e06
}
diff --git a/src/main/java/net/minecraft/world/entity/animal/Bee.java b/src/main/java/net/minecraft/world/entity/animal/Bee.java
index bf4a3bc730709f41a5089dfe4c6342b08057ef02..b8ac4ff028dc839a7f1d0c1b9922b0507dc384db 100644
index d83f75719a3be1b5b2c544d89b63a4df420c73d2..f3b1671a815c953435bf49616ab7c35856bdc352 100644
--- a/src/main/java/net/minecraft/world/entity/animal/Bee.java
+++ b/src/main/java/net/minecraft/world/entity/animal/Bee.java
@@ -257,7 +257,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal {
@@ -261,7 +261,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal {
this.goalSelector.addGoal(8, new Bee.BeeWanderGoal());
this.goalSelector.addGoal(9, new FloatGoal(this));
this.targetSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur
this.targetSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - Ridables
- this.targetSelector.addGoal(1, (new Bee.BeeHurtByOtherGoal(this)).setAlertOthers(new Class[0]));
+ this.targetSelector.addGoal(1, (new Bee.BeeHurtByOtherGoal(this)).setAlertOthers()); // Plazma - Reduce allocations
this.targetSelector.addGoal(2, new Bee.BeeBecomeAngryTargetGoal(this));
this.targetSelector.addGoal(3, new ResetUniversalAngerTargetGoal<>(this, true));
}
diff --git a/src/main/java/net/minecraft/world/entity/animal/IronGolem.java b/src/main/java/net/minecraft/world/entity/animal/IronGolem.java
index cf071f48fb9b3acb7fabe4295de979dfca1079b4..fb663d60f6245f16fb4a09ce7c6fa65badfa1e36 100644
index 1c918dfcb8b3c05394fea6dcc50c5bfc48cb3634..24a05c3b18690656ce5305c0e4d118f635cc9b6a 100644
--- a/src/main/java/net/minecraft/world/entity/animal/IronGolem.java
+++ b/src/main/java/net/minecraft/world/entity/animal/IronGolem.java
@@ -119,7 +119,7 @@ public class IronGolem extends AbstractGolem implements NeutralMob {
@@ -123,7 +123,7 @@ public class IronGolem extends AbstractGolem implements NeutralMob {
this.goalSelector.addGoal(8, new RandomLookAroundGoal(this));
this.targetSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur
this.targetSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - Ridables
this.targetSelector.addGoal(1, new DefendVillageTargetGoal(this));
- this.targetSelector.addGoal(2, new HurtByTargetGoal(this, new Class[0]));
+ this.targetSelector.addGoal(2, new HurtByTargetGoal(this)); // Plazma - Reduce allocations
@@ -741,23 +741,23 @@ index cf071f48fb9b3acb7fabe4295de979dfca1079b4..fb663d60f6245f16fb4a09ce7c6fa65b
this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, Mob.class, 5, false, false, (entityliving, worldserver) -> {
return entityliving instanceof Enemy && !(entityliving instanceof Creeper);
diff --git a/src/main/java/net/minecraft/world/entity/animal/Panda.java b/src/main/java/net/minecraft/world/entity/animal/Panda.java
index 2df413fce51db6360c2a55fde72061135e0bd3a9..ae5d66afa5573596df9c322d9bb5c270777e8b8b 100644
index adeb06f913b53d802f03d3def1303e298fe589e4..d2b6ec6f1cbae2063240210695f73e96ed8c436a 100644
--- a/src/main/java/net/minecraft/world/entity/animal/Panda.java
+++ b/src/main/java/net/minecraft/world/entity/animal/Panda.java
@@ -338,7 +338,7 @@ public class Panda extends Animal {
@@ -342,7 +342,7 @@ public class Panda extends Animal {
this.goalSelector.addGoal(13, new FollowParentGoal(this, 1.25D));
this.goalSelector.addGoal(14, new WaterAvoidingRandomStrollGoal(this, 1.0D));
this.targetSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur
this.targetSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - Ridables
- this.targetSelector.addGoal(1, (new Panda.PandaHurtByTargetGoal(this, new Class[0])).setAlertOthers(new Class[0]));
+ this.targetSelector.addGoal(1, (new Panda.PandaHurtByTargetGoal(this)).setAlertOthers()); // Plazma - Reduce allocations
}
public static AttributeSupplier.Builder createAttributes() {
diff --git a/src/main/java/net/minecraft/world/entity/animal/Rabbit.java b/src/main/java/net/minecraft/world/entity/animal/Rabbit.java
index 034dec437d6a6df5664185de77245bd17fcdd59b..67788747c84174054bfc2f66a4596837e08dd046 100644
index 761745f759614c43426b1bdf7bc8ca7b5aff100a..777764b74ac6e809b4b353117a0f31299bb651e3 100644
--- a/src/main/java/net/minecraft/world/entity/animal/Rabbit.java
+++ b/src/main/java/net/minecraft/world/entity/animal/Rabbit.java
@@ -458,7 +458,7 @@ public class Rabbit extends Animal implements VariantHolder<Rabbit.Variant> {
@@ -462,7 +462,7 @@ public class Rabbit extends Animal implements VariantHolder<Rabbit.Variant> {
if (variant == Rabbit.Variant.EVIL) {
this.getAttribute(Attributes.ARMOR).setBaseValue(8.0D);
this.goalSelector.addGoal(4, new MeleeAttackGoal(this, 1.4D, true));
@@ -767,11 +767,11 @@ index 034dec437d6a6df5664185de77245bd17fcdd59b..67788747c84174054bfc2f66a4596837
this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, Wolf.class, true));
this.getAttribute(Attributes.ATTACK_DAMAGE).addOrUpdateTransientModifier(new AttributeModifier(Rabbit.EVIL_ATTACK_POWER_MODIFIER, 5.0D, AttributeModifier.Operation.ADD_VALUE));
diff --git a/src/main/java/net/minecraft/world/entity/animal/Wolf.java b/src/main/java/net/minecraft/world/entity/animal/Wolf.java
index 14d3e09e8eca665d186f5d356158052b118c6848..02927b6face86a9825a97b767c8de85838a79725 100644
index 9f4681cb70f0e42e07968024cee010990644ba53..a736db8b5764a47511433887ff1db702179e9d59 100644
--- a/src/main/java/net/minecraft/world/entity/animal/Wolf.java
+++ b/src/main/java/net/minecraft/world/entity/animal/Wolf.java
@@ -247,7 +247,7 @@ public class Wolf extends TamableAnimal implements NeutralMob, VariantHolder<Hol
this.targetSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur
@@ -252,7 +252,7 @@ public class Wolf extends TamableAnimal implements NeutralMob, VariantHolder<Hol
this.targetSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - Ridables
this.targetSelector.addGoal(1, new OwnerHurtByTargetGoal(this));
this.targetSelector.addGoal(2, new OwnerHurtTargetGoal(this));
- this.targetSelector.addGoal(3, (new HurtByTargetGoal(this, new Class[0])).setAlertOthers());
@@ -780,7 +780,7 @@ index 14d3e09e8eca665d186f5d356158052b118c6848..02927b6face86a9825a97b767c8de858
// this.targetSelector.addGoal(5, new NonTameRandomTargetGoal<>(this, Animal.class, false, Wolf.PREY_SELECTOR)); // Purpur - moved to updatePathfinders()
this.targetSelector.addGoal(6, new NonTameRandomTargetGoal<>(this, Turtle.class, false, Turtle.BABY_ON_LAND_SELECTOR));
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 a660d8bfa1294cd44dfa89f4c15bd339ffcccecf..dc833fe4aed149a4edbf668af4bc12937f6a4850 100644
index 634e11a1c279066c7bf682776344f1c829e061a4..502277270c38cfcbd686455552d2b54701774e5f 100644
--- a/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java
+++ b/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java
@@ -88,7 +88,7 @@ public class Allay extends PathfinderMob implements InventoryCarrier, VibrationS
@@ -807,38 +807,38 @@ index 48826eb0a960f7af6dd2ef184a8aed744a1d8f83..495a24d4e6705902c36032227bdfa359
public static final EnderDragonPhase<DragonStrafePlayerPhase> STRAFE_PLAYER = create(DragonStrafePlayerPhase.class, "StrafePlayer");
public static final EnderDragonPhase<DragonLandingApproachPhase> LANDING_APPROACH = create(DragonLandingApproachPhase.class, "LandingApproach");
diff --git a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java
index 05fb8b26369f7703c6a97f1764a71bd4c3fe1058..82b31ced06d883a817b6d7036f8fce8481b463b9 100644
index 08bff1102179551eeeeed7f65aaa1ab501ca8683..91839fc6b8013c31d562c21670985d42747bfdce 100644
--- a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java
+++ b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java
@@ -258,7 +258,7 @@ public class WitherBoss extends Monster implements RangedAttackMob {
@@ -260,7 +260,7 @@ public class WitherBoss extends Monster implements RangedAttackMob {
this.goalSelector.addGoal(6, new LookAtPlayerGoal(this, Player.class, 8.0F));
this.goalSelector.addGoal(7, new RandomLookAroundGoal(this));
this.targetSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur
this.targetSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - Ridables
- this.targetSelector.addGoal(1, new HurtByTargetGoal(this, new Class[0]));
+ this.targetSelector.addGoal(1, new HurtByTargetGoal(this)); // Plazma - Reduce allocations
this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, LivingEntity.class, 0, false, false, WitherBoss.LIVING_ENTITY_SELECTOR));
}
diff --git a/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java b/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java
index 41c6b60a9d0210b7f2c660cc03999be9c9bc344e..8acafd4f4d2dec45fb18f89a0be5c4a584c44904 100644
index 2ff72241928a1d07be936cd764e7408d202f39e0..334cc9474e0a81c34babffc22e25d52c6e2fbf17 100644
--- a/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java
+++ b/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java
@@ -81,7 +81,7 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo
@@ -83,7 +83,7 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo
this.goalSelector.addGoal(6, new LookAtPlayerGoal(this, Player.class, 8.0F));
this.goalSelector.addGoal(6, new RandomLookAroundGoal(this));
this.targetSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur
this.targetSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - Ridables
- this.targetSelector.addGoal(1, new HurtByTargetGoal(this, new Class[0]));
+ this.targetSelector.addGoal(1, new HurtByTargetGoal(this)); // Plazma - Reduce allocations
this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, Player.class, true));
this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, IronGolem.class, true));
this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, Turtle.class, 10, true, false, Turtle.BABY_ON_LAND_SELECTOR));
diff --git a/src/main/java/net/minecraft/world/entity/monster/Creeper.java b/src/main/java/net/minecraft/world/entity/monster/Creeper.java
index 3b2560ee1bb8c415eada619fc057d35ccb0e2ab0..82ccbcef029066a1b48c0844e974380d89059910 100644
index 7a6c3eb850e463a64bfc23c7d3c46ddabeeb251d..a346f13be03481311a18f3778fed6e0d4343d15e 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Creeper.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Creeper.java
@@ -154,7 +154,7 @@ public class Creeper extends Monster {
@@ -161,7 +161,7 @@ public class Creeper extends Monster {
this.goalSelector.addGoal(6, new RandomLookAroundGoal(this));
this.targetSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur
this.targetSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - Ridables
this.targetSelector.addGoal(1, new NearestAttackableTargetGoal<>(this, Player.class, true));
- this.targetSelector.addGoal(2, new HurtByTargetGoal(this, new Class[0]));
+ this.targetSelector.addGoal(2, new HurtByTargetGoal(this)); // Plazma - Reduce allocations
@@ -846,12 +846,12 @@ index 3b2560ee1bb8c415eada619fc057d35ccb0e2ab0..82ccbcef029066a1b48c0844e974380d
public static AttributeSupplier.Builder createAttributes() {
diff --git a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java
index d57f6b312341f6d83788bbb294cc65ee47361373..aff74f0ca5a8a007b919151194f8ef578ce6fda4 100644
index 017c86be270ae395be84f6bc30c9288af6278fb7..6a6e2856e8bd361880dcc91638f74f98fa9bf3b0 100644
--- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java
+++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java
@@ -136,7 +136,7 @@ public class EnderMan extends Monster implements NeutralMob {
@@ -137,7 +137,7 @@ public class EnderMan extends Monster implements NeutralMob {
this.goalSelector.addGoal(11, new EnderMan.EndermanTakeBlockGoal(this));
this.targetSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur
this.targetSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - Ridables
this.targetSelector.addGoal(1, new EnderMan.EndermanLookForPlayerGoal(this, this::isAngryAt));
- this.targetSelector.addGoal(2, new HurtByTargetGoal(this, new Class[0]));
+ this.targetSelector.addGoal(2, new HurtByTargetGoal(this)); // Plazma - Reduce allocations
@@ -859,49 +859,49 @@ index d57f6b312341f6d83788bbb294cc65ee47361373..aff74f0ca5a8a007b919151194f8ef57
this.targetSelector.addGoal(4, new ResetUniversalAngerTargetGoal<>(this, false));
}
diff --git a/src/main/java/net/minecraft/world/entity/monster/Endermite.java b/src/main/java/net/minecraft/world/entity/monster/Endermite.java
index 063954513b5c69047298a98224d7e099e18588bf..be9a5957b076268d79445d6daf7ae0deac32f6eb 100644
index fd292373f5f8bf6f5773d5eea1a7470e8eae4231..0aa7d7ceccf77fac4d43d6c2fc814e4b1aec4dd3 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Endermite.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Endermite.java
@@ -90,7 +90,7 @@ public class Endermite extends Monster {
@@ -94,7 +94,7 @@ public class Endermite extends Monster {
this.goalSelector.addGoal(7, new LookAtPlayerGoal(this, Player.class, 8.0F));
this.goalSelector.addGoal(8, new RandomLookAroundGoal(this));
this.targetSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur
this.targetSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - Ridables
- this.targetSelector.addGoal(1, (new HurtByTargetGoal(this, new Class[0])).setAlertOthers());
+ this.targetSelector.addGoal(1, (new HurtByTargetGoal(this)).setAlertOthers()); // Plazma - Reduce allocations
this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, Player.class, true));
}
diff --git a/src/main/java/net/minecraft/world/entity/monster/Silverfish.java b/src/main/java/net/minecraft/world/entity/monster/Silverfish.java
index 7a6ad611faf39eb8dd87bd498169571633c33769..2a3edfeab8306efe013084de44e1c372fffe98d6 100644
index 78aec4acc84b228537f90172f2e4c346b665bc0b..6fec80e4b8911b5cf2849904f060e05042477117 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Silverfish.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Silverfish.java
@@ -89,7 +89,7 @@ public class Silverfish extends Monster {
@@ -92,7 +92,7 @@ public class Silverfish extends Monster {
this.goalSelector.addGoal(4, new MeleeAttackGoal(this, 1.0D, false));
this.goalSelector.addGoal(5, new Silverfish.SilverfishMergeWithStoneGoal(this));
this.targetSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur
this.targetSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - Ridables
- this.targetSelector.addGoal(1, (new HurtByTargetGoal(this, new Class[0])).setAlertOthers());
+ this.targetSelector.addGoal(1, (new HurtByTargetGoal(this)).setAlertOthers()); // Plazma - Reduce allocations
this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, Player.class, true));
}
diff --git a/src/main/java/net/minecraft/world/entity/monster/Spider.java b/src/main/java/net/minecraft/world/entity/monster/Spider.java
index 74f8903541d5288f2a50769ffc5ef88e0c9aad1b..b58cef316e85edde6200fe870144334a19ef193d 100644
index 49fa54b2d46c916d8f43c78080ea04eb37e60717..e4144c76d541158b2fc5699158608123802dd453 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Spider.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Spider.java
@@ -97,7 +97,7 @@ public class Spider extends Monster {
@@ -100,7 +100,7 @@ public class Spider extends Monster {
this.goalSelector.addGoal(6, new LookAtPlayerGoal(this, Player.class, 8.0F));
this.goalSelector.addGoal(6, new RandomLookAroundGoal(this));
this.targetSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur
this.targetSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - Ridables
- this.targetSelector.addGoal(1, new HurtByTargetGoal(this, new Class[0]));
+ this.targetSelector.addGoal(1, new HurtByTargetGoal(this)); // Plazma - Reduce allocations
this.targetSelector.addGoal(2, new Spider.SpiderTargetGoal<>(this, Player.class));
this.targetSelector.addGoal(3, new Spider.SpiderTargetGoal<>(this, IronGolem.class));
}
diff --git a/src/main/java/net/minecraft/world/entity/monster/Zombie.java b/src/main/java/net/minecraft/world/entity/monster/Zombie.java
index 6628efb0ec59e68810152a64309bc5f610181392..badde720a15f3a9a0c0c8b6b66b387b3b1aabd64 100644
index 68a928e42df03f111cfc000945a6020e484e6e7f..e5a8343542339036475e3d23958121e9d388fd44 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java
@@ -170,7 +170,7 @@ public class Zombie extends Monster {
@@ -174,7 +174,7 @@ public class Zombie extends Monster {
this.goalSelector.addGoal(2, new ZombieAttackGoal(this, 1.0D, false));
this.goalSelector.addGoal(6, new MoveThroughVillageGoal(this, 1.0D, true, 4, this::canBreakDoors));
this.goalSelector.addGoal(7, new WaterAvoidingRandomStrollGoal(this, 1.0D));
@@ -911,10 +911,10 @@ index 6628efb0ec59e68810152a64309bc5f610181392..badde720a15f3a9a0c0c8b6b66b387b3
// Purpur start
if ( this.level().spigotConfig.zombieAggressiveTowardsVillager ) this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, AbstractVillager.class, false) { // Spigot
diff --git a/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java b/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java
index 8c3271dcc8c9aa58e2e007eba282c11e42b4e0c9..dd69e6efade81c6421f9cf0365d42092529cee63 100644
index c0e611f3222ffacfbd0683c8c65b778f9012a2ad..15a18f3cc7f37860d8137d8f5f8d91834610e7a6 100644
--- a/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java
+++ b/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java
@@ -120,7 +120,7 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob {
@@ -124,7 +124,7 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob {
protected void addBehaviourGoals() {
this.goalSelector.addGoal(2, new ZombieAttackGoal(this, 1.0D, false));
this.goalSelector.addGoal(7, new WaterAvoidingRandomStrollGoal(this, 1.0D));
@@ -960,10 +960,10 @@ index 2490a42c9c35c7e080279ef8566288a28362d167..34d6eaebfe03716c8cbbb5395024b0da
String[] strings = new String[pattern.size() - l - k];
diff --git a/src/main/java/net/minecraft/world/level/block/ComposterBlock.java b/src/main/java/net/minecraft/world/level/block/ComposterBlock.java
index f5b498bf68d351e42f5db5ae28aab4923847e3a5..73f5ccf83285d5514907160e3cc5f5c1cde73d6b 100644
index e5e8a4e71c3caf35c50803b7b966cd34adafc647..bbc92b0c8d8d43d442f39640f6929a81be980006 100644
--- a/src/main/java/net/minecraft/world/level/block/ComposterBlock.java
+++ b/src/main/java/net/minecraft/world/level/block/ComposterBlock.java
@@ -462,7 +462,7 @@ public class ComposterBlock extends Block implements WorldlyContainerHolder {
@@ -464,7 +464,7 @@ public class ComposterBlock extends Block implements WorldlyContainerHolder {
@Override
public int[] getSlotsForFace(Direction side) {
@@ -972,7 +972,7 @@ index f5b498bf68d351e42f5db5ae28aab4923847e3a5..73f5ccf83285d5514907160e3cc5f5c1
}
@Override
@@ -511,7 +511,7 @@ public class ComposterBlock extends Block implements WorldlyContainerHolder {
@@ -513,7 +513,7 @@ public class ComposterBlock extends Block implements WorldlyContainerHolder {
@Override
public int[] getSlotsForFace(Direction side) {
@@ -981,7 +981,7 @@ index f5b498bf68d351e42f5db5ae28aab4923847e3a5..73f5ccf83285d5514907160e3cc5f5c1
}
@Override
@@ -553,7 +553,7 @@ public class ComposterBlock extends Block implements WorldlyContainerHolder {
@@ -555,7 +555,7 @@ public class ComposterBlock extends Block implements WorldlyContainerHolder {
@Override
public int[] getSlotsForFace(Direction side) {
@@ -991,7 +991,7 @@ index f5b498bf68d351e42f5db5ae28aab4923847e3a5..73f5ccf83285d5514907160e3cc5f5c1
@Override
diff --git a/src/main/java/net/minecraft/world/level/chunk/status/ChunkStep.java b/src/main/java/net/minecraft/world/level/chunk/status/ChunkStep.java
index 4e56398a6fb8b97199f4c74ebebc1055fb718dcf..84faa524b57e1877ed6006be6784b07bc2805ecc 100644
index f9aad1b8c02b70e620efdc2a58cadf4fff0f3ed5..ccfddd8c47572561238bd27fced90e1c36a53dc3 100644
--- a/src/main/java/net/minecraft/world/level/chunk/status/ChunkStep.java
+++ b/src/main/java/net/minecraft/world/level/chunk/status/ChunkStep.java
@@ -144,7 +144,7 @@ public final class ChunkStep implements ca.spottedleaf.moonrise.patches.chunk_sy
@@ -1148,10 +1148,10 @@ index 8a4f95049c63afb28bef6719c77b7a7092e75aae..f295205e3093f8c3c4ed4c1cf6ac3aaf
System.out.println("Starting server");
Thread runThread = new Thread(() -> {
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index 63065a22ff359c142bab23fccacfd5ebd86f81a5..b788c9c1b162ea5b71754a1061565531b8cf1548 100644
index c2df3c38f58d8dcb5e3d62077655af56a3bffd65..20ffe2ac1a7ad4549f46855abdfa0579bcaf82ff 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -520,7 +520,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -521,7 +521,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
public void sendTitle(com.destroystokyo.paper.Title title) {
Preconditions.checkNotNull(title, "Title is null");
setTitleTimes(title.getFadeIn(), title.getStay(), title.getFadeOut());

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Ticking Controller
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index 26c5cb68b464305fde43e2e0e1a415a2425483ea..ef1b47ebb8d79fbe177d4ad08e07bd182657c5d3 100644
index 8964ccc27ea7db306140fd6b04c9f5cb33158aa0..bd8048bfe2a93c3a4b4bb84e7d992a8bb0c65778 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -1689,6 +1689,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1654,6 +1654,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
}
public void tickServer(BooleanSupplier shouldKeepTicking) {
@@ -29,10 +29,10 @@ index 660a142036c4e608d3d6fed6ec700a3488400bec..d092bef5e6626f000a44a0f424f247a1
long m = Util.getNanos();
long n = m - l;
diff --git a/src/main/java/net/minecraft/server/level/ServerChunkCache.java b/src/main/java/net/minecraft/server/level/ServerChunkCache.java
index e1957ad2a804f1272ccd458560bd7bde4ed0fe53..97e9f64498b9eb4d595e94cc63038363092809ae 100644
index a84faa2e82a8d33b7bfe71f174f2913b585d99e8..0d8800d05bd6a14b3d5702d6a51f8cb0c7ae2186 100644
--- a/src/main/java/net/minecraft/server/level/ServerChunkCache.java
+++ b/src/main/java/net/minecraft/server/level/ServerChunkCache.java
@@ -621,7 +621,7 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon
@@ -630,7 +630,7 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon
// this.lastSpawnState = spawnercreature_d; // Pufferfish - this is managed asynchronously
//profiler.popPush("spawnAndTick"); // Plazma - Completely remove Mojang profiler
boolean flag = this.level.getGameRules().getBoolean(GameRules.RULE_DOMOBSPAWNING) && !this.level.players().isEmpty(); // CraftBukkit
@@ -42,13 +42,13 @@ index e1957ad2a804f1272ccd458560bd7bde4ed0fe53..97e9f64498b9eb4d595e94cc63038363
if (flag && (this.spawnEnemies || this.spawnFriendlies)) {
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
index 137138aa1e42d4f12ed0bc54bc25918d29120333..b1bdd91eb821dee6c20bed9adb019eda2e8395d7 100644
index 9a54883281352cc4fa08143f5126d61dbd89761d..982b172b188fb890fa7719662e67a007ab172668 100644
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
@@ -908,7 +908,12 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
@@ -909,7 +909,12 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
this.setDayTime(this.preciseTime);
} else
// Purpur end
// Purpur end - Configurable daylight cycle
- this.setDayTime(this.levelData.getDayTime() + 1L);
+ // Plazma start - TickControl System
+ if (org.plazmamc.plazma.configurations.GlobalConfiguration.get().tickControl.accelerate.dayTime)
@@ -60,7 +60,7 @@ index 137138aa1e42d4f12ed0bc54bc25918d29120333..b1bdd91eb821dee6c20bed9adb019eda
}
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
index 9cd39ccca746c96809e3e1862e25240714662fb2..5f8415f510bb13f9ffe16c869cf8b010c5cbb5e8 100644
index d6d43ad1677d035c26619b73e5a2dd6e72ab278b..ee6ad451ba8755cf296e9c0a01404a5ed025e749 100644
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
@@ -562,6 +562,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
@@ -100,7 +100,7 @@ index b4a8249964786d484aa0767d0e73d71d2156f0e8..49505d04c737c41e4229d80a7b96d4ed
return this.portal.getLocalTransition();
}
diff --git a/src/main/java/net/minecraft/world/entity/item/ItemEntity.java b/src/main/java/net/minecraft/world/entity/item/ItemEntity.java
index 8c5dff4e24c1366d583ba9c7c2c15ea166a24933..96f34e3cd6fcb44f503ce25a3479997ed84c7ce7 100644
index 4aaaadce69e62fa371d5b441e5e69c1384e5d63e..97c63c335287e01b20687eeea4a5815520363e13 100644
--- a/src/main/java/net/minecraft/world/entity/item/ItemEntity.java
+++ b/src/main/java/net/minecraft/world/entity/item/ItemEntity.java
@@ -158,6 +158,7 @@ public class ItemEntity extends Entity implements TraceableEntity {
@@ -112,10 +112,10 @@ index 8c5dff4e24c1366d583ba9c7c2c15ea166a24933..96f34e3cd6fcb44f503ce25a3479997e
// Paper start - remove anti tick skipping measures / wall time - revert to vanilla
if (this.pickupDelay > 0 && this.pickupDelay != 32767) {
diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java
index f92b72ee0172cd878baef69b9710dbaf7e5c4495..7865f5375ab3938e326a76766517785821efe19a 100644
index 5a9e85c44fbb716dc1e8616645732cb8db947ee9..4ea1a327c80f915aa45ccf3a5955ed6ff42692c1 100644
--- a/src/main/java/net/minecraft/world/entity/player/Player.java
+++ b/src/main/java/net/minecraft/world/entity/player/Player.java
@@ -302,6 +302,11 @@ public abstract class Player extends LivingEntity {
@@ -305,6 +305,11 @@ public abstract class Player extends LivingEntity {
if (this.sleepCounter > 100) {
this.sleepCounter = 100;
}
@@ -128,7 +128,7 @@ index f92b72ee0172cd878baef69b9710dbaf7e5c4495..7865f5375ab3938e326a767665177858
if (/*!this.level().isClientSide &&*/ this.level().isDay()) { // Plazma - Remove persist 'isClientSide' flag
this.stopSleepInBed(false, true);
diff --git a/src/main/java/net/minecraft/world/item/Item.java b/src/main/java/net/minecraft/world/item/Item.java
index 7fc8fcab93be9076391a2981d028831cbd02a3d2..dccc95834b4cf625b7f5ce88916cbf9a865d87a4 100644
index 29afbe0aa72f12d8fa6c03af55d17abef89c8dd4..78742ef91ed332d229d007af9224555a79cd6be9 100644
--- a/src/main/java/net/minecraft/world/item/Item.java
+++ b/src/main/java/net/minecraft/world/item/Item.java
@@ -260,7 +260,7 @@ public class Item implements FeatureElement, ItemLike {
@@ -141,7 +141,7 @@ index 7fc8fcab93be9076391a2981d028831cbd02a3d2..dccc95834b4cf625b7f5ce88916cbf9a
public boolean releaseUsing(ItemStack stack, Level world, LivingEntity user, int remainingUseTicks) {
diff --git a/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java b/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java
index dcf2dcece3e995ce4646b931329246be19a4e1c2..b99945c052d62e293bd3e516c7e9e407d358bbb7 100644
index c8ae6e4cd74549f753ec04def5d882de1ab72308..b01b80ff0318f95a737ce3f93a5c69426019cc9c 100644
--- a/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java
+++ b/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java
@@ -336,13 +336,14 @@ public abstract class BlockBehaviour implements FeatureElement {
@@ -167,10 +167,10 @@ index dcf2dcece3e995ce4646b931329246be19a4e1c2..b99945c052d62e293bd3e516c7e9e407
protected void spawnAfterBreak(BlockState state, ServerLevel world, BlockPos pos, ItemStack tool, boolean dropExperience) {}
diff --git a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java
index 2966caede97e01b5ad15a0d56232a0f5526685e2..f1baa2a5ba541fb4a99500b2c79326dec1cd0128 100644
index a1756429e8fc09cfd78109c4d5113857304b317d..158da3ebd4b09d8c682960ff658a2e861cbee6dc 100644
--- a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java
+++ b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java
@@ -1076,8 +1076,18 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p
@@ -1081,8 +1081,18 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p
this.chunkCoordinateKey = chunkCoordinateKey;
}
@@ -190,7 +190,7 @@ index 2966caede97e01b5ad15a0d56232a0f5526685e2..f1baa2a5ba541fb4a99500b2c79326de
if (this.blockEntity.isRemoved() || !this.blockEntity.hasLevel()) return;
BlockPos pos = this.blockEntity.getBlockPos();
@@ -1087,7 +1097,7 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p
@@ -1092,7 +1102,7 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p
BlockState state = LevelChunk.this.getBlockState(pos);
if (this.blockEntity.getType().isValid(state)) {
@@ -226,10 +226,10 @@ index 028aea6640356ba80f5d682e3cc03b7f82f5b9c7..d788849dc5a568d455cd83ca5b6e1b4b
@Override
diff --git a/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java b/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java
index db31d0c066e92fe308e7e64075e832bec66a5c02..04a8bb41b27b8c435203991bebddccb27f472cdb 100644
index 768cb135081c233a820566015ed58351e417c45c..898f9e6ec6f306a15639ee0d03bcfe7bf55e2c6c 100644
--- a/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java
+++ b/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java
@@ -200,4 +200,39 @@ public class GlobalConfiguration extends ConfigurationPart {
@@ -195,4 +195,39 @@ public class GlobalConfiguration extends ConfigurationPart {
}

View File

@@ -0,0 +1,225 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: AlphaKR93 <dev@alpha93.kr>
Date: Wed, 22 Jan 2025 11:50:19 +0900
Subject: [PATCH] Bundle as quivers
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
index ee6ad451ba8755cf296e9c0a01404a5ed025e749..53c62f51bcdaecba265eb2e0f5e69e890b1b0b03 100644
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
@@ -4774,7 +4774,13 @@ public abstract class LivingEntity extends Entity implements Attackable {
return !this.isSleeping() && super.isInWall();
}
- public ItemStack getProjectile(ItemStack stack) {
+ // Plazma start - Bundle as quivers!
+ public final ItemStack getProjectile(final ItemStack stack) {
+ return this.getProjectile(stack, false, false);
+ }
+
+ public ItemStack getProjectile(final ItemStack stack, final boolean bundle, final boolean shrink) {
+ // Plazma end - Bundle as quivers!
return ItemStack.EMPTY;
}
diff --git a/src/main/java/net/minecraft/world/entity/monster/Monster.java b/src/main/java/net/minecraft/world/entity/monster/Monster.java
index c2061f575c731ecc6071384b007517c08e0cf983..a9f7a1ef69fa6fb8ce45237dd812a4827eb5940d 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Monster.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Monster.java
@@ -143,7 +143,7 @@ public abstract class Monster extends PathfinderMob implements Enemy {
}
@Override
- public ItemStack getProjectile(ItemStack stack) {
+ public final ItemStack getProjectile(final ItemStack stack, final boolean bundle, final boolean shrink) { // Plazma - Bundle as quivers!
if (stack.getItem() instanceof ProjectileWeaponItem) {
Predicate<ItemStack> predicate = ((ProjectileWeaponItem)stack.getItem()).getSupportedHeldProjectiles();
ItemStack itemStack = ProjectileWeaponItem.getHeldProjectile(this, predicate);
diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java
index 4ea1a327c80f915aa45ccf3a5955ed6ff42692c1..121c2a78b0ae30785dcb3587cfd228d049e10993 100644
--- a/src/main/java/net/minecraft/world/entity/player/Player.java
+++ b/src/main/java/net/minecraft/world/entity/player/Player.java
@@ -2321,30 +2321,49 @@ public abstract class Player extends LivingEntity {
// Paper end - PlayerReadyArrowEvent
@Override
- public ItemStack getProjectile(ItemStack stack) {
- if (!(stack.getItem() instanceof ProjectileWeaponItem)) {
- return ItemStack.EMPTY;
- } else {
- Predicate<ItemStack> predicate = ((ProjectileWeaponItem) stack.getItem()).getSupportedHeldProjectiles().and(item -> tryReadyArrow(stack, item)); // Paper - PlayerReadyArrowEvent
- ItemStack itemstack1 = ProjectileWeaponItem.getHeldProjectile(this, predicate);
+ // Plazma start - Bundle as quivers!
+ public final ItemStack getProjectile(final ItemStack stack, final boolean bundle, final boolean shrink) {
+ if (!(stack.getItem() instanceof ProjectileWeaponItem weapon)) return ItemStack.EMPTY;
- if (!itemstack1.isEmpty()) {
- return itemstack1;
- } else {
- predicate = ((ProjectileWeaponItem) stack.getItem()).getAllSupportedProjectiles().and(item -> tryReadyArrow(stack, item)); // Paper - PlayerReadyArrowEvent
+ Predicate<ItemStack> predicate = weapon.getSupportedHeldProjectiles().and(item -> tryReadyArrow(stack, item)); // Paper - PlayerReadyArrowEvent
+ final ItemStack held = ProjectileWeaponItem.getHeldProjectile(this, predicate);
+ if (!held.isEmpty()) return held;
+
+ predicate = weapon.getAllSupportedProjectiles().and(item -> tryReadyArrow(stack, item)); // Paper - PlayerReadyArrowEvent
+ for (int i = 0; i < this.inventory.getContainerSize(); ++i) {
+ ItemStack item = this.inventory.getItem(i);
- for (int i = 0; i < this.inventory.getContainerSize(); ++i) {
- ItemStack itemstack2 = this.inventory.getItem(i);
+ if (bundle && item.getItem() instanceof net.minecraft.world.item.BundleItem) {
+ final net.minecraft.world.item.component.BundleContents contents = item.get(net.minecraft.core.component.DataComponents.BUNDLE_CONTENTS);
+ if (contents == null || contents.isEmpty()) continue;
- if (predicate.test(itemstack2)) {
- return itemstack2;
- }
+ final Optional<ItemStack> optional = contents.itemCopyStream().filter(predicate).findFirst();
+ if (optional.isEmpty()) continue;
+
+ final ItemStack first = optional.get();
+ if (shrink) {
+ final net.minecraft.world.item.component.BundleContents.Mutable mutable = new net.minecraft.world.item.component.BundleContents.Mutable(contents);
+ final ItemStack next = mutable.removeOne(first.copyAndClear());
+ if (next == null) continue;
+
+ next.shrink(1);
+ if (next.getCount() != 0) mutable.tryInsert(next);
+
+ item.set(net.minecraft.core.component.DataComponents.BUNDLE_CONTENTS, mutable.toImmutable());
}
- return this.abilities.instabuild ? new ItemStack(Items.ARROW) : ItemStack.EMPTY;
+ first.setCount(1);
+ return first;
+ }
+
+ if (predicate.test(item)) {
+ return item;
}
}
+
+ return this.abilities.instabuild ? new ItemStack(Items.ARROW) : ItemStack.EMPTY;
}
+ // Plazma end - Bundle as quivers!
@Override
public Vec3 getRopeHoldPosition(float delta) {
diff --git a/src/main/java/net/minecraft/world/item/BowItem.java b/src/main/java/net/minecraft/world/item/BowItem.java
index 58fa528e4b2589d362eb976afd6221cd94f2623c..6a2381e37709b05a9c5e49c34d549a6da1b8f388 100644
--- a/src/main/java/net/minecraft/world/item/BowItem.java
+++ b/src/main/java/net/minecraft/world/item/BowItem.java
@@ -27,7 +27,7 @@ public class BowItem extends ProjectileWeaponItem {
if (!(user instanceof Player player)) {
return false;
} else {
- ItemStack itemStack = player.getProjectile(stack);
+ ItemStack itemStack = player.getProjectile(stack, world.plazmaConfig().item.bundleAsQuivers.enableForBow, net.minecraft.world.item.enchantment.EnchantmentHelper.getItemEnchantmentLevel(net.minecraft.world.item.enchantment.Enchantments.INFINITY, stack) == 0); // Plazma - Bundle as quivers!
// Purpur start
if (world.purpurConfig.infinityWorksWithoutArrows && itemStack.isEmpty() && net.minecraft.world.item.enchantment.EnchantmentHelper.getItemEnchantmentLevel(net.minecraft.world.item.enchantment.Enchantments.INFINITY, stack) > 0) {
itemStack = new ItemStack(Items.ARROW);
@@ -93,7 +93,7 @@ public class BowItem extends ProjectileWeaponItem {
@Override
public InteractionResult use(Level world, Player user, InteractionHand hand) {
ItemStack itemStack = user.getItemInHand(hand);
- boolean bl = !user.getProjectile(itemStack).isEmpty();
+ boolean bl = !user.getProjectile(itemStack, world.plazmaConfig().item.bundleAsQuivers.enableForBow, false).isEmpty();
if (!user.hasInfiniteMaterials() && !bl && !(world.purpurConfig.infinityWorksWithoutArrows && net.minecraft.world.item.enchantment.EnchantmentHelper.getItemEnchantmentLevel(net.minecraft.world.item.enchantment.Enchantments.INFINITY, itemStack) > 0)) { // Purpur
return InteractionResult.FAIL;
} else {
diff --git a/src/main/java/net/minecraft/world/item/CrossbowItem.java b/src/main/java/net/minecraft/world/item/CrossbowItem.java
index f8946704838d96ad522182d2b9f41ac8bfe92ac4..c46b5e6fb007280b1ff264414c9acaf8a5f49101 100644
--- a/src/main/java/net/minecraft/world/item/CrossbowItem.java
+++ b/src/main/java/net/minecraft/world/item/CrossbowItem.java
@@ -72,7 +72,7 @@ public class CrossbowItem extends ProjectileWeaponItem {
if (chargedProjectiles != null && !chargedProjectiles.isEmpty()) {
this.performShooting(world, user, hand, itemStack, getShootingPower(chargedProjectiles), (float) world.purpurConfig.crossbowProjectileOffset, null); // Purpur
return InteractionResult.CONSUME;
- } else if (!user.getProjectile(itemStack).isEmpty()) {
+ } else if (!user.getProjectile(itemStack, world.plazmaConfig().item.bundleAsQuivers.enableForCrossbow, false).isEmpty() || net.minecraft.world.item.enchantment.EnchantmentHelper.getItemEnchantmentLevel(net.minecraft.world.item.enchantment.Enchantments.INFINITY, itemStack) > 0 && world.plazmaConfig().item.allowCrossbowInfinity) { // Plazma - Bundle as quivers!
this.startSoundPlayed = false;
this.midLoadSoundPlayed = false;
user.startUsingItem(hand);
@@ -124,7 +124,11 @@ public class CrossbowItem extends ProjectileWeaponItem {
return CrossbowItem.tryLoadProjectiles(shooter, crossbow, true);
}
private static boolean tryLoadProjectiles(LivingEntity shooter, ItemStack crossbow, boolean consume) {
- List<ItemStack> list = draw(crossbow, shooter.getProjectile(crossbow), shooter, consume);
+ // Plazma start - Bundle as quivers!
+ boolean infinity = net.minecraft.world.item.enchantment.EnchantmentHelper.getItemEnchantmentLevel(net.minecraft.world.item.enchantment.Enchantments.INFINITY, crossbow) > 0 && shooter.level().plazmaConfig().item.allowCrossbowInfinity;
+ List<ItemStack> list = draw(crossbow, shooter.getProjectile(crossbow, shooter.level().plazmaConfig().item.bundleAsQuivers.enableForBow, !infinity), shooter, consume);
+ if (list.isEmpty() && infinity) list = List.of(new ItemStack(Items.ARROW));
+ // Plazma end - Bundle as quivers!
// Paper end - Add EntityLoadCrossbowEvent
if (!list.isEmpty()) {
crossbow.set(DataComponents.CHARGED_PROJECTILES, ChargedProjectiles.of(list));
diff --git a/src/main/java/net/minecraft/world/item/component/BundleContents.java b/src/main/java/net/minecraft/world/item/component/BundleContents.java
index d4e7e92875162b67226a20c5add8973e09fd882c..6e57ed3b395b0155bdf13129c11ee8ddf4a68199 100644
--- a/src/main/java/net/minecraft/world/item/component/BundleContents.java
+++ b/src/main/java/net/minecraft/world/item/component/BundleContents.java
@@ -157,7 +157,13 @@ public final class BundleContents implements TooltipComponent {
}
private int findStackIndex(ItemStack stack) {
- if (!stack.isStackable()) {
+ // Plazma start - Bundle as quivers!
+ return this.findStackIndex(stack, false);
+ }
+
+ private int findStackIndex(final ItemStack stack, final boolean skipStackableCheck) {
+ if (!skipStackableCheck && !stack.isStackable()) {
+ // Plazma end - Bundle as quivers!
return -1;
} else {
for (int i = 0; i < this.items.size(); i++) {
@@ -211,11 +217,20 @@ public final class BundleContents implements TooltipComponent {
@Nullable
public ItemStack removeOne() {
+ // Plazma start - Bundle as quivers!
+ return this.removeOne(null);
+ }
+
+ @Nullable
+ public ItemStack removeOne(final @Nullable ItemStack stack) {
+ // Plazma end - Bundle as quivers!
if (this.items.isEmpty()) {
return null;
} else {
- int i = this.selectedItem != -1 && this.selectedItem < this.items.size() ? this.selectedItem : 0;
- ItemStack itemStack = this.items.remove(i).copy();
+ // Plazma start - Bundle as quivers!
+ int i = stack != null ? this.findStackIndex(stack, true) : this.selectedItem != -1 && this.selectedItem < this.items.size() ? this.selectedItem : 0;
+ ItemStack itemStack = this.items.remove(i != -1 ? i : 0).copy();
+ // Plazma end - Bundle as quivers!
this.weight = this.weight.subtract(BundleContents.getWeight(itemStack).multiplyBy(Fraction.getFraction(itemStack.getCount(), 1)));
this.toggleSelectedItem(-1);
return itemStack;
diff --git a/src/main/java/org/plazmamc/plazma/configurations/WorldConfigurations.java b/src/main/java/org/plazmamc/plazma/configurations/WorldConfigurations.java
index e88b18ff76bf21d9fa340a1d58abedefbf30ec91..8daf361f82af8d41661d8c5afe717c8a90803dfe 100644
--- a/src/main/java/org/plazmamc/plazma/configurations/WorldConfigurations.java
+++ b/src/main/java/org/plazmamc/plazma/configurations/WorldConfigurations.java
@@ -104,6 +104,7 @@ public class WorldConfigurations extends ConfigurationPart {
public class Item extends ConfigurationPart {
public boolean skipMapUpdateIfCraftRenderIsNull = true;
+ public boolean allowCrossbowInfinity = false;
public ShootableFireCharge shootableFireCharge;
public class ShootableFireCharge extends ConfigurationPart {
@@ -125,6 +126,14 @@ public class WorldConfigurations extends ConfigurationPart {
}
+ public BundleAsQuivers bundleAsQuivers;
+ public class BundleAsQuivers extends ConfigurationPart {
+
+ public boolean enableForBow = false;
+ public boolean enableForCrossbow = false;
+
+ }
+
}
}

View File

@@ -18,7 +18,7 @@ index 16069b9cbf6c7679c28a2e9a54e77d23cd10e541..bb10892f33ba0d7fc3959debef104507
private final byte[] challenge;
final MinecraftServer server;
diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java
index be4a5407fe9b692b72eb2b85e2dea160a0555bca..579f81ed04eeb6373b25e6794d3bf0c403891011 100644
index aead28160c7a5067340ec80a833eafcab1817d67..c18868796957c0756aca3b5a15fd0d0c8a5221f4 100644
--- a/src/main/java/net/minecraft/server/players/PlayerList.java
+++ b/src/main/java/net/minecraft/server/players/PlayerList.java
@@ -183,6 +183,16 @@ public abstract class PlayerList {
@@ -56,10 +56,10 @@ index be4a5407fe9b692b72eb2b85e2dea160a0555bca..579f81ed04eeb6373b25e6794d3bf0c4
// CraftBukkit start - Better rename detection
if (optional.isPresent()) {
diff --git a/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java b/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java
index 193e565b6d62caf278223db033351d03ff417637..7f30fa1928e1a7e59ee5acfdfd2334f810c30243 100644
index 14ba63f5ef6ad5d96972b18e1174a8a94491fa57..c2f3facf65aa2682306c64c3466357461a76f267 100644
--- a/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java
+++ b/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java
@@ -38,6 +38,7 @@ public class GlobalConfiguration extends ConfigurationPart {
@@ -44,6 +44,7 @@ public class GlobalConfiguration extends ConfigurationPart {
public class Player extends ConfigurationPart {
public boolean checkSpectatorMovedToQuickly = !OPTIMIZE;

View File

@@ -19,10 +19,10 @@ index 26da9e7c25ef6a89482838010d8ed6bcf8c87511..71aa3b9c5604f832e764e0d7a93da467
}
diff --git a/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java b/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java
index 6e14f6a03c7bcd820f3d787178a62844ad022332..193e565b6d62caf278223db033351d03ff417637 100644
index a0b1239e302f0366743949a895a0539348817077..14ba63f5ef6ad5d96972b18e1174a8a94491fa57 100644
--- a/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java
+++ b/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java
@@ -124,6 +124,7 @@ public class GlobalConfiguration extends ConfigurationPart {
@@ -130,6 +130,7 @@ public class GlobalConfiguration extends ConfigurationPart {
public Miscellaneous misc;
public class Miscellaneous extends ConfigurationPart {

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Port minor SparklyPaper patches
diff --git a/src/main/java/net/minecraft/server/level/ServerEntity.java b/src/main/java/net/minecraft/server/level/ServerEntity.java
index c14ce846afb7364e541bfe01b73a06a94e48f55b..3b11cc112e98cea1067ecdfe20d894f8ba753b93 100644
index 2bec5ed591e658765602379f9065b8089f5df6ea..ddcf301f098bbe55dbef7751180110a22bccc68d 100644
--- a/src/main/java/net/minecraft/server/level/ServerEntity.java
+++ b/src/main/java/net/minecraft/server/level/ServerEntity.java
@@ -58,6 +58,7 @@ import org.bukkit.event.player.PlayerVelocityEvent;
@@ -18,7 +18,7 @@ index c14ce846afb7364e541bfe01b73a06a94e48f55b..3b11cc112e98cea1067ecdfe20d894f8
private static final double TOLERANCE_LEVEL_POSITION = 7.62939453125E-6D;
@@ -232,6 +233,7 @@ public class ServerEntity {
if ((this.trackDelta || this.entity.hasImpulse || this.entity instanceof LivingEntity && ((LivingEntity) this.entity).isFallFlying()) && this.tickCount > 0) {
if (this.entity.hasImpulse || this.trackDelta || this.entity instanceof LivingEntity && ((LivingEntity) this.entity).isFallFlying()) {
Vec3 vec3d1 = this.entity.getDeltaMovement();
+ if (PLAZMA_DISTANCE_SQR || vec3d1 != this.lastSentMovement) { // Plazma - Port Minor SparklyPaper patches; Skip distanceToSqr if the delta is the same
double d0 = vec3d1.distanceToSqr(this.lastSentMovement);
@@ -72,7 +72,7 @@ index da7e1a69ecb4e6b3be2d8544ac406aa519bd196e..ce56fdd0bbe1c95146c88594c68a6a39
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 8c455ac7dcb126e2b2932eba980454513947fac2..ecf9153b0eadb264d79fe9a809918bb13cd6d4b8 100644
index 68a0aa6545c8aba3ecc31086a8d2bc3e1aada64e..4b9fbb4b1ad434ea06a44e30e66c394b07be7b7f 100644
--- a/src/main/java/net/minecraft/world/item/MapItem.java
+++ b/src/main/java/net/minecraft/world/item/MapItem.java
@@ -276,7 +276,12 @@ public class MapItem extends Item {

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] SparklyPaper - Optimize framed map tracker ticking
diff --git a/src/main/java/net/minecraft/server/level/ServerEntity.java b/src/main/java/net/minecraft/server/level/ServerEntity.java
index 3b11cc112e98cea1067ecdfe20d894f8ba753b93..f33e7f7fdee160b7397b1156c179a5c95816307a 100644
index ddcf301f098bbe55dbef7751180110a22bccc68d..92422a9251be5c6334b55f47079f8c8e72439aef 100644
--- a/src/main/java/net/minecraft/server/level/ServerEntity.java
+++ b/src/main/java/net/minecraft/server/level/ServerEntity.java
@@ -129,33 +129,31 @@ public class ServerEntity {
@@ -80,7 +80,7 @@ index 3b11cc112e98cea1067ecdfe20d894f8ba753b93..f33e7f7fdee160b7397b1156c179a5c9
public Vec3 getPositionBase() {
diff --git a/src/main/java/net/minecraft/world/entity/decoration/ItemFrame.java b/src/main/java/net/minecraft/world/entity/decoration/ItemFrame.java
index 27f7a0abf77e94f15ff5f42e54e979377c94e63c..d1b8edccf3d7418a4aceba8491491b3a339b645a 100644
index ad3f17ee59e2508886551204b87d95482ce9b100..360289fea15e1097068bc4898c5b1b3e3aaf58ad 100644
--- a/src/main/java/net/minecraft/world/entity/decoration/ItemFrame.java
+++ b/src/main/java/net/minecraft/world/entity/decoration/ItemFrame.java
@@ -175,6 +175,16 @@ public class ItemFrame extends HangingEntity {

View File

@@ -75,18 +75,18 @@ index c03608fec96b51e1867f43d8f42e5aefb1520e46..9bb01accce426fafbddc1965a61257a7
throw new IllegalStateException("Ticking retired scheduler");
}
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index e63e6d885054cd926508f9999c8a4eed712d4891..022c4c01ab015a2a6135baa5dbe442fa7a1b4615 100644
index f8377d6165f77bc19b904ca81a0c4aa139e728b0..fd74856160fa048941e10f52d2061e4ccdc86f31 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -337,6 +337,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
public volatile Thread shutdownThread; // Paper
public volatile boolean abnormalExit = false; // Paper
public static final long SERVER_INIT = System.nanoTime(); // Paper - Lag compensation
private final Set<String> pluginsBlockingSleep = new java.util.HashSet<>(); // Paper - API to allow/disallow tick sleeping
+ public final Set<Entity> entitiesWithScheduledTasks = java.util.concurrent.ConcurrentHashMap.newKeySet(); // Plazma - Skip executeTick check if there is no any task to be run
public gg.pufferfish.pufferfish.util.AsyncExecutor mobSpawnExecutor = new gg.pufferfish.pufferfish.util.AsyncExecutor("MobSpawning"); // Pufferfish - optimize mob spawning
public static <S extends MinecraftServer> S spin(Function<Thread, S> serverFactory) {
@@ -1869,17 +1870,16 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1834,17 +1835,16 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
this.server.getScheduler().mainThreadHeartbeat(); // CraftBukkit
// Paper start - Folia scheduler API
((io.papermc.paper.threadedregions.scheduler.FoliaGlobalRegionScheduler) Bukkit.getGlobalRegionScheduler()).tick();
@@ -113,9 +113,9 @@ index e63e6d885054cd926508f9999c8a4eed712d4891..022c4c01ab015a2a6135baa5dbe442fa
+ // Plazma end - Skip executeTick check if there is no any task to be run
// Paper end - Folia scheduler API
io.papermc.paper.adventure.providers.ClickCallbackProviderImpl.CALLBACK_MANAGER.handleQueue(this.tickCount); // Paper
//gameprofilerfiller.push("commandFunctions"); // Plazma - Completely remove Mojang profilers
//gameprofilerfiller.push("commandFunctions"); // Plazma - Completely remove Mojang profiler
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
index 51aee9a468f4ebfa9672fd9ce84883cf080859e3..94bdeaf15a73228ff92b50a22bc3aca41658de8d 100644
index 0e1b3f64d1a828b9c69efe45c511582880bdcb92..9afcc3cc8ef61864da8194d412ddce159db4029e 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
@@ -72,7 +72,7 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {

View File

@@ -113,7 +113,7 @@ index 8b5293b0c696ef21d0101493ffa41b60bf0bc86b..bf3a6e8e35fe9869dfa56a97dd5d8202
}
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index 022c4c01ab015a2a6135baa5dbe442fa7a1b4615..26c5cb68b464305fde43e2e0e1a415a2425483ea 100644
index fd74856160fa048941e10f52d2061e4ccdc86f31..8964ccc27ea7db306140fd6b04c9f5cb33158aa0 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -264,8 +264,10 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -127,7 +127,7 @@ index 022c4c01ab015a2a6135baa5dbe442fa7a1b4615..26c5cb68b464305fde43e2e0e1a415a2
public final TickTimes tickTimes60s = new TickTimes(1200);
// Paper end - Add tick times API and /mspt command
@Nullable
@@ -1778,8 +1780,10 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1743,8 +1745,10 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
this.tickTimesNanos[l] = k;
this.smoothedTickTimeMillis = this.smoothedTickTimeMillis * 0.8F + (float) k / (float) TimeUtil.NANOSECONDS_PER_MILLISECOND * 0.19999999F;
// Paper start - Add tick times API and /mspt command
@@ -138,8 +138,8 @@ index 022c4c01ab015a2a6135baa5dbe442fa7a1b4615..26c5cb68b464305fde43e2e0e1a415a2
this.tickTimes60s.add(this.tickCount, k);
// Paper end - Add tick times API and /mspt command
this.logTickMethodTime(i);
@@ -1941,7 +1945,17 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
//gameprofilerfiller.push("tick"); // Plazma - Completely remove Mojang profilers
@@ -1906,7 +1910,17 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
//gameprofilerfiller.push("tick"); // Plazma - Completely remove Mojang profiler
try {
+ // Plazma start - MSPT by world
@@ -157,10 +157,10 @@ index 022c4c01ab015a2a6135baa5dbe442fa7a1b4615..26c5cb68b464305fde43e2e0e1a415a2
CrashReport crashreport = CrashReport.forThrowable(throwable, "Exception ticking world");
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
index 14188b6e317dca2bbf98896951605f2e3742506f..137138aa1e42d4f12ed0bc54bc25918d29120333 100644
index 518b9feb5e2494e52fe9719ddc22dce7da4db0fb..9a54883281352cc4fa08143f5126d61dbd89761d 100644
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
@@ -598,6 +598,14 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
@@ -599,6 +599,14 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
}
// Paper end - lag compensation

Some files were not shown because too many files have changed in this diff Show More