51 lines
		
	
	
	
		
			2.4 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
			
		
		
	
	
			51 lines
		
	
	
	
		
			2.4 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
| package net.minecraft.client.renderer.blockentity;
 | |
| 
 | |
| import com.mojang.blaze3d.vertex.PoseStack;
 | |
| import com.mojang.math.Axis;
 | |
| import net.fabricmc.api.EnvType;
 | |
| import net.fabricmc.api.Environment;
 | |
| import net.minecraft.client.renderer.MultiBufferSource;
 | |
| import net.minecraft.client.renderer.entity.ItemEntityRenderer;
 | |
| import net.minecraft.client.renderer.entity.state.ItemClusterRenderState;
 | |
| import net.minecraft.client.renderer.item.ItemModelResolver;
 | |
| import net.minecraft.util.Mth;
 | |
| import net.minecraft.util.RandomSource;
 | |
| import net.minecraft.world.item.ItemDisplayContext;
 | |
| import net.minecraft.world.item.ItemStack;
 | |
| import net.minecraft.world.level.Level;
 | |
| import net.minecraft.world.level.block.entity.vault.VaultBlockEntity;
 | |
| import net.minecraft.world.level.block.entity.vault.VaultClientData;
 | |
| import net.minecraft.world.phys.Vec3;
 | |
| 
 | |
| @Environment(EnvType.CLIENT)
 | |
| public class VaultRenderer implements BlockEntityRenderer<VaultBlockEntity> {
 | |
| 	private final ItemModelResolver itemModelResolver;
 | |
| 	private final RandomSource random = RandomSource.create();
 | |
| 	private final ItemClusterRenderState renderState = new ItemClusterRenderState();
 | |
| 
 | |
| 	public VaultRenderer(BlockEntityRendererProvider.Context context) {
 | |
| 		this.itemModelResolver = context.getItemModelResolver();
 | |
| 	}
 | |
| 
 | |
| 	public void render(
 | |
| 		VaultBlockEntity blockEntity, float partialTick, PoseStack poseStack, MultiBufferSource bufferSource, int packedLight, int packedOverlay, Vec3 cameraPos
 | |
| 	) {
 | |
| 		if (VaultBlockEntity.Client.shouldDisplayActiveEffects(blockEntity.getSharedData())) {
 | |
| 			Level level = blockEntity.getLevel();
 | |
| 			if (level != null) {
 | |
| 				ItemStack itemStack = blockEntity.getSharedData().getDisplayItem();
 | |
| 				if (!itemStack.isEmpty()) {
 | |
| 					this.itemModelResolver.updateForTopItem(this.renderState.item, itemStack, ItemDisplayContext.GROUND, level, null, 0);
 | |
| 					this.renderState.count = ItemClusterRenderState.getRenderedAmount(itemStack.getCount());
 | |
| 					this.renderState.seed = ItemClusterRenderState.getSeedForItemStack(itemStack);
 | |
| 					VaultClientData vaultClientData = blockEntity.getClientData();
 | |
| 					poseStack.pushPose();
 | |
| 					poseStack.translate(0.5F, 0.4F, 0.5F);
 | |
| 					poseStack.mulPose(Axis.YP.rotationDegrees(Mth.rotLerp(partialTick, vaultClientData.previousSpin(), vaultClientData.currentSpin())));
 | |
| 					ItemEntityRenderer.renderMultipleFromCount(poseStack, bufferSource, packedLight, this.renderState, this.random);
 | |
| 					poseStack.popPose();
 | |
| 				}
 | |
| 			}
 | |
| 		}
 | |
| 	}
 | |
| }
 |