Befehlshilfe

Geschenke auf Origo können nun wieder vom Absender abgeholt werden, wenn diese noch nicht geöffnet worden sind.
Der Server wurde erfolgreich auf die Version 1.20.4 aktualisiert und nun wieder erreichbar.
  • Hey Programmiererteam. Wenn man den Server nach längerer Zeit mal wieder betritt oder neu ist, kann eine Befehlshilfe nicht schlecht sein:
    Ich schlage deshalb eine Liste von Hilfethemen vor, die bestimmte, einzigartige Schlagworte besitzen und nach Ähnlichkeit zu dem eingegebenem Befehl untersucht werden (z.B. per Levenshtein-Differenz) und dann auf das Thema oder den Befehl verweisen.


    Ein Beispiel: man möchte ein Grundstück mieten und gibt "/mieten" ein. Es erscheint, da "miete" in der Keyword-Liste steht und mit der Levensthein-Differenz nur 1 vom Wort "mieten" entfernt ist, der Hinweis auf den Befehl /gs. Gibt man /gs ? ein, sollte eine Hilfeseite zu dem Thema angezeigt werden(kein Link, sondern eine kurze Ingameerklärung). Des Weiteren könnte man das natürlich auch verbinden und aus einem "/miete ?" die Erklärung für /gs anzeigen.


    LG Miner952x alias Antonio Noack :)

  • Tja... ich würde das gerne machen, aber ich kann nicht Programmieren ^^ und bei uns in Informatik gehts nicht voran mit dem Thema Programmieren weil Lazarus nur am Abkratzen ist :(


    Falls mir jemand etwas Privatunterricht geben mag, ich bin sehr wissbegierig :D


    ~Gesendet mit Tapatalk. Falls das hier nicht wie ein Beitrag aussieht, dann ist die App wohl mal wieder abgekackt xD

  • Hi Leute, ich habe mir ab und zu mal die Zeit genommen und es selber geschrieben. Im Moment wartet das Plugin noch auf die Freigabe bei bukkit.org, müsste aber in ein paar Stündchen runterladbar sein :)
    Es müsste auf allen Bukkit- und damit auch Bungeeversionen laufen
    http://dev.bukkit.org/bukkit-plugins/plugin-help/
    Die Hilfethemen erstellt ihr einfach als neue .txt jeweils und tut sie in den Configordner.
    1. Zeile ist der Name des Befehles oder der Themenname
    2. Zeile sind die benötigten Permissions, oder leer, wenn es jeder sehen können soll
    3. Zeile sind alle Schlüsselwörter getrennt bei Kommas
    4. und folgende Zeile werden als Hilfe angezeigt
    Die Nachricht, die angezeigt werden soll à la Befehl nicht gefunden, was hältst du von xyz? kann in der config.yml geändert werden.
    Formatierungszeichen wie §1 etc. können einfach benutzt werden


    LG Miner952x

  • Nette Sache.
    Ich würde mich noch über nen github Link freuen.
    Zudem fehlt noch die Kompatibilität mit dem TextComponent, um anklickbare Texte oder Hover zu realisieren. Brauchst du dabei Hilfe, melde dich bei mir, ich hab da schon was gebastelt.

  • Ist das ganze jetzt ein Bungeecord oder ein Bukkit-Plugin?

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs,
    and the Universe trying to produce bigger and better idiots.
    So far, the Universe is winning.

  • Rohtext kann ab der 1.1 jetzt gesendet werden :)
    Es ist für Bukkit, da das Grundgerüst eures Servers aus Bukkit oder Spigot bestehen wird, selbst wenn ihr Bungee nutzt. Wenn ihr mir ein einfaches Tutorial für das PlayerCommandPreprocessEvent in Bungee gebt, schreib ich es gerne dafür um, aber ich sehe es ehr als unnötig, da das die Teilserver machen können


    Und da ich bisher keinen Githubaccount habe und ich Alternativen habe, die das gleiche machen, und ich nicht so auf noch eine Passwortunsicherheitslücke stehe, hab ich hier einen Mediafire-Link für euch: http://www.mediafire.com/downl…4o7f3u/PluginHelp+1.1.jar

  • Und da ich bisher keinen Githubaccount habe und ich Alternativen habe, die das gleiche machen, und ich nicht so auf noch eine Passwortunsicherheitslücke stehe, hab ich hier einen Mediafire-Link für euch:


    Der Mediafire-Link enthält einfach nur die jar. Ein bissel Code wäre auf jeden Fall interessant. :)

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs,
    and the Universe trying to produce bigger and better idiots.
    So far, the Universe is winning.

  • Ich hab jetzt mal deine Main überflogen.
    Ich selbst bin jetzt kein Profi im Programmieren, mir sind aber direkt einige Punkte aufgefallen, die nicht ganz so schön sind und ausgebessert werden sollten.

    • Möchtest du mit deinem Plugin Geld verdienen oder machst du das aus Spaß? Ich frage deswegen, weil du einen Befehl /help info eingebaut hast, womit jeder die Information bekommt, wie deine PayPal-Adresse lautet. Zudem steht beim starten auch deine PayPal-Email Adresse drin.
      Ich für meinen Teil programmiere ohne kommerziellen Hintergrund. Ich möchte mein Wissen vertiefen, dafür aber keine Gegenleistung (außer mal paar Danke :) ) erhalten. Doch dieses "Gebettel", dass doch hier ein PayPal Konto existiert, ist echt etwas komisch.
    • Deine Main-Klasse ist überladen. Damit meine ich keine überladene Methode, sondern zu viele Funktionen drin.
      Sachen wie Commands kann man mit einem CommandHandler ausführen. Schau dich mal hier um.
    • Du kannst config.yml-Dateien als Vorlage aus deinem Plugin in den Plugin-Ordner kopieren. Du brauchst dafür dann nicht so eine komische Schreibweise, wie du sie hast. Dazu gibts mehr als genug Wiki-Einträge.
    • Mit "//" und "/*" und "*/" kann man kommentieren. Du machst es dir damit selber einfacher, wenn du dir das Plugin in 3 Monaten nochmal anschaust :)
  • Ein Decompiler ist kein wirklicher Codeersatz.
    Kommentare werden ignoriert, die Einrückungen etc. sind meist anders und manchmal treten Bugs auf.
    Zusammengefasst: Der Code wird hässlich und unleserlich.
    Ansonsten kann ich nur @JOO200 beipflichten.


    Die Idee des Plugins finde ich allerdings sehr gut. Grade Neulingen kann das sicher helfen.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs,
    and the Universe trying to produce bigger and better idiots.
    So far, the Universe is winning.

  • @Help info: Geld schlage ich ungern aus ;) - und viele Leute geben auch selber Geld für Entwickler aus, deshalb der Hinweis - programmieren tu ich auch aus Spaß, aber wieso nicht Geld annehmen, wenn es anderen für das gleiche hinterhergeworfen wird. Die Beispieldatei dient nicht erstrangig der Werbung sondern dem Nutzer zu zeigen, wie man neue Hilfedateien erstellt (einfaches Umschreiben = 1. echtes Hilfethema, Kopieren und Umschreiben und man hat sein 2. Thema).


    Überladen? Die Klasse hat 250 Zeilen und ich habe durchaus Klassen in anderen Projekten mit 1500 Zeilen (ab 1000 sortiere ich aus)


    Und zu der Frage nach den Befehlen ausführen: ich wollte nicht alle Kombinationen von Befehlen ausprobieren, sondern auf die reagieren, die der Server NICHT kennt, selbst wenn sich der Nutzer leicht verschreibt


    Mein Code war nicht für irgenden zum Lesen gedacht, sodass ich keine Kommentare geschrieben habe, da die Namen so gut wie alles gesagt haben. Bei größeren Dingen oder bei Sachen, die nicht 100% durchdacht sind, mache ich mir auch Kommentare.


    Und dekompilierten Text zu lesen ist halt eine schöne Verständnisübung ;) - bei mir wären auch keine Kommentare verschwunden :D


    Und diese "komische Schreibweise" hat es mir einfacher gemacht, bzw. ich wollte nicht die 5 Zeilen mit this.getClass().getResourceAsStream("") etc. irgendwoher kopieren. Und ich muss mich nicht um die Formatierung der ymls kümmern.


    PS für die Leseratten eine leicht kommentierte Klasse aus meinem rießigstem Pluginprojekt: http://pastebin.com/aqDbyk2F
    Und meine Sitzung auf eurer Website läuft ständig aus, sodass ich den Text immer neu formatieren darf, da nach Strg+C/V die Zeilenumbrüche verschwunden sind

  • Der Link geht nicht.
    404


    // EDIT
    Besser :)

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs,
    and the Universe trying to produce bigger and better idiots.
    So far, the Universe is winning.

  • Überladen? Die Klasse hat 250 Zeilen und ich habe durchaus Klassen in anderen Projekten mit 1500 Zeilen (ab 1000 sortiere ich aus)


    :S:S:S
    Hab hier mal ne kleine Lektüre für dich: Clean Code[/quote]
    Da ich noch an keinen größeren Projekten mit anderen, sondern vorerst an größeren eigentlich nur alleine arbeite: Nein, Danke - ich strukturiere meinen Code so, wie es in meinen Augen schön aussieht. Der Inhalt ist übrigens "clean", also leicht verständlich. Vielleicht ist mein Gedächtnis zu gut, aber die Variablen haben schon entsprechend ihre Namen und die Funktionen machen das, was sie versprechen. Sollte ich eine API schreiben wollen verberge ich meinen Teil einfach und platziere für diesgehörige Liebhaber die Setter und Getter. Wenn ich eine Stelle suche, brauche ich nur Strg+F ;P


    achja und doppelte Zitate funktionieren offenbar nicht (oder ich hab was zuviel weggelöscht, weil es doppelt aussah ^^ xD :D)
    achja und ihr kennt den Sinn des (Leseratten)Plugins dahinter ja kaum - vielleicht sind die Zeilen ja die schönste Art und Weise das zu beschreiben xD


    und in Eclipse kann man auch Blöcke zusammenfassen. Das ist genauso übersichtlich wie 20 Fenster offen zu haben

  • Und ich dachte, meine eine Klasse mit 187 Zeilen wäre viel Code - und das ist nicht die Hauptklasse des Plugins.


    Doppelte Zitate funktionieren einwandfrei.


    Klar - du selber arbeitest alleine an deinen Projekten - aber wie soll jemand sich in dein Projekt einarbeiten, wenn du eines abgibst? Es wird sicherlich passieren, dass du ein Plugin nicht mehr weiter entwickelst, es aber ein anderer übernehmen möchte. Bei so einem Code ist Neuschreiben schneller erledigt.


    Stimmt - viele "Tabs" offen zu haben ist auch nicht die schönste Variante, aber nachdem Klassen auch Namen haben dürfen (bzw müssen), kann man mit entsprechenden Namen wissen, was diese Klassen tun. Und wenn man nun an einem Teil arbeitet, wo man einen anderen Teil nicht braucht, kann man den Tab einfach schliessen. Zudem passen bei mir 11 Tabs in Eclipse nebeneinander, obwohl ich noch den Package Explorer offen habe.


    Wie dem auch sei - jeder schreibt seine Progrämmchen wie er es gerne möchte. Trotzdem kann ich dir folgendes Bild einfach nicht vorenthalten:

  • Es geht jetzt weniger um die Zeilenanzahl, sondern darum, dass einfach alles in einer Klasse zusammengewürfelt wurde.
    Wenn man objektorientiert programmieren will, dann sollte man auch eine klare Struktur haben, d.h. Listener, Befehle, etc. kommen nicht in die Main-Klasse sondern jeweils in eigene Klassen.
    Deine Main-Klasse ("Plugin" ist übrigens ein ungünstiger Name) hätte ich in mindestens 3 Klassen aufgeteilt.


    Das Argument "Ich programmiere so wie es mir am besten gefällt. Den Code lese ehh nur ich" höre ich ziemlich häufig.
    MMn sollte man auch dann auf ordentlichen Code achten, einfach nur um sich nicht irgend einen Müll anzugewöhnen.
    Spätestens dann, wenn du irgend wann mal wirklich eine Library oder im "Team" programmieren willst, wirst du Probleme bekommen.
    Und auch wenn du es jetzt nicht glaubst: Wenn das Projekt ein halbes Jahr nicht angerührt wurde, wirst du den Code hier auch nicht mehr verstehen:


    Desweiteren bin ich ein großer Fan von gewissen Code-Standards. Ich kann dir nur empfehlen dich mit Code-Conventions vertraut zu machen. Ob es nun die von Oracle, von Google oder sonst wem sind, ist vollkommen egal, Hauptsache der Code ist einheitlich.


    PS: Versteh das nicht als Anschuldigung, etc. sondern einfach als gut gemeinte Ratschläge. Wenn ich mir meinen Code von vor 2 Jahren anschaue dann würde ich den am liebsten auch in den nächst besten Papierkorb verschieben. :D


    // EDIT
    @JOO200 Wie gesagt, die Länge der Zeilen ist nicht alles. Ich hab teilweise Interfaces mit über 500 Zeilen in meinen Projekten. Da sind aber dann 300 Zeilen davon Javadoc-Kommentare. ^^ https://github.com/BtoBastian/…/javacord/DiscordAPI.java

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs,
    and the Universe trying to produce bigger and better idiots.
    So far, the Universe is winning.