개인 자료란 (JE)

  서버 커뮤니티

Profile 이상한쉼표 대표칭호 없음

w_ShimPyo 01b323c2f7d141e98a3728b0c8486c8f

Profile

질문하기 커맨드

마인크래프트 명령어 적용 질문

2024.10.01 조회 수 52 추천 수 0
이해도 입문자 
게임버전 (JE) 관련없음 
게임버전 (BE) 관련없음 

마인크래프트 야생을 하려고 하는데,

한 번 죽으면 그 패널티로 하트가 한 칸씩 까이도록 하고 싶습니다.


근데 이게 명렁어도 어떻게 해야하는지 잘 모르겠고

커맨드 블록으로 하자니 멀리 가면 렌더거리 때문에 적용이 안될 것 같아서요,, 

따로 플러그인을 알아보는 편이 좋을까요??

7개의 댓글

yusin12
2024.10.01

커맨드에 렌드거리는 데이터팩으로 대처하거나 forceload명령어로 해결할 수 있습니다

플러그인도 알아볼 수 있으면 알아보시는 게 좋을 거 같습니다.

gamediller
2024.10.02

1. 계속 로드되는 스폰 청크 범위

스폰 청크는 마인크래프트 월드에서 항상 로드되어 있는 청크입니다. 이 범위는 플레이어가 어디에 있든지 로드 상태로 유지되어 커맨드 블록, 레드스톤 회로 등 다양한 시스템이 끊김 없이 작동하게 해줍니다.

- 스폰 청크 범위

스폰 지점을 중심으로 12x12 청크가 로드됩니다.

그중에서 중앙 5x5 청크는 항상 로드된 상태로 유지됩니다.

나머지 7x7 외곽 청크들은 플레이어가 스폰 청크 근처에 있을 때만 로드됩니다.

따라서, 커맨드 블록을 스폰 청크의 중앙 5x5 청크에 배치하면, 월드 어디서든 명령어가 작동합니다.

월드 스폰을 찾기 힘들다면, /setworldspawn 명령어로 월드 스폰을 변경할 수 있습니다.


2. 사망 시 최대 생명력 줄이기 및 하한 설정

기본 설정

1. 사망 횟수 추적용 점수판 생성:

/scoreboard objectives add deathCount deathCount "Deaths"


2. 사망할 때마다 최대 생명력을 1칸(2 체력)씩 줄이는 커맨드

스폰 청크의 커맨드 블록에 다음 명령어를 설정합니다.

'첫 번째' 커맨드 블록 (Repeat, 항상 활성화):

/execute as @a[scores={deathCount=1..}] run attribute @s minecraft:generic.max_health base set <현재 체력 - 2>


여기서 <현재 체력 - 2>는 플레이어의 현재 체력에서 2를 뺀 값입니다. 예를 들어, 처음 기본 체력이 20일 때, 사망 후 18로 설정합니다.


3. 사망 횟수 초기화

'두 번째' 커맨드 블록 (Chain, 항상 활성화):

/scoreboard players set @a[scores={deathCount=1..}] deathCount 0


4. 최대 체력이 일정 이하로 떨어지지 않게 하는 방법

최소 체력 제한을 설정하여, 최대 체력이 일정 수준 이하로 떨어지지 않도록 방지하는 명령어를 추가합니다.


'세 번째' 커맨드 블록 (Chain, 항상 활성화):

/execute as @a[nbt={Attributes:[{Name:"minecraft:generic.max_health",Base:..6.0f}]}] run attribute @s minecraft:generic.max_health base set 6


이 명령어는 최대 생명력이 3칸(6 체력) 이하로 떨어지면, 자동으로 3칸으로 유지되도록 합니다.

---

요약


1. 스폰 청크의 5x5 범위는 항상 로드되므로, 커맨드 블록을 여기 설치하면 월드 전역에서 명령어가 실행됩니다. 월드 스폰을 찾기 힘들다면, /setworldspawn 명령어로 월드 스폰을 변경할 수 있습니다.

2. 플레이어가 죽을 때마다 최대 체력이 2씩 감소하며, 이를 통해 하트가 줄어드는 시스템을 구현할 수 있습니다.

3. 최대 생명력이 3칸(6 체력) 이하로 떨어지지 않도록 하한을 설정해, 플레이어가 완전히 죽지 않도록 조절할 수 있습니다.

gamediller
2024.10.02
@gamediller

또는 JE는 스폰 청크 말고 forceload 명령어로를 통해 멀리서도 청크 로드가 가능합니다.

관련 블로그 링크 : https://potangaming.tistory.com/265

이상한쉼표
2024.10.02
@gamediller

{deathCount=1..} 부분에서 .. 은 왜 붙는 건가요?

그리고 <현재 체력 - 2> 부분은 어떻게 설정하면 좋을 지 감이 안 잡히네요..ㅠ

gamediller
2024.10.02
@이상한쉼표

{deathCount=1..}의 ..은 범위 지정을 나타내는 기호입니다.

이 구문은 플레이어의 사망 횟수(deathCount)가 1 이상인 경우를 의미하는데, 간혹 일어나는 버그를 방지하기위해 범위를 넓게 잡았습니다.

 

<현재 체력 -2>부분은 제가 Ai를 통해 답변의 틀을 만들고 검토후 수정해서 답변을 올리는데, 제가 못보고 지나쳐버린 부분이였네요.

 

/execute as @a[scores={deathCount=1..}] run attribute @s minecraft:generic.max_health base add -2

 

위에서 base add -2를 통해 매번 체력이 떨어지게 만들거나, set을 여러개 만들어서 특정 구간은 더 많이 최대 체력이 줄어들게 만들 수 있습니다.

또는 비율로 줄일 수 있는데 아래에 base 구문 설명 남기겠습니다.

 

base set: 특정 값으로 값을 설정합니다.

 

base add: 값을 증가 또는 감소시키는 데 사용될 수 있습니다.

 

base multiply: 비율로 값을 줄일 수 있습니다.

 

base reset: 속성을 기본값으로 초기화합니다.

gamediller
2024.10.02
@gamediller

제가 잘못 전달했네요. 최대 체력을 변경한 값은 사망시 초기화된다는데 지금은 밖이라서 확인할 수가 없네요. 만약 사망시 변경한게 초기화된다면 다른 방법이 필요한데 집으로 돌아가서 컴퓨터로 몇번 테스트를해야 알아낼 수 있어서 지금은 답변해드릴 수 없네요.

gamediller
2024.10.02
@이상한쉼표

사용하는 마인크래프트가 JE인지 BE인지, 버전이 어떻게되는지 서버나 플러그인 혹은 모드를 사용하는지 알려주실 수 있으신가요?

알려주시면 보다 정확하고 빠르게 답변이 가능합니다.