Skip to content

Release v2.4#68

Draft
DomiIRL wants to merge 103 commits into
masterfrom
development
Draft

Release v2.4#68
DomiIRL wants to merge 103 commits into
masterfrom
development

Conversation

@DomiIRL

@DomiIRL DomiIRL commented Apr 14, 2025

Copy link
Copy Markdown
Member

» Update v2.4

➦ General
» Fix compatibility issues for 1.19 up to 1.21.5
» Dropped official support and maintenance for version below 1.19

➦ Commands
» /setlang command to change the current language of the plugin

➦ Challenges
» Delay Damage Challenge
» Quiz Challenge
» [] Teams for Force-Challenges

➦ Optimizations
» Notify new plugin users the need for operator / permissions

➦ Bug Fixes
» new Attribute Names
» Skulls not loading properly
» All Items not displaying the complete names

➦ Technical
» Move anweisen/utiltities dependency inside the codebase

DomiIRL and others added 30 commits February 10, 2022 18:22
…allenge' into development

# Conflicts:
#	language/files/de.json
#	language/files/en.json
#	plugin/src/main/java/net/codingarea/challenges/plugin/management/challenges/ChallengeLoader.java
#	plugin/src/main/resources/plugin.yml
@anweisen anweisen marked this pull request as draft May 25, 2026 22:50
anweisen added 3 commits May 26, 2026 12:59
does not resolve issues with cloudnet impl
[!!!] following issues are known and might cause build/checks to fail - will be addressed in upcoming changes:
- artifact version ambiguity for gson caused by cloudnet might cause build failure due to breaking changes between versions
- cloudnet depend resolution (legacy repo might be discontinued)
- java version compatibility

Replace Maven build with Gradle: add Gradle wrapper, top-level build.gradle.kts, settings, gradle.properties and libs.versions.toml. Add subproject build scripts for plugin and mongo-connector using the Shadow plugin, configure Java 16, resource filtering (injecting ${version}), and UTF-8 compilation.

Update CI/workflow: rename GitHub Action to use Gradle (setup-gradle, ./gradlew build) and update artifact paths. Update .gitignore for Gradle outputs and keep gradle/wrapper/gradle-wrapper.jar tracked. Update plugin.yml files to use version token expansion.
- concurrency check
- file permissions
- remove redundant wrapper validation (newer gradle action)
anweisen added 25 commits May 26, 2026 20:12
- explicit compileOnly gson version (use bundled mojang gson)
- necessary due to ambiguity created by multiple gson versions bundled by depends
- consider bundling via relocate
- necessary because SecurityManager was marked for removal in java17, removes all calls to it
- include .editorconfig
- provisional step, considering extracting plugin api entirely and registering cloud impl indirectly
- before: mix of javax.* annotations and jetbrains annotations
- replaced all references to jsr (javax.*) annotations with jetbrains annotations
- as jsr becomes stale, it's considered best practice to use jetbrains annotations, esp. in combination with intellij and qodana
Delete explicit getPlayer() and getInventory() methods from ChallengeMenuClickInfo (provided by superclass). Because this change was excluded from the previous annotation migration, the reference to Nonnull was not replaced with NotNull resulting in build failure.
- timer menu generator created dummy inventories as it kept adding inventories to a list while only using first two
- discussion: reason for timer menu generator not using MultiPageMenuGenerator?
- language loader migration function (probably) did not return correct read config doc
- gamerules were renamed, adding compatibility via wrapper types
- snake yaml lib removed, use built in java base64 lib for backpack en/decoding
- minecraft made structural changes to their world system, the reset system/world manager had to be refactored
- world reset now injects the new random/custom seed on startup into nms holder, as the new system has already read the level seed and would generate it again
- alternatively we could switch to a "oscillating"  approach where we would just generate a new world and use it as the default level
- missing change: world names should now only include the level name without dimension suffix (version dependent!)
- old attributes wrapper resulted in errors due to version incompatibility, replaced it as well as gamerules wrapper (special case raid gamerule!)
- previously for pre-world-refactor: we pre generated the custom seed world before shutting down and copied it onLoad, removed this logic for easier cross-version-compatibility
- newer version requires seed injection via reflection as seed has already been read from the world data (server.properties change has no effect)
- older versions read seed from server.properties, no refl. injection necessary/effective
- since 1d2b97b player challenge scoreboard objectives always have the same name; when the scoreboard was updated twice (e.g. because of the same trigger event) concurrently, it created a race condition where sometime the objective creation was sent twice to player resulting in a disconnect/crash in newer (only in newer minecraft versions?)
- because team death and respawn setting call the same function on the same event but the timer state check was only on of them the timer pause was called twice concurrently which yielded a warning in the log; moved the check to prevent this
- bukkit scoreboard api: current method is now deprecated, using new method with fallback to deprecated api for compatibility
- force target item display via armor stand resulted in error when material is not an item (tested in 26.1.2)
- the quiz challenge was corrupted by an incorrect merge conflict resolution (presumably in 8930698)
- the challenge remains broken and still requires optimization
Remove IDE module file and refactor language handling: LanguageLoader now reads languages from bundled resources, supports online updates, and allows a direct overwrite path. Migrates away from a separate properties file, adds safer migration logic that preserves customized messages and only fills missing keys, and merges online updates if enabled (skipping in dev mode). Build script now packages language JSON files into the plugin JAR. Add new config options `language-online-update` and `language-overwrite-path` with documentation in config.yml, and rename/clean up related constants and getters.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

type: release New version is released, merge into master

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants