Ir para conteúdo
  • 0

[Resolvido] Como limpar mobs? java..


Guest Gostosão do fórum SrKerwin

Pergunta

Guest Gostosão do fórum SrKerwin

Eu tenho um task, mais não faço a minima ideia de como limpar os mobs de todos os comandos do servidor..

Link para o comentário
Compartilhar em outros sites

11 respostass a esta questão

Posts Recomendados

Guest Ramon Dornelles

Tenta assim:

for(World w : Bukkit.getWorlds()){
for(Entity en : w.getEntities()){
en.remove();
}}

Fiz aqui no fórum, se ficar alguma coisa vermelha tenta ver as sugestões do seu IDE.

Link para o comentário
Compartilhar em outros sites

Guest Gostosão do fórum SrKerwin

Tenta assim:

for(World w : Bukkit.getWorlds()){
for(Entity en : w.getEntities()){
en.remove();
}}

Fiz aqui no fórum, se ficar alguma coisa vermelha tenta ver as sugestões do seu IDE.

		boolean LimpMobs = true;
		int repetir;
        
		public void newTask() {
		    repetir = Bukkit.getScheduler().scheduleSyncRepeatingTask(this, new Runnable() {
		        public void run() {
		            if (!(LimpMobs)) {
		                Bukkit.getScheduler().cancelTask(repetir);
		                repetir = -1;
		            return;
		            }
		            Bukkit.broadcastMessage("§3Todos os mobs foram limpados..");
		            for(World w : Bukkit.getWorlds()){
		            	for(Entity en : w.getEntities()){
		            	en.remove();
		            	}
		            }
		        }
		    }, 20 * 20L, 20 * 5L);
		}

Não está limpando os mobs nem nada.. está no máximo mandando o broadcast.. mais não e isso que eu quero!

Editado por Gostosão do fórum SrKerwin
Link para o comentário
Compartilhar em outros sites

Tenta assim:

for(World w : Bukkit.getWorlds()){
for(Entity en : w.getEntities()){
en.remove();
}}

Fiz aqui no fórum, se ficar alguma coisa vermelha tenta ver as sugestões do seu IDE.

Player também é uma Entity, fazendo isso, irá "remover" os players do servidor

Link para o comentário
Compartilhar em outros sites

Guest Gostosão do fórum SrKerwin

Player também é uma Entity, fazendo isso, irá "remover" os players do servidor

Eu tinha notado isso, só puis o código achando que poderia funcionar.. mais não funcionou.. "os jogadores travam sem usar comandos nem nada"!

Poderia me ajudar com algum outro método?

Link para o comentário
Compartilhar em outros sites

Guest Ramon Dornelles
		boolean LimpMobs = true;
		int repetir;
        
		public void newTask() {
		    repetir = Bukkit.getScheduler().scheduleSyncRepeatingTask(this, new Runnable() {
		        public void run() {
		            if (!(LimpMobs)) {
		                Bukkit.getScheduler().cancelTask(repetir);
		                repetir = -1;
		            return;
		            }
		            Bukkit.broadcastMessage("§3Todos os mobs foram limpados..");
		            for(World w : Bukkit.getWorlds()){
		            	for(Entity en : w.getEntities()){
		            	en.remove();
		            	}
		            }
		        }
		    }, 20 * 20L, 20 * 5L);
		}

Não está limpando os mobs nem nada.. está no máximo mandando o broadcast.. mais não e isso que eu quero!

 

Quando eu entrar no pc eu vejo se consigo te ajudar melhor.

Player também é uma Entity, fazendo isso, irá "remover" os players do servidor

Creio que o void "remove" não é instanciado para jogador, mas pra evitar dúvidas, basta adicionar isso no código:

if(en instanceof Player){
continue;
}
Link para o comentário
Compartilhar em outros sites

Guest Gostosão do fórum SrKerwin

Quando eu entrar no pc eu vejo se consigo te ajudar melhor.

Vai demorar? precisaria do código com urgencia.. mais se e uma opção única eu espero :p

Link para o comentário
Compartilhar em outros sites

Guest Ramon Dornelles

Vai demorar? precisaria do código com urgencia.. mais se e uma opção única eu espero :p

Add skype: ramonxd131, assim que add me avisa que eu logo lá

Link para o comentário
Compartilhar em outros sites

Usa assim:

       public void killAllEntities(){
		for (World w:Bukkit.getServer().getWorlds()){
			for (Entity ent:w.getEntities()){
				if (ent instanceof Player){
					continue;
				}
				//checar se eh entitade viva e não armor stands e item frames
				if (ent instanceof LivingEntity){
					((LivingEntity)ent).remove();
				}
			}
		}
	}
Link para o comentário
Compartilhar em outros sites

 

 

Usa assim:

public void killAllEntities(){
		for (World w:Bukkit.getServer().getWorlds()){
			for (Entity ent:w.getEntities()){
				if (ent instanceof Player){
					continue;
				}
				//checar se eh entitade viva e não armor stands e item frames
				if (ent instanceof LivingEntity){
					((LivingEntity)ent).remove();
				}
			}
		}
	}

Por que fez Cast em ent?

Link para o comentário
Compartilhar em outros sites

Por que fez Cast em ent?

Não precisa mesmo! Procurei kill em livingEntity mas n tem, dai eskeci de tirar, mas n interfere em nd nao ^^ 

logo-forum.png

 

 

Sua dúvida foi marcada como [Resolvido] e movido à área de dúvidas resolvidas.

 

 

Atenciosamente,

Gamer's Board

Link para o comentário
Compartilhar em outros sites

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