Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
86 commits
Select commit Hold shift + click to select a range
757ed6a
feat: update allay-api and mapping files
smartcmd Aug 20, 2025
b7864bb
feat: use https://github.com/misode/mcmeta to replace the old je_bloc…
smartcmd Aug 21, 2025
3ef60f4
feat: adapt allay api 0.12.0-SHAPSHOT (waiting for 0.12.0 release)
smartcmd Sep 30, 2025
8a8db4a
Merge pull request #445 from PolyhedralDev/dev/7.0-2
duplexsystem Oct 3, 2025
6dba2e9
Use latest OW
duplexsystem Oct 3, 2025
de4656d
new pack name
duplexsystem Oct 3, 2025
d1faac8
Pull in remaining packs
duplexsystem Oct 3, 2025
84a6cd0
fix bukkit spawning consistency
duplexsystem Oct 3, 2025
fd3d1ce
Change ConstantRage check to only check if greater than
duplexsystem Oct 3, 2025
a7826de
add metapacks to default commented ingore list
duplexsystem Oct 3, 2025
326300b
update resource logic for metapacks
duplexsystem Oct 4, 2025
10558b5
fix typo
duplexsystem Oct 4, 2025
9b3a105
Fix game metapack loading
duplexsystem Oct 4, 2025
3b25e82
feat: use allay-api 0.12.0
smartcmd Oct 4, 2025
550a037
chore: remove unused okaeri maven repo
smartcmd Oct 4, 2025
e4561bd
Merge branch 'master' into feat/allay-update
smartcmd Oct 4, 2025
774d076
build: enable build for allay platform
smartcmd Oct 4, 2025
06f0400
Merge pull request #526 from AllayMC/feat/allay-update
duplexsystem Oct 4, 2025
874ef56
Update seismic
duplexsystem Oct 5, 2025
42f3c56
Extended BlockState API
duplexsystem Oct 5, 2025
089850d
Support for SNBT in structures
duplexsystem Oct 5, 2025
a80b94a
Unwrap BlockState in Chunk Gen
duplexsystem Oct 5, 2025
48586eb
Fix SNBT writing
duplexsystem Oct 6, 2025
96493ed
Merge remote-tracking branch 'origin/master'
duplexsystem Oct 6, 2025
2b09ed8
Simplify mixin implementations
duplexsystem Oct 6, 2025
8d15399
Reformat Code
duplexsystem Oct 6, 2025
9ca7014
Entity SNBT Support and Cleanup
duplexsystem Oct 6, 2025
1d2c6d4
Synchronize pack loading
duplexsystem Oct 6, 2025
ac98726
Cleanup Fabric BlockState and EntityType Extended implementation
duplexsystem Oct 7, 2025
81bc51f
Update gradle
duplexsystem Oct 7, 2025
4ff91c9
Revert "Update gradle"
duplexsystem Oct 7, 2025
42e1adf
chore: update minestom dependency
Bloeckchengrafik Oct 7, 2025
12d2221
fix: ignore and warn on snbt on particles
Bloeckchengrafik Oct 7, 2025
1700650
feat: add methods to pack by meta and default meta in TerraMinestomWo…
Bloeckchengrafik Oct 7, 2025
243c523
feat: pre-add biomes to registry to prevent future modifications
Bloeckchengrafik Oct 7, 2025
234ff3e
feat: actually do biome preloading
Bloeckchengrafik Oct 7, 2025
1b6ebeb
fix: improve particle handling and block state retrieval
Bloeckchengrafik Oct 7, 2025
dc5952a
WIP 1.21.10
duplexsystem Oct 7, 2025
ecbfd17
Fabric 1.21.10
duplexsystem Oct 7, 2025
d640b49
Merge pull request #533 from everbuild-org/fix/minestom-platform-fixes
duplexsystem Oct 8, 2025
d1ad3d0
feat: add support for meta pack
smartcmd Oct 9, 2025
0144200
doc: update comment
smartcmd Oct 9, 2025
3b377d9
fix concurrency issues in openregistryimpl
duplexsystem Oct 9, 2025
1fe5633
Remove bufferedimage
duplexsystem Oct 9, 2025
c3d2652
parallel pack loading
duplexsystem Oct 9, 2025
8c532ed
fix: ignore the block when out of bounds
smartcmd Oct 10, 2025
9d0fa0a
Merge branch 'master' into feat/meta-pack
smartcmd Oct 10, 2025
ad80769
Removed version specific bindings
OakLoaf Oct 12, 2025
8bceb25
Corrected version formatting in supported versions list
OakLoaf Oct 13, 2025
8b62bad
Moved nms packages directly into the nms gradle module
OakLoaf Oct 13, 2025
c282e55
Adjusted paper dependency
OakLoaf Oct 13, 2025
8fa3978
feat: update resource files
smartcmd Oct 14, 2025
9f766b0
Merge pull request #535 from PolyhedralDev/dev/1.21.10
duplexsystem Oct 14, 2025
3cf11a9
Merge pull request #534 from AllayMC/feat/meta-pack
duplexsystem Oct 14, 2025
9d747ae
Relocate caffeine to fix conflicts with other mods/plugins
ryzech Nov 19, 2025
309fb5a
Update Seismic
duplexsystem Dec 8, 2025
dc7c57d
Update seismic 2
duplexsystem Dec 10, 2025
12f1b3f
Use ASM to to compile extrusion pipelines
duplexsystem Dec 10, 2025
ddc8cc7
Reformat
duplexsystem Dec 10, 2025
d262831
feat: add basic minestom NBT additions and improve block state parser…
Bloeckchengrafik Dec 11, 2025
8578bba
perf: reduce object churn by using minestom block states
Bloeckchengrafik Dec 11, 2025
ae2d801
perf: reduce object churn by swapping to long keys in GeneratedChunkC…
Bloeckchengrafik Dec 11, 2025
dd2f036
More Extrusion Opts
duplexsystem Dec 11, 2025
f8f6b0b
Reformat
duplexsystem Dec 11, 2025
24bca3e
Merge pull request #542 from everbuild-org/fix/minestom-nbt-additions
duplexsystem Dec 11, 2025
f9a5dfb
Update seismic
duplexsystem Dec 11, 2025
8b933b0
Merge remote-tracking branch 'origin/master'
duplexsystem Dec 11, 2025
d6285a5
Improve TriStateintCache with Unsafe
duplexsystem Dec 11, 2025
cf4f782
Download JavaDocs and Sources in Idea
duplexsystem Dec 11, 2025
97b4ea6
Improve PaddedGridDistributor Performance
duplexsystem Dec 11, 2025
bba55f2
Align TriStateIntCache
duplexsystem Dec 11, 2025
1fc97a4
Small biomechunk allocation opt
duplexsystem Dec 11, 2025
e556e2b
Update Seismic
duplexsystem Dec 13, 2025
6ca4014
Terra Search Command
duplexsystem Dec 13, 2025
be964da
paper async
duplexsystem Dec 13, 2025
fc779e1
Auto-mode
duplexsystem Dec 13, 2025
8c155c7
step arg as min res
duplexsystem Dec 13, 2025
e184937
WIP Jenkinsfile
duplexsystem Dec 14, 2025
ac71b3e
Fix java doc dir
duplexsystem Dec 14, 2025
99e2907
add java doc build
duplexsystem Dec 14, 2025
a159deb
update publishing config
duplexsystem Dec 14, 2025
6929de7
Merge pull request #538 from ryzech/fix/caffeine-relocate
duplexsystem Dec 14, 2025
c6eb2f4
Revert "Merge pull request #538 from ryzech/fix/caffeine-relocate"
duplexsystem Dec 17, 2025
2e3ce78
add ai guidelines
dfsek Jan 10, 2026
75dddb2
Merge pull request #549 from PolyhedralDev/ai-guidelines
dfsek Jan 10, 2026
41af675
Fix CloudCommandSender incorrectly getting the sender entity / player
bananababoo Mar 23, 2026
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
3 changes: 2 additions & 1 deletion .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ You must put an x in all the boxes that it applies to. (Like this: [x])
<!-- There is an included `.editorconfig` file in the base of the repo. Please use a plugin for your IDE of choice that follows those settings. -->
- [ ] I have read the [`CONTRIBUTING.md`](https://github.com/PolyhedralDev/Terra/blob/master/CONTRIBUTING.md)
document in the root of the git repository.
- [ ] LLM-based tools were not used to create this PR. (ChatGPT, Claude, etc)

#### Types of changes

Expand Down Expand Up @@ -98,7 +99,7 @@ You must put an x in all the boxes that it applies to. (Like this: [x])
- [ ] I am not the original author of this code, but it is in public domain or
released under [GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html) or a compatible license.
<!--
Please provide reliable evidence of this.
Please provide reliable evidence of this. LLM-generated code does not satisfy this requirement.
NOTE: for compatible licenses, you must make sure to add the included license somewhere in the program, if so required.
(And even if it's not required, it's still nice to do it. Also add attribution somewhere.)
-->
7 changes: 5 additions & 2 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -258,6 +258,9 @@ as [GitHub Pull Requests](https://guides.github.com/activities/forking/#making-a
see instead** and why.
- **Explain why this enhancement would be useful** to most Terra users and isn't
something that can or should be implemented as an addon.
- **Do not use LLM/"AI" tools to create your pull request.** Your pr should be written
by you. Using an LLM to automate small, tedious tasks (regex and other fiddly things like it)
is acceptable, but submitting a low-effort, completely LLM-generated PR will result in a ban.

## Styleguides

Expand Down Expand Up @@ -381,7 +384,7 @@ compatibilities are welcome and encouraged, in the form of addons.**

### Platform-Agnostic Design

Terra must, at all times, remain platform agnostic. This means it must be able
Terra must, at all times, remain platform-agnostic. This means it must be able
to run on theoretically any voxel based platform. Including non-minecraft games
like Terasology.

Expand All @@ -391,7 +394,7 @@ it'll be running on.
Examples:

- Don't assume the world height is 256.
- Don't assume that a specific block, item, or entity exists. (Eg. don't assume
- Don't assume that a specific block, item, or entity exists. (E.g. don't assume
there exists a block called `minecraft:grass_block`)

### Data-Driven
Expand Down
149 changes: 149 additions & 0 deletions Jenkinsfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,149 @@
pipeline {
agent any

tools {
jdk "Temurin Java 21"
}

triggers {
githubPush()
}

environment {
DISCORD_WEBHOOK_URL = credentials('polydev-discord-webhook-url')
}

stages {
stage('Checkout') {
steps {
scmSkip(deleteBuild: true)
}
}

stage('Setup Gradle') {
steps {
sh 'chmod +x gradlew'
}
}

stage('Build') {
steps {
withGradle {
sh './gradlew build --rerun-tasks -x check'
sh './gradlew javadoc'
}
}

post {
success {
archiveArtifacts artifacts: 'platforms/fabric/build/libs/Terra-fabric*.jar,platforms/bukkit/build/libs/Terra-bukkit*-shaded.jar,platforms/allay/build/libs/Terra-allay*.jar,platforms/minestom/build/libs/Terra-minestom*.jar', fingerprint: true, onlyIfSuccessful: true

javadoc javadocDir: 'common/api/build/docs/javadoc', keepAll: true
}
}
}

stage('Tests') {
steps {
withGradle {
sh './gradlew test --rerun-tasks'
}
}
}

// stage('Deploy to snapshots repositories') {
// when {
// allOf {
// not { buildingTag() }
// not { expression { env.TAG_NAME != null && env.TAG_NAME.matches('v\\d+\\.\\d+\\.\\d+') } }
// }
// }
//
// steps {
// withCredentials([
// string(credentialsId: 'maven-signing-key', variable: 'ORG_GRADLE_PROJECT_signingKey'),
// string(credentialsId: 'maven-signing-key-password', variable: 'ORG_GRADLE_PROJECT_signingPassword'),
// usernamePassword(
// credentialsId: 'solo-studios-maven',
// passwordVariable: 'ORG_GRADLE_PROJECT_SoloStudiosSnapshotsPassword',
// usernameVariable: 'ORG_GRADLE_PROJECT_SoloStudiosSnapshotsUsername'
// )
// ]) {
// withGradle {
// sh './gradlew publishAllPublicationsToSoloStudiosSnapshotsRepository'
// }
// }
// }
// }

stage('Deploy to releases repositories') {
// when {
// allOf {
// buildingTag()
// expression { env.TAG_NAME != null && env.TAG_NAME.matches('v\\d+\\.\\d+\\.\\d+') }
// }
// }

steps {
withCredentials([
string(credentialsId: 'maven-signing-key', variable: 'ORG_GRADLE_PROJECT_signingKey'),
string(credentialsId: 'maven-signing-key-password', variable: 'ORG_GRADLE_PROJECT_signingPassword'),
usernamePassword(
credentialsId: 'solo-studios-maven',
passwordVariable: 'ORG_GRADLE_PROJECT_SoloStudiosReleasesPassword',
usernameVariable: 'ORG_GRADLE_PROJECT_SoloStudiosReleasesUsername'
),
// TODO: does not yet exist (uncomment once added)
// usernamePassword(
// credentialsId: 'sonatype-maven-credentials',
// passwordVariable: 'ORG_GRADLE_PROJECT_SonatypePassword',
// usernameVariable: 'ORG_GRADLE_PROJECT_SonatypeUsername'
// ),
// usernamePassword(
// credentialsId: 'codemc-maven-credentials',
// passwordVariable: 'ORG_GRADLE_PROJECT_CodeMCPassword',
// usernameVariable: 'ORG_GRADLE_PROJECT_CodeMCUsername'
// )
]) {
withGradle {
sh './gradlew publish'
//sh './gradlew publishAllPublicationsToSoloStudiosReleasesRepository'
// sh './gradlew publishAllPublicationsToSonatypeRepository'
// sh './gradlew publishAllPublicationsToCodeMCRepository'
}
}
}
}
}

post {
always {
discoverReferenceBuild()

// junit testResults: '**/build/test-results/*/TEST-*.xml'

recordIssues(
aggregatingResults: true,
enabledForFailure: true,
minimumSeverity: 'ERROR',
sourceCodeEncoding: 'UTF-8',
checksAnnotationScope: 'ALL',
sourceCodeRetention: 'LAST_BUILD',
tools: [java(), javaDoc()]
)

discordSend(
title: env.JOB_NAME + ' ' + env.BUILD_DISPLAY_NAME,
showChangeset: true,
enableArtifactsList: true,
link: env.BUILD_URL,
result: currentBuild.currentResult,
customAvatarUrl: 'https://github.com/PolyhedralDev.png',
customUsername: 'Solo Studios Jenkins',
webhookURL: env.DISCORD_WEBHOOK_URL,
)

cleanWs()
}
}
}
12 changes: 6 additions & 6 deletions buildSrc/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -22,11 +22,11 @@ repositories {

dependencies {
//TODO Allow pulling from Versions.kt
implementation("com.gradleup.shadow", "shadow-gradle-plugin", "8.3.6")
implementation("com.gradleup.shadow", "shadow-gradle-plugin", "8.3.9")

implementation("io.papermc.paperweight.userdev", "io.papermc.paperweight.userdev.gradle.plugin", "2.0.0-beta.17")
implementation("org.ow2.asm", "asm", "9.8")
implementation("org.ow2.asm", "asm-tree", "9.8")
implementation("com.dfsek.tectonic", "common", "4.2.1")
implementation("org.yaml", "snakeyaml", "2.4")
implementation("io.papermc.paperweight.userdev", "io.papermc.paperweight.userdev.gradle.plugin", "2.0.0-beta.18")
implementation("org.ow2.asm", "asm", "9.9")
implementation("org.ow2.asm", "asm-tree", "9.9")
implementation("com.dfsek.tectonic", "common", "4.3.1")
implementation("org.yaml", "snakeyaml", "2.5")
}
8 changes: 8 additions & 0 deletions buildSrc/src/main/kotlin/CompilationConfig.kt
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import org.gradle.kotlin.dsl.getByName
import org.gradle.kotlin.dsl.register
import org.gradle.kotlin.dsl.withType
import org.gradle.language.jvm.tasks.ProcessResources
import org.gradle.plugins.ide.idea.model.IdeaModel

fun Project.configureCompilation() {
apply(plugin = "maven-publish")
Expand All @@ -21,6 +22,13 @@ fun Project.configureCompilation() {
apply(plugin = "idea")
apply<TectonicDocPlugin>()

configure<IdeaModel> {
module {
isDownloadJavadoc = true
isDownloadSources = true
}
}

configure<JavaPluginExtension> {
sourceCompatibility = JavaVersion.VERSION_21
targetCompatibility = JavaVersion.VERSION_21
Expand Down
9 changes: 0 additions & 9 deletions buildSrc/src/main/kotlin/DependencyConfig.kt
Original file line number Diff line number Diff line change
Expand Up @@ -57,15 +57,6 @@ fun Project.configureDependencies() {
maven("https://s01.oss.sonatype.org/content/repositories/snapshots/") {
name = "Sonatype Snapshots"
}
maven("https://repo.opencollab.dev/maven-releases/") {
name = "OpenCollab Releases"
}
maven("https://repo.opencollab.dev/maven-snapshots/") {
name = "OpenCollab Snapshots"
}
maven("https://storehouse.okaeri.eu/repository/maven-public/") {
name = "Okaeri"
}
maven("https://repo.onarandombox.com/multiverse-releases") {
name = "onarandombox"
}
Expand Down
26 changes: 22 additions & 4 deletions buildSrc/src/main/kotlin/DistributionConfig.kt
Original file line number Diff line number Diff line change
Expand Up @@ -49,9 +49,19 @@ fun Project.configureDistribution() {
doFirst {
try {
file("${buildDir}/resources/main/packs/").deleteRecursively()
file("${buildDir}/resources/main/metapacks/").deleteRecursively()
val overworldPackUrl =
URL("https://github.com/PolyhedralDev/TerraOverworldConfig/releases/download/" + Versions.Terra.overworldConfig + "/Overworld.zip")
val reimagENDPackUrl =
URL("https://github.com/PolyhedralDev/ReimagEND/releases/download/" + Versions.Terra.reimagENDConfig + "/ReimagEND.zip")
val tartarusPackUrl =
URL("https://github.com/PolyhedralDev/Tartarus/releases/download/" + Versions.Terra.tartarusConfig + "/Tartarus.zip")
val defaultPackUrl =
URL("https://github.com/PolyhedralDev/TerraOverworldConfig/releases/download/" + Versions.Terra.overworldConfig + "/default.zip")
downloadPack(defaultPackUrl, project)
URL("https://github.com/PolyhedralDev/DefaultMetapack/releases/download/" + Versions.Terra.defaultConfig + "/default.zip")
downloadPack(overworldPackUrl, project)
downloadPack(reimagENDPackUrl, project)
downloadPack(tartarusPackUrl, project)
downloadPack(defaultPackUrl, project, true)
} catch (_: Exception) {
}
}
Expand Down Expand Up @@ -97,6 +107,13 @@ fun Project.configureDistribution() {
resources.computeIfAbsent("packs") { ArrayList() }.add(it.name)
}

val metaPacksDir = File("${project.buildDir}/resources/main/metapacks/")

metaPacksDir.walkTopDown().forEach {
if (it.isDirectory || !it.name.endsWith(".zip")) return@forEach
resources.computeIfAbsent("metapacks") { ArrayList() }.add(it.name)
}

val langDir = File("${project(":common:implementation").buildDir}/resources/main/lang/")

langDir.walkTopDown().forEach {
Expand Down Expand Up @@ -164,9 +181,10 @@ fun Project.configureDistribution() {
}
}

fun downloadPack(packUrl: URL, project: Project) {
fun downloadPack(packUrl: URL, project: Project, metapack: Boolean = false) {
val fileName = packUrl.file.substring(packUrl.file.lastIndexOf("/"))
val file = File("${project.buildDir}/resources/main/packs/${fileName}")
val resourceType = if (metapack) "metapacks" else "packs"
val file = File("${project.buildDir}/resources/main/${resourceType}/${fileName}")
file.parentFile.mkdirs()
file.outputStream().write(packUrl.readBytes())
}
Expand Down
13 changes: 7 additions & 6 deletions buildSrc/src/main/kotlin/PublishingConfig.kt
Original file line number Diff line number Diff line change
Expand Up @@ -16,16 +16,17 @@ fun Project.configurePublishing() {
}

repositories {
val mavenUrl = "https://repo.codemc.io/repository/maven-releases/"
val mavenUrl = "https://maven.solo-studios.ca/releases/"
//val mavenSnapshotUrl = "https://repo.codemc.io/repository/maven-snapshots/"

maven(mavenUrl) {
val mavenUsername: String? by project
val mavenPassword: String? by project
if (mavenUsername != null && mavenPassword != null) {
val SoloStudiosReleasesUsername: String? by project
val SoloStudiosReleasesPassword: String? by project

if (SoloStudiosReleasesUsername != null && SoloStudiosReleasesPassword != null) {
credentials {
username = mavenUsername
password = mavenPassword
username = SoloStudiosReleasesUsername
password = SoloStudiosReleasesPassword
}
}
}
Expand Down
Loading