Populate tablet_use info with sign text if sign upgrade is installed, closes #988.

This commit is contained in:
Florian Nücke 2015-03-30 23:50:58 +02:00
parent 4d5c923c42
commit f4bcb0718e

View File

@ -2,12 +2,16 @@ package li.cil.oc.server.component
import cpw.mods.fml.common.eventhandler.Event import cpw.mods.fml.common.eventhandler.Event
import li.cil.oc.Settings import li.cil.oc.Settings
import li.cil.oc.api
import li.cil.oc.api.driver.EnvironmentHost import li.cil.oc.api.driver.EnvironmentHost
import li.cil.oc.api.internal import li.cil.oc.api.internal
import li.cil.oc.api.network.Message
import li.cil.oc.api.prefab import li.cil.oc.api.prefab
import li.cil.oc.util.BlockPosition import li.cil.oc.util.BlockPosition
import li.cil.oc.util.ExtendedWorld._ import li.cil.oc.util.ExtendedWorld._
import net.minecraft.entity.player.EntityPlayer import net.minecraft.entity.player.EntityPlayer
import net.minecraft.item.ItemStack
import net.minecraft.nbt.NBTTagCompound
import net.minecraft.tileentity.TileEntitySign import net.minecraft.tileentity.TileEntitySign
import net.minecraft.world.WorldServer import net.minecraft.world.WorldServer
import net.minecraftforge.common.MinecraftForge import net.minecraftforge.common.MinecraftForge
@ -62,4 +66,20 @@ abstract class UpgradeSign extends prefab.ManagedEnvironment {
MinecraftForge.EVENT_BUS.post(event) MinecraftForge.EVENT_BUS.post(event)
!(event.isCanceled || event.getResult == Event.Result.DENY) !(event.isCanceled || event.getResult == Event.Result.DENY)
} }
override def onMessage(message: Message): Unit = {
super.onMessage(message)
if (message.name == "tablet.use") message.source.host match {
case machine: api.machine.Machine => (machine.host, message.data) match {
case (tablet: internal.Tablet, Array(nbt: NBTTagCompound, stack: ItemStack, player: EntityPlayer, blockPos: BlockPosition, side: ForgeDirection, hitX: java.lang.Float, hitY: java.lang.Float, hitZ: java.lang.Float)) =>
host.world.getTileEntity(blockPos) match {
case sign: TileEntitySign =>
nbt.setString("signText", sign.signText.mkString("\n"))
case _ =>
}
case _ => // Ignore.
}
case _ => // Ignore.
}
}
} }