Coding mit Java | Java-basierten APIs

  • Ersteller Ersteller ij9F_i0FaF-d9lrDSDDpDbfo
  • Erstellt am Erstellt am
Status
Für weitere Antworten geschlossen.
@Gelox_

Code:
import lombok.Value;
import java.util.Optional;

@Value
public class ComplexNumber {

    private final double value;
    private final boolean complex;

    public static ComplexNumber sqrtHeron(double value, int iterations) {
        boolean complex = value < 0;
        value = Math.abs(value);

        // Choose initial value based on the Taylor series
        double root = (value + 1) / 2;

        // Iterate
        for (int i = 0; i < iterations; i++) {
            root = (root + (value / root)) / 2;
        }

        return new ComplexNumber(root, complex);
    }

    public Optional<Double> toDouble() {
        if (isComplex())
            return Optional.empty();
        return Optional.of(value);
    }
}
 
  • Like
Reaktionen: Gelox_
Eine relativ banale Frage, hoffe irgendwer kennt sich hier mit Forge aus:

Ich versuche, die Anzahl der Ticks die ein Spieler brennt in einer Variable zu speichern.
(Man kann ja Client-Side wissen, wie lange man noch brennt, nicht?)

Doch dazu habe ich bisher noch keinen Weg gefunden.
Die player.dat hat auch kein NBT-Tag für Fireticks, also weiß ich nicht, wie ich das Problem lösen kann :/
 
Hey ich mal wieder ein Frage!

Wisst ihr, wie ich ein Plugin machen kann in dem die Nachricht nur das erstmal ausgegeben wird bzw. wenn ich als erstes mal diesen Command eingebe kommt eine Nachricht, sonst kommt einfach nur "Dein ErsteMal ist verbraucht" oder so. :D
 
Hey ich mal wieder ein Frage!

Wisst ihr, wie ich ein Plugin machen kann in dem die Nachricht nur das erstmal ausgegeben wird bzw. wenn ich als erstes mal diesen Command eingebe kommt eine Nachricht, sonst kommt einfach nur "Dein ErsteMal ist verbraucht" oder so. :D
Das musst du in einer HashMap speichern

hashmaps gehen so :
Code:
public class Test {

HashMap<String, Location> [name] = new HashMap<>();

}
 
@Pecho Ich würde an deiner Stelle genau wie @Finnthehorrible eine Hashmap oder eine Arraylist benutzen. Das würde aber zufolge haben, dass man bei jedem Server Neustart / Reload einen neuen Versuch haben würde. Du könntest auch eine Datei erstellen, das ist aber etwas umständlicher, kommt drauf an was du brauchst / worauf du Lust hast. Falls du nicht weißt wie man HashMaps oder Arraylists benutzt, google es und versuch es zu verstehen. Copy Pasten oder abschreiben/tippen ohne den Sinn dahinter zu verstehen macht kein Sinn und bring dich nicht weiter.

@Finnthehorrible Wie kommst du darauf in die HashMap ne Location zu packen, bzw wofür? Außerdem würde ich die UUID des Spielers benutzen und nicht den Name als String

MfG
sanfrancis
 
  • Like
Reaktionen: 1Darco1
Hey ich mal wieder ein Frage!

Wisst ihr, wie ich ein Plugin machen kann in dem die Nachricht nur das erstmal ausgegeben wird bzw. wenn ich als erstes mal diesen Command eingebe kommt eine Nachricht, sonst kommt einfach nur "Dein ErsteMal ist verbraucht" oder so. :D

Heyho,
du brauchst also einen Weg einen Spieler über längere Zeit hinweg zu speichern.

Du hast drei Möglichkeiten, eine davon ist schrott.

1. (Schrottmöglichkeit) : Du nimmst dir eine Collection und hämmerst alle Spieler die den Command eingeben einfach in eben jene rein. (Ich erwähne diese Möglichkeit nur, da sie des Öfteren vorgeschlagen wurde). Diese Option führt dazu, dass sich die z.B. Liste nach jedem Restart und Reload einfach aus dem Speicher löscht , und ebenso unnötig Memory allocated.

2. Möglichkeit: Die Config
Schnapp dir eine Config , ich empfehle hier immer ein andere Serialisierung als die Bukkit Hauseigene, ein Beispiel wäre das vom @geNAZt erstellte Yamler (https://www.spigotmc.org/resources/yamler.315/). Speichere einen Spieler , insofern er nicht bereits in der Config vorhanden ist, in ebenjene hinein. Ist er also nun in der Config vorhanden, lässt du einen anderen Fall eintreten.

3. Möglichkeit: SQL
Jap, Datenbanken, wer braucht sie nicht. Auch hier kannst du dir einer Datenbank zu Nutze machen. Ich bezweifle dass sich das für deinen Usecase lohnt, aber wer weiß ^^ Einfach mit JDBC an die Sache und alle Spieler auf die Datenbank klatschen, um dann zu prüfen, ob der Spieler bereits eingetragen wurde.

Zusammenfassend, wie wohl unschwer zu erkennen ist, empfehle ich dir aufgrund ihrerer Effizienz die 2 Möglichkeit.

MfG,

galaone
 
  • Like
Reaktionen: v_f_1
Heyho,
du brauchst also einen Weg ein Spieler über längere Zeit hinweg zu speichern.

Du hast drei Möglichkeiten, eine davon ist schrott.

1. (Schrottmöglichkeit) : Du nimmst dir eine Collection und hämmerst alle Spieler die den Command eingeben einfach in eben jene rein. (Ich erwähne diese Möglichkeit nur, da sie des Öfteren vorgeschlagen wurde). Diese Option führt dazu, dass sich die z.B. Liste nach jedem Restart und Reload einfach aus dem Speicher löscht , und ebenso unnötig Memory allocated.

2. Möglichkeit: Die Config
Schnapp dir eine Config , ich empfehle hier immer ein andere Serialisierung als die Bukkit Hauseigene, ein Beispiel wäre das vom @geNAZt erstellte Yamler (https://www.spigotmc.org/resources/yamler.315/). Speichere einen Spieler , insofern er nicht bereits in der Config vorhanden ist, in ebenjene hinein. Ist er also nun in der Config vorhanden, lässt du einen anderen Fall eintreten.

3. Möglichkeit: SQL
Jap, Datenbanken, wer braucht sie nicht. Auch hier kannst du dir einer Datenbank zu Nutze machen. Ich bezweifle dass sich das für deinen Usecase lohnt, aber wer weiß ^^ Einfach mit JDBC an die Sache und alle Spieler auf die Datenbank klatschen, um dann zu prüfen, ob der Spieler bereits eingetragen wurde.

Zusammenfassend, wie wohl unschwer zu erkennen ist, empfehle ich dir aufgrund ihrerer Effizienz die 2 Möglichkeit.

MfG,

galaone
Sehr ausführlich, aber die zweite Möglichkeit benötigt irgendwie wie auch die erste wenn du nicht bei jeder Abfrage die Config neu in den Speicher laden möchtest.
 
  • Like
Reaktionen: Lebender_Zombie
Sehr ausführlich, aber die zweite Möglichkeit benötigt irgendwie wie auch die erste wenn du nicht bei jeder Abfrage die Config neu in den Speicher laden möchtest.

Die erste und die zweite unterscheiden sich von Grund auf. Nicht nur, dass die zweite Möglichkeit eine gewisse Persistenz garantiert, sondern sie wird auch insgesamt von der Leistung besser sein. Bei der von @galaone erläuterten ersten Möglichkeit wird dauerhaft eine Collection gespeichert auf die du nur programmintern Zugriff hast, auf eine Config kannst du zb im Nachhinein noch Daten ändern. Ich weiß zwar nicht wie Yamler arbeitet, aber so wie ich @geNAZt kenne, ist der Performance durchaus genüge getan und dein von dir angepriesener Speicher wird kaum belastet werden. Zumal bei deiner geringen Spielerzahl das alle par Minuten stattfindende bearbeiten einer Config kaum ins Gewicht falllen sollte.
 
Code:
File file = new File("plugins/eventwhitelist", "uuids.yml");
          FileConfiguration cfg = YamlConfiguration.loadConfiguration(file);
          cfg.set("UUID", p.getUniqueId());

Habt ihr eine Idee wie ich abfragen kann, ob die UUID von dem Spieler existiert?
 
@Pecho Jeder Spieler hat eine UUID, d.h. du musst nicht abfragen ob die UUID von dem Spieler p in deinem Code existiert. Ich würde dir aber empfehlen Player player anstatt Player p zu benutzen, da es sonst bei mehreren Spieler schnell unübersichtlich wird.
 
  • Like
Reaktionen: riggahCraft
[Stelle diese Frage nochmals hier, da es empfohlen wurde!]
Hallo! :ninja:
Ich beschäftige mich gerade mit Java und programmiere nebenbei an meinem Plugin herum…
Zur Frage aber: (Sicherlich) kennt ihr diese Standartmeldung: Wenn ihr auf einem Vanilla-Server gebannt werdet, steht dort geschrieben: "Du wurdest vom Server gebannt…" (Bilder gibt's ja im Internet, wie Sand am Meer). :D
Ich habe aber nun vor, diese Meldung umzuschreiben, dennoch fehlt mir bei diesem Problem das Know-How, wie ich so etwas angehen sollte!
Am Ende sollte es aussehen wie die Bannachicht auf Gomme (siehe Internet!), evtl. auch verknüpft mit dem Befehl /ban (keine Ahnung ob das Zusammenhängt :p)
Vielleicht könnt ihr mir ja weiterhelfen, wie man sowas mit Eclipse selbst codet, denn auf YouTube existiert nur ein Review des Essentials(-ban) Plugin! :)

Dankeschön!
~Kl3xx
 
Status
Für weitere Antworten geschlossen.

Soziale Medien

  • X
  • TikTok

Über uns

  • GommeHD.net ist einer der größten Minecraft-Server der Welt. Dir gefällt unser Server? Dann unterstütze uns durch einen Kauf im Shop!
  • Shop