added reader not WIP

This commit is contained in:
Johannes Lohrer 2013-12-17 23:49:05 +01:00
parent 073ef1fee5
commit 717de3f468
5 changed files with 121 additions and 0 deletions

View File

@ -32,6 +32,7 @@ object Items {
var crafting: item.Crafting = null
var generator: item.Generator = null
var solarGenerator: item.SolarGenerator = null
var reader:item.Reader = null
// ----------------------------------------------------------------------- //
// Crafting
@ -106,6 +107,7 @@ object Items {
//new for next release
solarGenerator = new item.SolarGenerator(multi)
reader = new item.Reader(multi)
OreDictionary.registerOre("nuggetIron", ironNugget.createItemStack())
}

View File

@ -34,6 +34,7 @@ class Proxy {
api.Driver.add(driver.item.GraphicsCard)
api.Driver.add(driver.item.Memory)
api.Driver.add(driver.item.NetworkCard)
api.Driver.add(driver.item.Reader)
api.Driver.add(driver.item.RedstoneCard)
api.Driver.add(driver.item.WirelessNetworkCard)

View File

@ -0,0 +1,25 @@
package li.cil.oc.common.item
import java.util
import li.cil.oc.Settings
import li.cil.oc.util.Tooltip
import net.minecraft.client.renderer.texture.IconRegister
import net.minecraft.entity.player.EntityPlayer
import net.minecraft.item.{EnumRarity, ItemStack}
class Reader(val parent: Delegator) extends Delegate {
val unlocalizedName = "Reader"
override def rarity = EnumRarity.epic
override def tooltipLines(stack: ItemStack, player: EntityPlayer, tooltip: util.List[String], advanced: Boolean) {
tooltip.addAll(Tooltip.get(unlocalizedName))
super.tooltipLines(stack, player, tooltip, advanced)
}
override def registerIcons(iconRegister: IconRegister) = {
super.registerIcons(iconRegister)
icon = iconRegister.registerIcon(Settings.resourceDomain + ":upgrade_reader")
}
}

View File

@ -0,0 +1,78 @@
package li.cil.oc.server.component
import li.cil.oc.api.network._
import li.cil.oc.util.ExtendedNBT._
import li.cil.oc.{Settings, api}
import net.minecraft.entity.item.EntityItem
import net.minecraft.item.ItemStack
import net.minecraft.nbt.NBTTagCompound
import net.minecraft.tileentity.{TileEntity => MCTileEntity, TileEntitySign, TileEntityFurnace}
import scala.Some
import li.cil.oc.common.tileentity.Rotatable
class Reader(val owner: MCTileEntity) extends ManagedComponent {
val node = api.Network.newNode(this, Visibility.Network).
withComponent("reader", Visibility.Neighbors).
withConnector().
create()
// ----------------------------------------------------------------------- //
@LuaCallback("read")
def read(context: RobotContext, args: Arguments): Array[AnyRef] = {
owner match {
case rotatable: Rotatable => {
val te = rotatable.getWorldObj.getBlockTileEntity(rotatable.xCoord+rotatable.facing.offsetX,rotatable.yCoord+rotatable.facing.offsetY,rotatable.zCoord+rotatable.facing.offsetZ)
te match{
case sign:TileEntitySign=>{
val text = sign.signText.mkString("\n")
return result(text)
}
case _=>
}
}
case _ =>
}
result(Unit, "no sign")
}
@LuaCallback("write")
def write(context: Context, args: Arguments): Array[AnyRef] = {
owner match {
case rotatable: Rotatable => {
val te = rotatable.getWorldObj.getBlockTileEntity(rotatable.xCoord+rotatable.facing.offsetX,rotatable.yCoord+rotatable.facing.offsetY,rotatable.zCoord+rotatable.facing.offsetZ)
te match{
case sign:TileEntitySign=>{
val text = args.checkString(0).split("\n")
val number = Math.min(4,text.size)
for(i <-0 to number-1){
var line = text(i)
if(line.size>15){
line = line.substring(0,15)
}
sign.signText(i)= line
}
sign.worldObj.markBlockForUpdate(rotatable.xCoord+rotatable.facing.offsetX,rotatable.yCoord+rotatable.facing.offsetY,rotatable.zCoord+rotatable.facing.offsetZ)
return result(true)
}
case _=>
}
}
case _ =>
}
result(Unit, "no sign")
}
// ----------------------------------------------------------------------- //
override val canUpdate = false
// ----------------------------------------------------------------------- //
}

View File

@ -0,0 +1,15 @@
package li.cil.oc.server.driver.item
import li.cil.oc.Items
import li.cil.oc.api.driver.Slot
import li.cil.oc.server.component
import net.minecraft.item.ItemStack
import net.minecraft.tileentity.{TileEntity => MCTileEntity}
object Reader extends Item {
override def worksWith(stack: ItemStack) = isOneOf(stack, Items.reader)
override def createEnvironment(stack: ItemStack, container: MCTileEntity) = new component.Reader(container)
override def slot(stack: ItemStack) = Slot.Upgrade
}