feat(03-01): wire GravityApplier into RegionTickLoop + plugin (Task 2)
- RegionTickLoop gagne un constructeur 3-args (registry, gravityApplier, errorHandler) - Ancien constructeur 2-args conservé pour rétrocompat des tests Phase 02 - Tick body appelle gravityApplier.apply(w, registry.currentSnapshot(w)) après refreshFor - GravityFlipPlugin.start() construit l'applier et l'injecte dans le tickLoop - Log de démarrage mis à jour: 'gravity inversion active'
This commit is contained in:
@@ -6,6 +6,7 @@ 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.config.GravityFlipConfig;
|
||||
import com.mythlane.gravityflip.physics.GravityApplier;
|
||||
import com.mythlane.gravityflip.region.RegionRegistry;
|
||||
import com.mythlane.gravityflip.tick.RegionTickLoop;
|
||||
|
||||
@@ -36,6 +37,7 @@ public class GravityFlipPlugin extends JavaPlugin {
|
||||
|
||||
private RegionRegistry registry;
|
||||
private RegionTickLoop tickLoop;
|
||||
private GravityApplier gravityApplier;
|
||||
|
||||
public GravityFlipPlugin(JavaPluginInit init) {
|
||||
super(init);
|
||||
@@ -61,7 +63,9 @@ public class GravityFlipPlugin extends JavaPlugin {
|
||||
super.start();
|
||||
GravityFlipConfig cfg = configHolder.get();
|
||||
this.registry = new RegionRegistry(cfg, configHolder);
|
||||
this.tickLoop = new RegionTickLoop(registry, th ->
|
||||
this.gravityApplier = new GravityApplier(th ->
|
||||
getLogger().at(Level.WARNING).withCause(th).log("gravityApply failed"));
|
||||
this.tickLoop = new RegionTickLoop(registry, gravityApplier, th ->
|
||||
getLogger().at(Level.WARNING).withCause(th).log("detectTick failed"));
|
||||
|
||||
// Lazy world resolution — see setup() comment.
|
||||
@@ -81,7 +85,7 @@ public class GravityFlipPlugin extends JavaPlugin {
|
||||
} catch (Throwable ignored) { /* manual shutdown() fallback */ }
|
||||
|
||||
getLogger().at(Level.INFO).log(
|
||||
"Gravity Flip enabled — %d region(s) loaded, detector @100ms",
|
||||
"Gravity Flip enabled — %d region(s) loaded, detector @100ms, gravity inversion active",
|
||||
cfg.getRegions().size());
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.mythlane.gravityflip.tick;
|
||||
|
||||
import com.hypixel.hytale.server.core.universe.world.World;
|
||||
import com.mythlane.gravityflip.physics.GravityApplier;
|
||||
import com.mythlane.gravityflip.region.RegionRegistry;
|
||||
|
||||
import java.util.concurrent.Executors;
|
||||
@@ -32,9 +33,15 @@ public final class RegionTickLoop {
|
||||
private volatile ScheduledFuture<?> future;
|
||||
private final Consumer<Throwable> errorHandler;
|
||||
private final RegionRegistry registry;
|
||||
private final GravityApplier gravityApplier;
|
||||
|
||||
public RegionTickLoop(RegionRegistry registry, Consumer<Throwable> errorHandler) {
|
||||
this(registry, null, errorHandler);
|
||||
}
|
||||
|
||||
public RegionTickLoop(RegionRegistry registry, GravityApplier gravityApplier, Consumer<Throwable> errorHandler) {
|
||||
this.registry = registry;
|
||||
this.gravityApplier = gravityApplier;
|
||||
this.errorHandler = errorHandler == null ? t -> {} : errorHandler;
|
||||
this.scheduler = Executors.newSingleThreadScheduledExecutor(r -> {
|
||||
Thread t = new Thread(r, "GravityFlip-Detect");
|
||||
@@ -65,6 +72,9 @@ public final class RegionTickLoop {
|
||||
World w = worldSupplier.get();
|
||||
if (w == null) return;
|
||||
registry.refreshFor(w);
|
||||
if (gravityApplier != null) {
|
||||
gravityApplier.apply(w, registry.currentSnapshot(w));
|
||||
}
|
||||
};
|
||||
scheduleGuarded(initialDelayMs, tick);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user