feat: add showcase region on first run to enhance user experience
- Implemented a mechanism to bootstrap a demo gravity flip region when regions.json is absent or empty. - The showcase region features a 10×20×10 box with upward force and Torch_Fire particles, allowing immediate demonstration of functionality. - Users can customize or remove this region via regions.json.
This commit is contained in:
@@ -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; }
|
||||
|
||||
|
||||
Reference in New Issue
Block a user