• Es freut uns dass du in unser Minecraft Forum gefunden hast. Hier kannst du mit über 130.000 Minecraft Fans über Minecraft diskutieren, Fragen stellen und anderen helfen. In diesem Minecraft Forum kannst du auch nach Teammitgliedern, Administratoren, Moderatoren , Supporter oder Sponsoren suchen. Gerne kannst du im Offtopic Bereich unseres Minecraft Forums auch über nicht Minecraft spezifische Themen reden. Wir hoffen dir gefällt es in unserem Minecraft Forum!

Bei OnPlayerDeath dem Toten ein Item geben

Nevsix

Minecrafter
Registriert
25 März 2012
Beiträge
11
Alter
30
Diamanten
315
Minecraft
Derakar
Hey!
Ich habe folgendes vor. Es geht um ein GunGame Plugin und wenn ein Spieler stirbt er LvL 1 bekommt und wieder die anfangs Waffe hat. Doch bekommt er diese nicht. Bei dem Killer funktioniert alles.

OnPlayerDeath:
Code:
	@EventHandler
	public void onPlayerDeath(PlayerDeathEvent e){
		Player p = (Player)e.getEntity().getPlayer();
		Player k = (Player)e.getEntity().getKiller();
		int lvl = this.player_level.get(k.getName()) +1;
		this.player_level.put(k.getName(), lvl);
		
		e.setDeathMessage(null);
		e.setDroppedExp(0);
		e.getDrops().clear();
		
		k.setHealth(20D);
		k.setExp(0);
		k.setLevel(lvl);
		k.setFireTicks(0);
		
		p.setHealth(20D);
		p.setExp(0);
		p.setLevel(1);
		p.setFireTicks(0);
		
		k.getInventory().clear();
		p.getInventory().clear();
		
		giveKit(k, lvl);
		giveKit(p, lvl);
		
		Bukkit.broadcastMessage("§c" + k.getName() + " §ahat §c" + p.getName() + " §agetötet.");
		
		World w = p.getWorld();
		
		
		Location loc1 = new Location(w, 176, 64, 92);
		Location loc2 = new Location(w, 171, 64, 79);
		Location loc3 = new Location(w, 185, 64, 68);
		Location loc4 = new Location(w, 195, 66, 58);
		
		
		Random rnd = new Random();
		int zufallszahl = rnd.nextInt(3);
		 
		Location loc = null;
		 
		switch(zufallszahl){
		case 0:
			loc = loc1;
			break;
		case 1:
			loc = loc2;
			break;
		case 2:
			loc = loc3;
			break;
		case 3:
			loc = loc4;
			break;
		}
		 
		p.teleport(loc);
		
	}

giveKit:
Code:
	public void giveKit(Player p, Integer level){
		
		switch(level){
		case 0:
			
			break;
			
		case 1:
			
			ItemStack stick = new ItemStack(Material.STICK);
			stick.addUnsafeEnchantment(Enchantment.DAMAGE_ALL, 1);
			
			ItemMeta stickm = stick.getItemMeta();
			stickm.setDisplayName("§b§lStock");
			stick.setItemMeta(stickm);
			
			p.getInventory().addItem(stick);
			
			break;
		case 2:
			p.getInventory().addItem(new ItemStack(Material.WOOD_SWORD,1));
			break;
			
		case 3:
			p.getInventory().addItem(new ItemStack(Material.GOLD_SWORD,1));
			break;
			
		case 4:
			p.getInventory().addItem(new ItemStack(Material.STONE_SWORD,1));
			break;
			
		case 5:
			p.getInventory().addItem(new ItemStack(Material.DIAMOND_SWORD,1));
			break;
			
		}
		
	}
 

Thalion

Minecrafter
Registriert
22 Juli 2014
Beiträge
26
Diamanten
5
Minecraft
Spartaner_v1
Hallöchen,
wollte nur deine Fehler korregieren,
Das PlayerDeathEvent wird aufgerufen, wenn der Player tot ist / stirbt. Heißt im ganzen du musst beim DamageEvent gucken ob der Player seine kompletten Leben verlieren würde.

PlayerDeathEvent implementiert nicht Cancellable

Mfg,
Thalion
 

Nevsix

Minecrafter
Registriert
25 März 2012
Beiträge
11
Alter
30
Diamanten
315
Minecraft
Derakar
Ja ich hab das mit dem Scheduler gemacht.

Code:
@EventHandler
    public void onPlayerDeath(PlayerDeathEvent e){
        final Player p = (Player)e.getEntity().getPlayer();
        Player k = (Player)e.getEntity().getKiller();
       
        int lvl = this.player_level.get(k.getName()) +1;
        this.player_level.put(k.getName(), lvl);
       
        this.player_oldlevel.put(p.getName(), p.getLevel());
        this.player_level.put(p.getName(), 1);
       
        int dlvl = this.player_level.get(p.getName());
        this.player_level.put(p.getName(), dlvl);
       
        e.setDeathMessage(null);
        e.setDroppedExp(0);
        e.getDrops().clear();
       
        k.setHealth(20D);
        k.setExp(0);
        k.setLevel(lvl);
        k.setFireTicks(0);
       
        p.setHealth(20D);
        p.setExp(0);
        p.setLevel(dlvl);
        p.setFireTicks(0);
       
        k.getInventory().clear();
        p.getInventory().clear();
       
        giveKit(k, lvl);
        Bukkit.getScheduler().runTaskLater(this.plugin , new Runnable() {

            @Override
            public void run() {
            giveKit(p, dlvl);

            }
        }, 2L);
       
       
        Bukkit.broadcastMessage("§c" + k.getName() + " §ahat §c" + p.getName() + " §agetötet.");
       
        World w = p.getWorld();
       
       
        Location loc1 = new Location(w, 176, 64, 92);
        Location loc2 = new Location(w, 171, 64, 79);
        Location loc3 = new Location(w, 185, 64, 68);
        Location loc4 = new Location(w, 195, 66, 58);
       
       
        Random rnd = new Random();
        int zufallszahl = rnd.nextInt(3);
         
        Location loc = null;
         
        switch(zufallszahl){
        case 0:
            loc = loc1;
            break;
        case 1:
            loc = loc2;
            break;
        case 2:
            loc = loc3;
            break;
        case 3:
            loc = loc4;
            break;
        }
         
        p.teleport(loc);
       
    }
 
Oben