Merge branch 'master' of github.com:MightyPirates/OpenComputers into MC1.7

Conflicts:
	build.properties
	src/main/scala/li/cil/oc/client/Proxy.scala
	src/main/scala/li/cil/oc/common/item/Delegate.scala
	src/main/scala/li/cil/oc/util/ItemCosts.scala
This commit is contained in:
Florian Nücke 2014-04-09 13:09:21 +02:00
commit 9a20fd6974
19 changed files with 83 additions and 46 deletions

View File

@ -1,6 +1,6 @@
minecraft.version=1.7.2
forge.version=10.12.0.1046
oc.version=1.2.6
oc.version=1.2.7
ccl.version=1.0.0.62
fmp.version=1.0.0.250
maven.url=file:///var/www/users/fnuecke/maven.cil.li

View File

@ -9,7 +9,7 @@ oc:tile.Capacitor.name=Kondensator
oc:tile.Case0.name=Computergehäuse (Stufe 1)
oc:tile.Case1.name=Computergehäuse (Stufe 2)
oc:tile.Case2.name=Computergehäuse (Stufe 3)
oc:tile.Case3.name=Computergehäuse (Creative)
oc:tile.Case3.name=Computergehäuse (Kreativ)
oc:tile.Charger.name=Ladestation
oc:tile.DiskDrive.name=Diskettenlaufwerk
oc:tile.Keyboard.name=Tastatur
@ -70,7 +70,7 @@ oc:item.Server1.name=Server (Stufe 2)
oc:item.Server2.name=Server (Stufe 3)
oc:item.Terminal.name=Fernbedienung
oc:item.Transistor.name=Transistor
oc:item.UpgradeAngel.name=Angel Upgrade
oc:item.UpgradeAngel.name=Schwebe-Upgrade
oc:item.UpgradeCrafting.name=Fertigungs-Upgrade
oc:item.UpgradeGenerator.name=Generator-Upgrade
oc:item.UpgradeNavigation.name=Navigationsupgrade
@ -93,9 +93,9 @@ oc:gui.Analyzer.TotalEnergy=§6Insgesamt gespeicherte Energie§f: %s
oc:gui.Analyzer.Users=§6Benutzer§f: %s
oc:gui.Analyzer.WirelessStrength=§6Signalstärke§f: %s
oc:gui.Chat.NewVersion=Eine neue Version ist verfügbar: %s
oc:gui.Chat.WarningFingerprint=§cWARNUNG§f - ungültige Signatur! Sollte '§a%s§f' sein, aber war '§e%s§f'. Falls du kein Modder bist und die "deobfuscated"-Version des Mods benutzt, solltest du OpenComputers erneut herunterladen, da die JAR die du benutzt vermutlich modifiziert wurde.
oc:gui.Chat.WarningFingerprint=§cWARNUNG§f - ungültige Signatur! Sollte '§a%s§f' sein, aber war '§e%s§f'. Falls du kein Modder bist und die "deobfuscated"-Version des Mods benutzt, solltest du OpenComputers erneut herunterladen, da die JAR, die du benutzt, vermutlich modifiziert wurde.
oc:gui.Chat.WarningLuaFallback=Die native Lua-Implementierung ist nicht verfügbar. Computer können ihren Ausführungszustand nicht speichern. Sie werden automatisch neu starten, sobald ein Chunk neu geladen wird.
oc:gui.Chat.WarningPower=Es ist kein unterstützter, Strom erzeugender Mod verfügbar. Computer, Bildschirme und alle anderen Komponenten werden §lkeine§f Energie benötigen. Installiere einen der folgenden Mods, um Stromnutzung zu ermöglichen: BuildCraft, IndustrialCraft2, Thermal Expansion oder Universal Electricity. Deaktiviere Stromverbrauch in der Konfiguration, um diese Warnung zu unterdrücken.
oc:gui.Chat.WarningPower=Es ist keine unterstützte, Strom erzeugende Mod verfügbar. Computer, Bildschirme und alle anderen Komponenten werden §lkeine§f Energie benötigen. Installiere eine der folgenden Mods, um Stromnutzung zu ermöglichen: BuildCraft, IndustrialCraft2, Thermal Expansion oder Universal Electricity. Deaktiviere Stromverbrauch in der Konfiguration, um diese Warnung zu unterdrücken.
oc:gui.Chat.WarningProjectRed=Die verwendete Version von Project: Red ist nicht mit OpenComputers kompatibel. Aktualisiere bitte deine Version von Project: Red.
oc:gui.Error.ComponentOverflow=Zu viele Komponenten sind mit dem Computer verbunden.
oc:gui.Error.DaylightCycle=Computer funktionieren nicht, solange die Zeit angehalten ist (Spielregel doDaylightCycle ist aus).
@ -123,6 +123,11 @@ oc:container.DiskDrive=Diskettenlaufwerk
oc:container.Rack=Serverschrank
oc:container.Server=Server
# Keybinds
key.extendedTooltip=Tooltip erweitern
key.materialCosts=Materialkosten anzeigen
key.clipboardPaste=Zwischenablage einfügen
# Item / Block Tooltips
oc:tooltip.AbstractBusCard=Erlaubt es, LIP-Pakete des Abstrakten Busses von §fStargateTech 2§7 zu senden und zu empfangen.
oc:tooltip.Acid=Eine hochgiftige Möchtegernflüssigkeit, wird üblicherweise nur von gewissen Piraten konsumiert. Dank ihrer korrosiven Eigenschaften ideal zum Bedrucken von Leiterplatten geeignet.
@ -147,6 +152,8 @@ oc:tooltip.Interweb=Kann in einer Internetkarte verwendet werden, um Computer mi
oc:tooltip.IronNugget=Ein Nugget, das aus Eisen besteht, darum wird es ja auch Eisennugget genannt, duh...
oc:tooltip.Keyboard=Kann an Bildschirmen befestigt werden, um auf ihnen zu tippen.
oc:tooltip.Hologram=Ein Volumendisplay, das beliebige, von Computern festgelegte Voxelstrukturen anzeigt.[nl] Auflösung: §f48x32x48§7. [nl] Farbtiefe: §fMonochrom§7.
oc:tooltip.MaterialCosts=Halte [§f%s§7] gedrückt für Materialkosten.
oc:tooltip.Materials=Materialien:
oc:tooltip.Memory=Braucht ein jeder Computer, um zu starten. Je mehr vorhanden, desto komplexere Programme können ausgeführt werden.
oc:tooltip.Microchip=Tritt auch unter dem Alias Integrierter Schaltkreis auf. Keine Ahnung, warum das auch mit Redstone klappt, aber es funktioniert.
oc:tooltip.NetworkCard=Erlaubt es Computern, die über mehrere Blöcke miteinander verbunden sind (z.B. Kabel), mittels Netzwerknachrichten zu kommunizieren.
@ -172,9 +179,9 @@ oc:tooltip.Server=Ein Server kann wie ein gewöhnliches Computergehäuse mit Kom
oc:tooltip.Server.Components=Installierte Komponenten:
oc:tooltip.ServerRack=Erlaubt die Installation von bis zu vier Servern. Stellt für jeden eingebauten Server eine virtuelle Tastatur- und Bildschirmkomponente zur Verfügung, welche je eine Fernbedienung repräsentieren.
oc:tooltip.Terminal=Erlaubt es, einen Server aus der Ferne zu steuern, so lange man sich in Reichweite des Servers befindet. Verhält sich wie Bildschirm und Tastatur in einem. Kann mit Shift-Rechtsklick an einen Server in einem Serverschrank gebunden werden.
oc:tooltip.TooLong=Shift gedrückt halten für mehr Infos.
oc:tooltip.TooLong=Halte [§f%s§7] gedrückt für mehr Infos.
oc:tooltip.Transistor=Elementarer Baustein der meisten Computerkomponenten. Nicht zu verwechseln mit Steinelementaren.
oc:tooltip.UpgradeAngel=Erlaubt es Robotern Blöcke in die Luft zu setzen, selbst wenn kein Referenzblock daneben existiert.
oc:tooltip.UpgradeAngel=Erlaubt es Robotern, Blöcke in die Luft zu setzen, selbst wenn kein Referenzblock daneben existiert.
oc:tooltip.UpgradeCrafting=Ermöglicht Robotern, in dem oberen linken Bereich ihres Inventars Dinge zu fertigen. Gegenstände müssen so angeordnet sein, wie sie es in einer Werkbank wären.
oc:tooltip.UpgradeGenerator=Kann verwendet werden, um unterwegs Energie aus Brennstoffen zu erzeugen. Verbraucht Gegenstände über einen ihrem Brennwert gemäßen Zeitraum.[nl] §fEffizienz§7: §a%s%%§7
oc:tooltip.UpgradeNavigation=Erlaubt es Robotern, ihre Position und Ausrichtung zu bestimmen. Die Position ist relativ zur Mitte der Karte, die in diesem Upgrade verbaut wurde.

