33import com .mojang .authlib .GameProfile ;
44import dev .compactmods .machines .CompactMachines ;
55import dev .compactmods .machines .api .dimension .CompactDimension ;
6- import dev .compactmods .machines .api .location .IDimensionalBlockPosition ;
76import dev .compactmods .machines .api .location .IDimensionalPosition ;
87import dev .compactmods .machines .api .room .RoomSize ;
98import dev .compactmods .machines .config .ServerConfig ;
109import dev .compactmods .machines .dimension .MissingDimensionException ;
11- import dev .compactmods .machines .location .LevelBlockPosition ;
12- import dev .compactmods .machines .machine .graph .DimensionMachineGraph ;
1310import dev .compactmods .machines .room .data .CompactRoomData ;
1411import dev .compactmods .machines .room .exceptions .NonexistentRoomException ;
1512import dev .compactmods .machines .util .CompactStructureGenerator ;
2219import net .minecraft .world .phys .Vec3 ;
2320
2421import javax .naming .OperationNotSupportedException ;
25- import java .util .Objects ;
2622import java .util .Optional ;
2723import java .util .UUID ;
28- import java .util .stream .Stream ;
2924
3025public class Rooms {
3126 public static ChunkPos createNew (MinecraftServer serv , RoomSize size , UUID owner ) throws MissingDimensionException {
@@ -41,7 +36,7 @@ public static ChunkPos createNew(MinecraftServer serv, RoomSize size, UUID owner
4136 BlockPos newCenter = MathUtil .getCenterWithY (location , ServerConfig .MACHINE_FLOOR_Y .get ());
4237
4338 // Generate a new machine room
44- CompactStructureGenerator .generateCompactStructure (compactWorld , size , newCenter );
39+ CompactStructureGenerator .generateCompactStructure (compactWorld , size . toVec3 () , newCenter );
4540
4641 ChunkPos machineChunk = new ChunkPos (newCenter );
4742 try {
@@ -58,87 +53,6 @@ public static ChunkPos createNew(MinecraftServer serv, RoomSize size, UUID owner
5853 return machineChunk ;
5954 }
6055
61- // TODO - Revisit with furnace recipe
62- // public static boolean destroy(MinecraftServer server, ChunkPos room) throws MissingDimensionException, NonexistentRoomException {
63- // final var compactDim = server.getLevel(Registration.COMPACT_DIMENSION);
64- // if (compactDim == null)
65- // throw new MissingDimensionException();
66- //
67- // var roomData = CompactRoomData.get(compactDim);
68- // if (!roomData.isRegistered(room)) {
69- // throw new NonexistentRoomException(room);
70- // }
71- //
72- // final var roomBounds = roomData.getBounds(room);
73- // final var innerBounds = roomBounds.deflate(1);
74- //
75- // final var states = compactDim.getBlockStates(innerBounds)
76- // .collect(Collectors.toSet());
77- //
78- // final var nonAir = states.stream()
79- // .filter(state -> !state.isAir())
80- // .findAny();
81- //
82- // if (nonAir.isPresent()) {
83- // CompactMachines.LOGGER.error("Refusing to delete room at {}; non-air blocks exist inside the room. First match: {}", room, nonAir.get());
84- // return false;
85- // }
86- //
87- // // clear tunnel connection info
88- // final var tunnels = RoomTunnelData.getFile(server, room);
89- // final var filename = RoomTunnelData.getDataFilename(room);
90- // if (!tunnels.delete()) {
91- // CompactMachines.LOGGER.warn("Could not delete tunnel data for room {}; clearing the connection graph as an alternative.", room);
92- // CompactMachines.LOGGER.warn("Data file to delete: {}", filename);
93- //
94- // var td = RoomTunnelData.forRoom(server, room);
95- // td.getGraph().clear();
96- // td.setDirty();
97- // } else {
98- // // File deletion successful, delete cached data
99- // final var compactDataCache = compactDim.getDataStorage().cache;
100- // compactDataCache.remove(filename);
101- // }
102- //
103- // // reset everything for the room boundary
104- // BlockPos.betweenClosedStream(roomBounds.inflate(1))
105- // .forEach(p -> compactDim.setBlock(p, Blocks.AIR.defaultBlockState(), Block.UPDATE_ALL));
106- //
107- // // Remove room registration
108- // roomData.remove(room);
109- //
110- // // Disconnect all machines
111- // var conns = MachineToRoomConnections.forDimension(server);
112- // var d = CompactMachineData.get(server);
113- //
114- // var connected = conns.getMachinesFor(room);
115- // for (int mid : connected) {
116- // var location = d.getMachineLocation(mid);
117- // location.ifPresent(p -> {
118- // var pos = p.getBlockPosition();
119- // var l = p.level(server);
120- // if (l.getBlockEntity(pos) instanceof TunnelWallEntity tunn) {
121- // tunn.disconnect();
122- // }
123- // });
124- // }
125- //
126- // conns.unregisterRoom(room);
127- // return true;
128- // }
129-
130- public static Stream <IDimensionalBlockPosition > getConnectedMachines (MinecraftServer server , ChunkPos room ) {
131- return server .levelKeys ().stream ()
132- .map (server ::getLevel )
133- .filter (Objects ::nonNull )
134- .filter (sl -> sl .getDataStorage ().cache .containsKey (DimensionMachineGraph .DATA_KEY ))
135- .flatMap (sl -> {
136- final var graph = DimensionMachineGraph .forDimension (sl );
137- return graph .getMachinesFor (room ).stream ()
138- .map (bp -> new LevelBlockPosition (sl .dimension (), bp ));
139- });
140- }
141-
14256 public static RoomSize sizeOf (MinecraftServer server , ChunkPos room ) throws NonexistentRoomException {
14357 final var compactDim = server .getLevel (CompactDimension .LEVEL_KEY );
14458 return CompactRoomData .get (compactDim )
0 commit comments