몰?.루();

[마인크래프트 모드 개발] 레시피 추가, 음식 추가 본문

마인크래프트/마인크래프트 모딩

[마인크래프트 모드 개발] 레시피 추가, 음식 추가

toonraon 2016. 11. 11. 12:08

간단하게 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);


이다.

Comments