Jump to content

GDavid

Members
  • Posts

    13
  • Joined

  • Last visited

Posts posted by GDavid

  1. This works!

    package gdavid.davidsmod.gui;
    
    import gdavid.davidsmod.DavidsMod;
    import net.minecraft.client.Minecraft;
    import net.minecraft.client.gui.FontRenderer;
    import net.minecraft.client.gui.ScaledResolution;
    import net.minecraft.client.renderer.BufferBuilder;
    import net.minecraft.client.renderer.GlStateManager;
    import net.minecraft.client.renderer.Tessellator;
    import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
    import net.minecraft.client.util.ITooltipFlag;
    import net.minecraft.entity.player.EntityPlayer;
    import net.minecraft.entity.player.InventoryPlayer;
    import net.minecraft.init.Items;
    import net.minecraft.item.ItemStack;
    import net.minecraft.util.ResourceLocation;
    import net.minecraftforge.client.event.RenderGameOverlayEvent;
    import net.minecraftforge.fml.client.config.GuiUtils;
    import net.minecraftforge.fml.common.Mod.EventBusSubscriber;
    import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
    
    @EventBusSubscriber
    public final class OverlayDataGoggles {
    	
    	@SubscribeEvent
    	public static void onRenderGui(RenderGameOverlayEvent.Pre event) {
    		Minecraft mc = Minecraft.getMinecraft();
    		FontRenderer fontRenderer = mc.fontRenderer;
    		ScaledResolution scaled = new ScaledResolution(mc);
    		int width = scaled.getScaledWidth();
    		int height = scaled.getScaledHeight();
    		EntityPlayer player = mc.player;
    		InventoryPlayer inv = player.inventory;
    		ItemStack helmet = inv.armorItemInSlot(3);
    		if (mc.gameSettings.thirdPersonView == 0 && helmet.getItem() == Items.LEATHER_HELMET) { // TODO data helmet
    			renderVignette(mc, scaled, 0, 0, 0, 1);
    			/*
    			GuiUtils.drawHoveringText(helmet, helmet.getTooltip(player, ITooltipFlag.TooltipFlags.NORMAL), width / 2, height / 2, width, height, width / 3, fontRenderer);
    			GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F);
    			GlStateManager.enableBlend();
    			*/
    		}
    	}
    	
    	private static final ResourceLocation VIGNETTE_TEX_PATH = new ResourceLocation(DavidsMod.modID + ":" + "textures/misc/vignette.png");
    	
    	private static void renderVignette(Minecraft mc, ScaledResolution scaledRes, float r, float g, float b, float a) {
    		GlStateManager.disableDepth();
    		GlStateManager.enableBlend();
    		GlStateManager.depthMask(false);
    		GlStateManager.tryBlendFuncSeparate(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA, GlStateManager.SourceFactor.ONE, GlStateManager.DestFactor.ZERO);
    		GlStateManager.color(r, g, b, a);
            GlStateManager.disableAlpha();
    		mc.getTextureManager().bindTexture(VIGNETTE_TEX_PATH);
    		Tessellator tessellator = Tessellator.getInstance();
    		BufferBuilder bufferbuilder = tessellator.getBuffer();
    		bufferbuilder.begin(7, DefaultVertexFormats.POSITION_TEX);
    		bufferbuilder.pos(0.0D, (double)scaledRes.getScaledHeight(), -90.0D).tex(0.0D, 1.0D).endVertex();
    		bufferbuilder.pos((double)scaledRes.getScaledWidth(), (double)scaledRes.getScaledHeight(), -90.0D).tex(1.0D, 1.0D).endVertex();
    		bufferbuilder.pos((double)scaledRes.getScaledWidth(), 0.0D, -90.0D).tex(1.0D, 0.0D).endVertex();
    		bufferbuilder.pos(0.0D, 0.0D, -90.0D).tex(0.0D, 0.0D).endVertex();
    		tessellator.draw();
    		GlStateManager.depthMask(true);
    		GlStateManager.enableDepth();
            GlStateManager.enableAlpha();
    		GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F);
    	}
    	
    }

    Only that I need to make the texture more transparent. If I make it too transparent, everything turns black. ?? I need a better solution.

    How can I make it render below the HUD, so it doesn't cover the hotbar, chat and such?

    EDIT: I had to move the event handler out of the class so server won't crash.

  2. Ok, this is closer to what I want, but still not good.

    Now transparency works, but from one point, it's too dark. It shouldn't be that dark.

    code:

    package gdavid.davidsmod.gui;
    
    import gdavid.davidsmod.DavidsMod;
    import net.minecraft.client.Minecraft;
    import net.minecraft.client.gui.FontRenderer;
    import net.minecraft.client.gui.ScaledResolution;
    import net.minecraft.client.renderer.BufferBuilder;
    import net.minecraft.client.renderer.GlStateManager;
    import net.minecraft.client.renderer.Tessellator;
    import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
    import net.minecraft.client.util.ITooltipFlag;
    import net.minecraft.entity.player.EntityPlayer;
    import net.minecraft.entity.player.InventoryPlayer;
    import net.minecraft.init.Items;
    import net.minecraft.item.ItemStack;
    import net.minecraft.util.ResourceLocation;
    import net.minecraftforge.client.event.RenderGameOverlayEvent;
    import net.minecraftforge.fml.client.config.GuiUtils;
    import net.minecraftforge.fml.common.Mod.EventBusSubscriber;
    import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
    
    @EventBusSubscriber
    public final class OverlayDataGoggles {
    	
    	@SubscribeEvent
    	public static void onRenderGui(RenderGameOverlayEvent.Pre event) {
    		Minecraft mc = Minecraft.getMinecraft();
    		FontRenderer fontRenderer = mc.fontRenderer;
    		ScaledResolution scaled = new ScaledResolution(mc);
    		int width = scaled.getScaledWidth();
    		int height = scaled.getScaledHeight();
    		EntityPlayer player = mc.player;
    		InventoryPlayer inv = player.inventory;
    		ItemStack helmet = inv.armorItemInSlot(3);
    		if (mc.gameSettings.thirdPersonView == 0 && helmet.getItem() == Items.LEATHER_HELMET) { // TODO data helmet
    			renderVignette(mc, scaled, 0, 0, 0, 1);
    			/*
    			GuiUtils.drawHoveringText(helmet, helmet.getTooltip(player, ITooltipFlag.TooltipFlags.NORMAL), width / 2, height / 2, width, height, width / 3, fontRenderer);
    			GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F);
    			GlStateManager.enableBlend();
    			*/
    		}
    	}
    	
    	private static final ResourceLocation VIGNETTE_TEX_PATH = new ResourceLocation(DavidsMod.modID + ":" + "textures/misc/vignette.png");
    	
    	private static void renderVignette(Minecraft mc, ScaledResolution scaledRes, float r, float g, float b, float a) {
    		GlStateManager.disableDepth();
    		GlStateManager.enableBlend();
    		GlStateManager.depthMask(false);
    		GlStateManager.tryBlendFuncSeparate(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA, GlStateManager.SourceFactor.ONE, GlStateManager.DestFactor.ZERO);
    		GlStateManager.color(r, g, b, a);
    		mc.getTextureManager().bindTexture(VIGNETTE_TEX_PATH);
    		Tessellator tessellator = Tessellator.getInstance();
    		BufferBuilder bufferbuilder = tessellator.getBuffer();
    		bufferbuilder.begin(7, DefaultVertexFormats.POSITION_TEX);
    		bufferbuilder.pos(0.0D, (double)scaledRes.getScaledHeight(), -90.0D).tex(0.0D, 1.0D).endVertex();
    		bufferbuilder.pos((double)scaledRes.getScaledWidth(), (double)scaledRes.getScaledHeight(), -90.0D).tex(1.0D, 1.0D).endVertex();
    		bufferbuilder.pos((double)scaledRes.getScaledWidth(), 0.0D, -90.0D).tex(1.0D, 0.0D).endVertex();
    		bufferbuilder.pos(0.0D, 0.0D, -90.0D).tex(0.0D, 0.0D).endVertex();
    		tessellator.draw();
    		GlStateManager.depthMask(true);
    		GlStateManager.enableDepth();
    		GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F);
    		GlStateManager.tryBlendFuncSeparate(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA, GlStateManager.SourceFactor.ONE, GlStateManager.DestFactor.ZERO);
    	}
    	
    }

    Also, how can I make it render below the HUD, so it doesn't cover the hotbar, chat and such?

  3. The tooltip is working now.

    The alpha doesn't apply for some reason, it tints the entire screen regardless texture alpha.

    code:

    package gdavid.davidsmod.gui;
    
    import gdavid.davidsmod.DavidsMod;
    import net.minecraft.client.Minecraft;
    import net.minecraft.client.gui.FontRenderer;
    import net.minecraft.client.gui.ScaledResolution;
    import net.minecraft.client.renderer.BufferBuilder;
    import net.minecraft.client.renderer.GlStateManager;
    import net.minecraft.client.renderer.Tessellator;
    import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
    import net.minecraft.client.util.ITooltipFlag;
    import net.minecraft.entity.player.EntityPlayer;
    import net.minecraft.entity.player.InventoryPlayer;
    import net.minecraft.init.Items;
    import net.minecraft.item.ItemStack;
    import net.minecraft.util.ResourceLocation;
    import net.minecraftforge.client.event.RenderGameOverlayEvent;
    import net.minecraftforge.fml.client.config.GuiUtils;
    import net.minecraftforge.fml.common.Mod.EventBusSubscriber;
    import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
    
    @EventBusSubscriber
    public final class OverlayDataGoggles {
    	
    	@SubscribeEvent
    	public static void onRenderGui(RenderGameOverlayEvent.Pre event) {
    		Minecraft mc = Minecraft.getMinecraft();
    		FontRenderer fontRenderer = mc.fontRenderer;
    		ScaledResolution scaled = new ScaledResolution(mc);
    		int width = scaled.getScaledWidth();
    		int height = scaled.getScaledHeight();
    		EntityPlayer player = mc.player;
    		InventoryPlayer inv = player.inventory;
    		ItemStack helmet = inv.armorItemInSlot(3);
    		if (mc.gameSettings.thirdPersonView == 0 && helmet.getItem() == Items.LEATHER_HELMET) { // TODO data helmet
    			renderVignette(mc, scaled, 0, 0, 0);
    			GuiUtils.drawHoveringText(helmet, helmet.getTooltip(player, ITooltipFlag.TooltipFlags.NORMAL), width / 2, height / 2, width, height, width / 3, fontRenderer);
    			GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F);
    			GlStateManager.enableBlend();
    		}
    	}
    	
    	private static final ResourceLocation VIGNETTE_TEX_PATH = new ResourceLocation(DavidsMod.modID + ":" + "textures/misc/vignette.png");
    	
    	private static void renderVignette(Minecraft mc, ScaledResolution scaledRes, float r, float g, float b) {
    		GlStateManager.disableDepth();
    		GlStateManager.enableBlend();
    		GlStateManager.depthMask(false);
    		GlStateManager.tryBlendFuncSeparate(GlStateManager.SourceFactor.ZERO, GlStateManager.DestFactor.SRC_COLOR, GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA);
    		GlStateManager.color(r, g, b, 1.0f);
    		mc.getTextureManager().bindTexture(VIGNETTE_TEX_PATH);
    		Tessellator tessellator = Tessellator.getInstance();
    		BufferBuilder bufferbuilder = tessellator.getBuffer();
    		bufferbuilder.begin(7, DefaultVertexFormats.POSITION_TEX);
    		bufferbuilder.pos(0.0D, (double)scaledRes.getScaledHeight(), -90.0D).tex(0.0D, 1.0D).endVertex();
    		bufferbuilder.pos((double)scaledRes.getScaledWidth(), (double)scaledRes.getScaledHeight(), -90.0D).tex(1.0D, 1.0D).endVertex();
    		bufferbuilder.pos((double)scaledRes.getScaledWidth(), 0.0D, -90.0D).tex(1.0D, 0.0D).endVertex();
    		bufferbuilder.pos(0.0D, 0.0D, -90.0D).tex(0.0D, 0.0D).endVertex();
    		tessellator.draw();
    		GlStateManager.depthMask(true);
    		GlStateManager.enableDepth();
    		GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F);
    		GlStateManager.tryBlendFuncSeparate(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA, GlStateManager.SourceFactor.ONE, GlStateManager.DestFactor.ZERO);
    	}
    	
    }

     

  4. package gdavid.davidsmod.gui;
    
    import java.util.ArrayList;
    
    import gdavid.davidsmod.DavidsMod;
    import net.minecraft.client.Minecraft;
    import net.minecraft.client.gui.FontRenderer;
    import net.minecraft.client.gui.ScaledResolution;
    import net.minecraft.client.renderer.BufferBuilder;
    import net.minecraft.client.renderer.GlStateManager;
    import net.minecraft.client.renderer.Tessellator;
    import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
    import net.minecraft.entity.player.EntityPlayer;
    import net.minecraft.entity.player.InventoryPlayer;
    import net.minecraft.init.Items;
    import net.minecraft.item.ItemStack;
    import net.minecraft.util.ResourceLocation;
    import net.minecraftforge.client.event.RenderGameOverlayEvent;
    import net.minecraftforge.fml.client.config.GuiUtils;
    import net.minecraftforge.fml.common.Mod.EventBusSubscriber;
    import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
    
    @EventBusSubscriber
    public final class OverlayDataGoggles {
    	
    	@SubscribeEvent
    	public static void onRenderGui(RenderGameOverlayEvent.Pre event) {
    		Minecraft mc = Minecraft.getMinecraft();
    		FontRenderer fontRenderer = mc.fontRenderer;
    		ScaledResolution scaled = new ScaledResolution(mc);
    		int width = scaled.getScaledWidth();
    		int height = scaled.getScaledHeight();
    		EntityPlayer player = mc.player;
    		InventoryPlayer inv = player.inventory;
    		ItemStack helmet = inv.armorItemInSlot(3);
    		if (mc.gameSettings.thirdPersonView == 0 && helmet.getItem() == Items.LEATHER_HELMET) { // TODO data helmet
    			renderVignette(mc, scaled, 0, 1, 1);
    			GuiUtils.drawHoveringText(helmet, new ArrayList<String>(), width / 2, height / 2, width, height, width / 3, fontRenderer);
    			GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F);
    		}
    	}
    	
    	private static final ResourceLocation VIGNETTE_TEX_PATH = new ResourceLocation(DavidsMod.modID + ":" + "textures/misc/vignette.png");
    	
    	private static void renderVignette(Minecraft mc, ScaledResolution scaledRes, float r, float g, float b) {
    		GlStateManager.disableDepth();
    		GlStateManager.enableBlend();
    		GlStateManager.depthMask(false);
    		GlStateManager.tryBlendFuncSeparate(GlStateManager.SourceFactor.ZERO, GlStateManager.DestFactor.ONE_MINUS_SRC_COLOR, GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA);
    		GlStateManager.color(r, g, b, 1.0f);
    		mc.getTextureManager().bindTexture(VIGNETTE_TEX_PATH);
    		Tessellator tessellator = Tessellator.getInstance();
    		BufferBuilder bufferbuilder = tessellator.getBuffer();
    		bufferbuilder.begin(7, DefaultVertexFormats.POSITION_TEX);
    		bufferbuilder.pos(0.0D, (double)scaledRes.getScaledHeight(), -90.0D).tex(0.0D, 1.0D).endVertex();
    		bufferbuilder.pos((double)scaledRes.getScaledWidth(), (double)scaledRes.getScaledHeight(), -90.0D).tex(1.0D, 1.0D).endVertex();
    		bufferbuilder.pos((double)scaledRes.getScaledWidth(), 0.0D, -90.0D).tex(1.0D, 0.0D).endVertex();
    		bufferbuilder.pos(0.0D, 0.0D, -90.0D).tex(0.0D, 0.0D).endVertex();
    		tessellator.draw();
    		GlStateManager.depthMask(true);
    		GlStateManager.disableBlend();
    		GlStateManager.enableDepth();
    		GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F);
    		GlStateManager.tryBlendFuncSeparate(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA, GlStateManager.SourceFactor.ONE, GlStateManager.DestFactor.ZERO);
    	}
    	
    }

     

  5. Changed it to

    package gdavid.davidsmod.gui;
    
    import gdavid.davidsmod.DavidsMod;
    import net.minecraft.client.Minecraft;
    import net.minecraft.client.gui.FontRenderer;
    import net.minecraft.client.gui.GuiScreen;
    import net.minecraft.client.gui.ScaledResolution;
    import net.minecraft.client.renderer.BufferBuilder;
    import net.minecraft.client.renderer.GlStateManager;
    import net.minecraft.client.renderer.Tessellator;
    import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
    import net.minecraft.entity.player.EntityPlayer;
    import net.minecraft.entity.player.InventoryPlayer;
    import net.minecraft.init.Items;
    import net.minecraft.item.ItemStack;
    import net.minecraft.util.NonNullList;
    import net.minecraft.util.ResourceLocation;
    import net.minecraftforge.client.event.RenderGameOverlayEvent;
    import net.minecraftforge.fml.common.Mod.EventBusSubscriber;
    import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
    
    @EventBusSubscriber
    public final class OverlayDataGoggles {
    	
    	@SubscribeEvent
    	public static void onRenderGui(RenderGameOverlayEvent.Pre event) {
    		Minecraft mc = Minecraft.getMinecraft();
    		FontRenderer fontRenderer = mc.fontRenderer;
    		ScaledResolution scaled = new ScaledResolution(mc);
    		int width = scaled.getScaledWidth();
    		int height = scaled.getScaledHeight();
    		EntityPlayer player = mc.player;
    		InventoryPlayer inv = player.inventory;
    		ItemStack helmet = inv.armorItemInSlot(3);
    		if (mc.gameSettings.thirdPersonView == 0 && helmet.getItem() == Items.LEATHER_HELMET) { // TODO data helmet
    			renderVignette(mc, scaled, 0, 1, 1);
    		}
    	}
    	
    	private static final ResourceLocation VIGNETTE_TEX_PATH = new ResourceLocation(DavidsMod.modID + ":" + "textures/misc/vignette.png");
    	
    	private static void renderVignette(Minecraft mc, ScaledResolution scaledRes, float r, float g, float b) {
    		GlStateManager.disableDepth();
    		GlStateManager.depthMask(false);
    		GlStateManager.tryBlendFuncSeparate(GlStateManager.SourceFactor.SRC_COLOR, GlStateManager.DestFactor.ONE_MINUS_SRC_COLOR, GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA);
    		GlStateManager.color(r, g, b, 1.0f);
    		mc.getTextureManager().bindTexture(VIGNETTE_TEX_PATH);
    		Tessellator tessellator = Tessellator.getInstance();
    		BufferBuilder bufferbuilder = tessellator.getBuffer();
    		bufferbuilder.begin(7, DefaultVertexFormats.POSITION_TEX);
    		bufferbuilder.pos(0.0D, (double)scaledRes.getScaledHeight(), -90.0D).tex(0.0D, 1.0D).endVertex();
    		bufferbuilder.pos((double)scaledRes.getScaledWidth(), (double)scaledRes.getScaledHeight(), -90.0D).tex(1.0D, 1.0D).endVertex();
    		bufferbuilder.pos((double)scaledRes.getScaledWidth(), 0.0D, -90.0D).tex(1.0D, 0.0D).endVertex();
    		bufferbuilder.pos(0.0D, 0.0D, -90.0D).tex(0.0D, 0.0D).endVertex();
    		tessellator.draw();
    		GlStateManager.depthMask(true);
    		GlStateManager.enableDepth();
    		GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F);
    		GlStateManager.tryBlendFuncSeparate(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA, GlStateManager.SourceFactor.ONE, GlStateManager.DestFactor.ZERO);
    	}
    	
    }

    Still not transparent. Actually everything painted to the chosen color. Also, changed the texture to white + transparency.

     

    Quote

    Why are you extending GuiScreen anyway? There is no reason to do so.

    I wanted to display item tooltips. Is there a way that works in HUD?

     

    Quote

    Why are you disabling blending? The rest of the HUD rendering expects it to be enabled. And if you are disabling it there is no logic in setting the blend function to something else afterwards.

    Same with the alpha. Don't disable it. In fact don't enable it in the first place, it is irrelevant.

    I disable and enable them because the renderVignette method is just a modified copy of the one found in GuiIngame. And the alpha is here because first I thought that might be the thing I'm missing.

  6. I want to display a custom vignette with custom color when the player has a certain item as helmet equipped.

    The problem is that when I run the render method of my gui,

    when in RenderGameOverlayEvent.Pre, nothing can be seen except the HUD,

    when in RenderGameOverlayEvent.Post, it's drawn above everything, including settings menu.

    My code:

    @EventBusSubscriber
    public class OverlayDataGoggles extends GuiScreen {
    	
    	private static OverlayDataGoggles instance = new OverlayDataGoggles();
    	
    	@SubscribeEvent
    	public static void onRenderGui(RenderGameOverlayEvent.Pre event) {
    		instance.mc = Minecraft.getMinecraft();
    		instance.fontRenderer = instance.mc.fontRenderer;
    		instance.render();
    	}
    	
    	private void render() {
    		EntityPlayer player = mc.player;
    		if (player != null) {
    			InventoryPlayer inv = player.inventory;
    			if (inv != null) {
    				NonNullList<ItemStack> armor = inv.armorInventory;
    				if (armor != null) {
    					ItemStack helmet = inv.armorItemInSlot(3);
    					if (this.mc.gameSettings.thirdPersonView == 0 && helmet.getItem() == Items.LEATHER_HELMET) { // TODO data helmet
    						ScaledResolution scaled = new ScaledResolution(mc);
    						int width = scaled.getScaledWidth();
    						int height = scaled.getScaledHeight();
    						renderVignette(scaled, 0, 1, 1);
    						renderToolTip(helmet, width / 2, height / 2);
    					}
    				}
    			}
    		}
    	}
    	
    	protected static final ResourceLocation VIGNETTE_TEX_PATH = new ResourceLocation(DavidsMod.modID + ":" + "textures/misc/vignette.png");
    	
    	protected void renderVignette(ScaledResolution scaledRes, float r, float g, float b) {
            GlStateManager.enableBlend();
            GlStateManager.enableAlpha();
    		GlStateManager.disableDepth();
    		GlStateManager.depthMask(false);
    		GlStateManager.tryBlendFuncSeparate(GlStateManager.SourceFactor.ZERO, GlStateManager.DestFactor.ONE_MINUS_SRC_COLOR, GlStateManager.SourceFactor.ONE, GlStateManager.DestFactor.ZERO);
    		GlStateManager.color(r, g, b, 1.0f);
    		this.mc.getTextureManager().bindTexture(VIGNETTE_TEX_PATH);
    		Tessellator tessellator = Tessellator.getInstance();
    		BufferBuilder bufferbuilder = tessellator.getBuffer();
    		bufferbuilder.begin(7, DefaultVertexFormats.POSITION_TEX);
    		bufferbuilder.pos(0.0D, (double)scaledRes.getScaledHeight(), -90.0D).tex(0.0D, 1.0D).endVertex();
    		bufferbuilder.pos((double)scaledRes.getScaledWidth(), (double)scaledRes.getScaledHeight(), -90.0D).tex(1.0D, 1.0D).endVertex();
    		bufferbuilder.pos((double)scaledRes.getScaledWidth(), 0.0D, -90.0D).tex(1.0D, 0.0D).endVertex();
    		bufferbuilder.pos(0.0D, 0.0D, -90.0D).tex(0.0D, 0.0D).endVertex();
    		tessellator.draw();
    		GlStateManager.depthMask(true);
            GlStateManager.disableBlend();
            GlStateManager.disableAlpha();
    		GlStateManager.enableDepth();
    		GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F);
    		GlStateManager.tryBlendFuncSeparate(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA, GlStateManager.SourceFactor.ONE, GlStateManager.DestFactor.ZERO);
    	}
    	
    }

     

  7. What i want to create is a fluid tank that can store some fluids (water and lava) but without using a tile entity.

    How it would work: There's an empty tank block for the empty tank and there are filled tank blocks for each fluid with the amount of fluid stored in metadata (the tank can hold up to 3 buckets but no millibuckets, just whole buckets). When the tank is emptied or filled when empty, it changes to the given block, otherwise it just changes it's metadata.

    The problem is that there's no way to modify the block state from the fill and drain methods of IFluidHandler, so i can't alter the state of the tank.

    How could i access and alter the blockstate from the fill and drain methods?

    Thanks in advance.

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.