diff --git a/build.gradle.kts b/build.gradle.kts index a2b3731..fc67424 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,3 +1,5 @@ +import org.jetbrains.kotlin.gradle.dsl.JvmTarget + plugins { kotlin("jvm") version "2.0.0" @@ -10,7 +12,7 @@ plugins { val jvm = JavaVersion.VERSION_11 group = "xyz.calcugames" -version = "0.2.1-SNAPSHOT" +version = "0.2.2-SNAPSHOT" java { sourceCompatibility = jvm @@ -40,8 +42,8 @@ tasks { } compileKotlin { - kotlinOptions { - jvmTarget = jvm.toString() + compilerOptions { + jvmTarget.set(JvmTarget.JVM_11) } } diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index d64cd49..e644113 100644 Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index b82aa23..a441313 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.8-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/src/main/java/xyz/calcugames/levelz/Keywords.java b/src/main/java/xyz/calcugames/levelz/Keywords.java index 0424c9b..c5960cb 100644 --- a/src/main/java/xyz/calcugames/levelz/Keywords.java +++ b/src/main/java/xyz/calcugames/levelz/Keywords.java @@ -25,4 +25,13 @@ public interface Keywords { */ String DEFAULT_COORDINATE_3D = "[0, 0, 0]"; + /** + * The beginning of a comment. + */ + char COMMENT_CHAR = '#'; + + /** + * The beginning of a comment. + */ + String COMMENT = "#"; } diff --git a/src/main/java/xyz/calcugames/levelz/parser/InternalParser.java b/src/main/java/xyz/calcugames/levelz/parser/InternalParser.java index 71216db..a9f2c31 100644 --- a/src/main/java/xyz/calcugames/levelz/parser/InternalParser.java +++ b/src/main/java/xyz/calcugames/levelz/parser/InternalParser.java @@ -256,15 +256,19 @@ static Level parse(String[] file, Random seed) { Set blocks = new HashSet<>(); for (String line : split[1]) { + if (line.startsWith(Keywords.COMMENT)) continue; if (line.equalsIgnoreCase(Keywords.END)) break; + int ci = line.indexOf(Keywords.COMMENT_CHAR); + String line0 = line.substring(0, ci == -1 ? line.length() : ci).trim(); + if (is2D) { - Map blocks2D = read2DLine(line, seed); + Map blocks2D = read2DLine(line0, seed); blocks2D.forEach((k, v) -> { for (Coordinate2D c : v) blocks.add(new LevelObject(k, c)); }); } else { - Map blocks3D = read3DLine(line, seed); + Map blocks3D = read3DLine(line0, seed); blocks3D.forEach((k, v) -> { for (Coordinate3D c : v) blocks.add(new LevelObject(k, c)); }); diff --git a/src/test/java/xyz/calcugames/levelz/parser/TestLevelParser.java b/src/test/java/xyz/calcugames/levelz/parser/TestLevelParser.java index e65772a..38053a1 100644 --- a/src/test/java/xyz/calcugames/levelz/parser/TestLevelParser.java +++ b/src/test/java/xyz/calcugames/levelz/parser/TestLevelParser.java @@ -37,6 +37,19 @@ public void testParse() { Level3D l3 = (Level3D) p3.parse(); Assertions.assertEquals(l3.getSpawn(), new Coordinate3D(0, 0, 0)); + + InputStream f4 = TestLevelParser.class.getResourceAsStream("/examples/2D/volcano/4.lvlz"); + LevelParser p4 = builder.input(f4).build(); + Level2D l4 = (Level2D) p4.parse(); + + Assertions.assertEquals(l4.getScroll(), Scroll.NONE); + Assertions.assertEquals(l4.getSpawn(), new Coordinate2D(5, 1)); + + InputStream f5 = TestLevelParser.class.getResourceAsStream("/examples/3D/grasslands/3.lvlz"); + LevelParser p5 = builder.input(f5).build(); + Level3D l5 = (Level3D) p5.parse(); + + Assertions.assertEquals(l5.getSpawn(), new Coordinate3D(0, 10, 0)); } } diff --git a/src/test/resources/examples b/src/test/resources/examples index f6522eb..e21c651 160000 --- a/src/test/resources/examples +++ b/src/test/resources/examples @@ -1 +1 @@ -Subproject commit f6522ebe5b55faae5792e23584ca06d218ad6fab +Subproject commit e21c6510ea6e0fe34d071167e53a29f65ce7fec7