[17.1k Lines] Added login logging to the account repository, and added more chat emotes
This commit is contained in:
parent
6e983ae807
commit
15e199b94b
@ -305,7 +305,7 @@ public class AccountManager extends Module {
|
||||
if (reference.get() != null)
|
||||
consumer.accept(reference.get());
|
||||
else {
|
||||
CompletableFuture.runAsync(() -> {
|
||||
Runnable fetchAccount = () -> {
|
||||
try {
|
||||
reference.set(repository.login(uuid, name, ""));
|
||||
if (reference.get() != null)
|
||||
@ -314,7 +314,15 @@ public class AccountManager extends Module {
|
||||
ex.printStackTrace();
|
||||
}
|
||||
consumer.accept(reference.get());
|
||||
});
|
||||
};
|
||||
// If the method is being executed on the primary thread, we wanna execute it asynchronously instead
|
||||
if (Bukkit.isPrimaryThread())
|
||||
CompletableFuture.runAsync(fetchAccount);
|
||||
else {
|
||||
// If the method is being executed off of the primary thread, we wanna execute it normally to stay
|
||||
// on that thread
|
||||
fetchAccount.run();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1,6 +1,7 @@
|
||||
package zone.themcgamer.core.account;
|
||||
|
||||
import com.zaxxer.hikari.HikariDataSource;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.bukkit.Bukkit;
|
||||
import zone.themcgamer.common.HashUtils;
|
||||
import zone.themcgamer.core.account.event.AccountPreLoadEvent;
|
||||
@ -27,6 +28,7 @@ import java.util.stream.Collectors;
|
||||
/**
|
||||
* @author Braydon
|
||||
*/
|
||||
@Slf4j(topic = "Account Repository")
|
||||
public class AccountRepository extends MySQLRepository {
|
||||
private static final String SELECT_ACCOUNT = "SELECT * FROM `accounts` WHERE `uuid` = ? LIMIT 1";
|
||||
private static final String INSERT_ACCOUNT = "INSERT INTO `accounts` " +
|
||||
@ -49,6 +51,7 @@ public class AccountRepository extends MySQLRepository {
|
||||
if (uuid == null || (name == null || name.trim().isEmpty()))
|
||||
return null;
|
||||
boolean offlineLookup = ipAddress.trim().isEmpty();
|
||||
log.info("Logging in client " + name + " (" + uuid.toString() + ")" + (offlineLookup ? " - OFFLINE LOOKUP" : ""));
|
||||
String encryptedIpAddress = offlineLookup ? "" : HashUtils.encryptSha256(ipAddress);
|
||||
int accountId = -1;
|
||||
boolean loadedFromCache = false;
|
||||
@ -62,6 +65,7 @@ public class AccountRepository extends MySQLRepository {
|
||||
}
|
||||
accountId = cache.getAccountId();
|
||||
loadedFromCache = true;
|
||||
log.info("Account id for " + name + " loaded from cache: " + accountId);
|
||||
}
|
||||
}
|
||||
Account account = null;
|
||||
@ -77,8 +81,11 @@ public class AccountRepository extends MySQLRepository {
|
||||
String query = "";
|
||||
|
||||
if (resultSet.next()) { // If the account exists in the database, we wanna load its values
|
||||
if (accountId <= 0) // If the account id has not been loaded from the cache, we wanna fetch it from the database
|
||||
// If the account id has not been loaded from the cache, we wanna fetch it from the database
|
||||
if (accountId <= 0) {
|
||||
accountId = resultSet.getInt(1);
|
||||
log.info("Account id for " + name + " loaded from MySQL: " + accountId);
|
||||
}
|
||||
account = constructAccount(accountId, uuid, name, resultSet, ipAddress, encryptedIpAddress, offlineLookup ? -1L : now);
|
||||
|
||||
// If the account exists in the database and we're not doing an offline account lookup, we wanna update
|
||||
@ -106,11 +113,14 @@ public class AccountRepository extends MySQLRepository {
|
||||
}
|
||||
});
|
||||
accountId = idArray[0];
|
||||
log.info("Successfully inserted a new account for " + name + ", their account id is " + accountId);
|
||||
}
|
||||
Bukkit.getPluginManager().callEvent(new AccountPreLoadEvent(uuid, name, ipAddress));
|
||||
int finalAccountId = accountId;
|
||||
query+= AccountManager.MINI_ACCOUNTS.parallelStream().map(miniAccount -> miniAccount.getQuery(finalAccountId, uuid, name, ipAddress, encryptedIpAddress)).collect(Collectors.joining());
|
||||
if (!query.trim().isEmpty()) {
|
||||
log.info("Executing mini account tasks (" + AccountManager.MINI_ACCOUNTS.size() + ") for " + name);
|
||||
|
||||
statement.execute(query);
|
||||
statement.getUpdateCount();
|
||||
statement.getMoreResults();
|
||||
@ -145,8 +155,10 @@ public class AccountRepository extends MySQLRepository {
|
||||
now
|
||||
);
|
||||
}
|
||||
if (!loadedFromCache && cacheRepository != null)
|
||||
if (!loadedFromCache && cacheRepository != null) {
|
||||
cacheRepository.post(new PlayerCache(uuid, name, accountId));
|
||||
log.info("Stored new cache object for " + name + " in Redis");
|
||||
}
|
||||
return account;
|
||||
}
|
||||
|
||||
|
@ -1,5 +1,6 @@
|
||||
package zone.themcgamer.core.chat;
|
||||
|
||||
import lombok.Getter;
|
||||
import net.md_5.bungee.api.ChatColor;
|
||||
import net.md_5.bungee.api.chat.BaseComponent;
|
||||
import net.md_5.bungee.api.chat.ComponentBuilder;
|
||||
@ -16,6 +17,7 @@ import zone.themcgamer.core.badSportSystem.BadSportSystem;
|
||||
import zone.themcgamer.core.badSportSystem.Punishment;
|
||||
import zone.themcgamer.core.badSportSystem.PunishmentCategory;
|
||||
import zone.themcgamer.core.chat.command.ClearChatCommand;
|
||||
import zone.themcgamer.core.chat.command.EmotesCommand;
|
||||
import zone.themcgamer.core.chat.command.message.MessageCommand;
|
||||
import zone.themcgamer.core.chat.command.message.ReplyCommand;
|
||||
import zone.themcgamer.core.chat.component.IChatComponent;
|
||||
@ -35,12 +37,22 @@ import java.util.concurrent.TimeUnit;
|
||||
public class ChatManager extends Module {
|
||||
private final BadSportSystem badSportSystem;
|
||||
private final IChatComponent[] chatComponents;
|
||||
private final Map<String, String> emotes = new HashMap<>();
|
||||
@Getter private final Map<String, String> emotes = new HashMap<>();
|
||||
|
||||
{
|
||||
emotes.put("shrug", "¯\\_(ツ)_/¯");
|
||||
emotes.put("tableflip", "(╯°□°)╯︵ ┻━┻");
|
||||
emotes.put("unflip", "┬─┬ ノ( ゜-゜ノ)");
|
||||
emotes.put("¯\\_(ツ)_/¯", ":shrug:");
|
||||
emotes.put("⊂(´・◡・⊂ )∘˚˳°", ":happyghost:");
|
||||
emotes.put("ヽ༼ຈل͜ຈ༽ノ", ":donger:");
|
||||
emotes.put("ಠ_ಠ", ":disapproval:");
|
||||
emotes.put("(≖_≖)", ":squint:");
|
||||
emotes.put("(౮⦦ʖ౮)", ":lenny:");
|
||||
emotes.put("┬─┬ ノ( ゜-゜ノ)", ":unflip:");
|
||||
emotes.put("(☞゚ヮ゚)☞", ":same:");
|
||||
emotes.put("ლ(ಥ Д ಥ )ლ", ":why:");
|
||||
emotes.put("(╯°□°)╯︵ ┻━┻", ":tableflip:");
|
||||
emotes.put("⊂(•̀_•́⊂ )∘˚˳°", ":angryghost:");
|
||||
emotes.put("( ˘ ³˘)♥", ":kiss:");
|
||||
emotes.put("༼ つ ◕_◕ ༽つ", ":ameno:");
|
||||
}
|
||||
|
||||
public ChatManager(JavaPlugin plugin, AccountManager accountManager, BadSportSystem badSportSystem, IChatComponent[] chatComponents) {
|
||||
@ -50,15 +62,7 @@ public class ChatManager extends Module {
|
||||
registerCommand(new ClearChatCommand());
|
||||
registerCommand(new MessageCommand(accountManager, badSportSystem));
|
||||
registerCommand(new ReplyCommand(accountManager, badSportSystem));
|
||||
|
||||
/* TODO
|
||||
/chatmanager blackwords add <word>
|
||||
/chatmanager blackwords remove <word>
|
||||
/chatmanager emote add <unicode>
|
||||
/chatmanager emote remove <unicode>
|
||||
/chatmanager urls add <url>
|
||||
/chatmanager remove <url>
|
||||
*/
|
||||
registerCommand(new EmotesCommand(this));
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
@ -91,13 +95,13 @@ public class ChatManager extends Module {
|
||||
return;
|
||||
}
|
||||
if (!CooldownHandler.canUse(player, "Chat", TimeUnit.SECONDS.toMillis(3L), false)
|
||||
&& !optionalAccount.get().hasRank(Rank.GAMER)) {
|
||||
player.sendMessage(Style.error("Chat", "You are chatting too quickly! To bypass this cooldown," +
|
||||
" please consider purchasing a donator rank over at §bstore.mcgamerzone.net§7."));
|
||||
return;
|
||||
&& !optionalAccount.get().hasRank(Rank.GAMER) && !optionalAccount.get().hasRank(Rank.HELPER)) {
|
||||
player.sendMessage(Style.error("Chat", "You are chatting too quickly! To bypass this cooldown," +
|
||||
" please consider purchasing a donator rank over at §bstore.mcgamerzone.net§7."));
|
||||
return;
|
||||
}
|
||||
for (Map.Entry<String, String> emote : emotes.entrySet())
|
||||
message = message.replace(":" + emote.getKey() + ":", emote.getValue());
|
||||
message = message.replace(emote.getValue(), emote.getKey());
|
||||
List<BaseComponent> components = new ArrayList<>();
|
||||
for (IChatComponent chatComponent : chatComponents) {
|
||||
BaseComponent component = chatComponent.getComponent(player);
|
||||
|
@ -11,9 +11,10 @@ public class ClearChatCommand {
|
||||
@Command(name = "clearchat", aliases = { "cc" }, description = "Clear the chat", ranks = { Rank.HELPER }, playersOnly = true)
|
||||
public void onCommand(CommandProvider command) {
|
||||
for (Player onlinePlayer : Bukkit.getOnlinePlayers()) {
|
||||
for (int i = 0; i < 150; i++)
|
||||
for (int i = 0; i < 150; i++) {
|
||||
onlinePlayer.sendMessage(" ");
|
||||
onlinePlayer.sendMessage(Style.main("Chat", "The chat has been cleared by &6" + command.getPlayer().getName()));
|
||||
}
|
||||
}
|
||||
Bukkit.broadcastMessage(Style.main("Chat", "The chat has been cleared by &6" + command.getPlayer().getName()));
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,26 @@
|
||||
package zone.themcgamer.core.chat.command;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import org.bukkit.entity.Player;
|
||||
import zone.themcgamer.core.chat.ChatManager;
|
||||
import zone.themcgamer.core.command.Command;
|
||||
import zone.themcgamer.core.command.CommandProvider;
|
||||
import zone.themcgamer.core.common.Style;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author Braydon
|
||||
*/
|
||||
@AllArgsConstructor
|
||||
public class EmotesCommand {
|
||||
private final ChatManager chatManager;
|
||||
|
||||
@Command(name = "emotes", aliases = { "emote" }, description = "View chat emotes", playersOnly = true)
|
||||
public void onCommand(CommandProvider command) {
|
||||
Player player = command.getPlayer();
|
||||
player.sendMessage(Style.main("Chat", "Chat Emotes:"));
|
||||
for (Map.Entry<String, String> entry : chatManager.getEmotes().entrySet())
|
||||
player.sendMessage(" §6" + entry.getValue() + " §7-> §b" + entry.getKey());
|
||||
}
|
||||
}
|
@ -36,12 +36,15 @@ public class KitManager extends MiniAccount<KitClient> {
|
||||
if (client.isEmpty())
|
||||
return;
|
||||
while (resultSet.next()) {
|
||||
MGZGame game = EnumUtils.fromString(MGZGame.class, resultSet.getString("game"));
|
||||
int gameColumnIndex = resultSet.findColumn("game");
|
||||
if (gameColumnIndex == -1)
|
||||
continue;
|
||||
MGZGame game = EnumUtils.fromString(MGZGame.class, resultSet.getString(gameColumnIndex));
|
||||
if (game == null)
|
||||
return;
|
||||
continue;
|
||||
KitDisplay kitDisplay = game.getKitDisplay(resultSet.getString("kit"));
|
||||
if (kitDisplay == null)
|
||||
return;
|
||||
continue;
|
||||
client.get().getSelectedKit().put(game, kitDisplay);
|
||||
}
|
||||
}
|
||||
|
@ -24,7 +24,7 @@ public class ServerCommand {
|
||||
private final ServerTraveler traveler;
|
||||
private final MinecraftServerRepository minecraftServerRepository;
|
||||
|
||||
@Command(name = "server", aliases = { "join", "play" }, description = "Join a server", playersOnly = true)
|
||||
@Command(name = "server", aliases = { "sv", "join", "play" }, description = "Join a server", playersOnly = true)
|
||||
public void onCommand(CommandProvider command) {
|
||||
Player player = command.getPlayer();
|
||||
String[] args = command.getArgs();
|
||||
|
@ -11,7 +11,6 @@ import zone.themcgamer.core.chat.component.impl.BasicRankComponent;
|
||||
import zone.themcgamer.core.common.MathUtils;
|
||||
import zone.themcgamer.core.common.scoreboard.ScoreboardHandler;
|
||||
import zone.themcgamer.core.deliveryMan.DeliveryManManager;
|
||||
import zone.themcgamer.core.game.kit.KitManager;
|
||||
import zone.themcgamer.core.kingdom.KingdomManager;
|
||||
import zone.themcgamer.core.plugin.MGZPlugin;
|
||||
import zone.themcgamer.core.plugin.Startup;
|
||||
@ -44,7 +43,7 @@ public class Hub extends MGZPlugin {
|
||||
spawn.setYaw(MathUtils.getFacingYaw(spawn, world.getDataPoints("LOOK_AT")));
|
||||
else spawn = new Location(world.getWorld(), 0, 150, 0);
|
||||
|
||||
AccountManager.addMiniAccount(new KitManager(this));
|
||||
//AccountManager.addMiniAccount(new KitManager(this));
|
||||
|
||||
new PlayerListener(this);
|
||||
new WorldListener(this);
|
||||
|
Reference in New Issue
Block a user