mirror of
https://github.com/MightyPirates/OpenComputers.git
synced 2025-09-19 04:06:43 -04:00
Merge branch 'master' of github.com:MightyPirates/OpenComputers into one-three
Conflicts: build.properties src/main/scala/li/cil/oc/client/renderer/tileentity/ScreenRenderer.scala src/main/scala/li/cil/oc/common/tileentity/Screen.scala
This commit is contained in:
commit
c9938d9d8d
BIN
assets/blocks.psd
Normal file
BIN
assets/blocks.psd
Normal file
Binary file not shown.
BIN
assets/items.psd
Normal file
BIN
assets/items.psd
Normal file
Binary file not shown.
@ -20,7 +20,7 @@ class ClassTransformer extends IClassTransformer {
|
|||||||
override def transform(name: String, transformedName: String, basicClass: Array[Byte]): Array[Byte] = {
|
override def transform(name: String, transformedName: String, basicClass: Array[Byte]): Array[Byte] = {
|
||||||
var transformedClass = basicClass
|
var transformedClass = basicClass
|
||||||
try {
|
try {
|
||||||
if (name == "li.cil.oc.common.tileentity.Computer" || name == "li.cil.oc.common.tileentity.Rack") {
|
if (name == "li.cil.oc.common.tileentity.traits.Computer" || name == "li.cil.oc.common.tileentity.Rack") {
|
||||||
transformedClass = ensureStargateTechCompatibility(transformedClass)
|
transformedClass = ensureStargateTechCompatibility(transformedClass)
|
||||||
}
|
}
|
||||||
if (transformedClass != null
|
if (transformedClass != null
|
||||||
@ -52,15 +52,17 @@ class ClassTransformer extends IClassTransformer {
|
|||||||
classNode.methods.removeAll(incompleteMethods)
|
classNode.methods.removeAll(incompleteMethods)
|
||||||
transformedClass = writeClass(classNode)
|
transformedClass = writeClass(classNode)
|
||||||
}
|
}
|
||||||
val classNode = newClassNode(transformedClass)
|
{
|
||||||
if (classNode.interfaces.contains("li/cil/oc/api/network/SimpleComponent")) {
|
val classNode = newClassNode(transformedClass)
|
||||||
try {
|
if (classNode.interfaces.contains("li/cil/oc/api/network/SimpleComponent")) {
|
||||||
transformedClass = injectEnvironmentImplementation(classNode, transformedClass)
|
try {
|
||||||
log.info(s"Successfully injected component logic into class $name.")
|
transformedClass = injectEnvironmentImplementation(classNode)
|
||||||
}
|
log.info(s"Successfully injected component logic into class $name.")
|
||||||
catch {
|
}
|
||||||
case e: Throwable =>
|
catch {
|
||||||
log.log(Level.WARNING, s"Failed injecting component logic into class $name.", e)
|
case e: Throwable =>
|
||||||
|
log.log(Level.WARNING, s"Failed injecting component logic into class $name.", e)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -95,7 +97,7 @@ class ClassTransformer extends IClassTransformer {
|
|||||||
else basicClass
|
else basicClass
|
||||||
}
|
}
|
||||||
|
|
||||||
def injectEnvironmentImplementation(classNode: ClassNode, basicClass: Array[Byte]): Array[Byte] = {
|
def injectEnvironmentImplementation(classNode: ClassNode): Array[Byte] = {
|
||||||
log.fine(s"Injecting methods from Environment interface into ${classNode.name}.")
|
log.fine(s"Injecting methods from Environment interface into ${classNode.name}.")
|
||||||
if (!isTileEntity(classNode)) {
|
if (!isTileEntity(classNode)) {
|
||||||
throw new InjectionFailedException("Found SimpleComponent on something that isn't a tile entity, ignoring.")
|
throw new InjectionFailedException("Found SimpleComponent on something that isn't a tile entity, ignoring.")
|
||||||
|
@ -72,15 +72,24 @@ class TextBuffer(val owner: component.Container) extends ManagedComponent with a
|
|||||||
// origin.
|
// origin.
|
||||||
val w = getWidth
|
val w = getWidth
|
||||||
val h = getHeight
|
val h = getHeight
|
||||||
relativeLitArea = data.buffer.foldLeft(0) {
|
relativeLitArea = (data.buffer, data.color).zipped.foldLeft(0) {
|
||||||
(acc, line) => acc + line.count(' ' !=)
|
case (acc, (line, colors)) => acc + (line, colors).zipped.foldLeft(0) {
|
||||||
|
case (acc2, (char, color)) =>
|
||||||
|
val bg = PackedColor.unpackBackground(color, data.format)
|
||||||
|
val fg = PackedColor.unpackForeground(color, data.format)
|
||||||
|
acc2 + (if (char == ' ') if (bg == 0) 0 else 1
|
||||||
|
else if (char == 0x2588) if (fg == 0) 0 else 1
|
||||||
|
else if (fg == 0 && bg == 0) 0 else 1)
|
||||||
|
}
|
||||||
} / (w * h).toDouble
|
} / (w * h).toDouble
|
||||||
}
|
}
|
||||||
val hadPower = hasPower
|
if (node != null) {
|
||||||
val neededPower = relativeLitArea * fullyLitCost * Settings.get.tickFrequency
|
val hadPower = hasPower
|
||||||
hasPower = node.tryChangeBuffer(-neededPower)
|
val neededPower = relativeLitArea * fullyLitCost * Settings.get.tickFrequency
|
||||||
if (hasPower != hadPower) {
|
hasPower = node.tryChangeBuffer(-neededPower)
|
||||||
ServerPacketSender.sendTextBufferPowerChange(node.address, isDisplaying && hasPower, owner)
|
if (hasPower != hadPower) {
|
||||||
|
ServerPacketSender.sendTextBufferPowerChange(node.address, isDisplaying && hasPower, owner)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -263,7 +272,11 @@ class TextBuffer(val owner: component.Container) extends ManagedComponent with a
|
|||||||
}
|
}
|
||||||
|
|
||||||
@SideOnly(Side.CLIENT)
|
@SideOnly(Side.CLIENT)
|
||||||
override def renderText() = proxy.render()
|
override def renderText() = {
|
||||||
|
if (relativeLitArea != 0) {
|
||||||
|
proxy.render()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@SideOnly(Side.CLIENT)
|
@SideOnly(Side.CLIENT)
|
||||||
override def renderWidth = MonospaceFontRenderer.fontWidth * data.width
|
override def renderWidth = MonospaceFontRenderer.fontWidth * data.width
|
||||||
|
@ -27,10 +27,9 @@ class Keyboard(isRemote: Boolean) extends traits.Environment with traits.Rotatab
|
|||||||
// ----------------------------------------------------------------------- //
|
// ----------------------------------------------------------------------- //
|
||||||
|
|
||||||
@SideOnly(Side.CLIENT)
|
@SideOnly(Side.CLIENT)
|
||||||
override def canConnect(side: ForgeDirection) = side == facing.getOpposite
|
override def canConnect(side: ForgeDirection) = hasNodeOnSide(side)
|
||||||
|
|
||||||
override def sidedNode(side: ForgeDirection) =
|
override def sidedNode(side: ForgeDirection) = if (hasNodeOnSide(side)) node else null
|
||||||
if (hasNodeOnSide(side)) node else null
|
|
||||||
|
|
||||||
// Override automatic analyzer implementation for sided environments.
|
// Override automatic analyzer implementation for sided environments.
|
||||||
override def onAnalyze(player: EntityPlayer, side: Int, hitX: Float, hitY: Float, hitZ: Float) = Array(node)
|
override def onAnalyze(player: EntityPlayer, side: Int, hitX: Float, hitY: Float, hitZ: Float) = Array(node)
|
||||||
|
@ -20,9 +20,7 @@ trait TextBuffer extends Environment {
|
|||||||
|
|
||||||
override def updateEntity() {
|
override def updateEntity() {
|
||||||
super.updateEntity()
|
super.updateEntity()
|
||||||
if (isServer) {
|
buffer.update()
|
||||||
buffer.update()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// ----------------------------------------------------------------------- //
|
// ----------------------------------------------------------------------- //
|
||||||
|
Loading…
x
Reference in New Issue
Block a user