diff --git a/build.properties b/build.properties index e57097530..e76a51dd4 100644 --- a/build.properties +++ b/build.properties @@ -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 \ No newline at end of file diff --git a/src/main/resources/assets/opencomputers/lang/de_DE.lang b/src/main/resources/assets/opencomputers/lang/de_DE.lang index 2bf07739c..712e1f669 100644 --- a/src/main/resources/assets/opencomputers/lang/de_DE.lang +++ b/src/main/resources/assets/opencomputers/lang/de_DE.lang @@ -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. diff --git a/src/main/resources/assets/opencomputers/lang/en_US.lang b/src/main/resources/assets/opencomputers/lang/en_US.lang index 026e5a023..22f70e5eb 100644 --- a/src/main/resources/assets/opencomputers/lang/en_US.lang +++ b/src/main/resources/assets/opencomputers/lang/en_US.lang @@ -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. diff --git a/src/main/resources/assets/opencomputers/lang/fr_FR.lang b/src/main/resources/assets/opencomputers/lang/fr_FR.lang index e4e68e8f8..270f31bc9 100644 --- a/src/main/resources/assets/opencomputers/lang/fr_FR.lang +++ b/src/main/resources/assets/opencomputers/lang/fr_FR.lang @@ -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 diff --git a/src/main/resources/assets/opencomputers/lang/pt_PT.lang b/src/main/resources/assets/opencomputers/lang/pt_PT.lang index 92e5f97f3..f9e0df95e 100644 --- a/src/main/resources/assets/opencomputers/lang/pt_PT.lang +++ b/src/main/resources/assets/opencomputers/lang/pt_PT.lang @@ -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 diff --git a/src/main/resources/assets/opencomputers/lang/ru_RU.lang b/src/main/resources/assets/opencomputers/lang/ru_RU.lang index a1ecfbf88..de78d1430 100644 --- a/src/main/resources/assets/opencomputers/lang/ru_RU.lang +++ b/src/main/resources/assets/opencomputers/lang/ru_RU.lang @@ -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=Позволяет роботам использовать верхнюю левую часть инвентаря для создания вещей. Вещи должны быть расположены в том порядке, что и в верстаке. diff --git a/src/main/resources/assets/opencomputers/lang/zh_CN.lang b/src/main/resources/assets/opencomputers/lang/zh_CN.lang index 389a920de..8029fc7e0 100644 --- a/src/main/resources/assets/opencomputers/lang/zh_CN.lang +++ b/src/main/resources/assets/opencomputers/lang/zh_CN.lang @@ -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. diff --git a/src/main/resources/assets/opencomputers/lang/zh_TW.lang b/src/main/resources/assets/opencomputers/lang/zh_TW.lang index 6fe88ee43..0efce0a68 100644 --- a/src/main/resources/assets/opencomputers/lang/zh_TW.lang +++ b/src/main/resources/assets/opencomputers/lang/zh_TW.lang @@ -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. diff --git a/src/main/resources/reference.conf b/src/main/resources/reference.conf index f59f6f400..51c3bc053 100644 --- a/src/main/resources/reference.conf +++ b/src/main/resources/reference.conf @@ -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 diff --git a/src/main/scala/li/cil/oc/Settings.scala b/src/main/scala/li/cil/oc/Settings.scala index 6bd9aeb37..83f5fa91b 100644 --- a/src/main/scala/li/cil/oc/Settings.scala +++ b/src/main/scala/li/cil/oc/Settings.scala @@ -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) diff --git a/src/main/scala/li/cil/oc/client/KeyBindings.scala b/src/main/scala/li/cil/oc/client/KeyBindings.scala new file mode 100644 index 000000000..93a564e46 --- /dev/null +++ b/src/main/scala/li/cil/oc/client/KeyBindings.scala @@ -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") +} diff --git a/src/main/scala/li/cil/oc/client/Proxy.scala b/src/main/scala/li/cil/oc/client/Proxy.scala index 69baf1b8d..5bb82bdf3 100644 --- a/src/main/scala/li/cil/oc/client/Proxy.scala +++ b/src/main/scala/li/cil/oc/client/Proxy.scala @@ -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) { diff --git a/src/main/scala/li/cil/oc/client/gui/Buffer.scala b/src/main/scala/li/cil/oc/client/gui/Buffer.scala index ee141566a..422ada9c9 100644 --- a/src/main/scala/li/cil/oc/client/gui/Buffer.scala +++ b/src/main/scala/li/cil/oc/client/gui/Buffer.scala @@ -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) - } } diff --git a/src/main/scala/li/cil/oc/common/block/Delegator.scala b/src/main/scala/li/cil/oc/common/block/Delegator.scala index ed77ed48f..84dfe5410 100644 --- a/src/main/scala/li/cil/oc/common/block/Delegator.scala +++ b/src/main/scala/li/cil/oc/common/block/Delegator.scala @@ -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 diff --git a/src/main/scala/li/cil/oc/common/item/Delegate.scala b/src/main/scala/li/cil/oc/common/item/Delegate.scala index bfc0ae79b..52a37e6c1 100644 --- a/src/main/scala/li/cil/oc/common/item/Delegate.scala +++ b/src/main/scala/li/cil/oc/common/item/Delegate.scala @@ -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")) { diff --git a/src/main/scala/li/cil/oc/common/item/Delegator.scala b/src/main/scala/li/cil/oc/common/item/Delegator.scala index 0abfebb01..a2647aae9 100644 --- a/src/main/scala/li/cil/oc/common/item/Delegator.scala +++ b/src/main/scala/li/cil/oc/common/item/Delegator.scala @@ -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) diff --git a/src/main/scala/li/cil/oc/common/item/Terminal.scala b/src/main/scala/li/cil/oc/common/item/Terminal.scala index 37c8ee39c..516dafbd8 100644 --- a/src/main/scala/li/cil/oc/common/item/Terminal.scala +++ b/src/main/scala/li/cil/oc/common/item/Terminal.scala @@ -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 diff --git a/src/main/scala/li/cil/oc/util/ItemCosts.scala b/src/main/scala/li/cil/oc/util/ItemCosts.scala index 0fb70b493..5ae508e8d 100644 --- a/src/main/scala/li/cil/oc/util/ItemCosts.scala +++ b/src/main/scala/li/cil/oc/util/ItemCosts.scala @@ -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) diff --git a/src/main/scala/li/cil/oc/util/Tooltip.scala b/src/main/scala/li/cil/oc/util/Tooltip.scala index 58c1fb1a0..ffdc6cef5 100644 --- a/src/main/scala/li/cil/oc/util/Tooltip.scala +++ b/src/main/scala/li/cil/oc/util/Tooltip.scala @@ -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\]"""