ArrayList<String> mensagens = new ArrayList<String>();
int linhasPorPaginas = 8;
int paginaAtual = 1;
int inicio = (paginaAtual - 1) * linhasPorPaginas;
int fim = paginaAtual * linhasPorPaginas >= mensagens.Length() ? mensagens.Length() : paginaAtual * linhasPorPaginas;
for (int i = inicio; i < fim; i++) {
//Todas as linhas de 0 até 8
mensagens.get(i);
}
Não testei, então pode ter alguma coisa um pouco errada, mas é só falar que eu arrumo
Vou tentar explicar de uma forma simples....
O kit arqueiro estava DENTRO do kit guerreiro, sendo assim você NUNCA teria como pegar o kit arqueiro. Não sei como explicar melhor, eu coloquei alguns poucos comentários no código onde eu mudei.
E uma dica, tente IDENTAR melhor seu código, isso provavelmente foi UM dos motivos para você não entender onde estava o erro. Se você está usando o Eclipse você pode fazer duas coisas para te ajuda nisso:
1- Usar Ctrl + Alt + I: Para identar automaticamente o código.
2- Ir na aba de busca do eclipse, aquela que fica lá em cima do lado direito, e pesquisar por "Save actions" (ações ao salvar) e marcar as caixas "Perform the selected actions on save", "Format source code", "Format all lines", "Organize imports", isso fará com que toda vez que você salvar o seu código ele será automaticamente formatado pelo Eclipse.
Espero ter sido de ajuda. :)
@Edit:
Está aqui um código um "pouquinho" mais comentado.
<spoiler>
//Imports e package aqui;
public class Kits implements CommandExecutor {
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
Player p = (Player) sender;
if (!(sender instanceof Player)) {
sender.sendMessage((Object)ChatColor.BLUE + "Se Fudeu Troxa você não vai usar este comando pelo console"); //Isso aqui não fica muito legal (na MINHA opnião), fazendo isso você parace ser muito criança :) Não fique com raiva de min, é só MINHA opnião;
return true; //Como você NÃO quer que o código abaixo seja executado, já que se fosse essa parte não severia para nada, use um "return true" aqui. DICA: se você usar "return false" o Bukkit vai entender que ouve um erro por parte do jogador, dai será enviado uma mensagem de "Usage: bla bla bla..." para o cara.
}
if(command.getName().equalsIgnoreCase("kit")) {
if(args.length == 0) {
p.sendMessage("§cUtilize /kit <arqueiro : guerreiro>");
return true;
}
if(args.length == 1) {
if(args[0].equalsIgnoreCase("arqueiro")) {
if(!(Principal.usando.contains(p.getName()))){
//Itens do kit aqui
} else {
//Mensagem de erro aqui, já que o cara já tem o kit
}
return true; //Aqui para que o código PARE AQUI você pode usar um "return true" ou "return false", mas o "return false" só seria bem vindo se o cara não tivesse pego o kit por algum erro, como eu já disse acima. :)
} //Termine aqui um if; Ou use um "else if", isso seria bom para que só um quit fosse escolhido, mas nesse caso não faz diferença para quem está começando com programação;
if(args[0].equalsIgnoreCase("guerreiro")) {
if(!(Principal.usando.contains(p.getName()))){
//Itens do kit aqui
} else {
//Mensagem de erro aqui, já que o cara já tem o kit
}
//return true; Você não precisa de um return aqui, tendo UM no final do código já é suficiente desde que você não tenha mais nada para baixo.
}
//Para você por mais kits é só fazer isso.
if(args[0].equalsIgnoreCase("KIT blabla1")) {
if(!(Principal.usando.contains(p.getName()))){
//Itens do kit aqui
} else {
//Mensagem de erro aqui, já que o cara já tem o kit
}
//return true;
}
if(args[0].equalsIgnoreCase("BRUXA DO DIMOIN")) {
if(!(Principal.usando.contains(p.getName()))){
//Itens do kit aqui
} else {
//Mensagem de erro aqui, já que o cara já tem o kit
}
//return true;
}
if(args[0].equalsIgnoreCase("QUALQUER OUTRO KIT AQUI")) {
if(!(Principal.usando.contains(p.getName()))){
//Itens do kit aqui
} else {
//Mensagem de erro aqui, já que o cara já tem o kit
}
//return true;
}
}
}
return false; // Só este aqui no final do OnCommand ja está de bom tamanho.
}
}
</spoiler>