몰?.루();
[마인크래프트 모드 개발] 레시피 추가, 음식 추가 본문
간단하게 init 부분에 GameRegistry.addRecipe(new ItemStack(아이템, 크래프팅에서나올개수), new Object[]{"SSS", " S ", "SSS", 'S', Blocks.stone, ....});만 추가해주면 된다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 | package com.toonraon.tistory.myfirstmod; import cpw.mods.fml.common.Mod; import cpw.mods.fml.common.Mod.EventHandler; import cpw.mods.fml.common.event.FMLInitializationEvent; import cpw.mods.fml.common.event.FMLPostInitializationEvent; import cpw.mods.fml.common.event.FMLPreInitializationEvent; import cpw.mods.fml.common.registry.GameRegistry; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.init.Blocks; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; @Mod(modid = "fm", name = "My First Mod", version = "1.0") public class MyFirstMod { public static Item myItem; public static Block myBlock; @EventHandler public void preInit(FMLPreInitializationEvent event) { // Item, Block init and registering // Config handling /* ADD ITEMS */ myItem = new MyItem(); myItem.setUnlocalizedName("MyItem"); // item.MyItem.name myItem.setTextureName("fm:myfirstitem"); GameRegistry.registerItem(myItem, myItem.getUnlocalizedName().substring(5)); // if you don't substring, you should to type /give Player fm:item.MyItem in game /* ADD BLOCKS */ myBlock = new MyBlock(Material.glass).setBlockName("MyBlock").setBlockTextureName("fm:myfirstblock"); // tile.MyBlock.name GameRegistry.registerBlock(myBlock, myBlock.getUnlocalizedName().substring(5)); } @EventHandler public void init(FMLInitializationEvent event) { // Proxy, Tile Entitiy, Entity, GUI and Packet Registering /* ADD RECIPE */ GameRegistry.addRecipe(new ItemStack(myItem), new Object[]{"SSS", // just like crafting GUI "SWS", "SSS", 'S', Blocks.stone, 'W', Blocks.wool}); // note the materials } @EventHandler public void postInit(FMLPostInitializationEvent event) { } } |
정말 쉽다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | @EventHandler public void preInit(FMLPreInitializationEvent event) { // Item, Block init and registering // Config handling /* ADD ITEMS */ myItem = new MyItem(); myItem.setUnlocalizedName("MyItem"); // item.MyItem.name myItem.setTextureName("fm:myfirstitem"); GameRegistry.registerItem(myItem, myItem.getUnlocalizedName().substring(5)); // if you don't substring, you should to type /give Player fm:item.MyItem in game /* ADD BLOCKS */ myBlock = new MyBlock(Material.glass).setBlockName("MyBlock").setBlockTextureName("fm:myfirstblock"); // tile.MyBlock.name GameRegistry.registerBlock(myBlock, myBlock.getUnlocalizedName().substring(5)); /* ADD FOODS */ myFood = new ItemFood(5, 0.5f, true); // 허기, 포만감, 늑대먹이가능여부 myFood.setUnlocalizedName("MyFood"); GameRegistry.registerItem(myFood, myFood.getUnlocalizedName().substring(5)); } |
음식추가 역시 간단하다. 음식도 기본적으로 Item이기 때문에 우선 위에서
1 | public static Item myFood; |
를 선언해주었다. 그 후에 new ItemFood로 등록해주면 된다. 이건 내가 만드는게 아니라 정해져있는 객체이기 때문에 몇몇 파라미터가 존재하는데 첫번째껀 허기(최대 20) 회복량, 그 다음이 포만감(최대 1.0f), 그 다음에 있는 불린이 늑대에게 먹이를 줄 수 있냐 없냐이다.
덩달아 이 아이템을 shapless로 만드는 레시피도 넣었다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | @EventHandler public void init(FMLInitializationEvent event) { // Proxy, Tile Entitiy, Entity, GUI and Packet Registering /* ADD RECIPE */ GameRegistry.addRecipe(new ItemStack(myItem), new Object[]{"SSS", // just like crafting GUI "SWS", "SSS", 'S', Blocks.stone, 'W', Blocks.wool}); // note the materials GameRegistry.addShapelessRecipe(new ItemStack(myFood), new Object[]{Blocks.stone, Blocks.dirt}); } |
대충 써본건데 한 방에 되었다. 돌과 흙으로 만드는 음식이라니... 그다지 맛은 없을 듯.
허기 회복량을 5로 설정해놨으니 딱 2.5칸 찼다. 한 칸이 2니까.
화로 조합법은
1 | GameRegistry.addSmelting(구울, new ItemStack(구워져서나올아이템), 경험치f); |
이다.
'마인크래프트 > 마인크래프트 모딩' 카테고리의 다른 글
[마인크래프트 모드 개발] GUI 버튼 추가 (0) | 2016.12.17 |
---|---|
[마인크래프트 모드 개발] 간단한 GUI 띄우기 (0) | 2016.12.16 |
[마인크래프트 모드 개발] 크리에이티브 탭 추가하기 (0) | 2016.11.11 |
[마인크래프트 모드 개발] 블럭 추가 (0) | 2016.11.10 |
마인크래프트 1.7.10 모딩 시작 (0) | 2016.11.10 |
Comments