Added BaseBlockRenderHandler and RenderUtils (some common code moved there)

This commit is contained in:
bdew committed 2014-10-15 12:09:08 +03:00
1 parent 78d9bed924
commit 70ee9fabd6
3 files changed
+71 -24

No files matched your search

@@ -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
}
+48
View File
@@ -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)
}
}
@@ -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
}