Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
61 commits
Select commit Hold shift + click to select a range
1edda71
feat: add core modules design doc for warps, spawns, teleport, and rtp
ZenithDevHQ Feb 23, 2026
6b59d63
feat: add implementation plan for core modules
ZenithDevHQ Feb 23, 2026
216f01d
feat: add shared data models for warps, spawns, and teleport
ZenithDevHQ Feb 23, 2026
5a32572
feat: implement storage interfaces with JSON provider
ZenithDevHQ Feb 23, 2026
67274fb
feat: add WarpManager and implement warps module with commands
ZenithDevHQ Feb 23, 2026
33df234
feat: add SpawnManager and implement spawns module with commands
ZenithDevHQ Feb 23, 2026
3af4f03
feat: add TpaManager, BackManager, and implement teleport module with…
ZenithDevHQ Feb 23, 2026
2e1bbee
feat: implement RTP module with random location finding and safety ch…
ZenithDevHQ Feb 23, 2026
f809bd4
feat: wire platform events, command registration, and DeathListener
ZenithDevHQ Feb 23, 2026
2d0798a
feat: update API with warp/spawn/tpa methods, add BYPASS_TOGGLE, upda…
ZenithDevHQ Feb 23, 2026
e4b04e8
feat: implement kits, moderation, utility, and announcements modules
derrickmehaffy Feb 23, 2026
bdfacd3
merge: combine core-modules and utility-modules into dev/init
derrickmehaffy Feb 28, 2026
cdf7ade
refactor: align infrastructure with HyperFactions patterns
derrickmehaffy Feb 28, 2026
d34ae5a
feat: add HyperFactions soft dependency and faction bypass permissions
ZenithDevHQ Feb 28, 2026
84466b9
feat: expand HomesConfig with factions subsection and territory toggles
ZenithDevHQ Feb 28, 2026
04e3470
feat: add FactionTerritoryChecker for centralized territory restricti…
ZenithDevHQ Feb 28, 2026
9cebb6f
feat: add Home record, PlayerHomes collection, and Location.fromHome()
ZenithDevHQ Feb 28, 2026
90929e8
feat: implement HomeStorage interface and JSON persistence for homes
ZenithDevHQ Feb 28, 2026
1402313
feat: add HomeManager with CRUD, limits, bed sync, and player caching
ZenithDevHQ Feb 28, 2026
dca5a57
feat: add SetHomeCommand, HomeCommand, DelHomeCommand, HomesCommand
ZenithDevHQ Feb 28, 2026
a763610
feat: wire HomesModule into plugin lifecycle with commands and player…
ZenithDevHQ Feb 28, 2026
a32b887
chore: add local build setup and gitignore settings.gradle/gradle.pro…
ZenithDevHQ Feb 28, 2026
6757f2e
docs: update changelog with homes module and HyperFactions integration
ZenithDevHQ Feb 28, 2026
eafa02b
feat: overhaul RTP with chunk-based safety verification and faction a…
derrickmehaffy Feb 28, 2026
89d6ff5
docs: update all documentation to reflect current implementation status
derrickmehaffy Feb 28, 2026
855ade6
chore: remove plan file entries from changelog
derrickmehaffy Feb 28, 2026
d2c28f3
refactor: use callback pattern and ref safety checks in teleport comm…
derrickmehaffy Mar 1, 2026
f9ad376
feat: add RTP cave avoidance with configurable air blocks check
derrickmehaffy Mar 1, 2026
55386f8
refactor: overhaul warmup system with scheduler and bypass permissions
derrickmehaffy Mar 1, 2026
2bea857
feat: overhaul kits with inventory sections and preview command
derrickmehaffy Mar 1, 2026
b5fe064
feat: auto-detect world spawns from server config on fresh install
derrickmehaffy Mar 1, 2026
cfc823e
fix: replace gamemode hack with proper MovementManager.canFly for /fly
derrickmehaffy Mar 1, 2026
b171537
feat: add /repairmax and /durability commands, improve /repair
derrickmehaffy Mar 1, 2026
fa5eb04
feat: add command aliases across all modules
derrickmehaffy Mar 1, 2026
826ff23
chore: set IncludesAssetPack to false in manifest
derrickmehaffy Mar 1, 2026
0f41cfa
feat: add connect handler infrastructure and new permission nodes
derrickmehaffy Mar 1, 2026
6345b48
feat: expand UtilityConfig with toggles for 12 new commands
derrickmehaffy Mar 1, 2026
e35d319
feat: add player stats persistence for playtime and join tracking
derrickmehaffy Mar 1, 2026
d1c7231
feat: expand UtilityManager with AFK, stamina, stats, and scheduler
derrickmehaffy Mar 1, 2026
075a2df
feat: add /motd, /rules, /discord, and /list info commands
derrickmehaffy Mar 1, 2026
caa4b16
feat: add /playtime and /joindate player stats commands
derrickmehaffy Mar 1, 2026
b78fd49
feat: add /afk command with manual toggle and broadcast
derrickmehaffy Mar 1, 2026
1007682
feat: add /stamina command for infinite stamina toggle
derrickmehaffy Mar 1, 2026
e61b0da
feat: add /invsee and /trash stub commands
derrickmehaffy Mar 1, 2026
cd6676c
feat: add /maxstack and /sleeppercentage commands
derrickmehaffy Mar 1, 2026
903d03b
refactor: consolidate ban/mute commands with smart duration detection
derrickmehaffy Mar 1, 2026
266048e
feat: add IP ban system with connect-time enforcement
derrickmehaffy Mar 1, 2026
abd8f4c
feat: expand /he help with full module-grouped command listing
derrickmehaffy Mar 1, 2026
a8405e4
feat: wire new commands into utility and moderation modules
derrickmehaffy Mar 1, 2026
8ec6000
docs: update changelog with all unreleased changes
derrickmehaffy Mar 1, 2026
b78c34a
refactor: use specific stat types for heal and stamina commands
derrickmehaffy Mar 1, 2026
3eca78c
fix: AFK not clearing on movement and stamina async thread error
derrickmehaffy Mar 1, 2026
0df5eb3
feat: add /spc alias for sleeppercentage command
derrickmehaffy Mar 1, 2026
858d6a3
feat(gui): add GUI foundation infrastructure
derrickmehaffy Mar 1, 2026
d3127da
feat(gui): add player Homes, Warps, and Kits GUI pages
derrickmehaffy Mar 1, 2026
3f113bc
feat(gui): add player Dashboard, TPA requests, and Stats pages
derrickmehaffy Mar 1, 2026
664ee14
feat(gui): add admin Dashboard, Warps, Spawns, and Kits pages
derrickmehaffy Mar 1, 2026
25bfc55
feat(gui): add admin Players, Moderation, Announcements, and Settings…
derrickmehaffy Mar 2, 2026
37d5a74
fix(gui): correct .ui template syntax issues causing page load crashes
derrickmehaffy Mar 2, 2026
0eb1805
fix(gui): replace invalid @Color variable definitions with inline hex
derrickmehaffy Mar 2, 2026
f61607f
Merge branch 'main' into dev/init
derrickmehaffy Mar 6, 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
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -43,9 +43,14 @@ libs/
# Local config overrides
config.local.json

