From 70ee9fabd699f193efb85f0c020a7eb4c4cf0555 Mon Sep 17 00:00:00 2001 From: bdew Date: Wed, 15 Oct 2014 12:05:23 +0300 Subject: [PATCH] Added BaseBlockRenderHandler and RenderUtils (some common code moved there) --- .../lib/render/BaseBlockRenderHandler.scala | 20 ++++++++ src/net/bdew/lib/render/RenderUtils.scala | 48 +++++++++++++++++++ .../render/connected/ConnectedRenderer.scala | 27 ++--------- 3 files changed, 71 insertions(+), 24 deletions(-) create mode 100644 src/net/bdew/lib/render/BaseBlockRenderHandler.scala create mode 100644 src/net/bdew/lib/render/RenderUtils.scala diff --git a/src/net/bdew/lib/render/BaseBlockRenderHandler.scala b/src/net/bdew/lib/render/BaseBlockRenderHandler.scala new file mode 100644 index 0000000..776a362 --- /dev/null +++ b/src/net/bdew/lib/render/BaseBlockRenderHandler.scala @@ -0,0 +1,20 @@ +/* + * Copyright (c) bdew, 2013 - 2014 + * https://github.com/bdew/bdlib + * + * This mod is distributed under the terms of the Minecraft Mod Public + * License 1.0, or MMPL. Please check the contents of the license located in + * http://bdew.net/minecraft-mod-public-license/ + */ + +package net.bdew.lib.render + +import cpw.mods.fml.client.registry.{ISimpleBlockRenderingHandler, RenderingRegistry} + +abstract class BaseBlockRenderHandler extends ISimpleBlockRenderingHandler { + val id = RenderingRegistry.getNextAvailableRenderId + RenderingRegistry.registerBlockHandler(this) + + override def shouldRender3DInInventory(modelId: Int) = true + override def getRenderId = id +} diff --git a/src/net/bdew/lib/render/RenderUtils.scala b/src/net/bdew/lib/render/RenderUtils.scala new file mode 100644 index 0000000..a00c025 --- /dev/null +++ b/src/net/bdew/lib/render/RenderUtils.scala @@ -0,0 +1,48 @@ +/* + * Copyright (c) bdew, 2013 - 2014 + * https://github.com/bdew/bdlib + * + * This mod is distributed under the terms of the Minecraft Mod Public + * License 1.0, or MMPL. Please check the contents of the license located in + * http://bdew.net/minecraft-mod-public-license/ + */ + +package net.bdew.lib.render + +import net.minecraft.block.Block +import net.minecraft.client.renderer.{RenderBlocks, Tessellator} +import net.minecraftforge.common.util.ForgeDirection +import org.lwjgl.opengl.GL11 + +object RenderUtils { + /** + * Render a single item side + */ + def doRenderItemSide(d: ForgeDirection, r: RenderBlocks, block: Block, meta: Int) = { + val icon = r.getBlockIconFromSideAndMetadata(block, d.ordinal(), meta) + Tessellator.instance.setNormal(d.offsetX, d.offsetY, d.offsetZ) + d match { + case ForgeDirection.DOWN => r.renderFaceYNeg(block, 0.0D, 0.0D, 0.0D, icon) + case ForgeDirection.UP => r.renderFaceYPos(block, 0.0D, 0.0D, 0.0D, icon) + case ForgeDirection.NORTH => r.renderFaceZNeg(block, 0.0D, 0.0D, 0.0D, icon) + case ForgeDirection.SOUTH => r.renderFaceZPos(block, 0.0D, 0.0D, 0.0D, icon) + case ForgeDirection.WEST => r.renderFaceXNeg(block, 0.0D, 0.0D, 0.0D, icon) + case ForgeDirection.EAST => r.renderFaceXPos(block, 0.0D, 0.0D, 0.0D, icon) + case _ => sys.error("Invalid side") + } + } + + /** + * Render a simple block as an item (for gui, item entities etc.) + */ + def renderSimpleBlockItem(block: Block, metadata: Int, renderer: RenderBlocks) { + val T = Tessellator.instance + GL11.glTranslatef(-0.5F, -0.5F, -0.5F) + for (side <- ForgeDirection.VALID_DIRECTIONS) { + T.startDrawingQuads() + doRenderItemSide(side, renderer, block, metadata) + T.draw() + } + GL11.glTranslatef(0.5F, 0.5F, 0.5F) + } +} diff --git a/src/net/bdew/lib/render/connected/ConnectedRenderer.scala b/src/net/bdew/lib/render/connected/ConnectedRenderer.scala index 119abf2..a148685 100644 --- a/src/net/bdew/lib/render/connected/ConnectedRenderer.scala +++ b/src/net/bdew/lib/render/connected/ConnectedRenderer.scala @@ -9,32 +9,15 @@ package net.bdew.lib.render.connected -import cpw.mods.fml.client.registry.{ISimpleBlockRenderingHandler, RenderingRegistry} import net.bdew.lib.block.BlockRef +import net.bdew.lib.render.{BaseBlockRenderHandler, RenderUtils} import net.minecraft.block.Block import net.minecraft.client.renderer.{RenderBlocks, Tessellator} import net.minecraft.world.IBlockAccess import net.minecraftforge.common.util.ForgeDirection import org.lwjgl.opengl.GL11 -object ConnectedRenderer extends ISimpleBlockRenderingHandler { - val id = RenderingRegistry.getNextAvailableRenderId - RenderingRegistry.registerBlockHandler(this) - - def doRenderItemSide(d: ForgeDirection, r: RenderBlocks, block: Block, meta: Int) = { - val icon = r.getBlockIconFromSideAndMetadata(block, d.ordinal(), meta) - Tessellator.instance.setNormal(d.offsetX, d.offsetY, d.offsetZ) - d match { - case ForgeDirection.DOWN => r.renderFaceYNeg(block, 0.0D, 0.0D, 0.0D, icon) - case ForgeDirection.UP => r.renderFaceYPos(block, 0.0D, 0.0D, 0.0D, icon) - case ForgeDirection.NORTH => r.renderFaceZNeg(block, 0.0D, 0.0D, 0.0D, icon) - case ForgeDirection.SOUTH => r.renderFaceZPos(block, 0.0D, 0.0D, 0.0D, icon) - case ForgeDirection.WEST => r.renderFaceXNeg(block, 0.0D, 0.0D, 0.0D, icon) - case ForgeDirection.EAST => r.renderFaceXPos(block, 0.0D, 0.0D, 0.0D, icon) - case _ => sys.error("Invalid side") - } - } - +object ConnectedRenderer extends BaseBlockRenderHandler { override def renderInventoryBlock(block: Block, metadata: Int, modelID: Int, renderer: RenderBlocks) { val tessellator = Tessellator.instance GL11.glTranslatef(-0.5F, -0.5F, -0.5F) @@ -43,8 +26,7 @@ object ConnectedRenderer extends ISimpleBlockRenderingHandler { for (side <- ForgeDirection.VALID_DIRECTIONS) { tessellator.startDrawingQuads() - doRenderItemSide(side, renderer, block, metadata) - val m = ConnectedHelper.brightnessMultiplier(side) + RenderUtils.doRenderItemSide(side, renderer, block, metadata) ConnectedHelper.draw(side, 8).doDraw(ConnectedHelper.Vec3F(0, 0, 0), edge) tessellator.draw() } @@ -105,9 +87,6 @@ object ConnectedRenderer extends ISimpleBlockRenderingHandler { } } } - - override def shouldRender3DInInventory(modelId: Int) = true - override def getRenderId = id }