Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
b95c693
[WIP] feat(build): ✨ add Gradle build system and update project confi…
Zoriot Jan 5, 2026
51aa6c2
feat(build): ✨ update dependencies and improve async task handling in…
Zoriot Jan 5, 2026
9260c25
feat(build): ✨ enhance async operation handling and update module reg…
Zoriot Jan 5, 2026
0beb3a9
fix(kml): ✨ fix JAXB context handling
Zoriot Jan 10, 2026
fc4b7af
feat(gen): ✨ refactor zip installation and extraction logic, improve …
Zoriot Jan 10, 2026
2ed6e29
fix(stats): ✨ add validation for Network Module Build Team connection…
Zoriot Jan 10, 2026
c0efe6b
feat(build): ✨ update build configuration, enhance module registratio…
Zoriot Jan 10, 2026
227b427
fix(housescripts): ✨ correct block query logic for roof type handling
Zoriot Jan 10, 2026
b48fc24
fix(generator): ✨ disable railway generator temporarly
Zoriot Jan 10, 2026
64c6cdf
fix(generator): ✨ disable field generator temporarily
Zoriot Jan 10, 2026
d8f3aa6
refactor(generator): ✨ update generator components to use centralized…
Zoriot Jan 10, 2026
0c9eccb
refactor(tree): ✨ update tree component logic and improve menu intera…
Zoriot Jan 11, 2026
b6befcf
feat(util): Update GeneratorUtils to 1.7.3
MineFact Jul 18, 2025
73f3c65
refactor(item): ✨ simplify and clean up item metadata handling logic
Zoriot Jan 11, 2026
61b8f3d
feat(util): Update Item Utils to 1.3.2
MineFact Jul 18, 2025
fb0c3ff
feat(util): Update Item Utils to 1.3.3
MineFact Jul 18, 2025
49ef421
feat(util): Update Item Utils to 1.3.4
MineFact Jul 18, 2025
93011c8
refactor(build): ✨ remove unused authlib dependency from build config…
Zoriot Jan 11, 2026
557cf61
refactor(all): ✨ extract utilities into alps-lib
Zoriot Jan 11, 2026
fbdd680
fix(nav): ✨ fix others/default warp group
Zoriot Jan 12, 2026
a5819e5
fix(gen/kml): ✨ fix coordinate parsing and improve error handling
Zoriot Jan 12, 2026
73b3597
refactor(build): ✨ rename packages to align with buildteamtools struc…
Zoriot Jan 12, 2026
ed341fc
feat(build): ✨ add GitHub Actions workflow for Java CI with Gradle
Zoriot Jan 13, 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
45 changes: 45 additions & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
# This workflow will build a Java project with Gradle and cache/restore any dependencies to improve the workflow execution time
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-java-with-gradle

name: Java CI with Gradle

on:
push:
branches: [ "master" ]
pull_request:
branches: [ "master" ]

jobs:
build:

runs-on: ubuntu-latest
permissions:
contents: read

steps:
- uses: actions/checkout@v5
with:
fetch-depth: 0 # full history
fetch-tags: true # grab your tags
# Make sure we check out by branch name, not just SHA:
ref: ${{ github.event_name == 'pull_request' && github.head_ref || github.ref_name }}

- name: Set up JDK 21
uses: actions/setup-java@v5
with:
java-version: '21'
distribution: 'temurin'

# Configure Gradle for optimal use in GitHub Actions, including caching of downloaded dependencies.
# See: https://github.com/gradle/actions/blob/main/setup-gradle/README.md
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4

- name: Build with Gradle Wrapper
run: ./gradlew clean build

- uses: actions/upload-artifact@v4
with:
name: Staging-Build
path: build/libs
compression-level: '9'
33 changes: 33 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -112,3 +112,36 @@ buildNumber.properties
# Common working directory
run/
.vscode/settings.json

# Created by https://www.toptal.com/developers/gitignore/api/gradle
# Edit at https://www.toptal.com/developers/gitignore?templates=gradle

