Posted April 26, 20205 yr Hello, I'm currently doing a fluid tank block and now I want to render the fluid in the gui: @Override protected void drawGuiContainerBackgroundLayer(float partialTicks, int mouseX, int mouseY) { super.drawGuiContainerBackgroundLayer(partialTicks, mouseX, mouseY); int fluidStored = getFluidStoredScaled(73); Fluid fluid = fluidTank.getFluid().getFluid(); if(fluid != Fluids.EMPTY) { ResourceLocation stillLocation = fluid.getAttributes().getStillTexture(fluidTank.getFluid()); TextureAtlasSprite sprite = Minecraft.getInstance().getAtlasSpriteGetter(PlayerContainer.LOCATION_BLOCKS_TEXTURE).apply(stillLocation); ResourceLocation spriteLocation = sprite.getName(); minecraft.getTextureManager().bindTexture(new ResourceLocation(spriteLocation.getNamespace(), "textures/" + spriteLocation.getPath() + ".png")); blit(guiLeft + 80, guiTop + 7 + (73 - fluidStored), 0, 16, fluidStored, sprite); } } The result is this: (left is water and right is lava) One problem is that the color of the water is wrong and that the scale (I guess?) is wrong. It should look something like this: Edited April 26, 20205 yr by Boy132
April 26, 20205 yr I'm going mostly by memory here. If the colour is wrong (it is), then you're not applying the color attribute of the fluid (fluid.getAttributes().getColor()). Apply the colour to GlStateManager.color4f before the blit. Reset after! For the scaling, the .bindTexture call looks wrong for reasons I don't remember. I want to say it takes a TextureAtlas ResourceLocation, instead of that of a particular sprite. The getUV methods inside the blit then pull the correct texture from the atlas.
April 28, 20205 yr Author On 4/26/2020 at 11:26 PM, Ommina said: If the colour is wrong (it is), then you're not applying the color attribute of the fluid (fluid.getAttributes().getColor()). Apply the colour to GlStateManager.color4f before the blit. Reset after! Thanks, that worked! On 4/26/2020 at 11:26 PM, Ommina said: For the scaling, the .bindTexture call looks wrong for reasons I don't remember. I want to say it takes a TextureAtlas ResourceLocation, instead of that of a particular sprite. The getUV methods inside the blit then pull the correct texture from the atlas. I do bind the textureatlas resourcelocation and if I just use sprite.getName() it renders the "pink black missing texture" texture.
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.