Ir para conteúdo
  • 0

2 Duvidas


SnowRunescape

Pergunta

Bom, quero saber como que faço para adicionar em uma array, ou em uma list o NOME DO JOGADOR e o TEMPO QUE INICIOU O EVENT do comando dele, e quando ele tentar executar o mesmo evento, aparecer, espere x segundos e tente novamente...


 


 


e a outra duvida é.. como que eu pego uma configuração do config.yml, sem ter que estar pre definida..


 


exemplo...


 


ITEM1:


   NOME1: TALITEM, descrição tal, id tal


 


ITEM2:


   NOME2: TALITEM, descriçaõ tal, id tal


 


e eu pegar esses valores no java, mas sem definir o tamanho maximo de ITEM1 ou ITEM2, eu poder fazer quantos itens eu quiser la no config.yml, e o codigo vai conseguir ler todos


Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

1. Delay


 


Pra verificar se ele está com delay, usamos



        if (inCooldown(p.getName())) {
            // tem delay
            return;
        }

Para setar o delay para o jogador, usamos



addCooldown(p.getName(), 3);

E aqui o código pra "manusear" o delay do jogador



public static HashMap<String, Long> local = new HashMap<String, Long>();

public static void addCooldown(String name, int cooldownSeconds) {
local.put(name.toLowerCase(), System.currentTimeMillis() + TimeUnit.SECONDS.toMillis(cooldownSeconds));
}

public static boolean inCooldown(String name) {
return local.containsKey(name.toLowerCase()) && System.currentTimeMillis() < local.get(name.toLowerCase());
}

public static long getRemainingSeconds(String name) {
if (!inCooldown(name))
return 0;
return TimeUnit.MILLISECONDS.toSeconds(local.get(name.toLowerCase()) - System.currentTimeMillis());
}

Lógico que tem códigos maiores mais que iriam facilitar muito, o delay está em segundos!


 


2. "Item infinito"


 


Código



@SuppressWarnings("deprecation")
public static void abrirInventarioPlayer(Player p) {

Inventory inv = Bukkit.createInventory(null, 6 * 9, "Inventario Infinito");

for (String key : Main.getInstance().getConfig().getConfigurationSection("Itens").getKeys(false)) {

int id = Main.getInstance().getConfig().getInt("Itens." + key + ".ID");
int slot = Main.getInstance().getConfig().getInt("Itens." + key + ".Slot");
int quantia = Main.getInstance().getConfig().getInt("Itens." + key + ".Quantia");
int data = Main.getInstance().getConfig().getInt("Itens." + key + ".Data");
String nome = Main.getInstance().getConfig().getString("Itens." + key + ".Nome");
List<String> lore = Main.getInstance().getConfig().getStringList("Itens." + key + ".Lore");

ItemStack a = new ItemStack(Material.getMaterial(id), quantia, (short)data);
ItemMeta b = a.getItemMeta();
b.setDisplayName(nome);
b.setLore(lore);
a.setItemMeta(b);

inv.setItem(slot, a);
}

p.openInventory(inv);
}

Como tem que ficar na config



Itens:
2:
ID: 1
Slot: 1
Data: 0
Nome: "&cItem 3"
Lore:
- 'fo'
- 'da'
- 'se'
1:
ID: 8
Slot: 2
Data: 0
Nome: "&cItem 2"
Lore:
- 'fo'
- 'da'
- 'se'
3:
ID: 6
Slot: 3
Data: 0
Nome: "&dItem 4"
Lore:
- 'fo'
- 'da'
- 'se'

Espero que tenha ajudado :p


Link para o comentário
Compartilhar em outros sites

  • 0

 

1. Delay

 

Pra verificar se ele está com delay, usamos

        if (inCooldown(p.getName())) {
            // tem delay
            return;
        }

Para setar o delay para o jogador, usamos

			addCooldown(p.getName(), 3);

E aqui o código pra "manusear" o delay do jogador

	public static HashMap<String, Long> local = new HashMap<String, Long>();

	public static void addCooldown(String name, int cooldownSeconds) {
		local.put(name.toLowerCase(), System.currentTimeMillis() + TimeUnit.SECONDS.toMillis(cooldownSeconds));
	}

	public static boolean inCooldown(String name) {
		return local.containsKey(name.toLowerCase()) && System.currentTimeMillis() < local.get(name.toLowerCase());
	}

	public static long getRemainingSeconds(String name) {
		if (!inCooldown(name))
			return 0;
		return TimeUnit.MILLISECONDS.toSeconds(local.get(name.toLowerCase()) - System.currentTimeMillis());
	}

Lógico que tem códigos maiores mais que iriam facilitar muito, o delay está em segundos!

 

2. "Item infinito"

 

Código

	@SuppressWarnings("deprecation")
	public static void abrirInventarioPlayer(Player p) {
		
		Inventory inv = Bukkit.createInventory(null, 6 * 9, "Inventario Infinito");
		
		for (String key : Main.getInstance().getConfig().getConfigurationSection("Itens").getKeys(false)) {

			int id = Main.getInstance().getConfig().getInt("Itens." + key + ".ID");
			int slot = Main.getInstance().getConfig().getInt("Itens." + key + ".Slot");
			int quantia = Main.getInstance().getConfig().getInt("Itens." + key + ".Quantia");
			int data = Main.getInstance().getConfig().getInt("Itens." + key + ".Data");
			String nome = Main.getInstance().getConfig().getString("Itens." + key + ".Nome");
			List<String> lore = Main.getInstance().getConfig().getStringList("Itens." + key + ".Lore");
			
			ItemStack a = new ItemStack(Material.getMaterial(id), quantia, (short)data);
			ItemMeta b = a.getItemMeta();
			b.setDisplayName(nome);
			b.setLore(lore);
			a.setItemMeta(b);
			
			inv.setItem(slot, a);
		}
		
		p.openInventory(inv);
	}

Como tem que ficar na config

Itens:
  2:
    ID: 1
    Slot: 1
    Data: 0
    Nome: "&cItem 3"
    Lore:
    - 'fo'
    - 'da'
    - 'se'
  1:
    ID: 8
    Slot: 2
    Data: 0
    Nome: "&cItem 2"
    Lore:
    - 'fo'
    - 'da'
    - 'se'
  3:
    ID: 6
    Slot: 3
    Data: 0
    Nome: "&dItem 4"
    Lore:
    - 'fo'
    - 'da'
    - 'se'

Espero que tenha ajudado :p

 

opa, vou tentar aplicar isso no codigo que estou fazendo, muito obrigado

Link para o comentário
Compartilhar em outros sites

  • 0

<p style="text-align:center;"><img alt="logo-forum.png" src="http://www.gamersboard.com.br/logo-forum.png"/></p><br /></br><br /></br><br />Sua dúvida foi marcada como [Resolvido] e movido à área de dúvidas resolvidas.</br><br /></br><br /></br><br />Atenciosamente,</br><br />Gamer's Board</br>

Link para o comentário
Compartilhar em outros sites

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