general clean up and formatting; removed gt api import; returning y position together with x and y in nav upgrade

This commit is contained in:
Florian Nücke 2013-12-23 21:19:20 +01:00
parent 4fd46c3f48
commit 8fbbd92f99
14 changed files with 172 additions and 245 deletions

View File

@ -37,6 +37,7 @@ oc:item.GraphicsCard1.name=Hochwertige Grafikkarte
oc:item.GraphicsCard2.name=Ausgezeichnete Grafikkarte oc:item.GraphicsCard2.name=Ausgezeichnete Grafikkarte
oc:item.HardDiskDrive.name=Festplatte oc:item.HardDiskDrive.name=Festplatte
oc:item.IronNugget.name=Eisennugget oc:item.IronNugget.name=Eisennugget
oc:item.Locator.name=Navigationsupgrade
oc:item.Memory.name=Speicher oc:item.Memory.name=Speicher
oc:item.Microchip0.name=Einfacher Microchip oc:item.Microchip0.name=Einfacher Microchip
oc:item.Microchip1.name=Hochwertiger Microchip oc:item.Microchip1.name=Hochwertiger Microchip
@ -45,7 +46,7 @@ oc:item.NetworkCard.name=Netzwerkkarte
oc:item.NumPad.name=Ziffernblock oc:item.NumPad.name=Ziffernblock
oc:item.PrintedCircuitBoard.name=Gedruckte Leiterplatte (PCB) oc:item.PrintedCircuitBoard.name=Gedruckte Leiterplatte (PCB)
oc:item.RawCircuitBoard.name=Leiterplattenrohling oc:item.RawCircuitBoard.name=Leiterplattenrohling
oc:item.Reader.name=Leser Upgrade oc:item.Reader.name=Schild-E/A Upgrade
oc:item.RedstoneCard.name=Redstonekarte oc:item.RedstoneCard.name=Redstonekarte
oc:item.SolarGenerator.name=Solar Generator Upgrade oc:item.SolarGenerator.name=Solar Generator Upgrade
oc:item.Transistor.name=Transistor oc:item.Transistor.name=Transistor
@ -91,7 +92,7 @@ oc:tooltip.Generator=Kann verwendet werden um unterwegs Energie aus Brennstoffen
oc:tooltip.GraphicsCard=Erlaubt es den angezeigten Inhalt von Bildschirmen zu ändern.[nl] Höchstauflösung: §f%sx%s§7.[nl] Maximale Farbtiefe: §f%s§7.[nl] Operationen/Tick: §f%s§7. oc:tooltip.GraphicsCard=Erlaubt es den angezeigten Inhalt von Bildschirmen zu ändern.[nl] Höchstauflösung: §f%sx%s§7.[nl] Maximale Farbtiefe: §f%s§7.[nl] Operationen/Tick: §f%s§7.
oc:tooltip.IronNugget=Ein Nugget das aus Eisen besteht, darum wird es ja auch Eisennugget genannt, duh... 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.Keyboard=Kann an Bildschirmen befestigt werden um auf ihnen zu tippen.
oc:tooltip.Locator=Kann benutzt werden um die Position des Robters zu bestimmen. Die Position ist relativ zur Mitte der Karte, die im Locator verbaut wurde. oc:tooltip.Locator=Erlaubt es Robotern ihre Position und Ausrichtung zu bestimmen. Die Position ist relativ zur Mitte der Karte, die in diesem Upgrade verbaut wurde.
oc:tooltip.Memory=Braucht ein jeder Computer um zu starten. Je mehr vorhanden, desto komplexere Programme können ausgeführt werden. 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.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. oc:tooltip.NetworkCard=Erlaubt es Computern die über mehrere Blöcke miteinander verbunden sind (z.B. Kabel) mittels Netzwerknachrichten zu kommunizieren.
@ -103,7 +104,7 @@ oc:tooltip.PowerConverter=Wandelt Strom anderer Mods in den internen Energietyp
oc:tooltip.PowerDistributor=Verteilt Energie zwischen mehreren Netwerken. Nützlich um Energie mit einem Wandler auf mehrere Subnetze, die voneinander getrennt sein sollen, zu verteilen. oc:tooltip.PowerDistributor=Verteilt Energie zwischen mehreren Netwerken. Nützlich um Energie mit einem Wandler auf mehrere Subnetze, die voneinander getrennt sein sollen, zu verteilen.
oc:tooltip.PrintedCircuitBoard=Hierauf basieren alle alle Erweiterungskarten, Speicher und so weiter. oc:tooltip.PrintedCircuitBoard=Hierauf basieren alle alle Erweiterungskarten, Speicher und so weiter.
oc:tooltip.RawCircuitBoard=Kann in einer Ofenkompatiblen Schmelze freier Wahl gehärtet werden. oc:tooltip.RawCircuitBoard=Kann in einer Ofenkompatiblen Schmelze freier Wahl gehärtet werden.
oc:tooltip.Reader=Erlaubt das lesen und schreiben von Schildern. oc:tooltip.Reader=Erlaubt das Lesen und Schreiben von Text auf Schildern.
oc:tooltip.Redstone=Erlaubt das Lesen und Ausgeben von Redstonesignalen um den Block herum. Kann von jedem Computer der mit dem Block verbunden ist gesteuert werden. Dieser Block ist quasi wie eine externe Redstonekarte. oc:tooltip.Redstone=Erlaubt das Lesen und Ausgeben von Redstonesignalen um den Block herum. Kann von jedem Computer der mit dem Block verbunden ist gesteuert werden. Dieser Block ist quasi wie eine externe Redstonekarte.
oc:tooltip.RedstoneCard.RedLogic=§fRedLogic§7 wird §aunterstützt§7. oc:tooltip.RedstoneCard.RedLogic=§fRedLogic§7 wird §aunterstützt§7.
oc:tooltip.RedstoneCard.RedNet=§fRedNet§7 wird §aunterstützt§7. oc:tooltip.RedstoneCard.RedNet=§fRedNet§7 wird §aunterstützt§7.
@ -113,7 +114,7 @@ oc:tooltip.Robot_Level=§fStufe§7: §a%s§7.
oc:tooltip.Robot_StoredEnergy=§fGespeicherte Energie§7: §a%s§7. oc:tooltip.Robot_StoredEnergy=§fGespeicherte Energie§7: §a%s§7.
oc:tooltip.Router=Erlaubt es mehrere Netzwerke miteinander zu verbinden. Leitet ausschließlich Netzwerknachrichten weiter, Komponenten "hinter" dem Router sind nicht sichtbar. Nützlich um Netzwerke zu trennen, jedoch nach wie vor Kommunikation zwischen den Netzwerken zu erlauben, z.b. mittels Netzwerkkarten. oc:tooltip.Router=Erlaubt es mehrere Netzwerke miteinander zu verbinden. Leitet ausschließlich Netzwerknachrichten weiter, Komponenten "hinter" dem Router sind nicht sichtbar. Nützlich um Netzwerke zu trennen, jedoch nach wie vor Kommunikation zwischen den Netzwerken zu erlauben, z.b. mittels Netzwerkkarten.
oc:tooltip.Screen=Zeigt Text an, gesteuert von Grafikkarten in Computern.[nl] Höchstauflösung: §f%sx%s§7.[nl] Maximale Farbtiefe: §f%s§7. oc:tooltip.Screen=Zeigt Text an, gesteuert von Grafikkarten in Computern.[nl] Höchstauflösung: §f%sx%s§7.[nl] Maximale Farbtiefe: §f%s§7.
oc:tooltip.SolarGenerator=Kann verwendet werden um unterwegs Energie aus Sonnenlicht zu generieren.[nl] §fEffizienz§7: §a%s%%§7 oc:tooltip.SolarGenerator=Kann verwendet werden um unterwegs Energie aus Sonnenlicht zu generieren. Benötigt eine ungehinderte Sicht zum Himmel über dem Roboter. Generiert Energie mit %s%% der Geschwindigkeit einer Stirling Engine.
oc:tooltip.TooLong=Shift gedrückt halten für mehr Infos. 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.Transistor=Elementarer Baustein der meisten Computerkomponenten. Nicht zu verwechseln mit Steinelementaren.
oc:tooltip.WirelessNetworkCard=Erlaubt das drahtlose Senden von Netzwerknachrichten, zusätzlich zu normalen. Drahtlose Nachrichten werden nur gesendet, wenn eine §fSignalstärke§7 festgelegt wurde! oc:tooltip.WirelessNetworkCard=Erlaubt das drahtlose Senden von Netzwerknachrichten, zusätzlich zu normalen. Drahtlose Nachrichten werden nur gesendet, wenn eine §fSignalstärke§7 festgelegt wurde!

