generated from tilera/1710mod
81 lines
3.4 KiB
Java
81 lines
3.4 KiB
Java
package dev.tilera.auracore.mixins;
|
|
|
|
import org.lwjgl.opengl.GL11;
|
|
import org.spongepowered.asm.mixin.Mixin;
|
|
import org.spongepowered.asm.mixin.Overwrite;
|
|
|
|
import java.awt.Color;
|
|
import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler;
|
|
import dev.tilera.auracore.api.CrystalColors;
|
|
import net.minecraft.block.Block;
|
|
import net.minecraft.client.Minecraft;
|
|
import net.minecraft.client.renderer.RenderBlocks;
|
|
import net.minecraft.client.renderer.Tessellator;
|
|
import net.minecraft.init.Blocks;
|
|
import net.minecraft.world.IBlockAccess;
|
|
import thaumcraft.client.renderers.block.BlockCustomOreRenderer;
|
|
import thaumcraft.client.renderers.block.BlockRenderer;
|
|
import thaumcraft.common.blocks.BlockCustomOre;
|
|
|
|
@Mixin(BlockCustomOreRenderer.class)
|
|
public abstract class MixinBlockCustomOreRenderer extends BlockRenderer implements ISimpleBlockRenderingHandler {
|
|
|
|
/**
|
|
* @author tilera
|
|
* @reason Vis, Tainted and Dull ores
|
|
*/
|
|
@Overwrite(remap = false)
|
|
public void renderInventoryBlock(Block block, int metadata, int modelID, RenderBlocks renderer) {
|
|
block.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F);
|
|
renderer.setRenderBoundsFromBlock(block);
|
|
if (metadata == 0) {
|
|
drawFaces(renderer, block, ((BlockCustomOre)block).icon[0], false);
|
|
} else if (metadata == 7) {
|
|
drawFaces(renderer, block, ((BlockCustomOre)block).icon[3], false);
|
|
} else {
|
|
drawFaces(renderer, block, ((BlockCustomOre)block).icon[1], false);
|
|
Color c = new Color(CrystalColors.getColorForOre(metadata));
|
|
float r = (float)c.getRed() / 255.0F;
|
|
float g = (float)c.getGreen() / 255.0F;
|
|
float b = (float)c.getBlue() / 255.0F;
|
|
GL11.glColor3f(r, g, b);
|
|
block.setBlockBounds(0.005F, 0.005F, 0.005F, 0.995F, 0.995F, 0.995F);
|
|
renderer.setRenderBoundsFromBlock(block);
|
|
drawFaces(renderer, block, ((BlockCustomOre)block).icon[2], false);
|
|
GL11.glColor3f(1.0F, 1.0F, 1.0F);
|
|
}
|
|
|
|
}
|
|
|
|
/**
|
|
* @author tilera
|
|
* @reason Vis, Tainted and Dull ores
|
|
*/
|
|
@Overwrite(remap = false)
|
|
public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer) {
|
|
int bb = setBrightness(world, x, y, z, block);
|
|
int metadata = world.getBlockMetadata(x, y, z);
|
|
block.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F);
|
|
renderer.setRenderBoundsFromBlock(block);
|
|
renderer.renderStandardBlock(block, x, y, z);
|
|
if (metadata != 0 && metadata != 7) {
|
|
Tessellator t = Tessellator.instance;
|
|
t.setColorOpaque_I(CrystalColors.getColorForOre(metadata));
|
|
t.setBrightness(Math.max(bb, 160));
|
|
renderAllSides(world, x, y, z, block, renderer, ((BlockCustomOre)block).icon[2], false);
|
|
if (Minecraft.getMinecraft().gameSettings.anisotropicFiltering > 1) {
|
|
block.setBlockBounds(0.005F, 0.005F, 0.005F, 0.995F, 0.995F, 0.995F);
|
|
renderer.setRenderBoundsFromBlock(block);
|
|
t.setBrightness(bb);
|
|
renderAllSides(world, x, y, z, block, renderer, Blocks.stone.getIcon(0, 0), false);
|
|
}
|
|
}
|
|
|
|
renderer.clearOverrideBlockTexture();
|
|
block.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F);
|
|
renderer.setRenderBoundsFromBlock(block);
|
|
return true;
|
|
}
|
|
|
|
}
|