Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
fd9d17e818 | ||
|
|
464762589c |
@@ -31,6 +31,26 @@ public final class ChatAnswerCore {
|
||||
|
||||
private ChatAnswerCore() {}
|
||||
|
||||
/**
|
||||
* 플레이어 로그인 직후 호출. 데이터팩이 "모드 살아있음" 신호로 쓸 수 있게
|
||||
* storage chat_answer:status 에 active=1b 를 세팅한다. 데이터팩의 mq:load 가
|
||||
* 매 /reload 와 서버 시작 시 이 값을 0b 로 clear 하므로, 모드가 없으면 이
|
||||
* 호출이 일어나지 않아 0b 로 유지되고, 모드가 있으면 첫 로그인 직후 1b 로 갱신.
|
||||
*/
|
||||
public static void onPlayerJoin(ServerPlayer player) {
|
||||
MinecraftServer server = player.getServer();
|
||||
if (server == null) return;
|
||||
CommandSourceStack source = server.createCommandSourceStack().withSuppressedOutput();
|
||||
try {
|
||||
server.getCommands().performPrefixedCommand(
|
||||
source,
|
||||
"data modify storage chat_answer:status active set value 1b"
|
||||
);
|
||||
} catch (Exception e) {
|
||||
LOG.debug("[{}] failed to set active flag: {}", MOD_ID, e.toString());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @return true = 채팅을 평소처럼 broadcast / false = 채팅 차단 (이미 정답 제출 처리됨)
|
||||
*/
|
||||
|
||||
@@ -3,6 +3,7 @@ package kr.tkrmagid.chatanswer.fabric;
|
||||
import kr.tkrmagid.chatanswer.core.ChatAnswerCore;
|
||||
import net.fabricmc.api.ModInitializer;
|
||||
import net.fabricmc.fabric.api.message.v1.ServerMessageEvents;
|
||||
import net.fabricmc.fabric.api.networking.v1.ServerPlayConnectionEvents;
|
||||
|
||||
public final class ChatAnswerFabric implements ModInitializer {
|
||||
@Override
|
||||
@@ -10,5 +11,8 @@ public final class ChatAnswerFabric implements ModInitializer {
|
||||
ServerMessageEvents.ALLOW_CHAT_MESSAGE.register((message, sender, params) ->
|
||||
ChatAnswerCore.handleChat(sender, message.signedContent())
|
||||
);
|
||||
ServerPlayConnectionEvents.JOIN.register((handler, sender, server) ->
|
||||
ChatAnswerCore.onPlayerJoin(handler.player)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
"homepage": "https://git.tkrmagid.kr/tkrmagid/mc_chat_answer_mod"
|
||||
},
|
||||
"license": "MIT",
|
||||
"environment": "server",
|
||||
"environment": "*",
|
||||
"entrypoints": {
|
||||
"main": [ "kr.tkrmagid.chatanswer.fabric.ChatAnswerFabric" ]
|
||||
},
|
||||
|
||||
@@ -15,6 +15,6 @@ neoforge_version=21.6.20-beta
|
||||
|
||||
# ───── mod metadata ─────────────────────────────────────────────────────────
|
||||
mod_id=chat_answer
|
||||
mod_version=1.0.0
|
||||
mod_version=1.1.1
|
||||
mod_group=kr.tkrmagid.chatanswer
|
||||
mod_name=채팅정답
|
||||
|
||||
@@ -1,16 +1,19 @@
|
||||
package kr.tkrmagid.chatanswer.neoforge;
|
||||
|
||||
import kr.tkrmagid.chatanswer.core.ChatAnswerCore;
|
||||
import net.minecraft.server.level.ServerPlayer;
|
||||
import net.neoforged.bus.api.IEventBus;
|
||||
import net.neoforged.bus.api.SubscribeEvent;
|
||||
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;
|
||||
|
||||
@Mod(ChatAnswerCore.MOD_ID)
|
||||
public final class ChatAnswerNeoForge {
|
||||
public ChatAnswerNeoForge(IEventBus modBus) {
|
||||
NeoForge.EVENT_BUS.addListener(ChatAnswerNeoForge::onServerChat);
|
||||
NeoForge.EVENT_BUS.addListener(ChatAnswerNeoForge::onPlayerLogin);
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
@@ -20,4 +23,11 @@ public final class ChatAnswerNeoForge {
|
||||
event.setCanceled(true);
|
||||
}
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
public static void onPlayerLogin(PlayerEvent.PlayerLoggedInEvent event) {
|
||||
if (event.getEntity() instanceof ServerPlayer player) {
|
||||
ChatAnswerCore.onPlayerJoin(player);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,11 +16,11 @@ modId = "neoforge"
|
||||
type = "required"
|
||||
versionRange = "[${neoforge_version},)"
|
||||
ordering = "NONE"
|
||||
side = "SERVER"
|
||||
side = "BOTH"
|
||||
|
||||
[[dependencies.${mod_id}]]
|
||||
modId = "minecraft"
|
||||
type = "required"
|
||||
versionRange = "[${minecraft_version},)"
|
||||
ordering = "NONE"
|
||||
side = "SERVER"
|
||||
side = "BOTH"
|
||||
|
||||
Reference in New Issue
Block a user