Hardfork - Initial Commit

This commit is contained in:
AlphaKR93
2025-02-19 10:57:48 +09:00
parent b9b81666d7
commit 7e1f20905c
18 changed files with 546 additions and 627 deletions

423
.gitignore vendored
View File

@@ -1,64 +1,389 @@
# JVM crash related
core.*
hs_err_pid*
# Created by https://www.toptal.com/developers/gitignore/api/java,kotlin,jetbrains+all,gradle,git,visualstudiocode,eclipse,netbeans,macos,windows,linux,vim,maven
# Edit at https://www.toptal.com/developers/gitignore?templates=java,kotlin,jetbrains+all,gradle,git,visualstudiocode,eclipse,netbeans,macos,windows,linux,vim,maven
# Intellij
.idea/
*.iml
*.ipr
*.iws
out/
### Paperweight ###
run/
paper-api/
paper-server/
purpur-api/
purpur-server/
plazma-api/build.gradle.kts
plazma-server/build.gradle.kts
plazma-server/src/minecraft/
# Eclipse
.classpath
.project
### Eclipse ###
.metadata
bin/
tmp/
*.tmp
*.bak
*.swp
*~.nib
local.properties
.settings/
.loadpath
.recommenders
# netbeans
nbproject/
nbactions.xml
# External tool builders
.externalToolBuilders/
# vscode
.vscode/
# Locally stored "Eclipse launch configurations"
*.launch
# PyDev specific (Python IDE for Eclipse)
*.pydevproject
# CDT-specific (C/C++ Development Tooling)
.cproject
# CDT- autotools
.autotools
# Java annotation processor (APT)
.factorypath
# PDT-specific (PHP Development Tools)
.buildpath
# sbteclipse plugin
.target
# Tern plugin
.tern-project
# TeXlipse plugin
.texlipse
# STS (Spring Tool Suite)
.springBeans
# Code Recommenders
.recommenders/
# Annotation Processing
.apt_generated/
.apt_generated_test/
# Scala IDE specific (Scala & Java development for Eclipse)
.cache-main
.scala_dependencies
.worksheet
# Uncomment this line if you wish to ignore the project description file.
# Typically, this file would be tracked if it contains build/dependency configurations:
#.project
### Eclipse Patch ###
# Spring Boot Tooling
.sts4-cache/
### Git ###
# Created by git for backups. To disable backups in Git:
# $ git config --global mergetool.keepBackup false
*.orig
# Created by git when using merge tools for conflicts
*.BACKUP.*
*.BASE.*
*.LOCAL.*
*.REMOTE.*
*_BACKUP_*.txt
*_BASE_*.txt
*_LOCAL_*.txt
*_REMOTE_*.txt
### Java ###
# Compiled class file
*.class
# Log file
*.log
# BlueJ files
*.ctxt
# Mobile Tools for Java (J2ME)
.mtj.tmp/
# Package Files #
*.jar
*.war
*.nar
*.ear
*.zip
*.tar.gz
*.rar
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*
replay_pid*
### JetBrains+all ###
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
# User-specific stuff
.idea/**/workspace.xml
.idea/**/tasks.xml
.idea/**/usage.statistics.xml
.idea/**/dictionaries
.idea/**/shelf
# AWS User-specific
.idea/**/aws.xml
# Generated files
.idea/**/contentModel.xml
# Sensitive or high-churn files
.idea/**/dataSources/
.idea/**/dataSources.ids
.idea/**/dataSources.local.xml
.idea/**/sqlDataSources.xml
.idea/**/dynamic.xml
.idea/**/uiDesigner.xml
.idea/**/dbnavigator.xml
# Gradle
!gradle-wrapper.jar
.gradle/
build/
*/build/
run/
javadoc/
.idea/**/gradle.xml
.idea/**/libraries
# we use maven!
build.xml
# Gradle and Maven with auto-import
# When using Gradle or Maven with auto-import, you should exclude module files,
# since they will be recreated, and may cause churn. Uncomment if using
# auto-import.
# .idea/artifacts
# .idea/compiler.xml
# .idea/jarRepositories.xml
# .idea/modules.xml
# .idea/*.iml
# .idea/modules
# *.iml
# *.ipr
# Maven
log/
target/
dependency-reduced-pom.xml
# CMake
cmake-build-*/
# various other potential build files
bin/
dist/
manifest.mf
# Mongo Explorer plugin
.idea/**/mongoSettings.xml
# Mac
.DS_Store/
.DS_Store
# File-based project format
*.iws
# vim
.*.sw[a-p]
# IntelliJ
out/
# Linux temp files
# mpeltonen/sbt-idea plugin
.idea_modules/
# JIRA plugin
atlassian-ide-plugin.xml
# Cursive Clojure plugin
.idea/replstate.xml
# SonarLint plugin
.idea/sonarlint/
# Crashlytics plugin (for Android Studio and IntelliJ)
com_crashlytics_export_strings.xml
crashlytics.properties
crashlytics-build.properties
fabric.properties
# Editor-based Rest Client
.idea/httpRequests
# Android studio 3.1+ serialized cache file
.idea/caches/build_file_checksums.ser
### JetBrains+all Patch ###
# Ignore everything but code style settings and run configurations
# that are supposed to be shared within teams.
.idea/*
!.idea/codeStyles
!.idea/runConfigurations
### Kotlin ###
# Compiled class file
# Log file
# BlueJ files
# Mobile Tools for Java (J2ME)
# Package Files #
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
### 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
### macOS Patch ###
# iCloud generated files
*.icloud
### Maven ###
target/
pom.xml.tag
pom.xml.releaseBackup
pom.xml.versionsBackup
pom.xml.next
release.properties
dependency-reduced-pom.xml
buildNumber.properties
.mvn/timing.properties
# https://github.com/takari/maven-wrapper#usage-without-binary-jar
.mvn/wrapper/maven-wrapper.jar
# Eclipse m2e generated files
# Eclipse Core
.project
# JDT-specific (Eclipse Java Development Tools)
.classpath
### NetBeans ###
**/nbproject/private/
**/nbproject/Makefile-*.mk
**/nbproject/Package-*.bash
build/
nbbuild/
dist/
nbdist/
.nb-gradle/
### Vim ###
# Swap
[._]*.s[a-v][a-z]
!*.svg # comment out if you don't need vector files
[._]*.sw[a-p]
[._]s[a-rt-v][a-z]
[._]ss[a-gi-z]
[._]sw[a-p]
# Session
Session.vim
Sessionx.vim
# 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/
# Built Visual Studio Code Extensions
*.vsix
### VisualStudioCode Patch ###
# Ignore all local history of files
.history
.ionide
### 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
### Gradle ###
.gradle
**/build/
!src/**/build/
# Ignore Gradle GUI config
gradle-app.setting
# Avoid ignoring Gradle wrapper jar file (.jar files are usually ignored)
!gradle-wrapper.jar
# Avoid ignore Gradle wrappper properties
!gradle-wrapper.properties
# Cache of project
.gradletasknamecache
# Eclipse Gradle plugin generated files
# Eclipse Core
# JDT-specific (Eclipse Java Development Tools)
### Gradle Patch ###
# Java heap dump
*.hprof
# End of https://www.toptal.com/developers/gitignore/api/java,kotlin,jetbrains+all,gradle,git,visualstudiocode,eclipse,netbeans,macos,windows,linux,vim,maven

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.4. If you want to know more about Plazma, please check the **[main branch][main]**.<br>
해당 페이지는 Plazma의 1.21.4용 분기입니다. 플라즈마에 대해 자세히 알고 싶다면 **[main 분기][main]** 를 확인해주세요.

