Skip to content

Commit f6d802a

Browse files
committed
Refactor of machine-room graph, NbtConstants and RoomSize ref classes
1 parent e2c3606 commit f6d802a

File tree

18 files changed

+208
-173
lines changed

18 files changed

+208
-173
lines changed
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package dev.compactmods.machines.api.room;
2+
3+
import java.util.Collection;
4+
import java.util.Optional;
5+
import net.minecraft.world.level.ChunkPos;
6+
import org.jetbrains.annotations.NotNull;
7+
8+
public interface MachineRoomConnections {
9+
@NotNull Optional<ChunkPos> getConnectedRoom(int machineId);
10+
11+
@NotNull Collection<Integer> getMachinesFor(ChunkPos chunkPos);
12+
13+
void registerMachine(int machine);
14+
15+
void registerRoom(ChunkPos roomChunk);
16+
17+
void connectMachineToRoom(int machine, ChunkPos room);
18+
}

src/main/java/dev/compactmods/machines/advancement/AdvancementTriggers.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
import dev.compactmods.machines.advancement.trigger.ClaimedMachineTrigger;
55
import dev.compactmods.machines.advancement.trigger.HowDidYouGetHereTrigger;
66
import dev.compactmods.machines.api.core.Advancements;
7-
import dev.compactmods.machines.reference.EnumMachineSize;
7+
import dev.compactmods.machines.rooms.RoomSize;
88
import net.minecraft.advancements.CriteriaTriggers;
99