View File

@ -42,7 +42,7 @@ oc:item.GraphicsCard2.name=Superior Graphics Card
oc:item.Acid.name=Grog oc:item.Acid.name=Grog
oc:item.HardDiskDrive.name=Hard Disk Drive oc:item.HardDiskDrive.name=Hard Disk Drive
oc:item.IronNugget.name=Iron Nugget oc:item.IronNugget.name=Iron Nugget
oc:item.Locator.name=Locator oc:item.Locator.name=Navigation Upgrade
oc:item.Memory.name=Memory oc:item.Memory.name=Memory
oc:item.Microchip0.name=Simple Microchip oc:item.Microchip0.name=Simple Microchip
oc:item.Microchip1.name=Advanced Microchip oc:item.Microchip1.name=Advanced Microchip
@ -51,7 +51,7 @@ oc:item.NetworkCard.name=Network Card
oc:item.NumPad.name=Numeric Keypad oc:item.NumPad.name=Numeric Keypad
oc:item.PrintedCircuitBoard.name=Printed Circuit Board (PCB) oc:item.PrintedCircuitBoard.name=Printed Circuit Board (PCB)
oc:item.RawCircuitBoard.name=Raw Circuit Board oc:item.RawCircuitBoard.name=Raw Circuit Board
oc:item.Reader.name=Reader Upgrade oc:item.Reader.name=Sign I/O Upgrade
oc:item.RedstoneCard.name=Redstone Card oc:item.RedstoneCard.name=Redstone Card
oc:item.SolarGenerator.name=Solar Generator Upgrade oc:item.SolarGenerator.name=Solar Generator Upgrade
oc:item.Transistor.name=Transistor oc:item.Transistor.name=Transistor
@ -97,7 +97,7 @@ oc:tooltip.Generator=Can be used to generate energy from fuel on the go. Burns i
oc:tooltip.GraphicsCard=Used to change what's displayed on screens.[nl] Maximum resolution: §f%sx%s§7.[nl] Maximum color depth: §f%s§7.[nl] Operations/tick: §f%s§7. oc:tooltip.GraphicsCard=Used to change what's displayed on screens.[nl] Maximum resolution: §f%sx%s§7.[nl] Maximum color depth: §f%s§7.[nl] Operations/tick: §f%s§7.
oc:tooltip.IronNugget=A nugget made of iron, that's why it's called an Iron Nugget, duh... 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.Keyboard=Can be attached to screens to allow typing on them.
oc:tooltip.Locator=Can be used to identify the position of the Robot. The position is relative to the center of the Map that is built in to the Locator. oc:tooltip.Locator=Can be used to determine the position and orientation of the robot. The position is relative to the center of the map that was used to craft this upgrade.
oc:tooltip.Memory=Required to get computers to run. The more you have, the more complex the programs you can run. 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.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. oc:tooltip.NetworkCard=Allows distant computers connected by other blocks (such as cable) to communicate by sending messages to each other.
@ -109,7 +109,7 @@ oc:tooltip.PowerConverter=Converts power from other mods to the internal energy
oc:tooltip.PowerDistributor=Distributes energy among different networks. This is useful for sharing power fed into your system from one converter among different sub-networks that should remain separate. oc:tooltip.PowerDistributor=Distributes energy among different networks. This is useful for sharing power fed into your system from one converter among different sub-networks that should remain separate.
oc:tooltip.PrintedCircuitBoard=The basic building block for expansion cards and memory and such. oc:tooltip.PrintedCircuitBoard=The basic building block for expansion cards and memory and such.
oc:tooltip.RawCircuitBoard=Can be hardened in any furnace compatible oven. oc:tooltip.RawCircuitBoard=Can be hardened in any furnace compatible oven.
oc:tooltip.Reader=Allows reading and writing to signs. oc:tooltip.Reader=Allows reading text on and writing text to signs.
oc:tooltip.Redstone=Allows reading and emitting redstone signals around the block. Can be controlled by any computer the block is connected to. This is basically like an external redstone card. oc:tooltip.Redstone=Allows reading and emitting redstone signals around the block. Can be controlled by any computer the block is connected to. This is basically like an external redstone card.
oc:tooltip.RedstoneCard.RedLogic=§fRedLogic§7 is §asupported§7. oc:tooltip.RedstoneCard.RedLogic=§fRedLogic§7 is §asupported§7.
oc:tooltip.RedstoneCard.RedNet=§fRedNet§7 is §asupported§7. oc:tooltip.RedstoneCard.RedNet=§fRedNet§7 is §asupported§7.
@ -120,7 +120,7 @@ oc:tooltip.Robot_Level=§fLevel§7: §a%s§7.
oc:tooltip.Robot_StoredEnergy=§fStored energy§7: §a%s§7. oc:tooltip.Robot_StoredEnergy=§fStored energy§7: §a%s§7.
oc:tooltip.Router=Allows connecting different networks to each other. Only network messages will be passed along, components will not be visible through this. Use this to separate networks while still allowing communication using Network Cards, for example. oc:tooltip.Router=Allows connecting different networks to each other. Only network messages will be passed along, components will not be visible through this. Use this to separate networks while still allowing communication using Network Cards, for example.
oc:tooltip.Screen=Display text, controlled by a Graphics Card in a Case.[nl] Maximum resolution: §f%sx%s§7.[nl] Maximum color depth: §f%s§7. oc:tooltip.Screen=Display text, controlled by a Graphics Card in a Case.[nl] Maximum resolution: §f%sx%s§7.[nl] Maximum color depth: §f%s§7.
oc:tooltip.SolarGenerator=Can be used to generate energy from sunlight on the go.[nl] §fEfficiency§7: §a%s%%§7 oc:tooltip.SolarGenerator=Can be used to generate energy from sunlight on the go. Requires a clear line of sight to the sky above the robot. Generates energy at %s%% of the speed of a Stirling Engine.
oc:tooltip.TooLong=Hold shift for a detailed tooltip. oc:tooltip.TooLong=Hold shift 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.Transistor=A basic element in most other computer parts. It's a bit twisted, but it does the job.
oc:tooltip.WirelessNetworkCard=Allows wireless sending of network messages in addition to normal ones. Make sure to set the §fsignal strength§7 or no wireless packet will be sent! oc:tooltip.WirelessNetworkCard=Allows wireless sending of network messages in addition to normal ones. Make sure to set the §fsignal strength§7 or no wireless packet will be sent!

