Skip to content

Repository files navigation

EDEN banner

CI status Paper 1.21 Java 25

EDEN is the lobby narrative engine for The Threshold. It drives the pre-portal experience: NPC dialogue and skins, custom quest items, puzzle/progress state per player, ambient zone sound, and the activation panel that gates entry to survival.

What It Does

  • Spawns and manages narrative NPCs (skinned, positioned, with multi-stage dialogue and conditional exchanges)
  • Tracks per-player puzzle progress: clues found, items given, panel solved, portal unlocked
  • Drives an activation panel puzzle (insert clue items in the correct order to open a door)
  • Manages breakable blocks and loot chests that hand out quest items
  • Plays zone-based ambient sound as players move through the lobby (inner, outer, border, bunker, corridor)
  • Shows a compass/quest-tracker UI pointing players to their next objective
  • Handles cinematics, corridor item displays, and lobby-specific chat/inventory/visibility restrictions
  • Sends solved players through to a survival-world destination

Commands

Command Description Permission
/eden reload Reload config and respawn NPCs eden.admin
/eden setnpc <id> Set NPC position to your location eden.admin
/eden setcompass <id> Set compass target position to your location eden.admin
/eden setbunker Set bunker entrance trapdoor to your block position eden.admin
/eden setchest <id> Set loot chest location to your targeted block eden.admin
/eden spawnnpcs Force-respawn all NPCs eden.admin
/eden puzzle <player> Inspect a player's puzzle progress eden.admin
/eden reset <player> Reset a player's puzzle progress and EDEN items eden.admin
/eden solve <player> Skip a player to solved state with guide and key eden.admin
/eden zone Show your current ambient zone eden.admin
/eden spawndisplay Spawn rotating/bobbing display of held item eden.admin

All subcommands are gated behind the single eden.admin permission node, and (aside from reset/solve, which target offline/online players by name) most must be run by a player standing in the configured lobby world.

Requirements

  • Paper 1.21 (api-version: '1.21')
  • Java 25 runtime (built against a Java 26 toolchain via paperweight-userdev, targeting 1.21 API compiled with 26.1.2.build.+)

Getting Started (Developers)

Prerequisites

  • Gradle (via the included gradlew wrapper)
  • Java 26 (CI builds with Temurin 26, matching the project's Gradle toolchain)

Build

./gradlew spotlessApply build

Install

Drop the built jar into your server's plugins/ folder and restart.

Configuration

config.yml defines the entire lobby narrative: settings (lobby world, dialogue prefix color), ambient zones (bounding boxes with ambient sound/volume/pitch), the activation-panel puzzle (slot order, accepted clue items, door location/sound), breakable-blocks and loot-chests that give quest items, reset-blocks regions, bunker-entrance, the st-eden-pack resource pack URL/hash, portal-trigger bounds, survival-destination (where solved players are teleported), npc-highlights (conditional attention-getters), compass-targets (ordered quest waypoints), and npcs (per-NPC position, skin, and dialogue stages/exchanges).

CI/CD

GitHub Actions (.github/workflows/ci.yml) runs on every push/PR to main:

  • Build: ./gradlew spotlessApply build --no-daemon on Java 21 (Temurin)
  • commitlint: enforces Conventional Commits on PR/push

Contributing

See .github/pull_request_template.md and the issue templates in .github/ISSUE_TEMPLATE. Commits must follow Angular-style conventional commit format, enforced by the commitlint job in CI (there are no local pre-commit hooks in this repo).

License

MIT - see LICENSE.

About

Lobby narrative engine for The Threshold — NPCs, dialogue, puzzles, and ambient sound

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages