package com.hypixel.hytale.protocol.packets.player;
import com.hypixel.hytale.protocol.Packet;
import com.hypixel.hytale.protocol.PickupLocation;
import com.hypixel.hytale.protocol.io.ValidationResult;
import io.netty.buffer.ByteBuf;
import java.util.Objects;
import javax.annotation.Nonnull;
public class SyncPlayerPreferences implements Packet {
public static final int PACKET_ID = 116;
public static final boolean IS_COMPRESSED = false;
public static final int NULLABLE_BIT_FIELD_SIZE = 0;
public static final int FIXED_BLOCK_SIZE = 8;
public static final int VARIABLE_FIELD_COUNT = 0;
public static final int VARIABLE_BLOCK_START = 8;
public static final int MAX_SIZE = 8;
public boolean showEntityMarkers;
@Nonnull
public PickupLocation armorItemsPreferredPickupLocation;
@Nonnull
public PickupLocation weaponAndToolItemsPreferredPickupLocation;
@Nonnull
public PickupLocation usableItemsItemsPreferredPickupLocation;
@Nonnull
public PickupLocation solidBlockItemsPreferredPickupLocation;
@Nonnull
public PickupLocation miscItemsPreferredPickupLocation;
public boolean allowNPCDetection;
public boolean respondToHit;
public int getId() {
return 116;
}
public SyncPlayerPreferences() {
this.armorItemsPreferredPickupLocation = PickupLocation.Hotbar;
this.weaponAndToolItemsPreferredPickupLocation = PickupLocation.Hotbar;
this.usableItemsItemsPreferredPickupLocation = PickupLocation.Hotbar;
this.solidBlockItemsPreferredPickupLocation = PickupLocation.Hotbar;
this.miscItemsPreferredPickupLocation = PickupLocation.Hotbar;
}
public SyncPlayerPreferences(boolean showEntityMarkers, @Nonnull PickupLocation armorItemsPreferredPickupLocation, @Nonnull PickupLocation weaponAndToolItemsPreferredPickupLocation, @Nonnull PickupLocation usableItemsItemsPreferredPickupLocation, @Nonnull PickupLocation solidBlockItemsPreferredPickupLocation, @Nonnull PickupLocation miscItemsPreferredPickupLocation, boolean allowNPCDetection, boolean respondToHit) {
this.armorItemsPreferredPickupLocation = PickupLocation.Hotbar;
this.weaponAndToolItemsPreferredPickupLocation = PickupLocation.Hotbar;
this.usableItemsItemsPreferredPickupLocation = PickupLocation.Hotbar;
this.solidBlockItemsPreferredPickupLocation = PickupLocation.Hotbar;
this.miscItemsPreferredPickupLocation = PickupLocation.Hotbar;
this.showEntityMarkers = showEntityMarkers;
this.armorItemsPreferredPickupLocation = armorItemsPreferredPickupLocation;
this.weaponAndToolItemsPreferredPickupLocation = weaponAndToolItemsPreferredPickupLocation;
this.usableItemsItemsPreferredPickupLocation = usableItemsItemsPreferredPickupLocation;
this.solidBlockItemsPreferredPickupLocation = solidBlockItemsPreferredPickupLocation;
this.miscItemsPreferredPickupLocation = miscItemsPreferredPickupLocation;
this.allowNPCDetection = allowNPCDetection;
this.respondToHit = respondToHit;
}
public SyncPlayerPreferences(@Nonnull SyncPlayerPreferences other) {
this.armorItemsPreferredPickupLocation = PickupLocation.Hotbar;
this.weaponAndToolItemsPreferredPickupLocation = PickupLocation.Hotbar;
this.usableItemsItemsPreferredPickupLocation = PickupLocation.Hotbar;
this.solidBlockItemsPreferredPickupLocation = PickupLocation.Hotbar;
this.miscItemsPreferredPickupLocation = PickupLocation.Hotbar;
this.showEntityMarkers = other.showEntityMarkers;
this.armorItemsPreferredPickupLocation = other.armorItemsPreferredPickupLocation;
this.weaponAndToolItemsPreferredPickupLocation = other.weaponAndToolItemsPreferredPickupLocation;
this.usableItemsItemsPreferredPickupLocation = other.usableItemsItemsPreferredPickupLocation;
this.solidBlockItemsPreferredPickupLocation = other.solidBlockItemsPreferredPickupLocation;
this.miscItemsPreferredPickupLocation = other.miscItemsPreferredPickupLocation;
this.allowNPCDetection = other.allowNPCDetection;
this.respondToHit = other.respondToHit;
}
@Nonnull
public static SyncPlayerPreferences deserialize(@Nonnull ByteBuf buf, int offset) {
SyncPlayerPreferences obj = new SyncPlayerPreferences();
obj.showEntityMarkers = buf.getByte(offset + 0) != 0;
obj.armorItemsPreferredPickupLocation = PickupLocation.fromValue(buf.getByte(offset + 1));
obj.weaponAndToolItemsPreferredPickupLocation = PickupLocation.fromValue(buf.getByte(offset + 2));
obj.usableItemsItemsPreferredPickupLocation = PickupLocation.fromValue(buf.getByte(offset + 3));
obj.solidBlockItemsPreferredPickupLocation = PickupLocation.fromValue(buf.getByte(offset + 4));
obj.miscItemsPreferredPickupLocation = PickupLocation.fromValue(buf.getByte(offset + 5));
obj.allowNPCDetection = buf.getByte(offset + 6) != 0;
obj.respondToHit = buf.getByte(offset + 7) != 0;
return obj;
}
public static int computeBytesConsumed(@Nonnull ByteBuf buf, int offset) {
return 8;
}
public void serialize(@Nonnull ByteBuf buf) {
buf.writeByte(this.showEntityMarkers ? 1 : 0);
buf.writeByte(this.armorItemsPreferredPickupLocation.getValue());
buf.writeByte(this.weaponAndToolItemsPreferredPickupLocation.getValue());
buf.writeByte(this.usableItemsItemsPreferredPickupLocation.getValue());
buf.writeByte(this.solidBlockItemsPreferredPickupLocation.getValue());
buf.writeByte(this.miscItemsPreferredPickupLocation.getValue());
buf.writeByte(this.allowNPCDetection ? 1 : 0);
buf.writeByte(this.respondToHit ? 1 : 0);
}
public int computeSize() {
return 8;
}
public static ValidationResult validateStructure(@Nonnull ByteBuf buffer, int offset) {
return buffer.readableBytes() - offset < 8 ? ValidationResult.error("Buffer too small: expected at least 8 bytes") : ValidationResult.OK;
}
public SyncPlayerPreferences clone() {
SyncPlayerPreferences copy = new SyncPlayerPreferences();
copy.showEntityMarkers = this.showEntityMarkers;
copy.armorItemsPreferredPickupLocation = this.armorItemsPreferredPickupLocation;
copy.weaponAndToolItemsPreferredPickupLocation = this.weaponAndToolItemsPreferredPickupLocation;
copy.usableItemsItemsPreferredPickupLocation = this.usableItemsItemsPreferredPickupLocation;
copy.solidBlockItemsPreferredPickupLocation = this.solidBlockItemsPreferredPickupLocation;
copy.miscItemsPreferredPickupLocation = this.miscItemsPreferredPickupLocation;
copy.allowNPCDetection = this.allowNPCDetection;
copy.respondToHit = this.respondToHit;
return copy;
}
public boolean equals(Object obj) {
if (this == obj) {
return true;
} else if (!(obj instanceof SyncPlayerPreferences)) {
return false;
} else {
SyncPlayerPreferences other = (SyncPlayerPreferences)obj;
return this.showEntityMarkers == other.showEntityMarkers && Objects.equals(this.armorItemsPreferredPickupLocation, other.armorItemsPreferredPickupLocation) && Objects.equals(this.weaponAndToolItemsPreferredPickupLocation, other.weaponAndToolItemsPreferredPickupLocation) && Objects.equals(this.usableItemsItemsPreferredPickupLocation, other.usableItemsItemsPreferredPickupLocation) && Objects.equals(this.solidBlockItemsPreferredPickupLocation, other.solidBlockItemsPreferredPickupLocation) && Objects.equals(this.miscItemsPreferredPickupLocation, other.miscItemsPreferredPickupLocation) && this.allowNPCDetection == other.allowNPCDetection && this.respondToHit == other.respondToHit;
}
}
public int hashCode() {
return Objects.hash(new Object[]{this.showEntityMarkers, this.armorItemsPreferredPickupLocation, this.weaponAndToolItemsPreferredPickupLocation, this.usableItemsItemsPreferredPickupLocation, this.solidBlockItemsPreferredPickupLocation, this.miscItemsPreferredPickupLocation, this.allowNPCDetection, this.respondToHit});
}
}