Code/net/minecraft/network/protocol/game/ServerboundSetStructureBloc...

202 lines
6.0 KiB
Java
Raw Permalink Normal View History

2025-07-01 06:20:03 +00:00
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 p_179771_,
StructureBlockEntity.UpdateType p_179772_,
StructureMode p_179773_,
String p_179774_,
BlockPos p_179775_,
Vec3i p_179776_,
Mirror p_179777_,
Rotation p_179778_,
String p_179779_,
boolean p_179780_,
boolean p_179781_,
boolean p_179782_,
boolean p_393817_,
float p_179783_,
long p_179784_
) {
this.pos = p_179771_;
this.updateType = p_179772_;
this.mode = p_179773_;
this.name = p_179774_;
this.offset = p_179775_;
this.size = p_179776_;
this.mirror = p_179777_;
this.rotation = p_179778_;
this.data = p_179779_;
this.ignoreEntities = p_179780_;
this.strict = p_179781_;
this.showAir = p_179782_;
this.showBoundingBox = p_393817_;
this.integrity = p_179783_;
this.seed = p_179784_;
}
private ServerboundSetStructureBlockPacket(FriendlyByteBuf p_179786_) {
this.pos = p_179786_.readBlockPos();
this.updateType = p_179786_.readEnum(StructureBlockEntity.UpdateType.class);
this.mode = p_179786_.readEnum(StructureMode.class);
this.name = p_179786_.readUtf();
int i = 48;
this.offset = new BlockPos(
Mth.clamp(p_179786_.readByte(), -48, 48), Mth.clamp(p_179786_.readByte(), -48, 48), Mth.clamp(p_179786_.readByte(), -48, 48)
);
int j = 48;
this.size = new Vec3i(
Mth.clamp(p_179786_.readByte(), 0, 48), Mth.clamp(p_179786_.readByte(), 0, 48), Mth.clamp(p_179786_.readByte(), 0, 48)
);
this.mirror = p_179786_.readEnum(Mirror.class);
this.rotation = p_179786_.readEnum(Rotation.class);
this.data = p_179786_.readUtf(128);
this.integrity = Mth.clamp(p_179786_.readFloat(), 0.0F, 1.0F);
this.seed = p_179786_.readVarLong();
int k = p_179786_.readByte();
this.ignoreEntities = (k & 1) != 0;
this.strict = (k & 8) != 0;
this.showAir = (k & 2) != 0;
this.showBoundingBox = (k & 4) != 0;
}
private void write(FriendlyByteBuf p_134631_) {
p_134631_.writeBlockPos(this.pos);
p_134631_.writeEnum(this.updateType);
p_134631_.writeEnum(this.mode);
p_134631_.writeUtf(this.name);
p_134631_.writeByte(this.offset.getX());
p_134631_.writeByte(this.offset.getY());
p_134631_.writeByte(this.offset.getZ());
p_134631_.writeByte(this.size.getX());
p_134631_.writeByte(this.size.getY());
p_134631_.writeByte(this.size.getZ());
p_134631_.writeEnum(this.mirror);
p_134631_.writeEnum(this.rotation);
p_134631_.writeUtf(this.data);
p_134631_.writeFloat(this.integrity);
p_134631_.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;
}
p_134631_.writeByte(i);
}
@Override
public PacketType<ServerboundSetStructureBlockPacket> type() {
return GamePacketTypes.SERVERBOUND_SET_STRUCTURE_BLOCK;
}
public void handle(ServerGamePacketListener p_134628_) {
p_134628_.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;
}
}