76 lines
2.4 KiB
Java
76 lines
2.4 KiB
Java
package net.minecraft.network.protocol.game;
|
|
|
|
import net.minecraft.advancements.AdvancementHolder;
|
|
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.resources.ResourceLocation;
|
|
import org.jetbrains.annotations.Nullable;
|
|
|
|
public class ServerboundSeenAdvancementsPacket implements Packet<ServerGamePacketListener> {
|
|
public static final StreamCodec<FriendlyByteBuf, ServerboundSeenAdvancementsPacket> STREAM_CODEC = Packet.codec(
|
|
ServerboundSeenAdvancementsPacket::write, ServerboundSeenAdvancementsPacket::new
|
|
);
|
|
private final ServerboundSeenAdvancementsPacket.Action action;
|
|
@Nullable
|
|
private final ResourceLocation tab;
|
|
|
|
public ServerboundSeenAdvancementsPacket(ServerboundSeenAdvancementsPacket.Action action, @Nullable ResourceLocation tab) {
|
|
this.action = action;
|
|
this.tab = tab;
|
|
}
|
|
|
|
public static ServerboundSeenAdvancementsPacket openedTab(AdvancementHolder advancement) {
|
|
return new ServerboundSeenAdvancementsPacket(ServerboundSeenAdvancementsPacket.Action.OPENED_TAB, advancement.id());
|
|
}
|
|
|
|
public static ServerboundSeenAdvancementsPacket closedScreen() {
|
|
return new ServerboundSeenAdvancementsPacket(ServerboundSeenAdvancementsPacket.Action.CLOSED_SCREEN, null);
|
|
}
|
|
|
|
private ServerboundSeenAdvancementsPacket(FriendlyByteBuf buffer) {
|
|
this.action = buffer.readEnum(ServerboundSeenAdvancementsPacket.Action.class);
|
|
if (this.action == ServerboundSeenAdvancementsPacket.Action.OPENED_TAB) {
|
|
this.tab = buffer.readResourceLocation();
|
|
} else {
|
|
this.tab = null;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Writes the raw packet data to the data stream.
|
|
*/
|
|
private void write(FriendlyByteBuf buffer) {
|
|
buffer.writeEnum(this.action);
|
|
if (this.action == ServerboundSeenAdvancementsPacket.Action.OPENED_TAB) {
|
|
buffer.writeResourceLocation(this.tab);
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public PacketType<ServerboundSeenAdvancementsPacket> type() {
|
|
return GamePacketTypes.SERVERBOUND_SEEN_ADVANCEMENTS;
|
|
}
|
|
|
|
/**
|
|
* Passes this Packet on to the NetHandler for processing.
|
|
*/
|
|
public void handle(ServerGamePacketListener handler) {
|
|
handler.handleSeenAdvancements(this);
|
|
}
|
|
|
|
public ServerboundSeenAdvancementsPacket.Action getAction() {
|
|
return this.action;
|
|
}
|
|
|
|
@Nullable
|
|
public ResourceLocation getTab() {
|
|
return this.tab;
|
|
}
|
|
|
|
public static enum Action {
|
|
OPENED_TAB,
|
|
CLOSED_SCREEN;
|
|
}
|
|
}
|