Ir para conteúdo

Stackador de itens


Manolo8

Posts Recomendados

Eai pessoal, quem quiser fazer um stackador de itens, fica aqui o código...

 

Exemplo:

 

https://imgur.com/a/JVTD4QQ

 

Código:

    @EventHandler
    public void itemMergeEvent(ItemMergeEvent event) {

        Item one = event.getEntity();
        Item two = event.getTarget();

        if (one.getCustomName() != null && two.getCustomName() != null) {
            one.setCustomName(String.valueOf(toInt(one.getCustomName()) + toInt(two.getCustomName())));
            two.remove();
        } else if (one.getCustomName() != null && two.getCustomName() == null) {
            one.setCustomName(String.valueOf(toInt(one.getCustomName()) + two.getItemStack().getAmount()));
            two.remove();
        } else if (one.getCustomName() == null && two.getCustomName() != null) {
            two.setCustomName(String.valueOf(toInt(two.getCustomName()) + one.getItemStack().getAmount()));
            one.remove();
        } else {
            one.setCustomName(String.valueOf(one.getItemStack().getAmount() + two.getItemStack().getAmount()));
            one.getItemStack().setAmount(1);
            one.setCustomNameVisible(true);
            two.remove();
        }

        event.setCancelled(true);
    }

    @EventHandler
    public void itemPickUp(EntityPickupItemEvent event) {
        if (event.getEntity() instanceof Player) {

            Inventory inventory = ((Player) event.getEntity()).getInventory();

            Item item = event.getItem();

            if (item.getCustomName() != null) {
                int quantity = NumberUtils.toInt(item.getCustomName());

                if (quantity == 0) return;

                event.setCancelled(true);

                quantity = InventoryUtils.addItemTo(inventory, item.getItemStack(), quantity);

                if (quantity == 0) {
                    item.remove();
                } else {
                    item.setCustomName(String.valueOf(quantity));
                }

            }
        }
    }
    public static int addItemTo(Inventory inventory, ItemStack item, int amount) {

        int stackSize = item.getMaxStackSize();
        int max = (inventory instanceof PlayerInventory) ? 36 : inventory.getSize();

        ItemStack clone = item.clone();

        for (int i = 0; i < max; i++) {
            ItemStack stack = inventory.getItem(i);

            if (stack == null) {
                if (amount >= stackSize) {
                    clone.setAmount(stackSize);
                    inventory.setItem(i, clone);
                    amount -= stackSize;
                    continue;
                }
                clone.setAmount(amount);
                inventory.setItem(i, clone);
                return 0;
            } else if (stack.isSimilar(item)) {
                int stackAmount = stack.getAmount();
                int free = stackSize - stackAmount;
                if (amount > free) {
                    stack.setAmount(stackAmount + free);
                    amount -= free;
                    continue;
                }
                stack.setAmount(stackAmount + amount);
                return 0;
            }
        }

        return amount;
    }

Deixa o like ai :) '-'

Link para o comentário
Compartilhar em outros sites

Participe da Conversa

Você pode postar agora e se cadastrar mais tarde. Se você tiver uma conta, a class='ipsType_brandedLink' href='https://gamersboard.com.br/login/' data-ipsDialog data-ipsDialog-size='medium' data-ipsDialog-title='Sign In Now'>acesse agora para postar com sua conta.
Observação: sua postagem exigirá aprovação do moderador antes de ficar visível.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.

Processando...
×
×
  • Criar Novo...