Skip to content

Commit

Permalink
Random block renderer fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
Roadhog360 committed Aug 21, 2023
1 parent a1a4728 commit 7131200
Show file tree
Hide file tree
Showing 20 changed files with 426 additions and 816 deletions.
22 changes: 8 additions & 14 deletions src/main/java/ganymedes01/etfuturum/blocks/BlockLavaCauldron.java
Original file line number Diff line number Diff line change
@@ -1,21 +1,21 @@
package ganymedes01.etfuturum.blocks;

import java.util.Random;

import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import ganymedes01.etfuturum.core.utils.Utils;
import ganymedes01.etfuturum.entities.EntityItemUninflammable;
import ganymedes01.etfuturum.lib.RenderIDs;
import net.minecraft.block.BlockCauldron;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLiving;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Blocks;
import net.minecraft.util.DamageSource;
import net.minecraft.util.IIcon;
import net.minecraft.world.World;

import java.util.Random;

public class BlockLavaCauldron extends BlockCauldron {

@SideOnly(Side.CLIENT)
Expand Down Expand Up @@ -54,20 +54,14 @@ public boolean onBlockActivated(World p_149727_1_, int p_149727_2_, int p_149727
@Override
public void onEntityCollidedWithBlock(World world, int x, int y, int z, Entity entity)
{
boolean flag = (int)entity.prevPosX != (int)entity.posX || (int)entity.prevPosY != (int)entity.posY || (int)entity.prevPosZ != (int)entity.posZ;

if ((flag || entity.ticksExisted % 25 == 0) && !(entity instanceof EntityItemUninflammable))
{
entity.motionY = 0.20000000298023224D;
entity.motionX = (world.rand.nextFloat() - world.rand.nextFloat()) * 0.2F;
entity.motionZ = (world.rand.nextFloat() - world.rand.nextFloat()) * 0.2F;
entity.playSound("random.fizz", 0.4F, 2.0F + world.rand.nextFloat() * 0.4F);
}
if (!world.isRemote) {
entity.attackEntityFrom(DamageSource.lava, 4.0F);
if(!entity.isImmuneToFire() && !(world.canBlockSeeTheSky(x, y + 1, z) && world.isRaining())) {
if (!entity.isImmuneToFire() && !(world.canBlockSeeTheSky(x, y + 1, z) && world.isRaining())) {
entity.setFire(15);
if (!(entity instanceof EntityLiving)) {
entity.playSound("random.fizz", 0.4F, 2.0F + world.rand.nextFloat() * 0.4F);
}
}
entity.attackEntityFrom(DamageSource.lava, 4.0F);
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@ public class BlockAmethystClusterRenderer implements ISimpleBlockRenderingHandle

@Override
public void renderInventoryBlock(Block block, int metadata, int modelId, RenderBlocks renderer) {

}

@Override
Expand All @@ -31,35 +30,34 @@ private boolean renderBlockCrops(Block block, int x, int y, int z, RenderBlocks

IBlockAccess world = renderer.blockAccess;
tessellator.setBrightness(block.getMixedBrightnessForBlock(world, x, y, z));
// tessellator.setBrightness(200);
float f = 1.0F;
int l = block.colorMultiplier(world, x, y, z);
float f1 = (float)(l >> 16 & 255) / 255.0F;
float f2 = (float)(l >> 8 & 255) / 255.0F;
float f3 = (float)(l & 255) / 255.0F;
if(EntityRenderer.anaglyphEnable) {
float renX = (f1 * 30.0F + f2 * 59.0F + f3 * 11.0F) / 100.0F;
float f5 = (f1 * 30.0F + f2 * 70.0F) / 100.0F;
float renY = (f1 * 30.0F + f3 * 70.0F) / 100.0F;
f1 = renX;
f2 = f5;
f3 = renY;
}
if (EntityRenderer.anaglyphEnable) {
float renX = (f1 * 30.0F + f2 * 59.0F + f3 * 11.0F) / 100.0F;
float f5 = (f1 * 30.0F + f2 * 70.0F) / 100.0F;
float renY = (f1 * 30.0F + f3 * 70.0F) / 100.0F;
f1 = renX;
f2 = f5;
f3 = renY;
}

tessellator.setColorOpaque_F(f * f1, f * f2, f * f3);
double renX1 = (double)x;
double renY1 = (double)y;
double renZ = (double)z;
if(block == Blocks.tallgrass) {
long meta = (long)(x * 3129871) ^ (long)x * 116129781L ^ (long)y;
meta = meta * meta * 42317861L + meta * 11L;
renX1 += ((double)((float)(meta >> 16 & 15L) / 15.0F) - 0.5D) * 0.5D;
renY1 += ((double)((float)(meta >> 20 & 15L) / 15.0F) - 1.0D) * 0.2D;
renZ += ((double)((float)(meta >> 24 & 15L) / 15.0F) - 0.5D) * 0.5D;
}
tessellator.setColorOpaque_F(f * f1, f * f2, f * f3);
double renX1 = x;
double renY1 = y;
double renZ = z;
if (block == Blocks.tallgrass) {
long meta = ((long) x * 3129871L) ^ (long) x * 116129781L ^ (long) y;
meta = meta * meta * 42317861L + meta * 11L;
renX1 += (((double) (meta >> 16 & 15L) / 15.0F) - 0.5D) * 0.5D;
renY1 += (((double) (meta >> 20 & 15L) / 15.0F) - 1.0D) * 0.2D;
renZ += (((double) (meta >> 24 & 15L) / 15.0F) - 0.5D) * 0.5D;
}

int meta1 = world.getBlockMetadata(x, y, z);
IIcon icon = renderer.getBlockIconFromSideAndMetadata(block, 0, meta1);
int meta1 = world.getBlockMetadata(x, y, z);
IIcon icon = renderer.getBlockIconFromSideAndMetadata(block, 0, meta1);
if(renderer.hasOverrideBlockTexture()) {
icon = renderer.overrideBlockTexture;
}
Expand Down Expand Up @@ -93,29 +91,29 @@ private boolean renderBlockCrops(Block block, int x, int y, int z, RenderBlocks
renderType = 2;
verTop = renZ + 1.0D;
verBot = renZ + 0.0D;
break;
case 4:
renderType = 1;
verTop = renX1 + 0.0D;
verBot = renX1 + 1.0D;
break;
case 4:
renderType = 1;
verTop = renX1 + 0.0D;
verBot = renX1 + 1.0D;
break;
}

double fix = 0.45D;
double minU = (double)icon.getMinU();
double minV = (double)icon.getMinV();
double maxU = (double)icon.getMaxU();
double maxV = (double)icon.getMaxV();
double yMin;
double yMax;
double xMin;
double xMax;
if(renderType == 0) {
yMin = renX1 + 0.5D - fix;
yMax = renX1 + 0.5D + fix;
xMin = renZ + 0.5D - fix;
xMax = renZ + 0.5D + fix;
tessellator.addVertexWithUV(yMin, verTop, xMin, minU, minV);
double fix = 0.45D;
double minU = icon.getMinU();
double minV = icon.getMinV();
double maxU = icon.getMaxU();
double maxV = icon.getMaxV();
double yMin;
double yMax;
double xMin;
double xMax;
if (renderType == 0) {
yMin = renX1 + 0.5D - fix;
yMax = renX1 + 0.5D + fix;
xMin = renZ + 0.5D - fix;
xMax = renZ + 0.5D + fix;
tessellator.addVertexWithUV(yMin, verTop, xMin, minU, minV);
tessellator.addVertexWithUV(yMin, verBot, xMin, minU, maxV);
tessellator.addVertexWithUV(yMax, verBot, xMax, maxU, maxV);
tessellator.addVertexWithUV(yMax, verTop, xMax, maxU, minV);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,57 +1,25 @@
package ganymedes01.etfuturum.client.renderer.block;

import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler;
import ganymedes01.etfuturum.client.OpenGLHelper;
import ganymedes01.etfuturum.lib.RenderIDs;
import net.minecraft.block.Block;
import net.minecraft.block.BlockPistonBase;
import net.minecraft.client.renderer.RenderBlocks;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.world.IBlockAccess;

public class BlockBarrelRenderer implements ISimpleBlockRenderingHandler {
public class BlockBarrelRenderer extends BlockModelBase {

@Override
public void renderInventoryBlock(Block block, int meta, int modelID, RenderBlocks renderer) {
Tessellator tessellator = Tessellator.instance;
OpenGLHelper.translate(-0.5F, -0.5F, -0.5F);

int metadata = BlockPistonBase.getPistonOrientation(meta);
switch(metadata) {
case 0: metadata = 1;
break;
case 1: metadata = 0;
break;

default: metadata = meta;
break;
}
renderer.setRenderBounds(0, 0, 0, 1, 1, 1);
tessellator.startDrawingQuads();
tessellator.setNormal(0.0F, -1.0F, 0.0F);
renderer.renderFaceYNeg(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 0, metadata));
tessellator.setNormal(0.0F, 1.0F, 0.0F);
renderer.renderFaceYPos(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 1, metadata));
tessellator.setNormal(0.0F, 0.0F, -1.0F);
renderer.renderFaceZNeg(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 2, metadata));
tessellator.setNormal(0.0F, 0.0F, 1.0F);
renderer.renderFaceZPos(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 3, metadata));
tessellator.setNormal(-1.0F, 0.0F, 0.0F);
renderer.renderFaceXNeg(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 4, metadata));
tessellator.setNormal(1.0F, 0.0F, 0.0F);
renderer.renderFaceXPos(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 5, metadata));
tessellator.draw();
public BlockBarrelRenderer(int modelID) {
super(modelID);
}

OpenGLHelper.translate(0.5F, 0.5F, 0.5F);
OpenGLHelper.disableBlend();
protected void renderStandardInventoryBlock(Block block, int meta, int modelID, RenderBlocks renderer, double minX, double minY, double minZ, double maxF, double maxY, double maxZ) {
super.renderStandardInventoryBlock(block, 1, modelID, renderer, minX, minY, minZ, maxF, maxY, maxZ);
}

@Override
public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer) {
int l = BlockPistonBase.getPistonOrientation(renderer.blockAccess.getBlockMetadata(x, y, z));

switch (l)
{
switch (l) {
case 0:
renderer.uvRotateEast = 3;
renderer.uvRotateWest = 3;
Expand Down Expand Up @@ -99,14 +67,4 @@ public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block b
return true;
}

@Override
public boolean shouldRender3DInInventory(int modelId) {
return true;
}

@Override
public int getRenderId() {
return RenderIDs.BARREL;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -44,22 +44,22 @@ public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block b
tessellator.setColorOpaque_F(f, f1, f2);
IIcon iicon1 = block.getBlockTextureFromSide(2);
f4 = 0.125F;
renderer.renderFaceXPos(block, (double)((float)x - 1.0F + f4), (double)y, (double)z, iicon1);
renderer.renderFaceXNeg(block, (double)((float)x + 1.0F - f4), (double)y, (double)z, iicon1);
renderer.renderFaceZPos(block, (double)x, (double)y, (double)((float)z - 1.0F + f4), iicon1);
renderer.renderFaceZNeg(block, (double)x, (double)y, (double)((float)z + 1.0F - f4), iicon1);
renderer.renderFaceXPos(block, (double) x - 1.0F + f4, y, z, iicon1);
renderer.renderFaceXNeg(block, (double) x + 1.0F - f4, y, z, iicon1);
renderer.renderFaceZPos(block, x, y, (double) z - 1.0F + f4, iicon1);
renderer.renderFaceZNeg(block, x, y, (double) z + 1.0F - f4, iicon1);
IIcon iicon2 = BlockCauldron.getCauldronIcon("inner");
renderer.renderFaceYPos(block, (double)x, (double)((float)y - 1.0F + 0.25F), (double)z, iicon2);
renderer.renderFaceYNeg(block, (double)x, (double)((float)y + 1.0F - 0.75F), (double)z, iicon2);
renderer.renderFaceYPos(block, x, (double) y - 1.0F + 0.25F, z, iicon2);
renderer.renderFaceYNeg(block, x, (double) y + 1.0F - 0.75F, z, iicon2);
int i1 = renderer.blockAccess.getBlockMetadata(x, y, z);

int color = tile.getWaterColor();
float r = (float)(color >> 16 & 255) / 255.0F;
float g = (float)(color >> 8 & 255) / 255.0F;
float b = (float)(color & 255) / 255.0F;
float r = (float) (color >> 16 & 255) / 255.0F;
float g = (float) (color >> 8 & 255) / 255.0F;
float b = (float) (color & 255) / 255.0F;
tessellator.setColorOpaque_F(r, g, b);
IIcon iicon = ((BlockPotionCauldron) ModBlocks.POTION_CAULDRON.get()).grayscaleWaterIcon();
renderer.renderFaceYPos(block, (double)x, (double)((float)y - 1.0F + BlockCauldron.getRenderLiquidLevel(i1 + 1)), (double)z, iicon);
renderer.renderFaceYPos(block, x, (double) y - 1.0F + BlockCauldron.getRenderLiquidLevel(i1 + 1), z, iicon);

return true;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,65 +1,53 @@
package ganymedes01.etfuturum.client.renderer.block;

import ganymedes01.etfuturum.ModBlocks;
import org.lwjgl.opengl.GL11;

import ganymedes01.etfuturum.blocks.BlockComposter;
import ganymedes01.etfuturum.lib.RenderIDs;
import net.minecraft.block.Block;
import net.minecraft.client.renderer.RenderBlocks;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.world.IBlockAccess;

public class BlockComposterRenderer extends BlockModelBase {

@Override
public void renderInventoryBlock(Block block, int metadata, int modelId, RenderBlocks renderer) {
renderInInventory(Tessellator.instance, renderer, block, metadata);
public BlockComposterRenderer(int modelID) {
super(modelID);
}
// To render a ISBRH part in the inventory - Credits to MinecraftForgeFrance
private void renderInInventory(Tessellator tessellator, RenderBlocks renderer, Block block, int metadata)
{
GL11.glTranslatef(-0.5F, -0.5F, -0.5F);
tessellator.startDrawingQuads();

protected void renderStandardInventoryBlock(Block block, int meta, int modelID, RenderBlocks renderer, double minX, double minY, double minZ, double maxF, double maxY, double maxZ) {
renderer.setRenderBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F);

tessellator.setNormal(0.0F, -1.0F, 0.0F);
renderer.renderFaceYNeg(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 0, metadata));
renderer.renderFaceYNeg(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 0, meta));
tessellator.setNormal(0.0F, 1.0F, 0.0F);
renderer.renderFaceYPos(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 1, metadata));
renderer.renderFaceYPos(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 1, meta));
tessellator.setNormal(0.0F, 0.0F, -1.0F);
renderer.renderFaceZNeg(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 2, metadata));
renderer.renderFaceZNeg(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 2, meta));
tessellator.setNormal(0.0F, 0.0F, 1.0F);
renderer.renderFaceZPos(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 3, metadata));
renderer.renderFaceZPos(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 3, meta));
tessellator.setNormal(-1.0F, 0.0F, 0.0F);
renderer.renderFaceXNeg(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 4, metadata));
renderer.renderFaceXNeg(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 4, meta));
tessellator.setNormal(1.0F, 0.0F, 0.0F);
renderer.renderFaceXPos(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 5, metadata));
renderer.renderFaceXPos(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 5, meta));

