@@ -62,34 +62,11 @@ private SkyboxParser() {
6262 output .addProperty ("source" , sourceResult .result ().orElse (MissingTextureAtlasSprite .getLocation ()).toString ());
6363
6464 // Convert fade
65- final JsonObject fade = new JsonObject ();
66- if (properties .containsKey ("startFadeIn" ) && properties .containsKey ("endFadeIn" ) && properties .containsKey ("endFadeOut" )) {
67- final int startFadeIn = toTickTime (properties .getProperty ("startFadeIn" ));
68- final int endFadeIn = toTickTime (properties .getProperty ("endFadeIn" ));
69- final int endFadeOut = toTickTime (properties .getProperty ("endFadeOut" ));
70- int startFadeOut ;
71- if (properties .containsKey ("startFadeOut" )) {
72- startFadeOut = toTickTime (properties .getProperty ("startFadeOut" ));
73- } else {
74- startFadeOut = endFadeOut - (endFadeIn - startFadeIn );
75- if (startFadeIn <= startFadeOut && endFadeIn >= startFadeOut ) {
76- startFadeOut = endFadeOut ;
77- }
78- }
79-
80- fade .addProperty ("startFadeIn" , CommonUtils .normalizeTickTime (startFadeIn ));
81- fade .addProperty ("endFadeIn" , CommonUtils .normalizeTickTime (endFadeIn ));
82- fade .addProperty ("startFadeOut" , CommonUtils .normalizeTickTime (startFadeOut ));
83- fade .addProperty ("endFadeOut" , CommonUtils .normalizeTickTime (endFadeOut ));
84- } else {
85- fade .addProperty ("alwaysOn" , true );
86- }
87-
88- output .add ("fade" , fade );
65+ parseFade (properties , output );
8966
9067 // Speed
9168 if (properties .containsKey ("speed" )) {
92- final float value = ParserCodecs .safeParseFloat (properties .getProperty ("speed" ), 1.0F );
69+ final float value = ParserCodecs .safeParseFloat (properties .getProperty ("speed" , null ), 1.0F );
9370 if (value != Float .MIN_VALUE ) {
9471 output .addProperty ("speed" , value );
9572 } else {
@@ -99,30 +76,17 @@ private SkyboxParser() {
9976
10077 // Heights
10178 if (properties .containsKey ("heights" )) {
102- final List <Range > rangeEntries = ParserCodecs .getRangeEntriesCodec (true ).orElse (List .of ()).parse (JavaOps .INSTANCE , properties .getProperty ("heights" )).getOrThrow ();
103- if (!rangeEntries .isEmpty ()) {
104- final JsonArray heights = new JsonArray ();
105- rangeEntries .stream ().map (range -> Range .CODEC .encode (range , JsonOps .INSTANCE , new JsonObject ()).getOrThrow ()).forEach (heights ::add );
106- output .add ("heights" , heights );
107- }
79+ parseHeights (properties .getProperty ("heights" ), output );
10880 }
10981
11082 // Days Loop -> Loop
11183 if (properties .containsKey ("days" )) {
112- final List <Range > rangeEntries = ParserCodecs .getRangeEntriesCodec (false ).orElse (List .of ()).parse (JavaOps .INSTANCE , properties .getProperty ("days" )).getOrThrow ();
113- if (!rangeEntries .isEmpty ()) {
114- final JsonArray ranges = new JsonArray ();
115- rangeEntries .stream ().map (range -> Range .CODEC .encode (range , JsonOps .INSTANCE , new JsonObject ()).getOrThrow ()).forEach (ranges ::add );
116- final JsonObject loop = new JsonObject ();
117- loop .addProperty ("days" , properties .containsKey ("daysLoop" ) ? ParserCodecs .safeParseInteger (properties .getProperty ("daysLoop" ), 8 ) : 8 );
118- loop .add ("ranges" , ranges );
119- output .add ("loop" , loop );
120- }
84+ parseDaysLoop (properties .getProperty ("days" ), properties .getProperty ("daysLoop" , null ), output );
12185 }
12286
12387 // Blend
12488 if (properties .containsKey ("blend" )) {
125- output .addProperty ("blend" , properties .getProperty ("blend" ));
89+ output .addProperty ("blend" , String . valueOf ( properties .getProperty ("blend" ) ));
12690 }
12791
12892 // Rotation
@@ -142,18 +106,18 @@ private SkyboxParser() {
142106
143107 // Weather
144108 if (properties .containsKey ("weather" )) {
145- output .addProperty ("weather" , properties .getProperty ("weather" ));
109+ output .addProperty ("weather" , String . valueOf ( properties .getProperty ("weather" ) ));
146110 }
147111
148112 // Biomes
149113 if (properties .containsKey ("biomes" )) {
150- output .addProperty ("biomes" , properties .getProperty ("biomes" ));
114+ output .addProperty ("biomes" , String . valueOf ( properties .getProperty ("biomes" ) ));
151115 }
152116
153117 return output ;
154118 }
155119
156- public static int toTickTime (String time ) {
120+ private static int toTickTime (String time ) {
157121 final String [] parts = time .trim ().split (":" );
158122 if (parts .length == 2 ) {
159123 final int m = ParserCodecs .safeParseInteger (parts [1 ], -1 );
@@ -171,4 +135,53 @@ public static int toTickTime(String time) {
171135 LOGGER .warn ("Invalid time: \" {}\" in skybox." , time );
172136 return -1 ;
173137 }
138+
139+ private static void parseFade (Properties properties , JsonObject output ) {
140+ final JsonObject fade = new JsonObject ();
141+ if (properties .containsKey ("startFadeIn" ) && properties .containsKey ("endFadeIn" ) && properties .containsKey ("endFadeOut" )) {
142+ final int startFadeIn = toTickTime (properties .getProperty ("startFadeIn" ));
143+ final int endFadeIn = toTickTime (properties .getProperty ("endFadeIn" ));
144+ final int endFadeOut = toTickTime (properties .getProperty ("endFadeOut" ));
145+ int startFadeOut ;
146+ if (properties .containsKey ("startFadeOut" )) {
147+ startFadeOut = toTickTime (properties .getProperty ("startFadeOut" ));
148+ } else {
149+ startFadeOut = endFadeOut - (endFadeIn - startFadeIn );
150+ if (startFadeIn <= startFadeOut && endFadeIn >= startFadeOut ) {
151+ startFadeOut = endFadeOut ;
152+ }
153+ }
154+
155+ fade .addProperty ("startFadeIn" , CommonUtils .normalizeTickTime (startFadeIn ));
156+ fade .addProperty ("endFadeIn" , CommonUtils .normalizeTickTime (endFadeIn ));
157+ fade .addProperty ("startFadeOut" , CommonUtils .normalizeTickTime (startFadeOut ));
158+ fade .addProperty ("endFadeOut" , CommonUtils .normalizeTickTime (endFadeOut ));
159+ } else {
160+ fade .addProperty ("alwaysOn" , true );
161+ }
162+
163+ output .add ("fade" , fade );
164+ }
165+
166+ private static void parseDaysLoop (String days , String daysLoop , JsonObject output ) {
167+ final List <Range > rangeEntries = ParserCodecs .getRangeEntriesCodec (false ).orElse (List .of ()).parse (JavaOps .INSTANCE , days ).getOrThrow ();
168+ if (!rangeEntries .isEmpty ()) {
169+ final JsonArray ranges = new JsonArray ();
170+ rangeEntries .stream ().map (range -> Range .CODEC .encode (range , JsonOps .INSTANCE , new JsonObject ()).getOrThrow ()).forEach (ranges ::add );
171+
172+ final JsonObject loop = new JsonObject ();
173+ loop .addProperty ("days" , ParserCodecs .safeParseInteger (daysLoop , 8 ));
174+ loop .add ("ranges" , ranges );
175+ output .add ("loop" , loop );
176+ }
177+ }
178+
179+ private static void parseHeights (String input , JsonObject output ) {
180+ final List <Range > rangeEntries = ParserCodecs .getRangeEntriesCodec (true ).orElse (List .of ()).parse (JavaOps .INSTANCE , input ).getOrThrow ();
181+ if (!rangeEntries .isEmpty ()) {
182+ final JsonArray heights = new JsonArray ();
183+ rangeEntries .stream ().map (range -> Range .CODEC .encode (range , JsonOps .INSTANCE , new JsonObject ()).getOrThrow ()).forEach (heights ::add );
184+ output .add ("heights" , heights );
185+ }
186+ }
174187}
0 commit comments