본문 바로가기

MC. JAVA

마인크래프트 소스 분석

마인크래프트 공부내용 정리


setHardness 블럭의 강도

나뭇잎                              0.2

유리                                 0.3

흙,모래                             0.5

잔디흙,자갈                       0.6

돌                                    1.5

코블스톤,가공된나무,나무    2.0

석탄,철,금광석                   3.0

디스펜서                           3.5

판블록                              5.0

옵시디언                           10.0


setLightValue 블럭의 밝기

블록                     Light Level 빛의양 Data Value

햇빛                     15         100% 1.0F

                    15          100% 1.0F

Jack-O-Lantern     15         100% 1.0F

용암                     15         100% 1.0F

라이트 스톤     15         100% 1.0F

잠긴 상자             15         100% 1.0F

횟불                     14         80%         0.9375F

작업중인 화로     13         64%         0.875F

흐린때의 햇빚     12         51.2% 0.8125F

지옥포탈             11         40.96% 0.75F

레드스톤 광석     9                 26.21% 0.625F

레드스톤 토치     9                 26.21% 0.5F

켜진 레드스톤 토치   7                 16.78% 0.5F

달빚                     4                 8.58% 0.3125F

거대버섯             2                 ?         ?

갈색버섯             1                 4.40% 0.125F


setResistance 블럭이 폭발에 저항하는 힘


setStepSound 블럭소리

setStepSound(soundPowderFootstep);

가루밣을때

setStepSound(soundWoodFootstep);

나무소리

setStepSound(soundGravelFootstep);

자갈소리

setStepSound(soundGrassFootstep);

잔디소리

setStepSound(soundStoneFootstep);

돌소리

setStepSound(soundMetalFootstep);

철블록 소리

setStepSound(soundGlassFootstep);

유리소리

setStepSound(soundClothFootstep);

양털소리

setStepSound(soundSandFootstep);

모래소리


setBlockName 블럭의 이름


setLightOpacity 블럭의 빛 차단률


quantityDropped 

:블럭 파괴시 드롭 여부 return 1 = 드롭, 0 = 드롭되지 않음.


if (par2Random.nextInt(10 - par3 * 3) == 0)

:0부터 10 - par3 * 3-1까지의 수중에 랜덤으로 0이 나온다면 실행한다.


아이탬은 shiftedIndex 블록은 BlockID

:드롭하고자하는 아이템의 코드를 불러오려면 아이템명뒤에 붙여줘야한다.


BlockDirt(int i, int j)

:i는 블록아이디, j는 택스쳐


public void onBlockDestroyedByPlayer(World world, int i, int j, int k, int l)

:플레이어가 블럭을 부쉈을경우에 실행한다.


public void onEntityWalking(World world, int i, int j, int k, Entity entity)

:플레이어가 블럭위를 걸어갔을때 실행한다.


world.setBlockWithNotify(i, j+1, k, 10);

:월드에 코드10(용암)블럭을 캐릭터로부터(x축0,y축+1,z축0)에 설치한다.


world.joinEntityInSurroundings(new EntityXPOrb(world,i,j,k,1));

:1만큼의 xp를 월드에 소환한다.


world.joinEntityInSurroundings(new EntityLightningBolt(world,i,j,k));

:번개를 월드에 소환한다.


setLocationAndAngles(i, j+1, k, 0.0F, 0.0F);

:소환할 entity의 위치를 지정. j+1을 한 이유는 해당 블럭에서 소환되므로 한칸 아래로 소환된다.


public void onFallenUpon(World world, int i, int j, int k, Entity entity, float f)

:블럭 위에 떨어지는 모든 entity에 대해서


world.worldInfo.setWorldTime(14000);

:시간을 14000으로 맞춘다.


world.createExplosion(null, i, j, k, 4);

:i는 x, j는 y, k는 z폭팔위치 이고 4는 폭팔 크기입니다. (참고로 TNT는 폭팔크기가 4입니다.)


CraftingManager.java

:조합법을 다루는 클래스


addRecipe(new ItemStack(Item.paper, 3), new Object[] //아이템덩어리 종이3장

                {

                    "###", '#', Item.reed //아이템reed를 하나씩 가로로3개를 놓는 조건

                });


setBlockBounds(0F,0F,0F,0.5F,0.5F,0.5F); //뒤에꼭 f를 붙이세요!(소/대문자 상관없음)

:x부터,y부터,z부터,x까지,y까지,z까지만큼의 크기를 갖는 블럭


public boolean isOpaqueCube(){

return false;

}//블럭 아래가 비치지 않게한다.