204 lines
		
	
	
	
		
			5.2 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
			
		
		
	
	
			204 lines
		
	
	
	
		
			5.2 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
| package net.minecraft.network.protocol.game;
 | |
| 
 | |
| import net.minecraft.core.BlockPos;
 | |
| import net.minecraft.core.Vec3i;
 | |
| import net.minecraft.network.FriendlyByteBuf;
 | |
| import net.minecraft.network.codec.StreamCodec;
 | |
| import net.minecraft.network.protocol.Packet;
 | |
| import net.minecraft.network.protocol.PacketType;
 | |
| import net.minecraft.util.Mth;
 | |
| import net.minecraft.world.level.block.Mirror;
 | |
| import net.minecraft.world.level.block.Rotation;
 | |
| import net.minecraft.world.level.block.entity.StructureBlockEntity;
 | |
| import net.minecraft.world.level.block.state.properties.StructureMode;
 | |
| 
 | |
| public class ServerboundSetStructureBlockPacket implements Packet<ServerGamePacketListener> {
 | |
| 	public static final StreamCodec<FriendlyByteBuf, ServerboundSetStructureBlockPacket> STREAM_CODEC = Packet.codec(
 | |
| 		ServerboundSetStructureBlockPacket::write, ServerboundSetStructureBlockPacket::new
 | |
| 	);
 | |
| 	private static final int FLAG_IGNORE_ENTITIES = 1;
 | |
| 	private static final int FLAG_SHOW_AIR = 2;
 | |
| 	private static final int FLAG_SHOW_BOUNDING_BOX = 4;
 | |
| 	private static final int FLAG_STRICT = 8;
 | |
| 	private final BlockPos pos;
 | |
| 	private final StructureBlockEntity.UpdateType updateType;
 | |
| 	private final StructureMode mode;
 | |
| 	private final String name;
 | |
| 	private final BlockPos offset;
 | |
| 	private final Vec3i size;
 | |
| 	private final Mirror mirror;
 | |
| 	private final Rotation rotation;
 | |
| 	private final String data;
 | |
| 	private final boolean ignoreEntities;
 | |
| 	private final boolean strict;
 | |
| 	private final boolean showAir;
 | |
| 	private final boolean showBoundingBox;
 | |
| 	private final float integrity;
 | |
| 	private final long seed;
 | |
| 
 | |
| 	public ServerboundSetStructureBlockPacket(
 | |
| 		BlockPos pos,
 | |
| 		StructureBlockEntity.UpdateType updateType,
 | |
| 		StructureMode mode,
 | |
| 		String name,
 | |
| 		BlockPos offset,
 | |
| 		Vec3i size,
 | |
| 		Mirror mirror,
 | |
| 		Rotation rotation,
 | |
| 		String data,
 | |
| 		boolean ignoreEntities,
 | |
| 		boolean strict,
 | |
| 		boolean showAir,
 | |
| 		boolean showBoundingBox,
 | |
| 		float integrity,
 | |
| 		long seed
 | |
| 	) {
 | |
| 		this.pos = pos;
 | |
| 		this.updateType = updateType;
 | |
| 		this.mode = mode;
 | |
| 		this.name = name;
 | |
| 		this.offset = offset;
 | |
| 		this.size = size;
 | |
| 		this.mirror = mirror;
 | |
| 		this.rotation = rotation;
 | |
| 		this.data = data;
 | |
| 		this.ignoreEntities = ignoreEntities;
 | |
| 		this.strict = strict;
 | |
| 		this.showAir = showAir;
 | |
| 		this.showBoundingBox = showBoundingBox;
 | |
| 		this.integrity = integrity;
 | |
| 		this.seed = seed;
 | |
| 	}
 | |
| 
 | |
| 	private ServerboundSetStructureBlockPacket(FriendlyByteBuf buffer) {
 | |
| 		this.pos = buffer.readBlockPos();
 | |
| 		this.updateType = buffer.readEnum(StructureBlockEntity.UpdateType.class);
 | |
| 		this.mode = buffer.readEnum(StructureMode.class);
 | |
| 		this.name = buffer.readUtf();
 | |
| 		int i = 48;
 | |
| 		this.offset = new BlockPos(Mth.clamp(buffer.readByte(), -48, 48), Mth.clamp(buffer.readByte(), -48, 48), Mth.clamp(buffer.readByte(), -48, 48));
 | |
| 		int j = 48;
 | |
| 		this.size = new Vec3i(Mth.clamp(buffer.readByte(), 0, 48), Mth.clamp(buffer.readByte(), 0, 48), Mth.clamp(buffer.readByte(), 0, 48));
 | |
| 		this.mirror = buffer.readEnum(Mirror.class);
 | |
| 		this.rotation = buffer.readEnum(Rotation.class);
 | |
| 		this.data = buffer.readUtf(128);
 | |
| 		this.integrity = Mth.clamp(buffer.readFloat(), 0.0F, 1.0F);
 | |
| 		this.seed = buffer.readVarLong();
 | |
| 		int k = buffer.readByte();
 | |
| 		this.ignoreEntities = (k & 1) != 0;
 | |
| 		this.strict = (k & 8) != 0;
 | |
| 		this.showAir = (k & 2) != 0;
 | |
| 		this.showBoundingBox = (k & 4) != 0;
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Writes the raw packet data to the data stream.
 | |
| 	 */
 | |
| 	private void write(FriendlyByteBuf buffer) {
 | |
| 		buffer.writeBlockPos(this.pos);
 | |
| 		buffer.writeEnum(this.updateType);
 | |
| 		buffer.writeEnum(this.mode);
 | |
| 		buffer.writeUtf(this.name);
 | |
| 		buffer.writeByte(this.offset.getX());
 | |
| 		buffer.writeByte(this.offset.getY());
 | |
| 		buffer.writeByte(this.offset.getZ());
 | |
| 		buffer.writeByte(this.size.getX());
 | |
| 		buffer.writeByte(this.size.getY());
 | |
| 		buffer.writeByte(this.size.getZ());
 | |
| 		buffer.writeEnum(this.mirror);
 | |
| 		buffer.writeEnum(this.rotation);
 | |
| 		buffer.writeUtf(this.data);
 | |
| 		buffer.writeFloat(this.integrity);
 | |
| 		buffer.writeVarLong(this.seed);
 | |
| 		int i = 0;
 | |
| 		if (this.ignoreEntities) {
 | |
| 			i |= 1;
 | |
| 		}
 | |
| 
 | |
| 		if (this.showAir) {
 | |
| 			i |= 2;
 | |
| 		}
 | |
| 
 | |
| 		if (this.showBoundingBox) {
 | |
| 			i |= 4;
 | |
| 		}
 | |
| 
 | |
| 		if (this.strict) {
 | |
| 			i |= 8;
 | |
| 		}
 | |
| 
 | |
| 		buffer.writeByte(i);
 | |
| 	}
 | |
| 
 | |
| 	@Override
 | |
| 	public PacketType<ServerboundSetStructureBlockPacket> type() {
 | |
| 		return GamePacketTypes.SERVERBOUND_SET_STRUCTURE_BLOCK;
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Passes this Packet on to the NetHandler for processing.
 | |
| 	 */
 | |
| 	public void handle(ServerGamePacketListener handler) {
 | |
| 		handler.handleSetStructureBlock(this);
 | |
| 	}
 | |
| 
 | |
| 	public BlockPos getPos() {
 | |
| 		return this.pos;
 | |
| 	}
 | |
| 
 | |
| 	public StructureBlockEntity.UpdateType getUpdateType() {
 | |
| 		return this.updateType;
 | |
| 	}
 | |
| 
 | |
| 	public StructureMode getMode() {
 | |
| 		return this.mode;
 | |
| 	}
 | |
| 
 | |
| 	public String getName() {
 | |
| 		return this.name;
 | |
| 	}
 | |
| 
 | |
| 	public BlockPos getOffset() {
 | |
| 		return this.offset;
 | |
| 	}
 | |
| 
 | |
| 	public Vec3i getSize() {
 | |
| 		return this.size;
 | |
| 	}
 | |
| 
 | |
| 	public Mirror getMirror() {
 | |
| 		return this.mirror;
 | |
| 	}
 | |
| 
 | |
| 	public Rotation getRotation() {
 | |
| 		return this.rotation;
 | |
| 	}
 | |
| 
 | |
| 	public String getData() {
 | |
| 		return this.data;
 | |
| 	}
 | |
| 
 | |
| 	public boolean isIgnoreEntities() {
 | |
| 		return this.ignoreEntities;
 | |
| 	}
 | |
| 
 | |
| 	public boolean isStrict() {
 | |
| 		return this.strict;
 | |
| 	}
 | |
| 
 | |
| 	public boolean isShowAir() {
 | |
| 		return this.showAir;
 | |
| 	}
 | |
| 
 | |
| 	public boolean isShowBoundingBox() {
 | |
| 		return this.showBoundingBox;
 | |
| 	}
 | |
| 
 | |
| 	public float getIntegrity() {
 | |
| 		return this.integrity;
 | |
| 	}
 | |
| 
 | |
| 	public long getSeed() {
 | |
| 		return this.seed;
 | |
| 	}
 | |
| }
 |