castleCT 6fed4fe18f5c429a90efcf59fdde7799
게임버전 | 모든버전 |
---|
먼저 어떻게 만들지 계획해 보겠습니다!
공중에서 쉬프트를 누르면 위로 이동한다.
여기서 필요한 것은!
- 공중인 것을 감지한다.
- 쉬프트를 감지한다.
- 1회만 작동한다.
- 낙하데미지를 받지 않게 한다.
- 이동한다
입니다.
1. 공중인 것을 감지하자!
그러기 위해서는 nbt 데이터인
OnGround:0b (공중에 있음을 감지한다.)
OnGround:1b (바닥에 있음을 감지한다.)
을 사용하겠습니다
2. 쉬프트를 감지한다!
이건 못할 줄 알았습니다.
하지만 마인크래프트는 정말 많은 것이 가능했죠.
scoreboard 에는 쉬프트를 누른 시간을 감지하는 기준이 있었던 것입니다!
(전혀 몰랐던 것..)
minecraft.custom:minecraft.sneak_time
을 이용하여 쉬프트를 감지할 것입니다!
3. 1회만 작동한다.
이것은 태그를 이용하여, 작동시키면 태그를 주어 작동을 이미 했다는 것을 알릴겁니다.
4. 낙하데미지를 받지 않게 한다.
포션효과를 이용할 겁니다.
5. 이동한다.
공중부양을 이용하겠습니다!
대괄호와 중괄호는 대부분 묶어주는 역할입니다.
(여기부터 여기까지가 xx 다! 라는 의미)
괄호에 대한 설명은 없습니다.
제작을 시작해 보겠습니다 먼저 쉬프트를 감지하기 위한 스코어를 만듭니다!
/scoreboard objectives add shift minecraft.custom:minecraft.sneak_time
두번째로 (4)를 구현하기 위한 스코어를 만들어 줍니다.
/scoreboard objectives add time dummy
이제 커맨드를 본격적으로 제작합니다!
먼저 커맨드 블럭을 밑과같이 설치합니다.
커맨드 블럭의 설명은 하지 않겠습니다..
반복커맨드 (보라색) 부터 차례로 1~8 입니다.
1번 커맨드 블럭에 사용하는 명령어.
execute as @a[scores={shift=1..},nbt={OnGround:0b},tag=!f] run tag @s add d
공중에서 쉬프트를 누르면 2단점프를 시도한 플레이어라고 표시하기 위해 태그 d를 준다.
execute | 실행한다. |
as | 명령어 실행자로 설정한다. |
@a[ | 모든 플레이어 중 |
scores={ | 스코어 |
shift=1..} | shift가 1보다 크 |
, | 며 |
nbt={ | nbt 중 |
OnGround:0b}] | 땅에 있지 않으 |
, | 며 |
tag= | 태그 |
! | 가 아닌경우 (가지고 있지 않을 경우) |
f] | 태그 f. |
run | 명령어를 실행한다. |
tag | 태그 관련 명령어 |
@s | 명령어를 실행한 플레이어에게 (as로 설정함) (엔티티 전부 가능함, 대체로 플레이어 사용) |
add | 추가한다 |
d | 태그 d를. |
태그 d는 점프를 해야되는 개체를 말하는 것입니다.
태그 f는 점프후 마무리를 하고 있는 개체를 말하는 것 입니다.
f, d는 무었이든 상관 없습니다.
f를 end
d를 jump
처럼 바꿔도 됩니다. 하지만 밑의 모든 태그 f와 d를 자신이 설정한 태그로 바꿔주셔야 합니다.
밑에서는 tag={}나 scores={}, nbt={} 는 묶어서 한번에 설명하겠습니다!
위의 커맨드 설명만 풀어서 설명되어 있겠습니다.
묵여있는게 이해가 되지 않으면, 위의 명령어 설명을 다시 보면서 이해해 주세요!
2번 커맨드 블럭에 사용하는 명령어.
execute as @a[tag=d,scores={time=..1},tag=!f] run scoreboard players add @s time 2
점프를 했을 때 아직 2단 점프 실행이 안된 플레이어는 점프를 했다고 표현한다.
execute | 실행한다 |
as | 명령어 실행자로 설정한다. |
@a | 모든 플레이어 중 |
[tag=d, | 태그 d를 가지고 있으며 |
scores={time=..1}, | 스코어 time이 1보다 작으며 |
tag=!f] | 태그 f를 가지고 있지 않은 플레이어. |
run | 명령어를 실행한다. |
scoreboard | 스코어보드 관련 명령어 |
players | 점수 조작 |
add | 더한다 |
@s | 명령어를 실행한 플레이어의 |
time | time 스코어에 |
2 | 2점 |
3번 커맨드 블럭에 사용하는 명령어.
execute as @a[tag=d,tag=!f,scores={time=1..}] run effect give @s minecraft:levitation 1 30 true
점프를 시도한 플레이어에게 공중부양 효과를 준다.
execute | 실행한다 |
as | 명령어 실행자로 설정한다. |
@a | 모든 플레이어 중 |
[tag=d, | 태그 d를 가지고 있으며 |
tag=!f, | 태그 f를 가지고 있지 않으며 |
scores={time=1..}] | 스코어 time이 1보다 큰 플레이어 |
run | 명령어를 실행한다. |
effect | 효과 관련 명령어 (포션효과) |
give | 효과를 준다 |
@s | 명령어를 실행한 플레이어에게 |
minecraft:levitation | 공중부양 |
1 | 1초간 |
30 | 30의 세기로 |
true | 포션 물방울 효과를 끈다. |
4번 커맨드 블럭에 사용하는 명령어.
execute as @a[tag=d,tag=!f,scores={time=1..}] run tag @s add f
마무리 단계로 들어간다.
execute | 실행한다. |
as | 명령어 실행자로 설정한다. |
@a | 모든 플레이어 중 |
[tag=d,tag=!f,scores={time=1..}] | 3번 커맨드랑 설명이 같음. |
run | 명령어를 실행한다. |
tag | 태그 관련 명령어 |
@s | 명령어를 실행한 플레이어에게 |
add | 추가한다 |
f | 태그 f 를. |
5번 커맨드 블럭에 사용하는 명령어.
execute as @a[tag=f] run tag @s remove d
마무리 (태그 f) 중인 플레이어에게서 태그 d 를 제거한다.
execute | 실행한다. |
as | 명령어 실행자로 설정한다. |
@a | 모든 플레이어 중 |
[tag=f] | 태그 f를 가진 플레이어. |
run | 명령어를 실행한다. |
tag | 태그 관련 명령어 |
@s | 명령어를 실행한 플레이어에게 |
remove | 제거한다 |
d | 태그 d를 |
6번 커맨드 블럭에 사용하는 명령어.
execute as @a[tag=f] run scoreboard players set @s time 0
time 스코어를 초기화 합니다.
execute | 실행한다. |
as | 명령어 실행자로 설정한다. |
@a | 모든 플레이어중 |
[tag=f] | 태그 f를 가진 플레이어. |
run | 명령어를 실행한다. |
scoreboard | 스코어보드 관련 명령어 |
players | 점수 조작 |
set | 설정한다 |
@s | 명령어를 실행한 플레이어의 |
time | time 스코어를 |
0 | 0으로 |
7번 커맨드 블럭에 사용하는 명령어.
execute as @a[tag=f] run scoreboard players set @s shift 0
위의 6번 커맨드블럭 명령어와 같고 단지 shift스코어를 초기화 할 뿐입니다.
execute | - |
as | - |
@a | - |
[tag=f] | - |
run | - |
scoreboard | - |
players | - |
set | - |
@s | - |
shift | shift 스코어를 |
0 | - |
8번 커맨드 블럭에 사용하는 명령어.
execute as @a[tag=f] run effect give @s minecraft:resistance 1 100 true
낙사 대미지를 없애기 위해 저항을 줍니다.
execute | 실행한다. |
as | 명령어 실행자로 설정한다. |
@a | 모든 플레이어중 |
[tag=f] | 태그 f를 가진 플레이어. |
run | 명령어를 실행한다. |
effect | 효과 관련 명령어 |
give | 효과를 준다. |
@s | 명령어를 실행한 플레이어에게 |
minecraft:resistance | 저항을 |
1 | 1초간 |
100 | 100의 세기로 (대충 낙하 대미지를 받지 않을 정도로 높은 값) |
true | 포션 물방울 효과를 끈다. |
9번 커맨드 블럭에 사용하는 명령어.
execute as @a[tag=f,nbt={OnGround:1b}] run tag @s remove f
바닥에 내려오면 마무리가 종료되고 초기화 됩니다.
execute | 실행한다. |
as | 명령어 실행자로 설정한다. |
@a | 모든 플레이어중 |
[tag=f, | 태그 f 를 가지며 |
nbt={OnGround:1b}] | 바닥에 있는 플레이어. |
run | 명령어를 실행한다. |
tag | 태그 관련 명령어 |
@s | 명령어를 실행한 플레이어에게 |
remove | 제거한다 |
f | 태그 f를 |
마지막으로
바닥에 있으면서 쉬프트를 눌렀을 때 shift 스코어를 0으로 바꿔주는 커맨드를 만듭니다.
(이미 밑의 효과 커맨드를 적용하여 오른쪽의 커맨드 블럭이 처음 사진과 조금 다릅니다.)
(매끄러운돌 위에는 레드스톤 블럭을 설치하여 양쪽의 커맨드에 전기 신호를 줄 겁니다.)
맨 왼쪽에 추가된 반복 커맨드 블럭에 밑의 명령어를 적습니다.
execute as @a[scores={shift=1..},nbt={OnGround:1b}] run scoreboard players set @s shift 0
execute | 실행한다 |
as | 명령어 실행자로 설정한다. |
@a | 모든 플레이어중 |
[scores={shift=1..}, | shift 스코어가 1보다 크고 |
nbt={OnGround:1b}] | 바닥에 있는 플레이어. |
run | 명령어를 실행한다. |
scoreboard | 스코어보드 관련 명령어 |
players | 점수 조작 |
set | 설정한다 |
@s | 명령어를 실행한 플레이어의 |
shift | shift 스코어를 |
0 | 0으로 |
만약 이 커맨드를 전부 이해했다면, 중간에 어떻게 하면 파티클을 추가하고, 소리를 추가할 수 있는지 알 수 있을 겁니다.
밑의 명령어를 추가하면! 소리와 이펙트를 줄 수 있습니다.
밑의 명령어는 점프가 실행 될 때! 그 2단 점프를 실행한 사람의 위치 (execute at) 에서 작동해야 합니다!
particle cloud ~ ~ ~ 0.5 0 0.5 0 100
playsound minecraft:entity.ender_dragon.flap block @a ~ ~ ~ 10 1
명령어를 적용하면! (소리도 나지만 gif 라 소리가 없군요)
이상으로 2단 점프 커맨드로 만들기를 마칩니다!
(어우... 약 4500자를 썻네.. 다시는 이렇게 안써야지..)
마크러버
2020.04.22우와
대단하시네요
castle
2020.04.22원래는 쉬프트 감지가 되는지 몰라서 그냥 안만들려고 했는데, 되길레 만들어 봤습니다!
ChoMu_
2020.04.22오오 좋네용
castle
2020.04.22감사합니다!
castle
2020.04.22음 영어로 검색해보면 발 밑에 베리어를 설치하는 방식으로 많이 하네요, 좋은 방법인 듯!
아이스틴
2020.04.22엄청나게 자세한 설명이군요!
castle
2020.04.22그러니까요.. 너무 힘드러...
리오채널
2020.04.23허허 미치셨읍니까 휴먼
castle
2020.04.23허허.. 처음에는 제가 커맨드를 할 때 커맨드를 저렇게 번역(?)해서 사용하는데, 처음 커맨드 하는 분들 있으면 쉽게 할 수 있을 거라고 생각해서 시작했다가 죽는줄 알았죠ㅎ
Ryan40ko
2020.06.28따라 해 봤는데 잘 안돼요ㅠㅠ
castle
2020.07.01만약 서버라면 커맨드 블럭이 true 인지 확인한 뒤.
버전은 1.13 이상인지 확인해 주세요.
저는 1.14.4 에서 만들었기 때문에 같은 버전이면 가장 좋습니다.
/scoreboard objectives add shift minecraft.custom:minecraft.sneak_time
/scoreboard objectives add time dummy
위 커맨드를 먼저 채팅창으로 실행하고
[반복, 연쇄, 조건, 무조건] 설정과 커맨드 블럭의 위치 확인 까지 제대로 한 뒤에
execute as @a[scores={shift=1..},nbt={OnGround:0b},tag=!f] run tag @s add d
execute as @a[tag=d,scores={time=..1},tag=!f] run scoreboard players add @s time 2
execute as @a[tag=d,tag=!f,scores={time=1..}] run effect give @s minecraft:levitation 1 30 true
execute as @a[tag=d,tag=!f,scores={time=1..}] run tag @s add f
execute as @a[tag=f] run tag @s remove d
execute as @a[tag=f] run scoreboard players set @s time 0
execute as @a[tag=f] run scoreboard players set @s shift 0
execute as @a[tag=f] run effect give @s minecraft:resistance 1 100 true
execute as @a[tag=f,nbt={OnGround:1b}] run tag @s remove f
위 명령어들을 위에 글에 따라서 작성하고 마지막 반복 블럭 또한 설치후
execute as @a[scores={shift=1..},nbt={OnGround:1b}] run scoreboard players set @s shift 0
로 적혀있는데로 하면 됩니다.
위 설명글은 커맨드를 조금은 만져본 사람을 기준으로 작성하였습니다.
커맨드 블럭의 사용법과 기초명령어, 명령어를 실행하면 어떻게 실행되는지, 어떻게 활용하는지를 알고있는 것을 기본으로 작성하였습니다.
그렇기 때문에 커맨드를 전혀 사용할 줄 모른다면 만들기 힘들 수 있습니다.