Дроп предметов

Версия Minecraft
1.7.10
29
1
Имеется код, в котором при определенном условии дропаются все вещи с инвентаря. Проблема заключается в том, что в одиночке всё отлично работает, а на сервере дропаются визуальные предметы и остаются в инвентаре. Пробовал и с !world.isRemote, толку нет.
Код:
@SubscribeEvent
   public void onPlayerHurt(LivingHurtEvent event) {
  ...
  player.inventory.dropAllItems();
  player.inventory.markDirty();
}
 
29
1
Я отправлял пакет такого вида:
Код:
PacketHandler.INSTANCE.sendTo(new PacketDropItems(), (EntityPlayerMP)player);

Код:
public class PacketDropItems implements IMessage, IMessageHandler<PacketNoMoreItems, IMessage> {
   @SideOnly(Side.CLIENT)
   public IMessage onMessage(PacketNoMoreItems message, MessageContext ctx) {
      Minecraft.getMinecraft().thePlayer.inventory.clearInventory((Item)null, -1);

      return null;
   }

В инвентаре предметы пропадали, но при нажатии на пустые слоты, предметы появлялись. Никогда не работал с пакетами. Не думал, что что бы дропнуть предметы на сервере, придется так извращаться.
 
2,505
81
397
Дропать только на серверной стороне не пробовал?
Код:
!player.world.isRemote


Assero написал(а):
Не думал, что что бы дропнуть предметы на сервере, придется так извращаться.
Конечно не нужно. Этот ивент вылетает с обеих сторон.
 
29
1
Dahaka написал(а):
Дропать только на серверной стороне не пробовал?
Тоже самое. Вообщем сделал таким вот образом:
Код:
player.inventory.dropAllItems();
player.inventory.markDirty();
               
for(int i = 0; i < player.inventory.mainInventory.length; ++i) {
player.inventory.mainInventory[i] = null;
}

for(int i = 0; i < player.inventory.armorInventory.length; ++i) {
player.inventory.armorInventory[i] = null;
}

В итоге дроп падает, и в инвентаре всё стирается. Спасибо всем за помощь.

 
Сверху