From aa546dfce53e42f1ad700f7ac7b92bbdad9228a8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20N=C3=BCcke?= Date: Mon, 30 May 2016 20:46:53 +0200 Subject: [PATCH] I think this should work. Closes #1839. --- src/main/scala/li/cil/oc/client/PacketHandler.scala | 6 ++++++ src/main/scala/li/cil/oc/common/PacketType.scala | 1 + .../li/cil/oc/common/nanomachines/NeuralNetwork.scala | 11 ++++++++--- src/main/scala/li/cil/oc/server/PacketSender.scala | 8 ++++++++ 4 files changed, 23 insertions(+), 3 deletions(-) diff --git a/src/main/scala/li/cil/oc/client/PacketHandler.scala b/src/main/scala/li/cil/oc/client/PacketHandler.scala index 31bf47bfa..ea3ca4563 100644 --- a/src/main/scala/li/cil/oc/client/PacketHandler.scala +++ b/src/main/scala/li/cil/oc/client/PacketHandler.scala @@ -5,6 +5,7 @@ import java.io.EOFException import cpw.mods.fml.common.eventhandler.SubscribeEvent import cpw.mods.fml.common.network.FMLNetworkEvent.ClientCustomPacketEvent import li.cil.oc.Localization +import li.cil.oc.OpenComputers import li.cil.oc.Settings import li.cil.oc.api import li.cil.oc.api.event.FileSystemAccessEvent @@ -43,6 +44,7 @@ object PacketHandler extends CommonPacketHandler { case PacketType.AbstractBusState => onAbstractBusState(p) case PacketType.Analyze => onAnalyze(p) case PacketType.ChargerState => onChargerState(p) + case PacketType.ClientLog => onClientLog(p) case PacketType.ColorChange => onColorChange(p) case PacketType.ComputerState => onComputerState(p) case PacketType.ComputerUserList => onComputerUserList(p) @@ -117,6 +119,10 @@ object PacketHandler extends CommonPacketHandler { case _ => // Invalid packet. } + def onClientLog(p: PacketParser) = { + OpenComputers.log.info(p.readUTF()) + } + def onColorChange(p: PacketParser) = p.readTileEntity[Colored]() match { case Some(t) => diff --git a/src/main/scala/li/cil/oc/common/PacketType.scala b/src/main/scala/li/cil/oc/common/PacketType.scala index 0dd5168a9..807520dea 100644 --- a/src/main/scala/li/cil/oc/common/PacketType.scala +++ b/src/main/scala/li/cil/oc/common/PacketType.scala @@ -6,6 +6,7 @@ object PacketType extends Enumeration { AbstractBusState, Analyze, ChargerState, + ClientLog, ColorChange, ComputerState, ComputerUserList, diff --git a/src/main/scala/li/cil/oc/common/nanomachines/NeuralNetwork.scala b/src/main/scala/li/cil/oc/common/nanomachines/NeuralNetwork.scala index 47f7d6602..cbec0f8eb 100644 --- a/src/main/scala/li/cil/oc/common/nanomachines/NeuralNetwork.scala +++ b/src/main/scala/li/cil/oc/common/nanomachines/NeuralNetwork.scala @@ -6,14 +6,15 @@ import li.cil.oc.api import li.cil.oc.api.Persistable import li.cil.oc.api.nanomachines.Behavior import li.cil.oc.api.nanomachines.BehaviorProvider +import li.cil.oc.server.PacketSender import li.cil.oc.util.ExtendedNBT._ import net.minecraft.entity.player.EntityPlayer +import net.minecraft.entity.player.EntityPlayerMP import net.minecraft.nbt.NBTTagCompound import net.minecraft.util.ChatComponentText import net.minecraft.util.EnumChatFormatting import net.minecraftforge.common.util.Constants.NBT -import scala.StringBuilder import scala.collection.convert.WrapAsScala._ import scala.collection.mutable import scala.util.Random @@ -97,7 +98,11 @@ class NeuralNetwork(controller: ControllerImpl) extends Persistable { // Enter debug configuration, one input -> one behavior, and list mapping in console. def debug(): Unit = { - OpenComputers.log.info(s"Creating debug configuration for nanomachines in player ${controller.player.getDisplayName}.") + val log = controller.player match { + case playerMP: EntityPlayerMP => (s: String) => PacketSender.sendClientLog(s, playerMP) + case _ => (s: String) => OpenComputers.log.info(s) + } + log(s"Creating debug configuration for nanomachines in player ${controller.player.getDisplayName}.") behaviors.clear() behaviors ++= api.Nanomachines.getProviders. @@ -114,7 +119,7 @@ class NeuralNetwork(controller: ControllerImpl) extends Persistable { triggers += trigger behavior.inputs += trigger - OpenComputers.log.info(s"$i -> ${behavior.behavior.getNameHint} (${behavior.behavior.getClass.toString})") + log(s"$i -> ${behavior.behavior.getNameHint} (${behavior.behavior.getClass.toString})") } } diff --git a/src/main/scala/li/cil/oc/server/PacketSender.scala b/src/main/scala/li/cil/oc/server/PacketSender.scala index a8ea39da0..093a75484 100644 --- a/src/main/scala/li/cil/oc/server/PacketSender.scala +++ b/src/main/scala/li/cil/oc/server/PacketSender.scala @@ -50,6 +50,14 @@ object PacketSender { pb.sendToPlayersNearTileEntity(t) } + def sendClientLog(line: String, player: EntityPlayerMP) { + val pb = new CompressedPacketBuilder(PacketType.ClientLog) + + pb.writeUTF(line) + + pb.sendToPlayer(player) + } + def sendColorChange(t: Colored) { val pb = new SimplePacketBuilder(PacketType.ColorChange)