View File

@ -123,6 +123,11 @@ oc:container.DiskDrive=Disk Drive
oc:container.Rack=Server Rack
oc:container.Server=Server
# Keybinds
key.extendedTooltip=Expand Tooltip
key.materialCosts=Show Material Costs
key.clipboardPaste=Paste Clipboard
# Item / Block Tooltips
oc:tooltip.AbstractBusCard=Allows interacting with §fStargateTech 2§7's abstract bus by sending and receiving LIP packets.
oc:tooltip.Acid=A highly toxic pseudo-liquid, usually only consumed by certain pirates. Thanks to its corrosive nature it is perfectly suited for etching circuit boards.
@ -147,6 +152,8 @@ oc:tooltip.Interweb=Congratulations, you win one (1) interweb. You can connect t
oc:tooltip.IronNugget=A nugget made of iron, that's why it's called an Iron Nugget, duh...
oc:tooltip.Keyboard=Can be attached to screens to allow typing on them.
oc:tooltip.Hologram=A volumetric display that can be controlled by computers to display arbitrary voxel structures.[nl] Resolution: §f48x32x48§7. [nl] Color depth: §fMonochrome§7.
oc:tooltip.MaterialCosts=Hold [§f%s§7] for material costs.
oc:tooltip.Materials=Materials:
oc:tooltip.Memory=Required to get computers to run. The more you have, the more complex the programs you can run.
oc:tooltip.Microchip=The chip formerly known as Integrated Circuit. I have no idea why this works with redstone, but it does.
oc:tooltip.NetworkCard=Allows distant computers connected by other blocks (such as cable) to communicate by sending messages to each other.
@ -172,7 +179,7 @@ oc:tooltip.Server=This is a server, there are many like it, but this one can be
oc:tooltip.Server.Components=Installed components:
oc:tooltip.ServerRack=Allows the installation of up to four servers. Use a Remote Terminal to access the servers built into this server rack.
oc:tooltip.Terminal=Allows controlling a server remotely, as long as you are in range of it. Acts like a portable screen and keyboard. Shift-right-click a server in a server rack to bind the terminal to it.
oc:tooltip.TooLong=Hold shift for a detailed tooltip.
oc:tooltip.TooLong=Hold [§f%s§7] for a detailed tooltip.
oc:tooltip.Transistor=A basic element in most other computer parts. It's a bit twisted, but it does the job.
oc:tooltip.UpgradeAngel=Allows robots to place blocks in thin air, even if there is no point of reference.
oc:tooltip.UpgradeCrafting=Enables robots to use the top left area of their inventory for crafting objects. Items have to be aligned as they would be in a crafting table.

