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; } } }