Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feat/hard fork #34

Merged
merged 38 commits into from
Jan 8, 2025
Merged
Changes from 1 commit
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
0be09e3
update upstream
TrainmasterHD Dec 6, 2024
a38324a
update gradle wrapper
TrainmasterHD Dec 6, 2024
8e4762c
update upstream
TrainmasterHD Dec 9, 2024
f85ce2c
feat: update gradle wrapper
TrainmasterHD Jan 3, 2025
5f7573b
feat: add base for hard-fork
TrainmasterHD Jan 3, 2025
5029d1a
update paper ref
TrainmasterHD Jan 5, 2025
4c6dc1e
change path where cheetah-server is located after build
TrainmasterHD Jan 5, 2025
5ae6741
also change the other paths where cheetah-server is located after build
TrainmasterHD Jan 5, 2025
f8720b1
remove test patch 0001-feature-1.patch
TrainmasterHD Jan 5, 2025
ab4661e
migrated pre-hard-fork patch 0001-Build-changes.patch
TrainmasterHD Jan 5, 2025
cfaf00a
remove more test patches
TrainmasterHD Jan 5, 2025
e66e11c
migrated pre-hard-fork patch 0002-hide-IP-address-is-log-files.patch
TrainmasterHD Jan 5, 2025
aa946d6
migrated pre-hard-fork patches 0001-API-for-configurable-hopper-trans…
TrainmasterHD Jan 5, 2025
10824b0
remove test files ForkFile.java and ForkServerFile.java
TrainmasterHD Jan 5, 2025
99c4d72
migrated pre-hard-fork patches 0002-added-ProjectileAllowCollideWithP…
TrainmasterHD Jan 5, 2025
9d1c650
migrated pre-hard-fork patch 0005-fixed-version-checks.patch
TrainmasterHD Jan 5, 2025
1300baf
migrated pre-hard-fork patch 0006-support-case-insensitive-commands.p…
TrainmasterHD Jan 5, 2025
ae56afd
migrated pre-hard-fork patch 0007-expose-constructor-for-player-info-…
TrainmasterHD Jan 5, 2025
0857d11
migrated pre-hard-fork patch 0008-do-not-suppress-protocol-errors.patch
TrainmasterHD Jan 5, 2025
b458b1c
migrated pre-hard-fork patches 0003-Async-able-StructuresLocateEvent.…
TrainmasterHD Jan 5, 2025
4044295
update Hopper.java.patch
TrainmasterHD Jan 5, 2025
caf4438
migrated pre-hard-fork patches 0004-allow-skipping-log-messages-for-c…
TrainmasterHD Jan 5, 2025
81c6c78
migrated pre-hard-fork patch 0010-return-false-when-the-allied-team-i…
TrainmasterHD Jan 5, 2025
452373d
migrated pre-hard-fork patch 0011-do-not-break-message-chain-if-proxy…
TrainmasterHD Jan 5, 2025
3756b1a
migrated pre-hard-fork patch 0012-respect-treasure-map-option-for-dol…
TrainmasterHD Jan 5, 2025
27fdd29
migrated pre-hard-fork patches 0005-Added-VillagerGiveGiftToHeroEvent…
TrainmasterHD Jan 5, 2025
70a154c
migrated pre-hard-fork patch 0014-added-option-to-disable-elytra-in-e…
TrainmasterHD Jan 5, 2025
c0fd455
migrated pre-hard-fork patch 0016-Fixed-spectator-counting-towards-co…
TrainmasterHD Jan 5, 2025
11977ff
migrated pre-hard-fork patch 0018-Fix-GLOBAL-1080-Paper-9350.patch
TrainmasterHD Jan 5, 2025
5380f5e
migrated pre-hard-fork patch 0019-configurable-remapped-directory.patch
TrainmasterHD Jan 5, 2025
2dc462d
migrated pre-hard-fork patch 0020-fix-NaN-delta-movement.patch
TrainmasterHD Jan 5, 2025
81c5bae
rename fork.at to cheetah.at
TrainmasterHD Jan 5, 2025
20c541f
update paperRef
TrainmasterHD Jan 5, 2025
c214d0c
remove no longer needed patches
TrainmasterHD Jan 5, 2025
6ad3aac
update paperweight patcher
TrainmasterHD Jan 6, 2025
e37e9fc
update paperRef
TrainmasterHD Jan 8, 2025
c20793a
remove not needed patch
TrainmasterHD Jan 8, 2025
e79d289
uncomment publishing and testRuntimeOnly dependency
TrainmasterHD Jan 8, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
feat: add base for hard-fork
TrainmasterHD committed Jan 3, 2025
commit 5f7573be0012c25e742ef52c7072584c4bc26776
15 changes: 10 additions & 5 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -1,7 +1,12 @@
* text=auto
#
# https://help.github.com/articles/dealing-with-line-endings/
#
# Linux start script should use lf
/gradlew text eol=lf

