Ir para conteúdo
  • 0

[Resolvido] Detectar quando o inventário está cheio...


Dery

Pergunta

Vou atualizar o DFumar e na atualização irá vir um novo item quando utilizar o /fumar e queria saber como faço para saber quando o inventário do player estiver cheio....

 

Tipo, o inventário do player está cheio aí ele não adiciona mais o item ao inventário e diz que o inventário está cheio, também vai servir para evitar erros no plugin :)

Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

Guest zCouDray

Deve ser alguma coisa assim:

p.getInventory().getContents() > 34(Não sei quantos slots tem o inventário, mas e só trocar dps){                                                 p.sendMessage("Seu inventário está cheio!");                                                 return true;
Link para o comentário
Compartilhar em outros sites

Deve ser alguma coisa assim:

p.getInventory().getContents() > 34(Não sei quantos slots tem o inventário, mas e só trocar dps){                                                 p.sendMessage("Seu inventário está cheio!");                                                 return true;

getContents() sempre retorna 36, não tem como usando isso.

 

Fiz um algorítimo pra detecta quantos slots o player tem sobrando... segue abaixo...

        public int getFreeSlots(Player p) 	{		int slots = 36;				for (ItemStack item : p.getInventory().getContents())		{					if (item != null && item.getType() != Material.AIR)			{				slots--;			}					}				return slots;	} 

Se você for adicionar só um item você pode fazer assim

if (getFreeSlots(player) >= 1){    //adicione o item;}else{    // voce nao tem espaco suficiente...}
Editado por leonardosci
Link para o comentário
Compartilhar em outros sites

 

public int pegarSlots(Player p) {

int i=0;

for (ItemStack item : p.getInventory().getContents()) {

if (item != null && item.getType() != Material.AIR)

i++;

}

for (ItemStack item : p.getInventory().getArmorContents()) {

if (item != null && item.getType() != Material.AIR)

i++;

}

return i;

}

 

Este código retorna os slots cheios. Editado por BrineDev
Link para o comentário
Compartilhar em outros sites

public boolean inventarioVazio(Player p) {		for (ItemStack item : p.getInventory().getContents()) {			if (item != null && item.getType() != Material.AIR)				return false;		}		for (ItemStack item : p.getInventory().getArmorContents()) {			if (item != null && item.getType() != Material.AIR)				return false;		}		return true;	}

USO:

if (!inventarioVazio(p)) {	p.sendMessage("§cVoce deve estar de inventario vazio!");	return false;}

É pra ver quantos slots, não se o inventario está/não está vazio.

Link para o comentário
Compartilhar em outros sites

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