Removed code that synced through database instead of directly

This commit is contained in:
Teriuihi 2021-09-12 20:39:48 +02:00
parent 420d044153
commit 3d950f5fee
6 changed files with 12 additions and 188 deletions

View File

@ -7,7 +7,6 @@ import com.alttd.proxydiscordlink.config.Config;
import com.alttd.proxydiscordlink.database.Database;
import com.alttd.proxydiscordlink.database.DatabaseConnection;
import com.alttd.proxydiscordlink.minecraft.listeners.LuckpermsEvents;
import com.alttd.proxydiscordlink.minecraft.listeners.PlayerJoin;
import com.alttd.proxydiscordlink.minecraft.listeners.PlayerLeave;
import com.alttd.proxydiscordlink.util.ALogger;
import com.alttd.proxydiscordlink.util.Cache;
@ -76,7 +75,6 @@ public class DiscordLink {
}
public void loadEvents() {
server.getEventManager().register(this, new PlayerJoin());
server.getEventManager().register(this, new PlayerLeave());
new LuckpermsEvents().listener();
}

View File

@ -1,9 +1,7 @@
package com.alttd.proxydiscordlink.database;
import com.alttd.proxydiscordlink.DiscordLink;
import com.alttd.proxydiscordlink.objects.DiscordLinkPlayer;
import com.alttd.proxydiscordlink.util.ALogger;
import com.alttd.proxydiscordlink.util.Cache;
import com.alttd.proxydiscordlink.util.Utilities;
import com.velocitypowered.api.proxy.Player;
@ -11,7 +9,6 @@ import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Objects;
import java.util.UUID;
public class Database {
@ -60,25 +57,6 @@ public class Database {
}
}
public void storeDataInCache(Player player, String code, String rank, boolean isDonor) {
String sql = "INSERT INTO cache (player_uuid, player_name, player_nickname, player_rank, player_isdonor, code) VALUES (?, ?, ?, ?, ?, ?)";
try {
PreparedStatement statement = DatabaseConnection.getConnection().prepareStatement(sql);
statement.setString(1, player.getUniqueId().toString());
statement.setString(2, player.getUsername());
statement.setString(3, getNick(player.getUniqueId()));
statement.setString(4, rank);
statement.setBoolean(5, isDonor);
statement.setString(6, code);
statement.execute();
} catch (SQLException exception) {
exception.printStackTrace();
}
}
public void syncPlayer(DiscordLinkPlayer player) {
try {
String playerNickname = getNick(player.getUuid());
@ -106,19 +84,6 @@ public class Database {
}
}
public boolean isInCache(Player player) { //TODO maybe this can be a map instead
try {
ResultSet resultSet = getStringResult("SELECT * FROM cache WHERE player_uuid = ?", player.getUniqueId().toString());
if (resultSet.next()) {
return true;
}
} catch (SQLException exception) {
exception.printStackTrace();
}
return false;
}
public boolean playerIsLinked(Player player) { //TODO maybe this can be using the discord api instead? (or a cache idk)
try {
PreparedStatement statement = DatabaseConnection.getConnection()
@ -136,55 +101,16 @@ public class Database {
return false;
}
public void removeLinkedAccount(Player player) {
String discordId = "0";
try {
PreparedStatement statementSelect = DatabaseConnection.getConnection()
.prepareStatement("SELECT * FROM linked_accounts WHERE player_uuid = '" + player.getUniqueId().toString() + "'");
ResultSet resultSet = statementSelect.executeQuery();
if (!resultSet.next()) {
ALogger.error("Unable to remove linked account for: " + player.getUsername() + " : " + player.getUniqueId());
return;
}
PreparedStatement statementInsert = DatabaseConnection.getConnection()
.prepareStatement("INSERT INTO `updates` (`player_uuid`, `player_name`, `player_nickname`, `player_rank`, " +
"`player_isdonor`, `player_isnitro`, `discord_username`, `discord_id`, " +
"`discord_update`, `minecraft_update`) " +
"VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?) ON DUPLICATE KEY UPDATE player_uuid = ?");
discordId = resultSet.getString("discord_id");
statementInsert.setString(1, resultSet.getString("player_uuid"));
statementInsert.setString(2, resultSet.getString("player_name"));
statementInsert.setString(3, resultSet.getString("player_nickname"));
statementInsert.setString(4, resultSet.getString("player_rank"));
statementInsert.setInt(5, resultSet.getInt("player_isdonor"));
statementInsert.setInt(6, resultSet.getInt("player_isnitro"));
statementInsert.setString(7, resultSet.getString("discord_username"));
statementInsert.setString(8, discordId);
statementInsert.setInt(9, 0);
statementInsert.setInt(10, 2);
statementInsert.setString(11, resultSet.getString("player_uuid"));
statementInsert.execute();
statementInsert.close();
} catch (SQLException exception) {
exception.printStackTrace();
}
public void removeLinkedAccount(DiscordLinkPlayer player) {
try {
PreparedStatement statement = DatabaseConnection.getConnection()
.prepareStatement("DELETE FROM linked_accounts WHERE player_uuid = ?");
statement.setString(1, player.getUniqueId().toString());
statement.setString(1, player.getUuid().toString());
statement.execute();
statement = DatabaseConnection.getConnection()
.prepareStatement("DELETE FROM name_type WHERE discord_id = ?");
statement.setString(1, discordId);
statement.setLong(1, player.getUserId());
statement.execute();
statement.close();
@ -194,34 +120,6 @@ public class Database {
}
public void removePlayerFromCache(Player player) {
try {
PreparedStatement statement = DatabaseConnection.getConnection()
.prepareStatement("DELETE FROM cache WHERE player_uuid = '" + player.getUniqueId().toString() + "'");
statement.executeUpdate();
statement.close();
} catch (SQLException exception) {
exception.printStackTrace();
}
}
public boolean hasDiscordNitro(Player player) {
try {
PreparedStatement statement = DatabaseConnection.getConnection()
.prepareStatement("SELECT * FROM linked_accounts WHERE player_uuid = '" + player.getUniqueId().toString() + "'");
ResultSet resultSet = statement.executeQuery();
if (resultSet.next()) {
return resultSet.getInt("player_isnitro") == 1;
}
} catch (SQLException exception) {
exception.printStackTrace();
}
return false;
}
public String uuidFromName(String playerName) {
try {
PreparedStatement statement = DatabaseConnection.getConnection()
@ -308,14 +206,4 @@ public class Database {
}
return null;
}
private ResultSet getStringResult(String query, String... parameters) throws SQLException {
PreparedStatement statement = DatabaseConnection.getConnection().prepareStatement(query);
for (int i = 1; i < parameters.length + 1; ++i) {
statement.setString(i, parameters[i - 1]);
}
return statement.executeQuery();
}
}

View File

@ -43,18 +43,19 @@ public class Link implements SubCommand {
return;
}
linkAccounts(player);
startLinkAccounts(player);
}
private void linkAccounts(Player player) {
private void startLinkAccounts(Player player) {
Database database = DiscordLink.getPlugin().getDatabase();
if (database.playerIsLinked(player)) {
player.sendMessage(miniMessage.parse(Config.ALREADY_LINKED_ACCOUNTS));
return;
}
if (database.isInCache(player)) {
if (DiscordLink.getPlugin().getCache().getCode(player.getUniqueId()) != null) {
player.sendMessage(miniMessage.parse(Config.ALREADY_GOT_CODE));
return;
}
String authCode = Utilities.getAuthKey();
@ -62,7 +63,6 @@ public class Link implements SubCommand {
player.sendMessage(miniMessage.parse(Config.GIVE_CODE, Template.of("code", authCode)));
DiscordLink.getPlugin().getCache()
.cacheCode(player.getUniqueId(), authCode);
database.storeDataInCache(player, authCode, Utilities.getRankName(player.getUniqueId()), Utilities.isDonor(player.getUniqueId()));
}
@Override

View File

@ -4,6 +4,7 @@ import com.alttd.proxydiscordlink.DiscordLink;
import com.alttd.proxydiscordlink.minecraft.commands.SubCommand;
import com.alttd.proxydiscordlink.config.Config;
import com.alttd.proxydiscordlink.database.Database;
import com.alttd.proxydiscordlink.objects.DiscordLinkPlayer;
import com.velocitypowered.api.command.CommandSource;
import com.velocitypowered.api.proxy.Player;
import net.kyori.adventure.text.minimessage.MiniMessage;
@ -54,7 +55,9 @@ public class Unlink implements SubCommand {
return;
}
database.removeLinkedAccount(player);
database.removeLinkedAccount(DiscordLinkPlayer.getDiscordLinkPlayer(player.getUniqueId()));
//TODO remove all discord synced roles from minecraft
//TODO remove all minecraft synced roles from discord
player.sendMessage(miniMessage.parse(Config.UNLINKED_ACCOUNTS));
}

View File

@ -1,57 +0,0 @@
package com.alttd.proxydiscordlink.minecraft.listeners;
import com.alttd.proxydiscordlink.database.Database;
import com.alttd.proxydiscordlink.DiscordLink;
import com.alttd.proxydiscordlink.objects.DiscordLinkPlayer;
import com.alttd.proxydiscordlink.util.ALogger;
import com.alttd.proxydiscordlink.util.Utilities;
import com.velocitypowered.api.event.PostOrder;
import com.velocitypowered.api.event.Subscribe;
import com.velocitypowered.api.event.connection.LoginEvent;
import com.velocitypowered.api.proxy.Player;
import net.luckperms.api.LuckPerms;
import net.luckperms.api.model.group.Group;
import net.luckperms.api.model.user.User;
import net.luckperms.api.node.Node;
import net.luckperms.api.node.types.InheritanceNode;
public class PlayerJoin {
@Subscribe(order = PostOrder.LATE)
public void playerLogin(LoginEvent event) {
Player player = event.getPlayer();
Database database = DiscordLink.getPlugin().getDatabase();
if (database.playerIsLinked(player) && DiscordLinkPlayer.getDiscordLinkPlayer(event.getPlayer().getUniqueId()) == null) {
//TODO remove islinked?
//TODO I don't think all the below is needed anymore?
// database.syncPlayerData(player);
//
// boolean isNitro = database.hasDiscordNitro(player);
// boolean hasNitro = Utilities.hasMinecraftNitro(player);
//
// LuckPerms luckPermsAPI = Utilities.getLuckPerms();
// Group discord = luckPermsAPI.getGroupManager().getGroup("discord");
//
// if (discord == null) {
// ALogger.error("Unable to find discord group in DiscordLink");
// return;
// }
//
// if (isNitro && !hasNitro) {
// luckPermsAPI.getUserManager().modifyUser(player.getUniqueId(), (User user) -> {
// Node node = InheritanceNode.builder(discord).build();
// user.data().add(node);
// });
//
// } else if (!isNitro && hasNitro) {
// luckPermsAPI.getUserManager().modifyUser(player.getUniqueId(), (User user) -> {
// Node node = InheritanceNode.builder(discord).build();
// user.data().remove(node);
// });
// }
}
}
}

View File

@ -1,23 +1,15 @@
package com.alttd.proxydiscordlink.minecraft.listeners;
import com.alttd.proxydiscordlink.database.Database;
import com.alttd.proxydiscordlink.DiscordLink;
import com.velocitypowered.api.event.PostOrder;
import com.velocitypowered.api.event.Subscribe;
import com.velocitypowered.api.event.connection.DisconnectEvent;
import com.velocitypowered.api.proxy.Player;
public class PlayerLeave {
@Subscribe(order = PostOrder.LATE)
public void playerDisconnect(DisconnectEvent event) {
Player player = event.getPlayer();
Database database = DiscordLink.getPlugin().getDatabase();
if (database.isInCache(player)) //TODO async?
database.removePlayerFromCache(player);
DiscordLink.getPlugin().getCache().removeCachedPlayer(player.getUniqueId());
DiscordLink.getPlugin().getCache().removeCachedPlayer(event.getPlayer().getUniqueId());
}
}