View File

@@ -1,17 +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
#
minecraft net.minecraft.server.commands.PardonCommand
minecraft net.minecraft.server.commands.PardonIpCommand

View File

@@ -2,132 +2,84 @@ import org.gradle.api.tasks.testing.logging.TestExceptionFormat
import org.gradle.api.tasks.testing.logging.TestLogEvent
plugins {
java
`maven-publish`
alias(libs.plugins.shadow) apply false
alias(libs.plugins.paperweight)
id("io.papermc.paperweight.patcher") version "2.0.0-beta.14"
}
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/"
usePaperUpstream(providers.gradleProperty("paperCommit")) {
withPaperPatcher {
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://repo.papermc.io/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(21))
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/maven-snapshots/") {
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/fork-patches")
outputDir = file("purpur-api")
}
}
}
subprojects {
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" }
apply(plugin = "java-library")
apply(plugin = "maven-publish")
extensions.configure<JavaPluginExtension> {
toolchain {
languageVersion = JavaLanguageVersion.of(21)
}
}
tasks {
withType<JavaCompile>().configureEach {
options.encoding = Charsets.UTF_8.name()
options.release = 21
}
repositories {
mavenCentral()
maven("https://repo.papermc.io/repository/maven-public/")
}
withType<Javadoc> {
options.encoding = Charsets.UTF_8.name()
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<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)
}
*/
}
}
}

View File

@@ -1,20 +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.4-R0.1-SNAPSHOT
mcVersion = 1.21.4
paperCommit = b746d9df0b6b7765478b2a72c2d963b6e668fa35
purpurCommit = f06fd5bb3880e660ecfb43beaadf8ddac175fa8f
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.7"
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-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.15"
# 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", "fastutil", "slf4j", "sentry", "jspecify" ]
annotations = [ "annotations", "checkerqual" ]

