if(baubles.isItemValidForSlot(i, toEquip, player)) { ItemStack stackInSlot = baubles.getStackInSlot(i); if(stackInSlot.isEmpty() || ((IBauble) stackInSlot.getItem()).canUnequip(stackInSlot, player)) { ((IBauble) toEquip.getItem()).onEquipped(toEquip, player); ((IBauble) stackInSlot.getItem()).onUnequipped(stackInSlot, player);
/** * Returns true if automation is allowed to insert the given stack (ignoring * stack size) into the given slot. */ @Override public boolean isItemValidForSlot(int slot, ItemStack stack, EntityLivingBase player) { if (stack==null || stack.isEmpty() || !stack.hasCapability(BaublesCapabilities.CAPABILITY_ITEM_BAUBLE, null)) return false; IBauble bauble = stack.getCapability(BaublesCapabilities.CAPABILITY_ITEM_BAUBLE, null); return bauble.canEquip(stack, player) && bauble.getBaubleType(stack).hasSlot(slot); }
@Override public ActionResult<ItemStack> onItemRightClick(World world, EntityPlayer player, EnumHand hand) { ItemStack stack = player.getHeldItem(hand); ItemStack toEquip = stack.splitStack(1); if(Loader.isModLoaded("baubles")) { if (canEquip(toEquip, player)) { IItemHandlerModifiable baubles = BaublesApi.getBaublesHandler(player); for (int i = 0; i < baubles.getSlots(); i++) { ItemStack simulate = baubles.insertItem(i, toEquip, true); if (simulate.isEmpty()) { ItemStack stackInSlot = baubles.getStackInSlot(i); if (stackInSlot.isEmpty() || ((IBauble) stackInSlot.getItem()).canUnequip(stackInSlot, player)) { if (!world.isRemote) { baubles.setStackInSlot(i, toEquip); } if (!stackInSlot.isEmpty()) { ((IBauble) stackInSlot.getItem()).onUnequipped(stackInSlot, player); return ActionResult.newResult(EnumActionResult.SUCCESS, stackInSlot.copy()); } break; } } } } } return ActionResult.newResult(EnumActionResult.PASS, stack); }
@Override public void putStack(ItemStack stack) { if (getHasStack() && !ItemStack.areItemStacksEqual(stack,getStack()) && !((IBaublesItemHandler)getItemHandler()).isEventBlocked() && getStack().hasCapability(BaublesCapabilities.CAPABILITY_ITEM_BAUBLE, null)) { getStack().getCapability(BaublesCapabilities.CAPABILITY_ITEM_BAUBLE, null).onUnequipped(getStack(), player); } ItemStack oldstack = getStack().copy(); super.putStack(stack); if (getHasStack() && !ItemStack.areItemStacksEqual(oldstack,getStack()) && !((IBaublesItemHandler)getItemHandler()).isEventBlocked() && getStack().hasCapability(BaublesCapabilities.CAPABILITY_ITEM_BAUBLE, null)) { getStack().getCapability(BaublesCapabilities.CAPABILITY_ITEM_BAUBLE, null).onEquipped(getStack(), player); } }
for (int baubleSlot : bauble.getBaubleType(itemstack).getValidSlots()) { if ( bauble.canEquip(itemstack1, thePlayer) && !((Slot)this.inventorySlots.get(baubleSlot+9)).getHasStack() && !this.mergeItemStack(itemstack1, baubleSlot+9, baubleSlot + 10, false)) itemstack.getCapability(BaublesCapabilities.CAPABILITY_ITEM_BAUBLE, null).onUnequipped(itemstack, playerIn);
@Override public boolean canTakeStack(EntityPlayer player) { ItemStack stack = getStack(); if(stack.isEmpty()) return false; IBauble bauble = stack.getCapability(BaublesCapabilities.CAPABILITY_ITEM_BAUBLE, null); return bauble.canUnequip(stack, player); }
@Override public ItemStack onTake(EntityPlayer playerIn, ItemStack stack) { if (!getHasStack() && !((IBaublesItemHandler)getItemHandler()).isEventBlocked() && stack.hasCapability(BaublesCapabilities.CAPABILITY_ITEM_BAUBLE, null)) { stack.getCapability(BaublesCapabilities.CAPABILITY_ITEM_BAUBLE, null).onUnequipped(stack, playerIn); } super.onTake(playerIn, stack); return stack; }
@SubscribeEvent public void tooltipEvent(ItemTooltipEvent event) { if (!event.getItemStack().isEmpty() && event.getItemStack().hasCapability(BaublesCapabilities.CAPABILITY_ITEM_BAUBLE, null)) { IBauble bauble = event.getItemStack().getCapability(BaublesCapabilities.CAPABILITY_ITEM_BAUBLE, null); BaubleType bt = bauble.getBaubleType(event.getItemStack()); event.getToolTip().add(TextFormatting.GOLD + I18n.format("name."+bt)); } } }
private void syncBaubles(EntityPlayer player, IBaublesItemHandler baubles) { ItemStack[] items = baublesSync.get(player.getUniqueID()); if (items == null) { items = new ItemStack[baubles.getSlots()]; Arrays.fill(items, ItemStack.EMPTY); baublesSync.put(player.getUniqueID(), items); } if (items.length != baubles.getSlots()) { ItemStack[] old = items; items = new ItemStack[baubles.getSlots()]; System.arraycopy(old, 0, items, 0, Math.min(old.length, items.length)); baublesSync.put(player.getUniqueID(), items); } Set<EntityPlayer> receivers = null; for (int i = 0; i < baubles.getSlots(); i++) { ItemStack stack = baubles.getStackInSlot(i); IBauble bauble = stack.getCapability(BaublesCapabilities.CAPABILITY_ITEM_BAUBLE, null); if (baubles.isChanged(i) || bauble != null && bauble.willAutoSync(stack, player) && !ItemStack.areItemStacksEqual(stack, items[i])) { if (receivers == null) { receivers = new HashSet<>(((WorldServer) player.world).getEntityTracker().getTrackingPlayers(player)); receivers.add(player); } syncSlot(player, i, stack, receivers); baubles.setChanged(i,false); items[i] = stack == null ? ItemStack.EMPTY : stack.copy(); } } }
@SubscribeEvent public void playerTick(TickEvent.PlayerTickEvent event) { // player events if (event.phase == TickEvent.Phase.END) { EntityPlayer player = event.player; IBaublesItemHandler baubles = BaublesApi.getBaublesHandler(player); for (int i = 0; i < baubles.getSlots(); i++) { ItemStack stack = baubles.getStackInSlot(i); IBauble bauble = stack.getCapability(BaublesCapabilities.CAPABILITY_ITEM_BAUBLE, null); if (bauble != null) { bauble.onWornTick(stack, player); } } if (!player.world.isRemote) { syncBaubles(player, baubles); } } }
if (!st.isEmpty() && st.hasCapability(BaublesCapabilities.CAPABILITY_ITEM_BAUBLE, null)) { IBauble bauble = st.getCapability(BaublesCapabilities.CAPABILITY_ITEM_BAUBLE, null); BaubleType bt = bauble.getBaubleType(st); sender.sendMessage(new TextComponentTranslation("\u00a73 [Slot "+a+"] "+bt+" "+st.getDisplayName()));