+ Antworten
Ergebnis 1 bis 3 von 3
  1. #1
    Creeper-Jäger Avatar von Raveam
    Registriert seit
    10.11.2012
    Beiträge
    469

    Tag-Nacht-Zyklus verändern (Längere Tage)

    Ich habe hier alles nochmal komplett neu geschrieben, da ich mit meinen Versuchen weiter gekommen bin!
    Ich bin gerade am versuchen längere Tage in Minecraft zu bekommen. In der WorldProvider.java fand Ich den Code:
    Code:
    public float calculateCelestialAngle(long par1, float par3)
        {
            int var4 = (int)(par1 % 24000L);
            float var5 = ((float)var4 + par3) / 24000.0F - 0.25F;
    
            if (var5 < 0.0F)
            {
                ++var5;
            }
    
            if (var5 > 1.0F)
            {
                --var5;
            }
    
            float var6 = var5;
            var5 = 1.0F - (float)((Math.cos((double)var5 * Math.PI) + 1.0D) / 2.0D);
            var5 = var6 + (var5 - var6) / 3.0F;
            return var5;
        }
    
        public int getMoonPhase(long par1, float par3)
        {
            return (int)(par1 / 24000L) % 8;
        }
    Den habe ich geändert in:
    Code:
    public float calculateCelestialAngle(long par1, float par3)
        {
            int var4 = (int)(par1 % 48000L);
            float var5 = ((float)var4 + par3) / 48000.0F - 0.50F;
    
            if (var5 < 0.0F)
            {
                ++var5;
            }
    
            if (var5 > 1.0F)
            {
                --var5;
            }
    
            float var6 = var5;
            var5 = 1.0F - (float)((Math.cos((double)var5 * Math.PI) + 1.0D) / 2.0D);
            var5 = var6 + (var5 - var6) / 3.0F;
            return var5;
        }
    
        public int getMoonPhase(long par1, float par3)
        {
            return (int)(par1 / 24000L) % 8;
        }
    Es gelingt mir, dass der Tag nun doppelt so lange dauert, jedoch habe ich noch par Probleme:
    - Nachdem ich schlafen gegangen, wache ich in der Mitte des Tages auf, heißt Sonne steht oben.
    - Manchmal passiert es sogar, dass es nach dem Schlafen Nacht ist und der Mond oben steht.
    - Der Nebel ist dunkel, so als wäre es Nacht. Merkt man besonders, wenn man auf Tiny spielt.

    Könnt ihr mir helfen?

    Edit: (30.12.2012 um 16:13)

    Ich habe den Code noch bearbeitet und jetzt sieht er so aus:
    Code:
        public float calculateCelestialAngle(long par1, float par3)
        {
            int var4 = (int)(par1 % 72000L);
            float var5 = ((float)var4 + par3) / 72000.0F - 0.25F;
    
            if (var5 < 0.0F)
            {
                ++var5;
            }
    
            if (var5 > 1.0F)
            {
                --var5;
            }
    
            float var6 = var5;
            var5 = 1.0F - (float)((Math.cos((double)var5 * Math.PI) + 1.0D) / 2.0D);
            var5 = var6 + (var5 - var6) / 3.0F;
            return var5;
        }
    
        public int getMoonPhase(long par1, float par3)
        {
            return (int)(par1 / 72000L) % 8;
        }
    Ein ganzer Tag (Tag und Nacht) dauert jetzt insgesamt eine Stunde, also 72000 Ticks. Klappt jetzt einwandfrei, aber Ich habe noch das Problem, dass wenn ich nach dem Sonnenuntergang schlafe gehe, ich bei 48000 Ticks aufwache, also in der Nacht. Gehe ich danach wieder schlafen, wache ich bei 0 Ticks auf, also normaler Morgen. Und ich weiß jetzt wie ich diesen Fehler beheben soll...
    Geändert von Raveam (29.12.2012 um 21:48 Uhr)
    "Ich glaube du leidest unter Facepalm-Tinnitus"

  2. #2
    ♫ ٩(͡๏̯͡๏)۶ ♪ Avatar von pitman-87
    Registriert seit
    10.01.2011
    Beiträge
    1.624
    Schaumal woher der den parameter long par1 nimmt und schau wo das überall auftritt und ändere da jeweils noch die Funktionen dazu.
    Das was du geändert hast ist im prinzip nur das Render, also das was man sieht, aber im Spiel an sich ist der Nacht-Tag-Rhytmus immernoch gleich, daher das Problem mit dem Schlafen und Nebel, auch Mobs sollten noch Spawnen denke ich mal.

    Kann dir leider nix genaueres sagen, da ich den Code im moment nicht vor mir habe.

  3. #3
    Creeper-Jäger Avatar von Raveam
    Registriert seit
    10.11.2012
    Beiträge
    469
    Also ich habe ja schon eine Mod veröffentlicht, namens ExtendedDays Mod, aber halt nur mit 48000 Ticks, also 40 Minuten und da klappt es komischer Weise auch. Aber eig. wollte ich ja eine Stunde machen, aber da gibt es ja dieses Problem!

    Aber ich glaube nicht, dass nur das Render verändert wird, sondern wenn es Nacht wird, dann ist es auch Nacht. Ich habs getestet mit den Befehl /time set 14000. Da sollte es ja normaler Weise Nacht sein, aber es spawnen keine Monster. Erst ab so 25000 Ticks spawnen die, also wenn es mit meiner Mod auch Nacht wird.

    Und hier der Link zum Code mit der 72000 Ticks Variante:
    http://www.mediafire.com/download.php?p1j3wwhkdq3k5im

    Edit: (02.01.2013 um 13:32)

    Zitat Zitat von pitman-87 Beitrag anzeigen
    , daher das Problem mit dem Schlafen und Nebel
    Das mit den Nebel ist ja schon gefixt, es lag an 0.50F. Ich hab es bei 0.25F belassen und da klappt es. Siehe letzen Code im Post.
    "Ich glaube du leidest unter Facepalm-Tinnitus"

+ Antworten