Skip to content

Commit

Permalink
Update file handling to use Path
Browse files Browse the repository at this point in the history
  • Loading branch information
Redacted authored and 19MisterX98 committed Sep 12, 2024
1 parent 94ac6f4 commit d791136
Showing 1 changed file with 29 additions and 22 deletions.
51 changes: 29 additions & 22 deletions src/main/java/kaptainwutax/seedcrackerX/config/StructureSave.java
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,9 @@
import net.minecraft.util.WorldSavePath;

import java.io.*;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
Expand All @@ -22,20 +25,22 @@
public class StructureSave {
private static final Logger logger = LoggerFactory.getLogger("structureSave");

public static final File saveDir = new File(FabricLoader.getInstance().getConfigDir().toFile(), "SeedCrackerX saved structures");
public static final Path saveDir = Paths.get(FabricLoader.getInstance().getConfigDir().toFile().toString(), "SeedCrackerX saved structures");
private static final List<RegionStructure<?,?>> structureTypes = List.of(Features.IGLOO,Features.BURIED_TREASURE,
Features.PILLAGER_OUTPOST,Features.DESERT_PYRAMID, Features.JUNGLE_PYRAMID, Features.END_CITY,
Features.MONUMENT, Features.SHIPWRECK, Features.SWAMP_HUT);

public static void saveStructures(ScheduledSet<DataStorage.Entry<Feature.Data<?>>> baseData) {
saveDir.mkdirs();
File saveFile = new File(saveDir, getWorldName());
try {
saveFile.createNewFile();
try (FileWriter writer = new FileWriter(saveFile)) {
Files.createDirectories(saveDir);
Path saveFile = saveDir.resolve(getWorldName());
Files.deleteIfExists(saveFile);
Files.createFile(saveFile);
try (FileWriter writer = new FileWriter(saveFile.toFile())) {
for (DataStorage.Entry<Feature.Data<?>> dataEntry : baseData) {
if (dataEntry.data.feature instanceof Structure structure) {
String data = Structure.getName(structure.getClass()) + ";" + dataEntry.data.chunkX +
String data = Structure.getName(structure.getClass()) +
";" + dataEntry.data.chunkX +
";" + dataEntry.data.chunkZ +
"\n";
writer.write(data);
Expand All @@ -48,28 +53,30 @@ public static void saveStructures(ScheduledSet<DataStorage.Entry<Feature.Data<?>
}

public static List<RegionStructure.Data<?>> loadStructures() {
saveDir.mkdirs();
File saveFile = new File(saveDir, getWorldName());
List<RegionStructure.Data<?>> result = new ArrayList<>();
if (!saveFile.exists()) return result;
try (
FileInputStream fis = new FileInputStream(saveFile);
Scanner sc = new Scanner(fis)
) {
while (sc.hasNextLine()) {
String line = sc.nextLine();
String[] info = line.split(";");
if (info.length != 3) continue;
String structureName = info[0];
for (RegionStructure<?,?> idk : structureTypes) {
if (structureName.equals(idk.getName())) {
result.add(idk.at(Integer.parseInt(info[1]), Integer.parseInt(info[2])));
break;
try {
Files.createDirectories(saveDir);
Path saveFile = saveDir.resolve(getWorldName());
try (
FileInputStream fis = new FileInputStream(saveFile.toFile());
Scanner sc = new Scanner(fis)
) {
while (sc.hasNextLine()) {
String line = sc.nextLine();
String[] info = line.split(";");
if (info.length != 3) continue;
String structureName = info[0];
for (RegionStructure<?,?> idk : structureTypes) {
if (structureName.equals(idk.getName())) {
result.add(idk.at(Integer.parseInt(info[1]), Integer.parseInt(info[2])));
break;
}
}
}
}
} catch (FileNotFoundException e) {
logger.warn("seedcracker couldn't find the structures file", e);
return result;
} catch (IOException e) {
logger.error("seedcracker couldn't load previous structures", e);
}
Expand Down

0 comments on commit d791136

Please sign in to comment.