ServerPlugin Check ob jmd ein Namen gemacht hat auf dem Item

Dieses Thema im Forum "Programmierung" wurde erstellt von BNLynxion, 22. Juni 2015.

  1. BNLynxion
    Offline

    BNLynxion

    Registriert seit:
    29. Juli 2014
    Beiträge:
    8
    Ort:
    Luzern Schweiz
    Minecraft:
    BNLynxion
    Hey liebe Community,

    Ich arbeite derzeit an einem Server Projekt und Entwickle Plugins....
    Jetzt hab ich ein weiteres Feature eingebaut in einem Haupt Plugin, das den Spieler Effekte ermöglichen soll.
    Das Problem.... Ich schaffe es nicht das es nur auf einem Item läuft das nen bestimmten Namen hat....
    Gedacht ist zb: "railgun.firework" und erst dann soll es laufen....

    Hier mal den Code:
    Code (Text):
    1. @EventHandler
    2.   public void railShot(PlayerInteractEvent event){
    3.      try {
    4.     if (event.getAction() != Action.RIGHT_CLICK_AIR) return;
    5.     Player p = event.getPlayer();
    6.     if (p.getItemInHand()==null) return;
    7.     if (p.getItemInHand().getType()!= Material.BLAZE_ROD) return;
    8.     if (p.hasPermission("brandnetz.effekte.railgun") && p.isOp()==true){
    9.          
    10.     Location loc1 = p.getEyeLocation();
    11.     @SuppressWarnings("deprecation")
    12.     Location loc2 = p.getTargetBlock((HashSet<Byte>) null, 100).getLocation();
    13.     if (p.getItemInHand().getType().)
    14.     if (loc1 == null) return;
    15.     if (loc2 == null) return;
    16.     List<Location> line = Util.buildLine(loc1, loc2); // provided by PlayEffect
    17.     if (line.size()<=1) return;
    18.     line.remove(0);
    19.    
    20.     for (Location l : line){
    21.     // PlayEffect: play firework effect to simulate railgun trails
    22.     String param = "loc:"+Util.locationToStrLoc(loc1)+" loc2:"+Util.locationToStrLoc(loc2)+" draw:line color:red type:ball";
    23.     PlayEffect.play(VisualEffect.FIREWORKS_SPARK, param);
    24.    
    25.     for (Entity e : l.getChunk().getEntities()){
    26.     if (!(e instanceof LivingEntity)) continue;
    27.     LivingEntity le = (LivingEntity) e;
    28.     if (le.getLocation().distance(l)<=1.5) le.damage(le.getMaxHealth()*2);
    29.     }
    30.     }
    31.     } else {
    32.        p.sendMessage(plugin_manager + ChatColor.RED + "Du hast keinen Zugang zu diesem Feature!");
    33.     }
    34.      } catch (Exception e) {
    35.        e.printStackTrace();
    36.        p.sendMessage(plugin_manager + ChatColor.RESET + "Diesen Code bitte dem Techniker senden: " + ChatColor.RED + "0x00054E");
    37.      }
    38.   }
    Frage:
    Wie kann ich jetzt überprüfen ob der Gegenstand diesen Namen hat?
    Ich wäre für Links und Beispiel Codes sehr froh

    Danke schon jetzt für die Hilfe :)
     
    #1
  2. MrPyro13
    Offline

    MrPyro13

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

    ich würde dir empfehlen alle p.getItemInHand() mit ev.getItem() zu ersetzen.
    Nun zum eigentlichen Problem:
    Code (Text):
    1. if (ev.getItem() != null)
    2. if (ev.getItem().getItemMeta().hasDisplayname())
    3. if (ev.getItem().getItemMeta().getDisplayname().equals("BossItem"))[/code
     
    #2
  3. iTz_Proph3t
    Offline

    iTz_Proph3t Moderator

    Registriert seit:
    24. Oktober 2012
    Beiträge:
    1.117
    Minecraft:
    iTz_Proph3t
    Hab euch das mal in Code-Format abgespeichert. Um das selbst zu machen, einfach {code] am Anfang schreiben und {/code] am ende.
    Nurnoch die geschweiften Klammern durch eckige ersetzen, dann klappt es ;)
     
    #3
  4. MrPyro13
    Offline

    MrPyro13

    Registriert seit:
    29. April 2013
    Beiträge:
    829
    Minecraft:
    MrPyro13
    Alles klar ;)
    War am Handy und hatte keine Lust drauf, wegen 3 Zeilen Code ;)
     
    #4