Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package eu.tetrabyte.contentmod.client.render;
- import java.awt.Color;
- import org.lwjgl.opengl.GL11;
- import eu.tetrabyte.contentmod.Ref;
- import eu.tetrabyte.contentmod.entity.EntityBus;
- import eu.tetrabyte.contentmod.util.shadesobjloader.OBJModel;
- import net.minecraft.client.Minecraft;
- import net.minecraft.client.gui.FontRenderer;
- import net.minecraft.client.renderer.GlStateManager;
- import net.minecraft.client.renderer.Tessellator;
- import net.minecraft.client.renderer.WorldRenderer;
- import net.minecraft.client.renderer.block.model.BakedQuad;
- import net.minecraft.client.renderer.entity.Render;
- import net.minecraft.client.renderer.entity.RenderManager;
- import net.minecraft.client.renderer.texture.TextureMap;
- import net.minecraft.client.resources.IReloadableResourceManager;
- import net.minecraft.client.resources.IResourceManager;
- import net.minecraft.client.resources.IResourceManagerReloadListener;
- import net.minecraft.client.resources.model.IBakedModel;
- import net.minecraft.util.ResourceLocation;
- import net.minecraftforge.client.model.Attributes;
- import net.minecraftforge.client.model.IModel;
- import net.minecraftforge.client.model.ModelLoader;
- import net.minecraftforge.client.model.ModelLoaderRegistry;
- import net.minecraftforge.client.model.pipeline.LightUtil;
- import net.minecraftforge.fml.common.FMLLog;
- public class RenderOlympian extends Render<EntityBus> {
- private static IBakedModel olympian = null;
- private static final ResourceLocation MRL = new ResourceLocation(Ref.MOD_ID + ":item/mayabus3.obj");
- public RenderOlympian(RenderManager renderManager) {
- super(renderManager);
- }
- public static void init() {
- IResourceManager manager = Minecraft.getMinecraft().getResourceManager();
- if (manager instanceof IReloadableResourceManager) {
- ((IReloadableResourceManager) manager).registerReloadListener(new IResourceManagerReloadListener() {
- @Override
- public void onResourceManagerReload(IResourceManager ignored) {
- olympian = null;
- }
- });
- }
- }
- @Override
- public void doRender(EntityBus entityBusIn, double x, double y, double z, float entityYaw, float partialTicks) {
- if (olympian == null) {
- FMLLog.info("Attempting to load model '%s'", MRL.toString());
- try {
- IModel olympianModel = ModelLoaderRegistry.getModel(MRL);
- if (olympianModel != null && olympianModel instanceof OBJModel) {
- FMLLog.info("Successfully obtained model '%s' from registry", MRL.toString());
- olympian = ((OBJModel) olympianModel).bake(olympianModel.getDefaultState(),
- Attributes.DEFAULT_BAKED_FORMAT, ModelLoader.defaultTextureGetter());
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- } else if (olympian != null) {
- bindTexture(TextureMap.locationBlocksTexture);
- Tessellator tessellator = Tessellator.getInstance();
- WorldRenderer buffer = tessellator.getWorldRenderer();
- GlStateManager.disableLighting();
- GlStateManager.disableRescaleNormal();
- GlStateManager.enableDepth();
- GlStateManager.depthMask(false);
- GlStateManager.enableAlpha();
- GlStateManager.depthMask(true);
- GlStateManager.enableBlend();
- GlStateManager.enableCull();
- GlStateManager.blendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
- GlStateManager.disableCull();
- GlStateManager.pushMatrix(); //PUSH
- GlStateManager.translate(x, y, z); //TRANSLATE
- GlStateManager.rotate(entityYaw, 0, 1, 0); //ROTATE
- GlStateManager.pushMatrix(); //PUSH
- GlStateManager.translate(-0.625f, 0, 1); //TRANSLATE
- buffer.begin(GL11.GL_QUADS, Attributes.DEFAULT_BAKED_FORMAT); //BUFFER
- for (BakedQuad q : olympian.getGeneralQuads()) {
- LightUtil.renderQuadColor(buffer, q, 0xFFFFFFFF);
- }
- tessellator.draw(); //RENDER
- GlStateManager.popMatrix(); //POP
- GlStateManager.popMatrix(); //POP
- GlStateManager.pushMatrix(); //PUSH
- FontRenderer fontrenderer = Minecraft.getMinecraft().fontRendererObj;
- float textSize = 1.0f / 64f * 1.25f;
- GlStateManager.translate(x + 0.0625, y + 3.5625, z + 1 - 0.06);
- GlStateManager.scale(textSize, -textSize, textSize);
- GL11.glNormal3f(0.0F, 0.0F, 1.0F * textSize);
- GlStateManager.depthMask(false);
- // Below is for rendering the sign text, cant be arsed to fix rotation yet. Ignore it
- String rsUpper = "";
- String rsLower = "";
- String rsLeft = "M";
- String rsRight = "1";
- GlStateManager.rotate(entityYaw, 0, 1, 0);
- if (rsUpper != null && rsUpper != "") {
- if (rsUpper.length() >= 7) {
- rsUpper = rsUpper.substring(0, 7);
- }
- fontrenderer.drawString(rsUpper, 1, 1, 0xB2FF00);
- }
- GlStateManager.translate(0.0f, 0.1875 / textSize, 0.0f);
- if (rsLower != null && rsLower != "") {
- if (rsLower.length() >= 7) {
- rsLower = rsLower.substring(0, 7);
- }
- fontrenderer.drawString(rsLower, 1, 1, 0xB2FF00);
- }
- GlStateManager.translate(1.0625f / textSize, -0.1875f / textSize, 0.0f);
- GlStateManager.scale(2.0, 2.0, 2.0);
- if (rsLeft != null && rsLeft != "") {
- if (rsLeft.length() >= 1) {
- rsLeft = rsLeft.substring(0, 1);
- }
- fontrenderer.drawString(rsLeft, 1, 1, 0xB2FF00);
- }
- GlStateManager.translate(0.125f / textSize, 0.0f, 0.0f);
- if (rsRight != null && rsRight != "") {
- if (rsRight.length() >= 1) {
- rsRight = rsRight.substring(0, 1);
- }
- fontrenderer.drawString(rsRight, 1, 1, 0xB2FF00);
- }
- GlStateManager.depthMask(true);
- GlStateManager.popMatrix(); //POP
- }
- }
- @Override
- protected ResourceLocation getEntityTexture(EntityBus entity) {
- return TextureMap.locationBlocksTexture;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment