mirror of
https://github.com/MightyPirates/OpenComputers.git
synced 2025-09-15 10:21:45 -04:00
Added one-slot inventory to charger, can be used to charge tablets.
This commit is contained in:
parent
e4db950a17
commit
238ef544d5
@ -1,6 +1,6 @@
|
|||||||
minecraft.version=1.6.4
|
minecraft.version=1.6.4
|
||||||
forge.version=9.11.1.964
|
forge.version=9.11.1.964
|
||||||
oc.version=1.3.4
|
oc.version=1.3.5
|
||||||
oc.subversion=dev
|
oc.subversion=dev
|
||||||
ccl.version=1.0.0.62
|
ccl.version=1.0.0.62
|
||||||
fmp.version=1.0.1.268
|
fmp.version=1.0.1.268
|
||||||
|
@ -442,6 +442,10 @@ opencomputers {
|
|||||||
# charge robots at roughly half speed.
|
# charge robots at roughly half speed.
|
||||||
chargerChargeRate: 100.0
|
chargerChargeRate: 100.0
|
||||||
|
|
||||||
|
# The amount of energy a Charger transfers into a tablet, if present, per
|
||||||
|
# tick. This is also based on configured charge speed, as for robots.
|
||||||
|
chargerChargeRateTablet: 10.0
|
||||||
|
|
||||||
# The energy efficiency of the generator upgrade. At 1.0 this will
|
# The energy efficiency of the generator upgrade. At 1.0 this will
|
||||||
# generate as much energy as you'd get by burning the fuel in a BuildCraft
|
# generate as much energy as you'd get by burning the fuel in a BuildCraft
|
||||||
# Stirling Engine (1MJ per fuel value / burn ticks). To discourage fully
|
# Stirling Engine (1MJ per fuel value / burn ticks). To discourage fully
|
||||||
@ -496,7 +500,7 @@ opencomputers {
|
|||||||
computer: 500.0
|
computer: 500.0
|
||||||
|
|
||||||
# The amount of energy robots can store in their internal buffer.
|
# The amount of energy robots can store in their internal buffer.
|
||||||
robot: 50000.0
|
robot: 20000.0
|
||||||
|
|
||||||
# The amount of energy a converter can store. This allows directly
|
# The amount of energy a converter can store. This allows directly
|
||||||
# connecting a converter to a distributor, without having to have a
|
# connecting a converter to a distributor, without having to have a
|
||||||
@ -509,6 +513,9 @@ opencomputers {
|
|||||||
# to exchange energy. This basically controls the bandwidth. You can
|
# to exchange energy. This basically controls the bandwidth. You can
|
||||||
# add capacitors between two distributors to increase this bandwidth.
|
# add capacitors between two distributors to increase this bandwidth.
|
||||||
distributor: 500
|
distributor: 500
|
||||||
|
|
||||||
|
# The amount a tablet can store in its internal buffer.
|
||||||
|
tablet: 10000
|
||||||
}
|
}
|
||||||
|
|
||||||
# Default "costs", i.e. how much energy certain operations consume.
|
# Default "costs", i.e. how much energy certain operations consume.
|
||||||
|
@ -166,6 +166,7 @@ oc:gui.Terminal.OutOfRange=Kein Signal.
|
|||||||
# Containers
|
# Containers
|
||||||
oc:container.AccessPoint=Access Point
|
oc:container.AccessPoint=Access Point
|
||||||
oc:container.Case=Computer
|
oc:container.Case=Computer
|
||||||
|
oc:containertile.Charger=Ladestation
|
||||||
oc:container.Disassembler=Recycler
|
oc:container.Disassembler=Recycler
|
||||||
oc:container.DiskDrive=Diskettenlaufwerk
|
oc:container.DiskDrive=Diskettenlaufwerk
|
||||||
oc:container.Server=Server
|
oc:container.Server=Server
|
||||||
|
@ -165,6 +165,7 @@ oc:gui.Terminal.OutOfRange=No signal.
|
|||||||
|
|
||||||
# Containers
|
# Containers
|
||||||
oc:container.AccessPoint=Access Point
|
oc:container.AccessPoint=Access Point
|
||||||
|
oc:container.Charger=Charger
|
||||||
oc:container.Case=Computer
|
oc:container.Case=Computer
|
||||||
oc:container.Disassembler=Disassembler
|
oc:container.Disassembler=Disassembler
|
||||||
oc:container.DiskDrive=Disk Drive
|
oc:container.DiskDrive=Disk Drive
|
||||||
|
@ -78,6 +78,7 @@ oc:gui.Robot.TurnOn=Allumer
|
|||||||
|
|
||||||
# Containers
|
# Containers
|
||||||
oc:container.Case=Ordinateur
|
oc:container.Case=Ordinateur
|
||||||
|
oc:container.Charger=Chargeur
|
||||||
oc:container.DiskDrive=Disque dur
|
oc:container.DiskDrive=Disque dur
|
||||||
oc:container.Switch=Routeur
|
oc:container.Switch=Routeur
|
||||||
|
|
||||||
|
@ -81,6 +81,7 @@ oc:gui.Robot.TurnOn=Ligar
|
|||||||
|
|
||||||
# Containers
|
# Containers
|
||||||
oc:container.Case=Computador
|
oc:container.Case=Computador
|
||||||
|
oc:container.Charger=Carregador
|
||||||
oc:container.DiskDrive=Drive de Disquetes
|
oc:container.DiskDrive=Drive de Disquetes
|
||||||
oc:container.Switch=Roteador
|
oc:container.Switch=Roteador
|
||||||
|
|
||||||
|
@ -160,6 +160,7 @@ oc:gui.Terminal.OutOfRange=Нет сигнала.
|
|||||||
# Containers
|
# Containers
|
||||||
oc:container.AccessPoint=Точка доступа
|
oc:container.AccessPoint=Точка доступа
|
||||||
oc:container.Case=Компьютер
|
oc:container.Case=Компьютер
|
||||||
|
oc:container.Charger=Зарядник
|
||||||
oc:container.Disassembler=Разборщик
|
oc:container.Disassembler=Разборщик
|
||||||
oc:container.DiskDrive=Дисковод
|
oc:container.DiskDrive=Дисковод
|
||||||
oc:container.Server=Сервер
|
oc:container.Server=Сервер
|
||||||
|
@ -166,6 +166,7 @@ oc:gui.Terminal.OutOfRange=无信号.
|
|||||||
# Containers
|
# Containers
|
||||||
oc:container.AccessPoint=桥接器
|
oc:container.AccessPoint=桥接器
|
||||||
oc:container.Case=计算机
|
oc:container.Case=计算机
|
||||||
|
oc:container.Charger=充电器
|
||||||
oc:container.Disassembler=分解器
|
oc:container.Disassembler=分解器
|
||||||
oc:container.DiskDrive=磁盘驱动器
|
oc:container.DiskDrive=磁盘驱动器
|
||||||
oc:container.Server=服务器
|
oc:container.Server=服务器
|
||||||
|
@ -160,6 +160,7 @@ oc:gui.Terminal.OutOfRange=沒訊號.
|
|||||||
# Containers
|
# Containers
|
||||||
oc:container.AccessPoint=存取點
|
oc:container.AccessPoint=存取點
|
||||||
oc:container.Case=電腦
|
oc:container.Case=電腦
|
||||||
|
oc:container.Charger=充電器
|
||||||
oc:container.Disassembler=拆解機
|
oc:container.Disassembler=拆解機
|
||||||
oc:container.DiskDrive=硬碟
|
oc:container.DiskDrive=硬碟
|
||||||
oc:container.Server=伺服器
|
oc:container.Server=伺服器
|
||||||
|
@ -127,7 +127,8 @@ class Settings(config: Config) {
|
|||||||
val pureIgnorePower = config.getBoolean("power.ignorePower")
|
val pureIgnorePower = config.getBoolean("power.ignorePower")
|
||||||
lazy val ignorePower = pureIgnorePower || !Mods.isPowerProvidingModPresent
|
lazy val ignorePower = pureIgnorePower || !Mods.isPowerProvidingModPresent
|
||||||
val tickFrequency = config.getDouble("power.tickFrequency") max 1
|
val tickFrequency = config.getDouble("power.tickFrequency") max 1
|
||||||
val chargeRate = config.getDouble("power.chargerChargeRate")
|
val chargeRateRobot = config.getDouble("power.chargerChargeRate")
|
||||||
|
val chargeRateTablet = config.getDouble("power.chargerChargeRateTablet")
|
||||||
val generatorEfficiency = config.getDouble("power.generatorEfficiency")
|
val generatorEfficiency = config.getDouble("power.generatorEfficiency")
|
||||||
val solarGeneratorEfficiency = config.getDouble("power.solarGeneratorEfficiency")
|
val solarGeneratorEfficiency = config.getDouble("power.solarGeneratorEfficiency")
|
||||||
val assemblerTickAmount = config.getDouble("power.assemblerTickAmount") max 1
|
val assemblerTickAmount = config.getDouble("power.assemblerTickAmount") max 1
|
||||||
@ -148,6 +149,7 @@ class Settings(config: Config) {
|
|||||||
OpenComputers.log.warning("Bad number of battery upgrade buffer sizes, ignoring.")
|
OpenComputers.log.warning("Bad number of battery upgrade buffer sizes, ignoring.")
|
||||||
Array(10000.0, 15000.0, 20000.0)
|
Array(10000.0, 15000.0, 20000.0)
|
||||||
}
|
}
|
||||||
|
val bufferTablet = config.getDouble("power.buffer.tablet") max 0
|
||||||
|
|
||||||
// power.cost
|
// power.cost
|
||||||
val computerCost = config.getDouble("power.cost.computer") max 0
|
val computerCost = config.getDouble("power.cost.computer") max 0
|
||||||
|
@ -14,6 +14,8 @@ object GuiHandler extends CommonGuiHandler {
|
|||||||
world.getBlockTileEntity(x, y, z) match {
|
world.getBlockTileEntity(x, y, z) match {
|
||||||
case computer: tileentity.Case if id == GuiType.Case.id =>
|
case computer: tileentity.Case if id == GuiType.Case.id =>
|
||||||
new gui.Case(player.inventory, computer)
|
new gui.Case(player.inventory, computer)
|
||||||
|
case charger: tileentity.Charger if id == GuiType.Charger.id =>
|
||||||
|
new gui.Charger(player.inventory, charger)
|
||||||
case disassembler: tileentity.Disassembler if id == GuiType.Disassembler.id =>
|
case disassembler: tileentity.Disassembler if id == GuiType.Disassembler.id =>
|
||||||
new gui.Disassembler(player.inventory, disassembler)
|
new gui.Disassembler(player.inventory, disassembler)
|
||||||
case drive: tileentity.DiskDrive if id == GuiType.DiskDrive.id =>
|
case drive: tileentity.DiskDrive if id == GuiType.DiskDrive.id =>
|
||||||
|
@ -7,7 +7,6 @@ import li.cil.oc.client.{Textures, PacketSender => ClientPacketSender}
|
|||||||
import li.cil.oc.common.{container, tileentity}
|
import li.cil.oc.common.{container, tileentity}
|
||||||
import net.minecraft.client.gui.GuiButton
|
import net.minecraft.client.gui.GuiButton
|
||||||
import net.minecraft.entity.player.InventoryPlayer
|
import net.minecraft.entity.player.InventoryPlayer
|
||||||
import net.minecraft.util.StatCollector
|
|
||||||
import org.lwjgl.opengl.GL11
|
import org.lwjgl.opengl.GL11
|
||||||
|
|
||||||
class Case(playerInventory: InventoryPlayer, val computer: tileentity.Case) extends DynamicGuiContainer(new container.Case(playerInventory, computer)) {
|
class Case(playerInventory: InventoryPlayer, val computer: tileentity.Case) extends DynamicGuiContainer(new container.Case(playerInventory, computer)) {
|
||||||
@ -36,7 +35,7 @@ class Case(playerInventory: InventoryPlayer, val computer: tileentity.Case) exte
|
|||||||
super.drawGuiContainerForegroundLayer(mouseX, mouseY)
|
super.drawGuiContainerForegroundLayer(mouseX, mouseY)
|
||||||
GL11.glPushAttrib(GL11.GL_ALL_ATTRIB_BITS) // Me lazy... prevents NEI render glitch.
|
GL11.glPushAttrib(GL11.GL_ALL_ATTRIB_BITS) // Me lazy... prevents NEI render glitch.
|
||||||
fontRenderer.drawString(
|
fontRenderer.drawString(
|
||||||
StatCollector.translateToLocal(computer.getInvName),
|
Localization.localizeImmediately(computer.getInvName),
|
||||||
8, 6, 0x404040)
|
8, 6, 0x404040)
|
||||||
if (powerButton.func_82252_a) {
|
if (powerButton.func_82252_a) {
|
||||||
val tooltip = new java.util.ArrayList[String]
|
val tooltip = new java.util.ArrayList[String]
|
||||||
|
14
src/main/scala/li/cil/oc/client/gui/Charger.scala
Normal file
14
src/main/scala/li/cil/oc/client/gui/Charger.scala
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
package li.cil.oc.client.gui
|
||||||
|
|
||||||
|
import li.cil.oc.Localization
|
||||||
|
import li.cil.oc.common.{container, tileentity}
|
||||||
|
import net.minecraft.entity.player.InventoryPlayer
|
||||||
|
|
||||||
|
class Charger(playerInventory: InventoryPlayer, val charger: tileentity.Charger) extends DynamicGuiContainer(new container.Charger(playerInventory, charger)) {
|
||||||
|
override def drawGuiContainerForegroundLayer(mouseX: Int, mouseY: Int) = {
|
||||||
|
super.drawGuiContainerForegroundLayer(mouseX, mouseY)
|
||||||
|
fontRenderer.drawString(
|
||||||
|
Localization.localizeImmediately(charger.getInvName),
|
||||||
|
8, 6, 0x404040)
|
||||||
|
}
|
||||||
|
}
|
@ -1,10 +1,10 @@
|
|||||||
package li.cil.oc.client.gui
|
package li.cil.oc.client.gui
|
||||||
|
|
||||||
|
import li.cil.oc.Localization
|
||||||
import li.cil.oc.client.Textures
|
import li.cil.oc.client.Textures
|
||||||
import li.cil.oc.client.gui.widget.ProgressBar
|
import li.cil.oc.client.gui.widget.ProgressBar
|
||||||
import li.cil.oc.common.{container, tileentity}
|
import li.cil.oc.common.{container, tileentity}
|
||||||
import net.minecraft.entity.player.InventoryPlayer
|
import net.minecraft.entity.player.InventoryPlayer
|
||||||
import net.minecraft.util.StatCollector
|
|
||||||
import org.lwjgl.opengl.GL11
|
import org.lwjgl.opengl.GL11
|
||||||
|
|
||||||
class Disassembler(playerInventory: InventoryPlayer, val disassembler: tileentity.Disassembler) extends DynamicGuiContainer(new container.Disassembler(playerInventory, disassembler)) {
|
class Disassembler(playerInventory: InventoryPlayer, val disassembler: tileentity.Disassembler) extends DynamicGuiContainer(new container.Disassembler(playerInventory, disassembler)) {
|
||||||
@ -14,7 +14,7 @@ class Disassembler(playerInventory: InventoryPlayer, val disassembler: tileentit
|
|||||||
|
|
||||||
override def drawGuiContainerForegroundLayer(mouseX: Int, mouseY: Int) = {
|
override def drawGuiContainerForegroundLayer(mouseX: Int, mouseY: Int) = {
|
||||||
fontRenderer.drawString(
|
fontRenderer.drawString(
|
||||||
StatCollector.translateToLocal(disassembler.getInvName),
|
Localization.localizeImmediately(disassembler.getInvName),
|
||||||
8, 6, 0x404040)
|
8, 6, 0x404040)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,14 +1,14 @@
|
|||||||
package li.cil.oc.client.gui
|
package li.cil.oc.client.gui
|
||||||
|
|
||||||
|
import li.cil.oc.Localization
|
||||||
import li.cil.oc.common.{container, tileentity}
|
import li.cil.oc.common.{container, tileentity}
|
||||||
import net.minecraft.entity.player.InventoryPlayer
|
import net.minecraft.entity.player.InventoryPlayer
|
||||||
import net.minecraft.util.StatCollector
|
|
||||||
|
|
||||||
class DiskDrive(playerInventory: InventoryPlayer, val drive: tileentity.DiskDrive) extends DynamicGuiContainer(new container.DiskDrive(playerInventory, drive)) {
|
class DiskDrive(playerInventory: InventoryPlayer, val drive: tileentity.DiskDrive) extends DynamicGuiContainer(new container.DiskDrive(playerInventory, drive)) {
|
||||||
override def drawGuiContainerForegroundLayer(mouseX: Int, mouseY: Int) = {
|
override def drawGuiContainerForegroundLayer(mouseX: Int, mouseY: Int) = {
|
||||||
super.drawGuiContainerForegroundLayer(mouseX, mouseY)
|
super.drawGuiContainerForegroundLayer(mouseX, mouseY)
|
||||||
fontRenderer.drawString(
|
fontRenderer.drawString(
|
||||||
StatCollector.translateToLocal(drive.getInvName),
|
Localization.localizeImmediately(drive.getInvName),
|
||||||
8, 6, 0x404040)
|
8, 6, 0x404040)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,15 +1,14 @@
|
|||||||
package li.cil.oc.client.gui
|
package li.cil.oc.client.gui
|
||||||
|
|
||||||
import li.cil.oc.client.Textures
|
import li.cil.oc.client.Textures
|
||||||
import li.cil.oc.common
|
|
||||||
import li.cil.oc.common.container.{ComponentSlot, Player}
|
import li.cil.oc.common.container.{ComponentSlot, Player}
|
||||||
import li.cil.oc.util.RenderState
|
import li.cil.oc.util.RenderState
|
||||||
import li.cil.oc.util.mods.NEI
|
import li.cil.oc.util.mods.NEI
|
||||||
|
import li.cil.oc.{Localization, common}
|
||||||
import net.minecraft.client.renderer.Tessellator
|
import net.minecraft.client.renderer.Tessellator
|
||||||
import net.minecraft.client.renderer.texture.TextureMap
|
import net.minecraft.client.renderer.texture.TextureMap
|
||||||
import net.minecraft.inventory.{Container, Slot}
|
import net.minecraft.inventory.{Container, Slot}
|
||||||
import net.minecraft.item.ItemStack
|
import net.minecraft.item.ItemStack
|
||||||
import net.minecraft.util.StatCollector
|
|
||||||
import org.lwjgl.opengl.GL11
|
import org.lwjgl.opengl.GL11
|
||||||
|
|
||||||
import scala.collection.convert.WrapAsScala._
|
import scala.collection.convert.WrapAsScala._
|
||||||
@ -21,7 +20,7 @@ abstract class DynamicGuiContainer(container: Container) extends CustomGuiContai
|
|||||||
|
|
||||||
override protected def drawGuiContainerForegroundLayer(mouseX: Int, mouseY: Int) {
|
override protected def drawGuiContainerForegroundLayer(mouseX: Int, mouseY: Int) {
|
||||||
fontRenderer.drawString(
|
fontRenderer.drawString(
|
||||||
StatCollector.translateToLocal("container.inventory"),
|
Localization.localizeImmediately("container.inventory"),
|
||||||
8, ySize - 96 + 2, 0x404040)
|
8, ySize - 96 + 2, 0x404040)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
package li.cil.oc.client.gui
|
package li.cil.oc.client.gui
|
||||||
|
|
||||||
|
import li.cil.oc.Localization
|
||||||
import li.cil.oc.client.Textures
|
import li.cil.oc.client.Textures
|
||||||
import li.cil.oc.common.container
|
import li.cil.oc.common.container
|
||||||
import li.cil.oc.common.inventory.ServerInventory
|
import li.cil.oc.common.inventory.ServerInventory
|
||||||
import net.minecraft.entity.player.InventoryPlayer
|
import net.minecraft.entity.player.InventoryPlayer
|
||||||
import net.minecraft.inventory.Slot
|
import net.minecraft.inventory.Slot
|
||||||
import net.minecraft.util.StatCollector
|
|
||||||
import org.lwjgl.opengl.GL11
|
import org.lwjgl.opengl.GL11
|
||||||
|
|
||||||
class Server(playerInventory: InventoryPlayer, serverInventory: ServerInventory) extends DynamicGuiContainer(new container.Server(playerInventory, serverInventory)) {
|
class Server(playerInventory: InventoryPlayer, serverInventory: ServerInventory) extends DynamicGuiContainer(new container.Server(playerInventory, serverInventory)) {
|
||||||
@ -13,7 +13,7 @@ class Server(playerInventory: InventoryPlayer, serverInventory: ServerInventory)
|
|||||||
override def drawGuiContainerForegroundLayer(mouseX: Int, mouseY: Int) = {
|
override def drawGuiContainerForegroundLayer(mouseX: Int, mouseY: Int) = {
|
||||||
super.drawGuiContainerForegroundLayer(mouseX, mouseY)
|
super.drawGuiContainerForegroundLayer(mouseX, mouseY)
|
||||||
fontRenderer.drawString(
|
fontRenderer.drawString(
|
||||||
StatCollector.translateToLocal(serverInventory.getInvName),
|
Localization.localizeImmediately(serverInventory.getInvName),
|
||||||
8, 6, 0x404040)
|
8, 6, 0x404040)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -8,7 +8,6 @@ import li.cil.oc.{Localization, Settings}
|
|||||||
import net.minecraft.client.gui.{GuiButton, GuiScreen}
|
import net.minecraft.client.gui.{GuiButton, GuiScreen}
|
||||||
import net.minecraft.client.renderer.Tessellator
|
import net.minecraft.client.renderer.Tessellator
|
||||||
import net.minecraft.entity.player.InventoryPlayer
|
import net.minecraft.entity.player.InventoryPlayer
|
||||||
import net.minecraft.util.StatCollector
|
|
||||||
import net.minecraftforge.common.ForgeDirection
|
import net.minecraftforge.common.ForgeDirection
|
||||||
import org.lwjgl.opengl.GL11
|
import org.lwjgl.opengl.GL11
|
||||||
|
|
||||||
@ -96,7 +95,7 @@ class ServerRack(playerInventory: InventoryPlayer, val rack: tileentity.ServerRa
|
|||||||
GL11.glPushAttrib(GL11.GL_ALL_ATTRIB_BITS) // Prevents NEI render glitch.
|
GL11.glPushAttrib(GL11.GL_ALL_ATTRIB_BITS) // Prevents NEI render glitch.
|
||||||
|
|
||||||
fontRenderer.drawString(
|
fontRenderer.drawString(
|
||||||
StatCollector.translateToLocal(rack.getInvName),
|
Localization.localizeImmediately(rack.getInvName),
|
||||||
8, 6, 0x404040)
|
8, 6, 0x404040)
|
||||||
|
|
||||||
val rangeY = 39
|
val rangeY = 39
|
||||||
|
@ -5,7 +5,6 @@ import java.text.DecimalFormat
|
|||||||
import li.cil.oc.Localization
|
import li.cil.oc.Localization
|
||||||
import li.cil.oc.common.{container, tileentity}
|
import li.cil.oc.common.{container, tileentity}
|
||||||
import net.minecraft.entity.player.InventoryPlayer
|
import net.minecraft.entity.player.InventoryPlayer
|
||||||
import net.minecraft.util.StatCollector
|
|
||||||
|
|
||||||
class Switch(playerInventory: InventoryPlayer, val switch: tileentity.Switch) extends DynamicGuiContainer(new container.Switch(playerInventory, switch)) {
|
class Switch(playerInventory: InventoryPlayer, val switch: tileentity.Switch) extends DynamicGuiContainer(new container.Switch(playerInventory, switch)) {
|
||||||
private val switchContainer = inventorySlots.asInstanceOf[container.Switch]
|
private val switchContainer = inventorySlots.asInstanceOf[container.Switch]
|
||||||
@ -14,7 +13,7 @@ class Switch(playerInventory: InventoryPlayer, val switch: tileentity.Switch) ex
|
|||||||
override def drawGuiContainerForegroundLayer(mouseX: Int, mouseY: Int) = {
|
override def drawGuiContainerForegroundLayer(mouseX: Int, mouseY: Int) = {
|
||||||
super.drawGuiContainerForegroundLayer(mouseX, mouseY)
|
super.drawGuiContainerForegroundLayer(mouseX, mouseY)
|
||||||
fontRenderer.drawString(
|
fontRenderer.drawString(
|
||||||
StatCollector.translateToLocal(switch.getInvName),
|
Localization.localizeImmediately(switch.getInvName),
|
||||||
8, 6, 0x404040)
|
8, 6, 0x404040)
|
||||||
|
|
||||||
fontRenderer.drawString(
|
fontRenderer.drawString(
|
||||||
|
@ -9,6 +9,8 @@ import net.minecraft.world.World
|
|||||||
abstract class GuiHandler extends IGuiHandler {
|
abstract class GuiHandler extends IGuiHandler {
|
||||||
override def getServerGuiElement(id: Int, player: EntityPlayer, world: World, x: Int, y: Int, z: Int) =
|
override def getServerGuiElement(id: Int, player: EntityPlayer, world: World, x: Int, y: Int, z: Int) =
|
||||||
world.getBlockTileEntity(x, y, z) match {
|
world.getBlockTileEntity(x, y, z) match {
|
||||||
|
case charger: tileentity.Charger if id == GuiType.Charger.id =>
|
||||||
|
new container.Charger(player.inventory, charger)
|
||||||
case computer: tileentity.Case if id == GuiType.Case.id =>
|
case computer: tileentity.Case if id == GuiType.Case.id =>
|
||||||
new container.Case(player.inventory, computer)
|
new container.Case(player.inventory, computer)
|
||||||
case disassembler: tileentity.Disassembler if id == GuiType.Disassembler.id =>
|
case disassembler: tileentity.Disassembler if id == GuiType.Disassembler.id =>
|
||||||
|
@ -4,6 +4,7 @@ object GuiType extends Enumeration {
|
|||||||
val
|
val
|
||||||
|
|
||||||
Case,
|
Case,
|
||||||
|
Charger,
|
||||||
Disassembler,
|
Disassembler,
|
||||||
DiskDrive,
|
DiskDrive,
|
||||||
Rack,
|
Rack,
|
||||||
|
@ -4,10 +4,10 @@ import java.util
|
|||||||
|
|
||||||
import cpw.mods.fml.common.Optional
|
import cpw.mods.fml.common.Optional
|
||||||
import li.cil.oc.client.Textures
|
import li.cil.oc.client.Textures
|
||||||
import li.cil.oc.common.tileentity
|
import li.cil.oc.common.{GuiType, tileentity}
|
||||||
import li.cil.oc.server.PacketSender
|
import li.cil.oc.server.PacketSender
|
||||||
import li.cil.oc.util.mods.{BuildCraft, Mods}
|
import li.cil.oc.util.mods.{BuildCraft, Mods}
|
||||||
import li.cil.oc.{Localization, Settings}
|
import li.cil.oc.{Localization, OpenComputers, Settings}
|
||||||
import mcp.mobius.waila.api.{IWailaConfigHandler, IWailaDataAccessor}
|
import mcp.mobius.waila.api.{IWailaConfigHandler, IWailaDataAccessor}
|
||||||
import net.minecraft.entity.player.EntityPlayer
|
import net.minecraft.entity.player.EntityPlayer
|
||||||
import net.minecraft.item.ItemStack
|
import net.minecraft.item.ItemStack
|
||||||
@ -45,14 +45,23 @@ class Charger(val parent: SimpleDelegator) extends RedstoneAware with SimpleDele
|
|||||||
|
|
||||||
override def rightClick(world: World, x: Int, y: Int, z: Int, player: EntityPlayer, side: ForgeDirection, hitX: Float, hitY: Float, hitZ: Float) =
|
override def rightClick(world: World, x: Int, y: Int, z: Int, player: EntityPlayer, side: ForgeDirection, hitX: Float, hitY: Float, hitZ: Float) =
|
||||||
world.getBlockTileEntity(x, y, z) match {
|
world.getBlockTileEntity(x, y, z) match {
|
||||||
case charger: tileentity.Charger if BuildCraft.holdsApplicableWrench(player, x, y, z) =>
|
case charger: tileentity.Charger =>
|
||||||
if (!world.isRemote) {
|
if (BuildCraft.holdsApplicableWrench(player, x, y, z)) {
|
||||||
charger.invertSignal = !charger.invertSignal
|
if (!world.isRemote) {
|
||||||
charger.chargeSpeed = 1.0 - charger.chargeSpeed
|
charger.invertSignal = !charger.invertSignal
|
||||||
PacketSender.sendChargerState(charger)
|
charger.chargeSpeed = 1.0 - charger.chargeSpeed
|
||||||
BuildCraft.wrenchUsed(player, x, y, z)
|
PacketSender.sendChargerState(charger)
|
||||||
|
BuildCraft.wrenchUsed(player, x, y, z)
|
||||||
|
}
|
||||||
|
true
|
||||||
}
|
}
|
||||||
true
|
else if (!player.isSneaking) {
|
||||||
|
if (!world.isRemote) {
|
||||||
|
player.openGui(OpenComputers, GuiType.Charger.id, world, x, y, z)
|
||||||
|
}
|
||||||
|
true
|
||||||
|
}
|
||||||
|
else false
|
||||||
case _ => super.rightClick(world, x, y, z, player, side, hitX, hitY, hitZ)
|
case _ => super.rightClick(world, x, y, z, player, side, hitX, hitY, hitZ)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -9,7 +9,7 @@ import li.cil.oc.client.KeyBindings
|
|||||||
import li.cil.oc.common.tileentity.traits.{BundledRedstoneAware, Colored, Rotatable}
|
import li.cil.oc.common.tileentity.traits.{BundledRedstoneAware, Colored, Rotatable}
|
||||||
import li.cil.oc.util.mods.Mods
|
import li.cil.oc.util.mods.Mods
|
||||||
import li.cil.oc.util.{Color, ItemCosts, SideTracker}
|
import li.cil.oc.util.{Color, ItemCosts, SideTracker}
|
||||||
import li.cil.oc.{CreativeTab, Settings}
|
import li.cil.oc.{CreativeTab, Localization, Settings}
|
||||||
import net.minecraft.block.Block
|
import net.minecraft.block.Block
|
||||||
import net.minecraft.block.material.Material
|
import net.minecraft.block.material.Material
|
||||||
import net.minecraft.client.renderer.texture.IconRegister
|
import net.minecraft.client.renderer.texture.IconRegister
|
||||||
@ -18,7 +18,7 @@ import net.minecraft.entity.player.EntityPlayer
|
|||||||
import net.minecraft.entity.{Entity, EntityLivingBase, EnumCreatureType}
|
import net.minecraft.entity.{Entity, EntityLivingBase, EnumCreatureType}
|
||||||
import net.minecraft.item.{ItemBlock, ItemStack}
|
import net.minecraft.item.{ItemBlock, ItemStack}
|
||||||
import net.minecraft.tileentity.TileEntity
|
import net.minecraft.tileentity.TileEntity
|
||||||
import net.minecraft.util.{AxisAlignedBB, MovingObjectPosition, StatCollector, Vec3}
|
import net.minecraft.util.{AxisAlignedBB, MovingObjectPosition, Vec3}
|
||||||
import net.minecraft.world.{IBlockAccess, World}
|
import net.minecraft.world.{IBlockAccess, World}
|
||||||
import net.minecraftforge.common.ForgeDirection
|
import net.minecraftforge.common.ForgeDirection
|
||||||
import org.lwjgl.input
|
import org.lwjgl.input
|
||||||
@ -366,7 +366,7 @@ class Delegator[Child <: Delegate](id: Int) extends Block(id, Material.iron) {
|
|||||||
ItemCosts.addTooltip(stack, tooltip.asInstanceOf[util.List[String]])
|
ItemCosts.addTooltip(stack, tooltip.asInstanceOf[util.List[String]])
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
tooltip.add(StatCollector.translateToLocalFormatted(
|
tooltip.add(Localization.localizeImmediately(
|
||||||
Settings.namespace + "tooltip.MaterialCosts",
|
Settings.namespace + "tooltip.MaterialCosts",
|
||||||
input.Keyboard.getKeyName(KeyBindings.materialCosts.keyCode)))
|
input.Keyboard.getKeyName(KeyBindings.materialCosts.keyCode)))
|
||||||
}
|
}
|
||||||
|
9
src/main/scala/li/cil/oc/common/container/Charger.scala
Normal file
9
src/main/scala/li/cil/oc/common/container/Charger.scala
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
package li.cil.oc.common.container
|
||||||
|
|
||||||
|
import li.cil.oc.common.tileentity
|
||||||
|
import net.minecraft.entity.player.InventoryPlayer
|
||||||
|
|
||||||
|
class Charger(playerInventory: InventoryPlayer, charger: tileentity.Charger) extends Player(playerInventory, charger) {
|
||||||
|
addSlotToContainer(80, 35, "tablet")
|
||||||
|
addPlayerInventorySlots(8, 84)
|
||||||
|
}
|
@ -5,11 +5,10 @@ import java.util
|
|||||||
import cpw.mods.fml.relauncher.{Side, SideOnly}
|
import cpw.mods.fml.relauncher.{Side, SideOnly}
|
||||||
import li.cil.oc.client.KeyBindings
|
import li.cil.oc.client.KeyBindings
|
||||||
import li.cil.oc.util.{ItemCosts, Rarity, Tooltip}
|
import li.cil.oc.util.{ItemCosts, Rarity, Tooltip}
|
||||||
import li.cil.oc.{Settings, api}
|
import li.cil.oc.{Localization, Settings, api}
|
||||||
import net.minecraft.entity.Entity
|
import net.minecraft.entity.Entity
|
||||||
import net.minecraft.entity.player.EntityPlayer
|
import net.minecraft.entity.player.EntityPlayer
|
||||||
import net.minecraft.item.ItemStack
|
import net.minecraft.item.ItemStack
|
||||||
import net.minecraft.util.StatCollector
|
|
||||||
import net.minecraft.world.World
|
import net.minecraft.world.World
|
||||||
import org.lwjgl.input
|
import org.lwjgl.input
|
||||||
|
|
||||||
@ -87,7 +86,7 @@ trait Delegate {
|
|||||||
ItemCosts.addTooltip(stack, tooltip.asInstanceOf[util.List[String]])
|
ItemCosts.addTooltip(stack, tooltip.asInstanceOf[util.List[String]])
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
tooltip.add(StatCollector.translateToLocalFormatted(
|
tooltip.add(Localization.localizeImmediately(
|
||||||
Settings.namespace + "tooltip.MaterialCosts",
|
Settings.namespace + "tooltip.MaterialCosts",
|
||||||
input.Keyboard.getKeyName(KeyBindings.materialCosts.keyCode)))
|
input.Keyboard.getKeyName(KeyBindings.materialCosts.keyCode)))
|
||||||
}
|
}
|
||||||
|
@ -122,11 +122,11 @@ class TabletWrapper(var stack: ItemStack, var holder: EntityPlayer) extends Comp
|
|||||||
def readFromNBT() {
|
def readFromNBT() {
|
||||||
if (stack.hasTagCompound) {
|
if (stack.hasTagCompound) {
|
||||||
val data = stack.getTagCompound
|
val data = stack.getTagCompound
|
||||||
|
load(data)
|
||||||
if (!world.isRemote) {
|
if (!world.isRemote) {
|
||||||
computer.load(data.getCompoundTag(Settings.namespace + "data"))
|
computer.load(data.getCompoundTag(Settings.namespace + "data"))
|
||||||
tablet.load(data.getCompoundTag(Settings.namespace + "component"))
|
tablet.load(data.getCompoundTag(Settings.namespace + "component"))
|
||||||
}
|
}
|
||||||
load(data)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -153,6 +153,8 @@ class TabletWrapper(var stack: ItemStack, var holder: EntityPlayer) extends Comp
|
|||||||
if (!world.isRemote) {
|
if (!world.isRemote) {
|
||||||
api.Network.joinNewNetwork(computer.node)
|
api.Network.joinNewNetwork(computer.node)
|
||||||
computer.stop()
|
computer.stop()
|
||||||
|
val charge = math.max(0, this.data.energy - tablet.node.globalBuffer)
|
||||||
|
tablet.node.changeBuffer(charge)
|
||||||
writeToNBT()
|
writeToNBT()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2,13 +2,16 @@ package li.cil.oc.common.tileentity
|
|||||||
|
|
||||||
import cpw.mods.fml.relauncher.{Side, SideOnly}
|
import cpw.mods.fml.relauncher.{Side, SideOnly}
|
||||||
import li.cil.oc.api.network.{Analyzable, Node, Visibility}
|
import li.cil.oc.api.network.{Analyzable, Node, Visibility}
|
||||||
|
import li.cil.oc.common.item.Tablet
|
||||||
import li.cil.oc.server.{PacketSender => ServerPacketSender}
|
import li.cil.oc.server.{PacketSender => ServerPacketSender}
|
||||||
|
import li.cil.oc.util.ItemUtils
|
||||||
import li.cil.oc.{Localization, Settings, api}
|
import li.cil.oc.{Localization, Settings, api}
|
||||||
import net.minecraft.entity.player.EntityPlayer
|
import net.minecraft.entity.player.EntityPlayer
|
||||||
|
import net.minecraft.item.ItemStack
|
||||||
import net.minecraft.nbt.NBTTagCompound
|
import net.minecraft.nbt.NBTTagCompound
|
||||||
import net.minecraftforge.common.ForgeDirection
|
import net.minecraftforge.common.ForgeDirection
|
||||||
|
|
||||||
class Charger extends traits.Environment with traits.PowerAcceptor with traits.RedstoneAware with traits.Rotatable with Analyzable {
|
class Charger extends traits.Environment with traits.PowerAcceptor with traits.RedstoneAware with traits.Rotatable with traits.Inventory with Analyzable {
|
||||||
val node = api.Network.newNode(this, Visibility.None).
|
val node = api.Network.newNode(this, Visibility.None).
|
||||||
withConnector(Settings.get.bufferConverter).
|
withConnector(Settings.get.bufferConverter).
|
||||||
create()
|
create()
|
||||||
@ -39,8 +42,8 @@ class Charger extends traits.Environment with traits.PowerAcceptor with traits.R
|
|||||||
|
|
||||||
override def updateEntity() {
|
override def updateEntity() {
|
||||||
super.updateEntity()
|
super.updateEntity()
|
||||||
if (isServer) {
|
if (isServer && world.getWorldInfo.getWorldTotalTime % Settings.get.tickFrequency == 0) {
|
||||||
val charge = Settings.get.chargeRate * chargeSpeed
|
val charge = Settings.get.chargeRateRobot * chargeSpeed * Settings.get.tickFrequency
|
||||||
val canCharge = charge > 0 && node.globalBuffer >= charge
|
val canCharge = charge > 0 && node.globalBuffer >= charge
|
||||||
if (hasPower && !canCharge) {
|
if (hasPower && !canCharge) {
|
||||||
hasPower = false
|
hasPower = false
|
||||||
@ -53,8 +56,35 @@ class Charger extends traits.Environment with traits.PowerAcceptor with traits.R
|
|||||||
if (canCharge) robots.collect {
|
if (canCharge) robots.collect {
|
||||||
case Some(proxy) => node.changeBuffer(proxy.robot.bot.node.changeBuffer(charge + node.changeBuffer(-charge)))
|
case Some(proxy) => node.changeBuffer(proxy.robot.bot.node.changeBuffer(charge + node.changeBuffer(-charge)))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Charge tablet if present.
|
||||||
|
if (getStackInSlot(0) != null && chargeSpeed > 0) {
|
||||||
|
def tryCharge(energy: Double, maxEnergy: Double, handler: (Double) => Unit) {
|
||||||
|
if (energy < maxEnergy) {
|
||||||
|
val itemCharge = math.min(maxEnergy - energy, Settings.get.chargeRateTablet * chargeSpeed * Settings.get.tickFrequency)
|
||||||
|
node.tryChangeBuffer(-itemCharge)
|
||||||
|
handler(itemCharge)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
val stack = getStackInSlot(0)
|
||||||
|
Option(Tablet.Server.cache.getIfPresent(Tablet.getId(stack))) match {
|
||||||
|
case Some(tablet) =>
|
||||||
|
tryCharge(tablet.tablet.node.globalBuffer, tablet.tablet.node.globalBufferSize, (amount) => {
|
||||||
|
tablet.tablet.node.changeBuffer(amount)
|
||||||
|
tablet.data.energy = tablet.tablet.node.globalBuffer
|
||||||
|
tablet.data.maxEnergy = tablet.tablet.node.globalBufferSize
|
||||||
|
tablet.writeToNBT()
|
||||||
|
})
|
||||||
|
case _ =>
|
||||||
|
val data = new ItemUtils.TabletData(getStackInSlot(0))
|
||||||
|
tryCharge(data.energy, data.maxEnergy, (amount) => {
|
||||||
|
data.energy = math.min(data.maxEnergy, data.energy + amount)
|
||||||
|
data.save(getStackInSlot(0))
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if (chargeSpeed > 0 && hasPower && world.getWorldInfo.getWorldTotalTime % 10 == 0) {
|
else if (isClient && chargeSpeed > 0 && hasPower && world.getWorldInfo.getWorldTotalTime % 10 == 0) {
|
||||||
ForgeDirection.VALID_DIRECTIONS.map(side => world.getBlockTileEntity(x + side.offsetX, y + side.offsetY, z + side.offsetZ)).collect {
|
ForgeDirection.VALID_DIRECTIONS.map(side => world.getBlockTileEntity(x + side.offsetX, y + side.offsetY, z + side.offsetZ)).collect {
|
||||||
case proxy: RobotProxy if proxy.globalBuffer / proxy.globalBufferSize < 0.95 =>
|
case proxy: RobotProxy if proxy.globalBuffer / proxy.globalBufferSize < 0.95 =>
|
||||||
val theta = world.rand.nextDouble * Math.PI
|
val theta = world.rand.nextDouble * Math.PI
|
||||||
@ -105,6 +135,15 @@ class Charger extends traits.Environment with traits.PowerAcceptor with traits.R
|
|||||||
|
|
||||||
// ----------------------------------------------------------------------- //
|
// ----------------------------------------------------------------------- //
|
||||||
|
|
||||||
|
override def getSizeInventory = 1
|
||||||
|
|
||||||
|
override def getInventoryStackLimit = 1
|
||||||
|
|
||||||
|
override def isItemValidForSlot(slot: Int, stack: ItemStack) =
|
||||||
|
slot == 0 && api.Items.get(stack) == api.Items.get("tablet")
|
||||||
|
|
||||||
|
// ----------------------------------------------------------------------- //
|
||||||
|
|
||||||
override protected def updateRedstoneInput(side: ForgeDirection) {
|
override protected def updateRedstoneInput(side: ForgeDirection) {
|
||||||
super.updateRedstoneInput(side)
|
super.updateRedstoneInput(side)
|
||||||
val signal = math.max(0, math.min(15, ForgeDirection.VALID_DIRECTIONS.map(input).max))
|
val signal = math.max(0, math.min(15, ForgeDirection.VALID_DIRECTIONS.map(input).max))
|
||||||
|
@ -9,7 +9,7 @@ import li.cil.oc.common.item.TabletWrapper
|
|||||||
class Tablet(val tablet: TabletWrapper) extends component.ManagedComponent {
|
class Tablet(val tablet: TabletWrapper) extends component.ManagedComponent {
|
||||||
val node = Network.newNode(this, Visibility.Network).
|
val node = Network.newNode(this, Visibility.Network).
|
||||||
withComponent("tablet").
|
withComponent("tablet").
|
||||||
withConnector(Settings.get.bufferRobot).
|
withConnector(Settings.get.bufferTablet).
|
||||||
create()
|
create()
|
||||||
|
|
||||||
// ----------------------------------------------------------------------- //
|
// ----------------------------------------------------------------------- //
|
||||||
|
@ -50,10 +50,10 @@ trait Connector extends network.Connector with Node {
|
|||||||
}
|
}
|
||||||
else 0
|
else 0
|
||||||
if (localBuffer != oldBuffer) {
|
if (localBuffer != oldBuffer) {
|
||||||
this.synchronized(distributor match {
|
distributor match {
|
||||||
case Some(d) => d.globalBuffer = math.max(0, math.min(d.globalBufferSize, d.globalBuffer - oldBuffer + localBuffer))
|
case Some(d) => d.globalBuffer = math.max(0, math.min(d.globalBufferSize, d.globalBuffer - oldBuffer + localBuffer))
|
||||||
case _ =>
|
case _ =>
|
||||||
})
|
}
|
||||||
}
|
}
|
||||||
remaining
|
remaining
|
||||||
}
|
}
|
||||||
@ -69,11 +69,11 @@ trait Connector extends network.Connector with Node {
|
|||||||
localBuffer = localBufferSize
|
localBuffer = localBufferSize
|
||||||
}
|
}
|
||||||
val newGlobalBuffer = globalBuffer + delta
|
val newGlobalBuffer = globalBuffer + delta
|
||||||
newGlobalBuffer >= 0 && newGlobalBuffer <= globalBufferSize && d.changeBuffer(delta) == 0
|
(delta > 0 || newGlobalBuffer >= 0) && (delta < 0 || newGlobalBuffer <= globalBufferSize) && d.changeBuffer(delta) == 0
|
||||||
}
|
}
|
||||||
case _ =>
|
case _ =>
|
||||||
val newLocalBuffer = localBuffer + delta
|
val newLocalBuffer = localBuffer + delta
|
||||||
if (newLocalBuffer < 0 || newLocalBuffer > localBufferSize) {
|
if ((delta < 0 && newLocalBuffer < 0) || (delta > 0 && newLocalBuffer > localBufferSize)) {
|
||||||
false
|
false
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user