ServerPlugin eSupport - Helfe deinen Spielern

Dieses Thema im Forum "Selbstgeschriebene Plugins | Mods | Programme" wurde erstellt von ScaryHutman, 12. Februar 2013.

  1. ScaryHutman
    Offline

    ScaryHutman

    Registriert seit:
    1. Januar 2013
    Beiträge:
    205
    Ort:
    NRW
    Minecraft:
    Scary_Hutman
    Es ist leider oft der Fall, dass Spieler es nicht hinkriegen ein Kommando richtig auszuführen. Darum habe ich ein kleines PlugIn geschreiben, womit die Admins diesen Spielern helfen können.


    Commands:
    /runcmd <Spieler> <CMD>: führt für den Spieler ein Kommando aus.

    Permissions:
    eSupport.run: Permission für das /runcmd-Kommando. (default: op)
    eSupport.exempt: Spieler mit dieser Permission können nie das Ziel von /runcmd sein. (default: op)

    Bugs?
    - Keine!

    Download:
    v1.0: Den Anhang eSupport.zip betrachten

    ScaryHutman
     
    #1
  2. Benni1000
    Offline

    Benni1000 Ehem. Teammitglied

    Registriert seit:
    4. Mai 2012
    Beiträge:
    1.408
    ### freigeschaltet ###
     
    #2
  3. MaryJane
    Offline

    MaryJane

    Registriert seit:
    20. Juni 2012
    Beiträge:
    5
    Ziemlich coole idee :D
    Ich werde es mal ausprobieren.
     
    #3
  4. BlueFreakLP
    Offline

    BlueFreakLP

    Registriert seit:
    10. Januar 2012
    Beiträge:
    97
    Mal abgesehn das das gleiche mit Essentials mit /sudo geht... Wäre dann nur unötige rescourcen verschwendung
     
    #4
  5. games6471
    Online

    games6471

    Essentials hat zwar die gleiche Funktion, jedoch ist es gut so etwas zu entwickel und zu veröffentlich, damit der Entwickler Feedback zum Code bekommt und/oder die Bukkit-API sowie Java-API besser kennen lernt.
     
    #5
  6. ScaryHutman
    Offline

    ScaryHutman

    Registriert seit:
    1. Januar 2013
    Beiträge:
    205
    Ort:
    NRW
    Minecraft:
    Scary_Hutman
    Danke für dein Feedback. Ich kannte /sudo in Essentials noch nicht. ;)

    ScaryHutman
     
    #6
  7. games6471
    Online

    games6471

    Jetzt kennste es :D.
     
    #7
  8. Scanner44
    Offline

    Scanner44

    Registriert seit:
    29. Dezember 2012
    Beiträge:
    18
    ?

    Ich kenne das plugin
     
    #8
  9. games6471
    Online

    games6471

    Kannst du auch sagen woher?
     
    #9
  10. ScaryHutman
    Offline

    ScaryHutman

    Registriert seit:
    1. Januar 2013
    Beiträge:
    205
    Ort:
    NRW
    Minecraft:
    Scary_Hutman
    Ich hab's aber selber gemacht und kann dir auch den Quelltext geben, wenn du willst. Außerdem habe ich ein paar Programmierer vorher gefragt, wie das mit dem String Builder geht. ;P

    ScaryHutman
     
    #10
  11. CreaperLP
    Offline

    CreaperLP

    Registriert seit:
    27. Februar 2013
    Beiträge:
    1
    Tutorial

    Hey ScaryHutman

    Super Plugin!

    kannste mir mal bitte aufschreiben, wie du das Plugin geschrieben hast :)

    Würde mich sehr interessieren! Will auch eins schreiben <3

    Danke
    CreaperLP

    - - - Aktualisiert - - -

    Ups falscher Ordner \(^_^)/
    Bitte löschen
     
    #11
  12. ServerPvP
    Online

    ServerPvP

    if (cmd.getName().equalsIgnoreCase("runcmd")) {

    Wenn man nur einen Befehl in der plugin.yml eingetragen hat, braucht man nicht nachzuschauen wie der Befehl heisst.
    ChatColor.<farbe> ist langsamer als "§<farbe>" da es schließlich eine statische Klasse ist auf der deine Klasse zugreifen muss.
    Somit empfehle ich dir Paragraph Zeichen zu verwenden (z.B. "§cHallo")

    Ansonsten nicht schlecht für den Anfang :)

    MfG ServerPvP
     
    #12
  13. ScaryHutman
    Offline

    ScaryHutman

    Registriert seit:
    1. Januar 2013
    Beiträge:
    205
    Ort:
    NRW
    Minecraft:
    Scary_Hutman
    Ich gehe mal davon aus, dass du den Quelltext willst. ;D
    Leider musste ich in Eclipse öfter die workspace ändern, darum bin ich mir nicht sicher, ob das der richtige Quelltext ist.

    Code (Text):
    1.  
    2. package bukkit.ScaryHutman.eSupport;
    3.  
    4. import org.bukkit.ChatColor;
    5. import org.bukkit.command.Command;
    6. import org.bukkit.command.CommandSender;
    7. import org.bukkit.entity.Player;
    8. import org.bukkit.plugin.java.JavaPlugin;
    9.  
    10. public class Main extends JavaPlugin {
    11.  
    12.     @Override
    13.     public void onEnable() {    }
    14.  
    15.     @Override
    16.     public void onDisable() {   }
    17.  
    18.     @Override
    19.     public boolean onCommand(CommandSender sender, Command cmd, String label,
    20.             String[] args) {
    21.         if (cmd.getName().equalsIgnoreCase("runcmd")) {
    22.             if (sender.hasPermission("eSupport.run")) {
    23.                 if (args.length >= 2) {
    24.                     Player p = this.getServer().getPlayer(args[0]);
    25.                     if (p != null) {
    26.                         if (!p.hasPermission("eSupport.exempt")) {
    27.                             /*Command*/
    28.                             StringBuilder sb = new StringBuilder();
    29.                             for (int i = 1; i < args.length; i++) {
    30.                                 if (i == 1) {
    31.                                     sb.append(args[i]);
    32.                                     continue;
    33.                                 }
    34.                                 sb.append(" " + args[i]);
    35.                             }
    36.                             String sb2 = sb.toString();
    37.                             /*Ausführen*/
    38.                             this.getServer().dispatchCommand(p, sb2);
    39.                             p.sendMessage("§f'§b" + sender.getName()
    40.                                     + "§f' führte für dich das Kommando '§b/"
    41.                                     + sb2 + "§f' aus.");
    42.                             sender.sendMessage("§fKommando wurde erfolgreich ausgeführt!");
    43.                             return true;
    44.                         } else {
    45.                             // p hat die Permission.
    46.                             sender.sendMessage(ChatColor.RED + "Du darfst für '" + p.getName() + "' kein Kommando ausführen!");
    47.                             return true;
    48.                         }
    49.                     } else {
    50.                         // Das Ziel ist nicht online/ist null.
    51.                         sender.sendMessage(ChatColor.RED + "'" + args[0] + "' ist nicht online!");
    52.                         return true;
    53.                     }
    54.                 } else {
    55.                     // Zu wenig Argumente.
    56.                     sender.sendMessage(ChatColor.RED + "Zu wenig Argumente!");
    57.                     return false;
    58.                 }
    59.             } else {
    60.                 // Keine Perm.
    61.                 sender.sendMessage(ChatColor.RED + "Dir wurde nie erlaubt das zu tun!");
    62.                 return true;
    63.             }
    64.         }
    65.         return true;
    66.     }
    67.  
    68. }
    69.  
    70.  
     
    #13
  14. games6471
    Online

    games6471

    Die kleine Performanceänderung macht kaum was aus. Da gibt es viel mehr andere Möglichkeiten, wie einer Final Klasse. Jedoch sollte meiner Meinung nach jede Möglichkeit, welche nicht das Code-Design auf zu große Art verschlechtert genutzt werden.
     
    #14
  15. Cabraca
    Online

    Cabraca

    Und dann baut man einen zweiten ein, vergisst das einzufügen und das plugin fliegt einem beim ersten test um die ohren.
    Ernsthaft ob jetzt mit oder ohne command check wird an der performance nicht groß was ändern.

    Auch hier kann man den performancegewinn wieder als minimal bezeichnen.
    Ich nutze lieber die ChatColor Klasse und produziere verständlichen Code
    anstatt mit §xy zu arbeiten wo jeder erst die Farbcodes rausholen muss.
    Da gibts wesentlich schlimmere dinge wie Playerobjekt als Key der HashMap etc.
     
    #15
  16. #16
  17. Scanner44
    Offline

    Scanner44

    Registriert seit:
    29. Dezember 2012
    Beiträge:
    18
    mach denn befehl doch auch /support annehmen oder so
     
    #17
  18. games6471
    Online

    games6471

    Wozu? Der Befehl wird nur von einem Admin oder einem Teammitglied mit dem dementsprechenden Permissions ausgeführt werden können. Ich finde denen sollte es wohl erlaubt sein ohne auf die Annahme des Users zu warten, den Befehl auszuführen. Wieso sollte die Person, welche Hilfe benötigt die Anfrage ablehnen?
     
    #18