-
Notifications
You must be signed in to change notification settings - Fork 6
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Feature Request] Proxy Support #3
Comments
Solution Proposal: Centralize Resource-Pack GenerationThe ProblemIn a network, we may want to, either:
The solutionInternally, we want to avoid doing the same process twice, so:
Part of the idea is: backend-server-specific resource-packs will have the ability to have a "parent" resource-pack To do this, we could move the resource-pack generation responsibility to a separate, stand-alone application or the proxy (letting the server administrator decide), called the orchestrator. The orchestrator will have to:
For example,
For example: class Glyph {
String name;
byte[] texture; // <-- Here! Note that resource-pack-only information should not be sent
String character;
}
class CreativeGlyphsSyncData implements SyncData {
Collection<Glyph> glyphs;
}
class CreativeGlyphsOrchestratorPlugin implements OrchestratorPlugin {
@Override
void sync(File configFolder, ResourcePack resourcePack, ServerSync sync) {
var glyphs = YamlGlyphLoader.loadAll(new File(configFolder, "glyphs.yml"));
// write glyphs to the resource-pack when requested
someMethodToWriteGlyphsToTheResourcePack(glyphs, resourcePack);
// remove 'texture' data from glyphs
removeTextureData(glyphs);
// send the glyphs to the backend-servers
sync.send(serializeGlyphsToByteArray(glyphs));
}
} It would be also necessary to configure the orchestrator to know which orchestrator plugins every backend-server needs, we can specify this via an orchestrator config file, for example: # the plugins that apply for all backend servers
# (may be empty)
global:
- creative-glyphs
servers:
queue:
# parent: none
parts:
- !creative-glyphs # exclude creative-glyphs
lobby:
# parent: none
# parts: []
tnt-games-lobby:
# parent: none
parts:
- ultratntgamesplugin
tnt-games-game-*:
parent: tnt-games-lobby
# parts: [] The orchestrator would generate the following resource-packs and would use them in groups, as it is easy to know what resource-pack variants to generate:
Note that Advantages
Disadvantages
|
Overall, I'm very excited about the proposed solution for centralizing resource-pack generation! Combining all server resource packs into one makes perfect sense from an efficiency and player experience standpoint. Additionally, the idea of built-in resource pack validation is fantastic, catching potential conflicts before they cause issues. Specifically, I'd love to see support for the following:
While the multi-platform plugin requirement for plugins might be a hurdle, I think exploring alternative approaches to minimize development overhead would be beneficial. Perhaps providing clear APIs and documentation for orchestrator plugins could be a starting point. I'm very eager to see this solution come to fruition and would be happy to provide further feedback on future iterations or even participate in testing if possible. Collaborating to refine this and make it accessible to both administrators and developers could be incredibly valuable for the Minecraft server community. By addressing these points and focusing on user-friendliness and flexibility, I believe this proposal has the potential to revolutionize resource-pack management for server networks. I hope this helps! |
Add support for Velocity and maybe Waterfall
Help is needed!
How should proxies be handled? The resource-pack is always generated in the backend servers, there may be backend servers that do not have resource-packs, servers that have the same resource-pack, and servers that have different resource-packs.
Something like BungeePackLayer is enough?
The text was updated successfully, but these errors were encountered: