[1.6.2] Спавн итема

127
0
Здравствуйте.

Возникла проблема со спавном итема в мире.


Код:
player.dropItem(player.inventory.getCurrentItem().getItem().itemID, 1);
item.setLocationAndAngles((double)posX + 0.5D, (double)posY, (double)posZ + 0.5D, 0.0F, 0.0F);
item.setEntityItemStack(player.inventory.getCurrentItem());
w.spawnEntityInWorld(item);
player.inventory.getCurrentItem().damageItem(10000, player);


Этот код я использую. И вот суть проблемы: При условии, предмет все же спавнится, но спавнится он пустым, тобишь его невозможно подобрать, также из инвентаря он не пропадает(stackSize-- и дамаг не работают).

Чую, что все проще простого, но разобраться не могу.
 
905
5
Спавнишь-то где? Сервер, клиент?
 
127
0
Вопрос актуален. Нужно заспавнить итем при условии. Чтобы он подбирался. Также убить итемстак в руке игрока.
 
771
5
if(типа_условие){
    spawnItem
    player.getCurrentItem().stackSize--;
}
 
127
0
f1rSt1k написал(а):
if(типа_условие){
    spawnItem
    player.getCurrentItem().stackSize--;
}
... Код представлен выше, где все это я пробовал. Итем подобрать невозможно. А из инвентаря он не пропадает.
 
771
5
А один предмет подбирается?
По идее, должно спавниться два: один нормальный, другой призрачный.
 
127
0
f1rSt1k написал(а):
А один предмет подбирается?
По идее, должно спавниться два: один нормальный, другой призрачный.
Спавнится 1. И он не подбирается.
[merge_posts_bbcode]Добавлено: 18.05.2014 02:55:11[/merge_posts_bbcode]

f1rSt1k написал(а):
А один предмет подбирается?
По идее, должно спавниться два: один нормальный, другой призрачный.
Попробовал метод dropItem в самом предмете - тоже самое.
 
771
5
Ты можешь дать весь код своего энтити?
 
127
0
f1rSt1k написал(а):
Ты можешь дать весь код своего энтити?
Весь - нет. Метод update - да.
Код:
    @Override
    public void onLivingUpdate() {
        super.onLivingUpdate();
        int x = (int)this.posX;
        int y = (int)this.posY;
        int z = (int)this.posZ;
        EntityPlayer player = Minecraft.getMinecraft().thePlayer;
        
        if(isEntityAlive()){
            if(w != null && player != null){
                
                if(player.getDistanceToEntity(this) < 4){
                    System.out.println("воттаквот");
                    
                    if(player.inventory.getCurrentItem() != null
                            && player.inventory.getCurrentItem().getItem() instanceof ItemSword){
                        
                        dist = true;
                        EntityItem item = new EntityItem(w, (double)posX + 0.5D, (double)posY, (double)posZ + 0.5D, player.inventory.getCurrentItem());
                        item.delayBeforeCanPickup = 10;
                        player.entityDropItem(new ItemStack(player.inventory.getCurrentItem().getItem().itemID, 1, 0), 0);
                        capturedDrops.add(item);
                        player.inventory.getCurrentItem().damageItem(10000, player);
                        
                    }else dist = false;
                }
            }
        }
    }
 
2,955
12
Ты ку ку чтоль? Откуда серверу знать какой предмет и слот у клиентского игрока. Я бы на твоем месте делал так:
int radius = 5; //Радиус атаки, так сказать, или что там у тебя он делает.
EntityPlayer nearestPlayer = worldObj.getClosestPlayerToEntity(this, radius);
 
771
5
Ну так игрок клиенский, вот он и дропает предмет клиенский
 
127
0
f1rSt1k написал(а):
Ну так игрок клиенский, вот он и дропает предмет клиенский
- что я и пытаюсь сказать.

Сейчас я лишь разбираюсь с дропом на клиенте. Получится - перенесу на сервер.
 
Сверху