Ir para conteúdo
  • 0

[ERRO] SE NA CONFIG ESTÁ TRUE DA ERRO????


Lelfe

Pergunta

É o seguinte..


meu código,


eu queria que apenas se na config estivesse ( fechar_inventario: true )


ai sim o inventário do player fechasse, isso acontece, mas retorna esse erro no console:


d3b730f853fa4f058ca33dfc75457db8.png


quando está ( fechar_inventario: false )


funciona normalmente e não retorna nenhum erro,


minha dúvida é o seguinte, como eu faço pra que na config esteja ( fechar_inventario: true )


e feche o inventário do player mas não retorne erro no console?


seria algum erro codigo?


codigo:



@EventHandler
public boolean craftItem(PrepareItemCraftEvent e){
{
@SuppressWarnings("deprecation")
int itemType = e.getRecipe().getResult().getType().getId();
if (getConfig().getIntegerList("itens_bloqueados").contains(Integer.valueOf(itemType)))
{
e.getInventory().setResult(new ItemStack(Material.AIR));
for (HumanEntity he : e.getViewers()) {
if ((he instanceof Player)) {
((Player)he).sendMessage(getConfig().getString("msg_ao_craftar").replace("&", "§"));
}
if (getConfig().getBoolean("fechar_inventario") == true){
((Player)he).closeInventory();

}
}
return true;


}
}
return false;
}
}





ps: sou muito iniciante, pode ser que seja algo bobo, obrigado.


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

4 respostass a esta questão

Posts Recomendados

Provavelmente o closeInventory remove o jogador da lista de viewers (getViewers) e não se pode alterar "uma lista" dentro de um loop...

 

Tem várias maneiras de resolver... a mais simples seria...

 

você mudar isso

 for (HumanEntity he : e.getViewers()) {

por isso

 for (HumanEntity he : new ArrayList<>(e.getViewers())) {

Assim você estaria iterando em cima dessa nova lista (que é um clone da getViewers) e não da do getViewers

Link para o comentário
Compartilhar em outros sites

Provavelmente o closeInventory remove o jogador da lista de viewers (getViewers) e não se pode alterar "uma lista" dentro de um loop...

 

Tem várias maneiras de resolver... a mais simples seria...

 

você mudar isso

 for (HumanEntity he : e.getViewers()) {

por isso

 for (HumanEntity he : new ArrayList<>(e.getViewers())) {

Assim você estaria iterando em cima dessa nova lista (que é um clone da getViewers) e não da do getViewers

Obrigado, deu super certo, você é 10.  :inlove:  :rofl: 

Link para o comentário
Compartilhar em outros sites

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