Ir para conteúdo
  • 0

Cancelar Drop De um player quando morre


dudu

Pergunta

[[Template forums/front/topics/postContainer is throwing an error. This theme may be out of date. Run the support tool in the AdminCP to restore the default theme.]]

7 respostass a esta questão

Posts Recomendados

Tipo ja fiz isso o que queria saber mesmo e como faz para exemplo dropar so o inventario tipo a armadura que era pra ser dropada levasse o clear e nao ficava com o player tendeu dropava so o inventario e a armadura nao e o inverso tambem;

 

Basicamente ele vai dropar todos os items, o que voce precisa fazer é ver os items que são armaduras e setar para o player quando ele renascer

	public HashMap<Player, ItemStack[]> pitems = new HashMap<>();
	
	@EventHandler
	public void playerd(PlayerDeathEvent e) {
		Player p = e.getEntity();
		pitems.put(p, p.getInventory().getArmorContents());
		e.getDrops().removeAll(Arrays.asList(p.getInventory().getArmorContents()));
	}
	
	@EventHandler
	public void playerr(PlayerRespawnEvent e) {
		Player p = e.getPlayer();
		if (pitems.containsKey(p)) {
			p.getInventory().setArmorContents(pitems.get(p));
		}
	}
	 

isso é só um exemplo n sei se funciona fiz pelo navegador msm mas se vc pensar um pouco consegue fazer melhor!

 

EDIT:

	public HashMap<Player, ItemStack[]> pitems = new HashMap<>();
	public HashMap<Player, ItemStack[]> pinvitems = new HashMap<>();
	
	public boolean salvarInventario = false;
	public boolean salvarArmaduras = true;
	
	@EventHandler
	public void playerd(PlayerDeathEvent e) {
		Player p = e.getEntity();
		if (salvarArmaduras) {
			pitems.put(p, p.getInventory().getArmorContents());
			e.getDrops().removeAll(Arrays.asList(p.getInventory().getArmorContents()));
		}
		if (salvarInventario) {
			pinvitems.put(p, p.getInventory().getContents());
			e.getDrops().removeAll(Arrays.asList(p.getInventory().getContents()));
		}
	}
	
	@EventHandler
	public void playerr(PlayerRespawnEvent e) {
		Player p = e.getPlayer();
		if (pitems.containsKey(p)) {
			p.getInventory().setArmorContents(pitems.get(p));
			pitems.remove(p);
		}
		if (pinvitems.containsKey(p)) {
			p.getInventory().setContents(pinvitems.get(p));
			pinvitems.remove(p);
		}
	}
Editado por FilipeNock
Link para o comentário
Compartilhar em outros sites

	@EventHandler
	public void death(PlayerDeathEvent e) {
		e.getDrops().clear();
	}
	

faz um scan nos items dropados os que forem armadura por exemplo adiciona em uma hashMap quando  o player respawnar seta os items de novo para o jogador

Link para o comentário
Compartilhar em outros sites

	@EventHandler
	public void death(PlayerDeathEvent e) {
		e.getDrops().clear();
	}
	

faz um scan nos items dropados os que forem armadura por exemplo adiciona em uma hashMap quando  o player respawnar seta os items de novo para o jogador

 

Tipo ja fiz isso o que queria saber mesmo e como faz para exemplo dropar so o inventario tipo a armadura que era pra ser dropada levasse o clear e nao ficava com o player tendeu dropava so o inventario e a armadura nao e o inverso tambem;

Link para o comentário
Compartilhar em outros sites

Tipo ja fiz isso o que queria saber mesmo e como faz para exemplo dropar so o inventario tipo a armadura que era pra ser dropada levasse o clear e nao ficava com o player tendeu dropava so o inventario e a armadura nao e o inverso tambem;

É só você pegar o getArmorContents(); do player e dar clear.

Link para o comentário
Compartilhar em outros sites


public HashMap<Player, ItemStack[]> itens = new HashMap<>();

 

@EventHandler

public void onPlayerDeath(PlayerDeathEvent event) {

Player player = event.getEntity();

itens.put(player, player.getInventory().getArmorContents());

event.getDrops().removeAll(Arrays.asList(p.getInventory().getArmorContents()));

}

Link para o comentário
Compartilhar em outros sites

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