View File

@ -3,8 +3,8 @@ package li.cil.oc
import cpw.mods.fml.common.registry.GameRegistry import cpw.mods.fml.common.registry.GameRegistry
import li.cil.oc.common.block._ import li.cil.oc.common.block._
import li.cil.oc.common.tileentity import li.cil.oc.common.tileentity
import net.minecraftforge.oredict.OreDictionary
import net.minecraft.item.ItemStack import net.minecraft.item.ItemStack
import net.minecraftforge.oredict.OreDictionary
object Blocks { object Blocks {
var blockSimple: SimpleDelegator = _ var blockSimple: SimpleDelegator = _
@ -75,8 +75,6 @@ object Blocks {
redstone = new Redstone(blockSimpleWithRedstone) redstone = new Redstone(blockSimpleWithRedstone)
register("craftingMonitorBasic", screen1.createItemStack()) register("craftingMonitorBasic", screen1.createItemStack())
register("craftingMonitorAdvanced", screen2.createItemStack()) register("craftingMonitorAdvanced", screen2.createItemStack())
register("craftingMonitorElite", screen3.createItemStack()) register("craftingMonitorElite", screen3.createItemStack())
@ -86,11 +84,11 @@ object Blocks {
register("craftingWireCopper", cable.createItemStack()) register("craftingWireCopper", cable.createItemStack())
register("craftingCapacitor", capacitor.createItemStack()) register("craftingCapacitor", capacitor.createItemStack())
register("craftingDiscDrive", diskDrive.createItemStack()) register("craftingDiscDrive", diskDrive.createItemStack())
def register(name:String,item:ItemStack){ }
if(!OreDictionary.getOres(name).contains(item)){
println("registered "+name) private def register(name: String, item: ItemStack) {
OreDictionary.registerOre(name,item) if (!OreDictionary.getOres(name).contains(item)) {
} OreDictionary.registerOre(name, item)
} }
} }
} }

View File

