2021-06-02 17:55:55 +00:00
package com.alttd.chat.objects ;
2021-05-14 00:33:23 +00:00
import com.alttd.chat.database.Queries ;
2021-05-15 01:02:52 +00:00
import com.alttd.chat.util.Utility ;
2021-05-14 00:33:23 +00:00
2021-05-15 22:28:47 +00:00
import java.util.LinkedList ;
2021-05-14 00:33:23 +00:00
import java.util.UUID ;
public class ChatUser {
2021-06-07 08:51:00 +00:00
private final UUID uuid ; // player uuid
private final int partyId ; // the party they are in
private boolean toggledPartyChat ; // should chat messages instantly go to party chat when added, idk if this should be saved
private String displayName ; // the nickname, doesn't need to be saved with the chatuser object, could be saved but we can get it from the nicknamesview
private String prefix ; // doesn't need saving, we get this from luckperms
private String staffPrefix ; // doesn't need saving, we get this from luckperms
private String prefixAll ; // doesn't need saving, we get this from luckperms
private boolean toggleGc ; // should be saved, this toggles if the player can see and use global chat
2021-06-23 19:44:04 +00:00
private String replyTarget ; // reply target for use in /msg i don't mind setting this to null on login, feedback?
2021-06-07 08:51:00 +00:00
private long gcCooldown ; // the time when they last used gc, is used for the cooldown, i wouldn't save this, but setting this to the login time means they can't use gc for 30 seconds after logging in
private LinkedList < Mail > mails ; // mails aren't finalized yet, so for now a table sender, reciever, sendtime, readtime(if emtpy mail isn't read yet?, could also do a byte to control this), the actual message
private LinkedList < UUID > ignoredPlayers ; // a list of UUID, a new table non unique, where one is is the player select * from ignores where ignoredby = thisplayer? where the result is the uuid of the player ignored by this player?
private LinkedList < UUID > ignoredBy ; // a list of UUID, same table as above but select * from ignores where ignored = thisplayer? result should be the other user that ignored this player?
2021-05-15 22:28:47 +00:00
2021-06-07 13:41:05 +00:00
public ChatUser ( UUID uuid , int partyId , boolean toggledChat , boolean toggleGc ) {
2021-05-14 00:33:23 +00:00
this . uuid = uuid ;
this . partyId = partyId ;
2021-06-07 13:41:05 +00:00
this . toggledPartyChat = toggledChat ;
2021-05-14 00:33:23 +00:00
2021-06-13 11:53:49 +00:00
//displayName = Queries.getNickname(uuid); // todo fix sql
//if (displayName == null) {
2021-05-15 01:02:52 +00:00
displayName = Utility . getDisplayName ( uuid ) ;
2021-06-13 11:53:49 +00:00
//}
2021-05-14 00:33:23 +00:00
2021-05-15 01:02:52 +00:00
prefix = Utility . getPrefix ( uuid , true ) ;
staffPrefix = Utility . getStaffPrefix ( uuid ) ;
2021-05-22 18:34:32 +00:00
prefixAll = Utility . getPrefix ( uuid , false ) ;
2021-06-07 13:41:05 +00:00
this . toggleGc = toggleGc ;
2021-05-15 22:28:47 +00:00
replyTarget = null ;
2021-06-07 08:38:38 +00:00
gcCooldown = System . currentTimeMillis ( ) ; // players can't use gc for 30 seconds after logging in if we use this?
2021-05-15 22:28:47 +00:00
mails = new LinkedList < > ( ) ; // todo load mails
2021-06-23 18:05:47 +00:00
ignoredPlayers = Queries . getIgnoredUsers ( uuid ) ;
2021-06-07 08:51:00 +00:00
ignoredBy = new LinkedList < > ( ) ; // todo load ignoredPlayers
2021-05-14 00:33:23 +00:00
}
public UUID getUuid ( ) {
return uuid ;
}
public int getPartyId ( ) {
return partyId ;
}
2021-05-16 00:02:03 +00:00
public boolean toggledPartyChat ( ) {
return toggledPartyChat ;
2021-05-14 00:33:23 +00:00
}
2021-05-16 00:02:03 +00:00
public void togglePartyChat ( ) {
toggledPartyChat = ! toggledPartyChat ;
2021-05-22 18:34:32 +00:00
Queries . setPartyChatState ( toggledPartyChat , uuid ) ; //TODO: Async pls - no CompleteableFuture<>!
2021-05-14 00:33:23 +00:00
}
public String getDisplayName ( ) {
return displayName ;
}
public void setDisplayName ( String displayName ) {
this . displayName = displayName ;
}
public String getPrefix ( ) {
return prefix ;
}
public void setPrefix ( String prefix ) {
this . prefix = prefix ;
}
public String getStaffPrefix ( ) {
return staffPrefix ;
}
public void setStaffPrefix ( String staffPrefix ) {
this . staffPrefix = staffPrefix ;
}
public String getPrefixAll ( ) {
return prefixAll ;
}
public void setPrefixAll ( String prefixAll ) {
this . prefixAll = prefixAll ;
}
public void toggleGc ( ) {
toggleGc = ! toggleGc ;
}
public boolean isGcOn ( ) {
return toggleGc ;
}
2021-05-15 19:16:01 +00:00
2021-06-23 19:44:04 +00:00
public String getReplyTarget ( ) {
2021-05-15 22:28:47 +00:00
return replyTarget ;
}
2021-06-23 19:44:04 +00:00
public void setReplyTarget ( String replyTarget ) {
2021-05-15 22:28:47 +00:00
this . replyTarget = replyTarget ;
2021-05-15 19:16:01 +00:00
}
2021-05-15 22:28:47 +00:00
public LinkedList < Mail > getMails ( ) {
return mails ;
2021-05-15 19:16:01 +00:00
}
2021-05-22 18:34:32 +00:00
public void addMail ( Mail mail ) {
mails . add ( mail ) ;
}
2021-06-06 19:32:13 +00:00
2021-06-07 08:38:38 +00:00
public LinkedList < UUID > getIgnoredPlayers ( ) {
return ignoredPlayers ;
}
public void addIgnoredPlayers ( UUID uuid ) {
ignoredPlayers . add ( uuid ) ;
}
2021-06-07 08:51:00 +00:00
public LinkedList < UUID > getIgnoredBy ( ) {
return ignoredBy ;
}
public void addIgnoredBy ( UUID uuid ) {
ignoredBy . add ( uuid ) ;
}
2021-06-06 19:32:13 +00:00
public long getGcCooldown ( ) {
return gcCooldown ;
}
2021-06-07 08:38:38 +00:00
public void setGcCooldown ( long time ) {
this . gcCooldown = time ;
}
2021-05-14 00:33:23 +00:00
}