feat(03-06): add particle-system dump for discovery (Task 1)

- New DumpParticlesCommand utility: enumerates loaded ParticleSystem
  asset-ids via ParticleSystem.getAssetMap().getAssetMap().keySet().
- Wired in GravityFlipPlugin.start() behind GRAVITYFLIP_DUMP_PARTICLES
  env var (or -Dgravityflip.dumpParticles sysprop). No-op when unset.
- Boot-time fallback approach (plan-allowed) -- proper CommandBase
  registration deferred to avoid i18n translation-key plumbing for a
  one-shot discovery dump.
- See .planning/phases/03-gravity-physics/03-06-DUMP-NOTES.md for
  trigger instructions and the user checkpoint before Task 3.
This commit is contained in:
2026-04-23 15:32:55 +02:00
parent 3511493687
commit 7bbd65dad2
2 changed files with 122 additions and 0 deletions
@@ -5,6 +5,7 @@ import com.hypixel.hytale.server.core.plugin.JavaPluginInit;
import com.hypixel.hytale.server.core.universe.Universe;
import com.hypixel.hytale.server.core.universe.world.World;
import com.hypixel.hytale.server.core.util.Config;
import com.mythlane.gravityflip.command.DumpParticlesCommand;
import com.mythlane.gravityflip.config.GravityFlipConfig;
import com.mythlane.gravityflip.physics.FallDamageGuard;
import com.mythlane.gravityflip.physics.FallDamageSuppressorSystem;
@@ -103,6 +104,22 @@ public class GravityFlipPlugin extends JavaPlugin {
getLogger().at(Level.INFO).log(
"Gravity Flip enabled — %d region(s) loaded, detector @100ms, gravity inversion active",
cfg.getRegions().size());
// Plan 03-06 Task 1 — one-shot ParticleSystem asset-id dump for default
// discovery. Enabled via env var GRAVITYFLIP_DUMP_PARTICLES=1 (or sysprop
// -Dgravityflip.dumpParticles=true). No-op otherwise. See
// DumpParticlesCommand javadoc for the chosen API rationale.
if (DumpParticlesCommand.isEnabled()) {
try {
int n = DumpParticlesCommand.dump(line ->
getLogger().at(Level.INFO).log("%s", line));
getLogger().at(Level.INFO).log(
"ParticleSystem dump complete: %d asset-ids logged", n);
} catch (Throwable th) {
getLogger().at(Level.WARNING).withCause(th)
.log("ParticleSystem dump failed");
}
}
}
@Override