@ -1,13 +1,11 @@
package li.cil.oc package li.cil.oc
import cpw.mods.fml.common.ICraftingHandler import cpw.mods.fml.common.ICraftingHandler
import li.cil.oc.server.driver.Registry
import li.cil.oc.util.ExtendedNBT._
import net.minecraft.entity.player.EntityPlayer import net.minecraft.entity.player.EntityPlayer
import net.minecraft.inventory.IInventory import net.minecraft.inventory.IInventory
import net.minecraft.item.{ItemMap, Item, ItemStack} import net.minecraft.item.{ItemMap, Item, ItemStack}
import net.minecraftforge.oredict.OreDictionary
import net.minecraft.world.storage.{MapData, MapInfo}
import li.cil.oc.server.driver.Registry
import net.minecraft.nbt.NBTTagCompound
object CraftingHandler extends ICraftingHandler { object CraftingHandler extends ICraftingHandler {
override def onCrafting(player: EntityPlayer, craftedStack: ItemStack, inventory: IInventory) = { override def onCrafting(player: EntityPlayer, craftedStack: ItemStack, inventory: IInventory) = {
@ -32,38 +30,39 @@ object CraftingHandler extends ICraftingHandler {
} }
} }
} }
if (!player.getEntityWorld.isRemote&&craftedStack.isItemEqual(Items.locator.createItemStack())) {
val nbt = Registry.driverFor(craftedStack) match { if (!player.getEntityWorld.isRemote && craftedStack.isItemEqual(Items.locator.createItemStack())) {
case Some(driver)=>driver.dataTag(craftedStack) Registry.driverFor(craftedStack) match {
case _ => null case Some(driver) =>
} for (i <- 0 to inventory.getSizeInventory) {
val compOld = nbt.getCompoundTag(Settings.namespace +"map") val stack = inventory.getStackInSlot(i)
for (i <- 0 to inventory.getSizeInventory) { if (stack != null) {
val stack = inventory.getStackInSlot(i) // FIXME this could cause the built-in map to be re-used if the
if(stack!= null&&stack.isItemEqual(Items.locator.createItemStack())&&compOld!=null){ // crafting inventory is the player's inventory - which is the
val container = ItemStack.loadItemStackFromNBT(compOld) // case for robots, for example - by it added to a slot not yet
println("created map") // checked but before the actual map to be used.
if (!player.inventory.addItemStackToInventory(container)) { if (stack.isItemEqual(Items.locator.createItemStack())) {
player.dropPlayerItem(container) // Restore the map currently used in the upgrade.
val nbt = driver.dataTag(stack)
val map = ItemStack.loadItemStackFromNBT(nbt.getCompoundTag(Settings.namespace + "map"))
if (!player.inventory.addItemStackToInventory(map)) {
player.dropPlayerItem(map)
}
}
else if (stack.getItem == Item.map) {
// Store information of the map used for crafting in the result.
val nbt = driver.dataTag(craftedStack)
val map = stack.getItem.asInstanceOf[ItemMap]
val info = map.getMapData(stack, player.getEntityWorld)
nbt.setInteger(Settings.namespace + "xCenter", info.xCenter)
nbt.setInteger(Settings.namespace + "zCenter", info.zCenter)
nbt.setInteger(Settings.namespace + "scale", 128 * (1 << info.scale))
nbt.setNewCompoundTag(Settings.namespace + "map", stack.writeToNBT)
}
}
} }
} case _ =>
else if(stack != null && stack.getItem== Item.map)
{
var map = stack.getItem.asInstanceOf[ItemMap]
val info = map.getMapData(stack, player.getEntityWorld)
nbt.setInteger(Settings.namespace +"xCenter",info.xCenter)
nbt.setInteger(Settings.namespace +"zCenter",info.zCenter)
nbt.setInteger(Settings.namespace +"scale",128*(1<<info.scale))
val comp = new NBTTagCompound()
stack.writeToNBT(comp)
nbt.setCompoundTag(Settings.namespace +"map",comp)
}
} }
} }
} }

View File

