User Tools

Site Tools


Sidebar

설치

기초

고급

아이템

블록과 블록 엔티티

액채

엔티티

세계 생성

레시피 타입

기타

이벤트

믹스인

다이네믹 데이터 생성

Minecraft 1.15 튜토리얼

Minecraft 1.14 튜토리얼

기록

ko_kr:tutorial:introduction

Fabric 모딩 소개

패브릭 모드를 만들 때 사용할 수 있는 몇 가지 일반적인 기술을 간단히 소개합니다. 마인크래프트의 모드를 만들려면, 당신은 종종 마인크래프트의 코드와 비표준적인 방식으로 상호작용해야 합니다. 마인크래프트는 변화에 점점 더 유연하게 대처하고 있지만, 여전히 본질적으로 변형되도록 구축되어 있지 않습니다.

다른 모딩 API와는 달리 페브릭 로더는 더 많은 기능을 추가하기 위해 마인크래프트의 클래스 파일을 덮어쓰지 않습니다. 대신 the Mixin library를 사용하여 코드를 주입합니다. 그러나 대부분의 경우 이 라이브러리를 직접 사용하지 않습니다.

Mixin은 약할 수 있고 때로는 오류를 일으킬 수 있습니다. 따라서 패브릭 API에서 이미 몇 가지 기능을 구현했습니다. 코어 패브릭 API에 존재하지 않는 경우 제 3자 라이브러리에 존재하는 경우가 많습니다. 거의 모든 상황에서 Fabric API 또는 제 3자 라이브러리를 사용하는 것이 Mixin 구현보다 바람직합니다.

가끔은 그런 건 필요 없을 때도 있어요. 마인크래프트는 모델링용으로 제작되지 않았지만, 추가 변경 없이 액세스할 수 있는 많은 기능을 포함하고 있습니다.

이 위키는 선호도에 따라 마인크래프트에 영향을 줄 수 있는 모든 방법을 다룰 것입니다.

기본 마인크래프트 API

마인크래프트가 이미 뭔가를 하게 했다면, 바퀴를 재창조하지 마세요. 이것의 좋은 예는 Minecraft의 코드를 수정하지 않고 블록과 항목을 추가할 수 있는 “Registry” 클래스입니다.

마인크래프트는 또한 JSON 데이터 파일을 다양한 데이터 기반 기능에 사용합니다. JSON 파일을 모드에 추가한 다음 Fabric API에서 주입할 수 있습니다. 예를 들어 블럭 모델과 Loot table은 JSON 파일을 통해 구현됩니다.

패브릭 API

클라이언트에 설치된 패브릭 자체는 두 부분으로 나뉩니다.

  1. Fabric Loader - 모드를 로드하고 진입점을 호출합니다.
  2. Fabric API는 몇 가지 일반적인 유용한 API를 제공하는 선택적 라이브러리입니다.

API는 상대적으로 작게 유지되어 Fabric을 새로운 마인크래프트 버전으로 더 빨리 포팅할 수 있다.

Fabric API에 포함된 내용은 GitHub에 있는 소스 코드를 참조하십시오. 패브릭 API에는 네트워킹 및 렌더링과 같은 작업을 위한 일반적인 이벤트 후크와 일반 유틸리티가 많이 포함되어 있습니다.

제 3자 API

페브릭 API는 의도적으로 작게 유지되고 초점이 맞춰져 있기 때문에, 그 공백을 메우기 위해 타사 API가 존재합니다. 믹신은 어떤 써드파티 라이브러리가 핵심 페브릭 API와 같은 방식으로 마인크래프트의 코드에 영향을 미칠 수 있도록 합니다. 가능한 경우 충돌 가능성을 최소화하기 위해 직접 믹신을 작성하는 대신 이러한 믹신을 사용해야 합니다.

이 Wiki에서 미완성제 3자 라이브러리 목록을 찾을 수 있습니다.

믹스인

마지막으로, 믹스인을 사용할 수 있습니다. 믹스인은 마인크래프트 고유의 코드를 변경할 수 있는 강력한 기능입니다. 일부 믹스인은 충돌을 유발할 수 있지만 책임감 있게 사용됩니다. 이러한 믹스인은 모드에 고유한 동작을 추가하는 데 중요합니다.

믹스인은 다양한 맛으로 구성되며, 선호도는 대략 다음과 같습니다.

  • 인터페이스 추가
  • 콜백 인젝터
  • 인젝터 리디렉션
  • 덮어쓰면 절대 안됩니다

이것은 전체 목록이 아니라 간략한 개요입니다. 여기에는 일부 믹스인 유형이 생략되어 있습니다.

인터페이스 추가(Interface(Duck))

이것은 아마도 믹스인을 사용하는 가장 안전한 방법 중 하나일 것입니다. 새로운 인터페이스 구현은 어떤 마인크래프트 클래스에도 추가될 수 있습니다. 그런 다음 클래스를 인터페이스에 캐스팅하여 인터페이스에 액세스할 수 있습니다. 이것은 클래스에 대한 어떤 것도 바꾸지 않고, 단지 새로운 것을 추가할 뿐이며, 따라서 충돌할 가능성은 매우 낮습니다.

한 가지 주의할 점은 주입하는 함수가 기존 함수와 일치해야 한다는 것입니다. 따라서 일반적인 매개 변수 유형을 사용할 경우 고유한 이름을 지정해야 합니다.

콜백 인젝터(Callback)

콜백 인젝터를 사용하면 기존 메서드와 해당 메서드 내의 특정 메서드 호출에 콜백 후크를 추가할 수 있습니다. 또한 메소드의 반환 값을 가로채고 변경할 수 있으며 조기 복귀도 가능합니다. 콜백 인젝터는 쌓일 수 있으므로 모드 간에 충돌이 발생할 가능성은 거의 없습니다.

리디렉션 인젝터(Redirect)

리디렉션을 사용하면 대상 메서드 내의 메서드 호출 또는 변수 액세스를 고유한 코드로 감쌀 수 있습니다. 이러한 기능은 매우 적게 사용하며, 모든 모드 간에 대상 콜 또는 액세스를 한 번만 리디렉션할 수 있습니다. 두 모드가 동일한 값을 리디렉션하면 충돌이 발생합니다. 콜백 주입을 사용하시는게 안전합니다.

덮어쓰기(Overwrite)

이것은 사용을 자제해야됩니다. 이들은 메소드를 완전히 대체하여 모든 기존 코드를 제거하고 메소드의 다른 유형의 믹스인과 충돌합니다. 그들은 다른 모드뿐만 아니라 마인크래프트 자체의 변화와도 충돌할 가능성이 매우 높습니다. 원하는 작업을 수행하기 위해 덮어쓰기가 필요하지 않을 수 있습니다. 꼭 필요하지 않다면 다른 작업을 사용하세요.

ko_kr/tutorial/introduction.txt · Last modified: 2021/02/18 07:17 by namutree0345