View File

@ -121,7 +121,7 @@ oc:tooltip.Robot_Level=§fNiveau§7: §a%s§7.
oc:tooltip.Robot_StoredEnergy=§fEnergie stockée§7: §a%s§7.
oc:tooltip.Router=Permet de connecter différents réseaux entre eux. Seulement des messages réseau seront transmis, les composants ne seront pas visibles via celui ci. A utiliser pour séparer des réseaux tout en leur permettant de communiquer entre eux, grâce aux Cartes réseau, par exemple.
oc:tooltip.Screen=Affiche du texte, contrôlé par une Carte graphique dans un Boitier.[nl] Résolution maximum: §f%sx%s§7.[nl] Couleurs maximales: §f%s§7.
oc:tooltip.TooLong=Maintenez la touche Majuscule (Shift) pour plus d'informations.
oc:tooltip.TooLong=Maintenez la touche [§f%s§7] pour plus d'informations.
oc:tooltip.Transistor=Un élément basique constituant la plupart des pièces d'un ordinateur. Il est un peu tordu, mais il fait son boulot.
oc:tooltip.UpgradeCrafting=Permet aux robots d'utiliser le coin en haut à gauche de leur inventaire comme table d'artisanat. Vous devez respecter la position des objets comme pour un artisanat normal.
oc:tooltip.UpgradeGenerator=Utilisé pour générer de l'énergie directement sur un robot, indépendament d'un chargeur. Consume du comburant (ex: charbon) pour une génération sur la durée, en fonction de l'efficacité du combustible. [nl] §fEfficacité§7: §a%s%%§7

