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.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_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.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.

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.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!
# 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.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.

View File

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

View File

@ -6,6 +6,7 @@ import li.cil.oc.common.tileentity
import li.cil.oc.util.Tooltip
import net.minecraft.client.renderer.texture.IconRegister
import net.minecraft.entity.player.EntityPlayer
import net.minecraft.item.ItemStack
import net.minecraft.util.Icon
import net.minecraft.world.World
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))
}

View File

@ -6,6 +6,7 @@ import li.cil.oc.api.network.{SidedEnvironment, Environment}
import li.cil.oc.common.tileentity
import li.cil.oc.util.Tooltip
import net.minecraft.entity.player.EntityPlayer
import net.minecraft.item.ItemStack
import net.minecraft.util.AxisAlignedBB
import net.minecraft.world.{IBlockAccess, World}
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))
}

View File

@ -6,6 +6,7 @@ import li.cil.oc.util.Tooltip
import li.cil.oc.{api, Settings}
import net.minecraft.client.renderer.texture.IconRegister
import net.minecraft.entity.player.EntityPlayer
import net.minecraft.item.ItemStack
import net.minecraft.util.Icon
import net.minecraft.world.{World, IBlockAccess}
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))
}

View File

@ -6,6 +6,7 @@ import li.cil.oc.util.Tooltip
import li.cil.oc.{OpenComputers, Settings}
import net.minecraft.client.renderer.texture.IconRegister
import net.minecraft.entity.player.EntityPlayer
import net.minecraft.item.ItemStack
import net.minecraft.util.Icon
import net.minecraft.world.IBlockAccess
import net.minecraft.world.World
@ -15,7 +16,7 @@ abstract class Case(val parent: SimpleDelegator) extends Computer with SimpleDel
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 {
case 0 => "2/1/1"
case 1 => "2/2/2"

View File

@ -6,6 +6,7 @@ import li.cil.oc.common.tileentity
import li.cil.oc.util.Tooltip
import net.minecraft.client.renderer.texture.IconRegister
import net.minecraft.entity.player.EntityPlayer
import net.minecraft.item.ItemStack
import net.minecraft.util.Icon
import net.minecraft.world.{IBlockAccess, World}
import net.minecraftforge.common.ForgeDirection
@ -15,7 +16,7 @@ class Charger(val parent: SimpleDelegator) extends SimpleDelegate {
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))
}

View File

@ -31,7 +31,7 @@ trait Delegate {
// 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) {}

View File

@ -102,9 +102,9 @@ class Delegator[Child <: Delegate](id: Int) extends Block(id, Material.iron) {
// 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 {
case Some(subBlock) => subBlock.addInformation(player, tooltip, advanced)
case Some(subBlock) => subBlock.addInformation(stack, player, tooltip, advanced)
case _ =>
}
}

View File

@ -7,6 +7,7 @@ import li.cil.oc.util.Tooltip
import li.cil.oc.{api, OpenComputers, Settings}
import net.minecraft.client.renderer.texture.IconRegister
import net.minecraft.entity.player.EntityPlayer
import net.minecraft.item.ItemStack
import net.minecraft.util.Icon
import net.minecraft.world.World
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))
if (Loader.isModLoaded("ComputerCraft")) {
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) {
super.addInformation(stack, player, tooltip, advanced)
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 _ =>
}
}

View File

@ -7,6 +7,7 @@ import li.cil.oc.common.tileentity
import li.cil.oc.util.Tooltip
import net.minecraft.client.renderer.texture.IconRegister
import net.minecraft.entity.player.EntityPlayer
import net.minecraft.item.ItemStack
import net.minecraft.util.{AxisAlignedBB, Icon}
import net.minecraft.world.{IBlockAccess, World}
import net.minecraftforge.common.ForgeDirection
@ -17,7 +18,7 @@ class Keyboard(val parent: SpecialDelegator) extends SpecialDelegate {
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))
}

View File

@ -1,15 +1,16 @@
package li.cil.oc.common.block
import cpw.mods.fml.common.Loader
import java.util
import li.cil.oc.Settings
import li.cil.oc.common.tileentity
import li.cil.oc.util.Tooltip
import net.minecraft.client.renderer.texture.IconRegister
import net.minecraft.entity.player.EntityPlayer
import net.minecraft.item.ItemStack
import net.minecraft.util.Icon
import net.minecraft.world.World
import net.minecraftforge.common.ForgeDirection
import cpw.mods.fml.common.Loader
class PowerConverter(val parent: SimpleDelegator) extends SimpleDelegate {
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))
if (Loader.isModLoaded("IC2")) {
val ratio = Settings.get.ratioIndustrialCraft2

View File

@ -6,6 +6,7 @@ import li.cil.oc.common.tileentity
import li.cil.oc.util.Tooltip
import net.minecraft.client.renderer.texture.IconRegister
import net.minecraft.entity.player.EntityPlayer
import net.minecraft.item.ItemStack
import net.minecraft.util.Icon
import net.minecraft.world.{IBlockAccess, World}
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))
}

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))
}
@ -95,19 +98,19 @@ class RobotProxy(val parent: SpecialDelegator) extends Computer with SpecialDele
case Some((proxy, owner)) =>
proxy.robot.owner = owner
if (stack.hasTagCompound) {
proxy.robot.battery.changeBuffer(stack.getTagCompound.getDouble(Settings.namespace + "storedEnergy"))
proxy.robot.battery.changeBuffer(stack.getTagCompound.getInteger(Settings.namespace + "storedEnergy"))
}
case _ =>
}
}
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 =>
val stack = createItemStack()
if (proxy.globalBuffer > 0) {
stack.setTagCompound(new NBTTagCompound())
stack.getTagCompound.setDouble(Settings.namespace + "storedEnergy", proxy.globalBuffer)
if (proxy.globalBuffer > 1) {
stack.setTagCompound(new NBTTagCompound("tag"))
stack.getTagCompound.setInteger(Settings.namespace + "storedEnergy", proxy.globalBuffer.toInt)
}
parent.dropBlockAsItem(world, x, y, z, stack)
case _ =>

View File

@ -7,6 +7,7 @@ import li.cil.oc.common.tileentity
import li.cil.oc.util.Tooltip
import net.minecraft.client.renderer.texture.IconRegister
import net.minecraft.entity.player.EntityPlayer
import net.minecraft.item.ItemStack
import net.minecraft.util.Icon
import net.minecraft.world.World
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))
}

View File

@ -7,6 +7,7 @@ import li.cil.oc.util.{PackedColor, Tooltip}
import li.cil.oc.{Settings, OpenComputers}
import net.minecraft.client.renderer.texture.IconRegister
import net.minecraft.entity.player.EntityPlayer
import net.minecraft.item.ItemStack
import net.minecraft.util.Icon
import net.minecraft.world.IBlockAccess
import net.minecraft.world.World
@ -17,7 +18,7 @@ abstract class Screen(val parent: SimpleDelegator) extends SimpleDelegate {
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 depth = PackedColor.Depth.bits(Settings.screenDepthsByTier(tier))
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 {
def nbt(stack: ItemStack) = {
if (!stack.hasTagCompound) {
stack.setTagCompound(new NBTTagCompound())
stack.setTagCompound(new NBTTagCompound("tag"))
}
val nbt = stack.getTagCompound
if (!nbt.hasKey(Settings.namespace + "data")) {