The core: TaskSystem, IOSystem, network system, users management, plugins, permissions, etc.
The protocol: packets' definitions, arbitrary IDs fixed by Mojang for the entities and their properties
The content: blocks', entities', items' and recipes' precise definition
Core changes
Associate each client with a Protocol object that helps sending and parsing the packets that correspond to the client's version.
The content is registered by name, each thing is given an automatic ID by Photon.
The protocol registers its IDs by name. The association content <=> protocol ID is made with the Photon ID: Photon ID (common to all protocols) <=> Protocol ID (game version dependent).
Benefits
Easier to update to a new protocol.
Allows to support multiple protocols at the same time without maintening different core versions.
Offers better customization of the users, who can choose the content (entities, items, ...) they want.
Proposal
Separate the server's core from the game content.
Modules
Create different gradle modules for:
Core changes
content <=> protocol ID
is made with the Photon ID:Photon ID (common to all protocols) <=> Protocol ID (game version dependent)
.Benefits