1
0
mirror of https://github.com/SquidDev-CC/CC-Tweaked synced 2025-08-28 08:12:18 +00:00

Fix #16, clients now use server configured terminal dimensions. (#55)

Adds `TerminalDimensionsClientMessage` that:
- is sent to each player on server join.
- syncs computer, pocket, and maximum monitor sizes.
This commit is contained in:
Cloud Chagnon 2022-01-20 13:06:14 -07:00 committed by Toad-Dev
parent ef171c2e22
commit 47e7fc25b3
3 changed files with 77 additions and 0 deletions

View File

@ -76,6 +76,7 @@ public final class NetworkHandler
registerMainThread( 17, SpeakerStopClientMessage.class, SpeakerStopClientMessage::new );
registerMainThread( 18, SpeakerMoveClientMessage.class, SpeakerMoveClientMessage::new );
registerMainThread( 19, UploadResultMessage.class, UploadResultMessage::new );
registerMainThread( 21, TerminalDimensionsClientMessage.class, TerminalDimensionsClientMessage::new );
}
private static void receive( PacketContext context, FriendlyByteBuf buffer )

View File

@ -0,0 +1,70 @@
/*
* This file is part of ComputerCraft - http://www.computercraft.info
* Copyright Daniel Ratcliffe, 2011-2022. Do not distribute without permission.
* Send enquiries to dratcliffe@gmail.com
*/
package dan200.computercraft.shared.network.client;
import dan200.computercraft.ComputerCraft;
import dan200.computercraft.shared.network.NetworkMessage;
import net.fabricmc.fabric.api.network.PacketContext;
import net.minecraft.network.FriendlyByteBuf;
import javax.annotation.Nonnull;
/**
* The terminal and portable computer server-side configured dimensions.
*/
public class TerminalDimensionsClientMessage implements NetworkMessage
{
private final int computerTermWidth;
private final int computerTermHeight;
private final int pocketTermWidth;
private final int pocketTermHeight;
private final int monitorWidth;
private final int monitorHeight;
public TerminalDimensionsClientMessage()
{
this.computerTermWidth = ComputerCraft.computerTermWidth;
this.computerTermHeight = ComputerCraft.computerTermHeight;
this.pocketTermWidth = ComputerCraft.pocketTermWidth;
this.pocketTermHeight = ComputerCraft.pocketTermHeight;
this.monitorHeight = ComputerCraft.monitorHeight;
this.monitorWidth = ComputerCraft.monitorWidth;
}
public TerminalDimensionsClientMessage( @Nonnull FriendlyByteBuf buf )
{
computerTermWidth = buf.readVarInt();
computerTermHeight = buf.readVarInt();
pocketTermWidth = buf.readVarInt();
pocketTermHeight = buf.readVarInt();
monitorHeight = buf.readVarInt();
monitorWidth = buf.readVarInt();
}
@Override
public void toBytes( FriendlyByteBuf buf )
{
buf.writeVarInt( computerTermWidth );
buf.writeVarInt( computerTermHeight );
buf.writeVarInt( pocketTermWidth );
buf.writeVarInt( pocketTermHeight );
buf.writeVarInt( monitorWidth );
buf.writeVarInt( monitorHeight );
}
@Override
public void handle( PacketContext context )
{
ComputerCraft.computerTermWidth = this.computerTermWidth;
ComputerCraft.computerTermHeight = this.computerTermHeight;
ComputerCraft.pocketTermWidth = this.pocketTermWidth;
ComputerCraft.pocketTermHeight = this.pocketTermHeight;
ComputerCraft.monitorWidth = this.monitorWidth;
ComputerCraft.monitorHeight = this.monitorHeight;
}
}

View File

@ -23,6 +23,7 @@ import dan200.computercraft.shared.data.HasComputerIdLootCondition;
import dan200.computercraft.shared.data.PlayerCreativeLootCondition;
import dan200.computercraft.shared.media.items.RecordMedia;
import dan200.computercraft.shared.network.NetworkHandler;
import dan200.computercraft.shared.network.client.TerminalDimensionsClientMessage;
import dan200.computercraft.shared.peripheral.commandblock.CommandBlockPeripheral;
import dan200.computercraft.shared.peripheral.generic.methods.InventoryMethods;
import dan200.computercraft.shared.peripheral.modem.wired.BlockCable;
@ -35,6 +36,7 @@ import net.fabricmc.fabric.api.event.lifecycle.v1.ServerBlockEntityEvents;
import net.fabricmc.fabric.api.event.lifecycle.v1.ServerLifecycleEvents;
import net.fabricmc.fabric.api.event.lifecycle.v1.ServerTickEvents;
import net.fabricmc.fabric.api.event.player.PlayerBlockBreakEvents;
import net.fabricmc.fabric.api.networking.v1.ServerPlayConnectionEvents;
import net.fabricmc.fabric.api.resource.ResourceManagerHelper;
import net.minecraft.core.Registry;
import net.minecraft.resources.ResourceLocation;
@ -137,6 +139,10 @@ public final class ComputerCraftProxyCommon
// Config
ServerLifecycleEvents.SERVER_STARTING.register( Config::serverStarting );
ServerLifecycleEvents.SERVER_STOPPING.register( Config::serverStopping );
ServerPlayConnectionEvents.JOIN.register( ( listener, sender, server ) ->
{
NetworkHandler.sendToPlayer( listener.player, new TerminalDimensionsClientMessage() );
} );
TurtleEvent.EVENT_BUS.register( FurnaceRefuelHandler.INSTANCE );
TurtleEvent.EVENT_BUS.register( new TurtlePermissions() );