2025-11-24 22:52:51 +03:00

54 lines
2.3 KiB
Java

/*
* Decompiled with CFR 0.152.
*/
package net.minecraft.client.renderer.entity;
import com.mojang.blaze3d.vertex.PoseStack;
import net.minecraft.client.model.geom.ModelLayers;
import net.minecraft.client.renderer.SubmitNodeCollector;
import net.minecraft.client.renderer.entity.AbstractMinecartRenderer;
import net.minecraft.client.renderer.entity.EntityRendererProvider;
import net.minecraft.client.renderer.entity.state.MinecartTntRenderState;
import net.minecraft.client.renderer.texture.OverlayTexture;
import net.minecraft.util.Mth;
import net.minecraft.world.entity.vehicle.MinecartTNT;
import net.minecraft.world.level.block.state.BlockState;
public class TntMinecartRenderer
extends AbstractMinecartRenderer<MinecartTNT, MinecartTntRenderState> {
public TntMinecartRenderer(EntityRendererProvider.Context context) {
super(context, ModelLayers.TNT_MINECART);
}
@Override
protected void submitMinecartContents(MinecartTntRenderState state, BlockState blockState, PoseStack poseStack, SubmitNodeCollector submitNodeCollector, int lightCoords) {
float fuse = state.fuseRemainingInTicks;
if (fuse > -1.0f && fuse < 10.0f) {
float g = 1.0f - fuse / 10.0f;
g = Mth.clamp(g, 0.0f, 1.0f);
g *= g;
g *= g;
float s = 1.0f + g * 0.3f;
poseStack.scale(s, s, s);
}
TntMinecartRenderer.submitWhiteSolidBlock(blockState, poseStack, submitNodeCollector, lightCoords, fuse > -1.0f && (int)fuse / 5 % 2 == 0, state.outlineColor);
}
public static void submitWhiteSolidBlock(BlockState blockState, PoseStack poseStack, SubmitNodeCollector submitNodeCollector, int lightCoords, boolean white, int outlineColor) {
int overlayCoords = white ? OverlayTexture.pack(OverlayTexture.u(1.0f), 10) : OverlayTexture.NO_OVERLAY;
submitNodeCollector.submitBlock(poseStack, blockState, lightCoords, overlayCoords, outlineColor);
}
@Override
public MinecartTntRenderState createRenderState() {
return new MinecartTntRenderState();
}
@Override
public void extractRenderState(MinecartTNT entity, MinecartTntRenderState state, float partialTicks) {
super.extractRenderState(entity, state, partialTicks);
state.fuseRemainingInTicks = entity.getFuse() > -1 ? (float)entity.getFuse() - partialTicks + 1.0f : -1.0f;
}
}