Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package se.Matryoshika.Underworld.Content.Rendering;
- import org.lwjgl.opengl.GL11;
- import net.minecraft.client.Minecraft;
- import net.minecraft.client.renderer.GlStateManager;
- import net.minecraft.client.renderer.OpenGlHelper;
- import net.minecraft.client.renderer.RenderHelper;
- import net.minecraft.client.renderer.Tessellator;
- import net.minecraft.client.renderer.block.model.IBakedModel;
- import net.minecraft.client.renderer.block.model.ItemCameraTransforms;
- import net.minecraft.client.renderer.texture.TextureMap;
- import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
- import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
- import net.minecraft.entity.player.EntityPlayer;
- import net.minecraft.init.Blocks;
- import net.minecraft.item.ItemStack;
- import net.minecraft.util.ResourceLocation;
- import net.minecraft.world.World;
- import net.minecraftforge.client.model.IModel;
- import net.minecraftforge.client.model.ModelLoaderRegistry;
- import net.minecraftforge.common.model.TRSRTransformation;
- import net.minecraftforge.fml.relauncher.Side;
- import net.minecraftforge.fml.relauncher.SideOnly;
- import se.Matryoshika.Underworld.Underworld;
- import se.Matryoshika.Underworld.Content.Blocks.BlockMetamorphicTable;
- import se.Matryoshika.Underworld.Content.TileEntity.TileMetamorphicTable;
- @SideOnly(Side.CLIENT)
- public class TEMetamorphicTableRenderer extends TileEntitySpecialRenderer<TileMetamorphicTable> {
- private IModel model;
- private IBakedModel bakedModel;
- private IBakedModel getBakedModel() {
- if (bakedModel == null) {
- try {
- model = ModelLoaderRegistry.getModel(new ResourceLocation(Underworld.MODID, "block/Metamorphic_table"));
- } catch (Exception e) {
- throw new RuntimeException(e);
- }
- bakedModel = model.bake(TRSRTransformation.identity(), DefaultVertexFormats.ITEM,
- location -> Minecraft.getMinecraft().getTextureMapBlocks().getAtlasSprite(location.toString()));
- }
- return bakedModel;
- }
- @Override
- public void renderTileEntityAt(TileMetamorphicTable te, double x, double y, double z, float partialTicks, int destroyStage) {
- Minecraft.getMinecraft().renderEngine.bindTexture(TextureMap.LOCATION_BLOCKS_TEXTURE);
- GlStateManager.disableCull();
- GlStateManager.translate(x, y, z);
- GlStateManager.translate(0.5f, 0.5f, 0.5f);
- GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F);
- int brightness = getWorld().getCombinedLight(te.getPos(), 0);
- OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, (float) (brightness % 0x10000) / 1f, (float) (brightness / 0x10000) / 1f);
- renderBody(te);
- renderFrame(te);
- if(te.getWorld() != null)
- renderItem(te);
- GlStateManager.enableCull();
- }
- private void renderBody(TileMetamorphicTable te) {
- GlStateManager.pushMatrix();
- GlStateManager.translate(-0.5, -0.5, -0.5);
- RenderHelper.disableStandardItemLighting();
- this.bindTexture(TextureMap.LOCATION_BLOCKS_TEXTURE);
- World world = getWorld();
- GlStateManager.translate(-te.getPos().getX(), -te.getPos().getY(), -te.getPos().getZ());
- Tessellator tessellator = Tessellator.getInstance();
- tessellator.getBuffer().begin(GL11.GL_QUADS, DefaultVertexFormats.BLOCK);
- Minecraft.getMinecraft().getBlockRendererDispatcher().getBlockModelRenderer().renderModel(
- world,
- getBakedModel(),
- world.getBlockState(te.getPos()),
- te.getPos(),
- Tessellator.getInstance().getBuffer(), false);
- tessellator.draw();
- RenderHelper.enableStandardItemLighting();
- GlStateManager.popMatrix();
- }
- private void renderItem(TileMetamorphicTable te){
- BlockMetamorphicTable block = (BlockMetamorphicTable) te.getWorld().getBlockState(te.getPos()).getBlock();
- if(block.isBlocked(getWorld(), te.getPos()))
- return;
- EntityPlayer player = te.getWorld().getClosestPlayer(te.getPos().getX(), te.getPos().getY(), te.getPos().getZ(), 32, false);
- if(player != null){
- ItemStack stack = player.getHeldItemMainhand();
- if (stack != null && te.hasValidInput(stack)) {
- GlStateManager.pushMatrix();
- GlStateManager.translate(0, 0.6, 0);
- GlStateManager.scale(.35f, .35f, .35f);
- long angle = (System.currentTimeMillis() / 10) % 360;
- GlStateManager.rotate(angle, 0, 1, 0);
- GL11.glEnable(GL11.GL_BLEND);
- GL11.glBlendFunc(GL11.GL_ONE, GL11.GL_ONE);
- Minecraft.getMinecraft().getRenderItem().renderItem(te.getOutputFromInput(stack), ItemCameraTransforms.TransformType.NONE);
- GL11.glDisable(GL11.GL_BLEND);
- GlStateManager.popMatrix();
- }
- }
- }
- private void renderFrame(TileMetamorphicTable te){
- GlStateManager.pushMatrix();
- GlStateManager.translate(0, 0.1, 0);
- GlStateManager.scale(.35f, .35f, .35f);
- Minecraft.getMinecraft().getRenderItem().renderItem(new ItemStack(Blocks.END_PORTAL_FRAME), ItemCameraTransforms.TransformType.NONE);
- GlStateManager.popMatrix();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement