/* * Decompiled with CFR 0.152. * * Could not load the following classes: * org.jspecify.annotations.Nullable */ package net.minecraft.network.protocol.game; import java.util.Collection; import java.util.List; import java.util.Optional; import net.minecraft.network.RegistryFriendlyByteBuf; import net.minecraft.network.codec.ByteBufCodecs; import net.minecraft.network.codec.StreamCodec; import net.minecraft.network.protocol.Packet; import net.minecraft.network.protocol.PacketType; import net.minecraft.network.protocol.game.ClientGamePacketListener; import net.minecraft.network.protocol.game.GamePacketTypes; import net.minecraft.world.level.saveddata.maps.MapDecoration; import net.minecraft.world.level.saveddata.maps.MapId; import net.minecraft.world.level.saveddata.maps.MapItemSavedData; import org.jspecify.annotations.Nullable; public record ClientboundMapItemDataPacket(MapId mapId, byte scale, boolean locked, Optional> decorations, Optional colorPatch) implements Packet { public static final StreamCodec STREAM_CODEC = StreamCodec.composite(MapId.STREAM_CODEC, ClientboundMapItemDataPacket::mapId, ByteBufCodecs.BYTE, ClientboundMapItemDataPacket::scale, ByteBufCodecs.BOOL, ClientboundMapItemDataPacket::locked, MapDecoration.STREAM_CODEC.apply(ByteBufCodecs.list()).apply(ByteBufCodecs::optional), ClientboundMapItemDataPacket::decorations, MapItemSavedData.MapPatch.STREAM_CODEC, ClientboundMapItemDataPacket::colorPatch, ClientboundMapItemDataPacket::new); public ClientboundMapItemDataPacket(MapId mapId, byte scale, boolean locked, @Nullable Collection decorations, @Nullable MapItemSavedData.MapPatch colorPatch) { this(mapId, scale, locked, decorations != null ? Optional.of(List.copyOf(decorations)) : Optional.empty(), Optional.ofNullable(colorPatch)); } @Override public PacketType type() { return GamePacketTypes.CLIENTBOUND_MAP_ITEM_DATA; } @Override public void handle(ClientGamePacketListener listener) { listener.handleMapItemData(this); } public void applyToMap(MapItemSavedData map) { this.decorations.ifPresent(map::addClientSideDecorations); this.colorPatch.ifPresent(patch -> patch.applyToMap(map)); } }