@SubscribeEvent(priority = EventPriority.HIGH) public void onPlayerDeath(PlayerDropsEvent event) { if(event.getEntityPlayer() == null || event.getEntityPlayer() instanceof FakePlayer || event.isCanceled()) { return; } if(event.getEntityPlayer().getEntityWorld().getGameRules().getBoolean("keepInventory")) { return; } ListIterator<EntityItem> iter = event.getDrops().listIterator(); while(iter.hasNext()) { EntityItem ei = iter.next(); ItemStack stack = ei.getItem(); // find soulbound items if(TinkerUtil.hasModifier(stack.getTagCompound(), this.identifier)) { // copy the items back into the dead players inventory event.getEntityPlayer().inventory.addItemStackToInventory(stack); iter.remove(); } } }
@SubscribeEvent public static void onPlayerDrops(PlayerDropsEvent event) { List<EntityItem> keeps = new ArrayList<>(); for(EntityItem item : event.getDrops()) { ItemStack stack = item.getItem(); if(!stack.isEmpty() && stack.hasTagCompound() && ItemNBTHelper.getBoolean(stack, TAG_KEEP, false)) keeps.add(item); } if(keeps.size() > 0) { event.getDrops().removeAll(keeps); NBTTagCompound cmp = new NBTTagCompound(); cmp.setInteger(TAG_DROP_COUNT, keeps.size()); int i = 0; for(EntityItem keep : keeps) { ItemStack stack = keep.getItem(); NBTTagCompound cmp1 = stack.writeToNBT(new NBTTagCompound()); cmp.setTag(TAG_DROP_PREFIX + i, cmp1); i++; } NBTTagCompound data = event.getEntityPlayer().getEntityData(); if(!data.hasKey(EntityPlayer.PERSISTED_NBT_TAG)) data.setTag(EntityPlayer.PERSISTED_NBT_TAG, new NBTTagCompound()); NBTTagCompound persist = data.getCompoundTag(EntityPlayer.PERSISTED_NBT_TAG); persist.setTag(TAG_PLAYER_KEPT_DROPS, cmp); } }
@SubscribeEvent(priority = EventPriority.LOWEST) public void onPlayerDrops(PlayerDropsEvent event) { List<EntityItem> drops = event.getDrops(); if(!event.isCanceled() && (enableOnPK || !(event.getSource().getTrueSource() instanceof EntityPlayer))) { EntityPlayer player = event.getEntityPlayer(); NBTTagCompound data = player.getEntityData(); NBTTagCompound persistent = data.getCompoundTag(EntityPlayer.PERSISTED_NBT_TAG); event.setCanceled(true); } else persistent.setString(TAG_LAST_TOTEM, "");
@SubscribeEvent public void playerDeath(PlayerDropsEvent event) { if (event.getEntity() instanceof EntityPlayer && !event.getEntity().world.isRemote && !event.getEntity().world.getGameRules().getBoolean("keepInventory")) { dropItemsAt(event.getEntityPlayer(),event.getDrops(),event.getEntityPlayer()); } }
public void onPlayerDrops(PlayerDropsEvent event) { final List<EntityItem> drops = event.getDrops(); if (drops.isEmpty()) return; World world = event.getEntityLiving().world; if (world.isRemote) return; if (event.getEntityLiving() instanceof EntityPlayer && !world.getGameRules().getBoolean("keepInventory")) { final EntityPlayer player = (EntityPlayer) event.getEntityLiving(); IPlayerDeathLocationCapability cap = player.getCapability(PlayerDeathLocationCapability.CAPABILITY_PLAYER_DEATH_LOCATION, null); BlockPos pos = player.getPosition().up(); event.setCanceled(true);
@SubscribeEvent public void playerDeath(PlayerDropsEvent event) { if (keepOnDeath == false) { World world = event.getEntityPlayer().getEntityWorld(); if (!world.isRemote && world.getGameRules().getBoolean("keepInventory") == false) { //so config says dont keep it on death. AND the gamerule says dont keep as well UtilPlayerInventoryFilestorage.getPlayerInventory(event.getEntityPlayer()).dropItems(event.getDrops(), event.getEntityPlayer().getPosition()); } } } }
@SubscribeEvent(priority = EventPriority.LOWEST) public static void onPlayerDeathLate(PlayerDropsEvent evt) { if (evt.getEntityPlayer() == null || evt.getEntityPlayer() instanceof FakePlayer || evt.isCanceled()) { return; } if (evt.getEntityPlayer().world.getGameRules().getBoolean("keepInventory")) { return; } Log.debug("Running onPlayerDeathLate logic for " + evt.getEntityPlayer().getName()); ListIterator<EntityItem> iter = evt.getDrops().listIterator(); while (iter.hasNext()) { EntityItem ei = iter.next(); ItemStack item = ei.getItem(); if (isSoulBound(item)) { if (addToPlayerInventory(evt.getEntityPlayer(), item)) { iter.remove(); } } } }
@SubscribeEvent (priority = EventPriority.HIGH) public void handlePlayerDropsEvent(PlayerDropsEvent event) { EntityPlayer player = event.getEntityPlayer(); if (player instanceof FakePlayer) { return; } if (player.world.getGameRules().getBoolean("keepInventory")) { return; } ListIterator<EntityItem> iter = event.getDrops().listIterator(); while (iter.hasNext()) { EntityItem drop = iter.next(); ItemStack stack = drop.getItem(); if (isSoulbound(stack)) { if (addToPlayerInventory(player, stack)) { iter.remove(); } } } // TODO: Other weirdness? Unsure. }
@SubscribeEvent(priority = EventPriority.HIGHEST) public void onPlayerDropItemsOnDeath(PlayerDropsEvent event) { if (event.getEntityPlayer() == null || event.getEntityPlayer() instanceof FakePlayer || event.isCanceled() || event.getEntityPlayer().world.getGameRules().getBoolean("keepInventory") || ModConfig.LOSE_QUEST_BOOK_ON_DEATH) { return; } Iterator<EntityItem> iter = event.getDrops().iterator(); while (iter.hasNext()) { EntityItem entityItem = iter.next(); ItemStack stack = entityItem.getItem(); if (!stack.isEmpty() && stack.getItem().equals(ModItems.book)) { event.getEntityPlayer().inventory.addItemStackToInventory(stack); iter.remove(); } } }
@SubscribeEvent(priority = EventPriority.HIGHEST) public static void onPlayerDeath(PlayerDropsEvent evt) { if (evt.getEntityPlayer() == null || evt.getEntityPlayer() instanceof FakePlayer || evt.isCanceled()) { return; if (evt.getEntityPlayer().world.getGameRules().getBoolean("keepInventory")) { return; Log.debug("Running onPlayerDeathEarly logic for " + evt.getEntityPlayer().getName()); ListIterator<EntityItem> iter = evt.getDrops().listIterator(); while (iter.hasNext()) { EntityItem ei = iter.next(); ItemStack item = ei.getItem(); if (isSoulBound(item)) { if (addToPlayerInventory(evt.getEntityPlayer(), item)) { iter.remove(); IInventory baubles = BaublesUtil.instance().getBaubles(evt.getEntityPlayer()); if (baubles != null) { for (int i = 0; i < baubles.getSizeInventory(); i++) { ItemStack item = baubles.getStackInSlot(i); if (isSoulBound(item)) { if (addToPlayerInventory(evt.getEntityPlayer(), item)) { baubles.setInventorySlotContents(i, Prep.getEmpty()); if (evt.getEntityPlayer() instanceof EntityPlayerMP) { IInventory galacticraft = GalacticraftUtil.getGCInventoryForPlayer((EntityPlayerMP) evt.getEntityPlayer()); if (galacticraft != null) { for (int i = 0; i < galacticraft.getSizeInventory(); i++) {