renderer.setRenderBounds(0.875D, 0.125D, 0.125D, 0.125D, 1, 0.875D);
tessellator.setNormal(0.0F, 0.0F, -1.0F);
renderer.renderFaceZNeg(block, 0, 0, 0, renderer.getBlockIconFromSideAndMetadata(block, 2, metadata));
renderer.renderFaceZNeg(block, 0, 0, 0, renderer.getBlockIconFromSideAndMetadata(block, 2, meta));
tessellator.setNormal(0.0F, 0.0F, 1.0F);
renderer.renderFaceXPos(block, 0, 0, 0, renderer.getBlockIconFromSideAndMetadata(block, 3, metadata));
renderer.renderFaceXPos(block, 0, 0, 0, renderer.getBlockIconFromSideAndMetadata(block, 3, meta));
tessellator.setNormal(-1.0F, 0.0F, 0.0F);
renderer.renderFaceZPos(block, 0, 0, 0, renderer.getBlockIconFromSideAndMetadata(block, 4, metadata));
renderer.renderFaceZPos(block, 0, 0, 0, renderer.getBlockIconFromSideAndMetadata(block, 4, meta));
tessellator.setNormal(1.0F, 0.0F, 0.0F);
renderer.renderFaceXNeg(block, 0, 0, 0, renderer.getBlockIconFromSideAndMetadata(block, 5, metadata));
renderer.renderFaceXNeg(block, 0, 0, 0, renderer.getBlockIconFromSideAndMetadata(block, 5, meta));

