Ir para conteúdo

[Bukkit] Porque não utilizar Arrays de Players.


Herobrinedobem

Posts Recomendados

Bom, vejo muita gente utilizando arraylists de player, como o exemplo a seguir:

 

private ArrayList<Player> participantes = new ArrayList<Player>();

 

Mas ai eu te falo que isso pode acabar ocorrendo problemas em certos casos, além de guardar informações que podem causar um uso de memória desnecessário.

 

Mas porque pode causar alguns erros? Quando você coloca algum player dentro desse array, você vai estar criando indiretamente uma nova instancia do player, assim mantendo todos os dados dele salvo, caso esse jogador deslogue e você não trate esse evento, pode acabar causando uma fuga de memória pois a chunck onde esse tal player estava vai continuar carregada pois você ainda tem a instancia dele no seu array, as vezes também pode ocorrer do player entrar como OfflinePlayer, pois já vai ter uma instancia dele no server, assim quando ele for re-entrar no servidor, pode acontecer isso, assim podendo acontecer erros como perda de itens e coisas do genero (Isso não se aplica a Keys).

 

O melhor jeito de criar um array de player seria utilizando nas versões mais novas o UUID dele, que pode ser pego com getUniqueId(), em versões mais antigas basta criar um array de String e colocar nesse array apenas o nome do player, para pegar o jogador depois é só:

 

for(String s : participantes){

Player p = Bukkit.getServer().getPlayer(s);

}

 

 

Assim evitando erros e bugs =)

Link para o comentário
Compartilhar em outros sites

Bom, vejo muita gente utilizando arraylists de player, como o exemplo a seguir:

 

 

Mas ai eu te falo que isso pode acabar ocorrendo problemas em certos casos, além de guardar informações que podem causar um uso de memória desnecessário.

 

Mas porque pode causar alguns erros? Quando você coloca algum player dentro desse array, você vai estar criando indiretamente uma nova instancia do player, assim mantendo todos os dados dele salvo, caso esse jogador deslogue e você não trate esse evento, pode acabar causando uma fuga de memória pois a chunck onde esse tal player estava vai continuar carregada pois você ainda tem a instancia dele no seu array, as vezes também pode ocorrer do player entrar como OfflinePlayer, pois já vai ter uma instancia dele no server, assim quando ele for re-entrar no servidor, pode acontecer isso, assim podendo acontecer erros como perda de itens e coisas do genero (Isso não se aplica a Keys).

 

O melhor jeito de criar um array de player seria utilizando nas versões mais novas o UUID dele, que pode ser pego com getUniqueId(), em versões mais antigas basta criar um array de String e colocar nesse array apenas o nome do player, para pegar o jogador depois é só:

 

 

Assim evitando erros e bugs =)

Bem que vc podia fazer uma serie no seu canal explicando o básico de java para fazer plugins.

:D

Link para o comentário
Compartilhar em outros sites


String Ninja = "The Best Fucking Java Pluginner";

if(GamersBoard.getUser("Herobrinedobem") == Ninja) {

World().sendMessage("O Herobrine é melhor do que você, seu INSIGNIFICANTE!);

Stop.World();

}

}

Link para o comentário
Compartilhar em outros sites

String Ninja = "The Best Fucking Java Pluginner";
if(GamersBoard.getUser("Herobrinedobem") == Ninja) {
 World().sendMessage("O Herobrine é melhor do que você, seu INSIGNIFICANTE!);
 Stop.World();
}
}

.-.

Link para o comentário
Compartilhar em outros sites

ARQUIVAMENTO DE CONTEÚDO

O tópico foi arquivado. A partir deste momento, não será mais possível editar ou adicionar novos comentários. Caso precise de informações adicionais, por favor, entre em contato com a equipe da comunidade.

Equipe de Moderação
Gamer's Board
Link para o comentário
Compartilhar em outros sites

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