• Es freut uns dass du in unser Minecraft Forum gefunden hast. Hier kannst du mit über 130.000 Minecraft Fans über Minecraft diskutieren, Fragen stellen und anderen helfen. In diesem Minecraft Forum kannst du auch nach Teammitgliedern, Administratoren, Moderatoren , Supporter oder Sponsoren suchen. Gerne kannst du im Offtopic Bereich unseres Minecraft Forums auch über nicht Minecraft spezifische Themen reden. Wir hoffen dir gefällt es in unserem Minecraft Forum!

Warum ist der If-Vergleich immer negativ?

ReefCityCraft

Minecrafter
Registriert
30 Januar 2012
Beiträge
18
Diamanten
0
Hallo,
ich habe heute mein Plugin um eine Kit-Funktion erweitert. Diese Kits sollen allerdings nur 1x Täglich aufrufbar sein. Hierfür habe ich mir folgenden Code zusammengecodet:

Code:
            // Zeit ermitteln, umbauen für config etc.
            Object nowdate = new SimpleDateFormat("dd" + "MM" + "yyyy").format(new Timestamp(System.currentTimeMillis()));
            Object cfgdate = cfg.get(p.getName());    
            
            // NUR EIN TEMPORÄRER TEST
            p.sendMessage("Datum Heute: " + nowdate);
            p.sendMessage("Datum Datei:  " + cfgdate);
            
            // Vergleiche ob cfgdate gleich nowdate. Falls gleich, kein Kit. Falls ungleich, Kit.
            if(cfgdate == nowdate){    
                p.sendMessage(ChatColor.BLUE + "[" + ChatColor.GOLD + "ReefHelper" + ChatColor.BLUE + "] " + ChatColor.RED + "Du hast dir heute Bereits dein Kit abgeholt! Du kannst dir erst morgen ein neues holen!");

            } else {
            
                // Speichern des neuen cfgdate-Wertes.
                cfg.set(p.getName(), (Object) nowdate);
            try {
                this.cfg.save(file);
            } catch (IOException e) {
                p.sendMessage(ChatColor.BLUE + "[" + ChatColor.GOLD + "ReefHelper" + ChatColor.BLUE + "] " + ChatColor.RED + "Es ist ein Fehler im KitCache aufgetreten, bitte kontaktiere dringend einen Admin!");
                System.out.println("[ReefHelper] Es ist ein Fehler bei der Speicherung des KitCaches aufgetreten!");
                e.printStackTrace();
                return true;
            }    
            
            // Geben des Kits
Hierfür lasse ich den Server erst die Entsprechende Datum ermitteln. Nun prüft er, ob ein Eintrag mit diesen Spieler bereits in der yml-Datei vorhandel ist. Falls dieser nicht Gleich mit des heutigem Datum ist, oder "null" ergibt, so bekommt man das Kit und das Datum derzeitige Datum wird neu eingetragen. Ist der Wert (also das Datum) in der yml-Datei allerdings gleich dem jetzigen Datum, so bekommt man dieses Kit nicht.

Leider ist das Ergebnis des Vergleiches beiden Daten immer Negativ (also Ungleich), obwohl sie eigentlich gleich sind.
ev5pbo7u.png


Wäre nett, wenn da jmd eine Lösung findet und sie mal postet.

Danke!
 

c-eAgle

Redstoneengineer
Registriert
14 Juli 2011
Beiträge
38
Diamanten
300
Minecraft
ceagle2
Vorab: ich bin kein Java-Experte und bitte um Verzeihung für etwaige, semantische Fehler. Aber mir machts den Anschein, als ob der Datentyp sich unterscheiden könnte. Evtl. mal folgende If-Abfrage stattdessen probieren:

if (cfgdate == nowdate.toString()) { ... }

Oder muss cfgdate da ebenso noch umgewandelt werden? In dem Fall tue genau das. Und wenn du die Ausgaben im Spiel zu Debugging-Zwecken vergleichen willst, probiere folgende Ausgaben:

p.sendMessage("Datum Heute: " + nowdate.getClass());
p.sendMessage("Datum Datei: " + cfgdate.getClass());

Viele Grüße,
cea
 
Oben