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.HardDiskDrive.name=Festplatte
oc:item.IronNugget.name=Eisennugget
oc:item.Locator.name=Navigationsupgrade
oc:item.Memory.name=Speicher
oc:item.Microchip0.name=Einfacher Microchip
oc:item.Microchip1.name=Hochwertiger Microchip
@ -45,7 +46,7 @@ oc:item.NetworkCard.name=Netzwerkkarte
oc:item.NumPad.name=Ziffernblock
oc:item.PrintedCircuitBoard.name=Gedruckte Leiterplatte (PCB)
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.SolarGenerator.name=Solar Generator Upgrade
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.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.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.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.
@ -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.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.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.RedstoneCard.RedLogic=§fRedLogic§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.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.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.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!

View File

@ -42,7 +42,7 @@ oc:item.GraphicsCard2.name=Superior Graphics Card
oc:item.Acid.name=Grog
oc:item.HardDiskDrive.name=Hard Disk Drive
oc:item.IronNugget.name=Iron Nugget
oc:item.Locator.name=Locator
oc:item.Locator.name=Navigation Upgrade
oc:item.Memory.name=Memory
oc:item.Microchip0.name=Simple 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.PrintedCircuitBoard.name=Printed Circuit Board (PCB)
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.SolarGenerator.name=Solar Generator Upgrade
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.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.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.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.
@ -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.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.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.RedstoneCard.RedLogic=§fRedLogic§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.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.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.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!

View File

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

View File

