diff --git a/src/main/scala/li/cil/oc/OpenComputers.scala b/src/main/scala/li/cil/oc/OpenComputers.scala index b34811cbf..2eda7f8f7 100644 --- a/src/main/scala/li/cil/oc/OpenComputers.scala +++ b/src/main/scala/li/cil/oc/OpenComputers.scala @@ -21,7 +21,7 @@ object OpenComputers { final val Version = "@VERSION@" - var log = LogManager.getLogger("OpenComputers") + var log = LogManager.getLogger(Name) @SidedProxy(clientSide = "li.cil.oc.client.Proxy", serverSide = "li.cil.oc.server.Proxy") var proxy: Proxy = null diff --git a/src/main/scala/li/cil/oc/client/renderer/tileentity/RobotRenderer.scala b/src/main/scala/li/cil/oc/client/renderer/tileentity/RobotRenderer.scala index f5032e603..86e1df3eb 100644 --- a/src/main/scala/li/cil/oc/client/renderer/tileentity/RobotRenderer.scala +++ b/src/main/scala/li/cil/oc/client/renderer/tileentity/RobotRenderer.scala @@ -19,6 +19,7 @@ import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer import net.minecraft.init.Items import net.minecraft.item.ItemBlock import net.minecraft.tileentity.TileEntity +import net.minecraft.util.EnumChatFormatting import net.minecraft.util.EnumFacing import net.minecraft.util.Vec3 import net.minecraftforge.client.IItemRenderer.ItemRenderType @@ -437,7 +438,7 @@ object RobotRenderer extends TileEntitySpecialRenderer { t.draw GL11.glEnable(GL11.GL_TEXTURE_2D) // For the font. - f.drawString(name, -halfWidth, 0, 0xFFFFFFFF) + f.drawString((if (EventHandler.isItTime) EnumChatFormatting.OBFUSCATED.toString else "") + name, -halfWidth, 0, 0xFFFFFFFF) RenderState.enableDepthMask() RenderState.enableLighting() diff --git a/src/main/scala/li/cil/oc/common/Achievement.scala b/src/main/scala/li/cil/oc/common/Achievement.scala index a913d6718..1fd7c6a93 100644 --- a/src/main/scala/li/cil/oc/common/Achievement.scala +++ b/src/main/scala/li/cil/oc/common/Achievement.scala @@ -1,6 +1,7 @@ package li.cil.oc.common import li.cil.oc.Constants +import li.cil.oc.OpenComputers import li.cil.oc.api.detail.ItemInfo import li.cil.oc.common.init.Items import net.minecraft.entity.player.EntityPlayer @@ -12,116 +13,306 @@ import net.minecraftforge.common.AchievementPage import scala.collection.mutable object Achievement { - val All = mutable.ArrayBuffer.empty[Achievement] - + val All = mutable.ArrayBuffer.empty[MCAchievement] val CraftingMap = mutable.Map.empty[ItemInfo, MCAchievement] + val CustomCraftingMap = mutable.Map.empty[ItemStack, MCAchievement] + val AssemblingMap = mutable.Map.empty[ItemInfo, MCAchievement] - val Transistor = new Achievement("oc.transistor", "oc.transistor", - 2, 0, Items.get(Constants.ItemName.Transistor).createItemStack(1), null, Constants.ItemName.Transistor).setIndependent() - val Disassembler = new Achievement("oc.disassembler", "oc.disassembler", - 2, 2, Items.get(Constants.BlockName.Disassembler).createItemStack(1), Transistor, Constants.BlockName.Disassembler) - val Microchip = new Achievement("oc.chip", "oc.chip", - 4, 0, Items.get(Constants.ItemName.ChipTier1).createItemStack(1), Transistor, Constants.ItemName.ChipTier1, Constants.ItemName.ChipTier2, Constants.ItemName.ChipTier3) - val Capacitor = new Achievement("oc.capacitor", "oc.capacitor", - 6, -1, Items.get(Constants.BlockName.Capacitor).createItemStack(1), Microchip, Constants.BlockName.Capacitor) - val Assembler = new Achievement("oc.assembler", "oc.assembler", - 8, -2, Items.get(Constants.BlockName.Assembler).createItemStack(1), Capacitor, Constants.BlockName.Assembler) - val Microcontroller = new Achievement("oc.microcontroller", "oc.microcontroller", - 10, -2, Items.get(Constants.BlockName.Microcontroller).createItemStack(1), Assembler) - val Robot = new Achievement("oc.robot", "oc.robot", - 10, -3, Items.get(Constants.BlockName.Robot).createItemStack(1), Assembler) - val Drone = new Achievement("oc.drone", "oc.drone", - 10, -4, Items.get(Constants.ItemName.Drone).createItemStack(1), Assembler) - val Tablet = new Achievement("oc.tablet", "oc.tablet", - 10, -5, Items.get(Constants.ItemName.Tablet).createItemStack(1), Assembler) - val Charger = new Achievement("oc.charger", "oc.charger", - 8, -1, Items.get(Constants.BlockName.Charger).createItemStack(1), Capacitor, Constants.BlockName.Charger) - val CPU = new Achievement("oc.cpu", "oc.cpu", - 6, 0, Items.get(Constants.ItemName.CPUTier1).createItemStack(1), Microchip, Constants.ItemName.CPUTier1, Constants.ItemName.CPUTier2, Constants.ItemName.CPUTier3) - val MotionSensor = new Achievement("oc.motionSensor", "oc.motionSensor", - 8, 0, Items.get(Constants.BlockName.MotionSensor).createItemStack(1), CPU, Constants.BlockName.MotionSensor) - val Geolyzer = new Achievement("oc.geolyzer", "oc.geolyzer", - 8, 1, Items.get(Constants.BlockName.Geolyzer).createItemStack(1), CPU, Constants.BlockName.Geolyzer) - val RedstoneIO = new Achievement("oc.redstoneIO", "oc.redstoneIO", - 8, 2, Items.get(Constants.BlockName.Redstone).createItemStack(1), CPU, Constants.BlockName.Redstone) - val EEPROM = new Achievement("oc.eeprom", "oc.eeprom", - 6, 3, Items.get(Constants.ItemName.EEPROM).createItemStack(1), Microchip, Constants.ItemName.EEPROM) - val Memory = new Achievement("oc.ram", "oc.ram", - 6, 4, Items.get(Constants.ItemName.RAMTier1).createItemStack(1), Microchip, Constants.ItemName.RAMTier1, Constants.ItemName.RAMTier2, Constants.ItemName.RAMTier3, Constants.ItemName.RAMTier4, Constants.ItemName.RAMTier5, Constants.ItemName.RAMTier6) - val HDD = new Achievement("oc.hdd", "oc.hdd", - 6, 5, Items.get(Constants.ItemName.HDDTier1).createItemStack(1), Microchip, Constants.ItemName.HDDTier1, Constants.ItemName.HDDTier2, Constants.ItemName.HDDTier3) - val Case = new Achievement("oc.case", "oc.case", - 6, 6, Items.get(Constants.BlockName.CaseTier1).createItemStack(1), Microchip, Constants.BlockName.CaseTier1, Constants.BlockName.CaseTier2, Constants.BlockName.CaseTier3) - val Rack = new Achievement("oc.rack", "oc.rack", - 8, 6, Items.get(Constants.BlockName.ServerRack).createItemStack(1), Case, Constants.BlockName.ServerRack) - val Server = new Achievement("oc.server", "oc.server", - 10, 6, Items.get(Constants.ItemName.ServerTier1).createItemStack(1), Rack, Constants.ItemName.ServerTier1, Constants.ItemName.ServerTier2, Constants.ItemName.ServerTier3) - val Screen = new Achievement("oc.screen", "oc.screen", - 6, 7, Items.get(Constants.BlockName.ScreenTier1).createItemStack(1), Microchip, Constants.BlockName.ScreenTier1, Constants.BlockName.ScreenTier2, Constants.BlockName.ScreenTier3) - val Keyboard = new Achievement("oc.keyboard", "oc.keyboard", - 8, 7, Items.get(Constants.BlockName.Keyboard).createItemStack(1), Screen, Constants.BlockName.Keyboard) - val Hologram = new Achievement("oc.hologram", "oc.hologram", - 8, 8, Items.get(Constants.BlockName.HologramTier1).createItemStack(1), Screen, Constants.BlockName.HologramTier1, Constants.BlockName.HologramTier2) - val DiskDrive = new Achievement("oc.diskDrive", "oc.diskDrive", - 6, 9, Items.get(Constants.BlockName.DiskDrive).createItemStack(1), Microchip, Constants.BlockName.DiskDrive) - val Floppy = new Achievement("oc.floppy", "oc.floppy", - 8, 9, Items.get(Constants.ItemName.Floppy).createItemStack(1), DiskDrive, Constants.ItemName.Floppy) - val OpenOS = new Achievement("oc.openOS", "oc.openOS", - 10, 9, Items.createOpenOS(), Floppy) - val Raid = new Achievement("oc.raid", "oc.raid", - 8, 10, Items.get(Constants.BlockName.Raid).createItemStack(1), DiskDrive, Constants.BlockName.Raid) + val Transistor = newAchievement("transistor"). + at(2, 0). + whenCrafting(Constants.ItemName.Transistor). + add() + val Disassembler = newAchievement("disassembler"). + at(2, 2). + whenCrafting(Constants.BlockName.Disassembler). + withParent(Transistor). + add() + val Microchip = newAchievement("chip"). + at(4, 0). + withParent(Transistor). + whenCrafting(Constants.ItemName.ChipTier1). + whenCrafting(Constants.ItemName.ChipTier2). + whenCrafting(Constants.ItemName.ChipTier3). + add() + val Capacitor = newAchievement("capacitor"). + at(6, -1). + withParent(Microchip). + whenCrafting(Constants.BlockName.Capacitor). + add() + val Assembler = newAchievement("assembler"). + at(8, -2). + withParent(Capacitor). + whenCrafting(Constants.BlockName.Assembler). + add() + val Microcontroller = newAchievement("microcontroller"). + at(10, -2). + withParent(Assembler). + whenAssembling(Constants.BlockName.Microcontroller). + add() + val Robot = newAchievement("robot"). + at(10, -3). + withParent(Assembler). + whenAssembling(Constants.BlockName.Robot). + add() + val Drone = newAchievement("drone"). + at(10, -4). + withParent(Assembler). + whenAssembling(Constants.ItemName.Drone). + add() + val Tablet = newAchievement("tablet"). + at(10, -5). + withParent(Assembler). + whenAssembling(Constants.ItemName.Tablet). + add() + val Charger = newAchievement("charger"). + at(8, -1). + withParent(Capacitor). + whenCrafting(Constants.BlockName.Charger). + add() + val CPU = newAchievement("cpu"). + at(6, 0). + withParent(Microchip). + whenCrafting(Constants.ItemName.CPUTier1). + whenCrafting(Constants.ItemName.CPUTier2). + whenCrafting(Constants.ItemName.CPUTier3). + add() + val MotionSensor = newAchievement("motionSensor"). + at(8, 0). + withParent(CPU). + whenCrafting(Constants.BlockName.MotionSensor). + add() + val Geolyzer = newAchievement("geolyzer"). + at(8, 1). + withParent(CPU). + whenCrafting(Constants.BlockName.Geolyzer). + add() + val RedstoneIO = newAchievement("redstoneIO"). + at(8, 2). + withParent(CPU). + whenCrafting(Constants.BlockName.Redstone). + add() + val EEPROM = newAchievement("eeprom"). + at(6, 3). + withParent(Microchip). + whenCrafting(Constants.ItemName.EEPROM). + add() + val Memory = newAchievement("ram"). + at(6, 4). + withParent(Microchip). + whenCrafting(Constants.ItemName.RAMTier1). + whenCrafting(Constants.ItemName.RAMTier2). + whenCrafting(Constants.ItemName.RAMTier3). + whenCrafting(Constants.ItemName.RAMTier4). + whenCrafting(Constants.ItemName.RAMTier5). + whenCrafting(Constants.ItemName.RAMTier6). + add() + val HDD = newAchievement("hdd"). + at(6, 5). + withParent(Microchip). + whenCrafting(Constants.ItemName.HDDTier1). + whenCrafting(Constants.ItemName.HDDTier2). + whenCrafting(Constants.ItemName.HDDTier3). + add() + val Case = newAchievement("case"). + at(6, 6). + withParent(Microchip). + whenCrafting(Constants.BlockName.CaseTier1). + whenCrafting(Constants.BlockName.CaseTier2). + whenCrafting(Constants.BlockName.CaseTier3). + add() + val Rack = newAchievement("rack"). + at(8, 6). + withParent(Case). + whenCrafting(Constants.BlockName.ServerRack). + add() + val Server = newAchievement("server"). + at(10, 6). + withParent(Rack). + whenCrafting(Constants.ItemName.ServerTier1). + whenCrafting(Constants.ItemName.ServerTier2). + whenCrafting(Constants.ItemName.ServerTier3). + add() + val Screen = newAchievement("screen"). + at(6, 7). + withParent(Microchip). + whenCrafting(Constants.BlockName.ScreenTier1). + whenCrafting(Constants.BlockName.ScreenTier2). + whenCrafting(Constants.BlockName.ScreenTier3). + add() + val Keyboard = newAchievement("keyboard"). + at(8, 7). + withParent(Screen). + whenCrafting(Constants.BlockName.Keyboard). + add() + val Hologram = newAchievement("hologram"). + at(8, 8). + withParent(Screen). + whenCrafting(Constants.BlockName.HologramTier1). + whenCrafting(Constants.BlockName.HologramTier2). + add() + val DiskDrive = newAchievement("diskDrive"). + at(6, 9). + withParent(Microchip). + whenCrafting(Constants.BlockName.DiskDrive). + add() + val Floppy = newAchievement("floppy"). + at(8, 9). + withParent(DiskDrive). + whenCrafting(Constants.ItemName.Floppy). + add() + val OpenOS = newAchievement("openOS"). + at(10, 9). + withParent(Floppy). + whenCrafting(Items.createOpenOS()). + add() + val Raid = newAchievement("raid"). + at(8, 10). + withParent(DiskDrive). + whenCrafting(Constants.BlockName.Raid). + add() - val Card = new Achievement("oc.card", "oc.card", - 0, -2, Items.get(Constants.ItemName.Card).createItemStack(1), null, Constants.ItemName.Card).setIndependent() - val RedstoneCard = new Achievement("oc.redstoneCard", "oc.redstoneCard", - -2, -4, Items.get(Constants.ItemName.RedstoneCardTier1).createItemStack(1), Card, Constants.ItemName.RedstoneCardTier1, Constants.ItemName.RedstoneCardTier2) - val GraphicsCard = new Achievement("oc.graphicsCard", "oc.graphicsCard", - 0, -5, Items.get(Constants.ItemName.GraphicsCardTier1).createItemStack(1), Card, Constants.ItemName.GraphicsCardTier1, Constants.ItemName.GraphicsCardTier2, Constants.ItemName.GraphicsCardTier3) - val NetworkCard = new Achievement("oc.networkCard", "oc.networkCard", - 2, -4, Items.get(Constants.ItemName.NetworkCard).createItemStack(1), Card, Constants.ItemName.NetworkCard) - val WirelessNetworkCard = new Achievement("oc.wirelessNetworkCard", "oc.wirelessNetworkCard", - 2, -6, Items.get(Constants.ItemName.WirelessNetworkCard).createItemStack(1), NetworkCard, Constants.ItemName.WirelessNetworkCard) + val Card = newAchievement("card"). + at(0, -2). + whenCrafting(Constants.ItemName.Card). + add() + val RedstoneCard = newAchievement("redstoneCard"). + at(-2, -4). + withParent(Card). + whenCrafting(Constants.ItemName.RedstoneCardTier1). + whenCrafting(Constants.ItemName.RedstoneCardTier2). + add() + val GraphicsCard = newAchievement("graphicsCard"). + at(0, -5). + withParent(Card). + whenCrafting(Constants.ItemName.GraphicsCardTier1). + whenCrafting(Constants.ItemName.GraphicsCardTier2). + whenCrafting(Constants.ItemName.GraphicsCardTier3). + add() + val NetworkCard = newAchievement("networkCard"). + at(2, -4). + withParent(Card). + whenCrafting(Constants.ItemName.NetworkCard). + add() + val WirelessNetworkCard = newAchievement("wirelessNetworkCard"). + at(2, -6). + withParent(NetworkCard). + whenCrafting(Constants.ItemName.WirelessNetworkCard). + add() - val Cable = new Achievement("oc.cable", "oc.cable", - -2, 0, Items.get(Constants.BlockName.Cable).createItemStack(1), null, Constants.BlockName.Cable).setIndependent() - val PowerDistributor = new Achievement("oc.powerDistributor", "oc.powerDistributor", - -4, -1, Items.get(Constants.BlockName.PowerDistributor).createItemStack(1), Cable, Constants.BlockName.PowerDistributor) - val Switch = new Achievement("oc.switch", "oc.switch", - -4, 0, Items.get(Constants.BlockName.Switch).createItemStack(1), Cable, "switch", Constants.BlockName.Switch) - val Adapter = new Achievement("oc.adapter", "oc.adapter", - -4, 1, Items.get(Constants.BlockName.Adapter).createItemStack(1), Cable, Constants.BlockName.Adapter) + val Cable = newAchievement("cable"). + at(-2, 0). + whenCrafting(Constants.BlockName.Cable). + add() + val PowerDistributor = newAchievement("powerDistributor"). + at(-4, -1). + withParent(Cable). + whenCrafting(Constants.BlockName.PowerDistributor). + add() + val Switch = newAchievement("switch"). + at(-4, 0). + withParent(Cable). + whenCrafting(Constants.BlockName.Switch). + whenCrafting(Constants.BlockName.AccessPoint). + add() + val Adapter = newAchievement("adapter"). + at(-4, 1). + withParent(Cable). + whenCrafting(Constants.BlockName.Adapter). + add() def init() { // Missing @Override causes ambiguity, so cast is required; still a virtual call, // so Achievement.registerStat is still the method that's really being called. All.foreach(_.asInstanceOf[StatBase].registerStat()) - AchievementPage.registerAchievementPage(new AchievementPage("OpenComputers", All: _*)) + AchievementPage.registerAchievementPage(new AchievementPage(OpenComputers.Name, All: _*)) } def onAssemble(stack: ItemStack, player: EntityPlayer): Unit = { - val descriptor = Items.get(stack) - if (descriptor == Items.get(Constants.BlockName.Microcontroller)) player.addStat(Microcontroller, 1) - if (descriptor == Items.get(Constants.BlockName.Robot)) player.addStat(Robot, 1) - if (descriptor == Items.get(Constants.ItemName.Drone)) player.addStat(Drone, 1) - if (descriptor == Items.get(Constants.ItemName.Tablet)) player.addStat(Tablet, 1) + AssemblingMap.get(Items.get(stack)).foreach(player.addStat(_, 1)) } def onCraft(stack: ItemStack, player: EntityPlayer): Unit = { CraftingMap.get(Items.get(stack)).foreach(player.addStat(_, 1)) - - if (ItemStack.areItemStacksEqual(stack, Items.createOpenOS())) { - player.addStat(OpenOS, 1) - } + CustomCraftingMap.find(entry => ItemStack.areItemStacksEqual(stack, entry._1)).foreach(entry => player.addStat(entry._2, 1)) } -} -class Achievement(name: String, description: String, x: Int, y: Int, stack: ItemStack, parent: MCAchievement, requirements: String*) extends MCAchievement(name, description, x, y, stack, parent) { - Achievement.All += this + private def newAchievement(name: String) = new AchievementBuilder(name) - for (requirement <- requirements) { - val descriptor = Items.get(requirement) - if (descriptor != null) { - Achievement.CraftingMap += descriptor -> this + private class AchievementBuilder(val name: String) { + var x = 0 + var y = 0 + var stack = stackFromName(name) + var parent: Option[MCAchievement] = None + var crafting = mutable.Set.empty[String] + var customCrafting = mutable.Set.empty[ItemStack] + var assembling = mutable.Set.empty[String] + + def at(x: Int, y: Int): AchievementBuilder = { + this.x = x + this.y = y + this } + + def withIconOf(stack: ItemStack): AchievementBuilder = { + this.stack = Option(stack) + this + } + + def withParent(parent: MCAchievement): AchievementBuilder = { + this.parent = Option(parent) + this + } + + def whenCrafting(name: String): AchievementBuilder = { + crafting += name + if (stack.isEmpty) stack = stackFromName(name) + this + } + + def whenCrafting(stack: ItemStack): AchievementBuilder = { + customCrafting += stack + if (this.stack.isEmpty) this.stack = Option(stack) + this + } + + def whenAssembling(name: String): AchievementBuilder = { + assembling += name + if (stack.isEmpty) stack = stackFromName(name) + this + } + + def add(): MCAchievement = { + val achievement = new MCAchievement("oc." + name, "oc." + name, x, y, stack.orNull, parent.orNull) + + if (parent.isEmpty) { + achievement.asInstanceOf[StatBase].initIndependentStat() + } + + for (requirement <- crafting) { + val descriptor = Items.get(requirement) + if (descriptor != null) { + Achievement.CraftingMap += descriptor -> achievement + } + } + + for (requirement <- customCrafting) { + if (requirement != null) { + Achievement.CustomCraftingMap += requirement -> achievement + } + } + + for (requirement <- assembling) { + val descriptor = Items.get(requirement) + if (descriptor != null) { + Achievement.AssemblingMap += descriptor -> achievement + } + } + + Achievement.All += achievement + achievement + } + + private def stackFromName(name: String) = Option(Items.get(name)).map(_.createItemStack(1)) } -} + +} \ No newline at end of file diff --git a/src/main/scala/li/cil/oc/common/EventHandler.scala b/src/main/scala/li/cil/oc/common/EventHandler.scala index f513b2c3a..a1a594c74 100644 --- a/src/main/scala/li/cil/oc/common/EventHandler.scala +++ b/src/main/scala/li/cil/oc/common/EventHandler.scala @@ -257,6 +257,13 @@ object EventHandler { (month == Calendar.DECEMBER && dayOfMonth == 14) } + def isItTime = { + val now = Calendar.getInstance() + val month = now.get(Calendar.MONTH) + val dayOfMonth = now.get(Calendar.DAY_OF_MONTH) + month == Calendar.APRIL && dayOfMonth == 1 + } + private def recraft(e: ItemCraftedEvent, item: ItemInfo, callback: ItemStack => Option[ItemStack]): Boolean = { if (api.Items.get(e.crafting) == item) { for (slot <- 0 until e.craftMatrix.getSizeInventory) { diff --git a/src/main/scala/li/cil/oc/common/block/Microcontroller.scala b/src/main/scala/li/cil/oc/common/block/Microcontroller.scala index 93603c541..36d8c3ad4 100644 --- a/src/main/scala/li/cil/oc/common/block/Microcontroller.scala +++ b/src/main/scala/li/cil/oc/common/block/Microcontroller.scala @@ -2,6 +2,7 @@ package li.cil.oc.common.block import java.util +import li.cil.oc.Constants import li.cil.oc.Settings import li.cil.oc.api import li.cil.oc.client.KeyBindings @@ -76,7 +77,7 @@ class Microcontroller(protected implicit val tileTag: ClassTag[tileentity.Microc } true } - else if (api.Items.get(player.getHeldItem) == api.Items.get("eeprom")) { + else if (api.Items.get(player.getHeldItem) == api.Items.get(Constants.ItemName.EEPROM)) { if (!world.isRemote) { world.getTileEntity(pos) match { case mcu: tileentity.Microcontroller => diff --git a/src/main/scala/li/cil/oc/common/init/Items.scala b/src/main/scala/li/cil/oc/common/init/Items.scala index 3057e25c5..af277c01e 100644 --- a/src/main/scala/li/cil/oc/common/init/Items.scala +++ b/src/main/scala/li/cil/oc/common/init/Items.scala @@ -159,10 +159,7 @@ object Items extends ItemAPI { get(Constants.ItemName.RAMTier6).createItemStack(1) ) - val stack = get(Constants.ItemName.Drone).createItemStack(1) - data.save(stack) - - stack + data.createItemStack() } def createConfiguredMicrocontroller() = { @@ -182,10 +179,7 @@ object Items extends ItemAPI { get(Constants.ItemName.RAMTier6).createItemStack(1) ) - val stack = get(Constants.BlockName.Microcontroller).createItemStack(1) - data.save(stack) - - stack + data.createItemStack() } def createConfiguredRobot() = { @@ -226,10 +220,7 @@ object Items extends ItemAPI { get(Constants.BlockName.DiskDrive).createItemStack(1) ) - val stack = get(Constants.BlockName.Robot).createItemStack(1) - data.save(stack) - - stack + data.createItemStack() } def createConfiguredTablet() = { diff --git a/src/main/scala/li/cil/oc/common/item/Delegator.scala b/src/main/scala/li/cil/oc/common/item/Delegator.scala index 2a29da281..6265cf169 100644 --- a/src/main/scala/li/cil/oc/common/item/Delegator.scala +++ b/src/main/scala/li/cil/oc/common/item/Delegator.scala @@ -83,10 +83,11 @@ class Delegator extends Item { override def isBookEnchantable(itemA: ItemStack, itemB: ItemStack): Boolean = false - override def getRarity(stack: ItemStack) = Delegator.subItem(stack) match { - case Some(subItem) => subItem.rarity(stack) - case _ => EnumRarity.COMMON - } + override def getRarity(stack: ItemStack) = + Delegator.subItem(stack) match { + case Some(subItem) => subItem.rarity(stack) + case _ => EnumRarity.COMMON + } override def getColorFromItemStack(stack: ItemStack, pass: Int) = Delegator.subItem(stack) match { diff --git a/src/main/scala/li/cil/oc/common/item/InkCartridge.scala b/src/main/scala/li/cil/oc/common/item/InkCartridge.scala index 8563ab588..f8ed8bee8 100644 --- a/src/main/scala/li/cil/oc/common/item/InkCartridge.scala +++ b/src/main/scala/li/cil/oc/common/item/InkCartridge.scala @@ -1,5 +1,6 @@ package li.cil.oc.common.item +import li.cil.oc.Constants import li.cil.oc.api import net.minecraft.item.ItemStack @@ -7,8 +8,8 @@ class InkCartridge(val parent: Delegator) extends Delegate { override def maxStackSize = 1 override def getContainerItem(stack: ItemStack): ItemStack = { - if (api.Items.get(stack) == api.Items.get("inkCartridge")) - api.Items.get("inkCartridgeEmpty").createItemStack(1) + if (api.Items.get(stack) == api.Items.get(Constants.ItemName.InkCartridge)) + api.Items.get(Constants.ItemName.InkCartridgeEmpty).createItemStack(1) else super.getContainerItem(stack) } diff --git a/src/main/scala/li/cil/oc/common/item/data/MicrocontrollerData.scala b/src/main/scala/li/cil/oc/common/item/data/MicrocontrollerData.scala index 03ea3f7bd..67303f58d 100644 --- a/src/main/scala/li/cil/oc/common/item/data/MicrocontrollerData.scala +++ b/src/main/scala/li/cil/oc/common/item/data/MicrocontrollerData.scala @@ -30,7 +30,7 @@ class MicrocontrollerData extends ItemData { // Reserve slot for EEPROM if necessary, avoids having to resize the // components array in the MCU tile entity, which isn't possible currently. - if (!components.exists(stack => api.Items.get(stack) == api.Items.get("eeprom"))) { + if (!components.exists(stack => api.Items.get(stack) == api.Items.get(Constants.ItemName.EEPROM))) { components :+= null } } diff --git a/src/main/scala/li/cil/oc/common/item/data/PrintData.scala b/src/main/scala/li/cil/oc/common/item/data/PrintData.scala index 9c8d5de60..33d81906a 100644 --- a/src/main/scala/li/cil/oc/common/item/data/PrintData.scala +++ b/src/main/scala/li/cil/oc/common/item/data/PrintData.scala @@ -126,9 +126,9 @@ object PrintData { private val inkPerCartridge = Settings.get.printInkValue def materialValue(stack: ItemStack) = { - if (api.Items.get(stack) == api.Items.get("chamelium")) + if (api.Items.get(stack) == api.Items.get(Constants.ItemName.Chamelium)) materialPerItem - else if (api.Items.get(stack) == api.Items.get("print")) { + else if (api.Items.get(stack) == api.Items.get(Constants.BlockName.Print)) { val data = new PrintData(stack) computeCosts(data) match { case Some((materialRequired, inkRequired)) => (materialRequired * Settings.get.printRecycleRate).toInt @@ -139,7 +139,7 @@ object PrintData { } def inkValue(stack: ItemStack) = { - if (api.Items.get(stack) == api.Items.get("inkCartridge")) + if (api.Items.get(stack) == api.Items.get(Constants.ItemName.InkCartridge)) inkPerCartridge else if (Color.isDye(stack)) inkPerCartridge / 10 diff --git a/src/main/scala/li/cil/oc/common/tileentity/Microcontroller.scala b/src/main/scala/li/cil/oc/common/tileentity/Microcontroller.scala index 22beb7a34..b5ebafb9f 100644 --- a/src/main/scala/li/cil/oc/common/tileentity/Microcontroller.scala +++ b/src/main/scala/li/cil/oc/common/tileentity/Microcontroller.scala @@ -1,5 +1,6 @@ package li.cil.oc.common.tileentity +import li.cil.oc.Constants import li.cil.oc.Settings import li.cil.oc.api import li.cil.oc.api.internal @@ -235,7 +236,7 @@ class Microcontroller extends traits.PowerAcceptor with traits.Hub with traits.C // For hotswapping EEPROMs. def changeEEPROM(newEeprom: ItemStack) = { - val oldEepromIndex = info.components.indexWhere(api.Items.get(_) == api.Items.get("eeprom")) + val oldEepromIndex = info.components.indexWhere(api.Items.get(_) == api.Items.get(Constants.ItemName.EEPROM)) if (oldEepromIndex >= 0) { val oldEeprom = info.components(oldEepromIndex) super.setInventorySlotContents(oldEepromIndex, newEeprom) diff --git a/src/main/scala/li/cil/oc/integration/fmp/CablePart.scala b/src/main/scala/li/cil/oc/integration/fmp/CablePart.scala index ec08516ca..81343cf4e 100644 --- a/src/main/scala/li/cil/oc/integration/fmp/CablePart.scala +++ b/src/main/scala/li/cil/oc/integration/fmp/CablePart.scala @@ -4,9 +4,7 @@ import codechicken.lib.data.MCDataInput import codechicken.lib.data.MCDataOutput import codechicken.lib.vec.Cuboid6 import codechicken.lib.vec.Vector3 -import codechicken.multipart._ -import cpw.mods.fml.relauncher.Side -import cpw.mods.fml.relauncher.SideOnly +import li.cil.oc.Constants import li.cil.oc.Settings import li.cil.oc.api import li.cil.oc.api.Items @@ -20,7 +18,6 @@ import li.cil.oc.common.block.Cable import li.cil.oc.common.tileentity import li.cil.oc.util.Color import li.cil.oc.util.ExtendedNBT._ -import net.minecraft.client.renderer.RenderBlocks import net.minecraft.entity.player.EntityPlayer import net.minecraft.item.ItemStack import net.minecraft.nbt.NBTTagCompound @@ -55,9 +52,9 @@ class CablePart(val original: Option[tileentity.Cable] = None) extends SimpleBlo // ----------------------------------------------------------------------- // - override def simpleBlock = Items.get("cable").block().asInstanceOf[Cable] + override def simpleBlock = Items.get(Constants.BlockName.Cable).block().asInstanceOf[Cable] - def getType = Settings.namespace + "cable" + def getType = Settings.namespace + Constants.BlockName.Cable override def doesTick = false diff --git a/src/main/scala/li/cil/oc/integration/fmp/EventHandler.scala b/src/main/scala/li/cil/oc/integration/fmp/EventHandler.scala index bbfccd8eb..92c77a98c 100644 --- a/src/main/scala/li/cil/oc/integration/fmp/EventHandler.scala +++ b/src/main/scala/li/cil/oc/integration/fmp/EventHandler.scala @@ -4,8 +4,7 @@ import codechicken.lib.packet.PacketCustom import codechicken.lib.raytracer.RayTracer import codechicken.lib.vec.BlockCoord import codechicken.lib.vec.Vector3 -import codechicken.multipart.TileMultipart -import cpw.mods.fml.common.eventhandler.SubscribeEvent +import li.cil.oc.Constants import li.cil.oc.Settings import li.cil.oc.api.Items import li.cil.oc.client.PacketSender @@ -51,10 +50,10 @@ object EventHandler { case itemBlock: ItemBlock => itemBlock.field_150939_a match { case simpleBlock: SimpleBlock => - if (simpleBlock == Items.get("cable").block()) { + if (simpleBlock == Items.get(Constants.BlockName.Cable).block()) { placeDelegatePart(player, hit, new CablePart()) } - else if (simpleBlock == Items.get("print").block()) { + else if (simpleBlock == Items.get(Constants.BlockName.Print).block()) { val part = new PrintPart() part.data.load(player.getHeldItem) part.facing = yaw2Direction((player.rotationYaw / 360 * 4).round & 3).getOpposite diff --git a/src/main/scala/li/cil/oc/integration/fmp/MultipartConverter.scala b/src/main/scala/li/cil/oc/integration/fmp/MultipartConverter.scala index 00c7571b1..28e4c0a9b 100644 --- a/src/main/scala/li/cil/oc/integration/fmp/MultipartConverter.scala +++ b/src/main/scala/li/cil/oc/integration/fmp/MultipartConverter.scala @@ -3,8 +3,7 @@ package li.cil.oc.integration.fmp import java.util import codechicken.lib.vec.BlockCoord -import codechicken.multipart.MultiPartRegistry -import codechicken.multipart.MultiPartRegistry.IPartConverter +import li.cil.oc.Constants import li.cil.oc.api.Items import li.cil.oc.common.tileentity.Cable import li.cil.oc.common.tileentity.Print @@ -16,8 +15,8 @@ object MultipartConverter extends IPartConverter { } override def blockTypes = util.Arrays.asList( - Items.get("cable").block, - Items.get("print").block + Items.get(Constants.BlockName.Cable).block, + Items.get(Constants.BlockName.Print).block ) override def convert(world: World, pos: BlockCoord) = { diff --git a/src/main/scala/li/cil/oc/integration/fmp/PrintPart.scala b/src/main/scala/li/cil/oc/integration/fmp/PrintPart.scala index e1ca46f36..05f400a3b 100644 --- a/src/main/scala/li/cil/oc/integration/fmp/PrintPart.scala +++ b/src/main/scala/li/cil/oc/integration/fmp/PrintPart.scala @@ -7,6 +7,7 @@ import codechicken.lib.data.MCDataOutput import codechicken.lib.raytracer.ExtendedMOP import codechicken.lib.vec.Cuboid6 import codechicken.lib.vec.Vector3 +import li.cil.oc.Constants import li.cil.oc.Settings import li.cil.oc.api.Items import li.cil.oc.common.block.Print @@ -88,9 +89,9 @@ class PrintPart(val original: Option[tileentity.Print] = None) extends SimpleBlo // ----------------------------------------------------------------------- // - override def simpleBlock = Items.get("print").block().asInstanceOf[Print] + override def simpleBlock = Items.get(Constants.BlockName.Print).block().asInstanceOf[Print] - def getType = Settings.namespace + "print" + def getType = Settings.namespace + Constants.BlockName.Print override def doesTick = false diff --git a/src/main/scala/li/cil/oc/integration/gc/DriverWorldSensorCard.scala b/src/main/scala/li/cil/oc/integration/gc/DriverWorldSensorCard.scala index 8208c7249..261801db2 100644 --- a/src/main/scala/li/cil/oc/integration/gc/DriverWorldSensorCard.scala +++ b/src/main/scala/li/cil/oc/integration/gc/DriverWorldSensorCard.scala @@ -1,5 +1,6 @@ package li.cil.oc.integration.gc +import li.cil.oc.Constants import li.cil.oc.api import li.cil.oc.api.driver.EnvironmentAware import li.cil.oc.api.driver.EnvironmentHost @@ -11,7 +12,7 @@ import net.minecraft.item.ItemStack object DriverWorldSensorCard extends Item with HostAware with EnvironmentAware { override def worksWith(stack: ItemStack) = - isOneOf(stack, api.Items.get("worldSensorCard")) + isOneOf(stack, api.Items.get(Constants.ItemName.WorldSensorCard)) override def createEnvironment(stack: ItemStack, host: EnvironmentHost) = if (Mods.Galacticraft.isAvailable) new WorldSensorCard(host) diff --git a/src/main/scala/li/cil/oc/integration/opencomputers/DriverCPU.scala b/src/main/scala/li/cil/oc/integration/opencomputers/DriverCPU.scala index 024ab85f1..9526faeb6 100644 --- a/src/main/scala/li/cil/oc/integration/opencomputers/DriverCPU.scala +++ b/src/main/scala/li/cil/oc/integration/opencomputers/DriverCPU.scala @@ -30,10 +30,11 @@ object DriverCPU extends Item with Processor { case _ => Tier.One } - override def supportedComponents(stack: ItemStack) = Delegator.subItem(stack) match { - case Some(cpu: item.CPU) => Settings.get.cpuComponentSupport(cpu.tier) - case _ => Tier.One - } + override def supportedComponents(stack: ItemStack) = + Delegator.subItem(stack) match { + case Some(cpu: item.CPU) => Settings.get.cpuComponentSupport(cpu.tier) + case _ => Tier.One + } override def architecture(stack: ItemStack): Class[_ <: Architecture] = { if (stack.hasTagCompound) { diff --git a/src/main/scala/li/cil/oc/integration/opencomputers/DriverComponentBus.scala b/src/main/scala/li/cil/oc/integration/opencomputers/DriverComponentBus.scala index 2a4eb0942..93a940c3a 100644 --- a/src/main/scala/li/cil/oc/integration/opencomputers/DriverComponentBus.scala +++ b/src/main/scala/li/cil/oc/integration/opencomputers/DriverComponentBus.scala @@ -21,15 +21,17 @@ object DriverComponentBus extends Item with Processor { override def slot(stack: ItemStack) = Slot.ComponentBus - override def tier(stack: ItemStack) = Delegator.subItem(stack) match { - case Some(bus: item.ComponentBus) => bus.tier - case _ => Tier.One - } + override def tier(stack: ItemStack) = + Delegator.subItem(stack) match { + case Some(bus: item.ComponentBus) => bus.tier + case _ => Tier.One + } - override def supportedComponents(stack: ItemStack) = Delegator.subItem(stack) match { - case Some(bus: item.ComponentBus) => Settings.get.cpuComponentSupport(bus.tier) - case _ => Tier.One - } + override def supportedComponents(stack: ItemStack) = + Delegator.subItem(stack) match { + case Some(bus: item.ComponentBus) => Settings.get.cpuComponentSupport(bus.tier) + case _ => Tier.One + } override def architecture(stack: ItemStack) = null } diff --git a/src/main/scala/li/cil/oc/integration/opencomputers/DriverContainerCard.scala b/src/main/scala/li/cil/oc/integration/opencomputers/DriverContainerCard.scala index 0ce3eb7c3..55729f244 100644 --- a/src/main/scala/li/cil/oc/integration/opencomputers/DriverContainerCard.scala +++ b/src/main/scala/li/cil/oc/integration/opencomputers/DriverContainerCard.scala @@ -24,8 +24,9 @@ object DriverContainerCard extends Item with Container { override def providedTier(stack: ItemStack) = tier(stack) - override def tier(stack: ItemStack) = Delegator.subItem(stack) match { - case Some(container: item.UpgradeContainerCard) => container.tier - case _ => Tier.One - } + override def tier(stack: ItemStack) = + Delegator.subItem(stack) match { + case Some(container: item.UpgradeContainerCard) => container.tier + case _ => Tier.One + } } diff --git a/src/main/scala/li/cil/oc/integration/opencomputers/DriverContainerUpgrade.scala b/src/main/scala/li/cil/oc/integration/opencomputers/DriverContainerUpgrade.scala index 16ea29aee..502832688 100644 --- a/src/main/scala/li/cil/oc/integration/opencomputers/DriverContainerUpgrade.scala +++ b/src/main/scala/li/cil/oc/integration/opencomputers/DriverContainerUpgrade.scala @@ -24,8 +24,9 @@ object DriverContainerUpgrade extends Item with Container { override def providedTier(stack: ItemStack) = tier(stack) - override def tier(stack: ItemStack) = Delegator.subItem(stack) match { - case Some(container: item.UpgradeContainerUpgrade) => container.tier - case _ => Tier.One - } + override def tier(stack: ItemStack) = + Delegator.subItem(stack) match { + case Some(container: item.UpgradeContainerUpgrade) => container.tier + case _ => Tier.One + } } diff --git a/src/main/scala/li/cil/oc/integration/opencomputers/DriverFileSystem.scala b/src/main/scala/li/cil/oc/integration/opencomputers/DriverFileSystem.scala index 3ffc2cd91..521c44b86 100644 --- a/src/main/scala/li/cil/oc/integration/opencomputers/DriverFileSystem.scala +++ b/src/main/scala/li/cil/oc/integration/opencomputers/DriverFileSystem.scala @@ -22,22 +22,25 @@ object DriverFileSystem extends Item { api.Items.get(Constants.ItemName.Floppy)) && (!stack.hasTagCompound || !stack.getTagCompound.hasKey(Settings.namespace + "lootPath")) - override def createEnvironment(stack: ItemStack, host: EnvironmentHost) = Delegator.subItem(stack) match { - case Some(hdd: HardDiskDrive) => createEnvironment(stack, hdd.kiloBytes * 1024, host) - case Some(disk: FloppyDisk) => createEnvironment(stack, Settings.get.floppySize * 1024, host) - case _ => null - } + override def createEnvironment(stack: ItemStack, host: EnvironmentHost) = + Delegator.subItem(stack) match { + case Some(hdd: HardDiskDrive) => createEnvironment(stack, hdd.kiloBytes * 1024, host) + case Some(disk: FloppyDisk) => createEnvironment(stack, Settings.get.floppySize * 1024, host) + case _ => null + } - override def slot(stack: ItemStack) = Delegator.subItem(stack) match { - case Some(hdd: HardDiskDrive) => Slot.HDD - case Some(disk: FloppyDisk) => Slot.Floppy - case _ => throw new IllegalArgumentException() - } + override def slot(stack: ItemStack) = + Delegator.subItem(stack) match { + case Some(hdd: HardDiskDrive) => Slot.HDD + case Some(disk: FloppyDisk) => Slot.Floppy + case _ => throw new IllegalArgumentException() + } - override def tier(stack: ItemStack) = Delegator.subItem(stack) match { - case Some(hdd: HardDiskDrive) => hdd.tier - case _ => 0 - } + override def tier(stack: ItemStack) = + Delegator.subItem(stack) match { + case Some(hdd: HardDiskDrive) => hdd.tier + case _ => 0 + } private def createEnvironment(stack: ItemStack, capacity: Int, host: EnvironmentHost) = if (DimensionManager.getWorld(0) != null) { // We have a bit of a chicken-egg problem here, because we want to use the diff --git a/src/main/scala/li/cil/oc/integration/opencomputers/DriverGraphicsCard.scala b/src/main/scala/li/cil/oc/integration/opencomputers/DriverGraphicsCard.scala index 0f714347c..31b594c1d 100644 --- a/src/main/scala/li/cil/oc/integration/opencomputers/DriverGraphicsCard.scala +++ b/src/main/scala/li/cil/oc/integration/opencomputers/DriverGraphicsCard.scala @@ -28,10 +28,11 @@ object DriverGraphicsCard extends Item with HostAware with EnvironmentAware { override def slot(stack: ItemStack) = Slot.Card - override def tier(stack: ItemStack) = Delegator.subItem(stack) match { - case Some(gpu: common.item.GraphicsCard) => gpu.tier - case _ => Tier.One - } + override def tier(stack: ItemStack) = + Delegator.subItem(stack) match { + case Some(gpu: common.item.GraphicsCard) => gpu.tier + case _ => Tier.One + } override def providedEnvironment(stack: ItemStack) = classOf[component.GraphicsCard] } diff --git a/src/main/scala/li/cil/oc/integration/opencomputers/DriverMemory.scala b/src/main/scala/li/cil/oc/integration/opencomputers/DriverMemory.scala index 86ddc20bd..6a88a3735 100644 --- a/src/main/scala/li/cil/oc/integration/opencomputers/DriverMemory.scala +++ b/src/main/scala/li/cil/oc/integration/opencomputers/DriverMemory.scala @@ -27,8 +27,9 @@ object DriverMemory extends Item with driver.item.Memory { override def slot(stack: ItemStack) = Slot.Memory - override def tier(stack: ItemStack) = Delegator.subItem(stack) match { - case Some(memory: item.Memory) => memory.tier / 2 - case _ => Tier.One - } + override def tier(stack: ItemStack) = + Delegator.subItem(stack) match { + case Some(memory: item.Memory) => memory.tier / 2 + case _ => Tier.One + } } diff --git a/src/main/scala/li/cil/oc/integration/opencomputers/DriverRedstoneCard.scala b/src/main/scala/li/cil/oc/integration/opencomputers/DriverRedstoneCard.scala index a98015288..2cfa1203a 100644 --- a/src/main/scala/li/cil/oc/integration/opencomputers/DriverRedstoneCard.scala +++ b/src/main/scala/li/cil/oc/integration/opencomputers/DriverRedstoneCard.scala @@ -41,10 +41,11 @@ object DriverRedstoneCard extends Item with HostAware with EnvironmentAware { override def slot(stack: ItemStack) = Slot.Card - override def tier(stack: ItemStack) = Delegator.subItem(stack) match { - case Some(card: item.RedstoneCard) => card.tier - case _ => Tier.One - } + override def tier(stack: ItemStack) = + Delegator.subItem(stack) match { + case Some(card: item.RedstoneCard) => card.tier + case _ => Tier.One + } override def providedEnvironment(stack: ItemStack): Class[_ <: Environment] = { val isAdvanced = tier(stack) == Tier.Two diff --git a/src/main/scala/li/cil/oc/integration/opencomputers/DriverUpgradeBattery.scala b/src/main/scala/li/cil/oc/integration/opencomputers/DriverUpgradeBattery.scala index a7a0a81f2..0b5d8a5c7 100644 --- a/src/main/scala/li/cil/oc/integration/opencomputers/DriverUpgradeBattery.scala +++ b/src/main/scala/li/cil/oc/integration/opencomputers/DriverUpgradeBattery.scala @@ -21,8 +21,9 @@ object DriverUpgradeBattery extends Item with HostAware { override def slot(stack: ItemStack) = Slot.Upgrade - override def tier(stack: ItemStack) = Delegator.subItem(stack) match { - case Some(battery: item.UpgradeBattery) => battery.tier - case _ => Tier.One - } + override def tier(stack: ItemStack) = + Delegator.subItem(stack) match { + case Some(battery: item.UpgradeBattery) => battery.tier + case _ => Tier.One + } } diff --git a/src/main/scala/li/cil/oc/integration/opencomputers/DriverUpgradeDatabase.scala b/src/main/scala/li/cil/oc/integration/opencomputers/DriverUpgradeDatabase.scala index 4367a911d..e65345ebe 100644 --- a/src/main/scala/li/cil/oc/integration/opencomputers/DriverUpgradeDatabase.scala +++ b/src/main/scala/li/cil/oc/integration/opencomputers/DriverUpgradeDatabase.scala @@ -31,10 +31,11 @@ object DriverUpgradeDatabase extends Item with HostAware with EnvironmentAware { override def slot(stack: ItemStack) = Slot.Upgrade - override def tier(stack: ItemStack) = Delegator.subItem(stack) match { - case Some(database: item.UpgradeDatabase) => database.tier - case _ => Tier.One - } + override def tier(stack: ItemStack) = + Delegator.subItem(stack) match { + case Some(database: item.UpgradeDatabase) => database.tier + case _ => Tier.One + } override def providedEnvironment(stack: ItemStack) = classOf[component.UpgradeDatabase] } diff --git a/src/main/scala/li/cil/oc/integration/stargatetech2/DriverAbstractBusCard.scala b/src/main/scala/li/cil/oc/integration/stargatetech2/DriverAbstractBusCard.scala index 94c8984be..2dbfb6567 100644 --- a/src/main/scala/li/cil/oc/integration/stargatetech2/DriverAbstractBusCard.scala +++ b/src/main/scala/li/cil/oc/integration/stargatetech2/DriverAbstractBusCard.scala @@ -1,5 +1,6 @@ package li.cil.oc.integration.stargatetech2 +import li.cil.oc.Constants import li.cil.oc.api import li.cil.oc.api.driver.EnvironmentAware import li.cil.oc.api.driver.EnvironmentHost @@ -11,7 +12,7 @@ import net.minecraft.item.ItemStack object DriverAbstractBusCard extends Item with HostAware with EnvironmentAware { override def worksWith(stack: ItemStack) = - isOneOf(stack, api.Items.get("abstractBusCard")) + isOneOf(stack, api.Items.get(Constants.ItemName.AbstractBusCard)) override def worksWith(stack: ItemStack, host: Class[_ <: EnvironmentHost]) = worksWith(stack) && (isComputer(host) || isRobot(host) || isServer(host) || isMicrocontroller(host))