renderer.setRenderBounds(0, 0, 0, 1, 0.125D, 1);
tessellator.setNormal(0.0F, 1.0F, 0.0F);
renderer.renderFaceYPos(block, 0, 0, 0, renderer.getBlockIconFromSideAndMetadata(block, 0, metadata));

tessellator.draw();
GL11.glTranslatef(0.5F, 0.5F, 0.5F);
renderer.renderFaceYPos(block, 0, 0, 0, renderer.getBlockIconFromSideAndMetadata(block, 0, meta));
}

@Override
public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId,
RenderBlocks renderer) {
public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer) {
renderer.renderStandardBlock(block, x, y, z);

if(block.shouldSideBeRendered(renderer.blockAccess, x, y + 1, z, 1)) {
if (block.shouldSideBeRendered(renderer.blockAccess, x, y + 1, z, 1)) {
boolean prevRenderFaces = renderer.renderAllFaces;
renderer.renderAllFaces = true;
renderer.setRenderBounds(0.875D, 0.125D, 0.125D, 0.125D, 1, 0.875D);
Expand Down Expand Up @@ -93,15 +81,4 @@ public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block b

return true;
}

@Override
public boolean shouldRender3DInInventory(int modelId) {
return true;
}

@Override
public int getRenderId() {
return RenderIDs.COMPOSTER;
}

}
Loading

0 comments on commit 7131200

Please sign in to comment.