Overview
The MixelPixel codebase follows a modular plugin architecture built around a shared Core API.
Most functionality is implemented in separate plugins, while common systems are provided by the Core.
Typical components include:
- Core API
- Gameplay Plugins
- Data Systems
- Shared Utilities
Core Plugin
The Core plugin provides shared functionality used by all other plugins.
Typical responsibilities include:
- player wrappers (
BukkitPixelPlayer) - own command system
- own event / listener system
- own inventory system
- shared managers
- database connections
- Redis communication
- utility systems
- shared APIs
Other plugins have to avoid re-implementing these systems and instead use the Core services.
Manager Pattern
Many systems are implemented using Managers.
Managers are responsible for handling specific subsystems.
Example:
KitManager\ PinataManager\ PlotManager\ PlayerDataManager
Managers usually:
- hold runtime data
- provide access to systems
- coordinate services
Managers should not become god classes and should only handle a clearly defined subsystem.
Typical Plugin Structure
Most plugins follow this package structure:
command/
data/
event/
gui/
gui/bedrock/
listener/
manager/
redis/
util/
Example structure:
{width=340 height=552}
Dependency Usage
Plugins may depend on each other when exposing a clear API.
However, the Core API should always be preferred for shared systems and infrastructure.
Core systems such as:
- database connections
- redis communication
- player wrappers
- shared utilities
- common managers
must always be used from the Core plugin and must not be reimplemented in other plugins.
For example, developers should never implement their own MySQL connectors or Redis clients inside a plugin. Instead, use the database and service systems provided by the Core API.
This ensures:
- consistent infrastructure
- easier maintenance
- centralized configuration
- fewer duplicated systems
Development Philosophy
The project follows a few simple architectural principles:
- separation of concerns
- modular plugin design
- clear system responsibilities
When adding new systems, try to follow the same patterns used in the existing codebase.
Final Notes
You should now be able to write your first MixelPixel code and are familiar with the basic standards used in this project.
If you have questions about the Core API, take a look at the Core API Wiki ([[Core Overview|Core-API/Core-Overview]]) and browse through the available topics.
If something is missing or unclear, don’t hesitate to ask. This wiki is still a work in progress and far from complete.