CC-Tweaked/src/main/java/dan200/computercraft/shared/network/client/ComputerDataClientMessage.java

52 lines
1.5 KiB
Java

/*
* This file is part of ComputerCraft - http://www.computercraft.info
* Copyright Daniel Ratcliffe, 2011-2021. Do not distribute without permission.
* Send enquiries to dratcliffe@gmail.com
*/
package dan200.computercraft.shared.network.client;
import dan200.computercraft.shared.computer.core.ComputerState;
import dan200.computercraft.shared.computer.core.ServerComputer;
import net.minecraft.nbt.CompoundNBT;
import net.minecraft.network.PacketBuffer;
import net.minecraftforge.fml.network.NetworkEvent;
import javax.annotation.Nonnull;
/**
* Provides additional data about a client computer, such as its ID and current state.
*/
public class ComputerDataClientMessage extends ComputerClientMessage
{
private final ComputerState state;
private final CompoundNBT userData;
public ComputerDataClientMessage( ServerComputer computer )
{
super( computer.getInstanceID() );
state = computer.getState();
userData = computer.getUserData();
}
public ComputerDataClientMessage( @Nonnull PacketBuffer buf )
{
super( buf );
state = buf.readEnum( ComputerState.class );
userData = buf.readNbt();
}
@Override
public void toBytes( @Nonnull PacketBuffer buf )
{
super.toBytes( buf );
buf.writeEnum( state );
buf.writeNbt( userData );
}
@Override
public void handle( NetworkEvent.Context context )
{
getComputer().setState( state, userData );
}
}