Ir para conteúdo
  • 0

Itens rodar no Menu GUI


iVictor777z

Pergunta

Bom, minha duvida é: Como faço para adicionar os itens que estao em uma lista ficarem rodando em um menugui (sem ter que ficar abrindo e fechando inventario) e tipo em fila?

 

Obs: eu quero em 3 hotbar, exemplo na primeira e na ultima eu coloco o que eu quiser, e na do meio os item

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

Assim, eu já tinha feito algo assim por curiosidade só mesmo para testar, fiz até isso em um plugin de login, e como era um plugin de login eu removi a animação do plugin. Agora fui procurar se tinha alguma versão dele na lixeira e encontrei mas como foi decompilado pode ter alguns erro, eu tentei alterar o que vi que estava errado mas mesmo assim pode ter algum.

 

O load() é para você colocar os items e a sua % ( pode ser ‰ também, recomendo deixar o total em 100 ou 1000 ou 10.. para ser mais fácil de perceber as probabilidades), ae só colocar o load() no onEnable().

 

Altera o nome da classe, a instância da sua main e o comando né.

 

 

 

package me.zath.skyauth.cmd;

import java.util.Random;
import org.bukkit.inventory.InventoryHolder;
import org.bukkit.inventory.Inventory;
import org.bukkit.plugin.Plugin;
import me.zath.skyauth.SkyAuth;
import java.util.Iterator;
import org.bukkit.entity.Player;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.inventory.ItemStack;
import java.util.HashMap;
import org.bukkit.command.CommandExecutor;

public class Teste implements CommandExecutor
{
    private static HashMap<ItemStack, Integer> items = new HashMap<ItemStack, Integer>();
    private static HashMap<String, Integer> count = new HashMap<String, Integer>();
    private static int acumulado;
   
    public boolean onCommand(final CommandSender sender, final Command cmd, final String arg, final String[] args) {
        if (cmd.getName().equalsIgnoreCase("test")) {
            final Player p = (Player)sender;
            p.openInventory(this.getInv());
            this.wheel(p, 20, 2);
        }
        return false;
    }
    
    public static void load() {
        Teste.items.put(new ItemStack(276, 1, (short)0), 10);
        Teste.items.put(new ItemStack(277, 1, (short)0), 10);
        Teste.items.put(new ItemStack(278, 1, (short)0), 10);
        Teste.items.put(new ItemStack(279, 1, (short)0), 10);
        Teste.items.put(new ItemStack(268, 1, (short)0), 40);
        Teste.items.put(new ItemStack(269, 1, (short)0), 40);
        Teste.items.put(new ItemStack(270, 1, (short)0), 40);
        Teste.items.put(new ItemStack(271, 1, (short)0), 40);
        Teste.items.put(new ItemStack(399, 1, (short)0), 1);
        Teste.acumulado = 0;
        for (final ItemStack item : Teste.items.keySet()) {
            Teste.acumulado += Teste.items.get(item);
        }
    }
    
    private static void wheel(final Player p, final int maxDelay, final int minDelay) {
        SkyAuth.m.getServer().getScheduler().scheduleAsyncDelayedTask((Plugin)SkyAuth.m, (Runnable)new Runnable() {
            @Override
            public void run() {
                if (!p.getOpenInventory().getTitle().equalsIgnoreCase("Wheel")) {
		    p.getInventory().addItem(this.getRandom());
                    p.closeInventory();
                    Teste.count.remove(p.getName().toLowerCase());
                    return;
                }

                if (minDelay > maxDelay) {
                    p.getInventory().addItem(new ItemStack[] { p.getOpenInventory().getItem(13) });
                    p.closeInventory();
                    Teste.count.remove(p.getName().toLowerCase());
                    return;
                }

                for (int u = 9; u < 17; ++u) {
                    p.getOpenInventory().setItem(u, p.getOpenInventory().getItem(Integer.valueOf(u + 1)));
                }

                p.getOpenInventory().setItem(17, getRandom());

                if (!Teste.count.containsKey(p.getName().toLowerCase())) {
                    Teste.count.put(p.getName().toLowerCase(), 1);
                } else {
                    Teste.count.put(p.getName().toLowerCase(), Teste.count.get(p.getName().toLowerCase()) + 1);
                }

                int newdelay = minDelay;
                if (Teste.count.get(p.getName().toLowerCase()) >= 20) {
                    newdelay = minDelay + 1;
                }

                wheel(p, maxDelay, newdelay);
            }
        }, minDelay);
    }
    
    private static Inventory getInv() {
        final Inventory inv = SkyAuth.m.getServer().createInventory((InventoryHolder)null, 27, "Wheel");
        for (int i = 0; i < 27; ++i) {
            if (i < 9 || i > 17) {
                inv.setItem(i, new ItemStack(101, 1, (short)0));
            }
        }
        for (int i = 9; i < 18; ++i) {
            inv.setItem(i, this.getRandom());
        }
        return inv;
    }
    
    private static ItemStack getRandom() {
        Random rand = new Random();

        int index = rand.nextInt(Teste.acumulado);
        int sum = 0;
        int i = 0;
        while(sum < index) {
            sum = sum + Integer.parseInt(Teste.items.values().toArray()[i++].toString());
        }
        return (ItemStack)Teste.items.keySet().toArray()[Math.max(0, i - 1)];
    }
    
} 

 

 

Editado por zAth
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
×
×
  • Criar Novo...