NamenTags

Dieses Thema im Forum "Programmierung" wurde erstellt von Plugin00, 9. Februar 2013.

  1. Plugin00
    Offline

    Plugin00

    Registriert seit:
    3. Februar 2013
    Beiträge:
    71
    Hallo,

    Ich arbeite an ein "NameTags" Plugin.

    Mein Code:

    Code (Text):
    1.     @EventHandler(priority=EventPriority.HIGH)
    2.     public void onNameTags([COLOR="#FF0000"]PlayerReceiveNameTagEvent[/COLOR] ev) {
    3.        
    4.         Player pl = ev.getPlayer();
    5.        
    6.         if (pl.hasPermission("cSystem.Owner")) {
    7.             ev.setTag("§4§l" + pl.getName());
    8.         }
    9.  
    10.         if (pl.hasPermission("cSystem.Developer")) {
    11.             ev.setTag("§3§l" + pl.getName());
    12.         }
    13.        
    14.         if (pl.hasPermission("cSystem.Admin")) {
    15.             ev.setTag("§c§l" + pl.getName());
    16.         }
    17.        
    18.         if (pl.hasPermission("cSystem.CS")) {
    19.             ev.setTag("§2§l" + pl.getName());
    20.         }
    21.        
    22.         else {
    23.             ev.setTag("§f" + pl.getName());
    24.         }
    25.     }
    Nur das "PlayerReceiveNameTagEvent" gibs nicht??

    und ich arbeite auch an mein Ban System Code:

    //Code nicht mehr drine Grund: Habe schon Fertig :)

    Nur der "Offline" Spieler wird nicht gebannt!
    Nur der "Online" Spieler wird gebannt.

    Bitte Helfen, :)
     
    #1
  2. games6471
    Online

    games6471

    Das geht auch nur mit der TagApi. Also Bukkit selber bietet diese Funktion nicht an.
     
    #2
  3. Plugin00
    Offline

    Plugin00

    Registriert seit:
    3. Februar 2013
    Beiträge:
    71
    Aso, ok ist dan egal, bruche dan nur noch Hilfe wegen mein Ban System :)
     
    #3
  4. games6471
    Online

    games6471

    Also 2 Dinge.
    Eine Exception wird ich genauer definieren, hilft dir später einmal beim lesen des Cods.

    Bukkit.getPlayer gibt dir einen online Spieler zurück und keine Offline Spieler. Das geht nur hiermit Bukkit.getOfflinePlayers(), damit bekommst du ein Array mit allen Spielern, die auf dem Server waren. In Bukkit gibt es noch die Methode Bukkit.getOfflinePlayer(name), davon würde ich dir aber abraten, da hier nicht wirklich überprüft wird, ob der Spieler auch auf dem Server war. Bei Bukkit.getOfflinePlayers() werden nur die Spieler angezeigt die auf dem Server waren.

    - - - Updated - - -

    und Nice Avatar :p
     
    #4
  5. Calenria
    Offline

    Calenria

    Registriert seit:
    28. Juli 2012
    Beiträge:
    387
    Minecraft:
    Calenria
    Code (Text):
    1.  
    2. OfflinePlayer target = Bukkit.getOfflinePlayer(name);
    3. if(target.hasPlayedBefore()) {}
    4.  
    dann brauchste nicht die ganze liste von 10000 offline Spielern durchlaufen.
     
    #5
  6. Plugin00
    Offline

    Plugin00

    Registriert seit:
    3. Februar 2013
    Beiträge:
    71
    Danke für die hilfe, Jetzt geht es :)
     
    #6
  7. MrFlieder
    Offline

    MrFlieder

    Registriert seit:
    30. Dezember 2011
    Beiträge:
    333
    Ort:
    Österreich
    Minecraft:
    MrFlieder
    Einfach TagAPI herunterladen und in deiner Entwicklungsumgebung in dein NameTags-Plugin importieren.
     
    #7
  8. Plugin00
    Offline

    Plugin00

    Registriert seit:
    3. Februar 2013
    Beiträge:
    71
    So Hallo erst Mal,

    Ich habe mal mein Plugin weiter gemacht,

    Und jetzt geht es fast mit NameTags,

    Nur wenn ein Spieler mich anguckt ist der Name bei mir nicht mehr Farbig,

    Und wenn ich ein Spieler angucke hat er mein Namen,

    Was ist der Fail?

    Code:

    Code (Text):
    1.     @EventHandler(priority=EventPriority.HIGHEST)
    2.     public void onNameTags(PlayerReceiveNameTagEvent ev) {
    3.        
    4.         Player pl = ev.getPlayer();
    5.        
    6.         if (pl.hasPermission("cSystem.TabList.Owner")) {
    7.             ev.setTag("§4§l" + pl.getName());
    8.           }
    9.        
    10.           else if (pl.hasPermission("cSystem.TabList.Developer")) {
    11.             ev.setTag("§3§l" + pl.getName());
    12.           }
    13.        
    14.           else if (pl.hasPermission("cSystem.TabList.WebDev")) {
    15.                 ev.setTag("§2§l" + pl.getName());
    16.               }
    17.        
    18.           else if (pl.hasPermission("cSystem.TabList.Admin")) {
    19.               ev.setTag("§c§l" + pl.getName());
    20.           }
    21.        
    22.           else if (pl.hasPermission("cSystem.TabList.CS")) {
    23.               ev.setTag("§a§l" + pl.getName());
    24.           }
    25.     }
    26. }
     
    #8
  9. @param who player who is receiving the nametag
    @param named player whose nametag we're talking about

    => getNamedPlayer() => Der Spieler der gesehen wird
    => getPlayer() => (who) => Der Spieler der den anderen sieht.
     
    #9
  10. Plugin00
    Offline

    Plugin00

    Registriert seit:
    3. Februar 2013
    Beiträge:
    71
    Soll man es so machen?
    Kann grade nicht Testen,

    Code:

    Code (Text):
    1.     @EventHandler(priority=EventPriority.HIGHEST)
    2.     public void onNameTags(PlayerReceiveNameTagEvent ev) {
    3.        
    4.         Player pl = ev.getNamedPlayer();
    5.        
    6.         if (pl.hasPermission("cSystem.TabList.Owner")) {
    7.             ev.setTag("§4§l" + pl.getName());
    8.           }
    9.        
    10.           else if (pl.hasPermission("cSystem.TabList.Developer")) {
    11.             ev.setTag("§3§l" + pl.getName());
    12.           }
    13.        
    14.           else if (pl.hasPermission("cSystem.TabList.WebDev")) {
    15.                 ev.setTag("§2§l" + pl.getName());
    16.               }
    17.        
    18.           else if (pl.hasPermission("cSystem.TabList.Admin")) {
    19.               ev.setTag("§c§l" + pl.getName());
    20.           }
    21.        
    22.           else if (pl.hasPermission("cSystem.TabList.CS")) {
    23.               ev.setTag("§a§l" + pl.getName());
    24.           }
    25.     }
    26. }
     
    #10
  11. MrFlieder
    Offline

    MrFlieder

    Registriert seit:
    30. Dezember 2011
    Beiträge:
    333
    Ort:
    Österreich
    Minecraft:
    MrFlieder
    Dein Code sieht eigentlich funktionsfähig aus.
     
    #11
  12. Plugin00
    Offline

    Plugin00

    Registriert seit:
    3. Februar 2013
    Beiträge:
    71
    Ok danke,

    Nur muss man immer das Plugin 'TagAPI' auf denn Server haben?
    Weil das ist richtig Mist,
    Oder kann man es im Plugin mit einbauen?
     
    #12
  13. MrFlieder
    Offline

    MrFlieder

    Registriert seit:
    30. Dezember 2011
    Beiträge:
    333
    Ort:
    Österreich
    Minecraft:
    MrFlieder
    Wieso probierst du es nicht einfach aus?!
    Und wieso ist es Mist?
    Und nein, du musst das Plugin nicht auf deinem Server haben.
     
    #13
  14. Plugin00
    Offline

    Plugin00

    Registriert seit:
    3. Februar 2013
    Beiträge:
    71
    Ich meine mit Mist,

    Das es Mist ist das man auch das Plugin 'TagApi' auf denn Server brucht, weil ohne das Plugin geht das Plugin von mir nicht Mehr..
     
    #14
  15. TagAPI ist einfach eine API die alles für dich verwaltet. Du musst nichts machen, wie Vault, außerdem fördert es Plugin-kompatibilität etcpp.
     
    #15
  16. Plugin00
    Offline

    Plugin00

    Registriert seit:
    3. Februar 2013
    Beiträge:
    71
    Naja ist dan egal, ;)
     
    #16