From c95d8ef4fdbf8f4bcd41734a3f27f5ad25a73faf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20N=C3=BCcke?= Date: Wed, 31 Dec 2014 19:57:17 +0100 Subject: [PATCH] More work on screen rendering. Base is working, still needs 'front'. --- .../scala/li/cil/oc/client/Textures.scala | 409 ++++++++++++------ .../renderer/block/ExtendedBlockModel.scala | 92 ++-- .../scala/li/cil/oc/common/block/Screen.scala | 272 ------------ 3 files changed, 330 insertions(+), 443 deletions(-) diff --git a/src/main/scala/li/cil/oc/client/Textures.scala b/src/main/scala/li/cil/oc/client/Textures.scala index c5baaf27b..0e490ef18 100644 --- a/src/main/scala/li/cil/oc/client/Textures.scala +++ b/src/main/scala/li/cil/oc/client/Textures.scala @@ -104,6 +104,7 @@ object Textures { val ScreenUpIndicator = L("screen/up_indicator") val SwitchSideOn = L("SwitchSideOn") + // Kill me now. object Screen { val Single = Array( L("screen/b"), @@ -114,141 +115,287 @@ object Textures { L("screen/b2") ) - val HorizontalLeft = Array( - L("screen/bht"), - L("screen/bht"), - L("screen/bht2"), - L("screen/bht2"), - L("screen/b2"), - L("screen/b2") // Never rendered. + val Horizontal = Array( + // Vertical. + Array( + Array( + L("screen/bht"), + L("screen/bht"), + L("screen/bht2"), + L("screen/bht2"), + L("screen/b2"), + L("screen/b2") // Never rendered. + ), + Array( + L("screen/bhm"), + L("screen/bhm"), + L("screen/bhm2"), + L("screen/bhm2"), + L("screen/b2"), // Never rendered. + L("screen/b2") // Never rendered. + ), + Array( + L("screen/bhb"), + L("screen/bhb"), + L("screen/bhb2"), + L("screen/bhb2"), + L("screen/b2"), // Never rendered. + L("screen/b2") + ) + ), + // Horizontal. + Array( + Array( + L("screen/bht2"), + L("screen/bht2"), + L("screen/bht"), + L("screen/bht"), + L("screen/b2"), + L("screen/b2") // Never rendered. + ), + Array( + L("screen/bhm2"), + L("screen/bhm2"), + L("screen/bhm"), + L("screen/bhm"), + L("screen/b2"), // Never rendered. + L("screen/b2") // Never rendered. + ), + Array( + L("screen/bhb2"), + L("screen/bhb2"), + L("screen/bhb"), + L("screen/bhb"), + L("screen/b2"), // Never rendered. + L("screen/b2") + ) + ) ) - val HorizontalMiddle = Array( - L("screen/bhm"), - L("screen/bhm"), - L("screen/bhm2"), - L("screen/bhm2"), - L("screen/b2"), // Never rendered. - L("screen/b2") // Never rendered. + val Vertical = Array( + // Vertical. + Array( + Array( + L("screen/b"), // Never rendered. + L("screen/b"), + L("screen/bvt"), + L("screen/bvt"), + L("screen/bvt"), + L("screen/bvt") + ), + Array( + L("screen/b"), // Never rendered. + L("screen/b"), // Never rendered. + L("screen/bvm"), + L("screen/bvm"), + L("screen/bvm"), + L("screen/bvm") + ), + Array( + L("screen/b"), + L("screen/b"), // Never rendered. + L("screen/bvb2"), + L("screen/bvb2"), + L("screen/bvb2"), + L("screen/bvb2") + ) + ), + // Horizontal. + Array( + Array( + L("screen/b2"), // Never rendered. + L("screen/b2"), + L("screen/bvt"), + L("screen/bvt"), + L("screen/bht2"), + L("screen/bht2") + ), + Array( + L("screen/b2"), // Never rendered. + L("screen/b2"), // Never rendered. + L("screen/bvm"), + L("screen/bvm"), + L("screen/bhm2"), + L("screen/bhm2") + ), + Array( + L("screen/b2"), + L("screen/b2"), // Never rendered. + L("screen/bvb"), + L("screen/bvb"), + L("screen/bhb2"), + L("screen/bhb2") + ) + ) ) - val HorizontalRight = Array( - L("screen/bhb"), - L("screen/bhb"), - L("screen/bhb2"), - L("screen/bhb2"), - L("screen/b2"), // Never rendered. - L("screen/b2") - ) - - val VerticalTop = Array( - L("screen/b"), // Never rendered. - L("screen/b"), - L("screen/bvt"), - L("screen/bvt"), - L("screen/bvt"), - L("screen/bvt") - ) - - val VerticalMiddle = Array( - L("screen/b"), // Never rendered. - L("screen/b"), // Never rendered. - L("screen/bvm"), - L("screen/bvm"), - L("screen/bvm"), - L("screen/bvm") - ) - - val VerticalBottom = Array( - L("screen/b"), - L("screen/b"), // Never rendered. - L("screen/bvb2"), - L("screen/bvb2"), - L("screen/bvb2"), - L("screen/bvb2") - ) - - // TODO Horizontal one, too (for alternative sides). - - val MultiTopLeft = Array( - L("screen/bht"), // Never rendered. - L("screen/bht"), - L("screen/btl"), - L("screen/btl"), - L("screen/bvt"), - L("screen/bvt") // Never rendered. - ) - - val MultiTopMiddle = Array( - L("screen/bhm"), // Never rendered. - L("screen/bhm"), - L("screen/btm"), - L("screen/btm"), - L("screen/bvt"), - L("screen/bvt") // Never rendered. - ) - - val MultiTopRight = Array( - L("screen/bhb"), // Never rendered. - L("screen/bhb"), // Never rendered. - L("screen/btr"), - L("screen/btr"), - L("screen/bvt"), // Never rendered. - L("screen/bvt") // Never rendered. - ) - - val MultiMiddleLeft = Array( - L("screen/bht"), // Never rendered. - L("screen/bht"), // Never rendered. - L("screen/bml"), - L("screen/bml"), - L("screen/bvm"), // Never rendered. - L("screen/bvm") // Never rendered. - ) - - val MultiMiddleMiddle = Array( - L("screen/bhm"), // Never rendered. - L("screen/bhm"), // Never rendered. - L("screen/bmm"), - L("screen/bmm"), - L("screen/bvt"), // Never rendered. - L("screen/bvt") // Never rendered. - ) - - val MultiMiddleRight = Array( - L("screen/bhb"), - L("screen/bhb"), // Never rendered. - L("screen/bmr"), - L("screen/bmr"), - L("screen/bvm"), // Never rendered. - L("screen/bvm") - ) - - val MultiBottomLeft = Array( - L("screen/bht"), // Never rendered. - L("screen/bht"), - L("screen/bbl2"), - L("screen/bbl2"), - L("screen/bvb2"), - L("screen/bvb2") // Never rendered. - ) - - val MultiBottomMiddle = Array( - L("screen/bhm"), - L("screen/bhm"), // Never rendered. - L("screen/bbm2"), - L("screen/bbm2"), - L("screen/bvb2"), - L("screen/bvb2") // Never rendered. - ) - - val MultiBottomRight = Array( - L("screen/bhb"), - L("screen/bhb"), // Never rendered. - L("screen/bbr2"), - L("screen/bbr2"), - L("screen/bvb2"), // Never rendered. - L("screen/bvb2") + val Multi = Array( + // Vertical. + Array( + // Top. + Array( + Array( + L("screen/bht"), // Never rendered. + L("screen/bht"), + L("screen/btl"), + L("screen/btl"), + L("screen/bvt"), + L("screen/bvt") // Never rendered. + ),Array( + L("screen/bhm"), // Never rendered. + L("screen/bhm"), + L("screen/btm"), + L("screen/btm"), + L("screen/bvt"), + L("screen/bvt") // Never rendered. + ), + Array( + L("screen/bhb"), // Never rendered. + L("screen/bhb"), // Never rendered. + L("screen/btr"), + L("screen/btr"), + L("screen/bvt"), // Never rendered. + L("screen/bvt") // Never rendered. + ) + ), + // Middle. + Array( + Array( + L("screen/bht"), // Never rendered. + L("screen/bht"), // Never rendered. + L("screen/bml"), + L("screen/bml"), + L("screen/bvm"), // Never rendered. + L("screen/bvm") // Never rendered. + ), + Array( + L("screen/bhm"), // Never rendered. + L("screen/bhm"), // Never rendered. + L("screen/bmm"), + L("screen/bmm"), + L("screen/bvt"), // Never rendered. + L("screen/bvt") // Never rendered. + ), + Array( + L("screen/bhb"), + L("screen/bhb"), // Never rendered. + L("screen/bmr"), + L("screen/bmr"), + L("screen/bvm"), // Never rendered. + L("screen/bvm") + ) + ), + // Right. + Array( + Array( + L("screen/bht"), // Never rendered. + L("screen/bht"), + L("screen/bbl2"), + L("screen/bbl2"), + L("screen/bvb2"), + L("screen/bvb2") // Never rendered. + ), + Array( + L("screen/bhm"), + L("screen/bhm"), // Never rendered. + L("screen/bbm2"), + L("screen/bbm2"), + L("screen/bvb2"), + L("screen/bvb2") // Never rendered. + ), + Array( + L("screen/bhb"), + L("screen/bhb"), // Never rendered. + L("screen/bbr2"), + L("screen/bbr2"), + L("screen/bvb2"), // Never rendered. + L("screen/bvb2") + ) + ) + ), + // Horizontal. + Array( + // Top. + Array( + Array( + L("screen/bht2"), // Never rendered. + L("screen/bht2"), + L("screen/btl"), + L("screen/btl"), + L("screen/bht2"), + L("screen/bht2") // Never rendered. + ),Array( + L("screen/bhm2"), // Never rendered. + L("screen/bhm2"), + L("screen/btm"), + L("screen/btm"), + L("screen/bht2"), + L("screen/bht2") // Never rendered. + ), + Array( + L("screen/bhb2"), // Never rendered. + L("screen/bhb2"), // Never rendered. + L("screen/btr"), + L("screen/btr"), + L("screen/bht2"), // Never rendered. + L("screen/bht2") // Never rendered. + ) + ), + // Middle. + Array( + Array( + L("screen/bht2"), // Never rendered. + L("screen/bht2"), // Never rendered. + L("screen/bml"), + L("screen/bml"), + L("screen/bhm2"), // Never rendered. + L("screen/bhm2") // Never rendered. + ), + Array( + L("screen/bhm2"), // Never rendered. + L("screen/bhm2"), // Never rendered. + L("screen/bmm"), + L("screen/bmm"), + L("screen/bht2"), // Never rendered. + L("screen/bht2") // Never rendered. + ), + Array( + L("screen/bhb2"), + L("screen/bhb2"), // Never rendered. + L("screen/bmr"), + L("screen/bmr"), + L("screen/bhm2"), // Never rendered. + L("screen/bhm2") + ) + ), + // Right. + Array( + Array( + L("screen/bht2"), // Never rendered. + L("screen/bht2"), + L("screen/bbl"), + L("screen/bbl"), + L("screen/bhb2"), + L("screen/bhb2") // Never rendered. + ), + Array( + L("screen/bhm2"), + L("screen/bhm2"), // Never rendered. + L("screen/bbm"), + L("screen/bbm"), + L("screen/bhb2"), + L("screen/bhb2") // Never rendered. + ), + Array( + L("screen/bhb2"), + L("screen/bhb2"), // Never rendered. + L("screen/bbr"), + L("screen/bbr"), + L("screen/bhb2"), // Never rendered. + L("screen/bhb2") + ) + ) + ) ) // The hacks I do for namespacing... diff --git a/src/main/scala/li/cil/oc/client/renderer/block/ExtendedBlockModel.scala b/src/main/scala/li/cil/oc/client/renderer/block/ExtendedBlockModel.scala index 8143e36c5..731bdbda1 100644 --- a/src/main/scala/li/cil/oc/client/renderer/block/ExtendedBlockModel.scala +++ b/src/main/scala/li/cil/oc/client/renderer/block/ExtendedBlockModel.scala @@ -6,6 +6,7 @@ import li.cil.oc.Settings import li.cil.oc.client.Textures import li.cil.oc.common.block import li.cil.oc.common.tileentity +import li.cil.oc.util.Color import net.minecraft.block.Block import net.minecraft.block.state.IBlockState import net.minecraft.client.Minecraft @@ -13,6 +14,7 @@ import net.minecraft.client.renderer.block.model.BakedQuad import net.minecraft.client.renderer.block.model.ItemCameraTransforms import net.minecraft.client.renderer.texture.TextureAtlasSprite import net.minecraft.client.resources.model.ModelResourceLocation +import net.minecraft.item.EnumDyeColor import net.minecraft.util.EnumFacing import net.minecraft.util.RegistrySimple import net.minecraftforge.client.event.ModelBakeEvent @@ -37,11 +39,9 @@ object ExtendedBlockModel { @SubscribeEvent def onModelBake(e: ModelBakeEvent): Unit = { val registry = e.modelRegistry.asInstanceOf[RegistrySimple] + val screenPattern = "^" + Settings.resourceDomain + ":screen\\d#.*" registry.getKeys.collect { - case location: ModelResourceLocation => - if (location.toString.startsWith(Settings.resourceDomain + ":screen1#")) { - registry.putObject(location, ScreenRenderer) - } + case location: ModelResourceLocation if location.toString.matches(screenPattern) => registry.putObject(location, ScreenRenderer) } } } @@ -89,64 +89,76 @@ class ScreenRenderer(val state: IExtendedBlockState) extends SmartBlockModelBase override def getFaceQuads(side: EnumFacing) = { state.getValue(block.Screen.Tile) match { case screen: tileentity.Screen => - // TODO Translate facing to "local" coordinate system of our default texture layout. val facing = screen.toLocal(side) - val textures = if (screen.width == 1 && screen.height == 1) { - Textures.Block.Screen.Single - } - else if (screen.width == 1) { - val (_, y) = screen.localPosition - if (y == 0) Textures.Block.Screen.VerticalBottom - else if (y == screen.height - 1) Textures.Block.Screen.VerticalTop - else Textures.Block.Screen.VerticalMiddle - } - else if (screen.height == 1) { - val (x, _) = screen.localPosition - if (x == 0) Textures.Block.Screen.HorizontalRight - else if (x == screen.width - 1) Textures.Block.Screen.HorizontalLeft - else Textures.Block.Screen.HorizontalMiddle + val (x, y) = screen.localPosition + val pitch = if (screen.pitch == EnumFacing.NORTH) 0 else 1 + var rx = multiCoords(x, screen.width - 1) + var ry = multiCoords(y, screen.height - 1) + var rotation = 0 + + if (side == EnumFacing.UP) { + rotation += screen.yaw.getHorizontalIndex + ry = 2 - ry } else { - val (x, y) = screen.localPosition - // TODO Differentiate horizontal and vertical multiscreens. - if (x == 0) - if (y == 0) Textures.Block.Screen.MultiBottomRight - else if (y == screen.height - 1) Textures.Block.Screen.MultiTopRight - else Textures.Block.Screen.MultiMiddleRight - else if (x == screen.width - 1) - if (y == 0) Textures.Block.Screen.MultiBottomLeft - else if (y == screen.height - 1) Textures.Block.Screen.MultiTopLeft - else Textures.Block.Screen.MultiMiddleLeft - else - if (y == 0) Textures.Block.Screen.MultiBottomMiddle - else if (y == screen.height - 1) Textures.Block.Screen.MultiTopMiddle - else Textures.Block.Screen.MultiMiddleMiddle + if (side == EnumFacing.DOWN) { + if (screen.yaw.getAxis == EnumFacing.Axis.X) { + rotation += 1 + rx = 2 - rx + } + if (screen.yaw.getAxisDirection.getOffset < 0) + ry = 2 - ry + } + else if (screen.yaw.getAxisDirection.getOffset > 0 && pitch == 1) + ry = 2 - ry + if (screen.yaw == EnumFacing.NORTH || screen.yaw == EnumFacing.EAST) + rx = 2 - rx } - List(new BakedQuad(makeQuad(side, Textures.Block.getSprite(textures(facing.ordinal()))), -1, side)) + val textures = + if (screen.width == 1 && screen.height == 1) + Textures.Block.Screen.Single + else if (screen.width == 1) + Textures.Block.Screen.Vertical(pitch)(ry) + else if (screen.height == 1) + Textures.Block.Screen.Horizontal(pitch)(rx) + else + Textures.Block.Screen.Multi(pitch)(ry)(rx) + + List(new BakedQuad(makeQuad(side, Textures.Block.getSprite(textures(facing.ordinal())), screen.color, rotation), -1, side)) case _ => super.getFaceQuads(side) } } - private def makeQuad(facing: EnumFacing, texture: TextureAtlasSprite) = { + private def multiCoords(value: Int, high: Int) = if (value == 0) 2 else if (value == high) 0 else 1 + + private def makeQuad(facing: EnumFacing, texture: TextureAtlasSprite, color: EnumDyeColor, rotation: Int) = { val face = faces(facing.getIndex) - face.map(data => { + val verts = face.map(f => (f._1, f._2, f._3)) + val coords = face.map(f => (f._4, f._5)) + (verts, coords.drop(rotation) ++ coords.take(rotation)).zipped. + map((v, c) => (v._1, v._2, v._3, c._1, c._2)). + map(data => { val (x, y, z, u, v) = data - rawData(x, y, z, texture, u, v) + rawData(x, y, z, texture, u, v, Color.rgbValues(color)) }).flatten } // See FaceBakery#storeVertexData. - private def rawData(x: Float, y: Float, z: Float, texture: TextureAtlasSprite, u: Float, v: Float) = { + private def rawData(x: Float, y: Float, z: Float, texture: TextureAtlasSprite, u: Float, v: Float, color: Int) = { Array( java.lang.Float.floatToRawIntBits(x), java.lang.Float.floatToRawIntBits(y), java.lang.Float.floatToRawIntBits(z), - 0xFFFFFFFF, + 0xFF000000 | rgb2bgr(color), java.lang.Float.floatToRawIntBits(texture.getInterpolatedU(u)), java.lang.Float.floatToRawIntBits(texture.getInterpolatedV(v)), 0 ) } -} \ No newline at end of file + + private def rgb2bgr(color: Int) = { + ((color & 0x0000FF) << 16) | (color & 0x00FF00) | ((color & 0xFF0000) >>> 16) + } +} diff --git a/src/main/scala/li/cil/oc/common/block/Screen.scala b/src/main/scala/li/cil/oc/common/block/Screen.scala index b1da35a33..573095a83 100644 --- a/src/main/scala/li/cil/oc/common/block/Screen.scala +++ b/src/main/scala/li/cil/oc/common/block/Screen.scala @@ -67,278 +67,6 @@ class Screen(val tier: Int) extends RedstoneAware with traits.OmniRotatable { // ----------------------------------------------------------------------- // - // TODO remove - // object Icons { - // var b, b2, bbl, bbl2, bbm, bbm2, bbr, bbr2, bhb, bhb2, bhm, bhm2, bht, bht2, bml, bmm, bmr, btl, btm, btr, bvb, bvb2, bvm, bvt, f, f2, fbl, fbl2, fbm, fbm2, fbr, fbr2, fhb, fhb2, fhm, fhm2, fht, fht2, fml, fmm, fmr, ftl, ftm, ftr, fvb, fvb2, fvm, fvt = null: IIcon - // - // def fh = Array(fht, fhm, fhb) - // - // def fv = Array(fvt, fvm, fvb) - // - // def bh = Array(bht, bhm, bhb) - // - // def bv = Array(bvt, bvm, bvb) - // - // def fth = Array(ftl, ftm, ftr) - // - // def fmh = Array(fml, fmm, fmr) - // - // def fbh = Array(fbl, fbm, fbr) - // - // def bth = Array(btl, btm, btr) - // - // def bmh = Array(bml, bmm, bmr) - // - // def bbh = Array(bbl, bbm, bbr) - // - // def ftv = Array(ftl, fml, fbl) - // - // def fmv = Array(ftm, fmm, fbm) - // - // def fbv = Array(ftr, fmr, fbr) - // - // def btv = Array(btl, bml, bbl) - // - // def bmv = Array(btm, bmm, bbm) - // - // def bbv = Array(btr, bmr, bbr) - // - // def fh2 = Array(fht2, fhm2, fhb2) - // - // def fv2 = Array(fvt, fvm, fvb2) - // - // def bh2 = Array(bht2, bhm2, bhb2) - // - // def bv2 = Array(bvt, bvm, bvb2) - // - // def fbh2 = Array(fbl2, fbm2, fbr2) - // - // def bbh2 = Array(bbl2, bbm2, bbr2) - // - // def fud = Icons.fh2 ++ Icons.fv2 ++ Icons.fth ++ Icons.fmh ++ Icons.fbh2 - // - // def bud = Icons.bh2.reverse ++ Icons.bv2 ++ Icons.bth.reverse ++ Icons.bmh.reverse ++ Icons.bbh2.reverse - // - // def fsn = Icons.fh ++ Icons.fv ++ Icons.fth ++ Icons.fmh ++ Icons.fbh - // - // def few = Icons.fv ++ Icons.fh ++ Icons.ftv ++ Icons.fmv ++ Icons.fbv - // - // def bsn = Icons.bh ++ Icons.bv ++ Icons.bth ++ Icons.bmh ++ Icons.bbh - // - // def bew = Icons.bv ++ Icons.bh ++ Icons.btv ++ Icons.bmv ++ Icons.bbv - // - // def sud = Array(Icons.bvt, Icons.bvm, Icons.bvb2) - // - // def sse = Array(Icons.bhb2, Icons.bhm2, Icons.bht2) - // - // def snw = Array(Icons.bht2, Icons.bhm2, Icons.bhb2) - // - // def th = Array(Icons.bhb, Icons.bhm, Icons.bht) - // - // def tv = Array(Icons.bvb, Icons.bvm, Icons.bvt) - // } - // - // // This an ugly monstrosity, but it's still better than having to manually - // // compute ambient occlusion in a custom block renderer to keep the lighting - // // pretty... which would be even more grotesque. - // override def getIcon(world: IBlockAccess, x: Int, y: Int, z: Int, worldSide: EnumFacing, localSide: EnumFacing) = - // world.getTileEntity(x, y, z) match { - // case screen: tileentity.Screen if screen.width > 1 || screen.height > 1 => - // val right = screen.width - 1 - // val bottom = screen.height - 1 - // val (px, py) = screen.localPosition - // val (lx, ly) = screen.pitch match { - // case EnumFacing.NORTH => (px, py) - // case EnumFacing.UP => screen.yaw match { - // case EnumFacing.SOUTH => - // (px, py) - // case EnumFacing.NORTH => - // (right - px, bottom - py) - // case EnumFacing.EAST => - // (right - px, py) - // case EnumFacing.WEST => - // (px, bottom - py) - // case _ => throw new AssertionError("yaw has invalid value") - // } - // case EnumFacing.DOWN => screen.yaw match { - // case EnumFacing.SOUTH => - // (px, bottom - py) - // case EnumFacing.NORTH => - // (right - px, py) - // case EnumFacing.EAST => - // (right - px, bottom - py) - // case EnumFacing.WEST => - // (px, py) - // case _ => throw new AssertionError("yaw has invalid value") - // } - // case _ => throw new AssertionError("pitch has invalid value") - // } - // // See which face we're rendering. We can pretty much treat front and - // // back the same, except with a different texture set. Same goes for - // // left and right sides, as well as top and bottom sides. - // localSide match { - // case EnumFacing.SOUTH | EnumFacing.NORTH => - // val (ud, sn, ew) = - // if (localSide == EnumFacing.SOUTH) (Icons.fud, Icons.fsn, Icons.few) - // else (Icons.bud, Icons.bsn, Icons.bew) - // val Array(ht, hm, hb, vt, vm, vb, tl, tm, tr, ml, mm, mr, bl, bm, br) = screen.pitch match { - // case EnumFacing.NORTH => ud - // case _ => screen.yaw match { - // case EnumFacing.SOUTH | EnumFacing.NORTH => sn - // case EnumFacing.EAST | EnumFacing.WEST => ew - // case _ => throw new AssertionError("yaw has invalid value") - // } - // } - // if (screen.height == 1) { - // if (lx == 0) ht - // else if (lx == right) hb - // else hm - // } - // else if (screen.width == 1) { - // if (ly == 0) vb - // else if (ly == bottom) vt - // else vm - // } - // else { - // if (lx == 0) { - // if (ly == 0) bl - // else if (ly == bottom) tl - // else ml - // } - // else if (lx == right) { - // if (ly == 0) br - // else if (ly == bottom) tr - // else mr - // } - // else { - // if (ly == 0) bm - // else if (ly == bottom) tm - // else mm - // } - // } - // case EnumFacing.EAST | EnumFacing.WEST => - // val (ud, sn, ew) = - // if (localSide == EnumFacing.EAST) (Icons.sud, Icons.sse, Icons.snw) - // else (Icons.sud, Icons.snw, Icons.sse) - // val Array(t, m, b) = screen.pitch match { - // case EnumFacing.NORTH => ud - // case _ => screen.yaw match { - // case EnumFacing.SOUTH | EnumFacing.EAST => sn - // case EnumFacing.NORTH | EnumFacing.WEST => ew - // case _ => throw new AssertionError("yaw has invalid value") - // } - // } - // if (screen.height == 1) { - // Icons.b2 - // } - // else { - // if (ly == 0) b - // else if (ly == bottom) t - // else m - // } - // case EnumFacing.UP | EnumFacing.DOWN => - // val (sn, ew) = - // if (localSide == EnumFacing.UP ^ screen.pitch == EnumFacing.DOWN) (Icons.snw, Icons.sse) - // else (Icons.sse, Icons.snw) - // val Array(t, m, b) = screen.pitch match { - // case EnumFacing.NORTH => screen.yaw match { - // case EnumFacing.SOUTH => Icons.th - // case EnumFacing.NORTH => Icons.bh - // case EnumFacing.EAST => Icons.bv - // case EnumFacing.WEST => Icons.tv - // case _ => throw new AssertionError("yaw has invalid value") - // } - // case _ => screen.yaw match { - // case EnumFacing.SOUTH | EnumFacing.WEST => sn - // case EnumFacing.NORTH | EnumFacing.EAST => ew - // case _ => throw new AssertionError("yaw has invalid value") - // } - // } - // if (screen.width == 1) { - // if (screen.pitch == EnumFacing.NORTH) Icons.b - // else Icons.b2 - // } - // else { - // if (lx == 0) b - // else if (lx == right) t - // else m - // } - // case _ => null - // } - // case screen: tileentity.Screen => - // val (f, b, t, s) = screen.pitch match { - // case EnumFacing.NORTH => (Icons.f2, Icons.b2, Icons.b, Icons.b2) - // case _ => (Icons.f, Icons.b, Icons.b2, Icons.b2) - // } - // localSide match { - // case EnumFacing.SOUTH => f - // case EnumFacing.NORTH => b - // case EnumFacing.DOWN | EnumFacing.UP => t - // case _ => s - // } - // case _ => getIcon(localSide, 0) - // } - // - // override def getIcon(side: EnumFacing, metadata: Int) = - // side match { - // case EnumFacing.SOUTH => Icons.f2 - // case EnumFacing.DOWN | EnumFacing.UP => Icons.b - // case _ => Icons.b2 - // } - // - // override def registerBlockIcons(iconRegister: IIconRegister) = { - // Icons.b = iconRegister.getAtlasSprite(Settings.resourceDomain + ":screen/b") - // Icons.b2 = iconRegister.getAtlasSprite(Settings.resourceDomain + ":screen/b2") - // Icons.bbl = iconRegister.getAtlasSprite(Settings.resourceDomain + ":screen/bbl") - // Icons.bbl2 = iconRegister.getAtlasSprite(Settings.resourceDomain + ":screen/bbl2") - // Icons.bbm = iconRegister.getAtlasSprite(Settings.resourceDomain + ":screen/bbm") - // Icons.bbm2 = iconRegister.getAtlasSprite(Settings.resourceDomain + ":screen/bbm2") - // Icons.bbr = iconRegister.getAtlasSprite(Settings.resourceDomain + ":screen/bbr") - // Icons.bbr2 = iconRegister.getAtlasSprite(Settings.resourceDomain + ":screen/bbr2") - // Icons.bhb = iconRegister.getAtlasSprite(Settings.resourceDomain + ":screen/bhb") - // Icons.bhb2 = iconRegister.getAtlasSprite(Settings.resourceDomain + ":screen/bhb2") - // Icons.bhm = iconRegister.getAtlasSprite(Settings.resourceDomain + ":screen/bhm") - // Icons.bhm2 = iconRegister.getAtlasSprite(Settings.resourceDomain + ":screen/bhm2") - // Icons.bht = iconRegister.getAtlasSprite(Settings.resourceDomain + ":screen/bht") - // Icons.bht2 = iconRegister.getAtlasSprite(Settings.resourceDomain + ":screen/bht2") - // Icons.bml = iconRegister.getAtlasSprite(Settings.resourceDomain + ":screen/bml") - // Icons.bmm = iconRegister.getAtlasSprite(Settings.resourceDomain + ":screen/bmm") - // Icons.bmr = iconRegister.getAtlasSprite(Settings.resourceDomain + ":screen/bmr") - // Icons.btl = iconRegister.getAtlasSprite(Settings.resourceDomain + ":screen/btl") - // Icons.btm = iconRegister.getAtlasSprite(Settings.resourceDomain + ":screen/btm") - // Icons.btr = iconRegister.getAtlasSprite(Settings.resourceDomain + ":screen/btr") - // Icons.bvb = iconRegister.getAtlasSprite(Settings.resourceDomain + ":screen/bvb") - // Icons.bvb2 = iconRegister.getAtlasSprite(Settings.resourceDomain + ":screen/bvb2") - // Icons.bvm = iconRegister.getAtlasSprite(Settings.resourceDomain + ":screen/bvm") - // Icons.bvt = iconRegister.getAtlasSprite(Settings.resourceDomain + ":screen/bvt") - // Icons.f = iconRegister.getAtlasSprite(Settings.resourceDomain + ":screen/f") - // Icons.f2 = iconRegister.getAtlasSprite(Settings.resourceDomain + ":screen/f2") - // Icons.fbl = iconRegister.getAtlasSprite(Settings.resourceDomain + ":screen/fbl") - // Icons.fbl2 = iconRegister.getAtlasSprite(Settings.resourceDomain + ":screen/fbl2") - // Icons.fbm = iconRegister.getAtlasSprite(Settings.resourceDomain + ":screen/fbm") - // Icons.fbm2 = iconRegister.getAtlasSprite(Settings.resourceDomain + ":screen/fbm2") - // Icons.fbr = iconRegister.getAtlasSprite(Settings.resourceDomain + ":screen/fbr") - // Icons.fbr2 = iconRegister.getAtlasSprite(Settings.resourceDomain + ":screen/fbr2") - // Icons.fhb = iconRegister.getAtlasSprite(Settings.resourceDomain + ":screen/fhb") - // Icons.fhb2 = iconRegister.getAtlasSprite(Settings.resourceDomain + ":screen/fhb2") - // Icons.fhm = iconRegister.getAtlasSprite(Settings.resourceDomain + ":screen/fhm") - // Icons.fhm2 = iconRegister.getAtlasSprite(Settings.resourceDomain + ":screen/fhm2") - // Icons.fht = iconRegister.getAtlasSprite(Settings.resourceDomain + ":screen/fht") - // Icons.fht2 = iconRegister.getAtlasSprite(Settings.resourceDomain + ":screen/fht2") - // Icons.fml = iconRegister.getAtlasSprite(Settings.resourceDomain + ":screen/fml") - // Icons.fmm = iconRegister.getAtlasSprite(Settings.resourceDomain + ":screen/fmm") - // Icons.fmr = iconRegister.getAtlasSprite(Settings.resourceDomain + ":screen/fmr") - // Icons.ftl = iconRegister.getAtlasSprite(Settings.resourceDomain + ":screen/ftl") - // Icons.ftm = iconRegister.getAtlasSprite(Settings.resourceDomain + ":screen/ftm") - // Icons.ftr = iconRegister.getAtlasSprite(Settings.resourceDomain + ":screen/ftr") - // Icons.fvb = iconRegister.getAtlasSprite(Settings.resourceDomain + ":screen/fvb") - // Icons.fvb2 = iconRegister.getAtlasSprite(Settings.resourceDomain + ":screen/fvb2") - // Icons.fvm = iconRegister.getAtlasSprite(Settings.resourceDomain + ":screen/fvm") - // Icons.fvt = iconRegister.getAtlasSprite(Settings.resourceDomain + ":screen/fvt") - // } - - // ----------------------------------------------------------------------- // - override def hasTileEntity(state: IBlockState) = true override def createNewTileEntity(world: World, metadata: Int) = new tileentity.Screen(tier)