# :-: 创造物品栏
这其实很简单,只要在方块(或物品)初始化加上一行代码就行了,不过如果要独立的物品栏,就要写上很多行代码。
**`src/main/java/net/xiaobang/bm/block/BlockRainBow.java`**
~~~
package net.xiaobang.bm.block;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
public class BlockRainBow extends Block
{
public BlockRainBow()
{
super(Material.ground);//
this.setBlockName("bm.rainBow");//设置方块的非本地化名称,bm指mod的id
//如果上面的不行就换成这个this.setUnlocalizedName("bm.rainBow");
this.setHardness(-1);//设置方块的硬度,如黑曜石是50,铁块5,金块3,圆石2,石头1.5,南瓜1,泥土0.5,甘蔗0,基岩-1。
this.setStepSound(soundTypeGrass);//设置走在方块上的响声
this.setResistance(6000000.0F);//设置方块的爆炸抗性,如木头的抗性为4,石头为10,黑曜石为2000,基岩为6000000。
this.setBlockTextureName("bm:rainbow");//设置方块的材质。应该放在src/main/resources/assets/bm/textures/blocks/这个文件夹里面,名称是rainbow.png
//如果上面的不行就 this.setTextureName("bm:rainbow");
//setBlockUnbreakable函数(方法)用于设定方块的硬度为-1,即不可破坏。
//setHarvestLevel函数(方法)用于设定方块的可挖掘等级,如钻石镐是3,铁2,石1,木金0。
//setLightLevel方法用于设定方块的光照,其周围的光照为设定值x15,如岩浆1.0,对应15,红石火把0.5,对应7.5。
//setLightOpacity方法用于设定方块的透光率,数值越大透光率越低,如树叶和蜘蛛网是1,水和冰3。
//setTickRandomly方法用于设定方块是否会接受随机Tick(如农作物)。
this.setCreativeTab(CreativeTabs.tabBlock);//把这个方块放在方块堆里面
}
}
~~~
# :-: 新建一个创造物品栏
Minecraft的所有物品栏都继承了`CreativeTabs`类,我们首先新建包`net.xiaobang.bm.creativetab`,并在其下新建类`CreativeTabsBm`,使其继承`CreativeTabs`类:
**`src/main/java/net/xiaobang/bm/creativetab/CreativeTabsBm.java`**
~~~
package net.xiaobang.bm.creativetab;
import net.xiaobang.bm.block.BlockRainBow;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.item.Item;
public class CreativeTabsBm extends CreativeTabs
{
public CreativeTabsBm()
{
super("bm");//返回modid
}
@Override
public Item getTabIconItem()//返回创造物品栏上显示的物品
{
return new BlockRainBow();
}
}
~~~
然后再在包`net.xiaobang.bm.creativetab`下新建类`CreativeTabsLoader`
**`src/main/java/net/xiaobang/bm/creativetab/CreativeTabsLoader.java`**
~~~
package net.xiaobang.bm.creativetab;
import net.minecraft.creativetab.CreativeTabs;
import cpw.mods.fml.common.event.FMLPreInitializationEvent;
public class CreativeTabsLoader
{
public static CreativeTabs tabBm;
public CreativeTabsLoader(FMLPreInitializationEvent event)
{
tabBm = new CreativeTabsBm();
}
}
~~~
并将物品注册进去:
**`src/main/java/net/xiaobang/bm/block/BlockRainBow.java`**
~~~
package net.xiaobang.bm.block;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
public class BlockRainBow extends Block
{
public BlockRainBow()
{
super(Material.ground);//
this.setBlockName("bm.rainBow");//设置方块的非本地化名称,bm指mod的id
//如果上面的不行就换成这个this.setUnlocalizedName("bm.rainBow");
this.setHardness(-1);//设置方块的硬度,如黑曜石是50,铁块5,金块3,圆石2,石头1.5,南瓜1,泥土0.5,甘蔗0,基岩-1。
this.setStepSound(soundTypeGrass);//设置走在方块上的响声
this.setResistance(6000000.0F);//设置方块的爆炸抗性,如木头的抗性为4,石头为10,黑曜石为2000,基岩为6000000。
this.setBlockTextureName("bm:rainbow");//设置方块的材质。应该放在src/main/resources/assets/bm/textures/blocks/这个文件夹里面,名称是rainbow.png
//如果上面的不行就 this.setTextureName("bm:rainbow");
//setBlockUnbreakable函数(方法)用于设定方块的硬度为-1,即不可破坏。
//setHarvestLevel函数(方法)用于设定方块的可挖掘等级,如钻石镐是3,铁2,石1,木金0。
//setLightLevel方法用于设定方块的光照,其周围的光照为设定值x15,如岩浆1.0,对应15,红石火把0.5,对应7.5。
//setLightOpacity方法用于设定方块的透光率,数值越大透光率越低,如树叶和蜘蛛网是1,水和冰3。
//setTickRandomly方法用于设定方块是否会接受随机Tick(如农作物)。
this.setCreativeTab(CreativeTabsLoader.tabBm);
}
}
~~~
最后在CommonProxy的preInit函数添加以下代码,记得创造物品栏的初始化一定要在物品和方块的初始化之前:
`src/main/java/net/xiaobang/bm/common/CommonProxy.java`(部分)
~~~
public void preInit(FMLPreInitializationEvent event)
{
new CreativeTabsLoader(event);
//new ItemLoader(event);
//new BlockLoader(event);这两个已经不需要了,有更好的方法了
new regAll("bm","net/xiaobang/bm/item/","Item");//一键注册所有物品
new regAll("bm","net/xiaobang/bm/block/","Block");//一键注册所有方块
}
//不要忘了导入CreativeTabsLoader哦
~~~
现在打开游戏,你是不是看到了物品被注册到了新的创造物品栏,方块被注册到了“方块”创造模式物品栏呢~
(以上教程大部分来自zzzz大佬的1.8.9教程)