114 lines
2.9 KiB
Java
114 lines
2.9 KiB
Java
package tc.oc.api.docs.virtual;
|
|
|
|
import java.util.Collections;
|
|
import java.util.Date;
|
|
import java.util.List;
|
|
import java.util.Map;
|
|
import java.util.Set;
|
|
import java.util.UUID;
|
|
import javax.annotation.Nonnull;
|
|
import javax.annotation.Nullable;
|
|
|
|
import java.time.Instant;
|
|
import tc.oc.api.annotations.Serialize;
|
|
import tc.oc.api.docs.PlayerId;
|
|
|
|
public interface UserDoc {
|
|
|
|
interface Partial extends PartialModel {}
|
|
|
|
@Serialize
|
|
interface Nickname extends Partial {
|
|
@Nullable String nickname();
|
|
}
|
|
|
|
@Serialize
|
|
interface Locale extends Partial {
|
|
@Nullable String mc_locale();
|
|
}
|
|
|
|
class Flair {
|
|
public String realm;
|
|
public String text;
|
|
public int priority;
|
|
}
|
|
|
|
@Serialize
|
|
interface Identity extends PlayerId, Nickname {
|
|
@Nonnull UUID uuid();
|
|
@Nonnull List<Flair> minecraft_flair();
|
|
}
|
|
|
|
@Serialize
|
|
interface Trophies extends Partial {
|
|
List<String> trophy_ids();
|
|
}
|
|
|
|
interface License {
|
|
|
|
@Serialize
|
|
interface Kill extends Document {
|
|
@Nonnull String victim_id();
|
|
boolean friendly();
|
|
}
|
|
|
|
@Serialize
|
|
interface Stats extends Partial {
|
|
@Nonnull List<Kill> tnt_license_kills();
|
|
}
|
|
|
|
interface Request extends Stats {
|
|
@Serialize @Nullable Instant requested_tnt_license_at();
|
|
|
|
default boolean requestedTntLicense() {
|
|
return requested_tnt_license_at() != null;
|
|
}
|
|
}
|
|
|
|
interface Grant extends Stats {
|
|
@Serialize @Nullable Instant granted_tnt_license_at();
|
|
|
|
default boolean hasTntLicense() {
|
|
return granted_tnt_license_at() != null;
|
|
}
|
|
}
|
|
|
|
interface Complete extends Request, Grant {}
|
|
}
|
|
|
|
/**
|
|
* Stuff we get from the API on login, and keep around for plugins to use
|
|
*/
|
|
@Serialize
|
|
interface Login extends Identity, Locale, Trophies, License.Complete {
|
|
int raindrops();
|
|
String mc_last_sign_in_ip();
|
|
@Nullable Date trial_expires_at();
|
|
Map<String, Map<String, Boolean>> mc_permissions_by_realm();
|
|
Map<String, Map<String, String>> mc_settings_by_profile();
|
|
Map<String, String> classes();
|
|
Set<PlayerId> friends();
|
|
Map<String, List<Instant>> recent_match_joins_by_family_id(); // Reverse-chronological order
|
|
int enemy_kills();
|
|
}
|
|
|
|
/**
|
|
* Stuff we learn from the client on login, and report to the API
|
|
*/
|
|
@Serialize
|
|
interface ClientDetails extends Partial {
|
|
String mc_client_version();
|
|
String skin_blob(); // Base64 encoded thing returned from Skin#getData()
|
|
}
|
|
|
|
enum ResourcePackStatus {
|
|
// MUST match org.bukit.ResourcePackStatus
|
|
ACCEPTED, DECLINED, LOADED, FAILED
|
|
}
|
|
|
|
@Serialize
|
|
interface ResourcePackResponse extends Partial {
|
|
UserDoc.ResourcePackStatus resource_pack_status();
|
|
}
|
|
}
|