showing stored energy in robots in their tooltip; storing energy as int (truncating); fixed item tag creation at multiple occasions: new NBTTagCompound("tag") instead of new NBTTagCompound(), otherwise loading (which would automatically add the name) would lead to "incompatible" stacks.

This commit is contained in:
Florian Nücke 2013-11-28 17:13:23 +01:00
parent 4a6174456f
commit 1fdb937b57
19 changed files with 42 additions and 25 deletions

View File

@ -62,6 +62,7 @@ oc:tooltip.RedstoneCard=Erlaubt das Lesen und Ausgeben von Redstonesignalen um d
oc:tooltip.RedstoneCard.RedLogic=RedLogic wird §aunterstützt§7. oc:tooltip.RedstoneCard.RedLogic=RedLogic wird §aunterstützt§7.
oc:tooltip.RedstoneCard.RedNet=RedNet wird §aunterstützt§7. oc:tooltip.RedstoneCard.RedNet=RedNet wird §aunterstützt§7.
oc:tooltip.Robot=Im Gegensatz zu normalen Computern können sich §mTurtles§r§7 Roboter in der Welt bewegen und ähnlich wie Spieler mit der Welt interagieren. Sie können jedoch §onicht§r§7 mit externen Komponenten interagieren! oc:tooltip.Robot=Im Gegensatz zu normalen Computern können sich §mTurtles§r§7 Roboter in der Welt bewegen und ähnlich wie Spieler mit der Welt interagieren. Sie können jedoch §onicht§r§7 mit externen Komponenten interagieren!
oc:tooltip.Robot_StoredEnergy=§fGespeicherte Energie§7: §a%s§7.
oc:tooltip.Router=Erlaubt es mehrere Netzwerke miteinander zu verbinden. Leitet ausschließlich Netzwerknachrichten weiter, Komponenten "hinter" dem Router sind nicht sichtbar. Nützlich um Netzwerke zu trennen, jedoch nach wie vor Kommunikation zwischen den Netzwerken zu erlauben, z.b. mittels Netzwerkkarten. oc:tooltip.Router=Erlaubt es mehrere Netzwerke miteinander zu verbinden. Leitet ausschließlich Netzwerknachrichten weiter, Komponenten "hinter" dem Router sind nicht sichtbar. Nützlich um Netzwerke zu trennen, jedoch nach wie vor Kommunikation zwischen den Netzwerken zu erlauben, z.b. mittels Netzwerkkarten.
oc:tooltip.Screen=Zeigt Text an, gesteuert von Grafikkarten in Computern.[nl] Höchstauflösung: §f%sx%s§7.[nl] Maximale Farbtiefe: §f%s§7. oc:tooltip.Screen=Zeigt Text an, gesteuert von Grafikkarten in Computern.[nl] Höchstauflösung: §f%sx%s§7.[nl] Maximale Farbtiefe: §f%s§7.
oc:tooltip.TooLong=Shift gedrückt halten für mehr Infos. oc:tooltip.TooLong=Shift gedrückt halten für mehr Infos.

View File

@ -66,6 +66,8 @@ oc:tooltip.RedstoneCard=Allows reading and emitting redstone signals around the
oc:tooltip.RedstoneCard.RedLogic=RedLogic is §asupported§7. oc:tooltip.RedstoneCard.RedLogic=RedLogic is §asupported§7.
oc:tooltip.RedstoneCard.RedNet=RedNet is §asupported§7. oc:tooltip.RedstoneCard.RedNet=RedNet is §asupported§7.
oc:tooltip.Robot=Unlike computers, §mturtles§r§7 robots can move around and interact with the world much like a player can. They can §onot§r§7 interact with external components, however! oc:tooltip.Robot=Unlike computers, §mturtles§r§7 robots can move around and interact with the world much like a player can. They can §onot§r§7 interact with external components, however!
# The underscore makes sure this isn't hidden with the rest of the tooltip.
oc:tooltip.Robot_StoredEnergy=§fStored energy§7: §a%s§7.
oc:tooltip.Router=Allows connecting different networks to each other. Only network messages will be passed along, components will not be visible through this. Use this to separate networks while still allowing communication using Network Cards, for example. oc:tooltip.Router=Allows connecting different networks to each other. Only network messages will be passed along, components will not be visible through this. Use this to separate networks while still allowing communication using Network Cards, for example.
oc:tooltip.Screen=Display text, controlled by a Graphics Card in a Computer.[nl] Maximum resolution: §f%sx%s§7.[nl] Maximum color depth: §f%s§7. oc:tooltip.Screen=Display text, controlled by a Graphics Card in a Computer.[nl] Maximum resolution: §f%sx%s§7.[nl] Maximum color depth: §f%s§7.
oc:tooltip.TooLong=Hold shift for a detailed tooltip. oc:tooltip.TooLong=Hold shift for a detailed tooltip.

