v1.3.6 — presence pulse 다중 hook 으로 false negative 회피
음악퀴즈 데이터팩의 `#server mq_chat_mod` 가드가 일부 호스트에서 false negative 로 시작 차단되던 문제. 기존엔 매 server tick 한 곳에서만 markModPresence 를 호출했는데, banner/mohist 같은 fabric-bukkit 하이브리드 호스트에서 ServerTickEvents.END_SERVER_TICK 이 안 들어와 점수가 영영 1 로 안 올라갔음. 이번 변경: presence pulse 호출 지점을 셋으로 확장 — 어느 한 이벤트만 firing 돼도 가드가 통과. - ServerLifecycleEvents.SERVER_STARTED (fabric) / ServerStartedEvent (neoforge) — 서버 부팅 완료 직후 한 번 - onPlayerJoin — 플레이어 로그인 시점 (server tick 가 죽어도 발화) - ServerTickEvents.END_SERVER_TICK — 정상 호스트에서의 steady-state ChatAnswerCore 에 onServerStarted public method 추가, onPlayerJoin 에서도 player.level().getServer() 로 server 받아 markModPresence 호출. 세 로더 entrypoint (fabric-1216, fabric-2612, neoforge-1216) 모두에서 SERVER_STARTED 등록. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -8,12 +8,14 @@ import net.neoforged.fml.common.Mod;
|
||||
import net.neoforged.neoforge.common.NeoForge;
|
||||
import net.neoforged.neoforge.event.ServerChatEvent;
|
||||
import net.neoforged.neoforge.event.entity.player.PlayerEvent;
|
||||
import net.neoforged.neoforge.event.server.ServerStartedEvent;
|
||||
import net.neoforged.neoforge.event.tick.ServerTickEvent;
|
||||
|
||||
@Mod(ChatAnswerCore.MOD_ID)
|
||||
public final class ChatAnswerNeoForge {
|
||||
public ChatAnswerNeoForge(IEventBus modBus) {
|
||||
NeoForge.EVENT_BUS.addListener(ChatAnswerNeoForge::onServerChat);
|
||||
NeoForge.EVENT_BUS.addListener(ChatAnswerNeoForge::onServerStarted);
|
||||
NeoForge.EVENT_BUS.addListener(ChatAnswerNeoForge::onPlayerLogin);
|
||||
NeoForge.EVENT_BUS.addListener(ChatAnswerNeoForge::onServerTick);
|
||||
}
|
||||
@@ -26,6 +28,11 @@ public final class ChatAnswerNeoForge {
|
||||
}
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
public static void onServerStarted(ServerStartedEvent event) {
|
||||
ChatAnswerCore.onServerStarted(event.getServer());
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
public static void onPlayerLogin(PlayerEvent.PlayerLoggedInEvent event) {
|
||||
if (event.getEntity() instanceof ServerPlayer player) {
|
||||
|
||||
Reference in New Issue
Block a user