Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
1308079
ci: bump publish-platforms pin to the multipart-JSON fix
tastybento Jul 29, 2026
738af3b
Merge pull request #426 from BentoBoxWorld/ci/publish-platforms-pin
tastybento Jul 30, 2026
bce9a97
Improve Traditional Chinese (zh-TW) translation
qwe664 Aug 3, 2026
a49ae55
Merge pull request #427 from qwe664/develop
tastybento Aug 3, 2026
3bb60da
Update zh-TW.yml: complete translation coverage for v1.8.0
qwe664 Aug 10, 2026
4a3b211
Update zh-TW.yml: complete translation coverage for v1.8.0
qwe664 Aug 10, 2026
ec1efa6
Merge pull request #429 from qwe664/develop
tastybento Aug 10, 2026
1ac50cb
build: add Maven wrapper and enforce Java 21+
Drownek Aug 11, 2026
638e68d
test(e2e): automate Challenges jar build via Gradle Exec
Drownek Aug 11, 2026
c9415f6
fix(e2e): flexibly resolve Java 21+ toolchain and address PR feedback
Drownek Aug 11, 2026
734f776
fix(e2e): restore java-base plugin for JavaToolchainService support
Drownek Aug 11, 2026
73193ee
Bump js-yaml from 4.3.0 to 4.3.1 in /e2e/src/test/e2e
dependabot[bot] Aug 12, 2026
d7caad1
Merge pull request #431 from BentoBoxWorld/dependabot/npm_and_yarn/e2…
tastybento Aug 12, 2026
be00869
build(e2e): bump Gradle wrapper to 9.7.0 so ./gradlew runs on modern …
tastybento Aug 12, 2026
93889c1
fix(e2e): migrate to script-only Maven wrapper and pick newest jar
Drownek Aug 12, 2026
64a98f4
build: pin and verify the Maven distribution, tighten wrapper inputs
tastybento Aug 13, 2026
e3fdf1e
Merge pull request #430 from Drownek/refactor/e2e-build
tastybento Aug 13, 2026
0e8ac99
Update pom.xml - v1.8.1
tastybento Sep 5, 2026
d75d69f
Update README.md
tastybento Sep 5, 2026
1d7bfda
fix: ignore anvil repair cost when matching required inventory items
tastybento Sep 5, 2026
3a029d7
Merge pull request #434 from BentoBoxWorld/fix/433-anvil-repair-cost
tastybento Sep 5, 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: 0 additions & 3 deletions .github/workflows/e2e.yml
Original file line number Diff line number Diff line change
Expand Up @@ -61,9 +61,6 @@ jobs:
# (mineflayer/minecraft-data must support the target Minecraft version).
key: e2e-npm-${{ hashFiles('e2e/src/test/e2e/package-lock.json') }}

- name: Build Challenges jar (Maven)
run: mvn -B -DskipTests package

- name: Run E2E tests
working-directory: e2e
env:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ on:

jobs:
publish:
uses: bentoboxworld/.github/.github/workflows/publish-platforms.yml@ca2dcd167e8db4e0f671a976080744dda43801a6 # master
uses: bentoboxworld/.github/.github/workflows/publish-platforms.yml@1f91a0edf72e8c86d671b3b8fdd3121ac6fb88e1 # master
with:
use_release_asset: "true" # publish the jar attached to the release; do not rebuild
hangar_slug: "Challenges-For-BentoBox" # blank = skip Hangar
Expand Down
4 changes: 4 additions & 0 deletions .mvn/wrapper/maven-wrapper.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
wrapperVersion=3.3.4
distributionType=only-script
distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.12/apache-maven-3.9.12-bin.zip
distributionSha256Sum=305773a68d6ddfd413df58c82b3f8050e89778e777f3a745c8e5b8cbea4018ef
2 changes: 0 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,6 @@

Add-on for BentoBox to provide challenges for any BentoBox GameMode. Challenges can be to collect items, to have items or blocks nearby, to amass an amount of money or island levels, or to have accomplished some player statistic. Each challenge can reward the player with money, experience points, blocks, items, or other things, like permissions, Pre-built challenges are available and there is also a Web Library of pre-built ones. Customize them to fit your needs!

