응 아니야

안녕하세요. 당이천입니다.

 

이번 명령어는 23w06a(1.19.4)에서 추가된 damage 명령어를 알아봅니다.

 

공격자와 피격자를 지정하여 원하는 타입의 데미지를 원하는 만큼 입힐 수 있는 명령어입니다. 쉽게 말하면 '누가 누구를 뭘로 얼마나 세게 때릴 것이냐'를 정하는 것이며 인자가 많아보이는데.. 사실 그리 복잡할 게 없습니다.

 

대상의 체력을 강제로 조정하거나 특정 낙하물을 소환하여 데미지를 주고 채팅창에 알림을 표시하는 식의 눈속임이 더이상 필요 없게 되었습니다.

 

/damage @p 1

이정도로도 명령어는 작동합니다. 대상과 데미지만 지정해주면 아무튼 작동을 해요.

※ 이 명령어 역시 타격 시와 마찬가지로 피격 당한 엔티티가 빨간색으로 변하며 무적이 될 때에는 명령어가 작동하지 않습니다. (대상은 해당 피해에 면역이라고 뜨며 실제 면역인 상태나 크리에이터 모드일 때도 작동하지 않습니다.)

 

/damage <arg>

맞을 엔티티입니다. 대상선택인자로 지정할 수 있으며 어떤 엔티티라도 넣을 수 있습니다. marker(표지) 같이 데미지를 받아서는 안 되는 엔티티는 면역상태라 작동하진 않지만 아무튼 넣을 수는 있습니다.

 

사진처럼 돼지가 있다면 /damage @e[type=pig,limit=1,sort=nearest] 1이 되겠죠. 가장 가까운 1마리의 돼지에게 피해를 1만큼 주는 것입니다.

 

/damage @p <arg>

입힐 데미지의 양. 숫자만 입력할 수 있으며 0~3.4028235E38까지 입력할 수 있습니다. float 값으로 무한대를 표현한 것 같습니다. 어차피 다 쓸수도 없습니다. 그냥 알아만 두세요. 아주 많이 많이 쓸 수 있다는 것.

 

/damage @p 1 <arg>

데미지의 유형입니다. 대상이 입을 피해가 어떤 유형인지 정할 수 있습니다. 화살부터 위더 해골까지 있습니다. 아래 표를 보시고 선택하시기 바랍니다.

 

※이 명령어로 대상이 사망할 경우 사망메시지가 이 인자에 영향을 받으므로 이 역시 잘 골라야합니다.

 

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

피해를 입히지만 피격자의 상태도 고려되므로 엔더맨에게 화살 유형의 데미지를 입힌 경우 엔더맨이 순간이동합니다. 즉, 임의의 데미지를 입히고자 한다면 피격자가 무장을 했는지, 물약효과를 받고있는지 등등을 면밀히 따져야 완성도 높은 컨텐츠를 만들 수 있습니다..

 

/damage @p 1 minecraft:arrow <arg>

유형 다음으로는 at과 by 인자가 있습니다.

at은 위치, by는 대상입니다.

 

둘 다 '때릴 것(도구)'을 말합니다. 앞은 맞을놈 가운데는 때릴것입니다.

 

/damage @p 1 minecraft:arrow at ? ? ?

부터 알아보겠습니다.

at은 때릴놈(것)이 블록처럼.. 엔티티가 아닐 때 사용합니다. 이 대상의 위치를 알아내거나 지정할 때 사용하면 됩니다.

 

가루 눈도 블록이고 엔드와 네더에서 침대를 폭발시키면 그 침대도 블록이고 닿으면 피 닳는 달콤한 열매도 블록입니다. 이때 사용합니다.

 

xyz 값이며

절대좌표 0.0 0.0 0.0

상대좌표 ~ ~ ~

시점좌표 ^ ^ ^

모두 허용합니다. execute at과 같이 사용한다면 더욱 좋습니다. 좌표만 있기 때문에 해당 위치에 블록이 있든지 없든지 있는데 무슨 블록이든지 상관이 없습니다. 그냥 위치값만 가집니다.

 

/damage @p 1 minecraft:arrow by @p

는 반대로 때릴놈이 엔티티일 때 사용합니다.

/damage @e[type=minecraft:skeleton,limit=1] 1 minecraft:player_attack by @e[type=zombie,limit=1]

스켈레톤을 때릴 도구가 좀비이고 플레이어 어택 유형의 1데미지를 입히는 명령어입니다.

 

좀비가 살아있는(?) 엔티티라 스켈레톤이 좀비를 공격을 하긴 합니다만 이것이 완성은 아닙니다. 도구가 있으면 도구를 사용할 주체가 있어야겠지요? ^^

 

여기서 좀비는 스켈레톤이 쏘는 화살과 같은 의미를 갖습니다.

 

/damage @p 1 minecraft:arrow by @p from @p

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 엔티티가 데미지 면역이 있어서 몹이 상호작용한다는 기능은 만들 수 없는 것 같네요.

 

 

감사합니다.

공유하기

facebook twitter kakaoTalk kakaostory naver band