public EntityArrow createArrow(World world, ItemStack arrowStack, ItemStack bowStack, boolean customArrow, EntityPlayer player) { if (customArrow) { return ((IToolBow) bowStack.getItem()).createEntityArrow(world, bowStack, player); } if (isArrow(arrowStack)) { return ((ItemArrow) arrowStack.getItem()).createArrow(world, arrowStack, player); } if (isQuiver(arrowStack)) { return ((IToolQuiver) arrowStack.getItem()).createEntityArrow(world, arrowStack, player); } return ((ItemArrow) Items.ARROW).createArrow(world, arrowStack, player); }
public ItemStack findAmmo(EntityPlayer player) { ItemStack offHand = player.getHeldItemOffhand(); ItemStack mainHand = player.getHeldItemMainhand(); if (isQuiver(offHand) && !((IToolQuiver) offHand.getItem()).isEmpty(offHand, player) || isArrow(offHand)) { return offHand; } else if (isQuiver(mainHand) && !((IToolQuiver) mainHand.getItem()).isEmpty(mainHand, player) || isArrow(mainHand)) { return mainHand; } for (int i = 0; i < player.inventory.getSizeInventory(); i++) { ItemStack stack = player.inventory.getStackInSlot(i); if (isQuiver(stack) && !((IToolQuiver) stack.getItem()).isEmpty(stack, player) || isArrow(stack)) { return stack; } } return ItemStack.EMPTY; }
if (isQuiver(arrowStack) && !((IToolQuiver) arrowStack.getItem()).allowCustomArrowOverride(arrowStack)) { customArrow = false; } else { ((IToolQuiver) arrowStack.getItem()).onArrowFired(arrowStack, player); } else { arrowStack.shrink(1);