From f960050f9cc6bcc6fe27289a8a60c4e28d0f1704 Mon Sep 17 00:00:00 2001 From: bdew Date: Tue, 12 Aug 2014 12:41:23 +0300 Subject: [PATCH] Added creative tabs helper --- src/net/bdew/lib/CreativeTabContainer.scala | 24 ++++++++++++++++ src/net/bdew/lib/block/SimpleBlock.scala | 30 ++++++++++++++++++++ src/net/bdew/lib/config/BlockManager.scala | 13 ++++----- src/net/bdew/lib/config/ItemManager.scala | 10 +++---- src/net/bdew/lib/config/MachineManager.scala | 5 ++-- src/net/bdew/lib/machine/Machine.scala | 4 ++- 6 files changed, 70 insertions(+), 16 deletions(-) create mode 100644 src/net/bdew/lib/CreativeTabContainer.scala create mode 100644 src/net/bdew/lib/block/SimpleBlock.scala diff --git a/src/net/bdew/lib/CreativeTabContainer.scala b/src/net/bdew/lib/CreativeTabContainer.scala new file mode 100644 index 0000000..a85b309 --- /dev/null +++ b/src/net/bdew/lib/CreativeTabContainer.scala @@ -0,0 +1,24 @@ +/* + * Copyright (c) bdew, 2013 - 2014 + * https://github.com/bdew/bdlib + * + * This mod is distributed under the terms of the Minecraft Mod Public + * License 1.0, or MMPL. Please check the contents of the license located in + * https://raw.github.com/bdew/bdlib/master/MMPL-1.0.txt + */ + +package net.bdew.lib + +import net.minecraft.creativetab.CreativeTabs +import net.minecraft.item.Item + +class CreativeTabContainer { + + class Tab(name: String, item: => Item) extends CreativeTabs(name) { + override def getTabIconItem = item + } + + BdLib.logInfo("Loaded creative tabs for %s", Misc.getActiveModId) + + def init() {} +} diff --git a/src/net/bdew/lib/block/SimpleBlock.scala b/src/net/bdew/lib/block/SimpleBlock.scala new file mode 100644 index 0000000..68985f5 --- /dev/null +++ b/src/net/bdew/lib/block/SimpleBlock.scala @@ -0,0 +1,30 @@ +/* + * Copyright (c) bdew, 2013 - 2014 + * https://github.com/bdew/bdlib + * + * This mod is distributed under the terms of the Minecraft Mod Public + * License 1.0, or MMPL. Please check the contents of the license located in + * https://raw.github.com/bdew/bdlib/master/MMPL-1.0.txt + */ + +package net.bdew.lib.block + +import cpw.mods.fml.relauncher.{Side, SideOnly} +import net.bdew.lib.Misc +import net.minecraft.block.Block +import net.minecraft.block.material.Material +import net.minecraft.client.renderer.texture.IIconRegister + +trait NamedBlock extends Block { + def name: String +} + +class SimpleBlock(val name: String, material: Material) extends Block(material) with NamedBlock { + val modId = Misc.getActiveModId + setBlockName(modId + "." + name) + + @SideOnly(Side.CLIENT) + override def registerBlockIcons(reg: IIconRegister) { + blockIcon = reg.registerIcon(modId + ":" + name.toLowerCase) + } +} diff --git a/src/net/bdew/lib/config/BlockManager.scala b/src/net/bdew/lib/config/BlockManager.scala index 9224a37..c381230 100644 --- a/src/net/bdew/lib/config/BlockManager.scala +++ b/src/net/bdew/lib/config/BlockManager.scala @@ -11,20 +11,19 @@ package net.bdew.lib.config import cpw.mods.fml.common.registry.GameRegistry import net.bdew.lib.Misc -import net.bdew.lib.block.HasTE +import net.bdew.lib.block.{HasTE, SimpleBlock} import net.minecraft.block.Block +import net.minecraft.creativetab.CreativeTabs import net.minecraft.item.ItemStack -class BlockManager() { - - def regBlockCls[T <: Block](blockCls: Class[T], name: String, addStack: Boolean = false): T = { - val block = blockCls.newInstance() - regBlock[T](block, name, addStack) - } +class BlockManager(creativeTab: CreativeTabs) { + def regBlock[T <: SimpleBlock](block: T): T = regBlock(block, block.name) def regBlock[T <: Block](block: T, name: String, addStack: Boolean = false): T = { GameRegistry.registerBlock(block, name) + block.setCreativeTab(creativeTab) + if (addStack) GameRegistry.registerCustomItemStack(name, new ItemStack(block)) diff --git a/src/net/bdew/lib/config/ItemManager.scala b/src/net/bdew/lib/config/ItemManager.scala index 40cc96a..34b46e2 100644 --- a/src/net/bdew/lib/config/ItemManager.scala +++ b/src/net/bdew/lib/config/ItemManager.scala @@ -11,23 +11,21 @@ package net.bdew.lib.config import cpw.mods.fml.common.registry.GameRegistry import net.bdew.lib.items.{NamedItem, SimpleItem} +import net.minecraft.creativetab.CreativeTabs import net.minecraft.item.{Item, ItemStack} -class ItemManager() { +class ItemManager(creativeTab: CreativeTabs) { def regSimpleItem(name: String): SimpleItem = regItem(new SimpleItem(name), name) def regItem[T <: NamedItem](item: T): T = regItem[T](item, item.name) - def regItemCls[T <: Item](itemCls: Class[T], name: String, addStack: Boolean = false): T = { - val item = itemCls.newInstance() - regItem[T](item, name, addStack) - } - def regItem[T <: Item](item: T, name: String, addStack: Boolean = false): T = { GameRegistry.registerItem(item, name) + item.setCreativeTab(creativeTab) if (addStack) GameRegistry.registerCustomItemStack(name, new ItemStack(item)) return item } + def load() {} } diff --git a/src/net/bdew/lib/config/MachineManager.scala b/src/net/bdew/lib/config/MachineManager.scala index 007729e..891353d 100644 --- a/src/net/bdew/lib/config/MachineManager.scala +++ b/src/net/bdew/lib/config/MachineManager.scala @@ -12,13 +12,14 @@ package net.bdew.lib.config import net.bdew.lib.gui.{GuiHandler, GuiProvider} import net.bdew.lib.machine.Machine import net.bdew.lib.recipes.gencfg.ConfigSection +import net.minecraft.creativetab.CreativeTabs -class MachineManager(val tuning: ConfigSection, guiHandler: GuiHandler) { +class MachineManager(val tuning: ConfigSection, guiHandler: GuiHandler, creativeTab: CreativeTabs) { def registerMachine[R <: Machine[_]](machine: R): R = { machine.tuning = tuning.getSection(machine.name) if (machine.tuning.getBoolean("Enabled")) { machine.enabled = true - machine.regBlock() + machine.regBlock(creativeTab) if (machine.isInstanceOf[GuiProvider]) guiHandler.register(machine.asInstanceOf[GuiProvider]) } diff --git a/src/net/bdew/lib/machine/Machine.scala b/src/net/bdew/lib/machine/Machine.scala index d26922f..0609614 100644 --- a/src/net/bdew/lib/machine/Machine.scala +++ b/src/net/bdew/lib/machine/Machine.scala @@ -14,6 +14,7 @@ import net.bdew.lib.Misc import net.bdew.lib.block.HasTE import net.bdew.lib.recipes.gencfg.ConfigSection import net.minecraft.block.Block +import net.minecraft.creativetab.CreativeTabs abstract class Machine[T <: Block](val name: String, blockConstruct: => T) { var block: T = null.asInstanceOf[T] @@ -21,9 +22,10 @@ abstract class Machine[T <: Block](val name: String, blockConstruct: => T) { var enabled = false val modId = Misc.getActiveModId - def regBlock() { + def regBlock(creativeTab: CreativeTabs) { block = blockConstruct GameRegistry.registerBlock(block, name) + block.setCreativeTab(creativeTab) if (block.isInstanceOf[HasTE[_]]) { GameRegistry.registerTileEntity(block.asInstanceOf[HasTE[_]].TEClass, "%s.%s".format(modId, name)) }