Skip to content

Project Structure

DzusillCore/
β”œβ”€β”€ src/
β”‚ β”œβ”€β”€ main/
β”‚ β”‚ β”œβ”€β”€ java/me/dzusill/core/
β”‚ β”‚ β”‚ β”œβ”€β”€ CorePlugin.java ← abstract plugin base
β”‚ β”‚ β”‚ β”œβ”€β”€ command/ ← command framework
β”‚ β”‚ β”‚ β”œβ”€β”€ config/ ← YAML config system
β”‚ β”‚ β”‚ β”œβ”€β”€ cooldown/ ← cooldown manager
β”‚ β”‚ β”‚ β”œβ”€β”€ database/ ← SQL database layer
β”‚ β”‚ β”‚ β”œβ”€β”€ event/ ← listener infrastructure
β”‚ β”‚ β”‚ β”œβ”€β”€ hook/ ← soft-dependency hooks
β”‚ β”‚ β”‚ β”œβ”€β”€ menu/ ← GUI system
β”‚ β”‚ β”‚ β”œβ”€β”€ message/ ← message service
β”‚ β”‚ β”‚ β”œβ”€β”€ module/ ← module lifecycle
β”‚ β”‚ β”‚ β”œβ”€β”€ permission/ ← permission constants
β”‚ β”‚ β”‚ β”œβ”€β”€ scheduler/ ← task scheduling
β”‚ β”‚ β”‚ β”œβ”€β”€ service/ ← service registry
β”‚ β”‚ β”‚ β”œβ”€β”€ storage/ ← file-based storage
β”‚ β”‚ β”‚ └── util/ ← utility helpers
β”‚ β”‚ β”‚
β”‚ β”‚ └── java/me/dzusill/core/example/ ← reference implementation
β”‚ β”‚ β”œβ”€β”€ ExamplePlugin.java
β”‚ β”‚ β”œβ”€β”€ command/
β”‚ β”‚ β”œβ”€β”€ database/
β”‚ β”‚ β”œβ”€β”€ listener/
β”‚ β”‚ β”œβ”€β”€ menu/
β”‚ β”‚ └── module/
β”‚ β”‚
β”‚ └── test/java/me/dzusill/core/ ← test suite
β”‚
β”œβ”€β”€ src/main/resources/
β”‚ β”œβ”€β”€ plugin.yml
β”‚ β”œβ”€β”€ config.yml
β”‚ β”œβ”€β”€ messages.yml
β”‚ β”œβ”€β”€ menus.yml
β”‚ β”œβ”€β”€ database.yml
β”‚ β”œβ”€β”€ schema-mysql.sql
β”‚ └── schema-postgresql.sql
β”‚
β”œβ”€β”€ docs/ ← this documentation
β”œβ”€β”€ .gitbook.yaml
└── pom.xml
Package Responsibility
me.dzusill.core CorePlugin abstract base
me.dzusill.core.module CoreModule, AbstractModule, ModuleManager β€” lifecycle
me.dzusill.core.service Service, Reloadable, ServiceRegistry β€” dependency injection
me.dzusill.core.config Config, AbstractConfig, ConfigManager β€” YAML config
me.dzusill.core.message MessageService, Messages, Placeholder
me.dzusill.core.command CoreCommand, SubCommand, @CommandMeta, argument system
me.dzusill.core.menu Menu, PaginatedMenu, MenuTemplate, MenuItem, MenuManager
me.dzusill.core.event CoreListener, ListenerRegistry, @AutoRegister
me.dzusill.core.hook PluginHook, HookManager, Vault/PAPI/Essentials hooks
me.dzusill.core.storage DataStore, AbstractDataStore, YamlDataStore
me.dzusill.core.database Database, drivers, DatabaseManager, query/repository layer
me.dzusill.core.scheduler SchedulerService
me.dzusill.core.cooldown CooldownManager
me.dzusill.core.permission CorePermission constants
me.dzusill.core.util ItemBuilder, ColorUtils, LocationUtils, TimeUtils, NumberUtils, TextUtils
me.dzusill.core.example Reference plugin β€” rename and replace for your own plugin

The me.dzusill.core.example package is a fully functional reference plugin that demonstrates every feature. It is the class declared as main in plugin.yml. When building your own plugin:

  1. Rename the package (e.g. me.yourname.myplugin).
  2. Rename ExamplePlugin to your main class and update plugin.yml.
  3. Replace example modules, commands, and menus with your own.
  4. Delete or repurpose PlayerRecord/PlayerRepository and ShopMenu.