Welcome on MasterOf13FPS! MasterOf13FPS

Register today or sign up if you are already a member and never miss any cool content again :)

SPEICHERNDE MODULE [REQ]

MasterOf13FPS

Administrator
Staff member
Administrator
MasterOf13FPS
Joined
Jul 11, 2020
Messages
0
Reaction score
25
Points
0
Heey,

Ich wollte mal fragen wie ich es hinbekomme das sich die aktivierten Module auch speichern und bei einem MC restart auch dann wieder aktiviert sind :/

Danke schonmal im vorraus :)

MFG gnmodz
 
Hier einfach mal etwas was funktionieren sollte. Ich selbst habe so etwas nicht in meinem Client. Falls es Probleme gibt, melde dich einfach nochmal hier :)

[hide-thanks]

loadStatus() würde ich selbst im Konstruktor von deinem Modulmanager am Schluss bzw. in deiner Client Main Klasse nach dem Initialisieren deiner Module aufrufen.

saveStatus() würde ich selbst beim toggle() von Module oder in deiner Shutdownhook aufrufen. Bei toggle wird es eben öfter aufgerufen, bei der shutdownhook kann es aber zu Fehlern kommen und eventuell sogar zu Verlust der Daten kommen.

setActive(boolean b);
setzt den boolean active in meiner Modul klasse auf b;

Alle anderen Variablen sollten klar sein.
Code:
//Benutzte ich lediglich um Fehler zu vermeiden.
private final String separator = " ";
private final String versionID = "#version";

//Lädt für jedes Modul den Status.
private void loadStatus() {
    //Füge hier einfach dein File ein.
    File file = Pechoin.settings;
    if (file.exists()) {
        try (Scanner scanner = new Scanner(file)) {
            while (scanner.hasNextLine()) {
                String[] part = scanner.nextLine().split(separator);
                if (part[0].equals(versionID)) {
                    if (!part[1].equals(Pechoin.version)) {
                        //Neue ClientVersion erkannt.
                        scanner.close();
                        saveStatus();
                        return;
                    }
                }
                for (Mod mod : mods) {
                    if (part[0].equals(mod.getName())) {
                        //Sollte <part[1]> nicht "true" oder "false" sein, wird hier eine exception geworfen.
                        mod.setActive(Boolean.parseBoolean(part[1]));
                    }
                }
            }
            //Um die Datei frei zu geben.
            scanner.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
    } else {
        this.saveStatus();
    }
}

//Speichert für jedes Modul den Status.
public void saveStatus() {
    //Füge hier einfach dein File ein.
    File file = Pechoin.settings;
    try {
        file.createNewFile();
        BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file)));
        //Verhindert das beim Clientupdate neue Module nicht gespeichert werden.
        bufferedWriter.write(versionID + separator + Pechoin.version);
        bufferedWriter.newLine();
        for (Mod mod : mods) {
            bufferedWriter.write(mod.getName() + separator + mod.isActive());
            bufferedWriter.newLine();
        }
        bufferedWriter.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

[/hide-thanks]

lg
 
Last edited by a moderator:
Hier einfach mal etwas was funktionieren sollte. Ich selbst habe so etwas nicht in meinem Client. Falls es Probleme gibt, melde dich einfach nochmal hier :)

***Hidden content cannot be quoted.***

lg
Sorry für die doofe frage xD
aber was muss bei setActive rein? XD
EDIT: Sorry bin dezent müde xD seit gestern 8:00h wach :D
 
Last edited by a moderator:
Sorry für die doofe frage xD
aber was muss bei setActive rein? XD
EDIT: Sorry bin dezent müde xD seit gestern 8:00h wach :D
habs oben mit dazu geschrieben, falls jemand anders auch die frage hat^^
 
habs oben mit dazu geschrieben, falls jemand anders auch die frage hat^^
Dankeschön :) hat alles gut geklappt... wenn wir schon dabei sind xd weißt du wie ich einen silent scaffold mach? xd
 
kenne mich mit offensichtlichen Modulen überhaupt nicht aus :e
 
Ich würde lieber das verwenden: http://masterof13fps.de/forums/threads/wie-man-konfigurationen-gut-abspeichert.531/
Hier einfach mal etwas was funktionieren sollte. Ich selbst habe so etwas nicht in meinem Client. Falls es Probleme gibt, melde dich einfach nochmal hier :)

***Hidden content cannot be quoted.***

