ServerPlugin Bei OnPlayerDeath dem Toten ein Item geben

Dieses Thema im Forum "Programmierung" wurde erstellt von Keksi1996, 5. April 2015.

  1. Keksi1996
    Offline

    Keksi1996

    Registriert seit:
    25. März 2012
    Beiträge:
    11
    Ort:
    Herdecke
    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 (Text):
    1.     @EventHandler
    2.     public void onPlayerDeath(PlayerDeathEvent e){
    3.         Player p = (Player)e.getEntity().getPlayer();
    4.         Player k = (Player)e.getEntity().getKiller();
    5.         int lvl = this.player_level.get(k.getName()) +1;
    6.         this.player_level.put(k.getName(), lvl);
    7.        
    8.         e.setDeathMessage(null);
    9.         e.setDroppedExp(0);
    10.         e.getDrops().clear();
    11.        
    12.         k.setHealth(20D);
    13.         k.setExp(0);
    14.         k.setLevel(lvl);
    15.         k.setFireTicks(0);
    16.        
    17.         p.setHealth(20D);
    18.         p.setExp(0);
    19.         p.setLevel(1);
    20.         p.setFireTicks(0);
    21.        
    22.         k.getInventory().clear();
    23.         p.getInventory().clear();
    24.        
    25.         giveKit(k, lvl);
    26.         giveKit(p, lvl);
    27.        
    28.         Bukkit.broadcastMessage("§c" + k.getName() + " §ahat §c" + p.getName() + " §agetötet.");
    29.        
    30.         World w = p.getWorld();
    31.        
    32.        
    33.         Location loc1 = new Location(w, 176, 64, 92);
    34.         Location loc2 = new Location(w, 171, 64, 79);
    35.         Location loc3 = new Location(w, 185, 64, 68);
    36.         Location loc4 = new Location(w, 195, 66, 58);
    37.        
    38.        
    39.         Random rnd = new Random();
    40.         int zufallszahl = rnd.nextInt(3);
    41.          
    42.         Location loc = null;
    43.          
    44.         switch(zufallszahl){
    45.         case 0:
    46.             loc = loc1;
    47.             break;
    48.         case 1:
    49.             loc = loc2;
    50.             break;
    51.         case 2:
    52.             loc = loc3;
    53.             break;
    54.         case 3:
    55.             loc = loc4;
    56.             break;
    57.         }
    58.          
    59.         p.teleport(loc);
    60.        
    61.     }
    giveKit:
    Code (Text):
    1.     public void giveKit(Player p, Integer level){
    2.        
    3.         switch(level){
    4.         case 0:
    5.            
    6.             break;
    7.            
    8.         case 1:
    9.            
    10.             ItemStack stick = new ItemStack(Material.STICK);
    11.             stick.addUnsafeEnchantment(Enchantment.DAMAGE_ALL, 1);
    12.            
    13.             ItemMeta stickm = stick.getItemMeta();
    14.             stickm.setDisplayName("§b§lStock");
    15.             stick.setItemMeta(stickm);
    16.            
    17.             p.getInventory().addItem(stick);
    18.            
    19.             break;
    20.         case 2:
    21.             p.getInventory().addItem(new ItemStack(Material.WOOD_SWORD,1));
    22.             break;
    23.            
    24.         case 3:
    25.             p.getInventory().addItem(new ItemStack(Material.GOLD_SWORD,1));
    26.             break;
    27.            
    28.         case 4:
    29.             p.getInventory().addItem(new ItemStack(Material.STONE_SWORD,1));
    30.             break;
    31.            
    32.         case 5:
    33.             p.getInventory().addItem(new ItemStack(Material.DIAMOND_SWORD,1));
    34.             break;
    35.            
    36.         }
    37.        
    38.     }
     
    #1
  2. jotonch
    Offline

    jotonch

    Registriert seit:
    17. März 2012
    Beiträge:
    30
    Jemandem der tot ist kann man ja auch schlecht Items geben, versuchs mal mitm PlayerRespawnEvent
     
    #2
    AnonymusChaotic gefällt das.
  3. Keksi1996
    Offline

    Keksi1996

    Registriert seit:
    25. März 2012
    Beiträge:
    11
    Ort:
    Herdecke
    Minecraft:
    Derakar
    Ja ich weiß. Der Spieler stirbt ja nicht, weil ich das Leben ja wieder auf 20 setze.

    Code (Text):
    1. p.setHealth(20D);
     
    #3
  4. jotonch
    Offline

    jotonch

    Registriert seit:
    17. März 2012
    Beiträge:
    30
    #4
  5. Keksi1996
    Offline

    Keksi1996

    Registriert seit:
    25. März 2012
    Beiträge:
    11
    Ort:
    Herdecke
    Minecraft:
    Derakar
    Danke es Klappt jetzt alles! :D
     
    #5
    jotonch gefällt das.
  6. Thalion
    Offline

    Thalion

    Registriert seit:
    22. Juli 2014
    Beiträge:
    25
    Ort:
    Berlin
    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
     
    #6
  7. MrPyro13
    Offline

    MrPyro13

    Registriert seit:
    29. April 2013
    Beiträge:
    829
    Minecraft:
    MrPyro13
    Oder man nutzt einfach das PlayerRespawnEvent
     
    #7
  8. Keksi1996
    Offline

    Keksi1996

    Registriert seit:
    25. März 2012
    Beiträge:
    11
    Ort:
    Herdecke
    Minecraft:
    Derakar
    Ja ich hab das mit dem Scheduler gemacht.

    Code (Text):
    1.  
    2. @EventHandler
    3.     public void onPlayerDeath(PlayerDeathEvent e){
    4.         final Player p = (Player)e.getEntity().getPlayer();
    5.         Player k = (Player)e.getEntity().getKiller();
    6.        
    7.         int lvl = this.player_level.get(k.getName()) +1;
    8.         this.player_level.put(k.getName(), lvl);
    9.        
    10.         this.player_oldlevel.put(p.getName(), p.getLevel());
    11.         this.player_level.put(p.getName(), 1);
    12.        
    13.         int dlvl = this.player_level.get(p.getName());
    14.         this.player_level.put(p.getName(), dlvl);
    15.        
    16.         e.setDeathMessage(null);
    17.         e.setDroppedExp(0);
    18.         e.getDrops().clear();
    19.        
    20.         k.setHealth(20D);
    21.         k.setExp(0);
    22.         k.setLevel(lvl);
    23.         k.setFireTicks(0);
    24.        
    25.         p.setHealth(20D);
    26.         p.setExp(0);
    27.         p.setLevel(dlvl);
    28.         p.setFireTicks(0);
    29.        
    30.         k.getInventory().clear();
    31.         p.getInventory().clear();
    32.        
    33.         giveKit(k, lvl);
    34.         Bukkit.getScheduler().runTaskLater(this.plugin , new Runnable() {
    35.  
    36.             @Override
    37.             public void run() {
    38.             giveKit(p, dlvl);
    39.  
    40.             }
    41.         }, 2L);
    42.        
    43.        
    44.         Bukkit.broadcastMessage("§c" + k.getName() + " §ahat §c" + p.getName() + " §agetötet.");
    45.        
    46.         World w = p.getWorld();
    47.        
    48.        
    49.         Location loc1 = new Location(w, 176, 64, 92);
    50.         Location loc2 = new Location(w, 171, 64, 79);
    51.         Location loc3 = new Location(w, 185, 64, 68);
    52.         Location loc4 = new Location(w, 195, 66, 58);
    53.        
    54.        
    55.         Random rnd = new Random();
    56.         int zufallszahl = rnd.nextInt(3);
    57.          
    58.         Location loc = null;
    59.          
    60.         switch(zufallszahl){
    61.         case 0:
    62.             loc = loc1;
    63.             break;
    64.         case 1:
    65.             loc = loc2;
    66.             break;
    67.         case 2:
    68.             loc = loc3;
    69.             break;
    70.         case 3:
    71.             loc = loc4;
    72.             break;
    73.         }
    74.          
    75.         p.teleport(loc);
    76.        
    77.     }
     
    #8