diff --git a/pom.xml b/pom.xml index 9687c927..56ddf826 100644 --- a/pom.xml +++ b/pom.xml @@ -14,6 +14,8 @@ ${project.name} ${maven.build.timestamp} MM/dd/yyyy HH:mm + + master-4ec00d977c-1 TotalFreedomMod @@ -242,7 +244,7 @@ com.github.AtlasMediaGroup TFGuilds - master-SNAPSHOT + ${tfguilds.version} provided @@ -270,6 +272,18 @@ org.eclipse.sisu.inject 0.3.4 + + org.apache.httpcomponents.client5 + httpclient5 + 5.0.1 + compile + + + org.json + json + 20210307 + compile + @@ -446,6 +460,8 @@ com.github.speedxx:Mojangson org.bstats:bstats-bukkit org.jetbrains:annotations + org.apache.httpcomponents.client5:httpclient5 + org.apache.httpcomponents.core5:httpcore5 diff --git a/src/main/java/me/totalfreedom/totalfreedommod/ChatManager.java b/src/main/java/me/totalfreedom/totalfreedommod/ChatManager.java index eebefc44..48cc489d 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/ChatManager.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/ChatManager.java @@ -126,7 +126,7 @@ public class ChatManager extends FreedomService boolean mentionEveryone = ChatColor.stripColor(message).toLowerCase().contains("@everyone") && plugin.al.isAdmin(player); for (Player p : server.getOnlinePlayers()) { - if (ChatColor.stripColor(message).toLowerCase().contains("@" + p.getName().toLowerCase()) || mentionEveryone) + if ((ChatColor.stripColor(message).toLowerCase().contains("@" + p.getName().toLowerCase()) || mentionEveryone) && !event.isCancelled()) { p.playSound(p.getLocation(), Sound.BLOCK_NOTE_BLOCK_PLING, SoundCategory.MASTER, 1337F, 0.9F); } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/Muter.java b/src/main/java/me/totalfreedom/totalfreedommod/Muter.java index c6b336ae..dd2ec963 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/Muter.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/Muter.java @@ -2,6 +2,8 @@ package me.totalfreedom.totalfreedommod; import java.util.ArrayList; import java.util.List; +import java.util.UUID; + import me.totalfreedom.totalfreedommod.config.ConfigEntry; import me.totalfreedom.totalfreedommod.player.FPlayer; import me.totalfreedom.totalfreedommod.util.FLog; @@ -18,7 +20,7 @@ import org.bukkit.event.player.PlayerJoinEvent; public class Muter extends FreedomService { - public final List MUTED_PLAYERS = new ArrayList<>(); + public final List MUTED_PLAYERS = new ArrayList<>(); @Override public void onStart() @@ -45,7 +47,7 @@ public class Muter extends FreedomService if (plugin.al.isAdminSync(player)) { fPlayer.setMuted(false); - MUTED_PLAYERS.remove(player.getName()); + MUTED_PLAYERS.remove(player.getUniqueId()); return; } @@ -105,7 +107,7 @@ public class Muter extends FreedomService Player player = event.getPlayer(); FPlayer playerdata = plugin.pl.getPlayer(player); - if (MUTED_PLAYERS.contains(player.getName())) + if (MUTED_PLAYERS.contains(player.getUniqueId())) { playerdata.setMuted(true); } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/admin/ActivityLog.java b/src/main/java/me/totalfreedom/totalfreedommod/admin/ActivityLog.java index 8c29fdac..0989a674 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/admin/ActivityLog.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/admin/ActivityLog.java @@ -2,6 +2,8 @@ package me.totalfreedom.totalfreedommod.admin; import com.google.common.collect.Maps; import java.util.Map; +import java.util.UUID; + import me.totalfreedom.totalfreedommod.FreedomService; import me.totalfreedom.totalfreedommod.config.YamlConfig; import me.totalfreedom.totalfreedommod.util.FLog; @@ -14,13 +16,14 @@ import org.bukkit.event.EventPriority; import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerQuitEvent; +//TODO: convert to uuids public class ActivityLog extends FreedomService { public static final String FILENAME = "activitylog.yml"; - private final Map allActivityLogs = Maps.newHashMap(); - private final Map nameTable = Maps.newHashMap(); + private final Map allActivityLogs = Maps.newHashMap(); + private final Map activityLogs = Maps.newHashMap(); private final Map ipTable = Maps.newHashMap(); private final YamlConfig config; @@ -52,7 +55,7 @@ public class ActivityLog extends FreedomService config.load(); allActivityLogs.clear(); - nameTable.clear(); + activityLogs.clear(); ipTable.clear(); for (String key : config.getKeys(false)) { @@ -72,7 +75,7 @@ public class ActivityLog extends FreedomService continue; } - allActivityLogs.put(key, activityLogEntry); + allActivityLogs.put(UUID.fromString(key), activityLogEntry); } updateTables(); @@ -102,12 +105,12 @@ public class ActivityLog extends FreedomService return getActivityLog((Player)sender); } - return getEntryByName(sender.getName()); + return getEntryByUUID(FUtil.getUUIDFromName(sender.getName())); } public ActivityLogEntry getActivityLog(Player player) { - ActivityLogEntry activityLog = getEntryByName(player.getName()); + ActivityLogEntry activityLog = getEntryByUUID(player.getUniqueId()); if (activityLog == null) { String ip = FUtil.getIp(player); @@ -115,14 +118,13 @@ public class ActivityLog extends FreedomService if (activityLog != null) { // Set the new username - activityLog.setName(player.getName()); save(); updateTables(); } else { activityLog = new ActivityLogEntry(player); - allActivityLogs.put(activityLog.getConfigKey(), activityLog); + allActivityLogs.put(activityLog.getUUID(), activityLog); updateTables(); activityLog.saveTo(config.createSection(activityLog.getConfigKey())); @@ -139,9 +141,9 @@ public class ActivityLog extends FreedomService return activityLog; } - public ActivityLogEntry getEntryByName(String name) + public ActivityLogEntry getEntryByUUID(UUID uuid) { - return nameTable.get(name.toLowerCase()); + return activityLogs.get(uuid); } public ActivityLogEntry getEntryByIp(String ip) @@ -151,12 +153,12 @@ public class ActivityLog extends FreedomService public void updateTables() { - nameTable.clear(); + activityLogs.clear(); ipTable.clear(); for (ActivityLogEntry activityLog : allActivityLogs.values()) { - nameTable.put(activityLog.getName().toLowerCase(), activityLog); + activityLogs.put(activityLog.getUUID(), activityLog); for (String ip : activityLog.getIps()) { @@ -190,14 +192,14 @@ public class ActivityLog extends FreedomService } } - public Map getAllActivityLogs() + public Map getAllActivityLogs() { return allActivityLogs; } - public Map getNameTable() + public Map getActivityLogs() { - return nameTable; + return activityLogs; } public Map getIpTable() diff --git a/src/main/java/me/totalfreedom/totalfreedommod/admin/ActivityLogEntry.java b/src/main/java/me/totalfreedom/totalfreedommod/admin/ActivityLogEntry.java index eb056fcb..218931ac 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/admin/ActivityLogEntry.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/admin/ActivityLogEntry.java @@ -4,6 +4,8 @@ import com.google.common.collect.Lists; import java.time.Instant; import java.util.Date; import java.util.List; +import java.util.UUID; + import me.totalfreedom.totalfreedommod.config.IConfig; import me.totalfreedom.totalfreedommod.util.FUtil; import org.apache.commons.lang.Validate; @@ -18,17 +20,20 @@ public class ActivityLogEntry implements IConfig private final List timestamps = Lists.newArrayList(); private final List durations = Lists.newArrayList(); private String configKey; - private String name; public ActivityLogEntry(Player player) { - this.configKey = player.getName().toLowerCase(); - this.name = player.getName(); + this.configKey = player.getUniqueId().toString(); } - public ActivityLogEntry(String configKey) + public ActivityLogEntry(UUID uuid) { - this.configKey = configKey; + this.configKey = uuid.toString(); + } + + public ActivityLogEntry(String uuid) + { + this.configKey = uuid; } public static String getFILENAME() @@ -39,13 +44,11 @@ public class ActivityLogEntry implements IConfig public void loadFrom(Player player) { configKey = player.getName().toLowerCase(); - name = player.getName(); } @Override public void loadFrom(ConfigurationSection cs) { - name = cs.getString("username", configKey); ips.clear(); ips.addAll(cs.getStringList("ips")); timestamps.clear(); @@ -57,8 +60,8 @@ public class ActivityLogEntry implements IConfig @Override public void saveTo(ConfigurationSection cs) { - Validate.isTrue(isValid(), "Could not save activity entry: " + name + ". Entry not valid!"); - cs.set("username", name); + Validate.isTrue(isValid(), "Could not save activity entry: " + getUUID() + ". Entry not valid!"); + cs.set("uuid", getUUID().toString()); cs.set("ips", Lists.newArrayList(ips)); cs.set("timestamps", Lists.newArrayList(timestamps)); cs.set("durations", Lists.newArrayList(durations)); @@ -73,11 +76,11 @@ public class ActivityLogEntry implements IConfig public void addLogout() { // Fix of Array index out of bonds issue: FS-131 - String lastLoginString; + String lastLoginString = ""; if(timestamps.size() > 1) { lastLoginString = timestamps.get(timestamps.size() - 1); - }else + } else if (timestamps.size() == 1) { lastLoginString = timestamps.get(0); } @@ -136,7 +139,7 @@ public class ActivityLogEntry implements IConfig public boolean isValid() { return configKey != null - && name != null; + && getUUID() != null; } public String getConfigKey() @@ -149,16 +152,6 @@ public class ActivityLogEntry implements IConfig this.configKey = configKey; } - public String getName() - { - return name; - } - - public void setName(String name) - { - this.name = name; - } - public List getIps() { return ips; @@ -173,4 +166,12 @@ public class ActivityLogEntry implements IConfig { return durations; } + + public UUID getUUID() { + return UUID.fromString(configKey); + } + + public String getName() { + return FUtil.getNameFromUUID(getUUID()); + } } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/admin/Admin.java b/src/main/java/me/totalfreedom/totalfreedommod/admin/Admin.java index 17920853..7d49e470 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/admin/Admin.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/admin/Admin.java @@ -2,11 +2,8 @@ package me.totalfreedom.totalfreedommod.admin; import java.sql.ResultSet; import java.sql.SQLException; -import java.util.ArrayList; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; + import me.totalfreedom.totalfreedommod.LogViewer.LogsRegistrationMode; import me.totalfreedom.totalfreedommod.TotalFreedomMod; import me.totalfreedom.totalfreedommod.rank.Rank; @@ -21,7 +18,7 @@ public class Admin private final List ips = new ArrayList<>(); - private String name; + private UUID uuid; private boolean active = true; private Rank rank = Rank.ADMIN; private Date lastLogin = new Date(); @@ -32,7 +29,7 @@ public class Admin public Admin(Player player) { - this.name = player.getName(); + this.uuid = player.getUniqueId(); this.ips.add(FUtil.getIp(player)); } @@ -40,7 +37,7 @@ public class Admin { try { - this.name = resultSet.getString("username"); + this.uuid = UUID.fromString(resultSet.getString("uuid")); this.active = resultSet.getBoolean("active"); this.rank = Rank.findRank(resultSet.getString("rank")); this.ips.clear(); @@ -62,7 +59,7 @@ public class Admin { final StringBuilder output = new StringBuilder(); - output.append("Admin: ").append(name).append("\n") + output.append("Admin: ").append(uuid.toString()).append("\n") .append("- IPs: ").append(StringUtils.join(ips, ", ")).append("\n") .append("- Last Login: ").append(FUtil.dateToString(lastLogin)).append("\n") .append("- Rank: ").append(rank.getName()).append("\n") @@ -78,7 +75,7 @@ public class Admin { Map map = new HashMap() {{ - put("username", name); + put("uuid", uuid.toString()); put("active", active); put("rank", rank.toString()); put("ips", FUtil.listToString(ips)); @@ -120,20 +117,20 @@ public class Admin public boolean isValid() { - return name != null + return uuid != null && rank != null && !ips.isEmpty() && lastLogin != null; } - public String getName() + public UUID getUniqueId() { - return name; + return uuid; } - public void setName(String name) + public void setUniqueId(UUID uuid) { - this.name = name; + this.uuid = uuid; } public boolean isActive() @@ -168,6 +165,7 @@ public class Admin } } + public Rank getRank() { return rank; @@ -232,4 +230,9 @@ public class Admin { this.pteroID = pteroID; } + + public String getName() + { + return FUtil.getNameFromUUID(uuid); + } } \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/totalfreedommod/admin/AdminList.java b/src/main/java/me/totalfreedom/totalfreedommod/admin/AdminList.java index 8cbb49b8..58fdfcb5 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/admin/AdminList.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/admin/AdminList.java @@ -4,11 +4,7 @@ import com.google.common.collect.Maps; import com.google.common.collect.Sets; import java.sql.ResultSet; import java.sql.SQLException; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.Map; -import java.util.Set; +import java.util.*; import java.util.concurrent.TimeUnit; import me.totalfreedom.totalfreedommod.FreedomService; import me.totalfreedom.totalfreedommod.config.ConfigEntry; @@ -26,7 +22,7 @@ public class AdminList extends FreedomService private final Set allAdmins = Sets.newHashSet(); // Includes disabled admins // Only active admins below private final Set activeAdmins = Sets.newHashSet(); - private final Map nameTable = Maps.newHashMap(); + private final Map adminTable = Maps.newHashMap(); private final Map ipTable = Maps.newHashMap(); public static List getVanished() @@ -66,7 +62,7 @@ public class AdminList extends FreedomService } updateTables(); - FLog.info("Loaded " + allAdmins.size() + " admins (" + nameTable.size() + " active, " + ipTable.size() + " IPs)"); + FLog.info("Loaded " + allAdmins.size() + " admins (" + adminTable.size() + " active, " + ipTable.size() + " IPs)"); } public void messageAllAdmins(String message) @@ -97,14 +93,16 @@ public class AdminList extends FreedomService return isAdmin(sender); } + @Deprecated public List getActiveAdminNames() { - List names = new ArrayList(); + /*List names = new ArrayList(); for (Admin admin : activeAdmins) { names.add(admin.getName()); } - return names; + return names;*/ + throw new UnsupportedOperationException("Admin no longer stores names in the object, may be changed in a future update"); } public boolean isAdmin(CommandSender sender) @@ -142,21 +140,21 @@ public class AdminList extends FreedomService return admin.getRank().ordinal() >= Rank.SENIOR_ADMIN.ordinal(); } - public Admin getAdmin(CommandSender sender) + public Admin getAdmin(CommandSender sender) //TODO: Fix { if (sender instanceof Player) { return getAdmin((Player)sender); } - return getEntryByName(sender.getName()); + return getEntryByUUID(FUtil.getUUIDFromName(sender.getName())); } public Admin getAdmin(Player player) { // Find admin String ip = FUtil.getIp(player); - Admin admin = getEntryByName(player.getName()); + Admin admin = getEntryByUUID(player.getUniqueId()); // Admin by name if (admin != null) @@ -181,18 +179,16 @@ public class AdminList extends FreedomService if (admin != null) { // Set the new username - String oldName = admin.getName(); - admin.setName(player.getName()); - plugin.sql.updateAdminName(oldName, admin.getName()); + //plugin.sql.updateAdminName(oldName, admin.getName()); updateTables(); } return null; } - public Admin getEntryByName(String name) + public Admin getEntryByUUID(UUID uuid) { - return nameTable.get(name.toLowerCase()); + return adminTable.get(uuid); } public Admin getEntryByIp(String ip) @@ -200,6 +196,7 @@ public class AdminList extends FreedomService return ipTable.get(ip); } + @Deprecated // TODO: no ips maybe ? idk soontm public Admin getEntryByIpFuzzy(String needleIp) { final Admin directAdmin = getEntryByIp(needleIp); @@ -228,13 +225,12 @@ public class AdminList extends FreedomService } admin.setLastLogin(new Date()); - admin.setName(player.getName()); save(admin); } public boolean isAdminImpostor(Player player) { - return getEntryByName(player.getName()) != null && !isAdmin(player) && !isVerifiedAdmin(player); + return getEntryByUUID(player.getUniqueId()) != null && !isAdmin(player) && !isVerifiedAdmin(player); } public boolean isVerifiedAdmin(Player player) @@ -297,7 +293,7 @@ public class AdminList extends FreedomService public void updateTables() { activeAdmins.clear(); - nameTable.clear(); + adminTable.clear(); ipTable.clear(); for (Admin admin : allAdmins) @@ -308,7 +304,7 @@ public class AdminList extends FreedomService } activeAdmins.add(admin); - nameTable.put(admin.getName().toLowerCase(), admin); + adminTable.put(admin.getUniqueId(), admin); for (String ip : admin.getIps()) { @@ -318,9 +314,9 @@ public class AdminList extends FreedomService } } - public Set getAdminNames() + public Set getAdminUUIDs() { - return nameTable.keySet(); + return adminTable.keySet(); } public Set getAdminIps() @@ -332,7 +328,7 @@ public class AdminList extends FreedomService { try { - ResultSet currentSave = plugin.sql.getAdminByName(admin.getName()); + ResultSet currentSave = plugin.sql.getAdminByUUID(admin.getUniqueId()); for (Map.Entry entry : admin.toSQLStorable().entrySet()) { Object storedValue = plugin.sql.getValue(currentSave, entry.getKey(), entry.getValue()); @@ -392,11 +388,6 @@ public class AdminList extends FreedomService return activeAdmins; } - public Map getNameTable() - { - return nameTable; - } - public Map getIpTable() { return ipTable; diff --git a/src/main/java/me/totalfreedom/totalfreedommod/banning/Ban.java b/src/main/java/me/totalfreedom/totalfreedommod/banning/Ban.java index 42871f45..1c3f9c9c 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/banning/Ban.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/banning/Ban.java @@ -19,6 +19,8 @@ import org.bukkit.entity.Player; public class Ban { + //TODO: fuck your usernames and getting by ips, bans will be in uuid maybe soon tm idk + public static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd 'at' HH:mm:ss z"); private final List ips = Lists.newArrayList(); private String username = null; diff --git a/src/main/java/me/totalfreedom/totalfreedommod/bridge/BukkitTelnetBridge.java b/src/main/java/me/totalfreedom/totalfreedommod/bridge/BukkitTelnetBridge.java index 479a30e1..f85aed20 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/bridge/BukkitTelnetBridge.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/bridge/BukkitTelnetBridge.java @@ -12,6 +12,7 @@ import me.totalfreedom.totalfreedommod.FreedomService; import me.totalfreedom.totalfreedommod.admin.Admin; import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.util.FLog; +import me.totalfreedom.totalfreedommod.util.FUtil; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; @@ -126,7 +127,7 @@ public class BukkitTelnetBridge extends FreedomService { for (ClientSession session : telnet.appender.getSessions()) { - Admin admin = plugin.al.getEntryByName(session.getUserName().toLowerCase()); + Admin admin = plugin.al.getEntryByUUID(FUtil.getUUIDFromName(session.getUserName())); if (admin != null && !admins.contains(admin)) { admins.add(admin); diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_ban.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_ban.java index c6b38381..79c3da1f 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_ban.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_ban.java @@ -65,7 +65,7 @@ public class Command_ban extends FreedomCommand final Player player = getPlayer(args[0]); if (player == null) { - final PlayerData entry = plugin.pl.getData(args[0]); + final PlayerData entry = plugin.pl.getData(FUtil.getUUIDFromName(args[0])); if (entry == null) { diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_doom.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_doom.java index d6711948..33704b6c 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_doom.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_doom.java @@ -56,7 +56,7 @@ public class Command_doom extends FreedomCommand plugin.ptero.updateAccountStatus(admin); if (plugin.dc.enabled && ConfigEntry.DISCORD_ROLE_SYNC.getBoolean()) { - Discord.syncRoles(admin, plugin.pl.getData(admin.getName()).getDiscordID()); + Discord.syncRoles(admin, plugin.pl.getData(admin.getUniqueId()).getDiscordID()); } } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_linkdiscord.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_linkdiscord.java index 40df6d93..c6f57ba8 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_linkdiscord.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_linkdiscord.java @@ -3,6 +3,7 @@ package me.totalfreedom.totalfreedommod.command; import me.totalfreedom.totalfreedommod.discord.Discord; import me.totalfreedom.totalfreedommod.player.PlayerData; import me.totalfreedom.totalfreedommod.rank.Rank; +import me.totalfreedom.totalfreedommod.util.FUtil; import org.bukkit.ChatColor; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; @@ -24,7 +25,7 @@ public class Command_linkdiscord extends FreedomCommand if (args.length > 1 && plugin.al.isAdmin(playerSender)) { - PlayerData playerData = plugin.pl.getData(args[0]); + PlayerData playerData = plugin.pl.getData(FUtil.getUUIDFromName(args[0])); if (playerData == null) { msg(PLAYER_NOT_FOUND); diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_manageshop.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_manageshop.java index 1c0a7a81..b451d128 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_manageshop.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_manageshop.java @@ -42,7 +42,7 @@ public class Command_manageshop extends FreedomCommand int amount = Math.max(0, Math.min(1000000, Integer.parseInt(args[2]))); if (!args[3].equals("all")) { - PlayerData playerData = plugin.pl.getData(args[3]); + PlayerData playerData = plugin.pl.getData(FUtil.getUUIDFromName(args[3])); if (playerData == null) { msg(PLAYER_NOT_FOUND); @@ -83,7 +83,7 @@ public class Command_manageshop extends FreedomCommand int amount = Math.max(0, Math.min(1000000, Integer.parseInt(args[2]))); if (!args[3].equals("all")) { - PlayerData playerData = plugin.pl.getData(args[3]); + PlayerData playerData = plugin.pl.getData(FUtil.getUUIDFromName(args[3])); if (playerData == null) { msg(PLAYER_NOT_FOUND); @@ -130,7 +130,7 @@ public class Command_manageshop extends FreedomCommand try { int amount = Math.max(0, Math.min(1000000, Integer.parseInt(args[2]))); - PlayerData playerData = plugin.pl.getData(args[3]); + PlayerData playerData = plugin.pl.getData(FUtil.getUUIDFromName(args[3])); if (playerData == null) { msg(PLAYER_NOT_FOUND); @@ -180,7 +180,7 @@ public class Command_manageshop extends FreedomCommand return true; } - PlayerData playerData = plugin.pl.getData(args[3]); + PlayerData playerData = plugin.pl.getData(FUtil.getUUIDFromName(args[3])); if (playerData == null) { msg(PLAYER_NOT_FOUND); @@ -205,7 +205,7 @@ public class Command_manageshop extends FreedomCommand return true; } - PlayerData playerData = plugin.pl.getData(args[3]); + PlayerData playerData = plugin.pl.getData(FUtil.getUUIDFromName(args[3])); if (playerData == null) { msg(PLAYER_NOT_FOUND); diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_mbconfig.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_mbconfig.java index 23320e41..94204ce2 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_mbconfig.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_mbconfig.java @@ -45,7 +45,7 @@ public class Command_mbconfig extends FreedomCommand return true; } - PlayerData data = plugin.pl.getData(sender.getName()); + PlayerData data = plugin.pl.getData(FUtil.getUUIDFromName(sender.getName())); if (!data.isMasterBuilder()) { msg("You are not a master builder!", ChatColor.RED); @@ -74,7 +74,7 @@ public class Command_mbconfig extends FreedomCommand return true; } - PlayerData data = plugin.pl.getData(sender.getName()); + PlayerData data = plugin.pl.getData(FUtil.getUUIDFromName(sender.getName())); final String targetIp = FUtil.getIp(playerSender); if (!data.isMasterBuilder()) @@ -101,14 +101,14 @@ public class Command_mbconfig extends FreedomCommand return false; } - if (plugin.pl.canManageMasterBuilders(sender.getName())) + if (plugin.pl.canManageMasterBuilders(FUtil.getUUIDFromName(sender.getName()))) { return noPerms(); } final Player player = getPlayer(args[1]); - PlayerData data = player != null ? plugin.pl.getData(player) : plugin.pl.getData(args[1]); + PlayerData data = player != null ? plugin.pl.getData(player) : plugin.pl.getData(FUtil.getUUIDFromName(args[1])); if (data == null) { @@ -157,13 +157,13 @@ public class Command_mbconfig extends FreedomCommand return false; } - if (plugin.pl.canManageMasterBuilders(sender.getName())) + if (plugin.pl.canManageMasterBuilders(FUtil.getUUIDFromName(sender.getName()))) { return noPerms(); } Player player = getPlayer(args[1]); - PlayerData data = player != null ? plugin.pl.getData(player) : plugin.pl.getData(args[1]); + PlayerData data = player != null ? plugin.pl.getData(player) : plugin.pl.getData(FUtil.getUUIDFromName(args[1])); if (data == null || !data.isMasterBuilder()) { @@ -210,7 +210,7 @@ public class Command_mbconfig extends FreedomCommand } else if (args[0].equalsIgnoreCase("clearip")) { - PlayerData data = plugin.pl.getData(sender.getName()); + PlayerData data = plugin.pl.getData(FUtil.getUUIDFromName(sender.getName())); if (data.isMasterBuilder()) { return data.getIps(); diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_myadmin.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_myadmin.java index 1c38639c..0382c8b5 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_myadmin.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_myadmin.java @@ -170,7 +170,7 @@ public class Command_myadmin extends FreedomCommand msg("Role syncing is not enabled.", ChatColor.RED); return true; } - PlayerData playerData = plugin.pl.getData(target.getName()); + PlayerData playerData = plugin.pl.getData(target.getUniqueId()); if (playerData.getDiscordID() == null) { msg("Please run /linkdiscord first!", ChatColor.RED); @@ -248,7 +248,7 @@ public class Command_myadmin extends FreedomCommand { if (args[0].equals("-o") && args[2].equals("clearip")) { - Admin admin = plugin.al.getEntryByName(args[1]); + Admin admin = plugin.al.getEntryByUUID(FUtil.getUUIDFromName(args[1])); if (admin != null) { return admin.getIps(); diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_notes.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_notes.java index 4a4cd2ab..7ff97b73 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_notes.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_notes.java @@ -31,7 +31,7 @@ public class Command_notes extends FreedomCommand final Player player = getPlayer(args[0]); if (player == null) { - final PlayerData entry = plugin.pl.getData(args[0]); + final PlayerData entry = plugin.pl.getData(FUtil.getUUIDFromName(args[0])); if (entry == null) { @@ -39,7 +39,7 @@ public class Command_notes extends FreedomCommand return true; } - playerData = plugin.pl.getData(entry.getName()); + playerData = entry; } else { diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_saconfig.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_saconfig.java index 0a1c06dc..83aaf008 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_saconfig.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_saconfig.java @@ -5,6 +5,8 @@ import java.util.Arrays; import java.util.Collections; import java.util.Date; import java.util.List; +import java.util.stream.Collectors; + import me.totalfreedom.totalfreedommod.admin.Admin; import me.totalfreedom.totalfreedommod.config.ConfigEntry; import me.totalfreedom.totalfreedommod.discord.Discord; @@ -34,7 +36,7 @@ public class Command_saconfig extends FreedomCommand { case "list": { - msg("Admins: " + StringUtils.join(plugin.al.getAdminNames(), ", "), ChatColor.GOLD); + msg("Admins: " + StringUtils.join(plugin.al.getAdminUUIDs().stream().map(FUtil::getNameFromUUID).collect(Collectors.toList()), ", "), ChatColor.GOLD); return true; } @@ -45,7 +47,7 @@ public class Command_saconfig extends FreedomCommand FUtil.adminAction(sender.getName(), "Cleaning the admin list", true); plugin.al.deactivateOldEntries(true); - msg("Admins: " + StringUtils.join(plugin.al.getAdminNames(), ", "), ChatColor.GOLD); + msg("Admins: " + StringUtils.join(plugin.al.getAdminUUIDs().stream().map(FUtil::getNameFromUUID).collect(Collectors.toList()), ", "), ChatColor.GOLD); return true; } @@ -89,7 +91,7 @@ public class Command_saconfig extends FreedomCommand return true; } - Admin admin = plugin.al.getEntryByName(args[1]); + Admin admin = plugin.al.getEntryByUUID(FUtil.getUUIDFromName(args[1])); if (admin == null) { msg("Unknown admin: " + args[1]); @@ -109,7 +111,7 @@ public class Command_saconfig extends FreedomCommand if (plugin.dc.enabled && ConfigEntry.DISCORD_ROLE_SYNC.getBoolean()) { - Discord.syncRoles(admin, plugin.pl.getData(admin.getName()).getDiscordID()); + Discord.syncRoles(admin, plugin.pl.getData(admin.getUniqueId()).getDiscordID()); } plugin.ptero.updateAccountStatus(admin); @@ -127,7 +129,7 @@ public class Command_saconfig extends FreedomCommand checkRank(Rank.ADMIN); - Admin admin = plugin.al.getEntryByName(args[1]); + Admin admin = plugin.al.getEntryByUUID(FUtil.getUUIDFromName(args[1])); if (admin == null) { @@ -206,12 +208,12 @@ public class Command_saconfig extends FreedomCommand { FUtil.adminAction(sender.getName(), "Re-adding " + player.getName() + " to the admin list", true); - String oldName = admin.getName(); + /*String oldName = admin.getName(); if (!oldName.equals(player.getName())) { admin.setName(player.getName()); plugin.sql.updateAdminName(oldName, admin.getName()); - } + }*/ admin.addIp(FUtil.getIp(player)); admin.setActive(true); @@ -259,7 +261,7 @@ public class Command_saconfig extends FreedomCommand checkRank(Rank.ADMIN); Player player = getPlayer(args[1]); - Admin admin = player != null ? plugin.al.getAdmin(player) : plugin.al.getEntryByName(args[1]); + Admin admin = player != null ? plugin.al.getAdmin(player) : plugin.al.getEntryByUUID(FUtil.getUUIDFromName(args[1])); if (admin == null) { @@ -280,7 +282,7 @@ public class Command_saconfig extends FreedomCommand if (plugin.dc.enabled && ConfigEntry.DISCORD_ROLE_SYNC.getBoolean()) { - Discord.syncRoles(admin, plugin.pl.getData(admin.getName()).getDiscordID()); + Discord.syncRoles(admin, plugin.pl.getData(admin.getUniqueId()).getDiscordID()); } plugin.ptero.updateAccountStatus(admin); diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_settotalvotes.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_settotalvotes.java index 3c6de7be..ce7e52ac 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_settotalvotes.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_settotalvotes.java @@ -3,6 +3,7 @@ package me.totalfreedom.totalfreedommod.command; import me.totalfreedom.totalfreedommod.config.ConfigEntry; import me.totalfreedom.totalfreedommod.player.PlayerData; import me.totalfreedom.totalfreedommod.rank.Rank; +import me.totalfreedom.totalfreedommod.util.FUtil; import org.bukkit.ChatColor; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; @@ -38,7 +39,7 @@ public class Command_settotalvotes extends FreedomCommand return true; } - PlayerData playerData = plugin.pl.getData(args[1]); + PlayerData playerData = plugin.pl.getData(FUtil.getUUIDFromName(args[1])); if (playerData == null) { diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_tban.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_tban.java index c4c4c62f..4bb9bb4d 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_tban.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_tban.java @@ -46,7 +46,7 @@ public class Command_tban extends FreedomCommand final PlayerData entry; if (player == null) { - entry = plugin.pl.getData(args[0]); + entry = plugin.pl.getData(FUtil.getUUIDFromName(args[0])); if (entry == null) { diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_tempban.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_tempban.java index dfc412ce..741d15c4 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_tempban.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_tempban.java @@ -53,7 +53,7 @@ public class Command_tempban extends FreedomCommand final PlayerData entry; if (player == null) { - entry = plugin.pl.getData(args[0]); + entry = plugin.pl.getData(FUtil.getUUIDFromName(args[0])); if (entry == null) { diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_unban.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_unban.java index b6ca9452..dae8b031 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_unban.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_unban.java @@ -22,7 +22,7 @@ public class Command_unban extends FreedomCommand if (args.length > 0) { String username; - final PlayerData entry = plugin.pl.getData(args[0]); + final PlayerData entry = plugin.pl.getData(FUtil.getUUIDFromName(args[0])); if (entry == null) { diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_unlinkdiscord.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_unlinkdiscord.java index 922db3a4..3b15ae08 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_unlinkdiscord.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_unlinkdiscord.java @@ -2,6 +2,7 @@ package me.totalfreedom.totalfreedommod.command; import me.totalfreedom.totalfreedommod.player.PlayerData; import me.totalfreedom.totalfreedommod.rank.Rank; +import me.totalfreedom.totalfreedommod.util.FUtil; import org.bukkit.ChatColor; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; @@ -23,7 +24,7 @@ public class Command_unlinkdiscord extends FreedomCommand if (args.length != 0 && plugin.al.isAdmin(playerSender)) { - PlayerData playerData = plugin.pl.getData(args[0]); + PlayerData playerData = plugin.pl.getData(FUtil.getUUIDFromName(args[0])); if (playerData == null) { msg(PLAYER_NOT_FOUND); diff --git a/src/main/java/me/totalfreedom/totalfreedommod/discord/PrivateMessageListener.java b/src/main/java/me/totalfreedom/totalfreedommod/discord/PrivateMessageListener.java index aee47a51..af99f261 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/discord/PrivateMessageListener.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/discord/PrivateMessageListener.java @@ -24,7 +24,7 @@ public class PrivateMessageListener extends ListenerAdapter player.setDiscordID(event.getMessage().getAuthor().getId()); player.setVerification(true); - Admin admin = TotalFreedomMod.getPlugin().al.getEntryByName(name); + Admin admin = TotalFreedomMod.getPlugin().al.getEntryByUUID(player.getUniqueId()); if (admin != null) { Discord.syncRoles(admin, player.getDiscordID()); diff --git a/src/main/java/me/totalfreedom/totalfreedommod/player/FPlayer.java b/src/main/java/me/totalfreedom/totalfreedommod/player/FPlayer.java index 03e0c075..bea8e490 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/player/FPlayer.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/player/FPlayer.java @@ -16,23 +16,22 @@ import org.bukkit.scheduler.BukkitTask; import java.util.ArrayList; import java.util.List; +import java.util.UUID; -public class FPlayer -{ +public class FPlayer { public static final long AUTO_PURGE_TICKS = 5L * 60L * 20L; private final TotalFreedomMod plugin; - private final String name; - - private final String ip; + private final UUID uuid; // private final FreezeData freezeData = new FreezeData(this); private final CageData cageData = new CageData(this); private final List mobThrowerQueue = new ArrayList<>(); private Player player; + private PlayerData playerData; // private BukkitTask unmuteTask; private double fuckoffRadius = 0; @@ -71,376 +70,295 @@ public class FPlayer private boolean invSee = false; - public FPlayer(TotalFreedomMod plugin, Player player) - { - this(plugin, player.getName(), FUtil.getIp(player)); + + public FPlayer(TotalFreedomMod plugin, Player player) { + this(plugin, player.getUniqueId()); } - private FPlayer(TotalFreedomMod plugin, String name, String ip) - { + private FPlayer(TotalFreedomMod plugin, UUID uuid) { this.plugin = plugin; - this.name = name; - this.ip = ip; + this.uuid = uuid; } - public static long getAutoPurgeTicks() - { + public static long getAutoPurgeTicks() { return AUTO_PURGE_TICKS; } - public Player getPlayer() - { - if (player != null && !player.isOnline()) - { - player = null; - } - - if (player == null) - { - for (Player onlinePlayer : Bukkit.getOnlinePlayers()) - { - if (FUtil.getIp(onlinePlayer).equals(ip)) - { - player = onlinePlayer; - break; + public Player getPlayer() { + if (this.player == null) { + for (Player onlinePlayer : Bukkit.getOnlinePlayers()) { + if (onlinePlayer.getUniqueId().equals(this.uuid)) { + this.player = onlinePlayer; } } } - return player; + return this.player; } - public void setPlayer(Player player) - { + public void setPlayer(Player player) { this.player = player; } - public boolean isOrbiting() - { + public boolean isOrbiting() { return isOrbiting; } - public void setOrbiting(boolean orbiting) - { + public void setOrbiting(boolean orbiting) { isOrbiting = orbiting; } - public void startOrbiting(double strength) - { + public void startOrbiting(double strength) { this.isOrbiting = true; this.orbitStrength = strength; } - public void stopOrbiting() - { + public void stopOrbiting() { this.isOrbiting = false; } - public double orbitStrength() - { + public double orbitStrength() { return orbitStrength; } - public boolean isFuckOff() - { + public boolean isFuckOff() { return fuckoffRadius > 0; } - public void setFuckoff(double radius) - { + public void setFuckoff(double radius) { this.fuckoffRadius = radius; } - public void disableFuckoff() - { + public void disableFuckoff() { this.fuckoffRadius = 0; } - public void resetMsgCount() - { + public void resetMsgCount() { this.messageCount = 0; } - public int incrementAndGetMsgCount() - { + public int incrementAndGetMsgCount() { return this.messageCount++; } - public int incrementAndGetBlockDestroyCount() - { + public int incrementAndGetBlockDestroyCount() { return this.totalBlockDestroy++; } - public void resetBlockDestroyCount() - { + public void resetBlockDestroyCount() { this.totalBlockDestroy = 0; } - public int incrementAndGetBlockPlaceCount() - { + public int incrementAndGetBlockPlaceCount() { return this.totalBlockPlace++; } - public void resetBlockPlaceCount() - { + public void resetBlockPlaceCount() { this.totalBlockPlace = 0; } - public int incrementAndGetFreecamDestroyCount() - { + public int incrementAndGetFreecamDestroyCount() { return this.freecamDestroyCount++; } - public void resetFreecamDestroyCount() - { + public void resetFreecamDestroyCount() { this.freecamDestroyCount = 0; } - public int incrementAndGetFreecamPlaceCount() - { + public int incrementAndGetFreecamPlaceCount() { return this.freecamPlaceCount++; } - public void resetFreecamPlaceCount() - { + public void resetFreecamPlaceCount() { this.freecamPlaceCount = 0; } - public void enableMobThrower(EntityType mobThrowerCreature, double mobThrowerSpeed) - { + public void enableMobThrower(EntityType mobThrowerCreature, double mobThrowerSpeed) { this.mobThrowerEnabled = true; this.mobThrowerEntity = mobThrowerCreature; this.mobThrowerSpeed = mobThrowerSpeed; } - public void disableMobThrower() - { + public void disableMobThrower() { this.mobThrowerEnabled = false; } - public EntityType mobThrowerCreature() - { + public EntityType mobThrowerCreature() { return this.mobThrowerEntity; } - public double mobThrowerSpeed() - { + public double mobThrowerSpeed() { return this.mobThrowerSpeed; } - public boolean mobThrowerEnabled() - { + public boolean mobThrowerEnabled() { return this.mobThrowerEnabled; } - public void enqueueMob(LivingEntity mob) - { + public void enqueueMob(LivingEntity mob) { mobThrowerQueue.add(mob); - if (mobThrowerQueue.size() > 4) - { + if (mobThrowerQueue.size() > 4) { LivingEntity oldmob = mobThrowerQueue.remove(0); - if (oldmob != null) - { + if (oldmob != null) { oldmob.damage(500.0); } } } - public void startArrowShooter(TotalFreedomMod plugin) - { + public void startArrowShooter(TotalFreedomMod plugin) { this.stopArrowShooter(); this.mp44ScheduleTask = new ArrowShooter(getPlayer()).runTaskTimer(plugin, 1L, 1L); this.mp44Firing = true; } - public void stopArrowShooter() - { - if (this.mp44ScheduleTask != null) - { + public void stopArrowShooter() { + if (this.mp44ScheduleTask != null) { this.mp44ScheduleTask.cancel(); this.mp44ScheduleTask = null; } this.mp44Firing = false; } - public void armMP44() - { + public void armMP44() { this.mp44Armed = true; this.stopArrowShooter(); } - public void disarmMP44() - { + public void disarmMP44() { this.mp44Armed = false; this.stopArrowShooter(); } - public boolean isMP44Armed() - { + public boolean isMP44Armed() { return this.mp44Armed; } - public boolean toggleMP44Firing() - { + public boolean toggleMP44Firing() { this.mp44Firing = !this.mp44Firing; return mp44Firing; } - public boolean isMuted() - { + public boolean isMuted() { return unmuteTask != null; } - public void setMuted(boolean muted, int minutes) - { + public void setMuted(boolean muted, int minutes) { FUtil.cancel(unmuteTask); - plugin.mu.MUTED_PLAYERS.remove(getPlayer().getName()); + plugin.mu.MUTED_PLAYERS.remove(getPlayer().getUniqueId()); unmuteTask = null; - if (!muted) - { + if (!muted) { return; } - if (getPlayer() == null) - { + if (getPlayer() == null) { return; } - plugin.mu.MUTED_PLAYERS.add(getPlayer().getName()); + plugin.mu.MUTED_PLAYERS.add(getPlayer().getUniqueId()); // TODO: Simplify this into a Consumer lambda? - unmuteTask = new BukkitRunnable() - { + unmuteTask = new BukkitRunnable() { @Override - public void run() - { - if (getPlayer() != null) - { + public void run() { + if (getPlayer() != null) { FUtil.adminAction(ConfigEntry.SERVER_NAME.getString(), "Unmuting " + getPlayer().getName(), false); setMuted(false); - } - else - { - FUtil.adminAction(ConfigEntry.SERVER_NAME.getString(), "Unmuting " + getName(), false); - plugin.mu.MUTED_PLAYERS.remove(getName()); + } else { + FUtil.adminAction(ConfigEntry.SERVER_NAME.getString(), "Unmuting " + Bukkit.getOfflinePlayer(uuid).getName(), false); + plugin.mu.MUTED_PLAYERS.remove(uuid); } } }.runTaskLater(plugin, minutes * (60L * 20L)); } - public void setMuted(boolean muted) - { + public void setMuted(boolean muted) { setMuted(muted, 5); } - public BukkitTask getLockupScheduleID() - { + public BukkitTask getLockupScheduleID() { return this.lockupScheduleTask; } - public void setLockupScheduleId(BukkitTask id) - { + public void setLockupScheduleId(BukkitTask id) { this.lockupScheduleTask = id; } - public boolean isLockedUp() - { + public boolean isLockedUp() { return this.lockedUp; } - public void setLockedUp(boolean lockedUp) - { + public void setLockedUp(boolean lockedUp) { this.lockedUp = lockedUp; } - public String getLastMessage() - { + public String getLastMessage() { return lastMessage; } - public void setLastMessage(String message) - { + public void setLastMessage(String message) { this.lastMessage = message; } - public void setAdminChat(boolean inAdminchat) - { + public void setAdminChat(boolean inAdminchat) { this.inAdminchat = inAdminchat; } - public boolean inAdminChat() - { + public boolean inAdminChat() { return this.inAdminchat; } - public boolean allCommandsBlocked() - { + public boolean allCommandsBlocked() { return this.allCommandsBlocked; } - public void setCommandsBlocked(boolean commandsBlocked) - { + public void setCommandsBlocked(boolean commandsBlocked) { this.allCommandsBlocked = commandsBlocked; } - public String getLastCommand() - { + public String getLastCommand() { return lastCommand; } - public void setLastCommand(String lastCommand) - { + public void setLastCommand(String lastCommand) { this.lastCommand = lastCommand; } - public void setCommandSpy(boolean enabled) - { + public void setCommandSpy(boolean enabled) { this.cmdspyEnabled = enabled; } - public boolean cmdspyEnabled() - { + public boolean cmdspyEnabled() { return cmdspyEnabled; } - public String getTag() - { + public String getTag() { return this.tag; } - public void setTag(String tag) - { - if (tag == null) - { + public void setTag(String tag) { + if (tag == null) { this.tag = null; - } - else - { + } else { this.tag = FUtil.colorize(tag) + ChatColor.WHITE; } } - public int getWarningCount() - { + public int getWarningCount() { return this.warningCount; } - public void setWarningCount(int warningCount) - { + public void setWarningCount(int warningCount) { this.warningCount = warningCount; } - public void incrementWarnings(boolean quiet) - { + public void incrementWarnings(boolean quiet) { this.warningCount++; - if (this.warningCount % 2 == 0) - { + if (this.warningCount % 2 == 0) { Player p = getPlayer(); - if (!quiet) - { + if (!quiet) { p.getWorld().strikeLightning(p.getLocation()); } @@ -448,271 +366,221 @@ public class FPlayer } } - public TotalFreedomMod getPlugin() - { + public TotalFreedomMod getPlugin() { return plugin; } - public String getName() - { - return name; + public UUID getUniqueId() { + return uuid; } - public String getIp() - { - return ip; + public PlayerData getPlayerData() { + return playerData; } - public BukkitTask getUnmuteTask() - { + public BukkitTask getUnmuteTask() { return unmuteTask; } - public void setUnmuteTask(BukkitTask unmuteTask) - { + public void setUnmuteTask(BukkitTask unmuteTask) { this.unmuteTask = unmuteTask; } - public FreezeData getFreezeData() - { + public FreezeData getFreezeData() { return freezeData; } - public double getFuckoffRadius() - { + public double getFuckoffRadius() { return fuckoffRadius; } - public void setFuckoffRadius(double fuckoffRadius) - { + public void setFuckoffRadius(double fuckoffRadius) { this.fuckoffRadius = fuckoffRadius; } - public int getMessageCount() - { + public int getMessageCount() { return messageCount; } - public void setMessageCount(int messageCount) - { + public void setMessageCount(int messageCount) { this.messageCount = messageCount; } - public int getTotalBlockDestroy() - { + public int getTotalBlockDestroy() { return totalBlockDestroy; } - public void setTotalBlockDestroy(int totalBlockDestroy) - { + public void setTotalBlockDestroy(int totalBlockDestroy) { this.totalBlockDestroy = totalBlockDestroy; } - public int getTotalBlockPlace() - { + public int getTotalBlockPlace() { return totalBlockPlace; } - public void setTotalBlockPlace(int totalBlockPlace) - { + public void setTotalBlockPlace(int totalBlockPlace) { this.totalBlockPlace = totalBlockPlace; } - public int getFreecamDestroyCount() - { + public int getFreecamDestroyCount() { return freecamDestroyCount; } - public void setFreecamDestroyCount(int freecamDestroyCount) - { + public void setFreecamDestroyCount(int freecamDestroyCount) { this.freecamDestroyCount = freecamDestroyCount; } - public int getFreecamPlaceCount() - { + public int getFreecamPlaceCount() { return freecamPlaceCount; } - public void setFreecamPlaceCount(int freecamPlaceCount) - { + public void setFreecamPlaceCount(int freecamPlaceCount) { this.freecamPlaceCount = freecamPlaceCount; } - public CageData getCageData() - { + public CageData getCageData() { return cageData; } - public double getOrbitStrength() - { + public double getOrbitStrength() { return orbitStrength; } - public void setOrbitStrength(double orbitStrength) - { + public void setOrbitStrength(double orbitStrength) { this.orbitStrength = orbitStrength; } - public boolean isMobThrowerEnabled() - { + public boolean isMobThrowerEnabled() { return mobThrowerEnabled; } - public void setMobThrowerEnabled(boolean mobThrowerEnabled) - { + public void setMobThrowerEnabled(boolean mobThrowerEnabled) { this.mobThrowerEnabled = mobThrowerEnabled; } - public EntityType getMobThrowerEntity() - { + public EntityType getMobThrowerEntity() { return mobThrowerEntity; } - public void setMobThrowerEntity(EntityType mobThrowerEntity) - { + public void setMobThrowerEntity(EntityType mobThrowerEntity) { this.mobThrowerEntity = mobThrowerEntity; } - public double getMobThrowerSpeed() - { + public double getMobThrowerSpeed() { return mobThrowerSpeed; } - public void setMobThrowerSpeed(double mobThrowerSpeed) - { + public void setPlayerData(PlayerData playerData) { + this.playerData = playerData; + } + + public void setMobThrowerSpeed(double mobThrowerSpeed) { this.mobThrowerSpeed = mobThrowerSpeed; } - public List getMobThrowerQueue() - { + public List getMobThrowerQueue() { return mobThrowerQueue; } - public BukkitTask getMp44ScheduleTask() - { + public BukkitTask getMp44ScheduleTask() { return mp44ScheduleTask; } - public void setMp44ScheduleTask(BukkitTask mp44ScheduleTask) - { + public void setMp44ScheduleTask(BukkitTask mp44ScheduleTask) { this.mp44ScheduleTask = mp44ScheduleTask; } - public boolean isMp44Armed() - { + public boolean isMp44Armed() { return mp44Armed; } - public void setMp44Armed(boolean mp44Armed) - { + public void setMp44Armed(boolean mp44Armed) { this.mp44Armed = mp44Armed; } - public boolean isMp44Firing() - { + public boolean isMp44Firing() { return mp44Firing; } - public void setMp44Firing(boolean mp44Firing) - { + public void setMp44Firing(boolean mp44Firing) { this.mp44Firing = mp44Firing; } - public BukkitTask getLockupScheduleTask() - { + public BukkitTask getLockupScheduleTask() { return lockupScheduleTask; } - public void setLockupScheduleTask(BukkitTask lockupScheduleTask) - { + public void setLockupScheduleTask(BukkitTask lockupScheduleTask) { this.lockupScheduleTask = lockupScheduleTask; } - public boolean isInAdminchat() - { + public boolean isInAdminchat() { return inAdminchat; } - public void setInAdminchat(boolean inAdminchat) - { + public void setInAdminchat(boolean inAdminchat) { this.inAdminchat = inAdminchat; } - public boolean isAllCommandsBlocked() - { + public boolean isAllCommandsBlocked() { return allCommandsBlocked; } - public void setAllCommandsBlocked(boolean allCommandsBlocked) - { + public void setAllCommandsBlocked(boolean allCommandsBlocked) { this.allCommandsBlocked = allCommandsBlocked; } - public boolean isSuperadminIdVerified() - { + public boolean isSuperadminIdVerified() { return superadminIdVerified; } - public void setSuperadminIdVerified(boolean superadminIdVerified) - { + public void setSuperadminIdVerified(boolean superadminIdVerified) { this.superadminIdVerified = superadminIdVerified; } - public boolean isCmdspyEnabled() - { + public boolean isCmdspyEnabled() { return cmdspyEnabled; } - public void setCmdspyEnabled(boolean cmdspyEnabled) - { + public void setCmdspyEnabled(boolean cmdspyEnabled) { this.cmdspyEnabled = cmdspyEnabled; } - public boolean isEditBlocked() - { + public boolean isEditBlocked() { return editBlocked; } - public void setEditBlocked(boolean editBlocked) - { + public void setEditBlocked(boolean editBlocked) { this.editBlocked = editBlocked; } - public boolean isPvpBlocked() - { + public boolean isPvpBlocked() { return pvpBlocked; } - public void setPvpBlocked(boolean pvpBlocked) - { + public void setPvpBlocked(boolean pvpBlocked) { this.pvpBlocked = pvpBlocked; } - public boolean isInvSee() - { + public boolean isInvSee() { return invSee; } - public void setInvSee(boolean invSee) - { + public void setInvSee(boolean invSee) { this.invSee = invSee; } - private static class ArrowShooter extends BukkitRunnable - { + private static class ArrowShooter extends BukkitRunnable { private final Player player; - private ArrowShooter(Player player) - { + private ArrowShooter(Player player) { this.player = player; } @Override - public void run() - { - if (player != null) - { + public void run() { + if (player != null) { Arrow shot = player.launchProjectile(Arrow.class); shot.setVelocity(shot.getVelocity().multiply(2.0)); } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/player/PlayerData.java b/src/main/java/me/totalfreedom/totalfreedommod/player/PlayerData.java index 942f9db4..96b19d84 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/player/PlayerData.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/player/PlayerData.java @@ -3,10 +3,8 @@ package me.totalfreedom.totalfreedommod.player; import com.google.common.collect.Lists; import java.sql.ResultSet; import java.sql.SQLException; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; + import me.totalfreedom.totalfreedommod.TotalFreedomMod; import me.totalfreedom.totalfreedommod.shop.ShopItem; import me.totalfreedom.totalfreedommod.util.FLog; @@ -20,7 +18,7 @@ public class PlayerData private final List ips = Lists.newArrayList(); private final List notes = Lists.newArrayList(); private final List backupCodes = Lists.newArrayList(); - private String name; + private UUID uuid; private String tag = null; private String discordID = null; private Boolean masterBuilder = false; @@ -48,7 +46,7 @@ public class PlayerData { try { - name = resultSet.getString("username"); + uuid = UUID.fromString(resultSet.getString("uuid")); ips.clear(); ips.addAll(FUtil.stringToList(resultSet.getString("ips"))); notes.clear(); @@ -88,14 +86,13 @@ public class PlayerData public PlayerData(Player player) { - this.name = player.getName(); + this.uuid = player.getUniqueId(); } @Override public String toString() { - - return "Player: " + name + "\n" + + return "Player: " + uuid.toString() + "\n" + "- IPs: " + StringUtils.join(ips, ", ") + "\n" + "- Discord ID: " + discordID + "\n" + "- Master Builder: " + masterBuilder + "\n" + @@ -232,7 +229,7 @@ public class PlayerData { return new HashMap() {{ - put("username", name); + put("uuid", uuid); put("ips", FUtil.listToString(ips)); put("notes", FUtil.listToString(notes)); put("tag", tag); @@ -255,14 +252,14 @@ public class PlayerData return displayDiscord; } - public String getName() + public UUID getUniqueId() { - return name; + return uuid; } - public void setName(String name) + public void setUniqueId(UUID uuid) { - this.name = name; + this.uuid = uuid; } public String getTag() @@ -364,4 +361,9 @@ public class PlayerData { this.inspect = inspect; } + + public String getName() + { + return FUtil.getNameFromUUID(uuid); + } } \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/totalfreedommod/player/PlayerList.java b/src/main/java/me/totalfreedom/totalfreedommod/player/PlayerList.java index 222e54d2..c693a5f9 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/player/PlayerList.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/player/PlayerList.java @@ -3,11 +3,9 @@ package me.totalfreedom.totalfreedommod.player; import com.google.common.collect.Maps; import java.sql.ResultSet; import java.sql.SQLException; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.Map; -import java.util.Objects; +import java.util.*; +import java.util.stream.Collectors; + import me.totalfreedom.totalfreedommod.FreedomService; import me.totalfreedom.totalfreedommod.admin.Admin; import me.totalfreedom.totalfreedommod.config.ConfigEntry; @@ -20,13 +18,12 @@ import org.bukkit.entity.Player; public class PlayerList extends FreedomService { - public final Map playerMap = Maps.newHashMap(); // ip,dataMap - public final Map dataMap = Maps.newHashMap(); // username, data + public final Map playerMap = Maps.newHashMap(); // uuid,dataMap + //public final Map dataMap = Maps.newHashMap(); // username, data @Override public void onStart() { - dataMap.clear(); loadMasterBuilders(); } @@ -57,7 +54,6 @@ public class PlayerList extends FreedomService while (resultSet.next()) { PlayerData playerData = load(resultSet); - dataMap.put(playerData.getName(), playerData); } } catch (SQLException e) @@ -73,27 +69,20 @@ public class PlayerList extends FreedomService return FUtil.getIp(Objects.requireNonNull(player.getPlayer())); } - final PlayerData entry = getData(player.getName()); + final PlayerData entry = getData(player.getUniqueId()); return (entry == null ? null : entry.getIps().iterator().next()); } public List getMasterBuilderNames() { - List masterBuilders = new ArrayList<>(); - for (PlayerData playerData : plugin.pl.dataMap.values()) - { - if (playerData.isMasterBuilder()) - { - masterBuilders.add(playerData.getName()); - } - } - return masterBuilders; + return playerMap.values().stream().map(FPlayer::getPlayerData).filter(PlayerData::isMasterBuilder).map(p -> FUtil.getNameFromUUID(p.getUniqueId())).collect(Collectors.toList()); } - public boolean canManageMasterBuilders(String name) + public boolean canManageMasterBuilders(UUID uuid) { - PlayerData data = getData(name); + PlayerData data = getData(uuid); + String name = FUtil.getNameFromUUID(uuid); return (!ConfigEntry.HOST_SENDER_NAMES.getStringList().contains(name.toLowerCase()) && data != null && !ConfigEntry.SERVER_OWNERS.getStringList().contains(data.getName())) && !ConfigEntry.SERVER_EXECUTIVES.getStringList().contains(data.getName()) @@ -103,31 +92,41 @@ public class PlayerList extends FreedomService public boolean isTelnetMasterBuilder(PlayerData playerData) { - Admin admin = plugin.al.getEntryByName(playerData.getName()); + Admin admin = plugin.al.getEntryByUUID(playerData.getUniqueId()); return admin != null && admin.getRank().isAtLeast(Rank.ADMIN) && playerData.isMasterBuilder(); } // May not return null public FPlayer getPlayer(Player player) { - FPlayer tPlayer = playerMap.get(FUtil.getIp(player)); + FPlayer tPlayer = playerMap.get(player.getUniqueId()); if (tPlayer != null) { return tPlayer; } tPlayer = new FPlayer(plugin, player); - playerMap.put(FUtil.getIp(player), tPlayer); + playerMap.put(player.getUniqueId(), tPlayer); return tPlayer; } - public PlayerData loadByName(String name) + /*public PlayerData loadByName(String name) { return load(plugin.sql.getPlayerByName(name)); } public PlayerData loadByIp(String ip) + { + return load(plugin.sql.getPlayerByIp(ip)); + }*/ + + public PlayerData loadByUUID(UUID uuid) + { + return load(plugin.sql.getPlayerByUUID(uuid)); + } + + private PlayerData loadByIp(String ip) { return load(plugin.sql.getPlayerByIp(ip)); } @@ -168,7 +167,7 @@ public class PlayerList extends FreedomService if (plugin.al.isAdminImpostor(player)) { - Admin admin = plugin.al.getEntryByName(player.getName()); + Admin admin = plugin.al.getEntryByUUID(player.getUniqueId()); admin.setLastLogin(new Date()); admin.addIp(FUtil.getIp(player)); plugin.al.updateTables(); @@ -180,7 +179,7 @@ public class PlayerList extends FreedomService public void syncIps(Admin admin) { - PlayerData playerData = getData(admin.getName()); + PlayerData playerData = getData(admin.getUniqueId()); playerData.clearIps(); playerData.addIps(admin.getIps()); plugin.pl.save(playerData); @@ -188,7 +187,7 @@ public class PlayerList extends FreedomService public void syncIps(PlayerData playerData) { - Admin admin = plugin.al.getEntryByName(playerData.getName()); + Admin admin = plugin.al.getEntryByUUID(playerData.getUniqueId()); if (admin != null && admin.isActive()) { @@ -204,7 +203,7 @@ public class PlayerList extends FreedomService { try { - ResultSet currentSave = plugin.sql.getPlayerByName(player.getName()); + ResultSet currentSave = plugin.sql.getPlayerByUUID(player.getUniqueId()); for (Map.Entry entry : player.toSQLStorable().entrySet()) { Object storedValue = plugin.sql.getValue(currentSave, entry.getKey(), entry.getValue()); @@ -223,31 +222,32 @@ public class PlayerList extends FreedomService public PlayerData getData(Player player) { // Check for existing data - PlayerData playerData = dataMap.get(player.getName()); + PlayerData playerData = playerMap.get(player.getUniqueId()).getPlayerData(); if (playerData != null) { return playerData; } // Load data - playerData = loadByName(player.getName()); + playerData = loadByUUID(player.getUniqueId()); - if (playerData == null) + /*if (playerData == null) { playerData = loadByIp(FUtil.getIp(player)); if (playerData != null) { plugin.sql.updatePlayerName(playerData.getName(), player.getName()); - playerData.setName(player.getName()); - dataMap.put(player.getName(), playerData); + playerMap.get(player.getUniqueId()).setPlayerData(playerData); return playerData; } } else { - dataMap.put(player.getName(), playerData); + playerMap.get(player.getUniqueId()).setPlayerData(playerData); return playerData; - } + }*/ + + playerMap.get(player.getUniqueId()).setPlayerData(playerData); // Create new data if nonexistent FLog.info("Creating new player verification entry for " + player.getName()); @@ -257,7 +257,7 @@ public class PlayerList extends FreedomService playerData.addIp(FUtil.getIp(player)); // Store player - dataMap.put(player.getName(), playerData); + playerMap.get(player.getUniqueId()).setPlayerData(playerData); // Save player plugin.sql.addPlayer(playerData); @@ -265,8 +265,10 @@ public class PlayerList extends FreedomService } + /*@Deprecated public PlayerData getData(String username) { + throw new UnsupportedOperationException(); // Check for existing data PlayerData playerData = dataMap.get(username); if (playerData != null) @@ -285,28 +287,58 @@ public class PlayerList extends FreedomService return null; } + return playerData; + }*/ + + public PlayerData getData(UUID uuid) + { + PlayerData playerData = playerMap.get(uuid).getPlayerData(); + if (playerData != null) + { + return playerData; + } + + playerData = loadByUUID(uuid); + + if (playerData != null) + { + playerMap.get(uuid).setPlayerData(playerData); + } + else + { + return null; + } + return playerData; } - public PlayerData getDataByIp(String ip) + public PlayerData getDataByUUID(UUID uuid) { - PlayerData player = loadByIp(ip); + PlayerData player = loadByUUID(uuid); if (player != null) { - dataMap.put(player.getName(), player); + playerMap.get(uuid).setPlayerData(player); } return player; } - public Map getPlayerMap() + public PlayerData getDataByIp(String ip) + { + PlayerData player = loadByIp(ip); + + if (player != null) + { + playerMap.get(player.getUniqueId()).setPlayerData(player); + } + + return player; + } + + public Map getPlayerMap() { return playerMap; } - public Map getDataMap() - { - return dataMap; - } } \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/totalfreedommod/rank/RankManager.java b/src/main/java/me/totalfreedom/totalfreedommod/rank/RankManager.java index d246b19f..bb333797 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/rank/RankManager.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/rank/RankManager.java @@ -117,7 +117,7 @@ public class RankManager extends FreedomService } // Console admin, get by name - Admin admin = plugin.al.getEntryByName(sender.getName()); + Admin admin = plugin.al.getEntryByUUID(FUtil.getUUIDFromName(sender.getName())); // Unknown console: RCON? if (admin == null) diff --git a/src/main/java/me/totalfreedom/totalfreedommod/shop/Votifier.java b/src/main/java/me/totalfreedom/totalfreedommod/shop/Votifier.java index c559d061..f5420ac5 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/shop/Votifier.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/shop/Votifier.java @@ -37,7 +37,7 @@ public class Votifier extends FreedomService } else { - data = plugin.pl.getData(name); + data = plugin.pl.getData(FUtil.getUUIDFromName(name)); } if (data != null) diff --git a/src/main/java/me/totalfreedom/totalfreedommod/sql/SQLite.java b/src/main/java/me/totalfreedom/totalfreedommod/sql/SQLite.java index 09551e02..87197887 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/sql/SQLite.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/sql/SQLite.java @@ -7,6 +7,8 @@ import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.text.MessageFormat; +import java.util.UUID; + import me.totalfreedom.totalfreedommod.FreedomService; import me.totalfreedom.totalfreedommod.admin.Admin; import me.totalfreedom.totalfreedommod.banning.Ban; @@ -70,6 +72,7 @@ public class SQLite extends FreedomService { try { + //TODO: move bans to uuid connection.createStatement().execute("CREATE TABLE `bans` (`name` VARCHAR, `uuid` VARCHAR, `ips` VARCHAR, `by` VARCHAR NOT NULL, `at` LONG NOT NULL, `expires` LONG, `reason` VARCHAR);"); } catch (SQLException e) @@ -82,7 +85,7 @@ public class SQLite extends FreedomService { try { - connection.createStatement().execute("CREATE TABLE `admins` (`username` VARCHAR NOT NULL, `ips` VARCHAR NOT NULL, `rank` VARCHAR NOT NULL, `active` BOOLEAN NOT NULL, `last_login` LONG NOT NULL, `command_spy` BOOLEAN NOT NULL, `potion_spy` BOOLEAN NOT NULL, `ac_format` VARCHAR, `ptero_id` VARCHAR);"); + connection.createStatement().execute("CREATE TABLE `admins` (`uuid` VARCHAR NOT NULL, `ips` VARCHAR NOT NULL, `rank` VARCHAR NOT NULL, `active` BOOLEAN NOT NULL, `last_login` LONG NOT NULL, `command_spy` BOOLEAN NOT NULL, `potion_spy` BOOLEAN NOT NULL, `ac_format` VARCHAR, `ptero_id` VARCHAR);"); } catch (SQLException e) { @@ -93,7 +96,7 @@ public class SQLite extends FreedomService { try { - connection.createStatement().execute("CREATE TABLE `players` (`username` VARCHAR NOT NULL, `ips` VARCHAR NOT NULL, `notes` VARCHAR, `tag` VARCHAR, `discord_id` VARCHAR, `backup_codes` VARCHAR, `master_builder` BOOLEAN NOT NULL,`verification` BOOLEAN NOT NULL, `ride_mode` VARCHAR NOT NULL, `coins` INT, `items` VARCHAR, `total_votes` INT NOT NULL, `display_discord` BOOLEAN NOT NULL, `login_message` VARCHAR, `inspect` BOOLEAN NOT NULL);"); + connection.createStatement().execute("CREATE TABLE `players` (`uuid` VARCHAR NOT NULL, `ips` VARCHAR NOT NULL, `notes` VARCHAR, `tag` VARCHAR, `discord_id` VARCHAR, `backup_codes` VARCHAR, `master_builder` BOOLEAN NOT NULL,`verification` BOOLEAN NOT NULL, `ride_mode` VARCHAR NOT NULL, `coins` INT, `items` VARCHAR, `total_votes` INT NOT NULL, `display_discord` BOOLEAN NOT NULL, `login_message` VARCHAR, `inspect` BOOLEAN NOT NULL);"); } catch (SQLException e) { @@ -133,8 +136,8 @@ public class SQLite extends FreedomService { try { - Object[] data = {key, admin.getName()}; - PreparedStatement statement = connection.prepareStatement(MessageFormat.format("UPDATE admins SET {0}=? WHERE username=''{1}''", data)); + Object[] data = {key, admin.getUniqueId().toString()}; + PreparedStatement statement = connection.prepareStatement(MessageFormat.format("UPDATE admins SET {0}=? WHERE uuid=''{1}''", data)); statement = setUnknownType(statement, 1, value); statement.executeUpdate(); @@ -150,8 +153,8 @@ public class SQLite extends FreedomService { try { - Object[] data = {key, player.getName()}; - PreparedStatement statement = connection.prepareStatement(MessageFormat.format("UPDATE players SET {0}=? WHERE username=''{1}''", data)); + Object[] data = {key, player.getUniqueId().toString()}; + PreparedStatement statement = connection.prepareStatement(MessageFormat.format("UPDATE players SET {0}=? WHERE uuid=''{1}''", data)); statement = setUnknownType(statement, 1, value); statement.executeUpdate(); @@ -162,9 +165,11 @@ public class SQLite extends FreedomService } } - public void updateAdminName(String oldName, String newName) + @Deprecated + public void oldUpdateAdminName(String oldName, String newName) { - try + throw new UnsupportedOperationException("Admin no longer stores names in the object, may be changed in a future update"); + /*try { PreparedStatement statement = connection.prepareStatement(MessageFormat.format("UPDATE admins SET username=? WHERE username=''{0}''", oldName)); statement = setUnknownType(statement, 1, newName); @@ -174,10 +179,10 @@ public class SQLite extends FreedomService catch (SQLException e) { FLog.severe("Failed to update admin name: " + e.getMessage()); - } + }*/ } - public void updatePlayerName(String oldName, String newName) + /*public void updatePlayerName(String oldName, String newName) { try { @@ -190,7 +195,7 @@ public class SQLite extends FreedomService { FLog.severe("Failed to update player name: " + e.getMessage()); } - } + }*/ public PreparedStatement setUnknownType(PreparedStatement statement, int index, Object value) throws SQLException { @@ -248,7 +253,7 @@ public class SQLite extends FreedomService try { PreparedStatement statement = connection.prepareStatement("INSERT INTO admins VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)"); - statement.setString(1, admin.getName()); + statement.setString(1, admin.getUniqueId().toString()); statement.setString(2, FUtil.listToString(admin.getIps())); statement.setString(3, admin.getRank().toString()); statement.setBoolean(4, admin.isActive()); @@ -271,7 +276,7 @@ public class SQLite extends FreedomService try { PreparedStatement statement = connection.prepareStatement("INSERT INTO players VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"); - statement.setString(1, player.getName()); + statement.setString(1, player.getUniqueId().toString()); statement.setString(2, FUtil.listToString(player.getIps())); statement.setString(3, FUtil.listToString(player.getNotes())); statement.setString(4, player.getTag()); @@ -295,7 +300,7 @@ public class SQLite extends FreedomService } } - public ResultSet getAdminByName(String name) + /*public ResultSet getAdminByName(String name) { try { @@ -311,10 +316,29 @@ public class SQLite extends FreedomService FLog.severe(e); } + return null; + }*/ + + public ResultSet getAdminByUUID(UUID uuid) + { + try + { + ResultSet resultSet = connection.createStatement().executeQuery(MessageFormat.format("SELECT * FROM admins WHERE uuid=''{0}''", uuid.toString())); + if (resultSet.next()) + { + return resultSet; + } + } + catch (SQLException e) + { + FLog.severe("Failed to get admin by name:"); + FLog.severe(e); + } + return null; } - public ResultSet getPlayerByName(String name) + /*public ResultSet getPlayerByName(String name) { try { @@ -332,6 +356,8 @@ public class SQLite extends FreedomService return null; } +*/ + public ResultSet getMasterBuilders() { @@ -348,6 +374,25 @@ public class SQLite extends FreedomService return null; } + public ResultSet getPlayerByUUID(UUID uuid) + { + try + { + ResultSet resultSet = connection.createStatement().executeQuery(MessageFormat.format("SELECT * FROM players WHERE uuid LIKE ''%{0}%''", uuid.toString())); + if (resultSet.next()) + { + return resultSet; + } + } + catch (SQLException e) + { + FLog.severe("Failed to get player by uuid:"); + FLog.severe(e); + } + + return null; + } + public ResultSet getPlayerByIp(String ip) { try @@ -371,7 +416,7 @@ public class SQLite extends FreedomService { try { - connection.createStatement().executeUpdate(MessageFormat.format("DELETE FROM admins where name=''{0}''", admin.getName())); + connection.createStatement().executeUpdate(MessageFormat.format("DELETE FROM admins where uuid=''{0}''", admin.getUniqueId())); } catch (SQLException e) { diff --git a/src/main/java/me/totalfreedom/totalfreedommod/util/FUtil.java b/src/main/java/me/totalfreedom/totalfreedommod/util/FUtil.java index a269a296..abee9917 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/util/FUtil.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/util/FUtil.java @@ -1,16 +1,18 @@ package me.totalfreedom.totalfreedommod.util; +import com.google.common.collect.Maps; import me.totalfreedom.totalfreedommod.TotalFreedomMod; import me.totalfreedom.totalfreedommod.config.ConfigEntry; import org.apache.commons.io.FileUtils; import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.WordUtils; -import org.bukkit.Bukkit; -import org.bukkit.ChatColor; -import org.bukkit.Color; -import org.bukkit.Location; -import org.bukkit.Material; -import org.bukkit.OfflinePlayer; +import org.apache.hc.client5.http.classic.methods.HttpGet; +import org.apache.hc.client5.http.impl.classic.CloseableHttpClient; +import org.apache.hc.client5.http.impl.classic.CloseableHttpResponse; +import org.apache.hc.client5.http.impl.classic.HttpClients; +import org.apache.hc.core5.http.HttpResponse; +import org.apache.hc.core5.http.io.entity.EntityUtils; +import org.bukkit.*; import org.bukkit.command.CommandSender; import org.bukkit.entity.Entity; import org.bukkit.entity.Player; @@ -19,12 +21,14 @@ import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; import org.bukkit.scheduler.BukkitRunnable; import org.bukkit.scheduler.BukkitTask; +import org.json.JSONObject; import org.json.simple.JSONArray; import java.io.*; import java.lang.reflect.Field; import java.net.HttpURLConnection; import java.net.URL; +import java.nio.charset.StandardCharsets; import java.text.ParseException; import java.text.SimpleDateFormat; import java.time.Instant; @@ -37,6 +41,8 @@ import static org.bukkit.Bukkit.getServer; public class FUtil { + private static final Map NAME_CACHE = Maps.newHashMap(); + public static final String SAVED_FLAGS_FILENAME = "savedflags.dat"; /* See https://github.com/TotalFreedom/License - None of the listed names may be removed. Leaving this list here for anyone running TFM on a cracked server: @@ -883,4 +889,52 @@ public class FUtil return subList(startIndex, endIndex + 1); } } + + public static String getNameFromUUID(UUID uuid) { + + OfflinePlayer player = Bukkit.getOfflinePlayer(uuid); + if (player.hasPlayedBefore()) return player.getName(); + if (NAME_CACHE.containsKey(uuid)) return NAME_CACHE.get(uuid); + + CloseableHttpClient client = HttpClients.createDefault(); + HttpGet get = new HttpGet("https://api.ashcon.app/mojang/v2/user/" + uuid.toString().replace("-", "")); + try { + CloseableHttpResponse response = client.execute(get); + String json = EntityUtils.toString(response.getEntity(), StandardCharsets.UTF_8); + JSONObject obj = new JSONObject(json); + response.close(); + if (response.getCode() == 200) { + String name = NAME_CACHE.put(uuid, obj.getString("username")); + + Bukkit.getScheduler().runTaskLaterAsynchronously(TotalFreedomMod.getPlugin(), () -> NAME_CACHE.remove(uuid), 20 * 60L * 5); // remove the uuid from cache as names can be changed + return name; + } + client.close(); + } catch (IOException | org.apache.hc.core5.http.ParseException e) { + e.printStackTrace(); + } + return ""; + } + + public static UUID getUUIDFromName(String name) { + //get offline player is deprecated so we'll just see if they're online to get their uuid + Player player = Bukkit.getPlayer(name); + if (player != null) return player.getUniqueId(); + + CloseableHttpClient client = HttpClients.createDefault(); + HttpGet get = new HttpGet("https://api.ashcon.app/mojang/v2/user/" + name); + try { + CloseableHttpResponse response = client.execute(get); + String json = EntityUtils.toString(response.getEntity(), StandardCharsets.UTF_8); + JSONObject obj = new JSONObject(json); + response.close(); + if (response.getCode() == 200) { + return UUID.fromString(obj.getString("uuid")); + } + client.close(); + } catch (IOException | org.apache.hc.core5.http.ParseException e) { + e.printStackTrace(); + } + return null; + } } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/world/WorldRestrictions.java b/src/main/java/me/totalfreedom/totalfreedommod/world/WorldRestrictions.java index 4aef7377..9c85b569 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/world/WorldRestrictions.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/world/WorldRestrictions.java @@ -52,7 +52,7 @@ public class WorldRestrictions extends FreedomService public boolean doRestrict(Player player) { - if (!plugin.pl.getData(player).isMasterBuilder() && plugin.pl.canManageMasterBuilders(player.getName())) + if (!plugin.pl.getData(player).isMasterBuilder() && plugin.pl.canManageMasterBuilders(player.getUniqueId())) { if (player.getWorld().equals(plugin.wm.masterBuilderWorld.getWorld())) {