*.sh text eol=lf
gradlew text eol=lf
*.bat text eol=crlf
# These are Windows script files and should use crlf
*.bat text eol=crlf

# Binary files should be left untouched
*.jar binary

*.jar binary
2 changes: 1 addition & 1 deletion .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -29,7 +29,7 @@ jobs:
- name: Clean
run: ./gradlew clean
- name: Apply Patches
run: ./gradlew applyPatches --info
run: ./gradlew applyAllPatches --info
- name: Bundle
run: ./gradlew createMojmapBundlerJar --info
- name: Rename Artifact
59 changes: 11 additions & 48 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,53 +1,16 @@
.gradle/
build/
# Ignore Gradle project-specific cache directory
.gradle

# Eclipse stuff
.classpath
.project
.settings/
# Ignore Gradle build output directory
build

# VSCode stuff
.vscode/
/run

# netbeans
nbproject/
nbactions.xml
/cheetah-server/build.gradle.kts
/cheetah-server/src/minecraft
/paper-server
/cheetah-api/build.gradle.kts
/paper-api
/paper-api-generator

# we use maven!
build.xml

# maven
target/
dependency-reduced-pom.xml

# vim
.*.sw[a-p]

# various other potential build files
build/
bin/
dist/
manifest.mf

# Mac filesystem dust
.DS_Store/
.DS_Store

# intellij
*.iml
*.ipr
*.iws
.idea/
out/

# Linux temp files
*~

# other stuff
run/

cheetah-server
cheetah-api
paper-api-generator

!gradle/wrapper/gradle-wrapper.jar
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
@@ -8,7 +8,7 @@ This is a fork of Paper tailored for the use at GommeHD.net
- Clone this repository
- Open a shell (e.g. using Git Bash on Windows)
- On Windows, make sure that `git config core.longpaths true` is set for this project
- Run `./gradlew applyPatches` to apply the patches
- Run `./gradlew applyAllPatches` to apply the patches
- Run `./gradlew createMojmapBundlerJar` to create the final jar file
- The final jar file can be found in `build/libs/cheetah-1.21.4-bundler-1.21.4-R0.1-SNAPSHOT-reobf.jar`