lg
Schlecht.
[HIDE-REPLY-THANKS]
Code:
private final String separator = " ";
private final String versionID = "#version";
[/HIDE-REPLY-THANKS]
Sollte lieber statisch sein -> bessere Performanz.
[HIDE-REPLY-THANKS]
Code:
try (Scanner scanner = new Scanner(file)) {
 // ...
 scanner.close();
} catch (FileNotFoundException e) {
 e.printStackTrace();
}
[/HIDE-REPLY-THANKS]
Ein try-with-resources Block 'closed' die angegebenen "Closables" automatisch.
[HIDE-REPLY-THANKS]
Code:
if (part[0].equals(versionID)) {
 if (!part[1].equals(Pechoin.version)) {
[/HIDE-REPLY-THANKS]
Dafür gibt es den AND Operator (&&).
Außerdem verstehe ich den Sinn dahinter nicht, wenn die Version deines Cheat-Clients der der Konfiguration nicht gleicht, wird diese nicht einmal ausgelesen, das müsste man nicht machen.
[HIDE-REPLY-THANKS]
Code:
//Sollte <part[1]> nicht "true" oder "false" sein, wird hier eine exception geworfen.
mod.setActive(Boolean.parseBoolean(part[1]));
[/HIDE-REPLY-THANKS]
Stimmt nicht, schau dir mal den Source-Code von Boolean.parseBoolean(String) an.
[HIDE-REPLY-THANKS]
Code:
    /**
     * Parses the string argument as a boolean.  The {@code boolean}
     * returned represents the value {@code true} if the string argument
     * is not {@code null} and is equal, ignoring case, to the string
     * {@code "true"}. <p>
     * Example: {@code Boolean.parseBoolean("True")} returns {@code true}.<br>
     * Example: {@code Boolean.parseBoolean("yes")} returns {@code false}.
     *
     * @param      s   the {@code String} containing the boolean
     *                 representation to be parsed
     * @return     the boolean represented by the string argument
     * @since 1.5
     */
    public static boolean parseBoolean(String s) {
        return ((s != null) && s.equalsIgnoreCase("true"));
    }
[/HIDE-REPLY-THANKS]
Da wird keine Exception geworfen.
[HIDE-REPLY-THANKS]
Code:
//Speichert für jedes Modul den Status.
public void saveStatus() {
    //Füge hier einfach dein File ein.
    File file = Pechoin.settings;
    try {
        file.createNewFile();
        BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file)));
        // ...
        bufferedWriter.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
}
[/HIDE-REPLY-THANKS]
Hier wird dieses mal kein try-with-resources Block verwendet, obwohl dies angebracht wurde.
Außerdem brauchst du keine neue Datei erstellen, dies geschieht automatisch.
[HIDE-REPLY-THANKS]
Code:
bufferedWriter.write(versionID + separator + Pechoin.version);
        bufferedWriter.newLine();
        for (Mod mod : mods) {
            bufferedWriter.write(mod.getName() + separator + mod.isActive());
            bufferedWriter.newLine();
        }
[/HIDE-REPLY-THANKS]
Wenn du schon einen StringBuilder instanziierst, kannst du auch einfach "... + '\n'" hinzufügen, sollte performanter als Writer.newLine() sein.

Außerdem ist etwas was CSV ähnelt nicht wirklich gut für solche Konfigurationen, und wirklich umfangreich oder erweiterbar ist diese jetzt auch nicht.
 
Last edited by a moderator:
Falls es dir nicht aufgefallen ist, aber wir befinden und hier im skidding Bereich, hier wird einfach Code rein gepastet und kein pClient mit src veröffentlicht. Ich habe selbst kaum Ahnung was Java an geht und wollte gnmodz einfach nur bei einem Problem helfen,. Was er aus meinem Code macht, ist seine Sache. Ich würde so etwas nie verwenden, da ich einfach ein ganz anderes System zum speichern verwende, welches hierfür jedoch schlichtweg nicht veröffentlicht werden wird. Wenn du ein Problem mit meiner Lösung hast, kannst du gerne Kritik äußern ohne dabei meine HIDETAGS zu umgehen, jedoch einen Thread von dir zu verlinken welcher in Java Skidding ist, welcher dort wohl eher weniger zu suchen hat, verstehe ich ehrlich gesagt nicht.
 
