[1.6.4]Corpse Mod

61
0
Суть мода заключается в появлении трупа после смерти игрока, в трупе будут находится все ресурсы что были в игроке, соответственно вещи не выпадают. Сам труп отрывается кнопкой F и является, как бы сундуком в Gui из которого можно забрать ресурсы. Есть мод похожий, под названием lootable bodies, но он на 1.7.10 и не совсем то что я хочу реализовать. Так же хотелось бы добавить аддон для Custom Npcs, что бы и у NPC были такие трупы при смерти, а их лут лежал в трупах. Самая большая проблема в том что задумка есть, а знаний маловато. Я думаю что нужно реализовать отмену дропа и спавн entity в evente, кто может помогите.
 
1,137
5
3
Я уже пробовал, но вышла трабла в будущей синхронизации(утекала куча ресурсов). Эвент, вроде, - PlayerDropsEvent
 
61
0
Да ивент это хорошо но я не могу заспавнить Entity при смерти и не могу отменить дроп
 

timaxa007

Модератор
5,831
409
672
Это для 1.7.10 рабочий вариант:
Код:
@SubscribeEvent
public void dropCrops(LivingDropsEvent event) {
    EntityLivingBase to = event.entityLiving;
    World world = event.entityLiving.worldObj;
    EntityCorpse corpse = new EntityCorpse(world);
    corpse.setPosition(to.posX, to.posY, to.posZ);
    corpse.setDrops(event.drops);
    world.spawnEntityInWorld(corpse);
    event.setCanceled(true);
}
@SubscribeEvent на @ForgeSubscribe.
Так-же надо зарегистрировать эвент.
Так-же надо зарегистрировать твоего Entity, у меня он EntityCorpse.
Код:
corpse.setDrops(event.drops);
Это свой метод, у меня он выполнен вот так:
Код:
public void setDrops(ArrayList<EntityItem> drops) {
    inventory = new InventoryBasic("InventoryEntityCorpse", false, drops.size());
    for (int i = 0; i < drops.size(); ++i) {
        EntityItem entity_item = drops.get(i);
        if (entity_item.getEntityItem() != null) {
            inventory.setInventorySlotContents(i, entity_item.getEntityItem());
        }
    }
}
Переменную inventory создавай как хочешь, я сделал по своему. В onUpdate твоего Entity можешь сделать проверку, на то что инвентарь твоего Entity пусть, то этот Entity setDead(). Так-же нужно будет сохранять и загружать инвентарь в методах writeEntityToNBT и readEntityFromNBT.
 
61
0
А сам EntityCorpse наследует TileEntity?
[merge_posts_bbcode]Добавлено: 23.06.2016 17:59:14[/merge_posts_bbcode]

И как привязать обычный Entity и Render
 
Сверху