Skip to content

Commit fbcc0b3

Browse files
committed
Fix machine data file export
1 parent 326c11c commit fbcc0b3

File tree

1 file changed

+48
-50
lines changed

1 file changed

+48
-50
lines changed

src/main/java/dev/compactmods/machines/command/data/CMMachineDataExportCommand.java

Lines changed: 48 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,21 @@
22

33
import com.mojang.brigadier.builder.ArgumentBuilder;
44
import com.mojang.brigadier.context.CommandContext;
5-
import dev.compactmods.machines.api.room.MachineRoomConnections;
5+
import dev.compactmods.machines.CompactMachines;
6+
import dev.compactmods.machines.api.core.CMCommands;
67
import dev.compactmods.machines.api.core.Constants;
8+
import dev.compactmods.machines.api.location.IDimensionalBlockPosition;
9+
import dev.compactmods.machines.i18n.TranslationUtil;
10+
import dev.compactmods.machines.machine.graph.DimensionMachineGraph;
711
import net.minecraft.commands.CommandSourceStack;
812
import net.minecraft.commands.Commands;
913
import net.minecraft.util.CsvOutput;
14+
import net.minecraft.world.level.ChunkPos;
1015

1116
import javax.annotation.Nonnull;
1217
import java.io.BufferedWriter;
1318
import java.io.IOException;
19+
import java.nio.file.Files;
1420

1521
// TODO
1622
public class CMMachineDataExportCommand {
@@ -25,43 +31,39 @@ private static int execAll(CommandContext<CommandSourceStack> ctx) {
2531
var src = ctx.getSource();
2632
var serv = src.getServer();
2733

28-
// final CompactMachineGraph machines;
29-
// final MachineToRoomConnections connections;
30-
// try {
31-
// machines = CompactMachineGraph.forDimension(serv);
32-
// connections = MachineToRoomConnections.get(serv);
33-
// } catch (MissingDimensionException e) {
34-
// CompactMachines.LOGGER.fatal(e);
35-
// return -1;
36-
// }
37-
//
38-
// var outdir = src.getServer().getFile(CompactMachines.MOD_ID);
39-
// var out = outdir.toPath()
40-
// .resolve("machines.csv")
41-
// .toAbsolutePath();
42-
//
43-
// try {
44-
// Files.createDirectories(outdir.toPath());
45-
//
46-
// var writer = Files.newBufferedWriter(out);
47-
// CsvOutput builder = makeCsv(writer);
48-
//
49-
// machines.getMachines().forEach(node -> writeMachine(connections, node, builder));
50-
//
51-
// writer.close();
52-
// } catch (IOException e) {
53-
// CompactMachines.LOGGER.error(e);
54-
// src.sendFailure(TranslationUtil.command(CMCommands.FAILED_CMD_FILE_ERROR));
55-
// return -1;
56-
// }
34+
var outdir = src.getServer().getFile(Constants.MOD_ID);
35+
var out = outdir.toPath()
36+
.resolve("machines.csv")
37+
.toAbsolutePath();
38+
39+
try {
40+
Files.createDirectories(outdir.toPath());
41+
42+
var writer = Files.newBufferedWriter(out);
43+
CsvOutput builder = makeCsv(writer);
44+
45+
for (final var dim : serv.getAllLevels()) {
46+
final var graph = DimensionMachineGraph.forDimension(dim);
47+
graph.getMachines().forEach(machNode -> {
48+
final var m = machNode.dimpos();
49+
final var r = graph.getConnectedRoom(m.getBlockPosition());
50+
r.ifPresent(room -> writeMachine(m, room, builder));
51+
});
52+
}
53+
54+
writer.close();
55+
} catch (IOException e) {
56+
CompactMachines.LOGGER.error(e);
57+
src.sendFailure(TranslationUtil.command(CMCommands.FAILED_CMD_FILE_ERROR));
58+
return -1;
59+
}
5760

5861
return 0;
5962
}
6063

6164
@Nonnull
6265
private static CsvOutput makeCsv(BufferedWriter writer) throws IOException {
6366
return CsvOutput.builder()
64-
.addColumn("id")
6567
.addColumn("dim")
6668
.addColumn("machine_x")
6769
.addColumn("machine_y")
@@ -71,24 +73,20 @@ private static CsvOutput makeCsv(BufferedWriter writer) throws IOException {
7173
.build(writer);
7274
}
7375

74-
private static void writeMachine(MachineRoomConnections connections, CsvOutput builder) {
75-
// try {
76-
// int id = mach.getMachineId();
77-
// var loc = mach.getLocation();
78-
// var placedAt = loc.getBlockPosition();
79-
//
80-
// var room = connections.getConnectedRoom(id).orElse(new ChunkPos(-1, -1));
81-
// builder.writeRow(
82-
// id,
83-
// loc.getDimension().location().toString(),
84-
// placedAt.getX(),
85-
// placedAt.getY(),
86-
// placedAt.getZ(),
87-
// room.x,
88-
// room.z
89-
// );
90-
// } catch (IOException e) {
91-
// CompactMachines.LOGGER.error(e);
92-
// }
76+
private static void writeMachine(IDimensionalBlockPosition machine, ChunkPos room, CsvOutput builder) {
77+
try {
78+
var placedAt = machine.getBlockPosition();
79+
80+
builder.writeRow(
81+
machine.dimensionKey().location().toString(),
82+
placedAt.getX(),
83+
placedAt.getY(),
84+
placedAt.getZ(),
85+
room.x,
86+
room.z
87+
);
88+
} catch (IOException e) {
89+
CompactMachines.LOGGER.error(e);
90+
}
9391
}
9492
}

0 commit comments

Comments
 (0)