39 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
			
		
		
	
	
			39 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
| package net.minecraft.client.renderer.entity.state;
 | |
| 
 | |
| import net.fabricmc.api.EnvType;
 | |
| import net.fabricmc.api.Environment;
 | |
| import net.minecraft.client.renderer.item.ItemModelResolver;
 | |
| import net.minecraft.client.renderer.item.ItemStackRenderState;
 | |
| import net.minecraft.world.entity.Entity;
 | |
| import net.minecraft.world.item.Item;
 | |
| import net.minecraft.world.item.ItemDisplayContext;
 | |
| import net.minecraft.world.item.ItemStack;
 | |
| 
 | |
| @Environment(EnvType.CLIENT)
 | |
| public class ItemClusterRenderState extends EntityRenderState {
 | |
| 	public final ItemStackRenderState item = new ItemStackRenderState();
 | |
| 	public int count;
 | |
| 	public int seed;
 | |
| 
 | |
| 	public void extractItemGroupRenderState(Entity entity, ItemStack stack, ItemModelResolver itemModelResolver) {
 | |
| 		itemModelResolver.updateForNonLiving(this.item, stack, ItemDisplayContext.GROUND, entity);
 | |
| 		this.count = getRenderedAmount(stack.getCount());
 | |
| 		this.seed = getSeedForItemStack(stack);
 | |
| 	}
 | |
| 
 | |
| 	public static int getSeedForItemStack(ItemStack stack) {
 | |
| 		return stack.isEmpty() ? 187 : Item.getId(stack.getItem()) + stack.getDamageValue();
 | |
| 	}
 | |
| 
 | |
| 	public static int getRenderedAmount(int count) {
 | |
| 		if (count <= 1) {
 | |
| 			return 1;
 | |
| 		} else if (count <= 16) {
 | |
| 			return 2;
 | |
| 		} else if (count <= 32) {
 | |
| 			return 3;
 | |
| 		} else {
 | |
| 			return count <= 48 ? 4 : 5;
 | |
| 		}
 | |
| 	}
 | |
| }
 |