diff --git a/src/main/resources/assets/opencomputers/lang/en_US.lang b/src/main/resources/assets/opencomputers/lang/en_US.lang index f417561f8..00b969c49 100644 --- a/src/main/resources/assets/opencomputers/lang/en_US.lang +++ b/src/main/resources/assets/opencomputers/lang/en_US.lang @@ -58,7 +58,7 @@ item.oc.Drone.name=Drone item.oc.DroneCase0.name=Drone Case (Tier 1) item.oc.DroneCase1.name=Drone Case (Tier 2) item.oc.DroneCase3.name=Drone Case (Creative) -item.oc.eeprom.name=EEPROM +item.oc.EEPROM.name=EEPROM item.oc.FloppyDisk.name=Floppy Disk item.oc.GraphicsCard0.name=Graphics Card (Tier 1) item.oc.GraphicsCard1.name=Graphics Card (Tier 2) diff --git a/src/main/resources/assets/opencomputers/lang/fr_FR.lang b/src/main/resources/assets/opencomputers/lang/fr_FR.lang index 5bd0111a9..e3b2e4ff3 100644 --- a/src/main/resources/assets/opencomputers/lang/fr_FR.lang +++ b/src/main/resources/assets/opencomputers/lang/fr_FR.lang @@ -54,7 +54,7 @@ item.oc.CuttingWire.name=Fil de coupe item.oc.DebugCard.name=Carte de débogueur item.oc.Debugger.name=Débogueur réseau item.oc.Disk.name=Disque -item.oc.eeprom.name=EEPROM +item.oc.EEPROM.name=EEPROM item.oc.FloppyDisk.name=Disquette item.oc.GraphicsCard0.name=Carte graphique (Niveau 1) item.oc.GraphicsCard1.name=Carte graphique (Niveau 2) diff --git a/src/main/scala/li/cil/oc/client/renderer/font/TextureFontRenderer.scala b/src/main/scala/li/cil/oc/client/renderer/font/TextureFontRenderer.scala index 723ea71d1..8589b3fe8 100644 --- a/src/main/scala/li/cil/oc/client/renderer/font/TextureFontRenderer.scala +++ b/src/main/scala/li/cil/oc/client/renderer/font/TextureFontRenderer.scala @@ -39,6 +39,7 @@ abstract class TextureFontRenderer { GL11.glScalef(0.5f, 0.5f, 1) RenderState.disableDepthMask() + RenderState.makeItBlend() GL11.glDisable(GL11.GL_TEXTURE_2D) RenderState.checkError(getClass.getName + ".drawBuffer: configure state") diff --git a/src/main/scala/li/cil/oc/common/block/Keyboard.scala b/src/main/scala/li/cil/oc/common/block/Keyboard.scala index 72a91913f..64c9c5140 100644 --- a/src/main/scala/li/cil/oc/common/block/Keyboard.scala +++ b/src/main/scala/li/cil/oc/common/block/Keyboard.scala @@ -67,12 +67,26 @@ class Keyboard extends SimpleBlock with traits.OmniRotatable { case _ => } + // Copy-pasta from old Forge's ForgeDirection, because MC's equivalent in EnumFacing is client side only \o/ + private val ROTATION_MATRIX = Array( + Array(0, 1, 4, 5, 3, 2, 6), + Array(0, 1, 5, 4, 2, 3, 6), + Array(5, 4, 2, 3, 0, 1, 6), + Array(4, 5, 2, 3, 1, 0, 6), + Array(2, 3, 1, 0, 4, 5, 6), + Array(3, 2, 0, 1, 4, 5, 6), + Array(0, 1, 2, 3, 4, 5, 6)) + + private def getRotation(facing: EnumFacing, axis: EnumFacing) = { + EnumFacing.getFront(ROTATION_MATRIX(axis.ordinal)(facing.ordinal)) + } + private def setBlockBounds(pitch: EnumFacing, yaw: EnumFacing) { val (forward, up) = pitch match { case side@(EnumFacing.DOWN | EnumFacing.UP) => (side, yaw) case _ => (yaw, EnumFacing.UP) } - val side = forward.rotateAround(up.getAxis) + val side = getRotation(forward, up) val sizes = Array(7f / 16f, 4f / 16f, 7f / 16f) val x0 = -up.getFrontOffsetX * sizes(1) - side.getFrontOffsetX * sizes(2) - forward.getFrontOffsetX * sizes(0) val x1 = up.getFrontOffsetX * sizes(1) + side.getFrontOffsetX * sizes(2) - forward.getFrontOffsetX * 0.5f diff --git a/src/main/scala/li/cil/oc/common/block/RedstoneAware.scala b/src/main/scala/li/cil/oc/common/block/RedstoneAware.scala index 152dd5aff..dedae0d23 100644 --- a/src/main/scala/li/cil/oc/common/block/RedstoneAware.scala +++ b/src/main/scala/li/cil/oc/common/block/RedstoneAware.scala @@ -34,7 +34,7 @@ abstract class RedstoneAware extends SimpleBlock /* with IRedNetOmniNode TODO MF override def isProvidingWeakPower(world: IBlockAccess, pos: BlockPos, state: IBlockState, side: EnumFacing) = world.getTileEntity(pos) match { - case redstone: tileentity.traits.RedstoneAware => math.min(math.max(redstone.output(side), 0), 15) + case redstone: tileentity.traits.RedstoneAware if side != null => math.min(math.max(redstone.output(side.getOpposite), 0), 15) case _ => super.isProvidingWeakPower(world, pos, state, side) } diff --git a/src/main/scala/li/cil/oc/common/block/SimpleBlock.scala b/src/main/scala/li/cil/oc/common/block/SimpleBlock.scala index 12f690080..1c8b0c19e 100644 --- a/src/main/scala/li/cil/oc/common/block/SimpleBlock.scala +++ b/src/main/scala/li/cil/oc/common/block/SimpleBlock.scala @@ -195,14 +195,6 @@ abstract class SimpleBlock(material: Material = Material.iron) extends BlockCont // ----------------------------------------------------------------------- // - override def canConnectRedstone(world: IBlockAccess, pos: BlockPos, side: EnumFacing) = false - - override def isProvidingStrongPower(worldIn: IBlockAccess, pos: BlockPos, state: IBlockState, side: EnumFacing) = super.isProvidingWeakPower(worldIn, pos, state, side) - - override def isProvidingWeakPower(worldIn: IBlockAccess, pos: BlockPos, state: IBlockState, side: EnumFacing) = 0 - - // ----------------------------------------------------------------------- // - // NOTE: must not be final for immibis microblocks to work. override def onBlockActivated(world: World, pos: BlockPos, state: IBlockState, player: EntityPlayer, side: EnumFacing, hitX: Float, hitY: Float, hitZ: Float) = world.getTileEntity(pos) match { diff --git a/src/main/scala/li/cil/oc/common/container/StaticComponentSlot.scala b/src/main/scala/li/cil/oc/common/container/StaticComponentSlot.scala index 6fd943ae4..a73a8f713 100644 --- a/src/main/scala/li/cil/oc/common/container/StaticComponentSlot.scala +++ b/src/main/scala/li/cil/oc/common/container/StaticComponentSlot.scala @@ -5,7 +5,9 @@ import li.cil.oc.common import net.minecraft.inventory.IInventory class StaticComponentSlot(val container: Player, inventory: IInventory, index: Int, x: Int, y: Int, val slot: String, val tier: Int) extends ComponentSlot(inventory, index, x, y) { - setBackgroundLocation(Textures.Icons.get(slot)) + if (!container.playerInventory.player.isServerWorld) { + setBackgroundLocation(Textures.Icons.get(slot)) + } val tierIcon = Textures.Icons.get(tier) diff --git a/src/main/scala/li/cil/oc/common/tileentity/traits/RedstoneAware.scala b/src/main/scala/li/cil/oc/common/tileentity/traits/RedstoneAware.scala index 0d73da9bf..9edfffb33 100644 --- a/src/main/scala/li/cil/oc/common/tileentity/traits/RedstoneAware.scala +++ b/src/main/scala/li/cil/oc/common/tileentity/traits/RedstoneAware.scala @@ -158,7 +158,7 @@ trait RedstoneAware extends RotationAware /* with IConnectable with IRedstoneEmi protected def onRedstoneOutputChanged(side: EnumFacing) { val blockPos = getPos.offset(side) - world.notifyNeighborsOfStateChange(blockPos, getBlockType) + world.notifyBlockOfStateChange(blockPos, getBlockType) world.notifyNeighborsOfStateExcept(blockPos, world.getBlockState(blockPos).getBlock, side.getOpposite) if (isServer) ServerPacketSender.sendRedstoneState(this) diff --git a/src/main/scala/li/cil/oc/integration/opencomputers/DriverLootDisk.scala b/src/main/scala/li/cil/oc/integration/opencomputers/DriverLootDisk.scala index f160e1aaa..67601ef51 100644 --- a/src/main/scala/li/cil/oc/integration/opencomputers/DriverLootDisk.scala +++ b/src/main/scala/li/cil/oc/integration/opencomputers/DriverLootDisk.scala @@ -17,7 +17,7 @@ object DriverLootDisk extends Item { (stack.hasTagCompound && stack.getTagCompound.hasKey(Settings.namespace + "lootPath")) override def createEnvironment(stack: ItemStack, host: EnvironmentHost) = - if (stack.hasTagCompound) { + if (stack.hasTagCompound && !host.world.isRemote) { val lootPath = "loot/" + stack.getTagCompound.getString(Settings.namespace + "lootPath") val savePath = new io.File(DimensionManager.getCurrentSaveRootDirectory, Settings.savePath + lootPath) val fs =