View File

@ -85,7 +85,7 @@ class PacketHandler extends CommonPacketHandler {
val stack = t.getStackInSlot(slot) val stack = t.getStackInSlot(slot)
if (stack != null && stack.itemID == id && stack.getItemDamage == damage) { if (stack != null && stack.itemID == id && stack.getItemDamage == damage) {
if (!stack.hasTagCompound) { if (!stack.hasTagCompound) {
stack.setTagCompound(new NBTTagCompound()) stack.setTagCompound(new NBTTagCompound("tag"))
} }
val nbt = stack.getTagCompound val nbt = stack.getTagCompound
nbt.setCompoundTag(Settings.namespace + "data", { nbt.setCompoundTag(Settings.namespace + "data", {

View File

@ -6,6 +6,7 @@ import li.cil.oc.common.tileentity
import li.cil.oc.util.Tooltip import li.cil.oc.util.Tooltip
import net.minecraft.client.renderer.texture.IconRegister import net.minecraft.client.renderer.texture.IconRegister
import net.minecraft.entity.player.EntityPlayer import net.minecraft.entity.player.EntityPlayer
import net.minecraft.item.ItemStack
import net.minecraft.util.Icon import net.minecraft.util.Icon
import net.minecraft.world.World import net.minecraft.world.World
import net.minecraftforge.common.ForgeDirection import net.minecraftforge.common.ForgeDirection
@ -17,7 +18,7 @@ class Adapter(val parent: SimpleDelegator) extends SimpleDelegate {
// ----------------------------------------------------------------------- // // ----------------------------------------------------------------------- //
override def addInformation(player: EntityPlayer, tooltip: util.List[String], advanced: Boolean) { override def addInformation(stack: ItemStack, player: EntityPlayer, tooltip: util.List[String], advanced: Boolean) {
tooltip.addAll(Tooltip.get(unlocalizedName)) tooltip.addAll(Tooltip.get(unlocalizedName))
} }

View File

@ -6,6 +6,7 @@ import li.cil.oc.api.network.{SidedEnvironment, Environment}
import li.cil.oc.common.tileentity import li.cil.oc.common.tileentity
import li.cil.oc.util.Tooltip import li.cil.oc.util.Tooltip
import net.minecraft.entity.player.EntityPlayer import net.minecraft.entity.player.EntityPlayer
import net.minecraft.item.ItemStack
import net.minecraft.util.AxisAlignedBB import net.minecraft.util.AxisAlignedBB
import net.minecraft.world.{IBlockAccess, World} import net.minecraft.world.{IBlockAccess, World}
import net.minecraftforge.common.ForgeDirection import net.minecraftforge.common.ForgeDirection
@ -15,7 +16,7 @@ class Cable(val parent: SpecialDelegator) extends SpecialDelegate {
// ----------------------------------------------------------------------- // // ----------------------------------------------------------------------- //
override def addInformation(player: EntityPlayer, tooltip: util.List[String], advanced: Boolean) { override def addInformation(stack: ItemStack, player: EntityPlayer, tooltip: util.List[String], advanced: Boolean) {
tooltip.addAll(Tooltip.get(unlocalizedName)) tooltip.addAll(Tooltip.get(unlocalizedName))
} }

View File

@ -6,6 +6,7 @@ import li.cil.oc.util.Tooltip
import li.cil.oc.{api, Settings} import li.cil.oc.{api, Settings}
import net.minecraft.client.renderer.texture.IconRegister import net.minecraft.client.renderer.texture.IconRegister
import net.minecraft.entity.player.EntityPlayer import net.minecraft.entity.player.EntityPlayer
import net.minecraft.item.ItemStack
import net.minecraft.util.Icon import net.minecraft.util.Icon
import net.minecraft.world.{World, IBlockAccess} import net.minecraft.world.{World, IBlockAccess}
import net.minecraftforge.common.ForgeDirection import net.minecraftforge.common.ForgeDirection
@ -17,7 +18,7 @@ class Capacitor(val parent: SimpleDelegator) extends SimpleDelegate {
// ----------------------------------------------------------------------- // // ----------------------------------------------------------------------- //
override def addInformation(player: EntityPlayer, tooltip: util.List[String], advanced: Boolean) { override def addInformation(stack: ItemStack, player: EntityPlayer, tooltip: util.List[String], advanced: Boolean) {
tooltip.addAll(Tooltip.get(unlocalizedName)) tooltip.addAll(Tooltip.get(unlocalizedName))
} }

View File

@ -6,6 +6,7 @@ import li.cil.oc.util.Tooltip
import li.cil.oc.{OpenComputers, Settings} import li.cil.oc.{OpenComputers, Settings}
import net.minecraft.client.renderer.texture.IconRegister import net.minecraft.client.renderer.texture.IconRegister
import net.minecraft.entity.player.EntityPlayer import net.minecraft.entity.player.EntityPlayer
import net.minecraft.item.ItemStack
import net.minecraft.util.Icon import net.minecraft.util.Icon
import net.minecraft.world.IBlockAccess import net.minecraft.world.IBlockAccess
import net.minecraft.world.World import net.minecraft.world.World
@ -15,7 +16,7 @@ abstract class Case(val parent: SimpleDelegator) extends Computer with SimpleDel
def tier: Int def tier: Int
override def addInformation(player: EntityPlayer, tooltip: util.List[String], advanced: Boolean) { override def addInformation(stack: ItemStack, player: EntityPlayer, tooltip: util.List[String], advanced: Boolean) {
val slots = tier match { val slots = tier match {
case 0 => "2/1/1" case 0 => "2/1/1"
case 1 => "2/2/2" case 1 => "2/2/2"

View File

@ -6,6 +6,7 @@ import li.cil.oc.common.tileentity
import li.cil.oc.util.Tooltip import li.cil.oc.util.Tooltip
import net.minecraft.client.renderer.texture.IconRegister import net.minecraft.client.renderer.texture.IconRegister
import net.minecraft.entity.player.EntityPlayer import net.minecraft.entity.player.EntityPlayer
import net.minecraft.item.ItemStack
import net.minecraft.util.Icon import net.minecraft.util.Icon
import net.minecraft.world.{IBlockAccess, World} import net.minecraft.world.{IBlockAccess, World}
import net.minecraftforge.common.ForgeDirection import net.minecraftforge.common.ForgeDirection
@ -15,7 +16,7 @@ class Charger(val parent: SimpleDelegator) extends SimpleDelegate {
private val icons = Array.fill[Icon](6)(null) private val icons = Array.fill[Icon](6)(null)
override def addInformation(player: EntityPlayer, tooltip: util.List[String], advanced: Boolean) { override def addInformation(stack: ItemStack, player: EntityPlayer, tooltip: util.List[String], advanced: Boolean) {
tooltip.addAll(Tooltip.get(unlocalizedName)) tooltip.addAll(Tooltip.get(unlocalizedName))
} }

View File

@ -31,7 +31,7 @@ trait Delegate {
// Block // Block
// ----------------------------------------------------------------------- // // ----------------------------------------------------------------------- //
def addInformation(player: EntityPlayer, tooltip: java.util.List[String], advanced: Boolean) {} def addInformation(stack: ItemStack, player: EntityPlayer, tooltip: java.util.List[String], advanced: Boolean) {}
def breakBlock(world: World, x: Int, y: Int, z: Int, blockId: Int) {} def breakBlock(world: World, x: Int, y: Int, z: Int, blockId: Int) {}

View File

@ -102,9 +102,9 @@ class Delegator[Child <: Delegate](id: Int) extends Block(id, Material.iron) {
// Block // Block
// ----------------------------------------------------------------------- // // ----------------------------------------------------------------------- //
def addInformation(metadata: Int, player: EntityPlayer, tooltip: java.util.List[String], advanced: Boolean) { def addInformation(metadata: Int, stack: ItemStack, player: EntityPlayer, tooltip: java.util.List[String], advanced: Boolean) {
subBlock(metadata) match { subBlock(metadata) match {
case Some(subBlock) => subBlock.addInformation(player, tooltip, advanced) case Some(subBlock) => subBlock.addInformation(stack, player, tooltip, advanced)
case _ => case _ =>
} }
} }

View File

@ -7,6 +7,7 @@ import li.cil.oc.util.Tooltip
import li.cil.oc.{api, OpenComputers, Settings} import li.cil.oc.{api, OpenComputers, Settings}
import net.minecraft.client.renderer.texture.IconRegister import net.minecraft.client.renderer.texture.IconRegister
import net.minecraft.entity.player.EntityPlayer import net.minecraft.entity.player.EntityPlayer
import net.minecraft.item.ItemStack
import net.minecraft.util.Icon import net.minecraft.util.Icon
import net.minecraft.world.World import net.minecraft.world.World
import net.minecraftforge.common.ForgeDirection import net.minecraftforge.common.ForgeDirection
@ -18,7 +19,7 @@ class DiskDrive(val parent: SimpleDelegator) extends SimpleDelegate {
// ----------------------------------------------------------------------- // // ----------------------------------------------------------------------- //
override def addInformation(player: EntityPlayer, tooltip: util.List[String], advanced: Boolean) { override def addInformation(stack: ItemStack, player: EntityPlayer, tooltip: util.List[String], advanced: Boolean) {
tooltip.addAll(Tooltip.get(unlocalizedName)) tooltip.addAll(Tooltip.get(unlocalizedName))
if (Loader.isModLoaded("ComputerCraft")) { if (Loader.isModLoaded("ComputerCraft")) {
tooltip.addAll(Tooltip.get(unlocalizedName + ".CC")) tooltip.addAll(Tooltip.get(unlocalizedName + ".CC"))

View File

@ -16,7 +16,7 @@ class Item(id: Int) extends ItemBlock(id) {
override def addInformation(stack: ItemStack, player: EntityPlayer, tooltip: util.List[_], advanced: Boolean) { override def addInformation(stack: ItemStack, player: EntityPlayer, tooltip: util.List[_], advanced: Boolean) {
super.addInformation(stack, player, tooltip, advanced) super.addInformation(stack, player, tooltip, advanced)
Block.blocksList(getBlockID) match { Block.blocksList(getBlockID) match {
case delegator: Delegator[_] => delegator.addInformation(getMetadata(stack.getItemDamage), player, tooltip.asInstanceOf[util.List[String]], advanced) case delegator: Delegator[_] => delegator.addInformation(getMetadata(stack.getItemDamage), stack, player, tooltip.asInstanceOf[util.List[String]], advanced)
case _ => case _ =>
} }
} }

View File

@ -7,6 +7,7 @@ import li.cil.oc.common.tileentity
import li.cil.oc.util.Tooltip import li.cil.oc.util.Tooltip
import net.minecraft.client.renderer.texture.IconRegister import net.minecraft.client.renderer.texture.IconRegister
import net.minecraft.entity.player.EntityPlayer import net.minecraft.entity.player.EntityPlayer
import net.minecraft.item.ItemStack
import net.minecraft.util.{AxisAlignedBB, Icon} import net.minecraft.util.{AxisAlignedBB, Icon}
import net.minecraft.world.{IBlockAccess, World} import net.minecraft.world.{IBlockAccess, World}
import net.minecraftforge.common.ForgeDirection import net.minecraftforge.common.ForgeDirection
@ -17,7 +18,7 @@ class Keyboard(val parent: SpecialDelegator) extends SpecialDelegate {
var icon: Icon = null var icon: Icon = null
override def addInformation(player: EntityPlayer, tooltip: util.List[String], advanced: Boolean) { override def addInformation(stack: ItemStack, player: EntityPlayer, tooltip: util.List[String], advanced: Boolean) {
tooltip.addAll(Tooltip.get(unlocalizedName)) tooltip.addAll(Tooltip.get(unlocalizedName))
} }

View File

@ -1,15 +1,16 @@
package li.cil.oc.common.block package li.cil.oc.common.block
import cpw.mods.fml.common.Loader
import java.util import java.util
import li.cil.oc.Settings import li.cil.oc.Settings
import li.cil.oc.common.tileentity import li.cil.oc.common.tileentity
import li.cil.oc.util.Tooltip import li.cil.oc.util.Tooltip
import net.minecraft.client.renderer.texture.IconRegister import net.minecraft.client.renderer.texture.IconRegister
import net.minecraft.entity.player.EntityPlayer import net.minecraft.entity.player.EntityPlayer
import net.minecraft.item.ItemStack
import net.minecraft.util.Icon import net.minecraft.util.Icon
import net.minecraft.world.World import net.minecraft.world.World
import net.minecraftforge.common.ForgeDirection import net.minecraftforge.common.ForgeDirection
import cpw.mods.fml.common.Loader
class PowerConverter(val parent: SimpleDelegator) extends SimpleDelegate { class PowerConverter(val parent: SimpleDelegator) extends SimpleDelegate {
val unlocalizedName = "PowerConverter" val unlocalizedName = "PowerConverter"
@ -18,7 +19,7 @@ class PowerConverter(val parent: SimpleDelegator) extends SimpleDelegate {
// ----------------------------------------------------------------------- // // ----------------------------------------------------------------------- //
override def addInformation(player: EntityPlayer, tooltip: util.List[String], advanced: Boolean) { override def addInformation(stack: ItemStack, player: EntityPlayer, tooltip: util.List[String], advanced: Boolean) {
tooltip.addAll(Tooltip.get(unlocalizedName)) tooltip.addAll(Tooltip.get(unlocalizedName))
if (Loader.isModLoaded("IC2")) { if (Loader.isModLoaded("IC2")) {
val ratio = Settings.get.ratioIndustrialCraft2 val ratio = Settings.get.ratioIndustrialCraft2

View File

@ -6,6 +6,7 @@ import li.cil.oc.common.tileentity
import li.cil.oc.util.Tooltip import li.cil.oc.util.Tooltip
import net.minecraft.client.renderer.texture.IconRegister import net.minecraft.client.renderer.texture.IconRegister
import net.minecraft.entity.player.EntityPlayer import net.minecraft.entity.player.EntityPlayer
import net.minecraft.item.ItemStack
import net.minecraft.util.Icon import net.minecraft.util.Icon
import net.minecraft.world.{IBlockAccess, World} import net.minecraft.world.{IBlockAccess, World}
import net.minecraftforge.common.ForgeDirection import net.minecraftforge.common.ForgeDirection
@ -17,7 +18,7 @@ class PowerDistributor(val parent: SimpleDelegator) extends SimpleDelegate {
// ----------------------------------------------------------------------- // // ----------------------------------------------------------------------- //
override def addInformation(player: EntityPlayer, tooltip: util.List[String], advanced: Boolean) { override def addInformation(stack: ItemStack, player: EntityPlayer, tooltip: util.List[String], advanced: Boolean) {
tooltip.addAll(Tooltip.get(unlocalizedName)) tooltip.addAll(Tooltip.get(unlocalizedName))
} }

View File

@ -22,7 +22,10 @@ class RobotProxy(val parent: SpecialDelegator) extends Computer with SpecialDele
// ----------------------------------------------------------------------- // // ----------------------------------------------------------------------- //
override def addInformation(player: EntityPlayer, tooltip: util.List[String], advanced: Boolean) { override def addInformation(stack: ItemStack, player: EntityPlayer, tooltip: util.List[String], advanced: Boolean) {
if (stack.hasTagCompound && stack.getTagCompound.hasKey(Settings.namespace + "storedEnergy")) {
tooltip.addAll(Tooltip.get(unlocalizedName + "_StoredEnergy", stack.getTagCompound.getInteger(Settings.namespace + "storedEnergy")))
}
tooltip.addAll(Tooltip.get(unlocalizedName)) tooltip.addAll(Tooltip.get(unlocalizedName))
} }
@ -95,19 +98,19 @@ class RobotProxy(val parent: SpecialDelegator) extends Computer with SpecialDele
case Some((proxy, owner)) => case Some((proxy, owner)) =>
proxy.robot.owner = owner proxy.robot.owner = owner
if (stack.hasTagCompound) { if (stack.hasTagCompound) {
proxy.robot.battery.changeBuffer(stack.getTagCompound.getDouble(Settings.namespace + "storedEnergy")) proxy.robot.battery.changeBuffer(stack.getTagCompound.getInteger(Settings.namespace + "storedEnergy"))
} }
case _ => case _ =>
} }
} }
override def onBlockRemovedBy(world: World, x: Int, y: Int, z: Int, player: EntityPlayer) = { override def onBlockRemovedBy(world: World, x: Int, y: Int, z: Int, player: EntityPlayer) = {
world.getBlockTileEntity(x, y, z) match { if (!world.isRemote) world.getBlockTileEntity(x, y, z) match {
case proxy: tileentity.RobotProxy if !player.capabilities.isCreativeMode || proxy.globalBuffer > 0 => case proxy: tileentity.RobotProxy if !player.capabilities.isCreativeMode || proxy.globalBuffer > 0 =>
val stack = createItemStack() val stack = createItemStack()
if (proxy.globalBuffer > 0) { if (proxy.globalBuffer > 1) {
stack.setTagCompound(new NBTTagCompound()) stack.setTagCompound(new NBTTagCompound("tag"))
stack.getTagCompound.setDouble(Settings.namespace + "storedEnergy", proxy.globalBuffer) stack.getTagCompound.setInteger(Settings.namespace + "storedEnergy", proxy.globalBuffer.toInt)
} }
parent.dropBlockAsItem(world, x, y, z, stack) parent.dropBlockAsItem(world, x, y, z, stack)
case _ => case _ =>

View File

@ -7,6 +7,7 @@ import li.cil.oc.common.tileentity
import li.cil.oc.util.Tooltip import li.cil.oc.util.Tooltip
import net.minecraft.client.renderer.texture.IconRegister import net.minecraft.client.renderer.texture.IconRegister
import net.minecraft.entity.player.EntityPlayer import net.minecraft.entity.player.EntityPlayer
import net.minecraft.item.ItemStack
import net.minecraft.util.Icon import net.minecraft.util.Icon
import net.minecraft.world.World import net.minecraft.world.World
import net.minecraftforge.common.ForgeDirection import net.minecraftforge.common.ForgeDirection
@ -18,7 +19,7 @@ class Router(val parent: SimpleDelegator) extends SimpleDelegate {
// ----------------------------------------------------------------------- // // ----------------------------------------------------------------------- //
override def addInformation(player: EntityPlayer, tooltip: util.List[String], advanced: Boolean) { override def addInformation(stack: ItemStack, player: EntityPlayer, tooltip: util.List[String], advanced: Boolean) {
tooltip.addAll(Tooltip.get(unlocalizedName)) tooltip.addAll(Tooltip.get(unlocalizedName))
} }

View File

@ -7,6 +7,7 @@ import li.cil.oc.util.{PackedColor, Tooltip}
import li.cil.oc.{Settings, OpenComputers} import li.cil.oc.{Settings, OpenComputers}
import net.minecraft.client.renderer.texture.IconRegister import net.minecraft.client.renderer.texture.IconRegister
import net.minecraft.entity.player.EntityPlayer import net.minecraft.entity.player.EntityPlayer
import net.minecraft.item.ItemStack
import net.minecraft.util.Icon import net.minecraft.util.Icon
import net.minecraft.world.IBlockAccess import net.minecraft.world.IBlockAccess
import net.minecraft.world.World import net.minecraft.world.World
@ -17,7 +18,7 @@ abstract class Screen(val parent: SimpleDelegator) extends SimpleDelegate {
def tier: Int def tier: Int
override def addInformation(player: EntityPlayer, tooltip: util.List[String], advanced: Boolean) { override def addInformation(stack: ItemStack, player: EntityPlayer, tooltip: util.List[String], advanced: Boolean) {
val (w, h) = Settings.screenResolutionsByTier(tier) val (w, h) = Settings.screenResolutionsByTier(tier)
val depth = PackedColor.Depth.bits(Settings.screenDepthsByTier(tier)) val depth = PackedColor.Depth.bits(Settings.screenDepthsByTier(tier))
tooltip.addAll(Tooltip.get("Screen", w, h, depth)) tooltip.addAll(Tooltip.get("Screen", w, h, depth))

View File

@ -8,7 +8,7 @@ import net.minecraft.nbt.NBTTagCompound
trait Item extends api.driver.Item { trait Item extends api.driver.Item {
def nbt(stack: ItemStack) = { def nbt(stack: ItemStack) = {
if (!stack.hasTagCompound) { if (!stack.hasTagCompound) {
stack.setTagCompound(new NBTTagCompound()) stack.setTagCompound(new NBTTagCompound("tag"))
} }
val nbt = stack.getTagCompound val nbt = stack.getTagCompound
if (!nbt.hasKey(Settings.namespace + "data")) { if (!nbt.hasKey(Settings.namespace + "data")) {