ServerPlugin Gegebene Items verschwinden

Dieses Thema im Forum "Programmierung" wurde erstellt von mcbukkitmc, 20. Juni 2015.

  1. mcbukkitmc
    Offline

    mcbukkitmc

    Registriert seit:
    18. April 2013
    Beiträge:
    63
    Hallo Leute,
    Hoffe ihr könnt mir helfen:
    Mein Problem ist wenn ich mir Items ein benanntes Item (Schwert) gebe,
    macht das nur ein halbes Herz Schaden und verschwindet bei Rechtsklick...
    Fehlermeldungen bekomme ich keine...
    Hier mein Code ^^ -
    Hoffe ihr könnt mir helfen.. ich verzweifele langsam..

    @EventHandler
    public void onPlayerDeathEvent(PlayerDeathEvent event){
    Player p = event.getEntity().getPlayer();
    Player killer = event.getEntity().getKiller();

    p.setHealth(20);
    p.setFoodLevel(999999999);
    killer.setHealth(20);
    killer.setFoodLevel(999999999);

    event.getDrops().clear();
    event.setDroppedExp(0);

    p.setLevel(0);
    p.sendMessage("§4Du wurdest von §1" + killer + "§4getötet!" );
    killer.setLevel(killer.getLevel() + 1);
    killer.sendMessage("§4Du bist nun Level:§1 " + killer.getLevel());



    if(p.getLevel() != 0);
    ItemStack item = new ItemStack(Material.WOOD_SWORD, 1);
    ItemMeta met =item.getItemMeta();
    met.setDisplayName("§3§lG§4§lG§a§l-HolzSchwert");
    item.setItemMeta(met);
    p.getInventory().setItem(0, item);
    p.updateInventory();
     
    #1
  2. JTK222
    Offline

    JTK222

    Registriert seit:
    5. September 2013
    Beiträge:
    663
    Ort:
    Planet Erde
    Minecraft:
    JTK222
    naja ich weiß nicht inwiefern man einem Totem spieler ein items geben kann.
    Machs lieber beim join world event (weiß nicht obs bei bukkit auch so heißt)
     
    #2
  3. Beaz22
    Offline

    Beaz22

    Registriert seit:
    20. Juni 2015
    Beiträge:
    2
    ok
     
    #3
    Payno4 gefällt das.
  4. feuerkralle2011
    Offline

    feuerkralle2011

    Registriert seit:
    3. Januar 2013
    Beiträge:
    26
    Minecraft:
    feuerkralle2011
    Versuch es vielleicht einmal mit einem PlayerDamageEvent. Dort kannst du Abfragen ob der Spieler so viel Schaden erleidet das er Stirbt und ihn dann davor bewahren. Somit hast du auch keine Probleme damit, dass er Items oder Erfahrungspunkte verlieren könnte.
     
    #4
  5. MrPyro13
    Offline

    MrPyro13

    Registriert seit:
    29. April 2013
    Beiträge:
    829
    Minecraft:
    MrPyro13
    Hallo,

    oder du nutzt einfach das PlayerRespawnEvent....
     
    #5
    mcbukkitmc gefällt das.
  6. Kronos197
    Offline

    Kronos197

    Registriert seit:
    20. Dezember 2013
    Beiträge:
    153
    Ort:
    Frankfurt
    Minecraft:
    Kronos197
    1. Das PlyerDeathEvent wird ausgeführt, kurz bevor er stirbt.
    2. Dadurch kann man ihn davor bewahren zu sterben so wie er es gemacht hat (Leben wieder aus 20.0 setzten)
    3. Warum machst du das FoodLevel auf 999999999 und nicht auf 20 (das ist normalerweise das maximale)
    4. Du setzt das Level vom Player auf 0 und fragst dann ab ob es nicht 0 ist. Aber wenn es 0 ist wird ihm das Item nicht gegeben.
    oder ich habe was falsch verstanden oder du has nicht alles reingepostet.

    Ich hoffe ich konnte helfen.
    LG
    Kronos197
     
    #6
    mcbukkitmc gefällt das.
  7. mcbukkitmc
    Offline

    mcbukkitmc

    Registriert seit:
    18. April 2013
    Beiträge:
    63
    Danke für die Tipps :) @MrPyro13 und @Kronos197
    Nun hab ich noch 2 weitere Fragen:
    1. Ich bekomme immer wenn ich den "killer" Abfrage im MC-Chat den Text: Du wurdest von Craftplayer(name=MCBUKKITMC) getötet! Ich will nur den Namen also dieses Craftplayer(=name weg .. - was mache ich falsch?
    und 2. Nach dem Respawn Items geben klappt jetzt perfekt aber wie frage ich ab ob irgendein Spieler Level 1 ist und wie gebe ich ihm dann die Sachen?

    Hier noch einmal mein Code :
    @EventHandler
    public void onPlayerDeathEvent(PlayerDeathEvent event){
    Player p = event.getEntity().getPlayer();
    Player killer = event.getEntity().getKiller();

    killer.setHealth(20);
    killer.setFoodLevel(20);

    event.getDrops().clear();
    event.setDroppedExp(0);

    p.sendMessage("§4Du wurdest von §1" + killer + "§4getötet!" );
    killer.setLevel(killer.getLevel() + 1);
    killer.sendMessage("§4Du bist nun Level:§1 " + killer.getLevel());

    }

    @EventHandler
    public void onPlayerRespawn(PlayerRespawnEvent respawnevent){
    Player death = respawnevent.getPlayer();
    if(death.getLevel() !=0);
    ItemStack item = new ItemStack(Material.WOOD_SWORD, 1);
    ItemMeta met =item.getItemMeta();
    met.setDisplayName("§3§lG§4§lG§a§l-HolzSchwert");
    item.setItemMeta(met);
    death.getInventory().setItem(0, item);
    death.updateInventory();
     
    #7
  8. MrPyro13
    Offline

    MrPyro13

    Registriert seit:
    29. April 2013
    Beiträge:
    829
    Minecraft:
    MrPyro13
    Was meinst du mit Level 1? In der Exp Leiste?
     
    #8
  9. mcbukkitmc
    Offline

    mcbukkitmc

    Registriert seit:
    18. April 2013
    Beiträge:
    63
    Ja genau in der Exp Leiste bei Kill bekommt der Killer ein "LevelUp" und soll dann auch neue Items erhalten
     
    #9
  10. MrPyro13
    Offline

    MrPyro13

    Registriert seit:
    29. April 2013
    Beiträge:
    829
    Minecraft:
    MrPyro13
    Naja ich denke mal mit:
    p.getLevel == 1
     
    #10
  11. mcbukkitmc
    Offline

    mcbukkitmc

    Registriert seit:
    18. April 2013
    Beiträge:
    63
    Stimmt war jetzt eine dumme Frage .. kannst du mir aber auch noch bei der anderen weiter helfen?
     
    #11
  12. pasce1998
    Offline

    pasce1998

    Registriert seit:
    20. April 2014
    Beiträge:
    21
    Ort:
    Hessen
    Minecraft:
    pasce1998
    Bei dem Namen musst du einfach killer.getName() verwenden statt "killer".
     
    #12
  13. 可愛い
    Offline

    可愛い

    Registriert seit:
    19. Mai 2014
    Beiträge:
    654
    "if(p.getLevel() != 0);" Vor allem müsste dir deine IDE da schon einen Hinweis geben, dass das wenig sinn macht.
     
    #13