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.plugin.JavaPluginInit;
|
||||||
import com.hypixel.hytale.server.core.universe.Universe;
|
import com.hypixel.hytale.server.core.universe.Universe;
|
||||||
import com.hypixel.hytale.server.core.universe.world.World;
|
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.hypixel.hytale.server.core.util.Config;
|
||||||
import com.mythlane.gravityflip.config.GravityFlipConfig;
|
import com.mythlane.gravityflip.config.GravityFlipConfig;
|
||||||
import com.mythlane.gravityflip.physics.FallDamageGuard;
|
import com.mythlane.gravityflip.physics.FallDamageGuard;
|
||||||
import com.mythlane.gravityflip.physics.FallDamageSuppressorSystem;
|
import com.mythlane.gravityflip.physics.FallDamageSuppressorSystem;
|
||||||
import com.mythlane.gravityflip.physics.GravityApplier;
|
import com.mythlane.gravityflip.physics.GravityApplier;
|
||||||
|
import com.mythlane.gravityflip.region.GravityFlipRegion;
|
||||||
import com.mythlane.gravityflip.region.RegionRegistry;
|
import com.mythlane.gravityflip.region.RegionRegistry;
|
||||||
import com.mythlane.gravityflip.tick.RegionTickLoop;
|
import com.mythlane.gravityflip.tick.RegionTickLoop;
|
||||||
import com.mythlane.gravityflip.viz.RegionVisualizer;
|
import com.mythlane.gravityflip.viz.RegionVisualizer;
|
||||||
@@ -72,6 +75,12 @@ public class GravityFlipPlugin extends JavaPlugin {
|
|||||||
protected void start() {
|
protected void start() {
|
||||||
super.start();
|
super.start();
|
||||||
GravityFlipConfig cfg = configHolder.get();
|
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.registry = new RegionRegistry(cfg, configHolder);
|
||||||
this.gravityApplier = new GravityApplier(
|
this.gravityApplier = new GravityApplier(
|
||||||
th -> getLogger().at(Level.WARNING).withCause(th).log("gravityApply failed"),
|
th -> getLogger().at(Level.WARNING).withCause(th).log("gravityApply failed"),
|
||||||
@@ -120,6 +129,25 @@ public class GravityFlipPlugin extends JavaPlugin {
|
|||||||
super.shutdown();
|
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). */
|
/** Exposed for Phase 3 (gravity physics) and Phase 4 (commands). */
|
||||||
public RegionRegistry regions() { return registry; }
|
public RegionRegistry regions() { return registry; }
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user