diff --git a/src/main/resources/assets/opencomputers/lang/de_DE.lang b/src/main/resources/assets/opencomputers/lang/de_DE.lang index d329c9cb9..2bf07739c 100644 --- a/src/main/resources/assets/opencomputers/lang/de_DE.lang +++ b/src/main/resources/assets/opencomputers/lang/de_DE.lang @@ -9,6 +9,7 @@ oc:tile.Capacitor.name=Kondensator oc:tile.Case0.name=Computergehäuse (Stufe 1) oc:tile.Case1.name=Computergehäuse (Stufe 2) oc:tile.Case2.name=Computergehäuse (Stufe 3) +oc:tile.Case3.name=Computergehäuse (Creative) oc:tile.Charger.name=Ladestation oc:tile.DiskDrive.name=Diskettenlaufwerk oc:tile.Keyboard.name=Tastatur diff --git a/src/main/resources/assets/opencomputers/lang/en_US.lang b/src/main/resources/assets/opencomputers/lang/en_US.lang index 9f7eb1283..026e5a023 100644 --- a/src/main/resources/assets/opencomputers/lang/en_US.lang +++ b/src/main/resources/assets/opencomputers/lang/en_US.lang @@ -9,6 +9,7 @@ oc:tile.Capacitor.name=Capacitor oc:tile.Case0.name=Computer Case (Tier 1) oc:tile.Case1.name=Computer Case (Tier 2) oc:tile.Case2.name=Computer Case (Tier 3) +oc:tile.Case3.name=Computer Case (Creative) oc:tile.Charger.name=Charger oc:tile.DiskDrive.name=Disk Drive oc:tile.Keyboard.name=Keyboard diff --git a/src/main/scala/li/cil/oc/Blocks.scala b/src/main/scala/li/cil/oc/Blocks.scala index 0b6b4282f..47531b852 100644 --- a/src/main/scala/li/cil/oc/Blocks.scala +++ b/src/main/scala/li/cil/oc/Blocks.scala @@ -18,7 +18,7 @@ object Blocks { var cable: Cable = _ var capacitor: Capacitor = _ var charger: Charger = _ - var case1, case2, case3: Case = _ + var case1, case2, case3, case4: Case = _ var diskDrive: DiskDrive = _ var keyboard: Keyboard = _ var hologram: Hologram = _ @@ -103,6 +103,9 @@ object Blocks { hologram = Recipes.addBlockDelegate(new Hologram(blockSpecial), "hologram") wirelessRouter = Recipes.addBlockDelegate(new WirelessRouter(blockSimple), "wirelessRouter") + // v1.2.6 + case4 = new Case.TierCreative(blockSimpleWithRedstone) + // Initialize API. api.Blocks.AccessPoint = wirelessRouter.createItemStack() api.Blocks.Adapter = adapter.createItemStack() diff --git a/src/main/scala/li/cil/oc/common/block/Case.scala b/src/main/scala/li/cil/oc/common/block/Case.scala index 5e8c54083..b143541a1 100644 --- a/src/main/scala/li/cil/oc/common/block/Case.scala +++ b/src/main/scala/li/cil/oc/common/block/Case.scala @@ -21,7 +21,7 @@ abstract class Case(val parent: SimpleDelegator) extends RedstoneAware with Simp def tier: Int - override def rarity = Array(EnumRarity.common, EnumRarity.uncommon, EnumRarity.rare).apply(tier) + override def rarity = Array(EnumRarity.common, EnumRarity.uncommon, EnumRarity.rare, EnumRarity.epic).apply(tier) @SideOnly(Side.CLIENT) override def color = Color.byTier(tier) @@ -30,7 +30,8 @@ abstract class Case(val parent: SimpleDelegator) extends RedstoneAware with Simp val slots = tier match { case 0 => "2/1/1" case 1 => "2/2/2" - case 2 => "3/2/3" + case 2 | 3 => "3/2/3" + case _ => "0/0/0" } tooltip.addAll(Tooltip.get("Case", slots)) } @@ -118,4 +119,8 @@ object Case { def tier = 2 } + class TierCreative(parent: SimpleDelegator) extends Case(parent) { + def tier = 3 + } + } diff --git a/src/main/scala/li/cil/oc/common/container/Case.scala b/src/main/scala/li/cil/oc/common/container/Case.scala index 1895fc247..8d2e4eb05 100644 --- a/src/main/scala/li/cil/oc/common/container/Case.scala +++ b/src/main/scala/li/cil/oc/common/container/Case.scala @@ -5,7 +5,7 @@ import li.cil.oc.common.tileentity import net.minecraft.entity.player.{EntityPlayer, InventoryPlayer} class Case(playerInventory: InventoryPlayer, computer: tileentity.Case) extends Player(playerInventory, computer) { - for (i <- 0 to (if (computer.tier == 2) 2 else 1)) { + for (i <- 0 to (if (computer.tier >= 2) 2 else 1)) { addSlotToContainer(98, 16 + i * slotSize, api.driver.Slot.Card, computer.maxComponentTierForSlot(getInventory.size)) } @@ -17,11 +17,11 @@ class Case(playerInventory: InventoryPlayer, computer: tileentity.Case) extends addSlotToContainer(142, 16 + i * slotSize, api.driver.Slot.HardDiskDrive, computer.maxComponentTierForSlot(getInventory.size)) } - if (computer.tier == 2) { + if (computer.tier >= 2) { addSlotToContainer(142, 16 + 2 * slotSize, api.driver.Slot.Disk) } - addSlotToContainer(120, 16, api.driver.Slot.Processor, computer.tier) + addSlotToContainer(120, 16, api.driver.Slot.Processor, computer.maxComponentTierForSlot(getInventory.size)) if (computer.tier == 0) { addSlotToContainer(120, 16 + 2 * slotSize, api.driver.Slot.Memory, computer.maxComponentTierForSlot(getInventory.size)) diff --git a/src/main/scala/li/cil/oc/common/tileentity/Case.scala b/src/main/scala/li/cil/oc/common/tileentity/Case.scala index 599e0f589..a711f54d8 100644 --- a/src/main/scala/li/cil/oc/common/tileentity/Case.scala +++ b/src/main/scala/li/cil/oc/common/tileentity/Case.scala @@ -52,10 +52,18 @@ class Case(var tier: Int, val isRemote: Boolean) extends traits.PowerAcceptor wi case _ => false } + override def updateEntity() { + if (tier == 3 && isServer && world.getWorldTime % Settings.get.tickFrequency == 0) { + // Creative case, make it generate power. + node.asInstanceOf[Connector].changeBuffer(Double.PositiveInfinity) + } + super.updateEntity() + } + // ----------------------------------------------------------------------- // override def readFromNBT(nbt: NBTTagCompound) { - tier = nbt.getByte(Settings.namespace + "tier") max 0 min 2 + tier = nbt.getByte(Settings.namespace + "tier") max 0 min 3 color = Color.byTier(tier) super.readFromNBT(nbt) recomputeMaxComponents() @@ -79,6 +87,7 @@ class Case(var tier: Int, val isRemote: Boolean) extends traits.PowerAcceptor wi case 0 => 6 case 1 => 7 case 2 => 9 + case 3 => 9 case _ => 0 } @@ -114,6 +123,16 @@ class Case(var tier: Int, val isRemote: Boolean) extends traits.PowerAcceptor wi case (7, Some(driver)) => driver.slot(stack) == Slot.Disk case (8, Some(driver)) => driver.slot(stack) == Slot.Processor && driver.tier(stack) <= maxComponentTierForSlot(slot) case _ => false // Invalid slot. + + } + case 3 => (slot, Registry.itemDriverFor(stack)) match { + case (_, None) => false // Invalid item. + case (0 | 1 | 2, Some(driver)) => driver.slot(stack) == Slot.Card + case (3 | 4, Some(driver)) => driver.slot(stack) == Slot.Memory + case (5 | 6, Some(driver)) => driver.slot(stack) == Slot.HardDiskDrive + case (7, Some(driver)) => driver.slot(stack) == Slot.Disk + case (8, Some(driver)) => driver.slot(stack) == Slot.Processor + case _ => false // Invalid slot. } case _ => false } @@ -139,6 +158,7 @@ class Case(var tier: Int, val isRemote: Boolean) extends traits.PowerAcceptor wi case 8 => 2 case _ => -1 // Invalid slot. } + case 3 => 2 case _ => -1 } } \ No newline at end of file diff --git a/src/main/scala/li/cil/oc/server/driver/item/Memory.scala b/src/main/scala/li/cil/oc/server/driver/item/Memory.scala index 6f9d4ff55..bc123ef5b 100644 --- a/src/main/scala/li/cil/oc/server/driver/item/Memory.scala +++ b/src/main/scala/li/cil/oc/server/driver/item/Memory.scala @@ -13,7 +13,7 @@ object Memory extends Item with driver.Memory { case _ => 0 } - override def worksWith(stack: ItemStack) = isOneOf(stack, Items.ram1, Items.ram2, Items.ram3, Items.ram4, Items.ram5) + override def worksWith(stack: ItemStack) = isOneOf(stack, Items.ram1, Items.ram2, Items.ram3, Items.ram4, Items.ram5, Items.ram6) override def createEnvironment(stack: ItemStack, container: MCTileEntity) = null @@ -21,7 +21,7 @@ object Memory extends Item with driver.Memory { override def tier(stack: ItemStack) = Items.multi.subItem(stack) match { - case Some(memory: item.Memory) => (memory.tier + 1) / 2 + case Some(memory: item.Memory) => memory.tier / 2 case _ => 0 } } diff --git a/src/main/scala/li/cil/oc/util/Color.scala b/src/main/scala/li/cil/oc/util/Color.scala index 1a97b70d9..7e1bb435e 100644 --- a/src/main/scala/li/cil/oc/util/Color.scala +++ b/src/main/scala/li/cil/oc/util/Color.scala @@ -47,7 +47,7 @@ object Color { "dyeOrange" -> Orange, "dyeWhite" -> White) - val byTier = Array(LightGray, Yellow, Cyan) + val byTier = Array(LightGray, Yellow, Cyan, Magenta) def isDye(stack: ItemStack) = byOreName.contains(OreDictionary.getOreName(OreDictionary.getOreID(stack)))