몰?.루();

[마인크래프트 모드 개발] 크리에이티브 탭 추가하기 본문

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

[마인크래프트 모드 개발] 크리에이티브 탭 추가하기

toonraon 2016. 11. 11. 12:45

좀 귀찮다.


 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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
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.creativetab.CreativeTabs;
import net.minecraft.init.Blocks;
import net.minecraft.item.Item;
import net.minecraft.item.ItemFood;
import net.minecraft.item.ItemStack;

@Mod(modid = "fm", name = "My First Mod", version = "1.0")
public class MyFirstMod {
	
	public static Item myItem;
	public static Item myFood;
	
	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));
		
		/* ADD FOODS */
		myFood = new ItemFood(5, 0.5f, true); // 허기, 포만감, 늑대먹이가능여부
		myFood.setUnlocalizedName("MyFood");
		GameRegistry.registerItem(myFood, myFood.getUnlocalizedName().substring(5));
		
		/* ADD ITEMS TO CREATIVE TAB */
		myItem.setCreativeTab(tabMyFirstMod);
		myBlock.setCreativeTab(tabMyFirstMod);
		myFood.setCreativeTab(tabMyFirstMod);
	}
	
	@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});
		
		
		
	}
	
	@EventHandler
	public void postInit(FMLPostInitializationEvent event) {
		
		
	}
	
	/* ADD CREATIVE TAB */
	public static CreativeTabs tabMyFirstMod = new CreativeTabs("tabMyFirstMod") {
		
		@Override
		public Item getTabIconItem() {
			return new ItemStack(myItem).getItem();
		}
	};
}


각각 아이템을 setCreativeTab해서 탭에 넣어줘야하고

아래엔 public static CreativeTab으로 탭을 만들어줘야한다.

getTabIconItem()이라는 오버라이딩된 함수를 이용하여 탭 아이콘을 바꿀 수 있다. 여기서 끝이 아니다.

그냥 이대로 하고 게임에 들어가면 탭이 ItemGroup.tabMyFirstMod라고 되어있다.

역시나 lang 파일에서 바꿀 수 있다.


itemGroup.tabMyFirstMod=My First Mod


이렇게하면 탭에 마우스를 가져다대면 My First Mod라고 뜬다.

Comments