2021-01-03 07:21:15 +00:00
|
|
|
package dev.plex.player;
|
2020-10-27 18:14:34 +00:00
|
|
|
|
2022-04-04 08:36:50 +00:00
|
|
|
import com.google.common.collect.Lists;
|
2020-10-28 03:49:56 +00:00
|
|
|
import dev.morphia.annotations.Entity;
|
|
|
|
import dev.morphia.annotations.Id;
|
|
|
|
import dev.morphia.annotations.IndexOptions;
|
|
|
|
import dev.morphia.annotations.Indexed;
|
2022-04-04 08:36:50 +00:00
|
|
|
import dev.plex.Plex;
|
|
|
|
import dev.plex.punishment.Punishment;
|
2022-01-04 03:04:39 +00:00
|
|
|
import dev.plex.rank.enums.Rank;
|
2022-04-04 08:36:50 +00:00
|
|
|
import dev.plex.storage.StorageType;
|
2022-04-05 20:40:42 +00:00
|
|
|
import java.util.List;
|
|
|
|
import java.util.UUID;
|
|
|
|
import java.util.stream.Collectors;
|
2020-10-27 20:12:38 +00:00
|
|
|
import lombok.AccessLevel;
|
2020-10-27 18:14:34 +00:00
|
|
|
import lombok.Getter;
|
|
|
|
import lombok.Setter;
|
2022-01-27 06:36:00 +00:00
|
|
|
import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer;
|
2020-10-31 08:55:27 +00:00
|
|
|
import org.bukkit.Bukkit;
|
|
|
|
import org.bukkit.OfflinePlayer;
|
2022-01-27 06:36:00 +00:00
|
|
|
import org.bukkit.entity.Player;
|
2022-01-04 03:04:39 +00:00
|
|
|
|
2020-10-27 18:14:34 +00:00
|
|
|
@Getter
|
|
|
|
@Setter
|
2020-10-28 04:42:28 +00:00
|
|
|
@Entity(value = "players", useDiscriminator = false)
|
2020-10-27 18:14:34 +00:00
|
|
|
public class PlexPlayer
|
|
|
|
{
|
2020-10-27 20:12:38 +00:00
|
|
|
@Setter(AccessLevel.NONE)
|
2020-10-27 18:14:34 +00:00
|
|
|
@Id
|
|
|
|
private String id;
|
|
|
|
|
2020-10-27 20:12:38 +00:00
|
|
|
@Setter(AccessLevel.NONE)
|
2020-10-27 18:14:34 +00:00
|
|
|
@Indexed(options = @IndexOptions(unique = true))
|
|
|
|
private String uuid;
|
|
|
|
|
|
|
|
@Indexed
|
|
|
|
private String name;
|
2022-01-27 06:36:00 +00:00
|
|
|
private Player player;
|
2020-10-27 18:14:34 +00:00
|
|
|
|
2022-02-22 07:17:00 +00:00
|
|
|
private String loginMessage;
|
2022-03-19 01:12:05 +00:00
|
|
|
private String prefix;
|
2020-10-27 18:14:34 +00:00
|
|
|
|
2020-11-06 18:19:38 +00:00
|
|
|
private boolean vanished;
|
2022-02-04 21:25:40 +00:00
|
|
|
private boolean commandSpy;
|
2020-11-06 18:19:38 +00:00
|
|
|
|
2022-04-04 08:36:50 +00:00
|
|
|
private boolean frozen;
|
|
|
|
private boolean muted;
|
|
|
|
private boolean lockedUp;
|
|
|
|
|
2020-10-27 21:30:57 +00:00
|
|
|
private long coins;
|
|
|
|
|
2020-10-28 04:11:23 +00:00
|
|
|
private String rank;
|
2020-10-27 18:14:34 +00:00
|
|
|
|
2022-04-04 08:36:50 +00:00
|
|
|
private List<String> ips = Lists.newArrayList();
|
|
|
|
private List<Punishment> punishments = Lists.newArrayList();
|
2020-10-27 18:14:34 +00:00
|
|
|
|
2020-11-06 01:29:38 +00:00
|
|
|
public PlexPlayer()
|
|
|
|
{
|
|
|
|
}
|
2020-10-28 04:11:23 +00:00
|
|
|
|
2020-10-27 18:14:34 +00:00
|
|
|
public PlexPlayer(UUID playerUUID)
|
|
|
|
{
|
|
|
|
this.uuid = playerUUID.toString();
|
|
|
|
|
|
|
|
this.id = uuid.substring(0, 8);
|
|
|
|
|
|
|
|
this.name = "";
|
2022-01-27 06:36:00 +00:00
|
|
|
this.player = Bukkit.getPlayer(name);
|
2020-10-27 18:14:34 +00:00
|
|
|
|
2022-02-22 07:17:00 +00:00
|
|
|
this.loginMessage = "";
|
2022-03-19 01:12:05 +00:00
|
|
|
this.prefix = "";
|
2020-10-27 20:12:38 +00:00
|
|
|
|
2020-11-06 18:19:38 +00:00
|
|
|
this.vanished = false;
|
2022-02-04 21:25:40 +00:00
|
|
|
this.commandSpy = false;
|
2020-11-06 18:19:38 +00:00
|
|
|
|
2020-10-27 21:30:57 +00:00
|
|
|
this.coins = 0;
|
|
|
|
|
2020-10-28 04:11:23 +00:00
|
|
|
this.rank = "";
|
2022-04-04 08:36:50 +00:00
|
|
|
this.loadPunishments();
|
2020-10-28 04:11:23 +00:00
|
|
|
}
|
|
|
|
|
2022-01-30 21:03:47 +00:00
|
|
|
public String displayName()
|
|
|
|
{
|
2022-01-27 06:36:00 +00:00
|
|
|
return PlainTextComponentSerializer.plainText().serialize(player.displayName());
|
|
|
|
}
|
|
|
|
|
2020-10-28 04:11:23 +00:00
|
|
|
public Rank getRankFromString()
|
|
|
|
{
|
2020-10-31 08:55:27 +00:00
|
|
|
OfflinePlayer player = Bukkit.getOfflinePlayer(UUID.fromString(uuid));
|
|
|
|
if (rank.isEmpty())
|
|
|
|
{
|
|
|
|
if (player.isOp())
|
|
|
|
{
|
|
|
|
return Rank.OP;
|
2022-04-05 18:14:53 +00:00
|
|
|
}
|
|
|
|
else
|
2020-11-06 01:29:38 +00:00
|
|
|
{
|
2020-10-31 08:55:27 +00:00
|
|
|
return Rank.NONOP;
|
|
|
|
}
|
2022-04-05 18:14:53 +00:00
|
|
|
}
|
|
|
|
else
|
2020-11-06 01:29:38 +00:00
|
|
|
{
|
2020-10-31 08:55:27 +00:00
|
|
|
return Rank.valueOf(rank.toUpperCase());
|
|
|
|
}
|
2020-10-27 18:14:34 +00:00
|
|
|
}
|
2022-04-04 08:36:50 +00:00
|
|
|
|
|
|
|
public void loadPunishments()
|
|
|
|
{
|
|
|
|
if (Plex.get().getStorageType() != StorageType.MONGODB)
|
|
|
|
{
|
|
|
|
this.setPunishments(Plex.get().getSqlPunishment().getPunishments(UUID.fromString(this.getUuid())).stream().filter(punishment -> punishment.getPunished().equals(UUID.fromString(this.getUuid()))).collect(Collectors.toList()));
|
|
|
|
}
|
|
|
|
}
|
2020-10-27 18:14:34 +00:00
|
|
|
}
|