Skip to content

Modules Overview

EssentialsY uses an internal module system instead of separate plugin JARs. Each module can be toggled in modules.yml.

Architecture

text

EssentialsY.jar
└── ModuleManager
    ├── ChatModule
    ├── SpawnModule
    ├── ProtectModule
    ├── AntiBuildModule
    ├── GeoIPModule
    ├── DiscordModule
    └── DiscordLinkModule


Modules are loaded at startup based on `modules.yml`. Disabled modules skip listener registration and command handling entirely.

Module Reference

ModulePackageDescription
Chatcom.earth2me.essentials.chatChat formatting and local radius
Spawncom.earth2me.essentials.spawnSpawn points and respawn
Protectcom.earth2me.essentials.protectWorld protection
AntiBuildcom.earth2me.essentials.antibuildBuild restrictions
GeoIPcom.earth2me.essentials.geoipCountry lookup on join
Discordnet.essentialsx.discordDiscord bridge and relay
DiscordLinknet.essentialsx.discordlinkAccount linking and role sync

Enabling / Disabling

yaml

modules.yml

modules: chat: enabled: true geoip: enabled: false

Then /essentials reload.

How It Works

  1. ModuleManager reads modules.yml on load/reload
  2. For each enabled module, calls module.enable()
  3. Module registers event listeners with the main plugin
  4. Commands are routed to the correct module via ModuleManager.findModuleForCommand()
  5. On reload, modules are disabled and re-enabled with updated config

Future Modules

XMPP remains as a separate source tree and will be merged in a future release.

GPL-3.0 Licensed · EssentialsY by SushiMC