Как получить определённую голову с моба?

Версия Minecraft
1.7.10
40
1
0
У меня есть класс-обработчик событий, меняющий дроп у Зомби на рандом между Алмазом, Изумрудом, Железом, Золотом и Черепом.
Всё работает, но выпадает череп скелета. Как изменить его тип на череп зомби?

Ниже код класса.

Java:
public class Events {
    
    @SubscribeEvent
    public void addDropItem(LivingDropsEvent event) {
        if (!(event.entityLiving instanceof EntityZombie)) return;
        
        Item[] itemsArray = new Item[10];
        itemsArray[0] = Items.diamond;
        itemsArray[1] = Items.emerald;
        itemsArray[2] = Items.iron_ingot;
        itemsArray[3] = Items.gold_ingot;
        itemsArray[4] = Items.skull;
        
        event.drops.clear();
        event.drops.add(new EntityItem(
                event.entityLiving.worldObj,
                event.entityLiving.posX,
                event.entityLiving.posY,
                event.entityLiving.posZ,
                new ItemStack(itemsArray[new Random().nextInt(itemsArray.length)])
                ));
    }
}
 

timaxa007

Модератор
5,831
409
672
Придётся использовать ItemStack и менять ему метадату, если тебе нужна голова игрока, то ещё и NBT добавлять нужный надо будет (смотри в класс этого черепа).
---
Метадата у зомби - 2.
 
40
1
0
Придётся использовать ItemStack и менять ему метадату, если тебе нужна голова игрока, то ещё и NBT добавлять нужный надо будет (смотри в класс этого черепа).
---
Метадата у зомби - 2.
А как изменить метадату у выпадающего черепа?
 

timaxa007

Модератор
5,831
409
672
А как изменить метадату у выпадающего черепа?
Типа так:
Java:
public class Events {

    private static final ArrayList<ItemStack> new_drop_zombie = new ArrayList<ItemStack>();
    static {
        new_drop_zombie.add(new ItemStack(Items.diamond));
        new_drop_zombie.add(new ItemStack(Items.emerald));
        new_drop_zombie.add(new ItemStack(Items.iron_ingot));
        new_drop_zombie.add(new ItemStack(Items.gold_ingot));
        new_drop_zombie.add(new ItemStack(Items.skull, 1, 2));
    }

    @SubscribeEvent
    public void addDropItem(LivingDropsEvent event) {
        if (!(event.entityLiving instanceof EntityZombie)) return;

        event.drops.clear();
        event.drops.add(new EntityItem(
                event.entityLiving.worldObj,
                event.entityLiving.posX,
                event.entityLiving.posY,
                event.entityLiving.posZ,
                new_drop_zombie.get(event.entityLiving.worldObj.rand.nextInt(new_drop_zombie.size())).copy()
                ));
    }

}
 
40
1
0
Java:
public class Events {
    
    @SubscribeEvent
    public void addDropItem(LivingDropsEvent event) {
        if (!(event.entityLiving instanceof EntityZombie)) return;
        
        ItemStack[] itemsArray = new ItemStack[5];
        itemsArray[0] = new ItemStack(Items.diamond);
        itemsArray[1] = new ItemStack(Items.emerald);
        itemsArray[2] = new ItemStack(Items.iron_ingot);
        itemsArray[3] = new ItemStack(Items.gold_ingot);
        itemsArray[4] = new ItemStack(Items.skull, 1, 2);
        
        event.drops.clear();
        event.drops.add(new EntityItem(
                event.entityLiving.worldObj,
                event.entityLiving.posX,
                event.entityLiving.posY,
                event.entityLiving.posZ,
                itemsArray[new Random().nextInt(itemsArray.length)]
                ));
    }
}

А чем этот вариант плох?
 
Сверху