diff --git a/src/main/java/com/mythlane/gravityflip/GravityFlipPlugin.java b/src/main/java/com/mythlane/gravityflip/GravityFlipPlugin.java index 7ceb058..e639638 100644 --- a/src/main/java/com/mythlane/gravityflip/GravityFlipPlugin.java +++ b/src/main/java/com/mythlane/gravityflip/GravityFlipPlugin.java @@ -4,11 +4,14 @@ import com.hypixel.hytale.server.core.plugin.JavaPlugin; 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.math.shape.Box; +import com.hypixel.hytale.math.vector.Vector3d; import com.hypixel.hytale.server.core.util.Config; import com.mythlane.gravityflip.config.GravityFlipConfig; import com.mythlane.gravityflip.physics.FallDamageGuard; import com.mythlane.gravityflip.physics.FallDamageSuppressorSystem; import com.mythlane.gravityflip.physics.GravityApplier; +import com.mythlane.gravityflip.region.GravityFlipRegion; import com.mythlane.gravityflip.region.RegionRegistry; import com.mythlane.gravityflip.tick.RegionTickLoop; import com.mythlane.gravityflip.viz.RegionVisualizer; @@ -72,6 +75,12 @@ public class GravityFlipPlugin extends JavaPlugin { protected void start() { super.start(); GravityFlipConfig cfg = configHolder.get(); + if (cfg.getRegions().isEmpty()) { + cfg.getRegions().add(buildShowcaseRegion()); + configHolder.save(); + getLogger().at(Level.INFO).log( + "First-run: bootstrapped 1 showcase region in regions.json (edit or delete to customise)"); + } this.registry = new RegionRegistry(cfg, configHolder); this.gravityApplier = new GravityApplier( th -> getLogger().at(Level.WARNING).withCause(th).log("gravityApply failed"), @@ -120,6 +129,25 @@ public class GravityFlipPlugin extends JavaPlugin { super.shutdown(); } + /** + * Showcase zone seeded on first run (when {@code regions.json} is absent or empty). + * 10×20×10 box at {@code (0,100,0)..(10,120,10)} with Torch_Fire particles and a + * gentle upward force — lets a fresh install demonstrate the feature immediately. + * Users are free to edit or delete this zone via {@code regions.json}. + */ + private static GravityFlipRegion buildShowcaseRegion() { + GravityFlipRegion r = new GravityFlipRegion( + "demo-gravity-flip", + new Box(new Vector3d(0, 100, 0), new Vector3d(10, 120, 10)), + true); + r.setVerticalForce(0.3); + r.setVisualMode("Particles"); + r.setVisualParticleId("Torch_Fire"); + r.setVisualParticleDensity(0.3); + r.setVisualRefreshMs(300); + return r; + } + /** Exposed for Phase 3 (gravity physics) and Phase 4 (commands). */ public RegionRegistry regions() { return registry; }