@ -2,8 +2,8 @@ package li.cil.oc
import cpw.mods.fml.common.registry.GameRegistry import cpw.mods.fml.common.registry.GameRegistry
import li.cil.oc.common.item import li.cil.oc.common.item
import net.minecraftforge.oredict.OreDictionary
import net.minecraft.item.ItemStack import net.minecraft.item.ItemStack
import net.minecraftforge.oredict.OreDictionary
object Items { object Items {
var multi: item.Delegator = null var multi: item.Delegator = null
@ -32,9 +32,9 @@ object Items {
// Upgrades // Upgrades
var crafting: item.Crafting = null var crafting: item.Crafting = null
var generator: item.Generator = null var generator: item.Generator = null
var locator: item.Locator = null
var signUpgrade: item.Reader = null
var solarGenerator: item.SolarGenerator = null var solarGenerator: item.SolarGenerator = null
var reader:item.Reader = null
var locator:item.Locator = null
// ----------------------------------------------------------------------- // // ----------------------------------------------------------------------- //
// Crafting // Crafting
@ -106,13 +106,14 @@ object Items {
pcb = new item.PrintedCircuitBoard(multi) pcb = new item.PrintedCircuitBoard(multi)
card = new item.CardBase(multi) card = new item.CardBase(multi)
// v1.1.0
//new for next release
solarGenerator = new item.SolarGenerator(multi) solarGenerator = new item.SolarGenerator(multi)
reader = new item.Reader(multi) signUpgrade = new item.Reader(multi)
locator = new item.Locator(multi) locator = new item.Locator(multi)
registerExclusice("nuggetIron", ironNugget.createItemStack()) // ----------------------------------------------------------------------- //
registerExclusive("nuggetIron", ironNugget.createItemStack())
register("oc:craftingCircuitBoardRaw", rawCircuitBoard.createItemStack()) register("oc:craftingCircuitBoardRaw", rawCircuitBoard.createItemStack())
register("craftingCircuitBoardBasic", circuitBoard.createItemStack()) register("craftingCircuitBoardBasic", circuitBoard.createItemStack())
register("craftingCircuitBoardAdvanced", pcb.createItemStack()) register("craftingCircuitBoardAdvanced", pcb.createItemStack())
@ -120,39 +121,38 @@ object Items {
register("circuitBasic", chip1.createItemStack()) register("circuitBasic", chip1.createItemStack())
register("circuitAdvanced", chip2.createItemStack()) register("circuitAdvanced", chip2.createItemStack())
register("circuitElite", chip3.createItemStack()) register("circuitElite", chip3.createItemStack())
register("craftingTransistor",transistor.createItemStack()) register("craftingTransistor", transistor.createItemStack())
register("craftingControlUnit",cu.createItemStack()) register("craftingControlUnit", cu.createItemStack())
register("craftingALU",alu.createItemStack()) register("craftingALU", alu.createItemStack())
register("craftingCPU",cpu.createItemStack()) register("craftingCPU", cpu.createItemStack())
register("componentCardRedstone",rs.createItemStack()) register("componentCardRedstone", rs.createItemStack())
register("componentCardLand",lan.createItemStack()) register("componentCardLand", lan.createItemStack())
register("craftingGPUBasic",gpu1.createItemStack()) register("craftingGPUBasic", gpu1.createItemStack())
register("craftingGPUAdvanced",gpu2.createItemStack()) register("craftingGPUAdvanced", gpu2.createItemStack())
register("craftingGPUElite",gpu3.createItemStack()) register("craftingGPUElite", gpu3.createItemStack())
register("craftingRAMBasic",ram1.createItemStack()) register("craftingRAMBasic", ram1.createItemStack())
register("craftingRAMAdvanced",ram2.createItemStack()) register("craftingRAMAdvanced", ram2.createItemStack())
register("craftingRAMElite",ram3.createItemStack()) register("craftingRAMElite", ram3.createItemStack())
register("craftingHDDBasic",hdd1.createItemStack()) register("craftingHDDBasic", hdd1.createItemStack())
register("craftingHDDAdvanced",hdd2.createItemStack()) register("craftingHDDAdvanced", hdd2.createItemStack())
register("craftingHDDElite",hdd3.createItemStack()) register("craftingHDDElite", hdd3.createItemStack())
register("oc:craftingButtonGroup",buttonGroup.createItemStack()) register("oc:craftingButtonGroup", buttonGroup.createItemStack())
register("oc:craftingArrowKey",arrowKeys.createItemStack()) register("oc:craftingArrowKey", arrowKeys.createItemStack())
register("oc:craftingNumPad",numPad.createItemStack()) register("oc:craftingNumPad", numPad.createItemStack())
register("oc:craftingDisk",disk.createItemStack()) register("oc:craftingDisk", disk.createItemStack())
register("oc:craftingAcid",acid.createItemStack()) register("oc:craftingAcid", acid.createItemStack())
register("oc:craftingGenerator",generator.createItemStack()) register("oc:craftingGenerator", generator.createItemStack())
} }
def register(name:String,item:ItemStack){ def register(name: String, item: ItemStack) {
if(!OreDictionary.getOres(name).contains(item)){ if (!OreDictionary.getOres(name).contains(item)) {
println("registered "+name) OreDictionary.registerOre(name, item)
OreDictionary.registerOre(name,item)
} }
} }
def registerExclusice(name:String,item:ItemStack){
if(OreDictionary.getOres(name).isEmpty){ def registerExclusive(name: String, item: ItemStack) {
println("registered "+name) if (OreDictionary.getOres(name).isEmpty) {
OreDictionary.registerOre(name,item) OreDictionary.registerOre(name, item)
} }
} }
} }

View File

@ -1,21 +1,17 @@
package li.cil.oc package li.cil.oc
import com.typesafe.config.{Config, ConfigFactory}
import cpw.mods.fml.common.Loader import cpw.mods.fml.common.Loader
import cpw.mods.fml.common.registry.GameRegistry import cpw.mods.fml.common.registry.GameRegistry
import java.io.File
import java.net.URL
import net.minecraft.block.Block import net.minecraft.block.Block
import net.minecraft.item.crafting.FurnaceRecipes import net.minecraft.item.crafting.FurnaceRecipes
import net.minecraft.item.{ItemStack, Item} import net.minecraft.item.{ItemStack, Item}
import net.minecraftforge.oredict.{OreDictionary, ShapelessOreRecipe, ShapedOreRecipe} import net.minecraftforge.oredict.{OreDictionary, ShapelessOreRecipe, ShapedOreRecipe}
import gregtechmod.api.GregTech_API
import scala.collection.convert.wrapAsScala._
import com.typesafe.config.{ConfigValueType, Config, ConfigFactory}
import java.io.{IOException, FileOutputStream, File}
import scala.collection.mutable.ListBuffer
import scala.collection.mutable
import java.util
import org.apache.commons.io.FileUtils import org.apache.commons.io.FileUtils
import java.net.URL import scala.collection.convert.wrapAsScala._
import cpw.mods.fml.common.event.FMLInterModComms import scala.collection.mutable.ListBuffer
object Recipes { object Recipes {
def init() { def init() {
@ -76,7 +72,7 @@ object Recipes {
loadRecipe(config.getConfig("crafting"), Items.crafting.createItemStack()) loadRecipe(config.getConfig("crafting"), Items.crafting.createItemStack())
loadRecipe(config.getConfig("locator"), Items.locator.createItemStack()) loadRecipe(config.getConfig("locator"), Items.locator.createItemStack())
loadRecipe(config.getConfig("solarGenerator"), Items.solarGenerator.createItemStack()) loadRecipe(config.getConfig("solarGenerator"), Items.solarGenerator.createItemStack())
loadRecipe(config.getConfig("reader"), Items.reader.createItemStack()) loadRecipe(config.getConfig("reader"), Items.signUpgrade.createItemStack())
loadRecipe(config.getConfig("chip1"), Items.chip1.createItemStack()) loadRecipe(config.getConfig("chip1"), Items.chip1.createItemStack())
loadRecipe(config.getConfig("chip2"), Items.chip2.createItemStack()) loadRecipe(config.getConfig("chip2"), Items.chip2.createItemStack())
loadRecipe(config.getConfig("chip3"), Items.chip3.createItemStack()) loadRecipe(config.getConfig("chip3"), Items.chip3.createItemStack())
@ -86,11 +82,11 @@ object Recipes {
loadRecipe(config.getConfig("pcb"), Items.pcb.createItemStack()) loadRecipe(config.getConfig("pcb"), Items.pcb.createItemStack())
loadRecipe(config.getConfig("acid"), Items.acid.createItemStack()) loadRecipe(config.getConfig("acid"), Items.acid.createItemStack())
loadRecipe(config.getConfig("rawBoard"), Items.rawCircuitBoard.createItemStack()) loadRecipe(config.getConfig("rawBoard"), Items.rawCircuitBoard.createItemStack())
loadRecipe(config.getConfig("circuitBoard"),Items.circuitBoard.createItemStack()) loadRecipe(config.getConfig("circuitBoard"), Items.circuitBoard.createItemStack())
if (OreDictionary.getOres("nuggetIron").contains(Items.ironNugget.createItemStack())) { if (OreDictionary.getOres("nuggetIron").contains(Items.ironNugget.createItemStack())) {
GameRegistry.addRecipe(new ShapelessOreRecipe(Items.ironNugget.createItemStack(9), "nuggetIron")) GameRegistry.addRecipe(new ShapelessOreRecipe(Items.ironNugget.createItemStack(9), "nuggetIron"))
} }
GameRegistry.addRecipe(new ShapelessOreRecipe(Items.locator.createItemStack(),Items.locator.createItemStack(),new ItemStack(Item.map,1,OreDictionary.WILDCARD_VALUE))) GameRegistry.addRecipe(new ShapelessOreRecipe(Items.locator.createItemStack(), Items.locator.createItemStack(), new ItemStack(Item.map, 1, OreDictionary.WILDCARD_VALUE)))
} }
} }
@ -98,7 +94,7 @@ object Recipes {
conf.getString("type") match { conf.getString("type") match {
case "shaped" => addShapedRecipe(result, conf) case "shaped" => addShapedRecipe(result, conf)
case "shapeless" => addShapelessRecipe(result, conf) case "shapeless" => addShapelessRecipe(result, conf)
case "furnace" => addSmeltingRecipe(result,conf) case "furnace" => addSmeltingRecipe(result, conf)
case _ => throw new Exception("Don't know what to do with " + conf.getString("type")) case _ => throw new Exception("Don't know what to do with " + conf.getString("type"))
} }
@ -366,7 +362,7 @@ object Recipes {
} }
private def addSmeltingRecipe(output: ItemStack, conf: Config) { private def addSmeltingRecipe(output: ItemStack, conf: Config) {
var out = output.copy() var out = output.copy()
try { try {
out.stackSize = conf.getInt("result") out.stackSize = conf.getInt("result")
} catch { } catch {
@ -379,25 +375,24 @@ object Recipes {
var itemSubID: Int = 0 var itemSubID: Int = 0
item.unwrapped() match { item.unwrapped() match {
case list: java.util.HashMap[String, Object] => { case list: java.util.HashMap[String, Object] => {
for (entrySet <- list.entrySet()) { for (entrySet <- list.entrySet()) {
entrySet.getKey match { entrySet.getKey match {
case "oreDict" => { case "oreDict" => {
entrySet.getValue match { entrySet.getValue match {
case value: String => obj= value case value: String => obj = value
case _ => throw new Exception("This case is not implemented please try adding a different way ore report the recipe you tried to add. " + entrySet) case _ => throw new Exception("This case is not implemented please try adding a different way ore report the recipe you tried to add. " + entrySet)
} }
} }
case "item" => { case "item" => {
entrySet.getValue match { entrySet.getValue match {
case value: String => obj= getItemFromName(value) case value: String => obj = getItemFromName(value)
case _ => throw new Exception("This case is not implemented please try adding a different way ore report the recipe you tried to add. " + entrySet) case _ => throw new Exception("This case is not implemented please try adding a different way ore report the recipe you tried to add. " + entrySet)
} }
} }
case "block" => case "block" =>
entrySet.getValue match { entrySet.getValue match {
case value: String => obj= getBlockFromName(value) case value: String => obj = getBlockFromName(value)
case _ => throw new Exception("This case is not implemented please try adding a different way ore report the recipe you tried to add. " + entrySet) case _ => throw new Exception("This case is not implemented please try adding a different way ore report the recipe you tried to add. " + entrySet)
} }
@ -412,23 +407,22 @@ object Recipes {
} }
} }
case value: String => { case value: String => {
obj= getNameOrStackFromName(value) obj = getNameOrStackFromName(value)
} }
case _ => println(item.unwrapped()) case _ => println(item.unwrapped())
} }
obj match { obj match {
case item: Item => { case item: Item => {
val newItem = new ItemStack(item, 1, itemSubID)
val newItem= new ItemStack(item, 1, itemSubID)
FurnaceRecipes.smelting().addSmelting(newItem.itemID, newItem.getItemDamage, out, 0) FurnaceRecipes.smelting().addSmelting(newItem.itemID, newItem.getItemDamage, out, 0)
} }
case block: Block => { case block: Block => {
val newItem= new ItemStack(block, 1, itemSubID) val newItem = new ItemStack(block, 1, itemSubID)
FurnaceRecipes.smelting().addSmelting(newItem.itemID, newItem.getItemDamage, out, 0) FurnaceRecipes.smelting().addSmelting(newItem.itemID, newItem.getItemDamage, out, 0)
} }
case value: String => { case value: String => {
for(stack<-OreDictionary.getOres(value)){ for (stack <- OreDictionary.getOres(value)) {
FurnaceRecipes.smelting().addSmelting(stack.itemID, stack.getItemDamage, out, 0) FurnaceRecipes.smelting().addSmelting(stack.itemID, stack.getItemDamage, out, 0)
} }
} }
@ -438,7 +432,6 @@ object Recipes {
} }
} }
def inputToFile(is: URL, f: java.io.File) { def inputToFile(is: URL, f: java.io.File) {
FileUtils.copyURLToFile(is, f) FileUtils.copyURLToFile(is, f)
} }
@ -461,7 +454,6 @@ object Recipes {
} }
} }
def getNameOrStackFromName(name: String) = { def getNameOrStackFromName(name: String) = {
if (name.isEmpty) if (name.isEmpty)
null null

View File

@ -1,5 +0,0 @@
package li.cil.oc.common.block;
public class KeyboardPart {
}

View File

@ -1,21 +1,23 @@
package li.cil.oc.common.item package li.cil.oc.common.item
import cpw.mods.fml.common.Loader import cpw.mods.fml.common.Loader
import li.cil.oc.Settings
import net.minecraft.client.renderer.texture.IconRegister
import net.minecraft.item.ItemStack
import net.minecraft.entity.player.EntityPlayer
import java.util import java.util
import li.cil.oc.Settings
import li.cil.oc.util.Tooltip import li.cil.oc.util.Tooltip
import net.minecraft.client.renderer.texture.IconRegister
import net.minecraft.entity.player.EntityPlayer
import net.minecraft.item.ItemStack
class IronNugget(val parent: Delegator) extends Delegate { class IronNugget(val parent: Delegator) extends Delegate {
val unlocalizedName = "IronNugget" val unlocalizedName = "IronNugget"
override val showInItemList = !Loader.isModLoaded("gregtech_addon") override val showInItemList = !Loader.isModLoaded("gregtech_addon")
override def tooltipLines(stack: ItemStack, player: EntityPlayer, tooltip: util.List[String], advanced: Boolean) { override def tooltipLines(stack: ItemStack, player: EntityPlayer, tooltip: util.List[String], advanced: Boolean) {
tooltip.addAll(Tooltip.get(unlocalizedName)) tooltip.addAll(Tooltip.get(unlocalizedName))
super.tooltipLines(stack, player, tooltip, advanced) super.tooltipLines(stack, player, tooltip, advanced)
} }
override def registerIcons(iconRegister: IconRegister) = { override def registerIcons(iconRegister: IconRegister) = {
super.registerIcons(iconRegister) super.registerIcons(iconRegister)

View File

@ -6,8 +6,6 @@ import li.cil.oc.util.Tooltip
import net.minecraft.client.renderer.texture.IconRegister import net.minecraft.client.renderer.texture.IconRegister
import net.minecraft.entity.player.EntityPlayer import net.minecraft.entity.player.EntityPlayer
import net.minecraft.item.{EnumRarity, ItemStack} import net.minecraft.item.{EnumRarity, ItemStack}
import li.cil.oc.api
import li.cil.oc.server.driver.Registry
class Locator(val parent: Delegator) extends Delegate { class Locator(val parent: Delegator) extends Delegate {
val unlocalizedName = "Locator" val unlocalizedName = "Locator"
@ -15,7 +13,7 @@ class Locator(val parent: Delegator) extends Delegate {
override def rarity = EnumRarity.epic override def rarity = EnumRarity.epic
override def tooltipLines(stack: ItemStack, player: EntityPlayer, tooltip: util.List[String], advanced: Boolean) { override def tooltipLines(stack: ItemStack, player: EntityPlayer, tooltip: util.List[String], advanced: Boolean) {
tooltip.addAll(Tooltip.get(unlocalizedName, (Settings.get.generatorEfficiency * 100).toInt)) tooltip.addAll(Tooltip.get(unlocalizedName))
super.tooltipLines(stack, player, tooltip, advanced) super.tooltipLines(stack, player, tooltip, advanced)
} }
@ -24,5 +22,4 @@ class Locator(val parent: Delegator) extends Delegate {
icon = iconRegister.registerIcon(Settings.resourceDomain + ":upgrade_locator") icon = iconRegister.registerIcon(Settings.resourceDomain + ":upgrade_locator")
} }
} }

View File

@ -1,55 +1,37 @@
package li.cil.oc.server.component package li.cil.oc.server.component
import li.cil.oc.api
import li.cil.oc.api.network._ 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
import li.cil.oc.util.RotationHelper import li.cil.oc.util.RotationHelper
import net.minecraft.tileentity.{TileEntity => MCTileEntity}
class Locator(val owner: MCTileEntity, val xCenter: Int, val zCenter: Int,val scale:Int) extends ManagedComponent { class Locator(val owner: MCTileEntity, val xCenter: Int, val zCenter: Int, val scale: Int) extends ManagedComponent {
val node = api.Network.newNode(this, Visibility.Network). val node = api.Network.newNode(this, Visibility.Network).
withComponent("locator", Visibility.Neighbors). withComponent("locator", Visibility.Neighbors).
create() create()
@LuaCallback("getPosition")
def getPosition(context: RobotContext, args: Arguments): Array[AnyRef] = {
val player = context.player()
val x = player.posX.floor.toInt
val z = player.posZ.floor.toInt
val xDist = x - xCenter
val zDist = z - zCenter
if (math.abs(xDist) <= scale/2 && math.abs(zDist) <= scale/2)
result(xDist, zDist)
else
result(Unit, "out of range")
}
@LuaCallback("getFacing")
def getFacing(context: RobotContext, args: Arguments): Array[AnyRef] = {
val player = context.player()
val d = RotationHelper.fromYaw(player.rotationYaw)
result(d.offsetX,d.offsetY,d.offsetZ)
}
@LuaCallback("getHeight")
def getHeight(context: RobotContext, args: Arguments): Array[AnyRef] = {
val player = context.player()
result(player.posY.floor)
}
// ----------------------------------------------------------------------- // // ----------------------------------------------------------------------- //
override val canUpdate = false override val canUpdate = false
// ----------------------------------------------------------------------- // // ----------------------------------------------------------------------- //
@LuaCallback("getPosition")
def getPosition(context: RobotContext, args: Arguments): Array[AnyRef] = {
val x = owner.xCoord
val z = owner.zCoord
val y = owner.yCoord
val relativeX = x - xCenter
val relativeY = z - zCenter
if (math.abs(relativeX) <= scale / 2 && math.abs(relativeY) <= scale / 2)
result(relativeX, relativeY, y)
else
result(Unit, "out of range")
}
@LuaCallback("getFacing")
def getFacing(context: RobotContext, args: Arguments): Array[AnyRef] = {
result(RotationHelper.fromYaw(context.player().rotationYaw).ordinal())
}
} }

View File

@ -1,17 +1,9 @@
package li.cil.oc.server.component package li.cil.oc.server.component
import li.cil.oc.api
import li.cil.oc.api.network._ 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
import li.cil.oc.util.RotationHelper._
import net.minecraftforge.common.ForgeDirection
import li.cil.oc.util.RotationHelper import li.cil.oc.util.RotationHelper
import net.minecraft.tileentity.{TileEntity => MCTileEntity, TileEntitySign}
class Reader(val owner: MCTileEntity) extends ManagedComponent { class Reader(val owner: MCTileEntity) extends ManagedComponent {
val node = api.Network.newNode(this, Visibility.Network). val node = api.Network.newNode(this, Visibility.Network).
@ -19,58 +11,34 @@ class Reader(val owner: MCTileEntity) extends ManagedComponent {
withConnector(). withConnector().
create() create()
// ----------------------------------------------------------------------- //
@LuaCallback("read")
def read(context: RobotContext, args: Arguments): Array[AnyRef] = {
val player = context.player()
val d = RotationHelper.fromYaw(player.rotationYaw)
val te = player.getEntityWorld.getBlockTileEntity(player.posX.floor.toInt + d.offsetX, player.posY.floor.toInt + d.offsetY, player.posZ.floor.toInt + d.offsetZ)
te match {
case sign: TileEntitySign => {
val text = sign.signText.mkString("\n")
return result(text)
}
case _ =>
}
result(Unit, "no sign")
}
@LuaCallback("write")
def write(context: RobotContext, args: Arguments): Array[AnyRef] = {
val player = context.player()
val d = RotationHelper.fromYaw(player.rotationYaw)
val te = player.getEntityWorld.getBlockTileEntity(player.posX.floor.toInt + d.offsetX, player.posY.floor.toInt + d.offsetY, player.posZ.floor.toInt + d.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(player.posX.floor.toInt + d.offsetX, player.posY.floor.toInt + d.offsetY, player.posZ.floor.toInt + d.offsetZ)
return result(true)
}
case _ =>
}
result(Unit, "no sign")
}
// ----------------------------------------------------------------------- // // ----------------------------------------------------------------------- //
override val canUpdate = false override val canUpdate = false
// ----------------------------------------------------------------------- // // ----------------------------------------------------------------------- //
@LuaCallback("getValue")
def read(context: RobotContext, args: Arguments): Array[AnyRef] = {
val player = context.player()
val facing = RotationHelper.fromYaw(player.rotationYaw)
owner.getWorldObj.getBlockTileEntity(owner.xCoord + facing.offsetX, owner.yCoord + facing.offsetY, owner.zCoord + facing.offsetZ) match {
case sign: TileEntitySign => result(sign.signText.mkString("\n"))
case _ => result(Unit, "no sign")
}
}
@LuaCallback("setValue")
def write(context: RobotContext, args: Arguments): Array[AnyRef] = {
val text = args.checkString(0).lines.padTo(4, "").map(line => if (line.size > 15) line.substring(0, 15) else line)
val player = context.player()
val facing = RotationHelper.fromYaw(player.rotationYaw)
val (sx, sy, sz) = (owner.xCoord + facing.offsetX, owner.yCoord + facing.offsetY, owner.zCoord + facing.offsetZ)
owner.getWorldObj.getBlockTileEntity(sx, sy, sz) match {
case sign: TileEntitySign =>
text.copyToArray(sign.signText)
owner.getWorldObj.markBlockForUpdate(sx, sy, sz)
result(sign.signText.mkString("\n"))
case _ => result(Unit, "no sign")
}
}
} }

View File

@ -1,27 +1,24 @@
package li.cil.oc.server.driver.item package li.cil.oc.server.driver.item
import li.cil.oc.{Settings, Items}
import li.cil.oc.api.driver.Slot import li.cil.oc.api.driver.Slot
import li.cil.oc.server.component import li.cil.oc.server.component
import li.cil.oc.server.driver.Registry
import li.cil.oc.{Settings, Items}
import net.minecraft.item.ItemStack import net.minecraft.item.ItemStack
import net.minecraft.tileentity.{TileEntity => MCTileEntity} import net.minecraft.tileentity.{TileEntity => MCTileEntity}
import li.cil.oc.server.driver.Registry
object Locator extends Item { object Locator extends Item {
override def worksWith(stack: ItemStack) = isOneOf(stack, Items.locator) override def worksWith(stack: ItemStack) = isOneOf(stack, Items.locator)
override def createEnvironment(stack: ItemStack, container: MCTileEntity) ={ override def createEnvironment(stack: ItemStack, container: MCTileEntity) = {
val nbt = Registry.driverFor(stack) match { val nbt = Registry.driverFor(stack) match {
case Some(driver)=>driver.dataTag(stack) case Some(driver) => driver.dataTag(stack)
case _ => null case _ => null
} }
val x = if(nbt.hasKey(Settings.namespace +"xCenter")) nbt.getInteger(Settings.namespace +"xCenter") val x = if (nbt.hasKey(Settings.namespace + "xCenter")) nbt.getInteger(Settings.namespace + "xCenter") else container.xCoord
else container.xCoord val z = if (nbt.hasKey(Settings.namespace + "zCenter")) nbt.getInteger(Settings.namespace + "zCenter") else container.zCoord
val z = if(nbt.hasKey(Settings.namespace +"zCenter")) nbt.getInteger(Settings.namespace +"zCenter") val scale = if (nbt.hasKey(Settings.namespace + "scale")) nbt.getInteger(Settings.namespace + "scale") else 512
else container.zCoord new component.Locator(container, x, z, scale)
val scale = if(nbt.hasKey(Settings.namespace +"scale")) nbt.getInteger(Settings.namespace +"scale")
else 512
new component.Locator(container,x,z,scale)
} }
override def slot(stack: ItemStack) = Slot.Upgrade override def slot(stack: ItemStack) = Slot.Upgrade

View File

@ -7,7 +7,7 @@ import net.minecraft.item.ItemStack
import net.minecraft.tileentity.{TileEntity => MCTileEntity} import net.minecraft.tileentity.{TileEntity => MCTileEntity}
object Reader extends Item { object Reader extends Item {
override def worksWith(stack: ItemStack) = isOneOf(stack, Items.reader) override def worksWith(stack: ItemStack) = isOneOf(stack, Items.signUpgrade)
override def createEnvironment(stack: ItemStack, container: MCTileEntity) = new component.Reader(container) override def createEnvironment(stack: ItemStack, container: MCTileEntity) = new component.Reader(container)

View File

@ -2,17 +2,13 @@ package li.cil.oc.util
import net.minecraftforge.common.ForgeDirection import net.minecraftforge.common.ForgeDirection
object RotationHelper { object RotationHelper {
def fromYaw(yaw: Float) = {
def fromYaw(yaw: Float ) = { (yaw / 360 * 4).round & 3 match {
(yaw / 360 * 4).round & 3 match { case 0 => ForgeDirection.SOUTH
case 0 => ForgeDirection.SOUTH case 1 => ForgeDirection.WEST
case 1 => ForgeDirection.WEST case 2 => ForgeDirection.NORTH
case 2 => ForgeDirection.NORTH case 3 => ForgeDirection.EAST
case 3 => ForgeDirection.EAST
}
} }
}
} }