View File

@ -124,7 +124,7 @@ oc:tooltip.Robot_Level=§fNível§7: §a%s§7.
oc:tooltip.Robot_StoredEnergy=§fEnergia Armazenada§7: §a%s§7.
oc:tooltip.Router=Permite interligar redes diferentes. Apenas pacotes de rede serão passados, componentes não serão visiveis em redes vizinhas. Usa isto para separar várias redes e ao mesmo tempo permitir comunicação através de placas de rede, por exemplo.
oc:tooltip.Screen=Mostra texto, controlado por uma placa gráfica numa Caixa.[nl] Resolução máxima: §f%sx%s§7.[nl] Profundidade de cor máxima: §f%s§7.
oc:tooltip.TooLong=Prime SHIFT para uma descrição detalhada.
oc:tooltip.TooLong=Prime [§f%s§7] para uma descrição detalhada.
oc:tooltip.Transistor=Um componente básico do hardware do computador. É um pouco retorcido, mas faz o seu trabalho.
oc:tooltip.UpgradeCrafting=Permite aos robôs usar a parte superior esquerda do seu inventório para fabricar objectos. Os itens têm de estar alinhados como numa mesa de fabrico.
oc:tooltip.UpgradeGenerator=Pode ser usado para gerar energia a partir de combustível. Queima itens para gerar energia ao longo do tempo, dependendo da energia que pode ser extraída de cada componente.[nl] §fEficiência§7: §a%s%%§7

View File

@ -171,7 +171,7 @@ oc:tooltip.Server=Это сервер, который может быть улу
oc:tooltip.Server.Components=Установленные компоненты:
oc:tooltip.ServerRack=Обеспечивает работу до четырёх серверов. Используйте беспроводной терминал для управления установленными серверами.
oc:tooltip.Terminal=Позволяет дистанционно управлять сервером, пока вы в радиусе его действия. Действует как портативный дисплей с клавиатурой.[nl] Shift+ПКМ по серверу в стойке для привязки к нему терминала.
oc:tooltip.TooLong=Удерживайте Shift, чтобы отобразить описание.
oc:tooltip.TooLong=Удерживайте [§f%s§7], чтобы отобразить описание.
oc:tooltip.Transistor=Базовый элемент в других частях компьютера. Он немного деформирован, но отлично выполняет свою работу.
oc:tooltip.UpgradeAngel=Позволяет роботам размещать блоки в воздухе, даже если отсутствует точка опоры.
oc:tooltip.UpgradeCrafting=Позволяет роботам использовать верхнюю левую часть инвентаря для создания вещей. Вещи должны быть расположены в том порядке, что и в верстаке.

