Skip to content

Commit 43cc2ad

Browse files
committed
Fix PSD button, default zoom for room preview
[no ci]
1 parent 3b81d45 commit 43cc2ad

File tree

5 files changed

+21
-20
lines changed

5 files changed

+21
-20
lines changed

forge-main/src/main/java/dev/compactmods/machines/machine/CompactMachineBlock.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import net.minecraft.ChatFormatting;
2828
import net.minecraft.core.BlockPos;
2929
import net.minecraft.core.Direction;
30+
import net.minecraft.core.GlobalPos;
3031
import net.minecraft.core.registries.Registries;
3132
import net.minecraft.nbt.CompoundTag;
3233
import net.minecraft.resources.ResourceLocation;
@@ -201,7 +202,7 @@ public InteractionResult use(BlockState state, Level level, BlockPos pos, Player
201202

202203
RoomNetworkHandler.CHANNEL.send(
203204
PacketDistributor.PLAYER.with(() -> (ServerPlayer) player),
204-
new OpenMachinePreviewScreenPacket(room, roomBlocks)
205+
new OpenMachinePreviewScreenPacket(GlobalPos.of(level.dimension(), pos), room, roomBlocks)
205206
);
206207
} catch (NonexistentRoomException | MissingDimensionException e) {
207208
e.printStackTrace();

forge-main/src/main/java/dev/compactmods/machines/room/Rooms.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ public static StructureTemplate getInternalBlocks(MinecraftServer server, ChunkP
8282
final var bounds = roomInfo.getRoomBounds();
8383
final int inside = roomInfo.getSize().getInternalSize();
8484
tem.fillFromWorld(compactDim, new BlockPos((int)bounds.minX, (int)bounds.minY - 1, (int)bounds.minZ),
85-
new Vec3i(inside, inside + 1, inside), false, null);
85+
new Vec3i(inside, inside + 2, inside), false, null);
8686

8787
return tem;
8888
}

forge-main/src/main/java/dev/compactmods/machines/room/client/MachineRoomScreen.java

Lines changed: 11 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import net.minecraft.network.chat.Component;
1313
import net.minecraft.world.item.ItemStack;
1414
import net.minecraft.world.level.ChunkPos;
15+
import net.minecraft.world.phys.AABB;
1516

1617
public class MachineRoomScreen extends Screen {
1718

@@ -52,9 +53,16 @@ protected void init() {
5253
private void updateSceneRenderers() {
5354
if (this.scene != null) {
5455
renderer.setData(scene);
56+
renderer.camera().zoom(calculateZoomForRoom(AABB.of(scene.blockBoundaries())));
5557
}
5658
}
5759

60+
private static float calculateZoomForRoom(AABB internalSize) {
61+
double maxSize = Math.max(internalSize.getXsize(), internalSize.getZsize());
62+
63+
return (float) (-1.0f * maxSize) - 3;
64+
}
65+
5866
private boolean hasPsdItem() {
5967
return minecraft.player.getInventory().contains(new ItemStack(Shrinking.PERSONAL_SHRINKING_DEVICE.get()));
6068
}
@@ -63,10 +71,9 @@ private boolean hasPsdItem() {
6371
public void tick() {
6472
super.tick();
6573

66-
if (this.scene != null) {
67-
var level = ((VirtualLevel) scene.originalLevel().get());
68-
level.tick(minecraft.getPartialTick());
69-
level.animateTick();
74+
if (this.scene != null && scene.originalLevel().get() instanceof VirtualLevel vl) {
75+
vl.tick(minecraft.getPartialTick());
76+
vl.animateTick();
7077
}
7178

7279
if(psdButton != null)
@@ -83,21 +90,10 @@ public boolean mouseDragged(double mx, double my, int mButton, double dx, double
8390
return true;
8491
}
8592

86-
@Override
87-
public boolean mouseScrolled(double p_94686_, double p_94687_, double p_94688_) {
88-
this.renderer.zoom(p_94688_);
89-
return super.mouseScrolled(p_94686_, p_94687_, p_94688_);
90-
}
91-
9293
@Override
9394
public boolean keyPressed(int code, int scanCode, int modifiers) {
9495
final float rotateSpeed = 1 / 12f;
9596

96-
// if (code == InputConstants.KEY_A) {
97-
// this.autoRotate = !autoRotate;
98-
// return true;
99-
// }
100-
10197
if (code == InputConstants.KEY_R) {
10298
renderer.camera().resetLook();
10399
this.renderer.recalculateTranslucency();

forge-main/src/main/java/dev/compactmods/machines/room/network/OpenMachinePreviewScreenPacket.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
import dev.compactmods.machines.CompactMachines;
44
import dev.compactmods.machines.room.network.client.ClientRoomNetworkHandler;
55
import java.util.function.Supplier;
6+
7+
import net.minecraft.core.GlobalPos;
68
import net.minecraft.core.registries.BuiltInRegistries;
79
import net.minecraft.nbt.CompoundTag;
810
import net.minecraft.nbt.NbtAccounter;
@@ -11,20 +13,22 @@
1113
import net.minecraft.world.level.levelgen.structure.templatesystem.StructureTemplate;
1214
import net.minecraftforge.network.NetworkEvent;
1315

14-
public record OpenMachinePreviewScreenPacket(ChunkPos roomChunk, StructureTemplate internalBlocks) {
16+
public record OpenMachinePreviewScreenPacket(GlobalPos machinePos, ChunkPos roomChunk, StructureTemplate internalBlocks) {
1517
public void toNetwork(FriendlyByteBuf friendlyByteBuf) {
18+
friendlyByteBuf.writeGlobalPos(machinePos);
1619
friendlyByteBuf.writeChunkPos(roomChunk);
1720

1821
final var tag = internalBlocks.save(new CompoundTag());
1922
friendlyByteBuf.writeNbt(tag);
2023
}
2124

2225
public static OpenMachinePreviewScreenPacket fromNetwork(FriendlyByteBuf friendlyByteBuf) {
26+
final var machinePos = friendlyByteBuf.readGlobalPos();
2327
final var chunkPos = friendlyByteBuf.readChunkPos();
2428
final var blocks = new StructureTemplate();
2529
blocks.load(BuiltInRegistries.BLOCK.asLookup(), friendlyByteBuf.readNbt(NbtAccounter.UNLIMITED));
2630

27-
return new OpenMachinePreviewScreenPacket(chunkPos, blocks);
31+
return new OpenMachinePreviewScreenPacket(machinePos, chunkPos, blocks);
2832
}
2933

3034
public static boolean handle(OpenMachinePreviewScreenPacket pkt, Supplier<NetworkEvent.Context> context) {

forge-main/src/main/java/dev/compactmods/machines/room/network/client/ClientRoomNetworkHandler.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
public class ClientRoomNetworkHandler {
1717
public static void openRoomPreviewScreen(OpenMachinePreviewScreenPacket pkt) {
1818
final var mc = Minecraft.getInstance();
19-
mc.setScreen(new MachineRoomScreen(Component.empty(), GlobalPos.of(mc.level.dimension(), BlockPos.ZERO), pkt.roomChunk()));
19+
mc.setScreen(new MachineRoomScreen(Component.empty(), pkt.machinePos(), pkt.roomChunk()));
2020
if(mc.screen instanceof MachineRoomScreen mrs) {
2121
var virtualLevel = new VirtualLevel(Minecraft.getInstance().level.registryAccess());
2222
var bounds = pkt.internalBlocks().getBoundingBox(new StructurePlaceSettings(), BlockPos.ZERO);

0 commit comments

Comments
 (0)