안녕하세요. 당이천입니다.
이번 명령어는 23w06a(1.19.4)에서 추가된 damage 명령어를 알아봅니다.
공격자와 피격자를 지정하여 원하는 타입의 데미지를 원하는 만큼 입힐 수 있는 명령어입니다. 쉽게 말하면 '누가 누구를 뭘로 얼마나 세게 때릴 것이냐'를 정하는 것이며 인자가 많아보이는데.. 사실 그리 복잡할 게 없습니다.
대상의 체력을 강제로 조정하거나 특정 낙하물을 소환하여 데미지를 주고 채팅창에 알림을 표시하는 식의 눈속임이 더이상 필요 없게 되었습니다.
이정도로도 명령어는 작동합니다. 대상과 데미지만 지정해주면 아무튼 작동을 해요.
※ 이 명령어 역시 타격 시와 마찬가지로 피격 당한 엔티티가 빨간색으로 변하며 무적이 될 때에는 명령어가 작동하지 않습니다. (대상은 해당 피해에 면역이라고 뜨며 실제 면역인 상태나 크리에이터 모드일 때도 작동하지 않습니다.)
맞을 엔티티입니다. 대상선택인자로 지정할 수 있으며 어떤 엔티티라도 넣을 수 있습니다. marker(표지) 같이 데미지를 받아서는 안 되는 엔티티는 면역상태라 작동하진 않지만 아무튼 넣을 수는 있습니다.
사진처럼 돼지가 있다면 /damage @e[type=pig,limit=1,sort=nearest] 1이 되겠죠. 가장 가까운 1마리의 돼지에게 피해를 1만큼 주는 것입니다.
입힐 데미지의 양. 숫자만 입력할 수 있으며 0~3.4028235E38까지 입력할 수 있습니다. float 값으로 무한대를 표현한 것 같습니다. 어차피 다 쓸수도 없습니다. 그냥 알아만 두세요. 아주 많이 많이 쓸 수 있다는 것.
데미지의 유형입니다. 대상이 입을 피해가 어떤 유형인지 정할 수 있습니다. 화살부터 위더 해골까지 있습니다. 아래 표를 보시고 선택하시기 바랍니다.
※이 명령어로 대상이 사망할 경우 사망메시지가 이 인자에 영향을 받으므로 이 역시 잘 골라야합니다.
id | 유형 |
arrow | 화살에 맞음 |
bad_respawn_point | 네더/엔드에서 침대와 상호작용하여 폭발함 |
cactus | 선인장에 닿음 |
cramming | 엔티티에 끼임 (1블록 24마리 이상 겹쳤을 때) /gamerule maxEntityCramming로 확인할 수 있는 값 |
dragon_breath | 엔더드래곤이 발사하는 숨결이 폭발함 |
drown | 물속에서 숨을 쉴 수 없음 |
dry_out | 수중생물이 공기중으로 나옴 |
explosion | tnt 크리퍼 등 폭발함 |
fall | 떨어짐 |
falling_anvil | 떨어지는 모루에 맞음 |
falling_block | 떨어지는 블록에 맞음 (모래) |
falling_stalactite | 떨어지는 블록에 맞음 (종유석) |
fireball | 화염구에 맞음 |
fireworks | 폭죽에 맞음 |
fly_into_wall | 겉날개 타고 벽에 부딛힘 |
freeze | 가루 눈에서 얼음 |
generic | 일반 피해 |
generic_kill | 일반 죽음 피해 |
hot_floor | 마그마 블록에 불탐 |
in_fire | 불속에서 탐 |
in_wall | 벽속에 갇힘 |
indirect_magic | 마법 피해 |
lava | 용암에 녹음 |
lightning_bolt | 번개에 맞음 |
magic | 마법 피해 |
mob_attack | 몹 근접 피해(직접) |
mob_attack_no_aggro | 몹 피해(우연) |
mob_projectile | 몹 피해(발사쳬) |
on_fire | 몸에 붙은 불을 끄지 못함 |
out_of_world | 세계 밖(공허) 피해 |
outside_border | 세계 경계 밖 피해 |
player_attack | 플레이어에 의한 피해 |
player_explosion | 플레이어에 의한 폭발 피해 |
sonic_boom | 워든 음파 피해 |
stalagmite | 석순 피해 |
starve | 배고픔 피해 |
sting | 쏘임(벌,가디언) 피해 |
sweet_berry_bush | 달콤한 열매 나무 피해 |
thorns | 가시 반사 피해 |
thrown | 눈덩이에 맞음 (블레이즈) |
trident | 삼지창 피해 |
unattributed_fireball | 화염구 화염 피해 |
wither | 위더 장미 시듦 피해 |
wither_skull | 위더 해골 피해 |
/damage @e[type=enderman,limit=1,sort=nearest] 1 minecraft:arrow
피해를 입히지만 피격자의 상태도 고려되므로 엔더맨에게 화살 유형의 데미지를 입힌 경우 엔더맨이 순간이동합니다. 즉, 임의의 데미지를 입히고자 한다면 피격자가 무장을 했는지, 물약효과를 받고있는지 등등을 면밀히 따져야 완성도 높은 컨텐츠를 만들 수 있습니다..
유형 다음으로는 at과 by 인자가 있습니다.
at은 위치, by는 대상입니다.
둘 다 '때릴 것(도구)'을 말합니다. 앞은 맞을놈 가운데는 때릴것입니다.
부터 알아보겠습니다.
at은 때릴놈(것)이 블록처럼.. 엔티티가 아닐 때 사용합니다. 이 대상의 위치를 알아내거나 지정할 때 사용하면 됩니다.
가루 눈도 블록이고 엔드와 네더에서 침대를 폭발시키면 그 침대도 블록이고 닿으면 피 닳는 달콤한 열매도 블록입니다. 이때 사용합니다.
xyz 값이며
절대좌표 0.0 0.0 0.0
상대좌표 ~ ~ ~
시점좌표 ^ ^ ^
모두 허용합니다. execute at과 같이 사용한다면 더욱 좋습니다. 좌표만 있기 때문에 해당 위치에 블록이 있든지 없든지 있는데 무슨 블록이든지 상관이 없습니다. 그냥 위치값만 가집니다.
는 반대로 때릴놈이 엔티티일 때 사용합니다.
/damage @e[type=minecraft:skeleton,limit=1] 1 minecraft:player_attack by @e[type=zombie,limit=1]
스켈레톤을 때릴 도구가 좀비이고 플레이어 어택 유형의 1데미지를 입히는 명령어입니다.
좀비가 살아있는(?) 엔티티라 스켈레톤이 좀비를 공격을 하긴 합니다만 이것이 완성은 아닙니다. 도구가 있으면 도구를 사용할 주체가 있어야겠지요? ^^
여기서 좀비는 스켈레톤이 쏘는 화살과 같은 의미를 갖습니다.
from이라는 인자가 또 있습니다.
from이 '때릴놈(원인)'입니다.
때릴 것 즉 도구는 맞을놈과 때릴놈의 매개체입니다.
/damage @e[type=minecraft:skeleton,limit=1] 1 minecraft:arrow by @e[type=minecraft:drowned,limit=1] from @e[type=minecraft:zombie,limit=1]
좀비가.. 드라운드로 스켈레톤을 때렸다는 명령어입니다. 드라운드와 좀비를 서로 바꾸면 스켈레톤은 드라운드를 쏩니다. 데미지 유형을 바꿔버리면 되기 때문에 굳이 도구를 arrow니 lightning_bolt니 뭐 이런걸로 정하지 않아도 됩니다. 다만 피격자로부터 공격당할 수 있으니 면역이거나 의미없는 엔티티면 좋겠죠.
끝입니다.
간단하게 맞을 놈 때릴 것 때릴 놈과 값을 정하여 데미지를 입히는 명령어를 알아봤습니다. 아쉽게도 interaction 엔티티가 데미지 면역이 있어서 몹이 상호작용한다는 기능은 만들 수 없는 것 같네요.
감사합니다.