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