From b45ec4810dd8029e2dd4c0f2f3fa7208427e357b Mon Sep 17 00:00:00 2001 From: AlexProgrammerDE <40795980+AlexProgrammerDE@users.noreply.github.com> Date: Mon, 11 Nov 2024 10:38:12 +0100 Subject: [PATCH] Fix shutting down pov server and kill aura config change --- .../soulfiremc/server/plugins/KillAura.java | 4 --- .../soulfiremc/server/plugins/POVServer.java | 27 ++++++++++--------- 2 files changed, 15 insertions(+), 16 deletions(-) diff --git a/server/src/main/java/com/soulfiremc/server/plugins/KillAura.java b/server/src/main/java/com/soulfiremc/server/plugins/KillAura.java index fab40cce5..691f31078 100644 --- a/server/src/main/java/com/soulfiremc/server/plugins/KillAura.java +++ b/server/src/main/java/com/soulfiremc/server/plugins/KillAura.java @@ -99,10 +99,6 @@ public static void onPreEntityTick(BotPreEntityTickEvent event) { @EventHandler public static void onPostEntityTick(BotPostEntityTickEvent event) { var bot = event.connection(); - if (!bot.settingsSource().get(KillAuraSettings.ENABLE)) { - return; - } - var control = bot.botControl(); if (control.attackCooldownTicks() > 0) { return; diff --git a/server/src/main/java/com/soulfiremc/server/plugins/POVServer.java b/server/src/main/java/com/soulfiremc/server/plugins/POVServer.java index e558d55d4..c295a7581 100644 --- a/server/src/main/java/com/soulfiremc/server/plugins/POVServer.java +++ b/server/src/main/java/com/soulfiremc/server/plugins/POVServer.java @@ -22,10 +22,10 @@ import com.soulfiremc.server.SoulFireServer; import com.soulfiremc.server.api.InternalPlugin; import com.soulfiremc.server.api.PluginInfo; -import com.soulfiremc.server.api.SoulFireAPI; import com.soulfiremc.server.api.event.attack.AttackEndedEvent; import com.soulfiremc.server.api.event.attack.AttackStartEvent; import com.soulfiremc.server.api.event.lifecycle.InstanceSettingsRegistryInitEvent; +import com.soulfiremc.server.api.metadata.MetadataKey; import com.soulfiremc.server.protocol.BotConnection; import com.soulfiremc.server.protocol.BuiltInKnownPackRegistry; import com.soulfiremc.server.protocol.SFProtocolConstants; @@ -139,10 +139,10 @@ import java.util.*; import java.util.concurrent.CompletableFuture; import java.util.concurrent.TimeUnit; -import java.util.concurrent.atomic.AtomicReference; @Slf4j public class POVServer extends InternalPlugin { + private static final MetadataKey TCP_SERVER = MetadataKey.of("pov_server", "tcp_server", TcpServer.class); private static final List> NOT_SYNCED = List.of( ClientboundKeepAlivePacket.class, @@ -1001,19 +1001,22 @@ public void onAttackStart(AttackStartEvent event) { var freePort = PortHelper.getAvailablePort(settingsSource.get(POVServerSettings.PORT_START)); - var serverInstance = new AtomicReference<>(startPOVServer(settingsSource, freePort, attackManager)); + var serverInstance = startPOVServer(settingsSource, freePort, attackManager); log.info("Started POV server on 0.0.0.0:{} for attack {}", freePort, attackManager.id()); - SoulFireAPI.registerListener(AttackEndedEvent.class, e -> { - var currentInstance = serverInstance.get(); - if (currentInstance == null) { - return; - } + attackManager.metadata().set(TCP_SERVER, serverInstance); + } + + @EventHandler + public void onAttackEnded(AttackEndedEvent event) { + var attackManager = event.instanceManager(); + var currentInstance = attackManager.metadata().getAndRemove(TCP_SERVER); + if (currentInstance == null) { + return; + } - log.info("Stopping POV server for attack {}", attackManager.id()); - currentInstance.close(); - serverInstance.set(null); - }); + log.info("Stopping POV server for attack {}", attackManager.id()); + currentInstance.close(); } @NoArgsConstructor(access = AccessLevel.NONE)