@@ -26,7 +26,7 @@ Thus, changes to the NMS code will not be reflected to plugins using it.
```

## How to apply changes
- First apply the patches using `./gradlew applyPatches`
- First apply the patches using `./gradlew applyAllPatches`
- Perform the changes to the code
- If you are a missing file, you can import it from NMS. For this, add a new line to `build-data/dev-imports.txt`, e.g. `minecraft net.minecraft.world.level.entity.LevelEntityGetterAdapter` to import the LevelEntityGetterAdapter. Then apply the patches again (`./gradlew applyPatches`). Keep in mind that all uncommited changes to the code will get LOST by this!
- Once all changes have been applied, switch to the subproject in your shell (`cd cheetah-server` or `cd cheetah-api`) and run `git add .`. Then, commit your changes using `git commit -m "NAME OF PATCH"`
@@ -36,7 +36,7 @@ Thus, changes to the NMS code will not be reflected to plugins using it.
## Update upstream
- Make sure all changes are committed and patches have been rebuilt
- Identify the latest commit in https://github.com/PaperMC/Paper/commits/master and copy its hash. Update `paperRef` in `gradle.properties` accordingly.
- Run `./gradlew applyPatches`
- Run `./gradlew applyAllPatches`
- Fix potential conflicts during merges and update your code to the latest version
- Run `./gradlew rebuildPatches`
- Validate that everything works and commit your changes
9 changes: 4 additions & 5 deletions build-data/dev-imports.txt
Original file line number Diff line number Diff line change
@@ -8,8 +8,7 @@
# 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
minecraft net.minecraft.server.dedicated.DedicatedServerProperties
minecraft net.minecraft.network.protocol.game.ClientboundPlayerInfoUpdatePacket
minecraft net.minecraft.network.protocol.game.ClientboundPlayerInfoRemovePacket
#minecraft net.minecraft.world.entity.ai.behavior.GiveGiftToHero
#minecraft net.minecraft.world.level.levelgen.structure.structures.EndCityPieces
# 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
#
3 changes: 3 additions & 0 deletions build-data/fork.at
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# This file is auto generated, any changes may be overridden!
# See CONTRIBUTING.md on how to add access transformers.
public net.minecraft.data.registries.TradeRebalanceRegistries BUILDER
18 changes: 0 additions & 18 deletions build-data/reobf-mappings-patch.tiny

This file was deleted.

144 changes: 57 additions & 87 deletions build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,121 +1,91 @@
import org.gradle.api.tasks.testing.logging.TestExceptionFormat
import org.gradle.api.tasks.testing.logging.TestLogEvent

plugins {
java
`maven-publish`
id("io.papermc.paperweight.patcher") version "1.7.7"
java // TODO java launcher tasks
id("io.papermc.paperweight.patcher") version "2.0.0-beta.8"
}

val paperMavenPublicUrl = "https://papermc.io/repo/repository/maven-public/"
paperweight {
upstreams.paper {
ref = "54debf494f467a71c561cf8765c4f21725c99dd8"

repositories {
mavenCentral()
maven(paperMavenPublicUrl) {
content { onlyForConfigurations(configurations.paperclip.name) }
}
maven {
name = "gommeRepo"
url = uri("https://repo.gomme.dev/repository/public/")
// credentials(PasswordCredentials::class)
patchFile {
path = "paper-server/build.gradle.kts"
outputFile = file("cheetah-server/build.gradle.kts")
patchFile = file("cheetah-server/build.gradle.kts.patch")
}
patchFile {
path = "paper-api/build.gradle.kts"
outputFile = file("cheetah-api/build.gradle.kts")
patchFile = file("cheetah-api/build.gradle.kts.patch")
}
patchDir("paperApi") {
upstreamPath = "paper-api"
excludes = setOf("build.gradle.kts")
patchesDir = file("cheetah-api/paper-patches")
outputDir = file("paper-api")
}
patchDir("paperApiGenerator") {
upstreamPath = "paper-api-generator"
patchesDir = file("cheetah-api-generator/paper-patches")
outputDir = file("paper-api-generator")
}
}
}

dependencies {
remapper("net.fabricmc:tiny-remapper:0.10.3:fat")
decompiler("org.vineflower:vineflower:1.10.1")
paperclip("io.papermc:paperclip:3.0.3")
}
val paperMavenPublicUrl = "https://repo.papermc.io/repository/maven-public/"

allprojects {
apply(plugin = "java")
subprojects {
apply(plugin = "java-library")
apply(plugin = "maven-publish")

java {
extensions.configure<JavaPluginExtension> {
toolchain {
languageVersion = JavaLanguageVersion.of(21)
}
}
}

subprojects {
repositories {
mavenCentral()
maven(paperMavenPublicUrl)
}

dependencies {
// "testRuntimeOnly"("org.junit.platform:junit-platform-launcher")
}

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()
}

repositories {
mavenCentral()
maven(paperMavenPublicUrl)
}
}

paperweight {
serverProject = project(":cheetah-server")

remapRepo = paperMavenPublicUrl
decompileRepo = paperMavenPublicUrl

usePaperUpstream(providers.gradleProperty("paperRef")) {
withPaperPatcher {
apiPatchDir = layout.projectDirectory.dir("patches/api")
apiOutputDir = layout.projectDirectory.dir("cheetah-api")

serverPatchDir = layout.projectDirectory.dir("patches/server")
serverOutputDir = layout.projectDirectory.dir("cheetah-server")
}

patchTasks.register("generatedApi") {
isBareDirectory = true
upstreamDirPath = "paper-api-generator/generated"
patchDir = layout.projectDirectory.dir("patches/generated-api")
outputDir = layout.projectDirectory.dir("paper-api-generator/generated")
tasks.withType<Test> {
testLogging {
showStackTraces = true
exceptionFormat = TestExceptionFormat.FULL
events(TestLogEvent.STANDARD_OUT)
}
}
}

//
// Everything below here is optional if you don't care about publishing API or dev bundles to your repository
//

tasks.generateDevelopmentBundle {
apiCoordinates = "net.gommehd.cheetah:cheetah-api"
libraryRepositories.set(
listOf(
"https://repo.maven.apache.org/maven2/",
paperMavenPublicUrl,
"https://repo.gomme.dev/repository/snapshots/", // This should be a repo hosting your API (in this example, 'com.example.paperfork:forktest-api')
)
)
}

allprojects {
// Publishing API:
// ./gradlew :cheetah-api:publish[ToMavenLocal]
publishing {
extensions.configure<PublishingExtension> {
repositories {
maven {
name = "gommeRepo"
url = uri("https://repo.gomme.dev/repository/snapshots/")
// See Gradle docs for how to provide credentials to PasswordCredentials
// https://docs.gradle.org/current/samples/sample_publishing_credentials.html
/*
maven("https://repo.papermc.io/repository/maven-snapshots/") {
name = "paperSnapshots"
credentials(PasswordCredentials::class)
}
}
}
}

publishing {
// Publishing dev bundle:
// ./gradlew publishDevBundlePublicationTo(MavenLocal|MyRepoSnapshotsRepository) -PpublishDevBundle
if (project.hasProperty("publishDevBundle")) {
publications.create<MavenPublication>("devBundle") {
artifact(tasks.generateDevelopmentBundle) {
artifactId = "dev-bundle"
}
*/
}
}
}
44 changes: 44 additions & 0 deletions cheetah-api/build.gradle.kts.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
--- a/paper-api/build.gradle.kts
+++ b/paper-api/build.gradle.kts
@@ -105,6 +_,18 @@
main {
java {
srcDir(generatedApiPath)
+ srcDir(file("../paper-api/src/main/java"))
+ }
+ resources {
+ srcDir(file("../paper-api/src/main/resources"))
+ }
+ }
+ test {
+ java {
+ srcDir(file("../paper-api/src/test/java"))
+ }
+ resources {
+ srcDir(file("../paper-api/src/test/resources"))
}
}
}
@@ -174,7 +_,7 @@

tasks.withType<Javadoc> {
val options = options as StandardJavadocDocletOptions
- options.overview = "src/main/javadoc/overview.html"
+ options.overview = "../paper-api/src/main/javadoc/overview.html"
options.use()
options.isDocFilesSubDirs = true
options.links(
@@ -212,11 +_,11 @@
}

// workaround for https://github.com/gradle/gradle/issues/4046
- inputs.dir("src/main/javadoc").withPropertyName("javadoc-sourceset")
+ inputs.dir("../paper-api/src/main/javadoc").withPropertyName("javadoc-sourceset")
val fsOps = services.fileSystemOperations
doLast {
fsOps.copy {
- from("src/main/javadoc") {
+ from("../paper-api/src/main/javadoc") {
include("**/doc-files/**")
}
into("build/docs/javadoc")
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
--- a/src/main/java/io/papermc/paper/advancement/AdvancementDisplay.java
+++ b/src/main/java/io/papermc/paper/advancement/AdvancementDisplay.java
@@ -27,7 +_,7 @@
*
* @return the frame type
*/
- Frame frame();
+ Frame frame(); // patch

/**
* Gets the advancement title.
2 changes: 2 additions & 0 deletions cheetah-api/src/main/java/ForkFile.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
public class ForkFile {
}
54 changes: 54 additions & 0 deletions cheetah-server/build.gradle.kts.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
--- a/paper-server/build.gradle.kts
+++ b/paper-server/build.gradle.kts
@@ -20,8 +_,19 @@
// macheOldPath = file("F:\\Projects\\PaperTooling\\mache\\versions\\1.21.4\\src\\main\\java")
// gitFilePatches = true

+ val cheetah = forks.register("cheetah") {
+ upstream.patchDir("paperServer") {
+ upstreamPath = "paper-server"
+ excludes = setOf("src/minecraft", "patches", "build.gradle.kts")
+ patchesDir = rootDirectory.dir("cheetah-server/paper-patches")
+ outputDir = rootDirectory.dir("paper-server")
+ }
+ }
+
+ activeFork = cheetah
+
paper {
- reobfMappingsPatch = layout.projectDirectory.file("../build-data/reobf-mappings-patch.tiny")
+ paperServerDir = upstreamsDirectory().map { it.dir("paper/paper-server") }
}

spigot {
@@ -104,7 +_,20 @@
}
}

-val log4jPlugins = sourceSets.create("log4jPlugins")
+sourceSets {
+ main {
+ java { srcDir("../paper-server/src/main/java") }
+ resources { srcDir("../paper-server/src/main/resources") }
+ }
+ test {
+ java { srcDir("../paper-server/src/test/java") }
+ resources { srcDir("../paper-server/src/test/resources") }
+ }
+}
+
+val log4jPlugins = sourceSets.create("log4jPlugins") {
+ java { srcDir("../paper-server/src/log4jPlugins/java") }
+}
configurations.named(log4jPlugins.compileClasspathConfigurationName) {
extendsFrom(configurations.compileClasspath.get())
}
@@ -123,7 +_,7 @@
// Paper end - configure mockito agent that is needed in newer java versions

dependencies {
- implementation(project(":paper-api"))
+ implementation(project(":cheetah-api"))
implementation("ca.spottedleaf:concurrentutil:0.0.2") // Paper - Add ConcurrentUtil dependency
// Paper start
implementation("org.jline:jline-terminal-ffm:3.27.1") // use ffm on java 22+
18 changes: 18 additions & 0 deletions cheetah-server/minecraft-patches/features/0001-feature-patch.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Jason Penilla <11360596+jpenilla@users.noreply.github.com>
Date: Wed, 11 Dec 2024 19:23:25 -0700
Subject: [PATCH] 'feature patch'


diff --git a/net/minecraft/DefaultUncaughtExceptionHandler.java b/net/minecraft/DefaultUncaughtExceptionHandler.java
index 6341da454460aa6c00075f82163b97286f760eee..a8bc94121a0209faa8dd293ff3c0862dac280cdb 100644
--- a/net/minecraft/DefaultUncaughtExceptionHandler.java
+++ b/net/minecraft/DefaultUncaughtExceptionHandler.java
@@ -12,6 +12,7 @@ public class DefaultUncaughtExceptionHandler implements UncaughtExceptionHandler

@Override
public void uncaughtException(Thread thread, Throwable exception) {
+ System.out.println("im a feature");
this.logger.error("Caught previously unhandled exception :", exception);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
--- a/com/google/common/annotations/Beta.java
+++ b/com/google/common/annotations/Beta.java
@@ -44,3 +_,4 @@
@Documented
@GwtCompatible
public @interface Beta {}
+// comment
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
--- a/net/minecraft/BlockUtil.java
+++ b/net/minecraft/BlockUtil.java
@@ -16,6 +_,7 @@
public static BlockUtil.FoundRectangle getLargestRectangleAround(
BlockPos centerPos, Direction.Axis axis1, int max1, Direction.Axis axis2, int max2, Predicate<BlockPos> posPredicate
) {
+ System.out.println("hello");
BlockPos.MutableBlockPos mutableBlockPos = centerPos.mutable();
Direction direction = Direction.get(Direction.AxisDirection.NEGATIVE, axis1);
Direction opposite = direction.getOpposite();
18 changes: 18 additions & 0 deletions cheetah-server/paper-patches/features/0001-feature-1.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Jason Penilla <11360596+jpenilla@users.noreply.github.com>
Date: Sun, 15 Dec 2024 00:07:29 -0700
Subject: [PATCH] feature 1


diff --git a/src/main/java/com/destroystokyo/paper/block/CraftBlockSoundGroup.java b/src/main/java/com/destroystokyo/paper/block/CraftBlockSoundGroup.java
index 054ee606e7c36712e474e2b7093b436e043e6262..9d395898511ed5b408dacfb9c796baacb18b9430 100644
--- a/src/main/java/com/destroystokyo/paper/block/CraftBlockSoundGroup.java
+++ b/src/main/java/com/destroystokyo/paper/block/CraftBlockSoundGroup.java
@@ -20,6 +20,7 @@ public class CraftBlockSoundGroup implements BlockSoundGroup {
@Override
public Sound getStepSound() {
// file patch
+ // feature patch
return CraftSound.minecraftToBukkit(soundEffectType.getStepSound());
}

Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
--- a/src/main/java/com/destroystokyo/paper/block/CraftBlockSoundGroup.java
+++ b/src/main/java/com/destroystokyo/paper/block/CraftBlockSoundGroup.java
@@ -19,6 +_,7 @@

@Override
public Sound getStepSound() {
+ // file patch
return CraftSound.minecraftToBukkit(soundEffectType.getStepSound());
}

Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
--- a/src/main/resources/data/.paperassetsroot
+++ b/src/main/resources/data/.paperassetsroot
@@ -1,0 +_,0 @@
2 changes: 2 additions & 0 deletions cheetah-server/src/main/java/ForkServerFile.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
public class ForkServerFile {
}
5 changes: 2 additions & 3 deletions gradle.properties
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
group=net.gommehd.cheetah
version=1.21.4-R0.1-SNAPSHOT

mcVersion=1.21.4
paperRef=c17ef64339ab27e5e50f331e53b00f6de45f7444

org.gradle.caching=true
org.gradle.configuration-cache=true
#org.gradle.caching=true
org.gradle.parallel=true
org.gradle.vfs.watch=false
7 changes: 6 additions & 1 deletion settings.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,10 +1,15 @@
pluginManagement {
repositories {
gradlePluginPortal()
maven("https://papermc.io/repo/repository/maven-public/")
mavenLocal()
maven("https://repo.papermc.io/repository/maven-public/")
}
}

plugins {
id("org.gradle.toolchains.foojay-resolver-convention") version "0.9.0"
}

rootProject.name = "cheetah-1.21.4"

include("cheetah-api", "cheetah-server")