Falls es dir nicht aufgefallen ist, aber wir befinden und hier im skidding Bereich, hier wird einfach Code rein gepastet und kein pClient mit src veröffentlicht. Ich habe selbst kaum Ahnung was Java an geht und wollte gnmodz einfach nur bei einem Problem helfen,. Was er aus meinem Code macht, ist seine Sache. Ich würde so etwas nie verwenden, da ich einfach ein ganz anderes System zum speichern verwende, welches hierfür jedoch schlichtweg nicht veröffentlicht werden wird. Wenn du ein Problem mit meiner Lösung hast, kannst du gerne Kritik äußern ohne dabei meine HIDETAGS zu umgehen, jedoch einen Thread von dir zu verlinken welcher in Java Skidding ist, welcher dort wohl eher weniger zu suchen hat, verstehe ich ehrlich gesagt nicht.
Es scheint mir schwer zu kritisieren ohne Code zu posten, außerdem spielt es für mich keine Rolle, ob es in 'Java Skidding' gepostet ist oder nicht, ich unterstütze dies trotzdem nicht und werde weiterhin versuchen Personen zum Nachdenken anzuregen und nicht alles hirnlos kopieren und einfügen.
Er wird ziemlich wahrscheinlich, wenn du den Code fertig einfügst den Code nur kopieren und einfügen.
Du hättest den Post auch einfach als das annehmen können, was es ist: Kritik, somit wäre es auch möglich, deine Java-/Programmier-Kenntnisse zu verbessern.
 
Es scheint mir schwer zu kritisieren ohne Code zu posten, außerdem spielt es für mich keine Rolle, ob es in 'Java Skidding' gepostet ist oder nicht, ich unterstütze dies trotzdem nicht und werde weiterhin versuchen Personen zum Nachdenken anzuregen und nicht alles hirnlos kopieren und einfügen.
Er wird ziemlich wahrscheinlich, wenn du den Code fertig einfügst den Code nur kopieren und einfügen.
Du hättest den Post auch einfach als das annehmen können, was es ist: Kritik, somit wäre es auch möglich, deine Java-/Programmier-Kenntnisse zu verbessern.

Nimms mir nicht übel, jedoch habe ich leider kein Verlangen nach einer Verbesserung meiner
Java-/Programmier-Kenntnisse

Wenn du jedoch einfach alles was aus hidetags von mir kommt in hidetags setzten würdest, wäre ich dir sehr dankbar. Sollte es dein Ziel gewesen sein darauf hinzuweisen was bei mir alles schlecht ist darfst du das gerne tun, jedoch sind wir hier einfach im Java Skidding Bereich, in welchem einfach Paste rein gehört. Falls dir das nicht passt, kannst du diesen Teil der Forums einfach meiden, ansonsten verbessere meine Code doch bitte und schreibe nicht nur etwas das ich erstmal googeln müsste (was du dir sparen kannst, da ich das eh nicht mache).

Dein Ziel war es andren zu helfen und nicht meinen "schlechten" Code zu verwenden? Dann poste doch einfach was eigenes :)
 
Nimms mir nicht übel, jedoch habe ich leider kein Verlangen nach einer Verbesserung meiner
Wieso denn das, wenn du weißt, dass du nicht gut bist, wieso willst du dich nicht in etwas verbessern, was dich auch scheinbar interessiert?
Falls dir das nicht passt, kannst du diesen Teil der Forums einfach meiden
Augen schließen und nichts machen, halte ich selten für eine gute Idee.
ansonsten verbessere meine Code doch bitte
Habe ich doch, ich habe Vorschläge gepostet, die müsstest du nur noch umsetzen.
Dein Ziel war es andren zu helfen und nicht meinen "schlechten" Code zu verwenden? Dann poste doch einfach was eigenes :)
Wie gesagt, ich werde keinen Code zum hirnlosen kopieren und einfügen posten.
 
Last edited by a moderator:
ich will doch nur das du hidetags benutzt dafuq :e
 
Dankeschön :) hat alles gut geklappt... wenn wir schon dabei sind xd weißt du wie ich einen silent scaffold mach? xd
Java lernen, ich mach keine cheats mehr aber weiß wie das geht weil ich mir die mc packets auch mal angesehen hab anstatt nur alles zu pasten und hilfe zu verlangen.
 
Und ich bin zu blöd für sowas. Sieht ja recht simpel aus, dafür dass ich zu unfähig bin c:
 
shape1
shape2
shape3
shape4
shape5
shape6
Back
Top