커맨드 블록으로 일정시간 플레이하면 튕기는 시스템 만들기
커맨드 블록으로 5분 뒤에 유저를 서버에서 튕기게하는 시스템을 어떻게 만들까요?
원리
마인크래프트 커맨드 블록으로는 /kick을 할 수 없습니다.
그래서 일반적으로 유저를 쫓아내는데 사용되는 /kick 커맨드를 이용해 유저를 튕겨낼 수가 없는데요,
비행 방지 시스템을 이용하면 강제로 튕기게 할 수 있습니다.
allow-flight 옵션은 플레이오의 비행 허용 여부를 결정합니다. 유저가 핵이나 기타 모드, 플러그인을 이용해 날아다니게 할 수 없도록 하는 것인데요. 이 옵션이 false일 경우 불법적으로 5초이상 날고있을시 유저를 쫓아내게 됩니다.
(겉날개로 날고있거나 관전모드 등의 일반적 플레이에는 해당되지 않습니다.)
1. server.properties 설정
먼저, server.properties에서 allow-flight 옵션을 꺼줍니다.
기본적으로 false이기 때문에 건드리지 않으신분들은 그대로 냅두면 됩니다.
커맨드 블록을 사용해야하기 때문에 enable-command-block 옵션은 켜줍니다.
allow-flight=false
enable-command-block=true
2. scoreboard 만들기
스코어보드를 이용해 각 플레이어마다 얼마간의 tick동안 접속했는지 기록을 할 것입니다.
20틱이 1초이므로 저는 20 * 60 * 10 = 12,000틱 즉 10분후에 튕길 수 있도록 설정해보겠습니다.
명령어를 이용해 플레이 타임인 ticksPlayed라는 스코어보드 목표를 만들어주세요.
/scoreboard objectives add ticksPlayed dummy
3. 커맨드 블록 추가
다음은 커맨드 블록을 얻어옵니다. 커맨드 블록은 화살표 방향에 유의하여 설치해주세요.
보라색은 반복형(repeat), 초록색은 연쇄형(chain)입니다.
/give @p minecraft:command_block 2
보라색의 반복형 커맨드 블록에는 아래 명령어를 설정해주세요.
매 틱마다 모든 플레이어의 ticksPlayed 수치를 1씩 증가시킵니다.
scoreboard players add @a ticksPlayed 1
옵션은 반복형 | 무조건적 | 항상 활성화로 설정해주시면 됩니다.
초록색의 연쇄형 커맨드 블록에는 아래 명령어를 설정해주세요.
x y z 부분에는 특정 좌표를 적어주면되는데, y 좌표를 높여 땅이아닌 공중으로 해주시면됩니다.
이 커맨드로 인해 플레이타임이 12000틱이 넘어가는 플레이어들을 계속 여기로 이동시켜 비정상적인 비행 상태로 만들게됩니다. 커맨드 때문에 5초이상 비행하던 플레이어들은 서버에서 강제로 튕겨나게 됩니다.
execute as @a[scores={ticksPlayed=12000..}] run tp @s x y z
옵션은 연쇄형 | 무조건적 | 항상 활성화로 설정해주세요.
완성
설정을 하시면 10분 후 플레이어는 이렇게 튕겨나게됩니다 :)