View File

@ -112,7 +112,7 @@ oc:tooltip.Robot_Level=§f等级§7: §a%s§7.
oc:tooltip.Robot_StoredEnergy=§f储能§7: §a%s§7.
oc:tooltip.Router=允许设备相互连接不同的网络.[nl]仅能传递网络信息,通过路由器方式设备并不互相可见.[nl]例如可以通过这种方式来建立独立网络但仍允许其使用网卡通讯.
oc:tooltip.Screen=由机箱内的显卡控制来显示文本.[nl]最高分辨率:§f%sx%s§7.[nl] 最大色深: §f%s§7.
oc:tooltip.TooLong=按住潜行键(shift)以查看详细提示信息.
oc:tooltip.TooLong=按住潜行键([§f%s§7])以查看详细提示信息.
oc:tooltip.Transistor=在多数其他计算机的零件中都很基础的元件.[nl]引脚有点弯了,但还能用.
oc:tooltip.UpgradeCrafting=使得机器人能够将其物品栏的左上区域作为合成网格来制做物品.[nl]物品栏内物品摆放必须与工作台中一致.
oc:tooltip.UpgradeGenerator=用来不断地消耗燃料发电,燃烧物品并基于它们的燃烧值随着时间推移产生电力.[nl] §f效率§7: §a%s%%§7.

View File

@ -161,7 +161,7 @@ oc:tooltip.Server=這是一台伺服器, 他非常棒, 但是他可以使用元
oc:tooltip.Server.Components=安裝的元件:
oc:tooltip.ServerRack=提供安裝最多達四個伺服器。為每個伺服器提供了一個內置的虛擬鍵盤和螢幕元件,相當於一個遠程終端。
oc:tooltip.Terminal=允許遠程控制伺服器只要你在它的範圍內。就像一個隨身型螢幕和鍵盤。按住Shift鍵並滑鼠右鍵單擊某個服務器的服務器機架終端綁定它。
oc:tooltip.TooLong=按住潛行鍵(shift)以查看詳細提示信息.
oc:tooltip.TooLong=按住潛行鍵([§f%s§7])以查看詳細提示信息.
oc:tooltip.Transistor=在多數其他計算機的零件中都很基礎的元件.[nl]引腳有點彎了,但還能用.
oc:tooltip.UpgradeCrafting=使得機器人能夠將其物品欄的左上區域作為合成網格來制做物品.[nl]物品欄內物品擺放必須與工作臺中一致.
oc:tooltip.UpgradeGenerator=用來不斷地消耗燃料發電,燃燒物品并基于它們的燃燒值隨著時間推移產生電力.[nl] §f效率§7: §a%s%%§7.

View File

