Ir para conteúdo
  • 0

[Resolvido] Não remover itemframe (entidade)


iVictor777z

Pergunta

Olá a todos.

 

Bom minha dúvida é: Como faço para não remover os item frame mesmo loopando todas as entidades de todos os mundos & removendo-as.

 

Código (Créditos do código: Dery, que estava ajudando um cara como remover os bag e eu peguei):


	@EventHandler
	public void onDeath(final PlayerDeathEvent e) {
		if (e.getEntity() instanceof Player) {
			if (e.getEntity().getKiller() instanceof Player) {
				e.getEntity().getKiller().sendMessage("§4AVISO: §cVocê matou o jogador §f" + e.getEntity().getName()
						+ " §ce os items serão removidos em 5s.");
				Bukkit.getScheduler().scheduleSyncDelayedTask(this, new Runnable() {

					@Override
					public void run() {
						for (World w : Bukkit.getWorlds()) {
							for (Entity e : w.getEntities()) {
								if (e instanceof Item) {
									e.remove();
								} else if (e instanceof Entity) {
									if (e instanceof Player)
										continue;
									e.remove();
								}
							}
						}
					}
				}, 5 * 20L);
			}
		}
	}

Como faço para não remover os item frame assi mque remvoer o bag.

 

OBS: Já tentei usar if (!(e instanceof ItemFrame)) {

Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

Olá a todos.

 

Bom minha dúvida é: Como faço para não remover os item frame mesmo loopando todas as entidades de todos os mundos & removendo-as.

 

Código (Créditos do código: Dery, que estava ajudando um cara como remover os bag e eu peguei):


	@EventHandler
	public void onDeath(final PlayerDeathEvent e) {
		if (e.getEntity() instanceof Player) {
			if (e.getEntity().getKiller() instanceof Player) {
				e.getEntity().getKiller().sendMessage("§4AVISO: §cVocê matou o jogador §f" + e.getEntity().getName()
						+ " §ce os items serão removidos em 5s.");
				Bukkit.getScheduler().scheduleSyncDelayedTask(this, new Runnable() {

					@Override
					public void run() {
						for (World w : Bukkit.getWorlds()) {
							for (Entity e : w.getEntities()) {
								if (e instanceof Item) {
									e.remove();
								} else if (e instanceof Entity) {
									if (e instanceof Player)
										continue;
									e.remove();
								}
							}
						}
					}
				}, 5 * 20L);
			}
		}
	}

Como faço para não remover os item frame assi mque remvoer o bag.

 

OBS: Já tentei usar if (!(e instanceof ItemFrame)) {

O que está removendo ? o ItemFrame ou os itens que estão dentro do item frame ?

 

@EDIT

 

Caso seja o itemframe 

 

coloque:

 

 

if (e instanceof Item && ((Item) e).getItemStack().getType() != Material.ITEM_FRAME)) {
Editado por Cuthmf
Link para o comentário
Compartilhar em outros sites

O itemframe, e todos os items do chão (como eu queria, menos remover o item frame =/)

Ver o @EDIT que eu coloquei no post acima

 

@EDIT

 

Ah agora entendi o que vc quer fazer, é só colocar e.getDrops().clear();

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

Como eu desenvolvi um sistema de Armor Stand clicáveis e precisava que elas NÃO fossem removidas eu fiz algo que funciona, na verdade vou apenas te passar o código referente ao "check" se uma entidade é um item frame :) Espero que ajude



if (e.getEntity().getType() != EntityType.ITEM_FRAME) {

E bom, é só isso, no seu evento de limpar as entidades você irá adicionar isso e quando as entidades forem limpas os Item Frames não serão excluidos.


Link para o comentário
Compartilhar em outros sites

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