v1.0.22 는 채팅정답 모드 false negative 를 게이트 자체를 삭제해서 회피 했는데, 이건 채팅정답 모드 서버 설치 검증 자체를 잃는 잘못된 방향이었음. 모드 없는 서버에서도 시작이 됨. 진짜 root cause 는 모드 쪽 presence pulse 가 매 server tick 단일 hook 이라 banner/mohist 같은 fabric-bukkit 하이브리드에서 안 firing 되던 것. mc_chat_answer_mod v1.3.6 에서 SERVER_STARTED / PlayerJoin / ServerTick 셋으로 확장 — 어느 한 이벤트만 firing 돼도 점수 갱신. 이 commit 은 데이터팩 쪽 v1.0.22 변경을 되돌림 (start.mcfunction 의 mq_chat_mod 게이트, load.mcfunction 의 mq_chat_mod objective add/set 복구). 결과적으로 v1.0.21 의 데이터팩 동작과 동일. temp/README.md 갱신 — v1.0.23 로 가는 절차는 모드 jar 업그레이드 + (만약 v1.0.22 를 거쳐갔다면) start/load 두 파일 덮어쓰기. v1.0.21 에서 곧장 v1.0.23 으로 오면 datapack 파일은 동일하므로 사실상 모드 업그레이드만. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
48 lines
2.2 KiB
MCFunction
48 lines
2.2 KiB
MCFunction
data modify storage mq:main answer set value {title:"", author:"", alias:[]}
|
|
data merge storage func:temp {}
|
|
data merge storage mq:tmp {}
|
|
|
|
function mq:init/config
|
|
function mq:init/songs
|
|
function mq:init/buttons
|
|
function mq:init/triggers
|
|
|
|
function mq:tellraw {"text":"서버 리로드 성공!","color":"white","msg":'""'}
|
|
|
|
scoreboard objectives remove func.temp
|
|
scoreboard objectives remove main
|
|
scoreboard objectives remove buttons
|
|
scoreboard objectives remove answer
|
|
scoreboard objectives remove leave_game
|
|
|
|
scoreboard objectives add func.temp dummy
|
|
scoreboard objectives add main dummy
|
|
scoreboard objectives add buttons dummy
|
|
scoreboard objectives add answer dummy
|
|
scoreboard objectives add leave_game custom:leave_game
|
|
|
|
# 외부 모드 존재 확인용 점수.
|
|
# mq_chat_mod : 서버 전용 모드(mc_chat_answer_mod). 모드가 매 server tick
|
|
# 마다 fake player `#server` 점수를 1 로 set. 모드가 서버에 없으면 0 유지.
|
|
# mq_video_mod : 클라이언트 모드(mc_video_player_mod). 클라 join 시 서버로
|
|
# handshake payload 전송 → 서버 측 모드가 해당 플레이어 점수를 1 로 set.
|
|
# 클라에 모드가 없으면 0 유지. (login.mcfunction 에서 플레이어별 0 초기화.)
|
|
scoreboard objectives remove mq_chat_mod
|
|
scoreboard objectives remove mq_video_mod
|
|
scoreboard objectives add mq_chat_mod dummy
|
|
scoreboard objectives add mq_video_mod dummy
|
|
# /reload 후 모드가 한 tick 도 돌기 전에 start 가 호출될 수 있으니
|
|
# #server 점수도 0 으로 materialize. 모드가 살아 있으면 다음 tick 에 1 로 갱신.
|
|
# mq_video_mod 도 같은 objective 안에서 holder 만 다르게 — `#server` 는 서버
|
|
# 컴포넌트 존재 (서버 측 모드가 매 tick 1 로 갱신), `<player>` 는 클라 측
|
|
# 존재 (payload 수신 시 1 로 갱신).
|
|
scoreboard players set #server mq_chat_mod 0
|
|
scoreboard players set #server mq_video_mod 0
|
|
|
|
scoreboard players set two func.temp 2
|
|
|
|
bossbar add mq:process [{"text":"진행도: ","color": "yellow","bold": true},{"text":"0","color": "yellow","bold": true},{"text":"/","color": "yellow","bold": true},{"text":"0","color": "yellow","bold": true}]
|
|
|
|
function mq:commands/stop with storage mq:main
|
|
function mq:players/login with storage mq:main spawn
|