![Challenges](https://github.com/BentoBoxWorld/Challenges/assets/4407265/9b3c5278-3a9d-45f2-9ee1-2c1fc1199a8d)

## How to use

1. Place the addon jar in the addons folder of the BentoBox plugin
Expand Down
67 changes: 58 additions & 9 deletions e2e/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
import java.net.URI
import me.drownek.plugwright.PlugwrightTestTask

plugins {
// Plugwright: boots a real Paper server, deploys plugins, drives Mineflayer bots.
id("io.github.drownek.plugwright") version "2.0.2"
id("java-base")
}

// --- Dependency jars -------------------------------------------------------------------------
Expand Down Expand Up @@ -31,15 +33,62 @@ val bskyblockJar = cachedJar(
"https://github.com/BentoBoxWorld/BSkyBlock/releases/download/1.20.0/BSkyBlock-1.20.0.jar"
)

// Maven-built Challenges jar (version/profile suffix varies: -SNAPSHOT-LOCAL locally, plain on CI).
val challengesJar: File = (file("../target").listFiles()?.toList() ?: emptyList())
.firstOrNull {
it.name.startsWith("Challenges-") && it.name.endsWith(".jar") &&
!it.name.contains("sources") && !it.name.contains("javadoc")
// If Gradle is running on Java 17, try to find a Java 21+ toolchain to satisfy Maven/Paper.
// If Gradle is already running on Java 21+ (e.g., 22, 23), don't force a strict toolchain lock.
val currentJava = JavaVersion.current()
val javaLauncherProvider = if (currentJava < JavaVersion.VERSION_21) {
extensions.getByType<JavaToolchainService>().launcherFor {
languageVersion.set(JavaLanguageVersion.of(21))
}
?: throw GradleException(
"Challenges jar not found in ../target — run 'mvn -q -DskipTests package' first."
)
} else {
null
}

val buildChallenges = tasks.register<Exec>("buildChallenges") {
workingDir = file("..")

inputs.dir(file("../src"))
inputs.file(file("../pom.xml"))
// The wrapper pins the Maven version, so a bump there has to retrigger the build too.
inputs.dir(file("../.mvn"))
inputs.file(file("../mvnw"))

val isWindows = System.getProperty("os.name").lowercase().contains("win")
val executable = if (isWindows) listOf("cmd", "/c", "mvnw.cmd") else listOf("./mvnw")
commandLine(executable + listOf("-q", "package", "-DskipTests"))

// Pass the correct JAVA_HOME to Maven if we needed a custom toolchain
if (javaLauncherProvider != null) {
environment["JAVA_HOME"] = javaLauncherProvider.get().metadata.installationPath.asFile.absolutePath
} else {
environment["JAVA_HOME"] = System.getProperty("java.home")
}

// Explicitly define the expected output file
val outputJar = layout.buildDirectory.file("Challenges.jar")
outputs.file(outputJar)

doFirst {
logger.lifecycle("Building Challenges project using Maven Wrapper (mvnw package)...")
}

doLast {
val builtJar = fileTree("../target") {
include("Challenges-*.jar")
exclude("*sources*", "*javadoc*")
}.files.maxByOrNull { it.lastModified() }
?: throw GradleException("No Challenges jar found in target/")

builtJar.copyTo(outputJar.get().asFile, overwrite = true)
}
}

tasks.named<PlugwrightTestTask>("plugwrightTest") {
dependsOn(buildChallenges)
if (javaLauncherProvider != null) {
javaLauncher.set(javaLauncherProvider)
}
}

plugwright {
minecraftVersion.set("1.21.11")
Expand All @@ -52,6 +101,6 @@ plugwright {
writeFiles {
file("plugins/BentoBox.jar", bentoboxJar)
file("plugins/BentoBox/addons/BSkyBlock.jar", bskyblockJar)
file("plugins/BentoBox/addons/Challenges.jar", challengesJar)
file("plugins/BentoBox/addons/Challenges.jar", file("build/Challenges.jar"))
}
}
Binary file modified e2e/gradle/wrapper/gradle-wrapper.jar
Binary file not shown.
5 changes: 4 additions & 1 deletion e2e/gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.10-bin.zip
distributionSha256Sum=84fbba45c7f4c64abc77460e1c00f541e9f960e3c7ed2538f1ede19eacd873ae
distributionUrl=https\://services.gradle.org/distributions/gradle-9.7.0-bin.zip
networkTimeout=10000
retries=0
retryBackOffMs=500
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
6 changes: 3 additions & 3 deletions e2e/gradlew

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

35 changes: 12 additions & 23 deletions e2e/gradlew.bat

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 3 additions & 3 deletions e2e/src/test/e2e/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading
Loading