Ir para conteúdo
  • 0

Verificar Inventario


Ducky

Pergunta

7 respostass a esta questão

Posts Recomendados

[...]
onCommand[bla..blalbl...]{
	if(sender instanceof Player){ // checa se o sender é um player
		Player p = (Player)sender;
		if(p.getInventory().contains(Material.ITEM)){ // checa se o player tem o item no inventario
			ItemStack meuItem;
			for(ItemStack item : p.getInventory()){ // percorre todos os itens do inventario
				if(item.getType().equals(Material.ITEM)){ //verifica se o item é o que você está procurando
				meuItem = item;
break;
				}
			}
			if(meuItem.getAmount() > 1) //verifica se a quantidade do item é maior do que um
				meuItem.setAmount(meuItem.getAmount()-1); // se sim, remove um item apenas
			else // se não, remove o item do inventario.
				p.getInventory().remove(Material.ITEM);
		}
	}
}

Eu não sei se tem algo de errado, fiz pelo navegador mesmo.

Link para o comentário
Compartilhar em outros sites

Ta ai sz

 

Player player = (Player) sender;
Material itemDesejado = Material.APPLE;
if (player.getInventory().contains(itemDesejado)) {
ItemStack encontrado = null;
for (ItemStack item : player.getInventory()) {
if (item.getType().equals(itemDesejado)) {
encontrado = item;
break;
}
}
if (encontrado.getAmount() > 1) {
encontrado.setAmount(encontrado.getAmount() - 1);
} else {
player.getInventory().remove(itemDesejado);
}
} else {
player.sendMessage("§eVoce nao possui um(a) " + itemDesejado.name() + " no inventario!");
}

 

Link para o comentário
Compartilhar em outros sites

[...]
onCommand[bla..blalbl...]{
	if(sender instanceof Player){ // checa se o sender é um player
		Player p = (Player)sender;
		if(p.getInventory().contains(Material.ITEM)){ // checa se o player tem o item no inventario
			ItemStack meuItem;
			for(ItemStack item : p.getInventory()){ // percorre todos os itens do inventario
				if(item.getType().equals(Material.ITEM)){ //verifica se o item é o que você está procurando
				meuItem = item;
break;
				}
			}
			if(meuItem.getAmount() > 1) //verifica se a quantidade do item é maior do que um
				meuItem.setAmount(meuItem.getAmount()-1); // se sim, remove um item apenas
			else // se não, remove o item do inventario.
				p.getInventory().remove(Material.ITEM);
		}
	}
}

Eu não sei se tem algo de errado, fiz pelo navegador mesmo.

 

Uma dúvida..

Eu fiz assim;

 

if(p.getInventory().contains(org.bukkit.Material.CACTUS)) {

Como faço para remover apenas 1, utilizando p.getinventory()?

Link para o comentário
Compartilhar em outros sites

Uma dúvida..

Eu fiz assim;

if(p.getInventory().contains(org.bukkit.Material.CACTUS)) {

Como faço para remover apenas 1, utilizando p.getinventory()?

Está certo, pode usar ItemStack para verificar.

	for(ItemStack item : p.getInventory()){ // percorre todos os itens do inventario
				if(item.getType().equals(Material.CACTUS)){ //verifica se o item é o que você está procurando
					if(item.getAmount() > 1) // verifica a quantidade de itens stacados, se for maior que um
						item.setAmount(item.getAmount() -1 ); // remove um item
					else // se menor ou igual a um, remove o item.
						p.getInventory().remove(item);
					break;
				}
			}

Caso queira remover o item ignorando os itens que estão agrupados, pode usar p.getInventory().remove(Material.CACUS);

Link para o comentário
Compartilhar em outros sites

Está certo, pode usar ItemStack para verificar.

	for(ItemStack item : p.getInventory()){ // percorre todos os itens do inventario
				if(item.getType().equals(Material.CACTUS)){ //verifica se o item é o que você está procurando
					if(item.getAmount() > 1) // verifica a quantidade de itens stacados, se for maior que um
						item.setAmount(item.getAmount() -1 ); // remove um item
					else // se menor ou igual a um, remove o item.
						p.getInventory().remove(item);
					break;
				}
			}

Caso queira remover o item ignorando os itens que estão agrupados, pode usar p.getInventory().remove(Material.CACUS);

Mas p.getInventory().remove(Material.CACUS); (remove todos) quero que remova apenas 1

Link para o comentário
Compartilhar em outros sites

Mas p.getInventory().remove(Material.CACUS); (remove todos) quero que remova apenas 1

''Caso queira remover o item ignorando os itens que estão agrupados, pode usar p.getInventory().remove(Material.CACUS);''

Se você quer remover um por um, use o código abaixo:

	for(ItemStack item : p.getInventory()){ // percorre todos os itens do inventario
				if(item.getType().equals(Material.CACTUS)){ //verifica se o item é o que você está procurando
					if(item.getAmount() > 1) // verifica a quantidade de itens stacados, se for maior que um
						item.setAmount(item.getAmount() -1 ); // remove um item
					else // se menor ou igual a um, remove o item.
						p.getInventory().remove(item);
					break;
				}
			}

O que ele faz? Basicamente, percorre todos os itens do inventario, verifica se algum deles é do material Cacus, se for, verifica a quantidade estacada e verifica se é maior que um, se for, remove um, se não, remove o item do inventario.

 

Para entender melhor...


public static void toRemove(ItemStack item, int amount, Player p){
	if(item.getAmount() > 1) // verifica a quantidade de itens stacados, se for maior que um
		item.setAmount(item.getAmount() -1 ); // remove um item
	else // se menor ou igual a um, remove o item.
		p.getInventory().remove(item);
}

public static void toRemove(Material type, int amount, Player p){
	for(ItemStack item : p.getInventory()){ // percorre todos os itens do inventario
			if(item.getType().equals(type)){ //verifica se o item é o que você está procurando
				if(item.getAmount() > 1) // verifica a quantidade de itens stacados, se for maior que um
					item.setAmount(item.getAmount() -1 ); // remove um item
				else // se menor ou igual a um, remove o item.
					p.getInventory().remove(item);
		break;
		}
	}
}


// para usar

public static void test(){
	toRemove(new ItemStack(Material.CACTUS), 1, Bukkit.getPlayer("GB"));
	toRemove(Material.CACTUS, 1, Bukkit.getPlayer("GB"));
}

Usando:

[...]
onCommand[bla..blalbl...]{
	if(sender instanceof Player){ // checa se o sender é um player
		Player p = (Player)sender;
		toRemove(Material.CACTUS, 1, p);
		}
	}
}
Editado por GabrielSm_
Link para o comentário
Compartilhar em outros sites

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