View File

@@ -1,73 +0,0 @@
[versions]
adventure = "4.17.0"
log4j = "2.24.1"
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,94 +0,0 @@
[versions]
concurrentutil = "0.0.2"
jline = "3.27.1"
tca = "1.3.0"
# adventure
# log4j
netty = "4.1.97.Final"
# asm
configurate = "4.2.0-SNAPSHOT"
# commons2
sqlite = "3.47.0.0"
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]
concurrentutil = { group = "ca.spottedleaf", name = "concurrentutil", version.ref = "concurrentutil" }
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 = [
"concurrentutil",
"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"
]

View File

@@ -0,0 +1,33 @@
--- a/purpur-api/build.gradle.kts
+++ b/purpur-api/build.gradle.kts
@@ -101,21 +_,17 @@
}
sourceSets {
main {
- java {
- srcDir(generatedApiPath)
- srcDir(file("../paper-api/src/main/java"))
- }
- resources {
- srcDir(file("../paper-api/src/main/resources"))
- }
+ java { srcDir(generatedApiPath) }
+ java { srcDir(file("../paper-api/src/main/java")) }
+ resources { srcDir(file("../paper-api/src/main/resources")) }
+ java { srcDir(file("../purpur-api/src/main/java")) }
+ resources { srcDir(file("../purpur-api/src/main/resources")) }
}
test {
- java {
- srcDir(file("../paper-api/src/test/java"))
- }
- resources {
- srcDir(file("../paper-api/src/test/resources"))
- }
+ java { srcDir(file("../paper-api/src/test/java")) }
+ resources { srcDir(file("../paper-api/src/test/resources")) }
+ java { srcDir(file("../purpur-api/src/test/java")) }
+ resources { srcDir(file("../purpur-api/src/test/resources")) }
}
}

View File

@@ -0,0 +1,51 @@
--- a/purpur-server/build.gradle.kts
+++ b/purpur-server/build.gradle.kts
@@ -29,7 +_,23 @@
outputDir = rootDirectory.dir("paper-server")
}
}
- activeFork = purpur
+
+ val plazma = forks.register("plazma") {
+ forks = purpur
+ upstream.patchRepo("paperServer") {
+ upstreamRepo = purpur.patchedRepo("paperServer")
+ patchesDir = rootDirectory.dir("plazma-server/paper-patches")
+ outputDir = rootDirectory.dir("paper-server")
+ }
+ upstream.patchDir("purpurServer") {
+ upstreamPath = "purpur-server"
+ excludes = setOf("src/minecraft", "minecraft-patches", "paper-patches", "build.gradle.kts", "build.gradle.kts.patch")
+ patchesDir = rootDirectory.dir("plazma-server/purpur-patches")
+ outputDir = rootDirectory.dir("purpur-server")
+ }
+ }
+
+ activeFork = plazma
spigot {
buildDataRef = "3edaf46ec1eed4115ce1b18d2846cded42577e42"
@@ -115,10 +_,14 @@
main {
java { srcDir("../paper-server/src/main/java") }
resources { srcDir("../paper-server/src/main/resources") }
+ java { srcDir("../purpur-server/src/main/java") }
+ resources { srcDir("../purpur-server/src/main/resources") }
}
test {
java { srcDir("../paper-server/src/test/java") }
resources { srcDir("../paper-server/src/test/resources") }
+ java { srcDir("../purpur-server/src/test/java") }
+ resources { srcDir("../purpur-server/src/test/resources") }
}
}
@@ -142,7 +_,7 @@
}
dependencies {
- implementation(project(":purpur-api"))
+ implementation(project(":plazma-api"))
implementation("ca.spottedleaf:concurrentutil:0.0.3")
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

View File

@@ -1,25 +1,16 @@
import java.util.Locale
val projectName = "Plazma"
dependencyResolutionManagement {
versionCatalogs {
create("libs") {}
create("api") {
from(files("libs/api.versions.toml"))
}
create("server") {
from(files("libs/server.versions.toml"))
}
create("common") {
from(files("libs/common.versions.toml"))
}
pluginManagement {
repositories {
gradlePluginPortal()
mavenLocal()
maven("https://repo.papermc.io/repository/maven-public/")
}
}
rootProject.name = projectName.lowercase()
for (name in listOf("$projectName-API", "$projectName-Server")) {
val projName = name.lowercase(Locale.ENGLISH)
include(projName)
findProject(":$projName")!!.projectDir = file(name)
plugins {
id("org.gradle.toolchains.foojay-resolver-convention") version "0.9.0"
}
rootProject.name = "plazma"
include("plazma-api")
include("plazma-server")