# Local build setup (multi-project wiring is machine-specific)
settings.gradle
gradle.properties

# AI Files
CLAUDE.md
.claude/
.serena/
.cursorrules
.cursorignore
.cursor/
Expand Down
314 changes: 314 additions & 0 deletions CHANGELOG.md

Large diffs are not rendered by default.

101 changes: 65 additions & 36 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,23 +4,20 @@ Modular server essentials for Hytale. Part of the [HyperSystems](https://github.

## Features

HyperEssentials consolidates essential server functionality into a single modular plugin:

| Module | Features | Status |
|--------|----------|--------|
| **Homes** | Home CRUD, sharing, bed sync | Planned |
| **Warps** | Warp CRUD, categories | Planned |
| **Spawns** | Spawn CRUD, per-world, respawn | Planned |
| **Teleport** | TPA, /back | Planned |
| **Warmup** | Universal warmup/cooldown system | Scaffold |
| **Kits** | Kit system | Planned |
| **Moderation** | Mute, temp ban, IP ban, freeze | Planned |
| **Vanish** | Vanish system | Planned |
| **Utility** | Clear chat, clear inventory, repair, near | Planned |
| **Announcements** | Broadcast/announcement system | Planned |
| **RTP** | Random teleport | Planned |

Each module can be independently enabled or disabled via configuration.
HyperEssentials consolidates essential server functionality into a single modular plugin with 10 modules, 46 commands, and 50+ permission nodes. Each module can be independently enabled or disabled.

| Module | Features | Default | Status |
|--------|----------|---------|--------|
| **Warmup** | Universal warmup/cooldown system for all teleport actions | Enabled | Implemented |
| **Homes** | Home CRUD, sharing, bed sync, faction territory restrictions | Enabled | Implemented |
| **Warps** | Warp CRUD, categories, custom permissions per warp | Enabled | Implemented |
| **Spawns** | Spawn CRUD, per-world spawns, group routing, respawn teleport | Enabled | Implemented |
| **Teleport** | TPA requests, /back history, random teleport (RTP) | Enabled | Implemented |
| **Kits** | Kit creation from inventory, cooldowns, one-time claims, per-kit permissions | Disabled | Implemented |
| **Moderation** | Ban, tempban, mute, tempmute, kick, freeze, vanish, punishment history | Disabled | Implemented |
| **Utility** | Heal, fly, god mode, clear chat, clear inventory, repair, near | Disabled | Implemented |
| **Announcements** | Scheduled broadcasts, announcement rotation, manual broadcast | Disabled | Implemented |
| **Vanish** | Standalone vanish module (vanish is also available via Moderation) | Enabled | Stub |

## Requirements

Expand All @@ -29,7 +26,10 @@ Each module can be independently enabled or disabled via configuration.

## Optional Dependencies

- [HyperPerms](https://github.com/HyperSystems-Development/HyperPerms) - Advanced permission management
- [HyperPerms](https://github.com/HyperSystems-Development/HyperPerms) — Advanced permission management (chain-of-responsibility resolution)
- [HyperFactions](https://github.com/HyperSystems-Development/HyperFactions) — Territory-aware home restrictions
- [VaultUnlocked](https://github.com/TheNewEconomy/VaultUnlockedAPI) — Economy integration
- LuckPerms — Permission provider fallback

## Installation

Expand All @@ -40,27 +40,56 @@ Each module can be independently enabled or disabled via configuration.

## Configuration

HyperEssentials uses a split configuration system:

- `config.json` - Core settings (prefix, colors, admin)
- `config/homes.json` - Home module settings
- `config/warps.json` - Warp module settings
- `config/spawns.json` - Spawn module settings
- `config/teleport.json` - TPA module settings
- `config/warmup.json` - Warmup/cooldown settings
- `config/kits.json` - Kit module settings
- `config/moderation.json` - Moderation settings
- `config/vanish.json` - Vanish settings
- `config/utility.json` - Utility settings
- `config/announcements.json` - Announcement settings
- `config/rtp.json` - Random teleport settings
HyperEssentials uses a split configuration system with per-module config files:

- `config.json` Core settings (prefix, colors, admin, storage)
- `config/homes.json` Home module (limits, bed sync, faction restrictions)
- `config/warps.json` Warp module (default category)
- `config/spawns.json` Spawn module (default spawn, join/respawn teleport)
- `config/teleport.json` TPA and RTP settings (timeouts, back history, RTP radius)
- `config/warmup.json` — Per-module warmup/cooldown timers
- `config/kits.json` Kit module (default cooldown, one-time claims)
- `config/moderation.json` Moderation (default reasons, broadcast toggles, freeze interval)
- `config/vanish.json` Vanish (fake join/leave messages)
- `config/utility.json` Utility commands (per-command toggles, radius limits)
- `config/announcements.json` Announcement rotation (interval, randomize, messages)
- `config/debug.json` — Debug logging (per-category toggles)

## Commands

| Command | Description | Permission |
|---------|-------------|------------|
| `/hessentials reload` | Reload configuration | `hyperessentials.admin.reload` |
| `/hessentials version` | Show version | - |
See [docs/commands.md](docs/commands.md) for the complete command reference with all 46 commands, permissions, and aliases.

### Quick Reference

| Module | Commands |
|--------|----------|
| Admin | `/hessentials reload\|version` |
| Homes | `/sethome`, `/home`, `/delhome`, `/homes` |
| Warps | `/warp`, `/setwarp`, `/delwarp`, `/warps`, `/warpinfo` |
| Spawns | `/spawn`, `/setspawn`, `/delspawn`, `/spawns`, `/spawninfo` |
| Teleport | `/tpa`, `/tpahere`, `/tpaccept`, `/tpdeny`, `/tpcancel`, `/tptoggle`, `/back`, `/rtp` |
| Kits | `/kit`, `/kits`, `/createkit`, `/deletekit` |
| Moderation | `/ban`, `/tempban`, `/unban`, `/mute`, `/tempmute`, `/unmute`, `/kick`, `/freeze`, `/vanish`, `/punishments` |
| Utility | `/heal`, `/fly`, `/god`, `/clearchat`, `/clearinventory`, `/repair`, `/near` |
| Announcements | `/broadcast`, `/announce` |

## Permissions

See [docs/permissions.md](docs/permissions.md) for the complete permission reference. All nodes use the `hyperessentials` prefix.

## Documentation

Detailed documentation is available in the [docs/](docs/) directory:

| Document | Description |
|----------|-------------|
| [Architecture](docs/architecture.md) | Package structure, module lifecycle, cross-module communication |
| [Commands](docs/commands.md) | All 46 commands organized by module |
| [Config](docs/config.md) | Configuration reference for core and all modules |
| [Permissions](docs/permissions.md) | Permission nodes organized by module |
| [Modules](docs/modules.md) | Module system overview, enable/disable, lifecycle |
| [Storage](docs/storage.md) | Storage providers, JSON format, data directory layout |
| [Integrations](docs/integrations.md) | HyperPerms, HyperFactions, VaultUnlocked integration |

## Building

Expand Down
32 changes: 32 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -1,11 +1,26 @@
plugins {
id 'java'
id 'checkstyle'
id 'com.gradleup.shadow' version '9.3.1'
}

group = 'com.hyperessentials'
version = '0.1.0'

// ---------------------------------------------------------------------------
// Hytale Maven version resolution
// ---------------------------------------------------------------------------
def resolveHytaleVersion(String channel) {
def url = "https://maven.hytale.com/${channel}/com/hypixel/hytale/Server/maven-metadata.xml"
def text = new URL(url).text
def matcher = text =~ /<release>(.+?)<\/release>/
if (!matcher.find()) throw new GradleException("Could not resolve Hytale server version from ${url}")
return matcher.group(1)
}

def hytaleChannel = project.findProperty('hytale_channel') ?: 'release'
ext.hytaleVersion = resolveHytaleVersion(hytaleChannel)

java {
toolchain {
languageVersion = JavaLanguageVersion.of(25)
Expand All @@ -14,6 +29,10 @@ java {

repositories {
mavenCentral()
maven {
name = 'hytale'
url = "https://maven.hytale.com/${hytaleChannel}"
}
}

dependencies {
Expand Down Expand Up @@ -95,3 +114,16 @@ tasks.withType(JavaCompile).configureEach {
options.encoding = 'UTF-8'
options.compilerArgs.addAll(['-Xlint:all', '-Xlint:-processing'])
}

checkstyle {
toolVersion = '10.26.1'
configFile = file('config/checkstyle/checkstyle.xml')
ignoreFailures = true
}

tasks.withType(Checkstyle).configureEach {
reports {
xml.required = true
html.required = true
}
}
Loading