### 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
.project
# JDT-specific (Eclipse Java Development Tools)
.classpath

### Gradle Patch ###
# Java heap dump
*.hprof

# End of https://www.toptal.com/developers/gitignore/api/gradle

40 changes: 19 additions & 21 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,9 @@
<a href="https://github.com/BuildTheEarth/BuildTeamTools">
<img src="https://user-images.githubusercontent.com/66020920/167615506-89e56374-327e-413f-85d9-0179e4a7a3c9.png" alt="Logo" width="100" height="100">
<br><br>
<img src="https://github-production-user-asset-6210df.s3.amazonaws.com/66020920/246825255-a75aa4e7-0cf5-40d3-af56-5c25d2a097b4.png" alt="Logo" width="612">
<img src="https://cdn.buildtheearth.net/outline/uploads/308d605b-c1a0-461c-a758-fd000a3b5a7a/7c38cde6-9c55-450f-ade6-0575da151444/buildteamtools_complete.png" alt="Logo" width="612">
</a>
</p>
<br>

<h1 align="Center">BuildTeamTools</h1>

Expand All @@ -25,7 +24,6 @@
<p align="center">
<a href="https://www.spigotmc.org/resources/buildteamtools.101854/"><img src="https://img.shields.io/spiget/downloads/101854?color=green&label=Downloads" alt="Downloads Count"></a>
<a href="https://www.spigotmc.org/resources/buildteamtools.101854/"><img src="https://img.shields.io/spiget/version/101854?label=Version" alt="Latest Version"></a>
<a href="https://github.com/BuildTheEarth/BuildTeamTools"><img src="https://tokei.rs/b1/github/BuildTheEarth/BuildTeamTools" alt="Total Lines"></a>
<a href="https://github.com/BuildTheEarth/BuildTeamTools"><img src="https://img.shields.io/github/repo-size/BuildTheEarth/BuildTeamTools" alt="Repo Size"></a>
</p>

Expand All @@ -41,11 +39,11 @@ Its primary goal is to significantly speed up the building process by eliminatin
<!-- FEATURES -->
## Features
🔨 **Easy-to-use** Tools for everything around BuildTheEarth<br/>
⏱ **Multi-Version** support from `1.18` - `1.21.4`<br/>
⏱ **Multi-Version** support from `1.18` - `1.21.x`<br/>
✔️ **User-friendly** GUIs and Commands<br/>
💬 **Multi-Language** Support (PLANNED)<br/>
📆 **Automatic** Updates<br/>
🔌 **Easy setup** and configuration<br/>
**Multi-Language** Support (PLANNED)<br/>

<!-- COMPONENTS -->
## Components
Expand All @@ -64,7 +62,7 @@ The **\*** symbol shows that this feature is still being developed or under main
## Installation
💻 **Requirements:**

- A Server running Paper 1.18 - **1.21.4**.
- A Server running Paper 1.18 - **1.21.x**.

