From c04954c71a9aea737bc263a1a968bd4e942e97e1 Mon Sep 17 00:00:00 2001 From: Adrian Siekierka Date: Thu, 1 Sep 2022 22:39:02 +0200 Subject: [PATCH] minor codebase cleanup --- src/main/scala/li/cil/oc/client/Proxy.scala | 10 ++++++---- .../oc/client/renderer/block/ScreenModel.scala | 7 +++---- .../client/renderer/entity/DroneRenderer.scala | 4 ++-- .../renderer/tileentity/ScreenRenderer.scala | 17 +++++++++++------ 4 files changed, 22 insertions(+), 16 deletions(-) diff --git a/src/main/scala/li/cil/oc/client/Proxy.scala b/src/main/scala/li/cil/oc/client/Proxy.scala index c8a912dbe..bab2d2fe8 100644 --- a/src/main/scala/li/cil/oc/client/Proxy.scala +++ b/src/main/scala/li/cil/oc/client/Proxy.scala @@ -21,10 +21,10 @@ import li.cil.oc.common.tileentity import li.cil.oc.common.{Proxy => CommonProxy} import li.cil.oc.util.Audio import net.minecraft.block.Block +import net.minecraft.client.renderer.entity.{Render, RenderManager} import net.minecraft.item.Item import net.minecraftforge.common.MinecraftForge -import net.minecraftforge.fml.client.registry.ClientRegistry -import net.minecraftforge.fml.client.registry.RenderingRegistry +import net.minecraftforge.fml.client.registry.{ClientRegistry, IRenderFactory, RenderingRegistry} import net.minecraftforge.fml.common.event.FMLInitializationEvent import net.minecraftforge.fml.common.event.FMLPreInitializationEvent import net.minecraftforge.fml.common.network.NetworkRegistry @@ -42,6 +42,10 @@ private[oc] class Proxy extends CommonProxy { MinecraftForge.EVENT_BUS.register(NetSplitterModel) ModelInitialization.preInit() + + RenderingRegistry.registerEntityRenderingHandler(classOf[Drone], new IRenderFactory[Drone] { + override def createRenderFor(manager: RenderManager): Render[_ >: Drone] = new DroneRenderer(manager) + }) } override def init(e: FMLInitializationEvent) { @@ -51,8 +55,6 @@ private[oc] class Proxy extends CommonProxy { ColorHandler.init() - RenderingRegistry.registerEntityRenderingHandler(classOf[Drone], DroneRenderer) - ClientRegistry.bindTileEntitySpecialRenderer(classOf[tileentity.Adapter], AdapterRenderer) ClientRegistry.bindTileEntitySpecialRenderer(classOf[tileentity.Assembler], AssemblerRenderer) ClientRegistry.bindTileEntitySpecialRenderer(classOf[tileentity.Case], CaseRenderer) diff --git a/src/main/scala/li/cil/oc/client/renderer/block/ScreenModel.scala b/src/main/scala/li/cil/oc/client/renderer/block/ScreenModel.scala index 5069923f1..661df9db5 100644 --- a/src/main/scala/li/cil/oc/client/renderer/block/ScreenModel.scala +++ b/src/main/scala/li/cil/oc/client/renderer/block/ScreenModel.scala @@ -2,12 +2,12 @@ package li.cil.oc.client.renderer.block import java.util import java.util.Collections - import li.cil.oc.Constants import li.cil.oc.api import li.cil.oc.client.Textures import li.cil.oc.common.Tier import li.cil.oc.common.block +import li.cil.oc.common.block.Screen import li.cil.oc.common.tileentity import li.cil.oc.util.Color import net.minecraft.block.state.IBlockState @@ -82,9 +82,8 @@ object ScreenModel extends SmartBlockModelBase { private def xy2part(value: Int, high: Int) = if (value == 0) 2 else if (value == high) 0 else 1 class ItemModel(val stack: ItemStack) extends SmartBlockModelBase { - val color = api.Items.get(stack).name() match { - case Constants.BlockName.ScreenTier2 => Color.byTier(Tier.Two) - case Constants.BlockName.ScreenTier3 => Color.byTier(Tier.Three) + val color = api.Items.get(stack).block() match { + case screen: Screen => Color.byTier(screen.tier) case _ => Color.byTier(Tier.One) } diff --git a/src/main/scala/li/cil/oc/client/renderer/entity/DroneRenderer.scala b/src/main/scala/li/cil/oc/client/renderer/entity/DroneRenderer.scala index 3f4d1ab44..21b875f44 100644 --- a/src/main/scala/li/cil/oc/client/renderer/entity/DroneRenderer.scala +++ b/src/main/scala/li/cil/oc/client/renderer/entity/DroneRenderer.scala @@ -5,9 +5,9 @@ import li.cil.oc.common.entity.Drone import li.cil.oc.util.RenderState import net.minecraft.client.Minecraft import net.minecraft.client.renderer.GlStateManager -import net.minecraft.client.renderer.entity.Render +import net.minecraft.client.renderer.entity.{Render, RenderManager} -object DroneRenderer extends Render[Drone](Minecraft.getMinecraft.getRenderManager) { +class DroneRenderer(manager: RenderManager) extends Render[Drone](manager) { val model = new ModelQuadcopter() override def doRender(entity: Drone, x: Double, y: Double, z: Double, yaw: Float, dt: Float) { diff --git a/src/main/scala/li/cil/oc/client/renderer/tileentity/ScreenRenderer.scala b/src/main/scala/li/cil/oc/client/renderer/tileentity/ScreenRenderer.scala index 284260a02..4b172f053 100644 --- a/src/main/scala/li/cil/oc/client/renderer/tileentity/ScreenRenderer.scala +++ b/src/main/scala/li/cil/oc/client/renderer/tileentity/ScreenRenderer.scala @@ -3,6 +3,7 @@ package li.cil.oc.client.renderer.tileentity import li.cil.oc.Constants import li.cil.oc.Settings import li.cil.oc.api +import li.cil.oc.api.detail.ItemInfo import li.cil.oc.client.Textures import li.cil.oc.common.tileentity.Screen import li.cil.oc.integration.util.Wrench @@ -13,6 +14,7 @@ import net.minecraft.client.renderer.OpenGlHelper import net.minecraft.client.renderer.Tessellator import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer import net.minecraft.client.renderer.vertex.DefaultVertexFormats +import net.minecraft.item.ItemStack import net.minecraft.util.EnumFacing import org.lwjgl.opengl.GL11 import org.lwjgl.opengl.GL14 @@ -27,11 +29,6 @@ object ScreenRenderer extends TileEntitySpecialRenderer[Screen] { private var screen: Screen = null - private lazy val screens = Set( - api.Items.get(Constants.BlockName.ScreenTier1), - api.Items.get(Constants.BlockName.ScreenTier2), - api.Items.get(Constants.BlockName.ScreenTier3)) - private val canUseBlendColor = GLContext.getCapabilities.OpenGL14 // ----------------------------------------------------------------------- // @@ -125,11 +122,19 @@ object ScreenRenderer extends TileEntitySpecialRenderer[Screen] { GlStateManager.scale(1, -1, 1) } + private def isScreen(stack: ItemStack): Boolean = api.Items.get(stack) match { + case i: ItemInfo => i.block() match { + case _: li.cil.oc.common.block.Screen => true + case _ => false + } + case _ => false + } + private def drawOverlay() = if (screen.facing == EnumFacing.UP || screen.facing == EnumFacing.DOWN) { // Show up vector overlay when holding same screen block. val stack = Minecraft.getMinecraft.player.getHeldItemMainhand if (!stack.isEmpty) { - if (Wrench.holdsApplicableWrench(Minecraft.getMinecraft.player, screen.getPos) || screens.contains(api.Items.get(stack))) { + if (Wrench.holdsApplicableWrench(Minecraft.getMinecraft.player, screen.getPos) || isScreen(stack)) { GlStateManager.pushMatrix() transform() GlStateManager.depthMask(false)