From e885fafe41b19c24ab22688cdc0aa08a9ab9ea12 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20N=C3=BCcke?= Date: Sat, 9 Nov 2013 23:38:17 +0100 Subject: [PATCH] added analyzer tool: right click on a block show its address. for computers it also shows the last error message, if any (if the computer crashed). for multi screens it always shows the address of the origin. shift-rightclick copies the address to the clipboard. --- assets/opencomputers/lang/de_DE.lang | 2 +- assets/opencomputers/lang/en_US.lang | 1 + .../opencomputers/textures/items/analyzer.png | Bin 0 -> 244 bytes li/cil/oc/common/item/Analyzer.scala | 54 ++++++++++++++++++ 4 files changed, 56 insertions(+), 1 deletion(-) create mode 100644 assets/opencomputers/textures/items/analyzer.png create mode 100644 li/cil/oc/common/item/Analyzer.scala diff --git a/assets/opencomputers/lang/de_DE.lang b/assets/opencomputers/lang/de_DE.lang index 9e841d9ec..ff30b8b2f 100644 --- a/assets/opencomputers/lang/de_DE.lang +++ b/assets/opencomputers/lang/de_DE.lang @@ -9,8 +9,8 @@ oc.block.ScreenBasic.name=Einfacher Bildschirm oc.block.ScreenProfessional.name=Professioneller Bildschirm oc.container.Computer=Computer oc.container.DiskDrive=Diskettenlaufwerk +oc.item.Analyzer.name=Messgerät oc.item.Disk.name=Diskette -oc.item.GraphicsCard.name= oc.item.GraphicsCardAdvanced.name=Hochwertige Grafikkarte oc.item.GraphicsCardBasic.name=Einfache Grafikkarte oc.item.GraphicsCardProfessional.name=Professionelle Grafikkarte diff --git a/assets/opencomputers/lang/en_US.lang b/assets/opencomputers/lang/en_US.lang index bb260863f..595c6651a 100644 --- a/assets/opencomputers/lang/en_US.lang +++ b/assets/opencomputers/lang/en_US.lang @@ -9,6 +9,7 @@ oc.block.ScreenBasic.name=Basic Screen oc.block.ScreenProfessional.name=Professional Screen oc.container.Computer=Computer oc.container.DiskDrive=Disk Drive +oc.item.Analyzer.name=Analyzer oc.item.Disk.name=Floppy Disk oc.item.GraphicsCardAdvanced.name=Advanced Graphics Card oc.item.GraphicsCardBasic.name=Basic Graphics Card diff --git a/assets/opencomputers/textures/items/analyzer.png b/assets/opencomputers/textures/items/analyzer.png new file mode 100644 index 0000000000000000000000000000000000000000..cb308a1912f805ae7bc7e3fdb7de604da822d10f GIT binary patch literal 244 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!WQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2!fo#Q>iWR}L1T6E9y+oH$X=KXBQyWyg*kGdDLE(-GUVr|{;@ zrvLx{uiIz=vVyxL$S)Ykg#rdIf5uNh;UG^J$B>F!IsMT>2NXD%mA77~`p+CL81(zb zhsS<19Jh%75SI1~Y!cCUVeBLrFhS%uORtmd24$DI2Q~#>Wwv%c;qWx>C4cG1j1!k4 f&i(lJO(=mOJc3Q8ZHLbppy>>ru6{1-oD!M + if (!world.isRemote) { + computer.instance.lastError match { + case Some(value) => player.addChatMessage("Last error: " + value) + case _ => + } + processAddress(computer, player) + } + true + case screen: tileentity.Screen => + if (!world.isRemote) { + processAddress(screen.origin, player) + } + true + case environment: Environment => + if (!world.isRemote) { + processAddress(environment, player) + } + true + case _ => super.onItemUse(item, player, world, x, y, z, side, hitX, hitY, hitZ) + } + } + + private def processAddress(environment: Environment, player: EntityPlayer) { + val address = environment.node.address() + player.addChatMessage("Address: " + address) + if (player.isSneaking) { + PacketSender.sendClipboard(address, player.asInstanceOf[Player]) + } + } + + override def registerIcons(iconRegister: IconRegister) { + super.registerIcons(iconRegister) + + icon = iconRegister.registerIcon(Config.resourceDomain + ":analyzer") + } +}