forked from Fascinated/Bat
much stuff
This commit is contained in:
33
src/main/java/cc/fascinated/bat/model/BatGuild.java
Normal file
33
src/main/java/cc/fascinated/bat/model/BatGuild.java
Normal file
@ -0,0 +1,33 @@
|
||||
package cc.fascinated.bat.model;
|
||||
|
||||
import cc.fascinated.bat.service.DiscordService;
|
||||
import lombok.Getter;
|
||||
import lombok.NonNull;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.Setter;
|
||||
import net.dv8tion.jda.api.entities.Guild;
|
||||
import org.springframework.data.annotation.Id;
|
||||
import org.springframework.data.mongodb.core.mapping.Document;
|
||||
|
||||
/**
|
||||
* @author Fascinated (fascinated7)
|
||||
*/
|
||||
@RequiredArgsConstructor
|
||||
@Getter @Setter
|
||||
@Document(collection = "guilds")
|
||||
public class BatGuild {
|
||||
|
||||
/**
|
||||
* The ID of the guild
|
||||
*/
|
||||
@NonNull @Id private final String id;
|
||||
|
||||
/**
|
||||
* Gets the guild as the JDA Guild
|
||||
*
|
||||
* @return the guild
|
||||
*/
|
||||
private Guild getDiscordGuild() {
|
||||
return DiscordService.JDA.getGuildById(id);
|
||||
}
|
||||
}
|
@ -1,19 +0,0 @@
|
||||
package cc.fascinated.bat.model;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.NonNull;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.data.annotation.Id;
|
||||
|
||||
/**
|
||||
* @author Fascinated (fascinated7)
|
||||
*/
|
||||
@RequiredArgsConstructor
|
||||
@Getter
|
||||
public class Guild {
|
||||
|
||||
/**
|
||||
* The ID of the guild
|
||||
*/
|
||||
@NonNull @Id private final String id;
|
||||
}
|
@ -0,0 +1,139 @@
|
||||
package cc.fascinated.bat.model.beatsaber.scoresaber;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
|
||||
@Getter
|
||||
public class ScoreSaberAccountToken {
|
||||
/**
|
||||
* The id for this ScoreSaber account.
|
||||
*/
|
||||
private String id;
|
||||
|
||||
/**
|
||||
* The name for this account.
|
||||
*/
|
||||
private String name;
|
||||
|
||||
/**
|
||||
* The profile picture for this account.
|
||||
*/
|
||||
private String profilePicture;
|
||||
|
||||
/**
|
||||
* The bio for this account.
|
||||
*/
|
||||
private String bio;
|
||||
|
||||
/**
|
||||
* The country for this account.
|
||||
*/
|
||||
private String country;
|
||||
|
||||
/**
|
||||
* The PP for this account.
|
||||
*/
|
||||
private double pp;
|
||||
|
||||
/**
|
||||
* The rank for this account.
|
||||
*/
|
||||
private int rank;
|
||||
|
||||
/**
|
||||
* The country rank for this account.
|
||||
*/
|
||||
private int countryRank;
|
||||
|
||||
/**
|
||||
* The role for this account.
|
||||
*/
|
||||
private String role;
|
||||
|
||||
/**
|
||||
* The badges for this account.
|
||||
*/
|
||||
private Badge[] badges;
|
||||
|
||||
/**
|
||||
* The history of the rank for this account.
|
||||
*/
|
||||
private String histories;
|
||||
|
||||
/**
|
||||
* The permissions for this account.
|
||||
*/
|
||||
private int permissions;
|
||||
|
||||
/**
|
||||
* The banned status for this account.
|
||||
*/
|
||||
private boolean banned;
|
||||
|
||||
/**
|
||||
* The inactive status for this account.
|
||||
*/
|
||||
private boolean inactive;
|
||||
|
||||
/**
|
||||
* The score stats for this account.
|
||||
*/
|
||||
private ScoreStats scoreStats;
|
||||
|
||||
/**
|
||||
* The first time this account was seen.
|
||||
*/
|
||||
private String firstSeen;
|
||||
|
||||
/**
|
||||
* The badge for this account.
|
||||
*/
|
||||
@AllArgsConstructor @Getter
|
||||
public static class Badge {
|
||||
/**
|
||||
* The image for this badge.
|
||||
*/
|
||||
private String image;
|
||||
|
||||
/**
|
||||
* The description for this badge.
|
||||
*/
|
||||
private String description;
|
||||
}
|
||||
|
||||
/**
|
||||
* The score stats for this account.
|
||||
*/
|
||||
@AllArgsConstructor @Getter
|
||||
public static class ScoreStats {
|
||||
/**
|
||||
* The total score for this account.
|
||||
*/
|
||||
private long totalScore;
|
||||
|
||||
/**
|
||||
* The total ranked score for this account.
|
||||
*/
|
||||
private long totalRankedScore;
|
||||
|
||||
/**
|
||||
* The average ranked accuracy for this account.
|
||||
*/
|
||||
private double averageRankedAccuracy;
|
||||
|
||||
/**
|
||||
* The total play count for this account.
|
||||
*/
|
||||
private int totalPlayCount;
|
||||
|
||||
/**
|
||||
* The ranked play count for this account.
|
||||
*/
|
||||
private int rankedPlayCount;
|
||||
|
||||
/**
|
||||
* The replays watched for this account.
|
||||
*/
|
||||
private int replaysWatched;
|
||||
}
|
||||
}
|
@ -0,0 +1,145 @@
|
||||
package cc.fascinated.bat.model.beatsaber.scoresaber;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.ToString;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Getter @ToString
|
||||
public class ScoreSaberLeaderboardToken {
|
||||
/**
|
||||
* The ID of the leaderboard.
|
||||
*/
|
||||
private String id;
|
||||
|
||||
/**
|
||||
* The hash of the song.
|
||||
*/
|
||||
private String songHash;
|
||||
|
||||
/**
|
||||
* The name of the song.
|
||||
*/
|
||||
private String songName;
|
||||
|
||||
/**
|
||||
* The sub name of the song.
|
||||
*/
|
||||
private String songSubName;
|
||||
|
||||
/**
|
||||
* The author of the song.
|
||||
*/
|
||||
private String songAuthorName;
|
||||
|
||||
/**
|
||||
* The mapper of the song.
|
||||
*/
|
||||
private String levelAuthorName;
|
||||
|
||||
/**
|
||||
* The difficulty of the song.
|
||||
*/
|
||||
private Difficulty difficulty;
|
||||
|
||||
/**
|
||||
* The maximum score of the song.
|
||||
*/
|
||||
private int maxScore;
|
||||
|
||||
/**
|
||||
* The date the leaderboard was created.
|
||||
*/
|
||||
private String createdDate;
|
||||
|
||||
/**
|
||||
* The date the song was ranked.
|
||||
*/
|
||||
private String rankedDate;
|
||||
|
||||
/**
|
||||
* The date the song was qualified.
|
||||
*/
|
||||
private String qualifiedDate;
|
||||
|
||||
/**
|
||||
* The date the song's status was changed to loved.
|
||||
*/
|
||||
private String lovedDate;
|
||||
|
||||
/**
|
||||
* Whether this leaderboard is ranked.
|
||||
*/
|
||||
private boolean ranked;
|
||||
|
||||
/**
|
||||
* Whether this leaderboard is qualified to be ranked.
|
||||
*/
|
||||
private boolean qualified;
|
||||
|
||||
/**
|
||||
* Whether this leaderboard is in a loved state.
|
||||
*/
|
||||
private boolean loved;
|
||||
|
||||
/**
|
||||
* The maximum PP for this leaderboard.
|
||||
*/
|
||||
private int maxPP;
|
||||
|
||||
/**
|
||||
* The star rating for this leaderboard.
|
||||
*/
|
||||
private double stars;
|
||||
|
||||
/**
|
||||
* The amount of plays for this leaderboard.
|
||||
*/
|
||||
private int plays;
|
||||
|
||||
/**
|
||||
* The amount of daily plays for this leaderboard.
|
||||
*/
|
||||
private int dailyPlays;
|
||||
|
||||
/**
|
||||
* Whether this leaderboard has positive modifiers.
|
||||
*/
|
||||
private boolean positiveModifiers;
|
||||
|
||||
/**
|
||||
* The cover image for this leaderboard.
|
||||
*/
|
||||
private String coverImage;
|
||||
|
||||
/**
|
||||
* The difficulties for this leaderboard.
|
||||
*/
|
||||
private List<Difficulty> difficulties;
|
||||
|
||||
/**
|
||||
* The difficulty of the leaderboard.
|
||||
*/
|
||||
@Getter
|
||||
public static class Difficulty {
|
||||
/**
|
||||
* The leaderboard ID.
|
||||
*/
|
||||
private int leaderboardId;
|
||||
|
||||
/**
|
||||
* The difficulty of the leaderboard.
|
||||
*/
|
||||
private int difficulty;
|
||||
|
||||
/**
|
||||
* The game mode of the leaderboard.
|
||||
*/
|
||||
private String gameMode;
|
||||
|
||||
/**
|
||||
* The difficulty raw of the leaderboard.
|
||||
*/
|
||||
private String difficultyRaw;
|
||||
}
|
||||
}
|
@ -0,0 +1,22 @@
|
||||
package cc.fascinated.bat.model.beatsaber.scoresaber;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.ToString;
|
||||
|
||||
@Getter @ToString
|
||||
public class ScoreSaberPageMetadataToken {
|
||||
/**
|
||||
* The total amount of scores.
|
||||
*/
|
||||
private int total;
|
||||
|
||||
/**
|
||||
* The current page.
|
||||
*/
|
||||
private int page;
|
||||
|
||||
/**
|
||||
* The amount of scores per page.
|
||||
*/
|
||||
private int itemsPerPage;
|
||||
}
|
@ -0,0 +1,17 @@
|
||||
package cc.fascinated.bat.model.beatsaber.scoresaber;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.ToString;
|
||||
|
||||
@Getter @ToString
|
||||
public class ScoreSaberPlayerScoreToken {
|
||||
/**
|
||||
* The score that was set.
|
||||
*/
|
||||
private ScoreSaberScoreToken score;
|
||||
|
||||
/**
|
||||
* The leaderboard that the score was set on.
|
||||
*/
|
||||
private ScoreSaberLeaderboardToken leaderboard;
|
||||
}
|
@ -0,0 +1,135 @@
|
||||
package cc.fascinated.bat.model.beatsaber.scoresaber;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.ToString;
|
||||
|
||||
@Getter @ToString
|
||||
public class ScoreSaberScoreToken {
|
||||
/**
|
||||
* The id for this score.
|
||||
*/
|
||||
private String id;
|
||||
|
||||
/**
|
||||
* The player info for this score.
|
||||
*/
|
||||
private LeaderboardPlayerInfo leaderboardPlayerInfo;
|
||||
|
||||
/**
|
||||
* The rank of this score.
|
||||
*/
|
||||
private int rank;
|
||||
|
||||
/**
|
||||
* The base score for this score.
|
||||
*/
|
||||
private int baseScore;
|
||||
|
||||
/**
|
||||
* The modified score for this score.
|
||||
*/
|
||||
private int modifiedScore;
|
||||
|
||||
/**
|
||||
* The PP for this score.
|
||||
*/
|
||||
private double pp;
|
||||
|
||||
/**
|
||||
* The weight for this score.
|
||||
*/
|
||||
private int weight;
|
||||
|
||||
/**
|
||||
* The modifiers for this score.
|
||||
*/
|
||||
private String modifiers;
|
||||
|
||||
/**
|
||||
* The multiplier for this score.
|
||||
*/
|
||||
private int multiplier;
|
||||
|
||||
/**
|
||||
* How many bad cuts this score has.
|
||||
*/
|
||||
private int badCuts;
|
||||
|
||||
/**
|
||||
* How many misses this score has.
|
||||
*/
|
||||
private int missedNotes;
|
||||
|
||||
/**
|
||||
* The maximum combo for this score.
|
||||
*/
|
||||
private int maxCombo;
|
||||
|
||||
/**
|
||||
* Whether this score was a full combo.
|
||||
*/
|
||||
private boolean fullCombo;
|
||||
|
||||
/**
|
||||
* The HMD that was used to set this score.
|
||||
*/
|
||||
private int hmd;
|
||||
|
||||
/**
|
||||
* The time set for this score.
|
||||
*/
|
||||
private String timeSet;
|
||||
|
||||
/**
|
||||
* Whether this score has a replay.
|
||||
*/
|
||||
private boolean hasReplay;
|
||||
|
||||
/**
|
||||
* The full HMD name that was used to set this score.
|
||||
*/
|
||||
private String deviceHmd;
|
||||
|
||||
/**
|
||||
* The controller that was used on the left hand.
|
||||
*/
|
||||
private String deviceControllerLeft;
|
||||
|
||||
/**
|
||||
* The controller that was used on the right hand.
|
||||
*/
|
||||
private String deviceControllerRight;
|
||||
|
||||
@Getter
|
||||
public class LeaderboardPlayerInfo {
|
||||
/**
|
||||
* The ID of the player.
|
||||
*/
|
||||
private String id;
|
||||
|
||||
/**
|
||||
* The name of the player.
|
||||
*/
|
||||
private String name;
|
||||
|
||||
/**
|
||||
* The profile picture of the player.
|
||||
*/
|
||||
private String profilePicture;
|
||||
|
||||
/**
|
||||
* The country of the player.
|
||||
*/
|
||||
private String country;
|
||||
|
||||
/**
|
||||
* The permissions for the player.
|
||||
*/
|
||||
private int permissions;
|
||||
|
||||
/**
|
||||
* The role for the player.
|
||||
*/
|
||||
private String role;
|
||||
}
|
||||
}
|
@ -0,0 +1,19 @@
|
||||
package cc.fascinated.bat.model.beatsaber.scoresaber;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import lombok.ToString;
|
||||
|
||||
@Getter @Setter
|
||||
@ToString
|
||||
public class ScoreSaberScoresPageToken {
|
||||
/**
|
||||
* The scores on this page.
|
||||
*/
|
||||
private ScoreSaberPlayerScoreToken[] playerScores;
|
||||
|
||||
/**
|
||||
* The metadata for this page.
|
||||
*/
|
||||
private ScoreSaberPageMetadataToken metadata;
|
||||
}
|
66
src/main/java/cc/fascinated/bat/model/user/BatUser.java
Normal file
66
src/main/java/cc/fascinated/bat/model/user/BatUser.java
Normal file
@ -0,0 +1,66 @@
|
||||
package cc.fascinated.bat.model.user;
|
||||
|
||||
import cc.fascinated.bat.common.Profile;
|
||||
import cc.fascinated.bat.service.DiscordService;
|
||||
import lombok.Getter;
|
||||
import lombok.NonNull;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.Setter;
|
||||
import net.dv8tion.jda.api.entities.User;
|
||||
import org.springframework.data.annotation.Id;
|
||||
import org.springframework.data.mongodb.core.mapping.Document;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author Fascinated (fascinated7)
|
||||
*/
|
||||
@RequiredArgsConstructor
|
||||
@Getter @Setter
|
||||
@Document(collection = "users")
|
||||
public class BatUser {
|
||||
|
||||
/**
|
||||
* The ID of the user
|
||||
*/
|
||||
@NonNull @Id private final String id;
|
||||
|
||||
/**
|
||||
* The profiles for this user
|
||||
*/
|
||||
private Map<String, Profile> profiles;
|
||||
|
||||
/**
|
||||
* Gets the profile for the user
|
||||
*
|
||||
* @param clazz The class of the profile
|
||||
* @param <T> The type of the profile
|
||||
* @return The profile
|
||||
*/
|
||||
public <T extends Profile> T getProfile(Class<?> clazz) {
|
||||
if (profiles == null) {
|
||||
profiles = new HashMap<>();
|
||||
}
|
||||
|
||||
Profile profile = profiles.values().stream().filter(p -> p.getClass().equals(clazz)).findFirst().orElse(null);
|
||||
if (profile == null) {
|
||||
try {
|
||||
profile = (Profile) clazz.newInstance();
|
||||
profiles.put(profile.getProfileKey(), profile);
|
||||
} catch (InstantiationException | IllegalAccessException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
return (T) profile;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the guild as the JDA Guild
|
||||
*
|
||||
* @return the guild
|
||||
*/
|
||||
private User getDiscordUser() {
|
||||
return DiscordService.JDA.getUserById(id);
|
||||
}
|
||||
}
|
@ -0,0 +1,20 @@
|
||||
package cc.fascinated.bat.model.user.profiles;
|
||||
|
||||
import cc.fascinated.bat.common.Profile;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
/**
|
||||
* @author Fascinated (fascinated7)
|
||||
*/
|
||||
@Setter @Getter
|
||||
public class ScoreSaberProfile extends Profile {
|
||||
/**
|
||||
* The Account ID of the ScoreSaber profile
|
||||
*/
|
||||
private String id;
|
||||
|
||||
public ScoreSaberProfile() {
|
||||
super("scoresaber");
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user