@Override public int getMetadata(@Nonnull ItemStack stack) { if (CapturedMob.containsSoul(stack)) { return 1; } return 0; }
@Override public boolean doApply(@Nonnull ItemStack input) { return CapturedMob.containsSoul(input); } };
public static @Nullable CapturedMob create(@Nullable NBTTagCompound nbt) { if (nbt != null && containsSoul(nbt)) { return new CapturedMob(nbt); } else { return null; } }
@Override @SideOnly(Side.CLIENT) public boolean hasEffect(@Nonnull ItemStack item) { return CapturedMob.containsSoul(item); }
@Override public boolean isMachineItemValidForSlot(int i, @Nonnull ItemStack itemstack) { if (!slotDefinition.isInputSlot(i)) { return false; } return CapturedMob.containsSoul(itemstack); }
@Override public void addDetailedEntries(@Nonnull ItemStack itemstack, @Nullable EntityPlayer entityplayer, @Nonnull List<String> list, boolean flag) { if (CapturedMob.containsSoul(itemstack)) { SpecialTooltipHandler.addDetailedTooltipFromResources(list, "tile.block_powered_spawner"); } else { SpecialTooltipHandler.addDetailedTooltipFromResources(list, "tile.block_powered_spawner.empty"); } }
@SuppressWarnings("null") public static @Nullable CapturedMob create(@Nonnull ItemStack stack) { if (containsSoul(stack)) { return new CapturedMob(stack.getTagCompound()); } else { return null; } }
@Override public boolean doesItemPassFilter(@Nullable IItemHandler inv, @Nonnull ItemStack item) { if (CapturedMob.containsSoul(item)) { CapturedMob input = CapturedMob.create(item); for (CapturedMob mob : souls) { if (mob.isSameType(input)) { return !blacklist; } } } return blacklist; }
@Override public @Nonnull EnumActionResult onItemUse(@Nonnull EntityPlayer player, @Nonnull World worldIn, @Nonnull BlockPos pos, @Nonnull EnumHand hand, @Nonnull EnumFacing facing, float hitX, float hitY, float hitZ) { ItemStack itemstack = player.getHeldItem(hand); if (CapturedMob.containsSoul(itemstack)) { return super.onItemUse(player, worldIn, pos, hand, facing, hitX, hitY, hitZ); } else { player.sendStatusMessage(Lang.STATUS_SPAWNER_UNBOUND.toChatServer(), true); return EnumActionResult.FAIL; } } });
@SuppressWarnings("null") public static boolean containsSoul(@Nonnull ItemStack stack) { return Prep.isValid(stack) && stack.hasTagCompound() && containsSoul(stack.getTagCompound()); }
@Override public boolean isMachineItemValidForSlot(int i, @Nonnull ItemStack itemstack) { if (itemstack.isEmpty() || isSpawnMode) { return false; } if (slotDefinition.isInputSlot(i)) { return itemstack.getItem() == ModObject.itemSoulVial.getItem() && !CapturedMob.containsSoul(itemstack); } return false; }
@Override public @Nonnull ResultStack[] getCompletedResult(long nextSeed, float chanceMultiplier, @Nonnull NNList<MachineRecipeInput> inputs) { CapturedMob mobType = null; ItemStack inputItem = null; for (MachineRecipeInput input : inputs) { if (input != null && input.slotNumber == 0 && CapturedMob.containsSoul(input.item)) { mobType = CapturedMob.create(input.item); } else if (input != null && input.slotNumber == 1 && isValidInputItem(input.item)) { inputItem = input.item; } } if (mobType == null || !isValidInputSoul(mobType) || inputItem == null) { return new ResultStack[0]; } ItemStack resultStack = getOutputStack(inputItem, mobType); ItemStack soulVessel = new ItemStack(itemSoulVial.getItemNN()); return new ResultStack[] { new ResultStack(soulVessel), new ResultStack(resultStack) }; }
IFocus<?> focus = recipeLayout.getFocus(); if (focus != null && focus.getMode() == Mode.INPUT && focus.getValue() instanceof ItemStack && ((ItemStack) focus.getValue()).getItem() == itemSoulVial.getItemNN() && CapturedMob.containsSoul(((ItemStack) focus.getValue())) && ingredients.getOutputs(ItemStack.class).get(1).size() > 1) { if (focus != null && focus.getMode() == Mode.OUTPUT && focus.getValue() instanceof ItemStack && CapturedMob.containsSoul(((ItemStack) focus.getValue())) && ingredients.getInputs(ItemStack.class).get(0).size() > 1 && ingredients.getOutputs(ItemStack.class).get(1).size() > 1) {
@Override public void setInventorySlotContents(int slot, @Nonnull ItemStack stack) { CapturedMob input = null; if (CapturedMob.containsSoul(stack)) { input = CapturedMob.create(stack); } if (input != null) { if (slot < souls.size()) { souls.set(slot, input); for (CapturedMob existing : souls) { if (existing != input && existing.isSameType(input)) { souls.remove(slot); return; // CME! } } } else { for (CapturedMob existing : souls) { if (existing.isSameType(input)) { return; } } souls.add(input); } } else if (slot < souls.size()) { souls.remove(slot); } }
if (CapturedMob.containsSoul(item) && !isCreative) { return false;