diff --git a/src/main/java/me/duquee/createutilities/blocks/voidtypes/tank/VoidTankRenderer.java b/src/main/java/me/duquee/createutilities/blocks/voidtypes/tank/VoidTankRenderer.java index d95402a..c33f44f 100644 --- a/src/main/java/me/duquee/createutilities/blocks/voidtypes/tank/VoidTankRenderer.java +++ b/src/main/java/me/duquee/createutilities/blocks/voidtypes/tank/VoidTankRenderer.java @@ -1,7 +1,7 @@ package me.duquee.createutilities.blocks.voidtypes.tank; - +//a way fuck the bug import com.mojang.blaze3d.vertex.PoseStack; -import com.simibubi.create.foundation.blockEntity.renderer.SafeBlockEntityRenderer; +import com.simibubi.create.foundation.blockEntity.renderer.SmartBlockEntityRenderer; import com.simibubi.create.foundation.fluid.FluidRenderer; import me.duquee.createutilities.blocks.voidtypes.VoidTileRenderer; import net.minecraft.client.model.SkullModel; @@ -12,31 +12,53 @@ import net.minecraft.core.Direction; import net.minecraftforge.fluids.capability.templates.FluidTank; -public class VoidTankRenderer extends SafeBlockEntityRenderer implements VoidTileRenderer { +public class VoidTankRenderer + extends SmartBlockEntityRenderer + implements VoidTileRenderer { private final SkullModelBase skullModelBase; public VoidTankRenderer(BlockEntityRendererProvider.Context context) { + super(context); skullModelBase = new SkullModel(context.getModelSet().bakeLayer(ModelLayers.PLAYER_HEAD)); } @Override - protected void renderSafe(VoidTankTileEntity te, float partialTicks, PoseStack ms, MultiBufferSource buffer, int light, int overlay) { + protected void renderSafe(VoidTankTileEntity te, float partialTicks, + PoseStack ms, MultiBufferSource buffer, + int light, int overlay) { + super.renderSafe(te, partialTicks, ms, buffer, light, overlay); renderVoid(te, partialTicks, ms, buffer, light, overlay); - FluidTank tank = te.getFluidStorage(); if (!te.isClosed() && !tank.isEmpty()) { - FluidRenderer.renderFluidBox( - tank.getFluid().getFluid(), tank.getFluidAmount(), - .125F, .25F, .125F, .875F, .25F + 0.5F * tank.getFluidAmount()/tank.getCapacity(), .875F, - buffer, ms, light, false, true, tank.getFluid().getTag() + float capacity = tank.getCapacity(); + float amount = tank.getFluidAmount(); + float progress = amount / capacity; + float radius = 0.375f; + for (Direction dir : Direction.Plane.HORIZONTAL) { + FluidRenderer.renderFluidStream( + tank.getFluid(), + dir, + radius, + progress, + false, + buffer, + ms, + light + ); + } + + FluidRenderer.renderFluidStream( + tank.getFluid(), + Direction.UP, + radius, + progress, + false, + buffer, + ms, + light ); } - /*FluidRenderer.renderFluidBox( - tank.getFluid(), - .125F, .25F, .125F, .875F, .25F + 0.5F * tank.getFluidAmount()/tank.getCapacity(), .875F, - buffer, ms, light, false, false - );*/ } @Override @@ -51,11 +73,11 @@ public boolean shouldRenderFrame(VoidTankTileEntity te, Direction direction) { @Override public float getFrameWidth() { - return .75F; + return 0.75f; } @Override public float getFrameOffset(Direction direction) { - return direction.getAxis() == Direction.Axis.Y ? .251F : .124F; + return direction.getAxis() == Direction.Axis.Y ? 0.251f : 0.124f; } }