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