@ -1,13 +1,11 @@
package li.cil.oc
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.inventory.IInventory
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 {
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 {
case Some(driver)=>driver.dataTag(craftedStack)
case _ => null
}
val compOld = nbt.getCompoundTag(Settings.namespace +"map")
if (!player.getEntityWorld.isRemote && craftedStack.isItemEqual(Items.locator.createItemStack())) {
Registry.driverFor(craftedStack) match {
case Some(driver) =>
for (i <- 0 to inventory.getSizeInventory) {
val stack = inventory.getStackInSlot(i)
if(stack!= null&&stack.isItemEqual(Items.locator.createItemStack())&&compOld!=null){
val container = ItemStack.loadItemStackFromNBT(compOld)
println("created map")
if (!player.inventory.addItemStackToInventory(container)) {
player.dropPlayerItem(container)
if (stack != null) {
// FIXME this could cause the built-in map to be re-used if the
// crafting inventory is the player's inventory - which is the
// case for robots, for example - by it added to a slot not yet
// checked but before the actual map to be used.
if (stack.isItemEqual(Items.locator.createItemStack())) {
// 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 != null && stack.getItem== Item.map)
{
var map = stack.getItem.asInstanceOf[ItemMap]
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))
val comp = new NBTTagCompound()
stack.writeToNBT(comp)
nbt.setCompoundTag(Settings.namespace +"map",comp)
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 _ =>
}
}
}

View File

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

View File

@ -1,21 +1,17 @@
package li.cil.oc
import com.typesafe.config.{Config, ConfigFactory}
import cpw.mods.fml.common.Loader
import cpw.mods.fml.common.registry.GameRegistry
import java.io.File
import java.net.URL
import net.minecraft.block.Block
import net.minecraft.item.crafting.FurnaceRecipes
import net.minecraft.item.{ItemStack, Item}
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 java.net.URL
import cpw.mods.fml.common.event.FMLInterModComms
import scala.collection.convert.wrapAsScala._
import scala.collection.mutable.ListBuffer
object Recipes {
def init() {
@ -76,7 +72,7 @@ object Recipes {
loadRecipe(config.getConfig("crafting"), Items.crafting.createItemStack())
loadRecipe(config.getConfig("locator"), Items.locator.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("chip2"), Items.chip2.createItemStack())
loadRecipe(config.getConfig("chip3"), Items.chip3.createItemStack())
@ -86,11 +82,11 @@ object Recipes {
loadRecipe(config.getConfig("pcb"), Items.pcb.createItemStack())
loadRecipe(config.getConfig("acid"), Items.acid.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())) {
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 {
case "shaped" => addShapedRecipe(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"))
}
@ -379,25 +375,24 @@ object Recipes {
var itemSubID: Int = 0
item.unwrapped() match {
case list: java.util.HashMap[String, Object] => {
for (entrySet <- list.entrySet()) {
entrySet.getKey match {
case "oreDict" => {
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 "item" => {
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 "block" =>
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)
}
@ -412,23 +407,22 @@ object Recipes {
}
}
case value: String => {
obj= getNameOrStackFromName(value)
obj = getNameOrStackFromName(value)
}
case _ => println(item.unwrapped())
}
obj match {
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)
}
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)
}
case value: String => {
for(stack<-OreDictionary.getOres(value)){
for (stack <- OreDictionary.getOres(value)) {
FurnaceRecipes.smelting().addSmelting(stack.itemID, stack.getItemDamage, out, 0)
}
}
@ -438,7 +432,6 @@ object Recipes {
}
}
def inputToFile(is: URL, f: java.io.File) {
FileUtils.copyURLToFile(is, f)
}
@ -461,7 +454,6 @@ object Recipes {
}
}
def getNameOrStackFromName(name: String) = {
if (name.isEmpty)
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
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 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.ItemStack
class IronNugget(val parent: Delegator) extends Delegate {
val unlocalizedName = "IronNugget"
override val showInItemList = !Loader.isModLoaded("gregtech_addon")
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)

View File

@ -6,8 +6,6 @@ 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}
import li.cil.oc.api
import li.cil.oc.server.driver.Registry
class Locator(val parent: Delegator) extends Delegate {
val unlocalizedName = "Locator"
@ -15,7 +13,7 @@ class Locator(val parent: Delegator) extends Delegate {
override def rarity = EnumRarity.epic
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)
}
@ -24,5 +22,4 @@ class Locator(val parent: Delegator) extends Delegate {
icon = iconRegister.registerIcon(Settings.resourceDomain + ":upgrade_locator")
}
}

View File

@ -1,55 +1,37 @@
package li.cil.oc.server.component
import li.cil.oc.api
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.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).
withComponent("locator", Visibility.Neighbors).
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
// ----------------------------------------------------------------------- //
@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
import li.cil.oc.api
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 net.minecraft.tileentity.{TileEntity => MCTileEntity, TileEntitySign}
class Reader(val owner: MCTileEntity) extends ManagedComponent {
val node = api.Network.newNode(this, Visibility.Network).
@ -19,58 +11,34 @@ class Reader(val owner: MCTileEntity) extends ManagedComponent {
withConnector().
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
// ----------------------------------------------------------------------- //
@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
import li.cil.oc.{Settings, Items}
import li.cil.oc.api.driver.Slot
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.tileentity.{TileEntity => MCTileEntity}
import li.cil.oc.server.driver.Registry
object Locator extends Item {
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 {
case Some(driver)=>driver.dataTag(stack)
case Some(driver) => driver.dataTag(stack)
case _ => null
}
val x = if(nbt.hasKey(Settings.namespace +"xCenter")) nbt.getInteger(Settings.namespace +"xCenter")
else container.xCoord
val z = if(nbt.hasKey(Settings.namespace +"zCenter")) nbt.getInteger(Settings.namespace +"zCenter")
else container.zCoord
val scale = if(nbt.hasKey(Settings.namespace +"scale")) nbt.getInteger(Settings.namespace +"scale")
else 512
new component.Locator(container,x,z,scale)
val x = if (nbt.hasKey(Settings.namespace + "xCenter")) nbt.getInteger(Settings.namespace + "xCenter") else container.xCoord
val z = if (nbt.hasKey(Settings.namespace + "zCenter")) nbt.getInteger(Settings.namespace + "zCenter") else container.zCoord
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

View File

@ -7,7 +7,7 @@ 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 worksWith(stack: ItemStack) = isOneOf(stack, Items.signUpgrade)
override def createEnvironment(stack: ItemStack, container: MCTileEntity) = new component.Reader(container)

View File

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