A Minecraft level parser.
Currently Supporting: Minecraft: Java Edition 1.19.x
This project only supports Anvil world files at the moment, but has been designed in such a way that alternative formats can also be used.
To start, you will need to create a LevelParser object like so:
LevelParser<AnvilLevel> parser = LevelParser.<AnvilLevel>builder()
.input(Paths.get("input"))
.output(Paths.get("output"))
.reader(newAnvilLevelReader())
.writer(newAnvilLevelWriter())
.build();Afterward, create a new AnvilLevel which you can do like so:
AnvilLevellevel = newAnvilLevel(
0, // minHeight256, // maxHeight0, // worldTimenewLevelData( // levelDatanewLevelData.LevelVersion( // levelVersionfalse, // snapshot"main", // series3120, // dataVersion"1.19.2"// name
),
"My World Name", // worldName1, // gameType (1 = creative mode)10, // spawnX0, // spawnY10, // spawnZSystem.currentTimeMillis(), // lastPlayedfalse, // hardcoretrue, // allowCommandsList.of("vanilla"), // enabledDataPacksList.of(), // disabledDataPacksnewLevelData.WorldGenSettings( // worldGenSettingsfalse, // bonusChest0, // seedfalse, // generateFeatures
... // dimensions
)
)
);With this level, you can now manipulate it in any way. Once you are done modifying your level, you can write it by doing the following using your parser:
parser.writeLevel(level);repositories {
maven("https://jitpack.io")
}
dependencies {
implementation("com.github.Redned235.LevelParser:anvil:master-SNAPSHOT")
}<repositories>
<repository>
<id>jitpack</id>
<url>https://jitpack.io</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>com.github.Redned235.LevelParser</groupId>
<artifactId>anvil</artifactId>
<version>master-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
</dependencies>