From 8604a58cf56b89b22f5ffc89834dea0b67bd9138 Mon Sep 17 00:00:00 2001 From: Vexatos Date: Tue, 8 Apr 2014 13:42:57 +0200 Subject: [PATCH 1/3] Because German. And punctuations. Check Vanilla localization. --- .../resources/assets/opencomputers/lang/de_DE.lang | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/main/resources/assets/opencomputers/lang/de_DE.lang b/src/main/resources/assets/opencomputers/lang/de_DE.lang index 2bf07739c..1fcdf3316 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). @@ -174,7 +174,7 @@ oc:tooltip.ServerRack=Erlaubt die Installation von bis zu vier Servern. Stellt f 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.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. From 1669580cef8c04258c22def4316334f9cd122140 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20N=C3=BCcke?= Date: Tue, 8 Apr 2014 17:19:31 +0200 Subject: [PATCH 2/3] Made extended tooltip, material cost and clipboard paste keys rebindable using MC keybinds. This means pasting now is only one key (no ctrl+v, sorry), but hey, it's rebindable without having to touch the config! Middle mouse button also still works because why not. Tooltips now also tell people which key to press for the material costs info. Inserting the name of the actually bound key in the tooltips. --- .../assets/opencomputers/lang/de_DE.lang | 9 ++++- .../assets/opencomputers/lang/en_US.lang | 9 ++++- .../assets/opencomputers/lang/fr_FR.lang | 2 +- .../assets/opencomputers/lang/pt_PT.lang | 2 +- .../assets/opencomputers/lang/ru_RU.lang | 2 +- .../assets/opencomputers/lang/zh_CN.lang | 2 +- .../assets/opencomputers/lang/zh_TW.lang | 2 +- src/main/resources/reference.conf | 6 --- src/main/scala/li/cil/oc/Settings.scala | 1 - .../scala/li/cil/oc/client/KeyBindings.scala | 38 +++++++++++++++++++ src/main/scala/li/cil/oc/client/Proxy.scala | 6 ++- .../scala/li/cil/oc/client/gui/Buffer.scala | 10 +---- .../li/cil/oc/common/block/Delegator.scala | 12 ++++-- .../li/cil/oc/common/item/Delegate.scala | 14 ++++++- .../li/cil/oc/common/item/Delegator.scala | 9 +---- .../li/cil/oc/common/item/Terminal.scala | 2 +- src/main/scala/li/cil/oc/util/ItemCosts.scala | 5 ++- src/main/scala/li/cil/oc/util/Tooltip.scala | 9 ++--- 18 files changed, 97 insertions(+), 43 deletions(-) create mode 100644 src/main/scala/li/cil/oc/client/KeyBindings.scala diff --git a/src/main/resources/assets/opencomputers/lang/de_DE.lang b/src/main/resources/assets/opencomputers/lang/de_DE.lang index 2bf07739c..a8114ab1a 100644 --- a/src/main/resources/assets/opencomputers/lang/de_DE.lang +++ b/src/main/resources/assets/opencomputers/lang/de_DE.lang @@ -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,7 +179,7 @@ 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.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. 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 0f1e3482e..73a382d79 100644 --- a/src/main/resources/reference.conf +++ b/src/main/resources/reference.conf @@ -49,12 +49,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 542a0379b..3bdab0c01 100644 --- a/src/main/scala/li/cil/oc/Settings.scala +++ b/src/main/scala/li/cil/oc/Settings.scala @@ -26,7 +26,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 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..d9e55ce09 --- /dev/null +++ b/src/main/scala/li/cil/oc/client/KeyBindings.scala @@ -0,0 +1,38 @@ +package li.cil.oc.client + +import cpw.mods.fml.client.registry.KeyBindingRegistry.KeyHandler +import cpw.mods.fml.common.TickType +import java.util +import net.minecraft.client.settings.KeyBinding +import org.lwjgl.input.Keyboard + +object KeyBindings { + def showExtendedTooltips = Keyboard.isKeyDown(extendedTooltip.keyCode) + + def showMaterialCosts = Keyboard.isKeyDown(materialCosts.keyCode) + + val extendedTooltip = new KeyBinding("key.extendedTooltip", Keyboard.KEY_LSHIFT) + + val materialCosts = new KeyBinding("key.materialCosts", Keyboard.KEY_LMENU) + + val clipboardPaste = new KeyBinding("key.clipboardPaste", Keyboard.KEY_INSERT) + + object Handler extends KeyHandler(Array( + extendedTooltip, + materialCosts, + clipboardPaste + ), Array( + false, + false, + false + )) { + override def getLabel = "OpenComputers Keys" + + override def ticks() = util.EnumSet.of(TickType.CLIENT) + + override def keyUp(types: util.EnumSet[TickType], kb: KeyBinding, tickEnd: Boolean) {} + + override def keyDown(types: util.EnumSet[TickType], kb: KeyBinding, tickEnd: Boolean, isRepeat: Boolean) {} + } + +} diff --git a/src/main/scala/li/cil/oc/client/Proxy.scala b/src/main/scala/li/cil/oc/client/Proxy.scala index e2ad27162..81cb6b32a 100644 --- a/src/main/scala/li/cil/oc/client/Proxy.scala +++ b/src/main/scala/li/cil/oc/client/Proxy.scala @@ -1,14 +1,14 @@ package li.cil.oc.client -import cpw.mods.fml.client.registry.{RenderingRegistry, ClientRegistry} +import cpw.mods.fml.client.registry.{KeyBindingRegistry, RenderingRegistry, ClientRegistry} import cpw.mods.fml.common.event.{FMLPreInitializationEvent, FMLPostInitializationEvent, FMLInitializationEvent} import cpw.mods.fml.common.network.NetworkRegistry import cpw.mods.fml.common.registry.TickRegistry import cpw.mods.fml.relauncher.Side -import li.cil.oc.client.renderer.WirelessNetworkDebugRenderer import li.cil.oc.client.renderer.block.BlockRenderer import li.cil.oc.client.renderer.item.UpgradeRenderer import li.cil.oc.client.renderer.tileentity._ +import li.cil.oc.client.renderer.WirelessNetworkDebugRenderer import li.cil.oc.common.{Proxy => CommonProxy, tileentity} import li.cil.oc.{Items, Settings, OpenComputers} import net.minecraft.client.Minecraft @@ -51,6 +51,8 @@ private[oc] class Proxy extends CommonProxy { manager.registerReloadListener(TexturePreloader) case _ => } + + KeyBindingRegistry.registerKeyBinding(KeyBindings.Handler) } 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..beb255984 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.keyCode) && 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 aecd3fecb..0019e28e8 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.ForgeDirection import org.lwjgl.input @@ -329,9 +330,14 @@ class Delegator[Child <: Delegate](id: Int) extends Block(id, 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.keyCode))) + } } 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 02cf410ef..98623ea86 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,16 @@ 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.IconRegister import net.minecraft.entity.player.EntityPlayer import net.minecraft.item.{EnumRarity, ItemStack} -import net.minecraft.util.Icon +import net.minecraft.util.{StatCollector, Icon} import net.minecraft.world.World +import org.lwjgl.input trait Delegate { val parent: Delegator @@ -47,6 +51,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.keyCode))) + } 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 1be94cd79..7fab3faa4 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.IconRegister 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, Icon} 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(id: Int) extends Item(id) { setHasSubtypes(true) @@ -118,9 +116,6 @@ class Delegator(id: Int) extends Item(id) { 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 a16c9ad99..67f207b89 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 80a685104..635f5b0a4 100644 --- a/src/main/scala/li/cil/oc/util/ItemCosts.scala +++ b/src/main/scala/li/cil/oc/util/ItemCosts.scala @@ -1,10 +1,11 @@ package li.cil.oc.util import java.util -import li.cil.oc.Items +import li.cil.oc.{Settings, Items} import net.minecraft.block.Block 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 @@ -44,7 +45,7 @@ object ItemCosts { terminate(Item.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..a3b97ffba 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.keyCode))) } else { val nl = """\[nl\]""" From 0d446cd1a8d477910c58c5281bed52816d963983 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20N=C3=BCcke?= Date: Wed, 9 Apr 2014 13:00:34 +0200 Subject: [PATCH 3/3] Fixed config upgrading when coming directly from much older versions. --- build.properties | 2 +- src/main/scala/li/cil/oc/Settings.scala | 2 +- src/main/scala/li/cil/oc/util/ItemCosts.scala | 1 + 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/build.properties b/build.properties index e8ff294a3..1787a94b0 100644 --- a/build.properties +++ b/build.properties @@ -1,6 +1,6 @@ minecraft.version=1.6.4 forge.version=9.11.1.964 -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/scala/li/cil/oc/Settings.scala b/src/main/scala/li/cil/oc/Settings.scala index 3bdab0c01..69eb7a133 100644 --- a/src/main/scala/li/cil/oc/Settings.scala +++ b/src/main/scala/li/cil/oc/Settings.scala @@ -40,7 +40,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/util/ItemCosts.scala b/src/main/scala/li/cil/oc/util/ItemCosts.scala index 635f5b0a4..7143b5b49 100644 --- a/src/main/scala/li/cil/oc/util/ItemCosts.scala +++ b/src/main/scala/li/cil/oc/util/ItemCosts.scala @@ -41,6 +41,7 @@ object ItemCosts { terminate(Item.netherQuartz) terminate(Item.netherStar) terminate(Item.redstone) + terminate(Item.silk) terminate(Item.slimeBall) terminate(Item.stick)