remove improper getDamage() override from Cable, fix #3004

This commit is contained in:
Adrian Siekierka 2022-09-02 20:21:58 +02:00
parent a7f93408d7
commit 112ca93155
6 changed files with 40 additions and 19 deletions

View File

@ -77,6 +77,7 @@ private[oc] class Proxy extends CommonProxy {
ClientRegistry.bindTileEntitySpecialRenderer(classOf[tileentity.Transposer], TransposerRenderer)
MinecraftForgeClient.registerItemRenderer(Items.get(Constants.ItemName.Floppy).createItemStack(1).getItem, ItemRenderer)
MinecraftForgeClient.registerItemRenderer(Items.get(Constants.BlockName.Cable).createItemStack(1).getItem, ItemRenderer)
MinecraftForgeClient.registerItemRenderer(Items.get(Constants.BlockName.Print).createItemStack(1).getItem, ItemRenderer)
ClientRegistry.registerKeyBinding(KeyBindings.materialCosts)

View File

@ -31,14 +31,6 @@ object BlockRenderer extends ISimpleBlockRenderingHandler {
Tessellator.instance.draw()
RenderState.checkError(getClass.getName + ".renderInventoryBlock: assembler")
case _: common.block.Cable =>
GL11.glScalef(1.6f, 1.6f, 1.6f)
GL11.glTranslatef(-0.5f, -0.5f, -0.5f)
Tessellator.instance.startDrawingQuads()
Cable.render(block, metadata, renderer)
Tessellator.instance.draw()
RenderState.checkError(getClass.getName + ".renderInventoryBlock: cable")
case _: common.block.Hologram =>
GL11.glTranslatef(-0.5f, -0.5f, -0.5f)
Tessellator.instance.startDrawingQuads()

View File

@ -5,7 +5,8 @@ import li.cil.oc.client.Textures
import li.cil.oc.common
import li.cil.oc.integration.Mods
import net.minecraft.block.Block
import net.minecraft.client.renderer.RenderBlocks
import net.minecraft.client.renderer.{RenderBlocks, Tessellator}
import net.minecraft.item.{ItemBlock, ItemStack}
import net.minecraft.tileentity.TileEntity
import net.minecraft.util.AxisAlignedBB
import net.minecraft.world.IBlockAccess
@ -52,7 +53,10 @@ object Cable {
}
}
def render(block: Block, metadata: Int, renderer: RenderBlocks) {
def render(stack: ItemStack, renderer: RenderBlocks) {
val block = stack.getItem.asInstanceOf[ItemBlock].field_150939_a
val metadata = 0
val previousRenderAllFaces = renderer.renderAllFaces
renderer.renderAllFaces = true

View File

@ -6,7 +6,7 @@ import li.cil.oc.Settings
import li.cil.oc.api
import li.cil.oc.api.detail.ItemInfo
import li.cil.oc.client.KeyBindings
import li.cil.oc.client.renderer.block.Print
import li.cil.oc.client.renderer.block.{Cable, Hologram, Print}
import li.cil.oc.client.renderer.entity.DroneRenderer
import li.cil.oc.common.item.data.PrintData
import li.cil.oc.util.Color
@ -14,6 +14,7 @@ import li.cil.oc.util.ExtendedAABB
import li.cil.oc.util.RenderState
import net.minecraft.client.Minecraft
import net.minecraft.client.gui.ScaledResolution
import net.minecraft.client.renderer.{RenderBlocks, Tessellator}
import net.minecraft.client.renderer.entity.RenderItem
import net.minecraft.client.renderer.entity.RenderManager
import net.minecraft.client.renderer.texture.TextureMap
@ -35,6 +36,7 @@ object ItemRenderer extends IItemRenderer {
lazy val floppy = api.Items.get(Constants.ItemName.Floppy)
lazy val lootDisk = api.Items.get(Constants.ItemName.LootDisk)
lazy val print = api.Items.get(Constants.BlockName.Print)
lazy val cable = api.Items.get(Constants.BlockName.Cable)
lazy val nullShape = new PrintData.Shape(ExtendedAABB.unitBounds, Settings.resourceDomain + ":White", Some(Color.Lime))
@ -44,12 +46,14 @@ object ItemRenderer extends IItemRenderer {
val descriptor = api.Items.get(stack)
(renderType == ItemRenderType.INVENTORY && isFloppy(api.Items.get(stack))) ||
((renderType == ItemRenderType.INVENTORY || renderType == ItemRenderType.ENTITY || renderType == ItemRenderType.EQUIPPED || renderType == ItemRenderType.EQUIPPED_FIRST_PERSON) && descriptor == drone) ||
((renderType == ItemRenderType.INVENTORY || renderType == ItemRenderType.ENTITY || renderType == ItemRenderType.EQUIPPED || renderType == ItemRenderType.EQUIPPED_FIRST_PERSON) && descriptor == cable) ||
((renderType == ItemRenderType.INVENTORY || renderType == ItemRenderType.ENTITY || renderType == ItemRenderType.EQUIPPED || renderType == ItemRenderType.EQUIPPED_FIRST_PERSON) && api.Items.get(stack) == print)
}
override def shouldUseRenderHelper(renderType: ItemRenderType, stack: ItemStack, helper: ItemRendererHelper) =
if (renderType == ItemRenderType.ENTITY) true
else if (renderType == ItemRenderType.INVENTORY && api.Items.get(stack) == print) helper == ItemRendererHelper.INVENTORY_BLOCK
else if (api.Items.get(stack) == cable) true
// Note: it's easier to revert changes introduced by this "helper" than by
// the code that applies if no helper is used...
else helper == ItemRendererHelper.EQUIPPED_BLOCK
@ -144,6 +148,28 @@ object ItemRenderer extends IItemRenderer {
RenderState.checkError("ItemRenderer.renderItem: print")
}
else if (descriptor == cable) {
GL11.glPushAttrib(GL11.GL_ALL_ATTRIB_BITS)
GL11.glPushMatrix()
Minecraft.getMinecraft.renderEngine.bindTexture(TextureMap.locationBlocksTexture)
GL11.glScalef(1.5f, 1.5f, 1.5f)
if (renderType == ItemRenderType.ENTITY) {
GL11.glTranslatef(-0.5f, 0, -0.5f)
}
Tessellator.instance.startDrawingQuads()
Tessellator.instance.setColorOpaque_I(stack.getItem.getColorFromItemStack(stack, 0))
Cable.render(stack, data(0).asInstanceOf[RenderBlocks])
Tessellator.instance.draw()
GL11.glPopMatrix()
GL11.glPopAttrib()
RenderState.checkError("ItemRenderer.renderItem: print")
}
RenderState.checkError("ItemRenderer.renderItem: leaving")
}

View File

@ -1,7 +1,6 @@
package li.cil.oc.common.block
import java.util
import codechicken.lib.vec.Cuboid6
import codechicken.multipart.JNormalOcclusion
import codechicken.multipart.NormalOcclusionTest
@ -17,7 +16,7 @@ import li.cil.oc.client.Textures
import li.cil.oc.common.tileentity
import li.cil.oc.integration.Mods
import li.cil.oc.integration.fmp.CablePart
import li.cil.oc.util.Color
import li.cil.oc.util.{Color, ItemColorizer}
import net.minecraft.block.Block
import net.minecraft.client.renderer.texture.IIconRegister
import net.minecraft.entity.{Entity, EntityLivingBase}
@ -63,9 +62,6 @@ class Cable(protected implicit val tileTag: ClassTag[tileentity.Cable]) extends
override def isSideSolid(world: IBlockAccess, x: Int, y: Int, z: Int, side: ForgeDirection) = false
@SideOnly(Side.CLIENT)
override def getRenderColor(metadata: Int) = metadata
// ----------------------------------------------------------------------- //
override def getPickBlock(target: MovingObjectPosition, world: World, x: Int, y: Int, z: Int) =

View File

@ -1,7 +1,8 @@
package li.cil.oc.common.block
import java.util
import cpw.mods.fml.relauncher.{Side, SideOnly}
import java.util
import li.cil.oc.Constants
import li.cil.oc.Settings
import li.cil.oc.api
@ -64,14 +65,15 @@ class Item(value: Block) extends ItemBlock(value) {
case _ => Settings.namespace + "tile"
}
override def getDamage(stack: ItemStack): Int = {
@SideOnly(Side.CLIENT)
override def getColorFromItemStack(stack: ItemStack, v: Int) = {
if (api.Items.get(stack) == api.Items.get(Constants.BlockName.Cable)) {
if (ItemColorizer.hasColor(stack)) {
ItemColorizer.getColor(stack)
}
else Color.LightGray
}
else super.getDamage(stack)
else super.getColorFromItemStack(stack, v)
}
override def isBookEnchantable(a: ItemStack, b: ItemStack) = false