diff --git a/src/main/java/net/kewwbec/networkcore/NetworkCore.java b/src/main/java/net/kewwbec/networkcore/NetworkCore.java index def5c0e..307b337 100644 --- a/src/main/java/net/kewwbec/networkcore/NetworkCore.java +++ b/src/main/java/net/kewwbec/networkcore/NetworkCore.java @@ -13,7 +13,7 @@ import net.kewwbec.networkcore.api.MetricsService; import net.kewwbec.networkcore.api.PlayerPresence; import net.kewwbec.networkcore.api.RpcClient; import net.kewwbec.networkcore.api.ServerRegistry; -// import net.kewwbec.networkcore.api.VanishService; +import net.kewwbec.networkcore.api.VanishService; import net.kewwbec.networkcore.api.events.ServerLeftNetworkEvent; import net.kewwbec.networkcore.bus.RedisMessageBus; import net.kewwbec.networkcore.command.NetworkCoreCommand; @@ -50,6 +50,7 @@ import net.kewwbec.networkcore.rpc.RpcClientImpl; // import net.kewwbec.networkcore.vanish.PlayerListVanishFilter; // import net.kewwbec.networkcore.vanish.VanishEnforcer; // import net.kewwbec.networkcore.vanish.VanishServiceImpl; +import net.kewwbec.networkcore.vanish.NoopVanishService; import com.hypixel.hytale.server.core.event.events.player.PlayerReadyEvent; @@ -82,6 +83,7 @@ public final class NetworkCore extends JavaPlugin { @Nullable private LockService lockService; @Nullable private ShutdownHandoff shutdownHandoff; // @Nullable private VanishServiceImpl vanishService; + @Nullable private VanishService vanishService; public NetworkCore(@Nonnull JavaPluginInit init) { super(init); @@ -171,10 +173,13 @@ public final class NetworkCore extends JavaPlugin { this.alertService = new AlertService(messageBus, serverId); alertService.start(); - // Vanish disabled — commented out. + // Vanish disabled — real impl + enforcement commented out. We still register a + // no-op stub so callers (GlistCommand, plugins via getVanishService()) get a + // non-null service that simply does nothing. // this.vanishService = new VanishServiceImpl(messageBus, serverId); // vanishService.start(); - // services.register(VanishService.class, vanishService); + this.vanishService = new NoopVanishService(); + services.register(VanishService.class, vanishService); // VanishEnforcer vanishEnforcer = new VanishEnforcer(vanishService); // getEventRegistry().registerGlobal(PlayerReadyEvent.class, vanishEnforcer::onPlayerReady); // new PlayerListVanishFilter(vanishService).register(); @@ -200,7 +205,7 @@ public final class NetworkCore extends JavaPlugin { }); getCommandRegistry().registerCommand(new AlertCommand(alertService)); - getCommandRegistry().registerCommand(new GlistCommand(serverRegistry, presenceService, null)); // vanishService disabled + getCommandRegistry().registerCommand(new GlistCommand(serverRegistry, presenceService, vanishService)); getCommandRegistry().registerCommand(new HubCommand(lobbyPicker, refRequestService, serverId)); getCommandRegistry().registerCommand(new SendCommand(serverRegistry, presenceService, refRequestService)); getCommandRegistry().registerCommand(new SendAllCommand(serverRegistry, presenceService, refRequestService, serverId)); @@ -242,10 +247,8 @@ public final class NetworkCore extends JavaPlugin { try { alertService.stop(); } catch (RuntimeException ignored) {} alertService = null; } - // if (vanishService != null) { - // try { vanishService.stop(); } catch (RuntimeException ignored) {} - // vanishService = null; - // } + // Stub vanish service holds no resources; nothing to stop. + vanishService = null; if (presenceService != null) { try { presenceService.stop(); } catch (RuntimeException ignored) {} presenceService = null; @@ -306,8 +309,8 @@ public final class NetworkCore extends JavaPlugin { } @Nullable public NetworkXp getNetworkXp() { return services.get(NetworkXp.class); } - // @Nullable - // public VanishService getVanishService() { return services.get(VanishService.class); } + @Nullable + public VanishService getVanishService() { return services.get(VanishService.class); } @Nullable public RefRequestService getRefRequestService() { return refRequestService; } diff --git a/src/main/java/net/kewwbec/networkcore/vanish/NoopVanishService.java b/src/main/java/net/kewwbec/networkcore/vanish/NoopVanishService.java new file mode 100644 index 0000000..6156f29 --- /dev/null +++ b/src/main/java/net/kewwbec/networkcore/vanish/NoopVanishService.java @@ -0,0 +1,49 @@ +package net.kewwbec.networkcore.vanish; + +import com.hypixel.hytale.server.core.universe.PlayerRef; +import net.kewwbec.networkcore.api.VanishService; + +import javax.annotation.Nonnull; +import javax.annotation.Nullable; +import java.util.Collections; +import java.util.Set; +import java.util.UUID; +import java.util.function.BiConsumer; + +/** + * No-op {@link VanishService}. Vanish is currently disabled, but callers (e.g. + * GlistCommand and consuming plugins via {@code getVanishService()}) still expect + * a non-null service. This stub satisfies the contract while doing nothing: nobody + * is ever vanished, toggles are ignored, and listeners are never fired. + * + *
To restore real behaviour, swap this back for {@link VanishServiceImpl} in + * NetworkCore and re-enable the VanishEnforcer / PlayerListVanishFilter wiring.
+ */ +public final class NoopVanishService implements VanishService { + + @Override + public boolean isVanished(@Nonnull UUID playerUuid) { + return false; + } + + @Override + public void setVanished(@Nonnull UUID playerUuid, boolean vanished) { + // no-op: vanish disabled + } + + @Override + @Nonnull + public Set