2017-03-16 2 views
0

그래서 Minecraft TNT 블록을 확장하고 onBlockActivated 함수를 그냥 무시하는 'BlockTest.java'라는 블록에 대한 클래스를 만들었습니다. 문제는 블록을 등록하는 방법입니다. 이전 버전에서 찾을 수있는 자습서 만 있습니다.minecraft 1.11 forge에 블록을 등록하는 방법

저는 모든 블록마다 ItemBlock이 필요하다고 생각합니다. 현재 내 등록 시도는 다음과 같습니다.

//(this code is in my main class inside init) 
public static Block oldTNT; 
public static ItemBlock oldTNTIB; 

oldTNT = new blockTest(); 
oldTNT.setRegistryName("oldTNT"); 
oldTNT.setUnlocalizedName(oldTNT.getRegistryName().toString()); 
GameRegistry.register(oldTNT); 

oldTNTIB.setRegistryName("oldTNT"); 
oldTNTIB.setUnlocalizedName(oldTNTIB.getRegistryName().toString()); 
GameRegistry.register(oldTNTIB); 

그러나 이것은 게임을 충돌시키고 등록 단계에 문제가 있음을 알려줍니다. 이게 바로 줄을 따라 가니? itemBlock도 인스턴스화해야합니까?

보너스 질문, 내가 지역화되지 않은 이름을 설정 한 곳에서 광고 소재 탭을 설정하는 것으로 가정합니다.

내가 mod 개발을 처음 접했을 때 친절 해 주시기 바랍니다. 도움이 필요합니다.

답변

2

예, ItemBlock을 인스턴스화해야합니다. 이것은 하나의 방법입니다

oldTNTIB = new ItemBlock(oldTNT); 

창조적 탭의 설정 방법, 당신은 사용할 수 있습니다

oldTNT.setCreativeTab(<enter tab here>); 
0

을 당신은 두 블록 (oldTNToldTNTIB)는 원인이됩니다 동일한 레지스트리 이름 oldTNT을 사용하고 추락.

두 번째 블록의 레지스트리 이름을 첫 번째 블록의 레지스트리 이름과 다른 것으로 변경해야합니다.

또한 1.11 이상에서는 레지스트리 이름과 같은 모든 소문자를 사용하는 것이 좋습니다. 이는 1.11+ Minecraft의 자원 팩 시스템에서 ResourceLocation에 소문자를 강제하기 때문입니다. 레지스트리 이름과 같은 것에 대문자를 사용하면 나중에 혼동을 일으킬 수 있습니다. 창조적 탭의 설정 방법

, 당신은 단지 적절한 CreativeTabs 예 (모든 바닐라 마인 크래프트 탭이 CreativeTabs 클래스의 정적 필드가)와 블록 인스턴스에 setCreativeTab를 호출합니다.

관련 문제