mirror of
https://github.com/mcMMO-Dev/mcMMO.git
synced 2025-06-27 19:24:44 +02:00
Better handling of picking up items with unarmed.
This commit is contained in:
@ -1,5 +1,11 @@
|
||||
package com.gmail.nossr50.skills.unarmed;
|
||||
|
||||
import java.util.Iterator;
|
||||
|
||||
import org.bukkit.entity.Item;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.PlayerInventory;
|
||||
|
||||
import com.gmail.nossr50.config.AdvancedConfig;
|
||||
import com.gmail.nossr50.config.Config;
|
||||
|
||||
@ -19,4 +25,61 @@ public class Unarmed {
|
||||
public static boolean blockCrackerSmoothBrick = Config.getInstance().getUnarmedBlockCrackerSmoothbrickToCracked();
|
||||
|
||||
public static double berserkDamageModifier = 1.5;
|
||||
|
||||
public static boolean handleItemPickup(PlayerInventory inventory, Item drop) {
|
||||
ItemStack dropStack = drop.getItemStack();
|
||||
int firstEmpty = inventory.firstEmpty();
|
||||
|
||||
if (inventory.containsAtLeast(dropStack, 1)) {
|
||||
int dropAmount = dropStack.getAmount();
|
||||
int nextSlot = 0;
|
||||
|
||||
for (Iterator<ItemStack> iterator = inventory.iterator(); iterator.hasNext();) {
|
||||
ItemStack itemstack = iterator.next();
|
||||
|
||||
if (itemstack.isSimilar(dropStack)) {
|
||||
int itemAmount = itemstack.getAmount();
|
||||
int itemMax = itemstack.getMaxStackSize();
|
||||
|
||||
ItemStack addStack = itemstack.clone();
|
||||
|
||||
if (dropAmount + itemAmount <= itemMax) {
|
||||
drop.remove();
|
||||
addStack.setAmount(dropAmount + itemAmount);
|
||||
inventory.setItem(nextSlot, addStack);
|
||||
return true;
|
||||
}
|
||||
|
||||
addStack.setAmount(itemMax);
|
||||
dropAmount = dropAmount + itemAmount - itemMax;
|
||||
inventory.setItem(nextSlot, addStack);
|
||||
}
|
||||
|
||||
if (dropAmount == 0) {
|
||||
drop.remove();
|
||||
return true;
|
||||
}
|
||||
|
||||
nextSlot++;
|
||||
}
|
||||
}
|
||||
|
||||
if (firstEmpty == inventory.getHeldItemSlot()) {
|
||||
int nextSlot = firstEmpty + 1;
|
||||
|
||||
for (Iterator<ItemStack> iterator = inventory.iterator(nextSlot); iterator.hasNext();) {
|
||||
ItemStack itemstack = iterator.next();
|
||||
|
||||
if (itemstack == null) {
|
||||
drop.remove();
|
||||
inventory.setItem(nextSlot, dropStack);
|
||||
return true;
|
||||
}
|
||||
|
||||
nextSlot++;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user