1010
public class AdvancementTriggers {
@@ -22,7 +22,7 @@ public static void init() {
2222
CompactMachines.LOGGER.trace("Registering advancement triggers.");
2323
}
2424

25-
public static ClaimedMachineTrigger getTriggerForMachineClaim(EnumMachineSize machineSize) {
25+
public static ClaimedMachineTrigger getTriggerForMachineClaim(RoomSize machineSize) {
2626
switch (machineSize) {
2727
case TINY: return CLAIMED_TINY;
2828
case SMALL: return CLAIMED_SMALL;

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
import com.mojang.brigadier.context.CommandContext;
88
import dev.compactmods.machines.CompactMachines;
99
import dev.compactmods.machines.api.core.Messages;
10-
import dev.compactmods.machines.data.graph.CompactMachineConnectionGraph;
10+
import dev.compactmods.machines.api.room.MachineRoomConnections;
1111
import dev.compactmods.machines.data.persistent.CompactMachineData;
1212
import dev.compactmods.machines.data.persistent.MachineConnections;
1313
import dev.compactmods.machines.util.TranslationUtil;
@@ -43,7 +43,7 @@ private static int execAll(CommandContext<CommandSourceStack> ctx) {
4343
var writer = Files.newBufferedWriter(out);
4444
CsvOutput builder = makeCsv(writer);
4545

46-
machines.stream().forEach(room -> writeMachine(connections.graph, room, builder));
46+
machines.stream().forEach(room -> writeMachine(connections, room, builder));
4747

4848
writer.close();
4949
} catch (IOException e) {
@@ -68,13 +68,13 @@ private static CsvOutput makeCsv(BufferedWriter writer) throws IOException {
6868
.build(writer);
6969
}
7070

71-
private static void writeMachine(CompactMachineConnectionGraph graph, CompactMachineData.MachineData mach, CsvOutput builder) {
71+
private static void writeMachine(MachineRoomConnections connections, CompactMachineData.MachineData mach, CsvOutput builder) {
7272
try {
7373
int id = mach.getMachineId();
7474
var loc = mach.getLocation();
7575
var placedAt = loc.getBlockPosition();
7676

77-
var room = graph.getConnectedRoom(id).orElse(new ChunkPos(-1, -1));
77+
var room = connections.getConnectedRoom(id).orElse(new ChunkPos(-1, -1));
7878
builder.writeRow(
7979
id,
8080
loc.getDimension().location().toString(),

src/main/java/dev/compactmods/machines/compat/jei/CompactMachinesJeiPlugin.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@
33
import java.util.Arrays;
44
import dev.compactmods.machines.CompactMachines;
55
import dev.compactmods.machines.api.core.JeiInfo;
6-
import dev.compactmods.machines.block.BlockCompactMachine;
6+
import dev.compactmods.machines.machine.CompactMachineBlock;
77
import dev.compactmods.machines.core.Registration;
88
import dev.compactmods.machines.core.Tunnels;
9-
import dev.compactmods.machines.reference.EnumMachineSize;
9+
import dev.compactmods.machines.rooms.RoomSize;
1010
import dev.compactmods.machines.util.TranslationUtil;
1111
import mezz.jei.api.IModPlugin;
1212
import mezz.jei.api.JeiPlugin;
@@ -26,8 +26,8 @@ public ResourceLocation getPluginUid() {
2626

2727
@Override
2828
public void registerRecipes(IRecipeRegistration registration) {
29-
Arrays.stream(EnumMachineSize.values())
30-
.map(BlockCompactMachine::getItemBySize)
29+
Arrays.stream(RoomSize.values())
30+
.map(CompactMachineBlock::getItemBySize)
3131
.forEach(i -> registration.addIngredientInfo(
3232
new ItemStack(i),
3333
VanillaTypes.ITEM,

src/main/java/dev/compactmods/machines/compat/theoneprobe/providers/CompactMachineProvider.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
import com.mojang.authlib.GameProfile;
44
import dev.compactmods.machines.CompactMachines;
55
import dev.compactmods.machines.api.core.Tooltips;
6-
import dev.compactmods.machines.block.BlockCompactMachine;
7-
import dev.compactmods.machines.block.CompactMachineTile;
6+
import dev.compactmods.machines.machine.CompactMachineBlock;
7+
import dev.compactmods.machines.machine.CompactMachineBlockEntity;
88
import dev.compactmods.machines.util.TranslationUtil;
99
import mcjty.theoneprobe.api.IProbeHitData;
1010
import mcjty.theoneprobe.api.IProbeInfo;
@@ -27,11 +27,11 @@ public ResourceLocation getID() {
2727

2828
@Override
2929
public void addProbeInfo(ProbeMode probeMode, IProbeInfo info, Player player, Level level, BlockState blockState, IProbeHitData hitData) {
30-
if(!(blockState.getBlock() instanceof BlockCompactMachine mach))
30+
if(!(blockState.getBlock() instanceof CompactMachineBlock mach))
3131
return;
3232

3333
BlockEntity te = level.getBlockEntity(hitData.getPos());
34-
if (te instanceof CompactMachineTile machine) {
34+
if (te instanceof CompactMachineBlockEntity machine) {
3535
if(machine.mapped()) {
3636
MutableComponent id = TranslationUtil
3737
.tooltip(Tooltips.Machines.ID, machine.machineId)

src/main/java/dev/compactmods/machines/core/Registration.java

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,14 @@
33
import java.util.function.Supplier;
44
import dev.compactmods.machines.CompactMachines;
55
import static dev.compactmods.machines.CompactMachines.MOD_ID;
6-
import dev.compactmods.machines.block.BlockCompactMachine;
7-
import dev.compactmods.machines.block.CompactMachineTile;
6+
import dev.compactmods.machines.machine.CompactMachineBlock;
7+
import dev.compactmods.machines.machine.CompactMachineBlockEntity;
88
import dev.compactmods.machines.wall.BreakableWallBlock;
99
import dev.compactmods.machines.wall.SolidWallBlock;
1010
import dev.compactmods.machines.item.ItemBlockMachine;
1111
import dev.compactmods.machines.item.ItemBlockWall;
1212
import dev.compactmods.machines.item.ItemPersonalShrinkingDevice;
13-
import dev.compactmods.machines.reference.EnumMachineSize;
13+
import dev.compactmods.machines.rooms.RoomSize;
1414
import net.minecraft.core.Registry;
1515
import net.minecraft.resources.ResourceKey;
1616
import net.minecraft.resources.ResourceLocation;
@@ -55,43 +55,43 @@ public class Registration {
5555
// COMPACT MACHINE BLOCKS
5656
// ================================================================================================================
5757
public static final RegistryObject<Block> MACHINE_BLOCK_TINY = BLOCKS.register("machine_tiny", () ->
58-
new BlockCompactMachine(EnumMachineSize.TINY, MACHINE_BLOCK_PROPS));
58+
new CompactMachineBlock(RoomSize.TINY, MACHINE_BLOCK_PROPS));
5959

6060
public static final RegistryObject<Block> MACHINE_BLOCK_SMALL = BLOCKS.register("machine_small", () ->
61-
new BlockCompactMachine(EnumMachineSize.SMALL, MACHINE_BLOCK_PROPS));
61+
new CompactMachineBlock(RoomSize.SMALL, MACHINE_BLOCK_PROPS));
6262

6363
public static final RegistryObject<Block> MACHINE_BLOCK_NORMAL = BLOCKS.register("machine_normal", () ->
64-
new BlockCompactMachine(EnumMachineSize.NORMAL, MACHINE_BLOCK_PROPS));
64+
new CompactMachineBlock(RoomSize.NORMAL, MACHINE_BLOCK_PROPS));
6565

6666
public static final RegistryObject<Block> MACHINE_BLOCK_LARGE = BLOCKS.register("machine_large", () ->
67-
new BlockCompactMachine(EnumMachineSize.LARGE, MACHINE_BLOCK_PROPS));
67+
new CompactMachineBlock(RoomSize.LARGE, MACHINE_BLOCK_PROPS));
6868

6969
public static final RegistryObject<Block> MACHINE_BLOCK_GIANT = BLOCKS.register("machine_giant", () ->
70-
new BlockCompactMachine(EnumMachineSize.GIANT, MACHINE_BLOCK_PROPS));
70+
new CompactMachineBlock(RoomSize.GIANT, MACHINE_BLOCK_PROPS));
7171

7272
public static final RegistryObject<Block> MACHINE_BLOCK_MAXIMUM = BLOCKS.register("machine_maximum", () ->
73-
new BlockCompactMachine(EnumMachineSize.MAXIMUM, MACHINE_BLOCK_PROPS));
73+
new CompactMachineBlock(RoomSize.MAXIMUM, MACHINE_BLOCK_PROPS));
7474

7575
public static final RegistryObject<Item> MACHINE_BLOCK_ITEM_TINY = ITEMS.register("machine_tiny",
76-
() -> new ItemBlockMachine(MACHINE_BLOCK_TINY.get(), EnumMachineSize.TINY, BASIC_ITEM_PROPS.get()));
76+
() -> new ItemBlockMachine(MACHINE_BLOCK_TINY.get(), RoomSize.TINY, BASIC_ITEM_PROPS.get()));
7777

7878
public static final RegistryObject<Item> MACHINE_BLOCK_ITEM_SMALL = ITEMS.register("machine_small",
79-
() -> new ItemBlockMachine(MACHINE_BLOCK_SMALL.get(), EnumMachineSize.SMALL, BASIC_ITEM_PROPS.get()));
79+
() -> new ItemBlockMachine(MACHINE_BLOCK_SMALL.get(), RoomSize.SMALL, BASIC_ITEM_PROPS.get()));
8080

8181
public static final RegistryObject<Item> MACHINE_BLOCK_ITEM_NORMAL = ITEMS.register("machine_normal",
82-
() -> new ItemBlockMachine(MACHINE_BLOCK_NORMAL.get(), EnumMachineSize.NORMAL, BASIC_ITEM_PROPS.get()));
82+
() -> new ItemBlockMachine(MACHINE_BLOCK_NORMAL.get(), RoomSize.NORMAL, BASIC_ITEM_PROPS.get()));
8383

8484
public static final RegistryObject<Item> MACHINE_BLOCK_ITEM_LARGE = ITEMS.register("machine_large",
85-
() -> new ItemBlockMachine(MACHINE_BLOCK_LARGE.get(), EnumMachineSize.LARGE, BASIC_ITEM_PROPS.get()));
85+
() -> new ItemBlockMachine(MACHINE_BLOCK_LARGE.get(), RoomSize.LARGE, BASIC_ITEM_PROPS.get()));
8686

8787
public static final RegistryObject<Item> MACHINE_BLOCK_ITEM_GIANT = ITEMS.register("machine_giant",
88-
() -> new ItemBlockMachine(MACHINE_BLOCK_GIANT.get(), EnumMachineSize.GIANT, BASIC_ITEM_PROPS.get()));
88+
() -> new ItemBlockMachine(MACHINE_BLOCK_GIANT.get(), RoomSize.GIANT, BASIC_ITEM_PROPS.get()));
8989

9090
public static final RegistryObject<Item> MACHINE_BLOCK_ITEM_MAXIMUM = ITEMS.register("machine_maximum",
91-
() -> new ItemBlockMachine(MACHINE_BLOCK_MAXIMUM.get(), EnumMachineSize.MAXIMUM, BASIC_ITEM_PROPS.get()));
91+
() -> new ItemBlockMachine(MACHINE_BLOCK_MAXIMUM.get(), RoomSize.MAXIMUM, BASIC_ITEM_PROPS.get()));
9292

93-
public static final RegistryObject<BlockEntityType<CompactMachineTile>> MACHINE_TILE_ENTITY = BLOCK_ENTITIES.register("compact_machine", () ->
94-
BlockEntityType.Builder.of(CompactMachineTile::new,
93+
public static final RegistryObject<BlockEntityType<CompactMachineBlockEntity>> MACHINE_TILE_ENTITY = BLOCK_ENTITIES.register("compact_machine", () ->
94+
BlockEntityType.Builder.of(CompactMachineBlockEntity::new,
9595
MACHINE_BLOCK_TINY.get(), MACHINE_BLOCK_SMALL.get(), MACHINE_BLOCK_NORMAL.get(),
9696
MACHINE_BLOCK_LARGE.get(), MACHINE_BLOCK_GIANT.get(), MACHINE_BLOCK_MAXIMUM.get())
9797
.build(null));
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package dev.compactmods.machines.data;
2+
3+
public abstract class NbtConstants {
4+
public static final String ROOM_OWNER = "owner";
5+
public final static String MACHINE_ID = "machine_id";
6+
}

src/main/java/dev/compactmods/machines/data/persistent/CompactRoomData.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
import dev.compactmods.machines.core.Registration;
1717
import dev.compactmods.machines.data.codec.CodecExtensions;
1818
import dev.compactmods.machines.data.codec.NbtListCollector;
19-
import dev.compactmods.machines.reference.EnumMachineSize;
19+
import dev.compactmods.machines.rooms.RoomSize;
2020
import dev.compactmods.machines.teleportation.DimensionalPosition;
2121
import dev.compactmods.machines.util.MathUtil;
2222
import net.minecraft.core.BlockPos;
@@ -160,7 +160,7 @@ public static class NewRoomRegistration {
160160
private final CompactRoomData storage;
161161
private Vec3 spawn;
162162
private ChunkPos chunk = new ChunkPos(0, 0);
163-
private EnumMachineSize size = EnumMachineSize.TINY;
163+
private RoomSize size = RoomSize.TINY;
164164
private BlockPos center = BlockPos.ZERO;
165165
private UUID owner;
166166

@@ -181,7 +181,7 @@ public NewRoomRegistration owner(UUID owner) {
181181
return this;
182182
}
183183

184-
public NewRoomRegistration size(EnumMachineSize size) {
184+
public NewRoomRegistration size(RoomSize size) {
185185
this.size = size;
186186
recalculateSize();
187187
return this;
@@ -215,22 +215,22 @@ public static class RoomData {
215215
CodecExtensions.UUID_CODEC.fieldOf("owner").forGetter(RoomData::getOwner),
216216
BlockPos.CODEC.fieldOf("center").forGetter(RoomData::getCenter),
217217
CodecExtensions.VECTOR3D.fieldOf("spawn").forGetter(RoomData::getSpawn),
218-
EnumMachineSize.CODEC.fieldOf("size").forGetter(RoomData::getSize)
218+
RoomSize.CODEC.fieldOf("size").forGetter(RoomData::getSize)
219219
).apply(i, RoomData::new));
220220

221221
private final UUID owner;
222222
private final BlockPos center;
223223
private Vec3 spawn;
224-
private final EnumMachineSize size;
224+
private final RoomSize size;
225225

226-
public RoomData(UUID owner, BlockPos center, Vec3 spawn, EnumMachineSize size) {
226+
public RoomData(UUID owner, BlockPos center, Vec3 spawn, RoomSize size) {
227227
this.owner = owner;
228228
this.center = center;
229229
this.spawn = spawn;
230230
this.size = size;
231231
}
232232

233-
public EnumMachineSize getSize() {
233+
public RoomSize getSize() {
234234
return this.size;
235235
}
236236

Lines changed: 45 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,30 @@
11
package dev.compactmods.machines.data.persistent;
22

3-
import com.mojang.serialization.DataResult;
3+
import java.util.Collection;
4+
import java.util.Optional;
45
import dev.compactmods.machines.CompactMachines;
6+
import dev.compactmods.machines.api.room.MachineRoomConnections;
57
import dev.compactmods.machines.core.Registration;
68
import dev.compactmods.machines.data.graph.CompactMachineConnectionGraph;
79
import net.minecraft.nbt.CompoundTag;
810
import net.minecraft.nbt.NbtOps;
9-
import net.minecraft.nbt.Tag;
1011
import net.minecraft.server.MinecraftServer;
1112
import net.minecraft.server.level.ServerLevel;
13+
import net.minecraft.world.level.ChunkPos;
1214
import net.minecraft.world.level.saveddata.SavedData;
1315
import net.minecraft.world.level.storage.DimensionDataStorage;
16+
import org.jetbrains.annotations.NotNull;
1417

15-
public class MachineConnections extends SavedData {
18+
public class MachineConnections extends SavedData implements MachineRoomConnections {
1619
public static final String DATA_NAME = CompactMachines.MOD_ID + "_connections";
1720

18-
public CompactMachineConnectionGraph graph;
21+
private CompactMachineConnectionGraph graph;
1922

2023
public MachineConnections() {
2124
graph = new CompactMachineConnectionGraph();
2225
}
2326

24-
public static MachineConnections get(MinecraftServer server) {
27+
public static MachineRoomConnections get(MinecraftServer server) {
2528
ServerLevel compactWorld = server.getLevel(Registration.COMPACT_DIMENSION);
2629
if (compactWorld == null) {
2730
CompactMachines.LOGGER.error("No compact dimension found. Report this.");
@@ -36,27 +39,52 @@ public static MachineConnections fromNbt(CompoundTag nbt) {
3639
MachineConnections c = new MachineConnections();
3740
if (nbt.contains("graph")) {
3841
CompoundTag graphNbt = nbt.getCompound("graph");
39-
DataResult<CompactMachineConnectionGraph> graphParseResult = CompactMachineConnectionGraph.CODEC.parse(NbtOps.INSTANCE, graphNbt);
40-
41-
graphParseResult
42+
CompactMachineConnectionGraph.CODEC.parse(NbtOps.INSTANCE, graphNbt)
4243
.resultOrPartial(CompactMachines.LOGGER::error)
4344
.ifPresent(g -> c.graph = g);
4445
}
4546

4647
return c;
4748
}
4849

50+
@NotNull
4951
@Override
50-
public CompoundTag save(CompoundTag nbt) {
51-
if(graph != null) {
52-
DataResult<Tag> dataResult = CompactMachineConnectionGraph.CODEC.encodeStart(NbtOps.INSTANCE, graph);
53-
dataResult
54-
.resultOrPartial(CompactMachines.LOGGER::error)
55-
.ifPresent(gNbt -> {
56-
nbt.put("graph", gNbt);
57-
});
58-
}
52+
public CompoundTag save(@NotNull CompoundTag nbt) {
53+
CompactMachineConnectionGraph.CODEC
54+
.encodeStart(NbtOps.INSTANCE, graph)
55+
.resultOrPartial(CompactMachines.LOGGER::error)
56+
.ifPresent(gNbt -> nbt.put("graph", gNbt));
5957

6058
return nbt;
6159
}
60+
61+
@Override
62+
@NotNull
63+
public Optional<ChunkPos> getConnectedRoom(int machineId) {
64+
return graph.getConnectedRoom(machineId);
65+
}
66+
67+
@Override
68+
@NotNull
69+
public Collection<Integer> getMachinesFor(ChunkPos chunkPos) {
70+
return graph.getMachinesFor(chunkPos);
71+
}
72+
73+
@Override
74+
public void registerMachine(int machine) {
75+
graph.addMachine(machine);
76+
setDirty();
77+
}
78+
79+
@Override
80+
public void registerRoom(ChunkPos roomChunk) {
81+
graph.addRoom(roomChunk);
82+
setDirty();
83+
}
84+
85+
@Override
86+
public void connectMachineToRoom(int machine, ChunkPos room) {
87+
graph.connectMachineToRoom(machine, room);
88+
setDirty();
89+
}
6290
}

0 commit comments

Comments
 (0)