Skip to content

Commit 9353542

Browse files
committed
Update room debug info so it gets passed via Neo data attachment sync
Should fix the F3 crashes now.
1 parent b31ea43 commit 9353542

26 files changed

+154
-104
lines changed

core-api/src/main/java/dev/compactmods/machines/api/CompactMachines.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ public static IPlayerHistoryApi playerHistoryApi() {
136136
return PLAYER_HISTORY_API;
137137
}
138138

139-
@Deprecated
139+
@Deprecated(forRemoval = true)
140140
public static Optional<RoomInstance> room(String roomCode) {
141141
return roomRegistrar(ServerLifecycleHooks.getCurrentServer()).get(roomCode);
142142
}

core-api/src/main/java/dev/compactmods/machines/api/attachment/CMDataAttachments.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import com.mojang.serialization.Codec;
55
import dev.compactmods.machines.api.CompactMachines;
66
import dev.compactmods.machines.api.machine.MachineColor;
7+
import dev.compactmods.machines.api.room.RoomDebugInformation;
78
import dev.compactmods.machines.api.room.history.RoomEntryPoint;
89
import dev.compactmods.machines.api.room.upgrade.inventory.RoomUpgradeInventory;
910
import net.minecraft.Util;
@@ -41,6 +42,12 @@ public interface CMDataAttachments {
4142
.serialize(Codec.STRING)
4243
.build());
4344

45+
Supplier<AttachmentType<RoomDebugInformation>> CURRENT_ROOM_DEBUG_INFO = ATTACHMENT_TYPES.register("current_room_debug_info", () -> AttachmentType
46+
.builder(() -> new RoomDebugInformation("", Util.NIL_UUID))
47+
.serialize(RoomDebugInformation.CODEC)
48+
.sync(RoomDebugInformation.STREAM_CODEC)
49+
.build());
50+
4451
Supplier<AttachmentType<UUID>> ROOM_OWNER = ATTACHMENT_TYPES.register("room_owner", () -> AttachmentType
4552
.builder(() -> Util.NIL_UUID)
4653
.serialize(UUIDUtil.CODEC)
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package dev.compactmods.machines.api.room;
2+
3+
import com.mojang.serialization.Codec;
4+
import com.mojang.serialization.codecs.RecordCodecBuilder;
5+
import net.minecraft.core.UUIDUtil;
6+
import net.minecraft.network.FriendlyByteBuf;
7+
import net.minecraft.network.codec.ByteBufCodecs;
8+
import net.minecraft.network.codec.StreamCodec;
9+
10+
import java.util.UUID;
11+
12+
public record RoomDebugInformation(String roomCode, UUID owner) {
13+
14+
public static final Codec<RoomDebugInformation> CODEC = RecordCodecBuilder.create(i -> i.group(
15+
Codec.STRING.fieldOf("room_code").forGetter(RoomDebugInformation::roomCode),
16+
UUIDUtil.CODEC.fieldOf("owner").forGetter(RoomDebugInformation::owner)
17+
).apply(i, RoomDebugInformation::new));
18+
19+
public static final StreamCodec<FriendlyByteBuf, RoomDebugInformation> STREAM_CODEC = StreamCodec.composite(
20+
ByteBufCodecs.STRING_UTF8, RoomDebugInformation::roomCode,
21+
UUIDUtil.STREAM_CODEC, RoomDebugInformation::owner,
22+
RoomDebugInformation::new
23+
);
24+
}

neoforge-main/src/main/java/dev/compactmods/machines/client/room/ClientRoomPacketHandler.java

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
import dev.compactmods.gander.level.VirtualLevel;
44
import dev.compactmods.gander.render.geometry.LevelBakery;
5-
import dev.compactmods.machines.api.attachment.CMDataAttachments;
65
import net.minecraft.client.Minecraft;
76
import net.minecraft.core.BlockPos;
87
import net.minecraft.util.RandomSource;
@@ -38,11 +37,4 @@ public static void handleBlockData(StructureTemplate blocks) {
3837
}
3938
}
4039

41-
public static void handleRoomSync(String roomCode) {
42-
final var mc = Minecraft.getInstance();
43-
44-
// FIXME - Current Room Owner
45-
mc.player.setData(CMDataAttachments.CURRENT_ROOM_CODE, roomCode);
46-
// mc.player.setData(Rooms.DataAttachments)
47-
}
4840
}

neoforge-main/src/main/java/dev/compactmods/machines/command/CMGiveMachineSubcommand.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ private static void createAndGiveNewMachine(CommandSourceStack src, ResourceLoca
121121
}
122122