@ -34,12 +34,6 @@ opencomputers {
# anti-aliased / smoothed) turn this option off.
textAntiAlias: true
# The keyboard shortcut that is used to send the current text in the
# clipboard to the currently opened screen (if said screen has a keyboard
# attached to it). For valid key names, please see the following list:
# https://github.com/LWJGL/lwjgl/blob/master/src/java/org/lwjgl/input/Keyboard.java#L73
pasteShortcut: [LSHIFT, INSERT]
# Render robots' names as a label above them when near them
robotLabels: true

View File

@ -17,7 +17,6 @@ class Settings(config: Config) {
val maxScreenTextRenderDistance = config.getDouble("client.maxScreenTextRenderDistance")
val textLinearFiltering = config.getBoolean("client.textLinearFiltering")
val textAntiAlias = config.getBoolean("client.textAntiAlias")
val pasteShortcut = config.getStringList("client.pasteShortcut").toSet
val robotLabels = config.getBoolean("client.robotLabels")
val soundVolume = config.getDouble("client.soundVolume").toFloat max 0 min 2
val fontCharScale = config.getDouble("client.fontCharScale") max 0.5 min 2
@ -32,7 +31,7 @@ class Settings(config: Config) {
val ramSizes = Array(config.getIntList("computer.ramSizes"): _*) match {
case Array(tier1, tier2, tier3) =>
// For compatibility with older config files.
Array(tier1: Int, tier2: Int, tier3: Int, tier3 * 2: Int, tier3 * 4: Int)
Array(tier1: Int, (tier1: Int) * 3 / 2, tier2: Int, tier3: Int, tier3 * 2: Int, tier3 * 4: Int)
case Array(tier1, tier3, tier4, tier5, tier6) =>
// For compatibility with older config files.
Array(tier1: Int, (tier1: Int) * 3 / 2, tier3: Int, tier4: Int, tier5: Int, tier6: Int)

View File

@ -0,0 +1,16 @@
package li.cil.oc.client
import net.minecraft.client.settings.KeyBinding
import org.lwjgl.input.Keyboard
object KeyBindings {
def showExtendedTooltips = Keyboard.isKeyDown(extendedTooltip.getKeyCode)
def showMaterialCosts = Keyboard.isKeyDown(materialCosts.getKeyCode)
val extendedTooltip = new KeyBinding("key.extendedTooltip", Keyboard.KEY_LSHIFT, "OpenComputers")
val materialCosts = new KeyBinding("key.materialCosts", Keyboard.KEY_LMENU, "OpenComputers")
val clipboardPaste = new KeyBinding("key.clipboardPaste", Keyboard.KEY_INSERT, "OpenComputers")
}

View File

@ -44,6 +44,10 @@ private[oc] class Proxy extends CommonProxy {
MinecraftForgeClient.registerItemRenderer(Items.multi, UpgradeRenderer)
OpenComputers.channel.register(client.PacketHandler)
ClientRegistry.registerKeyBinding(KeyBindings.extendedTooltip)
ClientRegistry.registerKeyBinding(KeyBindings.materialCosts)
ClientRegistry.registerKeyBinding(KeyBindings.clipboardPaste)
}
override def postInit(e: FMLPostInitializationEvent) {

View File

@ -1,7 +1,6 @@
package li.cil.oc.client.gui
import li.cil.oc.Settings
import li.cil.oc.client.PacketSender
import li.cil.oc.client.{KeyBindings, PacketSender}
import li.cil.oc.client.renderer.MonospaceFontRenderer
import li.cil.oc.client.renderer.gui.BufferRenderer
import li.cil.oc.common.component
@ -84,7 +83,7 @@ trait Buffer extends GuiScreen {
case _ => // Wasn't pressed while viewing the screen.
}
if (isPasteShortcutPressed && Keyboard.getEventKeyState) {
if (Keyboard.isKeyDown(KeyBindings.clipboardPaste.getKeyCode) && Keyboard.getEventKeyState) {
PacketSender.sendClipboard(buffer, GuiScreen.getClipboardString)
}
}
@ -109,9 +108,4 @@ trait Buffer extends GuiScreen {
code == Keyboard.KEY_LMETA ||
code == Keyboard.KEY_RMETA
}
private def isPasteShortcutPressed = {
val want = Settings.get.pasteShortcut.map(name => Keyboard.getKeyIndex(name.toUpperCase)).filter(_ != Keyboard.KEY_NONE)
pressedKeys.keySet.equals(want)
}
}

View File

@ -4,10 +4,11 @@ import cpw.mods.fml.common.Optional
import cpw.mods.fml.relauncher.{Side, SideOnly}
import java.util
import java.util.Random
import li.cil.oc.client.KeyBindings
import li.cil.oc.client.renderer.block.BlockRenderer
import li.cil.oc.common.tileentity.traits.{Colored, Rotatable, BundledRedstoneAware}
import li.cil.oc.util.{Color, ItemCosts}
import li.cil.oc.util.mods.Mods
import li.cil.oc.util.{Color, ItemCosts}
import li.cil.oc.{Settings, CreativeTab}
import net.minecraft.block.Block
import net.minecraft.block.material.Material
@ -17,7 +18,7 @@ import net.minecraft.entity.player.EntityPlayer
import net.minecraft.entity.{EnumCreatureType, Entity, EntityLivingBase}
import net.minecraft.item.{ItemBlock, ItemStack}
import net.minecraft.tileentity.TileEntity
import net.minecraft.util.{MovingObjectPosition, Vec3, AxisAlignedBB}
import net.minecraft.util.{StatCollector, MovingObjectPosition, Vec3, AxisAlignedBB}
import net.minecraft.world.{IBlockAccess, World}
import net.minecraftforge.common.util.ForgeDirection
import org.lwjgl.input
@ -331,9 +332,14 @@ class Delegator[Child <: Delegate] extends Block(Material.iron) {
case Some(subBlock) => subBlock.tooltipLines(stack, player, tooltip, advanced)
case _ =>
}
if (input.Keyboard.isKeyDown(input.Keyboard.KEY_LMENU)) {
if (KeyBindings.showMaterialCosts) {
ItemCosts.addTooltip(stack, tooltip.asInstanceOf[util.List[String]])
}
else {
tooltip.add(StatCollector.translateToLocalFormatted(
Settings.namespace + "tooltip.MaterialCosts",
input.Keyboard.getKeyName(KeyBindings.materialCosts.getKeyCode)))
}
}
override def getRenderType = BlockRenderer.getRenderId

View File

@ -1,12 +1,17 @@
package li.cil.oc.common.item
import cpw.mods.fml.relauncher.{Side, SideOnly}
import java.util
import li.cil.oc.client.KeyBindings
import li.cil.oc.Settings
import li.cil.oc.util.ItemCosts
import net.minecraft.client.renderer.texture.IIconRegister
import net.minecraft.entity.player.EntityPlayer
import net.minecraft.item.{EnumRarity, ItemStack}
import net.minecraft.util.IIcon
import net.minecraft.util.StatCollector
import net.minecraft.world.World
import org.lwjgl.input
trait Delegate {
val parent: Delegator
@ -47,6 +52,14 @@ trait Delegate {
@SideOnly(Side.CLIENT)
def tooltipLines(stack: ItemStack, player: EntityPlayer, tooltip: java.util.List[String], advanced: Boolean) {
if (KeyBindings.showMaterialCosts) {
ItemCosts.addTooltip(stack, tooltip.asInstanceOf[util.List[String]])
}
else {
tooltip.add(StatCollector.translateToLocalFormatted(
Settings.namespace + "tooltip.MaterialCosts",
input.Keyboard.getKeyName(KeyBindings.materialCosts.getKeyCode)))
}
if (stack.hasTagCompound && stack.getTagCompound.hasKey(Settings.namespace + "data")) {
val data = stack.getTagCompound.getCompoundTag(Settings.namespace + "data")
if (data.hasKey("node") && data.getCompoundTag("node").hasKey("address")) {

View File

@ -2,7 +2,7 @@ package li.cil.oc.common.item
import cpw.mods.fml.relauncher.{Side, SideOnly}
import java.util
import li.cil.oc.util.ItemCosts
import java.util.Random
import li.cil.oc.{Settings, CreativeTab}
import net.minecraft.client.renderer.texture.IIconRegister
import net.minecraft.creativetab.CreativeTabs
@ -10,10 +10,8 @@ import net.minecraft.entity.player.EntityPlayer
import net.minecraft.item.{EnumRarity, ItemStack, Item}
import net.minecraft.util.{WeightedRandomChestContent, IIcon}
import net.minecraft.world.World
import org.lwjgl.input
import scala.collection.mutable
import net.minecraftforge.common.ChestGenHooks
import java.util.Random
import scala.collection.mutable
class Delegator extends Item {
setHasSubtypes(true)
@ -120,9 +118,6 @@ class Delegator extends Item {
case Some(subItem) => subItem.tooltipLines(stack, player, tooltip.asInstanceOf[util.List[String]], advanced)
case _ => // Nothing to add.
}
if (input.Keyboard.isKeyDown(input.Keyboard.KEY_LMENU)) {
ItemCosts.addTooltip(stack, tooltip.asInstanceOf[util.List[String]])
}
}
@SideOnly(Side.CLIENT)

View File

@ -27,11 +27,11 @@ class Terminal(val parent: Delegator) extends Delegate {
@SideOnly(Side.CLIENT)
override def tooltipLines(stack: ItemStack, player: EntityPlayer, tooltip: util.List[String], advanced: Boolean) {
tooltip.addAll(Tooltip.get(unlocalizedName))
super.tooltipLines(stack, player, tooltip, advanced)
if (hasServer(stack)) {
val server = stack.getTagCompound.getString(Settings.namespace + "server")
tooltip.add("§8" + server.substring(0, 13) + "...§7")
}
super.tooltipLines(stack, player, tooltip, advanced)
}
// TODO check if server is in range and running

View File

@ -1,10 +1,12 @@
package li.cil.oc.util
import java.util
import li.cil.oc.Settings
import net.minecraft.block.Block
import net.minecraft.init.{Items, Blocks}
import net.minecraft.item.crafting._
import net.minecraft.item.{Item, ItemStack}
import net.minecraft.util.StatCollector
import net.minecraftforge.oredict.{OreDictionary, ShapelessOreRecipe, ShapedOreRecipe}
import scala.collection.convert.WrapAsScala._
import scala.collection.mutable
@ -40,11 +42,12 @@ object ItemCosts {
terminate(Items.quartz)
terminate(Items.nether_star)
terminate(Items.redstone)
terminate(Items.string)
terminate(Items.slime_ball)
terminate(Items.stick)
def addTooltip(stack: ItemStack, tooltip: util.List[String]) {
tooltip.add("Materials:")
tooltip.add(StatCollector.translateToLocal(Settings.namespace + "tooltip.Materials"))
for ((ingredient, count) <- computeIngredients(stack)) {
val line = math.ceil(count).toInt + "x " + ingredient.getDisplayName
tooltip.add(line)

View File

@ -1,11 +1,12 @@
package li.cil.oc.util
import li.cil.oc.client.KeyBindings
import li.cil.oc.Settings
import net.minecraft.client.Minecraft
import net.minecraft.util.StatCollector
import org.lwjgl.input.Keyboard
import scala.collection.convert.WrapAsJava._
import scala.collection.mutable
import org.lwjgl.input.Keyboard
object Tooltip {
val maxWidth = 200
@ -14,12 +15,10 @@ object Tooltip {
val tooltip = StatCollector.translateToLocal(Settings.namespace + "tooltip." + name).format(args.map(_.toString): _*)
val isSubTooltip = name.contains(".")
val font = Minecraft.getMinecraft.fontRenderer
val shouldShorten = (isSubTooltip || font.getStringWidth(tooltip) > maxWidth) &&
!Keyboard.isKeyDown(Keyboard.KEY_LSHIFT) &&
!Keyboard.isKeyDown(Keyboard.KEY_RSHIFT)
val shouldShorten = (isSubTooltip || font.getStringWidth(tooltip) > maxWidth) && !KeyBindings.showExtendedTooltips
if (shouldShorten) {
if (isSubTooltip) Seq.empty[String]
else Seq(StatCollector.translateToLocal(Settings.namespace + "tooltip.TooLong"))
else Seq(StatCollector.translateToLocalFormatted(Settings.namespace + "tooltip.TooLong", Keyboard.getKeyName(KeyBindings.extendedTooltip.getKeyCode)))
}
else {
val nl = """\[nl\]"""