Removed code that synced through database instead of directly
This commit is contained in:
parent
420d044153
commit
3d950f5fee
|
|
@ -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();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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));
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
// });
|
||||
// }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -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());
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user