123123
private static void createAndGiveExistingRoom(String roomCode, ServerPlayer player, CommandSourceStack src) {
124-
CompactMachines.room(roomCode).ifPresentOrElse(room -> {
124+
CompactMachines.room(src.getServer(), roomCode).ifPresentOrElse(room -> {
125125
ItemStack newItem = Machines.Items.boundToRoom(room.code(), room.defaultMachineColor());
126126
if (!player.addItem(newItem)) {
127127
src.sendFailure(CommandTranslations.CANNOT_GIVE_MACHINE.get());

neoforge-main/src/main/java/dev/compactmods/machines/command/CMTeleportSubcommand.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ public static LiteralArgumentBuilder<CommandSourceStack> make() {
3939
}
4040

4141
private static void teleportToRoom(CommandSourceStack src, MinecraftServer server, ServerPlayer player, String roomCode) {
42-
CompactMachines.room(roomCode).ifPresentOrElse(room -> {
42+
CompactMachines.room(server, roomCode).ifPresentOrElse(room -> {
4343
try {
4444
RoomHelper.teleportPlayerIntoRoom(server, player, room, RoomEntryPoint.playerUsingCommand(player));
4545
} catch (MissingDimensionException e) {

neoforge-main/src/main/java/dev/compactmods/machines/command/rooms/CMFindRoomSubcommand.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,9 @@ private static int fetchByChunkPos(CommandContext<CommandSourceStack> ctx) {
6767

6868
private static int fetchByMachineBlock(CommandContext<CommandSourceStack> ctx) throws CommandSyntaxException {
6969
final var block = BlockPosArgument.getLoadedBlockPos(ctx, "pos");
70-
final var level = ctx.getSource().getLevel();
70+
final var source = ctx.getSource();
71+
72+
final var level = source.getLevel();
7173

7274
if (!level.getBlockState(block).is(MachineConstants.MACHINE_BLOCK)) {
7375
ctx.getSource().sendFailure(MachineTranslations.NOT_A_MACHINE_BLOCK.apply(block));
@@ -76,7 +78,7 @@ private static int fetchByMachineBlock(CommandContext<CommandSourceStack> ctx) t
7678

7779
if (level.getBlockEntity(block) instanceof BoundCompactMachineBlockEntity be) {
7880
final var roomCode = be.connectedRoom();
79-
CompactMachines.room(roomCode).ifPresent(roomInfo -> {
81+
CompactMachines.room(source.getServer(), roomCode).ifPresent(roomInfo -> {
8082
ctx.getSource().sendSuccess(() -> RoomTranslations.MACHINE_ROOM_INFO.apply(block, roomInfo), false);
8183
});
8284
} else {

neoforge-main/src/main/java/dev/compactmods/machines/compat/jade/BoundMachineProviders.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,8 +82,9 @@ public ResourceLocation getUid() {
8282
public static final IServerDataProvider<BlockAccessor> SERVER_DATA = new IServerDataProvider<>() {
8383
@Override
8484
public void appendServerData(CompoundTag tag, BlockAccessor blockAccessor) {
85+
final var server = blockAccessor.getLevel().getServer();
8586
if (blockAccessor.getBlockEntity() instanceof BoundCompactMachineBlockEntity machine) {
86-
CompactMachines.room(machine.connectedRoom()).ifPresent(inst -> {
87+
CompactMachines.room(server, machine.connectedRoom()).ifPresent(inst -> {
8788
tag.store("room_code", Codec.STRING, inst.code());
8889
inst.getExistingData(CMDataAttachments.ROOM_OWNER).ifPresent(owner -> {
8990
tag.store("owner", UUIDUtil.CODEC, owner);
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package dev.compactmods.machines.data;
2+
3+
import net.minecraft.server.MinecraftServer;
4+
5+
public interface ServerHolder {
6+
MinecraftServer server();
7+
void setServer(MinecraftServer server);
8+
}

neoforge-main/src/main/java/dev/compactmods/machines/data/manager/CMSingletonDataFileManager.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import dev.compactmods.machines.data.CMDataFile;
66
import dev.compactmods.machines.data.CodecHolder;
77
import dev.compactmods.machines.data.DataFileUtil;
8+
import dev.compactmods.machines.data.ServerHolder;
89
import dev.compactmods.machines.player.PlayerEntryPointHistoryManager;
910
import net.minecraft.nbt.CompoundTag;
1011
import net.minecraft.nbt.NbtIo;
@@ -38,6 +39,8 @@ public void load() {
3839

3940
if (file.exists()) {
4041
this.instance = DataFileUtil.loadFileWithCodec(file, instance.codec());
42+
if(instance instanceof ServerHolder sh)
43+
sh.setServer(server);
4144
}
4245
}
4346

0 commit comments

Comments
 (0)