Files
Paper/paper-api/src/main/java/com/destroystokyo/paper/profile/ProfileProperty.java
Aikar ccd4375fa5 Basic PlayerProfile API
Provides basic elements of a PlayerProfile to be used by future API/events
2018-01-15 21:46:46 -05:00

74 lines
2.3 KiB
Java

package com.destroystokyo.paper.profile;
import com.google.common.base.Preconditions;
import java.util.Objects;
import org.jspecify.annotations.NullMarked;
import org.jspecify.annotations.Nullable;
/**
* Represents a property on a {@link PlayerProfile}
*/
@NullMarked
public final class ProfileProperty {
private final String name;
private final String value;
private final @Nullable String signature;
public ProfileProperty(final String name, final String value) {
this(name, value, null);
}
public ProfileProperty(final String name, final String value, final @Nullable String signature) {
this.name = Preconditions.checkNotNull(name, "ProfileProperty name can not be null");
this.value = Preconditions.checkNotNull(value, "ProfileProperty value can not be null");
this.signature = signature;
Preconditions.checkArgument(name.length() <= 64, "ProfileProperty name can not be longer than 64 characters");
Preconditions.checkArgument(value.length() <= Short.MAX_VALUE, "ProfileProperty value can not be longer than 32767 characters");
Preconditions.checkArgument(signature == null || signature.length() <= 1024, "ProfileProperty signature can not be longer than 1024 characters");
}
/**
* @return The property name, ie "textures"
*/
public String getName() {
return this.name;
}
/**
* @return The property value, likely to be base64 encoded
*/
public String getValue() {
return this.value;
}
/**
* @return A signature from Mojang for signed properties
*/
public @Nullable String getSignature() {
return this.signature;
}
/**
* @return If this property has a signature or not
*/
public boolean isSigned() {
return this.signature != null;
}
@Override
public boolean equals(final @Nullable Object o) {
if (this == o) return true;
if (o == null || this.getClass() != o.getClass()) return false;
final ProfileProperty that = (ProfileProperty) o;
return Objects.equals(this.name, that.name) &&
Objects.equals(this.value, that.value) &&
Objects.equals(this.signature, that.signature);
}
@Override
public int hashCode() {
return Objects.hash(this.name);
}
}