🚩 **How to install:**
1. Download BuildTeamTools [here](https://www.spigotmc.org/resources/buildteamtools.101854/).
Expand All @@ -80,29 +78,29 @@ The **\*** symbol shows that this feature is still being developed or under main
**For more help, please see the [wiki](https://resources.buildtheearth.net/s/btt).**

## Contributors
Thank you to the following developers for contributing towards the plugin:

- **MineFact**
- **frikandelworst**
- **Brigart**
- **v4siv**
- **Adam**
- **Noah Husby**
- **Zoriot**
Thanks to all our contributors for contributing towards the plugin development and improvement!
You find them on the [contributors page](https://github.com/BuildTheEarth/BuildTeamTools/graphs/contributors).

Special thanks to the people currently working on the plugin:

- **[Zoriot](https://github.com/Zoriot)**
- **[Jasupa](https://github.com/Jasupa)**
- **[frikandelworst](https://github.com/kyanvde)**
- **[MineFact](https://github.com/MineFact)**

## Index
Click the links below for more information, or see the [wiki](https://resources.buildtheearth.net/s/btt).

- [Sledgehammer](https://resources.buildtheearth.net/s/btt/doc/sledgehammer-module-T7I0PWPsTD)
- [Generators](https://resources.buildtheearth.net/s/btt/doc/generator-module-13zqgI4yFA)
- [Houses](https://resources.buildtheearth.net/s/btt/doc/house-generator-YKQunon6Bp)
- [Roads](https://resources.buildtheearth.net/s/btt/doc/road-generator-QqKBBP0nqO)
- [Railways](https://resources.buildtheearth.net/s/btt/doc/rail-generator-EfgKXdBvk1)
- [Railways [Currently Broken]](https://resources.buildtheearth.net/s/btt/doc/rail-generator-EfgKXdBvk1)
- [Trees](https://resources.buildtheearth.net/s/btt/doc/tree-generator-pnDmYC9hzW)
- [Fields](https://resources.buildtheearth.net/s/btt/doc/field-generator-OqIN2BrZT7)
- [Sledgehammer](https://resources.buildtheearth.net/s/btt/doc/sledgehammer-module-T7I0PWPsTD)
- [Statistics](https://resources.buildtheearth.net/s/btt/doc/statistics-module-iM7IfoKroF) (PLANNED)
- [Plot System](https://resources.buildtheearth.net/s/btt/doc/plot-system-module-kkcH00jpcQ) (PLANNED)
- [Tutorials](https://resources.buildtheearth.net/s/btt/doc/tutorials-module-lkc3LaOrql) (PLANNED)
- Miscellaneous (PLANNED)
- [Security](https://resources.buildtheearth.net/s/btt/doc/security-module-iOmxV0djrW) (PLANNED)
- [Statistics](https://resources.buildtheearth.net/s/btt/doc/statistics-module-iM7IfoKroF)
- [Miscellaneous](https://resources.buildtheearth.net/doc/miscellaneous-appUzeNc5I)
- [Block Palette GUI](https://resources.buildtheearth.net/doc/block-palette-gui-hW8InCtxcq)
- Tutorials (PLANNED)
- Plot System (PLANNED - use [PST](https://github.com/AlpsBTE/Plot-System-Terra) for now)
137 changes: 137 additions & 0 deletions build.gradle.kts
Original file line number Diff line number Diff line change
@@ -0,0 +1,137 @@
/*
* This file was generated by the Gradle 'init' task.
*/

plugins {
java
alias(libs.plugins.lombok)
alias(libs.plugins.git.version)
alias(libs.plugins.shadow)
}

repositories {
//mavenLocal() // NEVER use in Production/Commits!
mavenCentral()
maven {
url = uri("https://repo.papermc.io/repository/maven-public/")
}

maven {
url = uri("https://maven.buildtheearth.net/releases")
}

maven {
url = uri("https://hub.spigotmc.org/nexus/content/repositories/snapshots/")
}

maven {
url = uri("https://mvn.alps-bte.com/repository/alps-bte/")
}

maven {
url = uri("https://repo.onarandombox.com/content/groups/public/")
}

maven {
url = uri("https://repo.codemc.io/repository/maven-snapshots/")
}

maven {
url = uri("https://repo.codemc.io/repository/maven-public/")
}

maven {
url = uri("https://jitpack.io")
}

maven {
url = uri("https://repo.dmulloy2.net/repository/public/")
}

maven {
url = uri("https://maven.daporkchop.net/")
}

maven {
url = uri("https://download.java.net/maven/2")
}

maven {
url = uri("https://maven.enginehub.org/repo/")
}
}

dependencies {
//implementation(libs.com.alpsbte.alpslib.alpslib.libpsterra) CURRENTLY BROKEN
implementation(libs.alpslib.io)
implementation(libs.alpslib.utils) {
exclude(group = "com.github.cryptomorin", module = "XSeries")
}
implementation(libs.com.alpsbte.canvas)
implementation(libs.net.daporkchop.lib.binary)
implementation(libs.com.github.cryptomorin.xseries)
implementation(libs.net.wesjd.anvilgui)
implementation(libs.micycle.clipper2)
implementation(libs.org.json.json)
implementation(libs.com.google.code.gson.gson)
implementation(libs.com.squareup.okhttp3.okhttp.jvm)
implementation(libs.javaapiforkml) {
exclude(group = "com.sun.xml.bind", module = "jaxb-xjc") // Else Remapping will yell of duplicated classes
}
implementation(libs.com.googlecode.json.simple)
compileOnly(libs.io.papermc.paper.paper.api)
compileOnly(libs.com.fastasyncworldedit.fastasyncworldedit.core)
compileOnly(libs.com.fastasyncworldedit.fastasyncworldedit.bukkit)
}

val versionDetails: groovy.lang.Closure<com.palantir.gradle.gitversion.VersionDetails> by extra
val details = versionDetails()

group = "net.buildtheearth"
version = "0.2.0" + "-" + details.commitDistance + "-" + details.gitHash + "-SNAPSHOT"
description = "BuildTeamTools"
java.sourceCompatibility = JavaVersion.VERSION_21
java.targetCompatibility = JavaVersion.VERSION_21

tasks.withType<JavaCompile> {
options.encoding = "UTF-8"
}

tasks.withType<Javadoc> {
options.encoding = "UTF-8"
}

tasks.shadowJar {
// Exclude annotation classes (e.g. org.jetbrains.annotations)
exclude("org/jetbrains/annotations/**")
// Exclude slf4j classes
exclude("org/slf4j/**")
archiveClassifier = ""

relocationPrefix = "net.buildtheearth.buildteamtools.shaded"
enableAutoRelocation = true
}

tasks.assemble {
dependsOn(tasks.shadowJar) // Ensure that the shadowJar task runs before the build task
}

tasks.jar {
archiveClassifier = "UNSHADED"
enabled = false // Disable the default jar task since we are using shadowJar
}

tasks.processResources {
// work around IDEA-296490
duplicatesStrategy = DuplicatesStrategy.INCLUDE
with(copySpec {
from("src/main/resources/plugin.yml") {
expand(
mapOf(
"version" to project.version,
"description" to project.description
)
)
}
})
}
4 changes: 4 additions & 0 deletions gradle.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# This file was generated by the Gradle 'init' task.
# https://docs.gradle.org/current/userguide/build_environment.html#sec:gradle_configuration_properties
org.gradle.configuration-cache=true

48 changes: 48 additions & 0 deletions gradle/libs.versions.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
# This file was generated by the Gradle 'init' task.
# https://docs.gradle.org/current/userguide/platforms.html#sub::toml-dependencies-format

[versions]
com-alpsbte-alpslib-alpslib-libpsterra = "1.1.3"
com-alpsbte-canvas = "1.3"
com-fastasyncworldedit-fastasyncworldedit-bukkit = "2.12.3"
com-fastasyncworldedit-fastasyncworldedit-core = "2.12.3"
com-github-cryptomorin-xseries = "13.6.0" # https://github.com/CryptoMorin/XSeries/releases
com-google-code-gson-gson = "2.13.1"
com-mojang-authlib = "7.0.61"
com-squareup-okhttp3-okhttp-jvm = "5.1.0"
javaapiforkml = "3.0.10" # https://github.com/urbancamo/javaapiforkml
io-papermc-paper-paper-api = "1.21.10-R0.1-SNAPSHOT"
micycle-clipper2 = "1.2.2"
net-daporkchop-lib-binary = "0.5.7-SNAPSHOT"
net-wesjd-anvilgui = "1.10.8-SNAPSHOT"
Comment on lines +16 to +17
Copy link

Copilot AI Jan 10, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The dependencies net.daporkchop.lib:binary:0.5.7-SNAPSHOT and net.wesjd:anvilgui:1.10.8-SNAPSHOT are pinned to -SNAPSHOT versions from third-party Maven repositories, which are mutable and can be replaced upstream without any change to the version string. If an attacker compromises the publisher or repository, they can silently ship a new JAR under the same coordinate, and your builds will automatically include and ship that untrusted code. To reduce this supply-chain risk, switch to immutable released versions (non-SNAPSHOT) or otherwise pin to artifacts whose content cannot change without updating the version you depend on.

Copilot uses AI. Check for mistakes.
org-json-json = "20251224" # https://mvnrepository.com/artifact/org.json/json/20251224
io-freefair-lombok = "9.1.0"
com-googlecode-json-simple = "1.1.1" # https://mvnrepository.com/artifact/com.googlecode.json-simple/json-simple
com-palantir-git-version = "4.0.0"
com-gradleup-shadow = "9.3.0"
alpslib-io = "1.2.0"
alpslib-utils = "1.4.0"

[libraries]
com-alpsbte-alpslib-alpslib-libpsterra = { module = "com.alpsbte.alpslib:alpslib-libpsterra", version.ref = "com-alpsbte-alpslib-alpslib-libpsterra" }
com-alpsbte-canvas = { module = "com.alpsbte:canvas", version.ref = "com-alpsbte-canvas" }
com-fastasyncworldedit-fastasyncworldedit-bukkit = { module = "com.fastasyncworldedit:FastAsyncWorldEdit-Bukkit", version.ref = "com-fastasyncworldedit-fastasyncworldedit-bukkit" }
com-fastasyncworldedit-fastasyncworldedit-core = { module = "com.fastasyncworldedit:FastAsyncWorldEdit-Core", version.ref = "com-fastasyncworldedit-fastasyncworldedit-core" }
com-github-cryptomorin-xseries = { module = "com.github.cryptomorin:XSeries", version.ref = "com-github-cryptomorin-xseries" }
com-google-code-gson-gson = { module = "com.google.code.gson:gson", version.ref = "com-google-code-gson-gson" }
com-mojang-authlib = { module = "com.mojang:authlib", version.ref = "com-mojang-authlib" }
com-squareup-okhttp3-okhttp-jvm = { module = "com.squareup.okhttp3:okhttp-jvm", version.ref = "com-squareup-okhttp3-okhttp-jvm" }
javaapiforkml = { module = "uk.m0nom:javaapiforkml", version.ref = "javaapiforkml" }
io-papermc-paper-paper-api = { module = "io.papermc.paper:paper-api", version.ref = "io-papermc-paper-paper-api" }
micycle-clipper2 = { module = "micycle:clipper2", version.ref = "micycle-clipper2" }
net-daporkchop-lib-binary = { module = "net.daporkchop.lib:binary", version.ref = "net-daporkchop-lib-binary" }
net-wesjd-anvilgui = { module = "net.wesjd:anvilgui", version.ref = "net-wesjd-anvilgui" }
org-json-json = { module = "org.json:json", version.ref = "org-json-json" }
com-googlecode-json-simple = { module = "com.googlecode.json-simple:json-simple", version.ref = "com-googlecode-json-simple" }
alpslib-io = { module = "com.alpsbte.alpslib:alpslib-io", version.ref = "alpslib-io" }
alpslib-utils = { module = "com.alpsbte.alpslib:alpslib-utils", version.ref = "alpslib-utils" }

[plugins]
lombok = { id = "io.freefair.lombok", version.ref = "io-freefair-lombok" }
git-version = { id = "com.palantir.git-version", version.ref = "com-palantir-git-version" }
shadow = { id = "com.gradleup.shadow", version.ref = "com-gradleup-shadow" }
Binary file added gradle/wrapper/gradle-wrapper.jar
Binary file not shown.
7 changes: 7 additions & 0 deletions gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-9.0.0-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
Loading