use of net.minecraft.client.renderer.block.model.IBakedModel in project ImmersiveEngineering by BluSunrize.
the class TileRenderSampleDrill method renderTileEntityAt.
@Override
public void renderTileEntityAt(TileEntitySampleDrill tile, double x, double y, double z, float partialTicks, int destroyStage) {
if (tile.isDummy() || !tile.getWorld().isBlockLoaded(tile.getPos(), false))
return;
final BlockRendererDispatcher blockRenderer = Minecraft.getMinecraft().getBlockRendererDispatcher();
IBlockState state = tile.getWorld().getBlockState(tile.getPos());
BlockPos blockPos = tile.getPos();
IBakedModel model = blockRenderer.getModelForState(state);
// .getModelFromBlockState(state, getWorld(), blockPos);
if (state instanceof IExtendedBlockState)
state = ((IExtendedBlockState) state).withProperty(Properties.AnimationProperty, new OBJState(Lists.newArrayList("drill"), true));
Tessellator tessellator = Tessellator.getInstance();
VertexBuffer worldRenderer = tessellator.getBuffer();
bindTexture(TextureMap.LOCATION_BLOCKS_TEXTURE);
RenderHelper.disableStandardItemLighting();
GlStateManager.blendFunc(770, 771);
GlStateManager.enableBlend();
GlStateManager.disableCull();
if (Minecraft.isAmbientOcclusionEnabled())
GlStateManager.shadeModel(7425);
else
GlStateManager.shadeModel(7424);
GlStateManager.pushMatrix();
GlStateManager.translate(x + .5, y + .5, z + .5);
// float rot = 360*tile.rotation-(!tile.canTurn||tile.rotation==0||tile.rotation-tile.prevRotation<4?0:tile.facing.getAxis()==Axis.X?-f:f);
// GlStateManager.rotate(rot, 0,0,1);
int max = IEConfig.Machines.coredrill_time;
if (tile.process > 0 && tile.process < max) {
GL11.glRotatef(((tile.process + partialTicks) * 22.5f) % 360f, 0, 1, 0);
float push = tile.process / (float) max;
if (tile.process > max / 2)
push = 1 - push;
GL11.glTranslated(0, -2.8f * push, 0);
}
worldRenderer.begin(GL11.GL_QUADS, DefaultVertexFormats.BLOCK);
worldRenderer.setTranslation(-.5 - blockPos.getX(), -.5 - blockPos.getY(), -.5 - blockPos.getZ());
worldRenderer.color(255, 255, 255, 255);
blockRenderer.getBlockModelRenderer().renderModel(tile.getWorld(), model, state, tile.getPos(), worldRenderer, true);
worldRenderer.setTranslation(0.0D, 0.0D, 0.0D);
tessellator.draw();
GlStateManager.popMatrix();
RenderHelper.enableStandardItemLighting();
}
use of net.minecraft.client.renderer.block.model.IBakedModel in project ImmersiveEngineering by BluSunrize.
the class TileRenderBucketWheel method renderTileEntityAt.
@Override
public void renderTileEntityAt(TileEntityBucketWheel tile, double x, double y, double z, float f, int destroyStage) {
if (!tile.formed || !tile.getWorld().isBlockLoaded(tile.getPos(), false) || tile.isDummy())
return;
final BlockRendererDispatcher blockRenderer = Minecraft.getMinecraft().getBlockRendererDispatcher();
IBlockState state = tile.getWorld().getBlockState(tile.getPos());
if (state.getBlock() != IEContent.blockMetalMultiblock)
return;
if (model == null) {
state = state.withProperty(IEProperties.DYNAMICRENDER, true);
model = blockRenderer.getModelForState(state);
}
OBJState objState = null;
HashMap<String, String> texMap = new HashMap<>();
if (state instanceof IExtendedBlockState) {
ArrayList<String> list = Lists.newArrayList("bucketWheel");
synchronized (tile.digStacks) {
for (int i = 0; i < tile.digStacks.length; i++) if (tile.digStacks[i] != null) {
list.add("dig" + i);
Block b = Block.getBlockFromItem(tile.digStacks[i].getItem());
IBlockState digState = b != null ? b.getStateFromMeta(tile.digStacks[i].getMetadata()) : Blocks.STONE.getDefaultState();
IBakedModel digModel = Minecraft.getMinecraft().getBlockRendererDispatcher().getBlockModelShapes().getModelForState(digState);
if (digModel != null && digModel.getParticleTexture() != null)
texMap.put("dig" + i, digModel.getParticleTexture().getIconName());
}
}
objState = new OBJState(list, true);
}
Tessellator tessellator = Tessellator.getInstance();
GlStateManager.pushMatrix();
GlStateManager.translate(x + .5, y + .5, z + .5);
GlStateManager.blendFunc(770, 771);
GlStateManager.enableBlend();
GlStateManager.disableCull();
EnumFacing facing = tile.facing;
if (tile.mirrored) {
GlStateManager.scale(facing.getAxis() == Axis.X ? -1 : 1, 1, facing.getAxis() == Axis.Z ? -1 : 1);
GlStateManager.disableCull();
}
float dir = tile.facing == EnumFacing.SOUTH ? 90 : tile.facing == EnumFacing.NORTH ? -90 : tile.facing == EnumFacing.EAST ? 180 : 0;
GlStateManager.rotate(dir, 0, 1, 0);
float rot = tile.rotation + (float) (tile.active ? IEConfig.Machines.excavator_speed * f : 0);
GlStateManager.rotate(rot, 1, 0, 0);
RenderHelper.disableStandardItemLighting();
Minecraft.getMinecraft().renderEngine.bindTexture(TextureMap.LOCATION_BLOCKS_TEXTURE);
VertexBuffer worldRenderer = tessellator.getBuffer();
worldRenderer.begin(GL11.GL_QUADS, DefaultVertexFormats.BLOCK);
worldRenderer.setTranslation(-.5, -.5, -.5);
List<BakedQuad> quads;
if (model instanceof IESmartObjModel)
quads = ((IESmartObjModel) model).getQuads(state, null, 0, objState, texMap, true);
else
quads = model.getQuads(state, null, 0);
ClientUtils.renderModelTESR(quads, worldRenderer, tile.getWorld().getCombinedLight(tile.getPos(), 0));
worldRenderer.setTranslation(0, 0, 0);
tessellator.draw();
GlStateManager.popMatrix();
RenderHelper.enableStandardItemLighting();
GlStateManager.disableBlend();
GlStateManager.enableCull();
if (tile.mirrored) {
GlStateManager.enableCull();
}
}
use of net.minecraft.client.renderer.block.model.IBakedModel in project ImmersiveEngineering by BluSunrize.
the class TileRenderDieselGenerator method renderTileEntityAt.
@Override
public void renderTileEntityAt(TileEntityDieselGenerator te, double x, double y, double z, float partialTicks, int destroyStage) {
if (!te.formed || te.isDummy() || !te.getWorld().isBlockLoaded(te.getPos(), false))
return;
final BlockRendererDispatcher blockRenderer = Minecraft.getMinecraft().getBlockRendererDispatcher();
BlockPos blockPos = te.getPos();
IBlockState state = getWorld().getBlockState(blockPos);
if (state.getBlock() != IEContent.blockMetalMultiblock)
return;
state = state.getBlock().getActualState(state, getWorld(), blockPos);
state = state.withProperty(IEProperties.DYNAMICRENDER, true);
IBakedModel model = blockRenderer.getBlockModelShapes().getModelForState(state);
// boolean b = te.getEnergyStored(null)>0 && !te.isRSDisabled() && !te.processQueue.isEmpty();
// float angle = te.animation_barrelRotation+(b?18*partialTicks:0);
Tessellator tessellator = Tessellator.getInstance();
VertexBuffer worldRenderer = tessellator.getBuffer();
ClientUtils.bindAtlas();
GlStateManager.pushMatrix();
GlStateManager.translate(x, y, z);
GlStateManager.translate(.5, .6875, .5);
RenderHelper.disableStandardItemLighting();
GlStateManager.blendFunc(770, 771);
GlStateManager.enableBlend();
GlStateManager.disableCull();
if (Minecraft.isAmbientOcclusionEnabled())
GlStateManager.shadeModel(7425);
else
GlStateManager.shadeModel(7424);
// GlStateManager.translate(te.facing.getFrontOffsetX()*.25, 0, te.facing.getFrontOffsetZ()*.25);
// float angle = ClientUtils.mc().thePlayer.ticksExisted%100/100f;
// GlStateManager.rotate(angle*360, te.facing.getFrontOffsetX(), 0, te.facing.getFrontOffsetZ());
GlStateManager.rotate(te.animation_fanRotation + (te.animation_fanRotationStep * partialTicks), te.facing.getFrontOffsetX(), 0, te.facing.getFrontOffsetZ());
worldRenderer.begin(GL11.GL_QUADS, DefaultVertexFormats.BLOCK);
worldRenderer.setTranslation(-.5 - blockPos.getX(), -blockPos.getY(), -.5 - blockPos.getZ());
worldRenderer.color(255, 255, 255, 255);
blockRenderer.getBlockModelRenderer().renderModel(te.getWorld(), model, state, blockPos, worldRenderer, true);
worldRenderer.setTranslation(0.0D, 0.0D, 0.0D);
tessellator.draw();
RenderHelper.enableStandardItemLighting();
GlStateManager.popMatrix();
}
use of net.minecraft.client.renderer.block.model.IBakedModel in project ImmersiveEngineering by BluSunrize.
the class TileRenderSqueezer method renderTileEntityAt.
@Override
public void renderTileEntityAt(TileEntitySqueezer te, double x, double y, double z, float partialTicks, int destroyStage) {
if (!te.formed || te.isDummy() || !te.getWorld().isBlockLoaded(te.getPos(), false))
return;
final BlockRendererDispatcher blockRenderer = Minecraft.getMinecraft().getBlockRendererDispatcher();
BlockPos blockPos = te.getPos();
IBlockState state = getWorld().getBlockState(blockPos);
if (state.getBlock() != IEContent.blockMetalMultiblock)
return;
state = state.getBlock().getActualState(state, getWorld(), blockPos);
state = state.withProperty(IEProperties.DYNAMICRENDER, true);
IBakedModel model = blockRenderer.getBlockModelShapes().getModelForState(state);
Tessellator tessellator = Tessellator.getInstance();
VertexBuffer worldRenderer = tessellator.getBuffer();
ClientUtils.bindAtlas();
GlStateManager.pushMatrix();
GlStateManager.translate(x + .5, y + .5, z + .5);
if (te.mirrored)
GlStateManager.scale(te.facing.getFrontOffsetX() == 0 ? -1 : 1, 1, te.facing.getFrontOffsetZ() == 0 ? -1 : 1);
float piston = te.animation_piston;
//Smoothstep!
piston = piston * piston * (3.0f - 2.0f * piston);
// float shift[] = new float[te.processQueue.size()];
// for(int i=0; i<shift.length; i++)
// {
// MultiblockProcess process = te.processQueue.get(i);
// if(process==null)
// continue;
// float fProcess = process.processTick/(float)process.maxTicks;
// if(fProcess<.4375f)
// shift[i] = fProcess/.4375f*.5f;
// else if(fProcess<.5625f)
// shift[i] = .5f;
// else
// shift[i] = .5f+ (fProcess-.5625f)/.4375f*.5f;
// if(te.mold!=null)
// if(fProcess>=.4375f&&fProcess<.5625f)
// if(fProcess<.46875f)
// piston = (fProcess-.4375f)/.03125f;
// else if(fProcess<.53125f)
// piston = 1;
// else
// piston = 1 - (fProcess-.53125f)/.03125f;
// }
GlStateManager.translate(0, piston, 0);
RenderHelper.disableStandardItemLighting();
GlStateManager.blendFunc(770, 771);
GlStateManager.enableBlend();
GlStateManager.disableCull();
if (Minecraft.isAmbientOcclusionEnabled())
GlStateManager.shadeModel(7425);
else
GlStateManager.shadeModel(7424);
worldRenderer.begin(GL11.GL_QUADS, DefaultVertexFormats.BLOCK);
worldRenderer.setTranslation(-.5 - blockPos.getX(), -.5 - blockPos.getY(), -.5 - blockPos.getZ());
worldRenderer.color(255, 255, 255, 255);
blockRenderer.getBlockModelRenderer().renderModel(te.getWorld(), model, state, blockPos, worldRenderer, true);
worldRenderer.setTranslation(0.0D, 0.0D, 0.0D);
tessellator.draw();
RenderHelper.enableStandardItemLighting();
GlStateManager.popMatrix();
}
use of net.minecraft.client.renderer.block.model.IBakedModel in project Charset by CharsetMC.
the class TweakCarryRender method renderCarriedBlock.
/* @SubscribeEvent(priority = EventPriority.HIGH)
@SideOnly(Side.CLIENT)
public void onRenderGameOverlayPre(RenderGameOverlayEvent.Pre event) {
if (event.getType() == RenderGameOverlayEvent.ElementType.HOTBAR) {
Entity rve = Minecraft.getMinecraft().getRenderViewEntity();
if (!(rve instanceof EntityPlayer)) {
return;
}
EntityPlayer player = (EntityPlayer) rve;
CarryHandler carryHandler = player.getCapability(CharsetTweakBlockCarrying.CAPABILITY, null);
if (carryHandler != null && carryHandler.isCarrying()) {
event.setCanceled(true);
}
}
} */
private void renderCarriedBlock(CarryHandler carryHandler, float partialTicks) {
TextureManager textureManager = Minecraft.getMinecraft().getTextureManager();
textureManager.bindTexture(TextureMap.LOCATION_BLOCKS_TEXTURE);
textureManager.getTexture(TextureMap.LOCATION_BLOCKS_TEXTURE).setBlurMipmap(false, false);
try {
Tessellator tessellator = Tessellator.getInstance();
BufferBuilder buffer = tessellator.getBuffer();
if (carryHandler.customCarryHandler == null || !carryHandler.customCarryHandler.renderBlockCustom(partialTicks)) {
if (carryHandler.getState().getRenderType() == EnumBlockRenderType.MODEL) {
buffer.setTranslation(0, -64, 0);
buffer.begin(GL11.GL_QUADS, DefaultVertexFormats.BLOCK);
try {
IBlockState renderState = carryHandler.getState().getActualState(carryHandler.getBlockAccess(), CarryHandler.ACCESS_POS);
IBlockState renderStateExt = carryHandler.getState().getBlock().getExtendedState(renderState, carryHandler.getBlockAccess(), CarryHandler.ACCESS_POS);
BlockRendererDispatcher brd = Minecraft.getMinecraft().getBlockRendererDispatcher();
IBakedModel model = brd.getModelForState(renderState);
brd.getBlockModelRenderer().renderModelFlat(carryHandler.getBlockAccess(), model, renderStateExt, CarryHandler.ACCESS_POS, buffer, false, 0L);
} catch (Exception e) {
e.printStackTrace();
}
tessellator.draw();
buffer.setTranslation(0, 0, 0);
}
}
TileEntity tile = carryHandler.getBlockAccess().getTileEntity(CarryHandler.ACCESS_POS);
if (tile != null) {
RenderHelper.enableStandardItemLighting();
int i = carryHandler.getBlockAccess().getCombinedLight(CarryHandler.ACCESS_POS, 0);
int j = i % 65536;
int k = i / 65536;
OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, (float) j, (float) k);
GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F);
if (carryHandler.customCarryHandler == null || !carryHandler.customCarryHandler.renderTileCustom(partialTicks)) {
try {
TileEntityRendererDispatcher.instance.render(tile, 0, 0, 0, partialTicks);
} catch (Exception e) {
if (!caughtExceptionTileRenderers.contains(tile.getClass())) {
e.printStackTrace();
ModCharset.logger.warn("Future exceptions from this tile entity will be hidden.");
caughtExceptionTileRenderers.add(tile.getClass());
}
// Hack of the Year award for the Least Graceful Recovery
buffer.setTranslation(0, 0, 0);
boolean caught = false;
while (!caught) {
try {
tessellator.draw();
} catch (IllegalStateException ee) {
caught = true;
}
}
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
textureManager.bindTexture(TextureMap.LOCATION_BLOCKS_TEXTURE);
textureManager.getTexture(TextureMap.LOCATION_BLOCKS_TEXTURE).restoreLastBlurMipmap();
}
Aggregations