본문 바로가기
Game Dev/MineCraft - Mod

블럭 밝기설정, 불투명도 설정, 강도설정, 소리설정 등 블럭설정과 조합법 추가하기

by [방울] 2014. 12. 2.

 

 

 

 

이번에는 블럭 밝기 및 불투명도, 강도설정과 함께 조합법 추가도 하겠습니다 ~_~

아, 여기서 NEI 조합법 가이드 추가는 API를 사용해야하나?? 하기때문에 나중에 따로 강좌하겠습니다.

 

우선 가독성도 높일겸 여러 등록은 등록 클래스에서 관리하도록 합니다.

bellcraft.core 패키지에 Registry 클래스를 생성해줍니다.

 

package bellcraft.core;

import bellcraft.items.Items;
import net.minecraft.item.ItemStack;
import net.minecraft.item.crafting.IRecipe;
import cpw.mods.fml.common.registry.GameRegistry;

public class Registry {
	public static void registryRecipe()
	{
		GameRegistry.addShapelessRecipe(new ItemStack(Items.RandomBoxTier1, 1), Items.ingotRandom, Items.ingotRandom, Items.ingotRandom, Items.ingotRandom);
	}
}

 

먼저 레시피 등록 메소드를 만들었습니다.

그럼 다음으로 레시피 등록에대해 설명해드리겠습니다.

랜덤상자는 특별한 조합법이 필요 없기때문에 Shapeless로 등록하였습니다.

 

자, 이때 조합법에는 Shape 조합법(이하 고정조합법)과 Shapeless 조합법(이하 자유조합법)이 있는데 말 그대로 Shape는 형태가 있는 조합법이고 Shapeless는 형태가 없는 조합법입니다.

Shape 조합법은 등록한 조합칸 그대로 조합을 하여야 아이템이 나오는 반면에 Shapeless 조합법은 아무렇게나 배치해도 아이템 종류와 갯수만 맞으면 조합이 되지요.

 

 

 

GameRegistry.addShapedRecipe(new ItemStack(Items.RandomBoxTier1, 1), " X ", " X ", "YYY", 'X', Items.ingotRandom, 'Y', Item.Stone); GameRegistry.addShapedRecipe(new ItemStack(Items.RandomBoxTier1, 1), " X ", " X ", "YZY", 'X', Items.ingotRandom, 'Y', Item.Stone, 'Z', new ItemStack(wooden_pickaxe, 1, 1)); GameRegistry.addShapelessRecipe(new ItemStack(Items.RandomBoxTier1, 1), Items.ingotRandom, Items.ingotRandom, Items.ingotRandom, Items.ingotRandom);

 

 

 

위 2개는는 고정조합법의 예시입니다.

저대로 등록을 하시게 되면 ㅗ 모양으로 위에는 랜덤인곳 두개를 넣고, 아래는 돌 3개를 넣으면 티어1랜덤박스가 조합됩니다.

저기서 " X ", " X ", "YYY", 'X', Items.ingotRandom, 'Y', Item.Stone 이 궁금하시죠?

자세히 들여다보면 쉬운 부분인데 설명해 드릴게요.

 

먼저 앞에 큰따옴표로 되어있는 3부분은 조합법 형태에 해당합니다.

뒤에 작은따옴표로 되어있는건 일종의 변수 역할을 합니다.

앞에 큰따옴표에 지정된 문자를 뒤에서 설정하는거죠.

앞에 조합법 형태에 공백은 필요한 아이템이 없음을 뜻합니다.

변수를 지정했으면 뒤에서 해당 변수의 값을 지정해줘야하니, 'X', 아이템 형태로 지정하게됩니다.

응용하면 'Z', 아이템 형태로도 사용하실 수 있습니다.

 

그리고 바로 아랫줄 고정조합법은 나무 곡괭이의 내구도가 정확히 1 닳았을때나 양털의 색등을 지정할 수 있습니다.

 

 

제일 아랫줄 자유조합법은 아이템만 있으면 조합이 되는것이니 특별히 변수를 지정해줄 필요 없이 그냥 아이템만 지정시켜주시면 됩니다.

위는 4개 인곳으로 티어1랜덤상자를 하나 만드는 조합법입니다.

 

 

그 다음 조합법을 등록시켜야하니, bellcraft.core 패키지에 BellCraft 클래스의 Initialize 메소드에 다음과같이 명령줄을 추가해줍니다.

 

Registry.registryRecipe();

 

 

 

그리고 실행하시면

 

아무렇게나 아이템을 올려두면 조합이 됩니다!

HAYO!

 

 

그 다음 블럭 밝기 설정과 불투명도, 강도설정을 해야지요.

bellcraft.blocks.BlockOre 로 들어가줍니다.

그 다음 메인 함수에 다음을 추가해줍니다. (이미 있다면 수정해줍니다.)

 

 

		setHardness(0.5F); // 아이템 강도
		setLightLevel(0.95F); // 블럭 밝기 (0 ~ 1.0 / 1.0일시 용암밝기)
		setLightOpacity(0); // 블럭 투명도 (낮으면 불투명)
		setStepSound(Block.soundTypeAnvil); // 설치 및 그 위를 달렸을때 나는소리 설정

 

 

설명은 주석을 참고하세요.

아이템 강도는

돌 - 1.5
잔디 - 0.5
코블스톤 2.0
베드락 -1.0
등등..
0 이면 한방에 부숴집니다.

 

블럭 밝기는 용암이 1.0이고, 토치가 0.9375로 용암보다 약간 어둡습니다.

 

위에 없는 블럭설정을 추가로 알려드리자면,

setResistance
TNT등 폭팔이 일어났을때 폭팔저항성입니다.
즉 이 값이 높을수록 주변의 블럭이 덜 부숴짐
돌 10.0
옵시디언 2000.0
베드락의 값은 6000000.0 입니다.

 

 

 

아 그리고 BlockOre 클래스에 블럭설정좀 바꿨습니다.

 

		setHardness(0.5F); // 아이템 강도
		setLightLevel(0.95F); // 블럭 밝기 (0 ~ 1.0 / 1.0일시 용암밝기)
		setLightOpacity(0); // 블럭 투명도 (낮으면 불투명)

 

 

 

반짝반짝

 

다음에는 각종등록명령을 등록클래스로 몰아넣도록 하겠습니다.

댓글