Unarmed.java 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. package com.gmail.nossr50.skills.unarmed;
  2. import com.gmail.nossr50.config.Config;
  3. import org.bukkit.entity.Item;
  4. import org.bukkit.inventory.ItemStack;
  5. import org.bukkit.inventory.PlayerInventory;
  6. public class Unarmed {
  7. public static boolean blockCrackerSmoothBrick = Config.getInstance().getUnarmedBlockCrackerSmoothbrickToCracked();
  8. public static double berserkDamageModifier = 1.5;
  9. public static boolean handleItemPickup(PlayerInventory inventory, Item drop) {
  10. ItemStack dropStack = drop.getItemStack();
  11. int firstEmpty = inventory.firstEmpty();
  12. int dropAmount = dropStack.getAmount();
  13. if (inventory.containsAtLeast(dropStack, 1)) {
  14. int nextSlot = 0;
  15. ItemStack[] items = inventory.getStorageContents();
  16. for (ItemStack itemstack : items) {
  17. if (dropStack.isSimilar(itemstack)) {
  18. int itemAmount = itemstack.getAmount();
  19. int itemMax = itemstack.getMaxStackSize();
  20. ItemStack addStack = itemstack.clone();
  21. if (dropAmount + itemAmount <= itemMax) {
  22. drop.remove();
  23. addStack.setAmount(dropAmount + itemAmount);
  24. items[nextSlot] = addStack;
  25. inventory.setStorageContents(items);
  26. return true;
  27. }
  28. addStack.setAmount(itemMax);
  29. dropAmount = dropAmount + itemAmount - itemMax;
  30. items[nextSlot] = addStack;
  31. inventory.setStorageContents(items);
  32. }
  33. if (dropAmount == 0) {
  34. drop.remove();
  35. return true;
  36. }
  37. nextSlot++;
  38. }
  39. }
  40. if (firstEmpty == inventory.getHeldItemSlot()) {
  41. int nextSlot = firstEmpty + 1;
  42. ItemStack[] items = inventory.getStorageContents();
  43. for (; nextSlot < items.length; nextSlot++) {
  44. ItemStack itemstack = items[nextSlot];
  45. if (itemstack == null) {
  46. drop.remove();
  47. dropStack.setAmount(dropAmount);
  48. items[nextSlot] = dropStack;
  49. inventory.setStorageContents(items);
  50. return true;
  51. }
  52. nextSlot++;
  53. }
  54. // Inventory is full - cancel the item pickup
  55. if (dropStack.getAmount() == dropAmount) {
  56. return false;
  57. } else {
  58. drop.remove();
  59. dropStack.setAmount(dropAmount);
  60. ((Item) drop.getWorld().dropItem(drop.getLocation(), dropStack)).setPickupDelay(0);
  61. return true;
  62. }
  63. }
  64. else if (firstEmpty != -1) {
  65. drop.remove();
  66. dropStack.setAmount(dropAmount);
  67. inventory.setItem(firstEmpty, dropStack);
  68. return true;
  69. }
  70. drop.remove();
  71. return true;
  72. }
  73. }