What you need to do
Check two settings in your other plugins’ configs. They are the only thing that can still break this, and they are covered below. Keep each plugin’s own config where it is. Different servers can run different HUDs and hold different models. That lives in the plugin’sconfig.yml, which is never
shared.
Do not copy generated output up to the proxy. Folders like
plugins/Nexo/pack/external_packs/BetterHud/ are rebuilt by the plugin on every boot.
NexoHub collects them automatically, and a stale copy in nexo-data/ only causes
confusion.
Set packs.mixed_content: true if your servers run different HUDs or models, so
each one’s assets reach the others. See
below.
That is all. No plugin’s files are copied between backends, so each server keeps only what
you installed on it. You can still put a file centrally under _shared/_plugins/, and
that wins. See managing your files.
Two settings to check
Both are a plugin obfuscating its own pack. Turning them off costs no protection, because Nexo obfuscates the merged pack afterwards either way. With it off, BetterModel names each part after its model and bone, and two backends holding different models build packs that agree. With it on, the names come from how many parts that server loaded first, so a wizard’s torso on one server is a knight’s hammer on the other. With it off, BetterHUD names its generated files after the HUD they belong to. With it on, it names thema, b, c in load order, so your lobby’s first HUD and your PvP server’s
first HUD are both called a and one overwrites the other.
Each is reported, but in a different place. A backend warns about BetterModel at boot:
external_packs/, so nothing on the proxy ever compares it.
If you cannot turn the setting off, set support.bettermodel: true on that backend to
share its sources instead.
BetterHUD’s clash is caught on the proxy, which tells you rather than shipping a broken
pack:
contribute_exclude. collision is one of the
webhook events, so you do not have to read it off a
console.
A second wording names two plugins rather than two backends. That one means one plugin
is burying another’s file, and no NexoHub setting fixes it. Run only one of them, or ask
their authors which should own that file.
Servers running different HUDs or models
Some of these plugins number things by whatever their own server happened to load, so the same number means something different on each backend. NexoHub keeps those numbers on the proxy instead and hands the same ones to everybody.
A backend says which it is doing at startup, naming only the plugins it has installed:
generators setting that puts the old
behaviour back, which you set on the proxy for one backend, a group, or all of them. Most
networks never need it.
What your players see
Only what that server runs. If pvp has the diving HUD and lobby has the welcome HUD, that is what players see on each. A server’s BetterHUD holds only the HUDs you installed there, so/hud add offers nothing another server runs, and a model exists only on the server you
put it on. Every server’s assets are still in the one pack they all hand out.
This is unrelated to Nexo’s own
Pack.obfuscation setting, which runs later on the
finished pack and is safe to leave on.How it travels
Each backend publishes whatever its plugins generated, and the hub keeps it. It comes back down as a folder directly underplugins/Nexo/pack/external_packs/, named
_hub-<plugin>-<id>, and Nexo folds it into the pack.
BetterHUD and BetterModel build that output as a folder or as a single .zip, depending
on their own pack-type setting, and both are published either way. You do not have to
change it: NexoHub reads each plugin’s build-folder-location to learn the exact name it
writes, which is also how it knows to leave a pack of your own in that folder alone.
Tooltips and Overdrive are read the same way, from copy-resource-pack.path and
resourcepack.nexo_integration.output_path, as long as that copy is switched on.
packs.mixed_content decides whether it reaches the other backends.
The first time you add a server it publishes its assets and the others pick them up on
their next reload, within a few seconds. After that nothing is re-sent unless the
generated content changes, so a normal restart costs nothing.
Any other plugin
NexoHub knows the plugins above by name. Any other plugin that lets you choose where it unpacks its pack works too: point it at a folder underplugins/Nexo/pack/external_packs/
whose name starts with generated-.
packs.mixed_content, the backend drops its own copy once the hub hands the same files
back, and it leaves the network once the plugin stops writing it. Two things are yours to
check, because NexoHub cannot see inside that plugin:
- It has to write the folder again every time it starts. A plugin that writes it only once loses it after the first restart.
- Nothing keeps its ids in step across servers. If two backends publish the same folder with different content, the proxy reports a collision naming it.
generated_prefixes setting. It is a
list, matched regardless of case, and [] turns this off.
Removing a pack
Stop the plugin generating it. A HUD you removed from BetterHUD’s config, or a plugin you uninstalled, is out of the network’s pack after that backend’s next reload. Deleting the folder by hand does not do it on its own. The plugin writes it again on its next run, and the backend publishes it again with it. A pack you placed yourself works the other way round, because nothing regenerates it: delete it from_shared/pack/external_packs/ on the proxy and it is gone from every
backend on the next push. See managing your files.
A pack you put directly on one backend instead is never published, since no plugin there
claims to have written it. The backend says so once, naming the file, so an empty
/nexohub contributions is never left unexplained.
/nexohub contributions on the proxy shows what the hub currently holds, per backend:
/nexohub contributions drop <server> [name] removes one by hand and pushes. You need it
for a backend that cannot withdraw its own: one you have decommissioned, one on an older
bridge, or one with contribute: false.
Turning it off
If you would rather each server keep its assets entirely to itself, with the hub never seeing them:Checking it worked
/nexohub status shows every backend on the same pack. In the backend logs you will see
each server publishing what it made and skipping the rest:
A network upgrading from a version that shared these plugins’ source files keeps the
copies it was sent. NexoHub only deletes inside
plugins/Nexo/, so it names them at boot
rather than removing them. Nothing breaks if you keep them; delete them once per backend.