From b74b8136365ca2542242023fc91e370873d6eabf Mon Sep 17 00:00:00 2001 From: Tyler Murphy Date: Tue, 17 May 2022 16:36:35 -0400 Subject: working on expanding database --- .../hideAndSeek/database/NameDataTable.java | 99 ++++++++++++++++++++++ 1 file changed, 99 insertions(+) create mode 100644 src/main/java/net/tylermurphy/hideAndSeek/database/NameDataTable.java (limited to 'src/main/java/net/tylermurphy/hideAndSeek/database/NameDataTable.java') diff --git a/src/main/java/net/tylermurphy/hideAndSeek/database/NameDataTable.java b/src/main/java/net/tylermurphy/hideAndSeek/database/NameDataTable.java new file mode 100644 index 0000000..cbf410a --- /dev/null +++ b/src/main/java/net/tylermurphy/hideAndSeek/database/NameDataTable.java @@ -0,0 +1,99 @@ +/* + * This file is part of Kenshins Hide and Seek + * + * Copyright (c) 2022 Tyler Murphy. + * + * Kenshins Hide and Seek free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * he Free Software Foundation version 3. + * + * Kenshins Hide and Seek is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +package net.tylermurphy.hideAndSeek.database; + +import net.tylermurphy.hideAndSeek.Main; +import org.jetbrains.annotations.Nullable; + +import java.sql.*; +import java.util.UUID; + +public class NameDataTable { + + private final Database database; + + protected NameDataTable(Database database) { + + String sql = "CREATE TABLE IF NOT EXISTS hs_names (\n" + + " uuid BINARY(16) NOT NULL,\n" + + " name VARCHAR(48) NOT NULL,\n" + + " PRIMARY KEY (uuid,name)\n" + + ");"; + + try(Connection connection = database.connect(); Statement statement = connection.createStatement()) { + statement.executeUpdate(sql); + } catch (SQLException e) { + Main.getInstance().getLogger().severe("SQL Error: " + e.getMessage()); + e.printStackTrace(); + } + + this.database = database; + } + + @Nullable + public String getName(UUID uuid) { + String sql = "SELECT * FROM hs_names WHERE uuid = ?;"; + try(Connection connection = database.connect(); PreparedStatement statement = connection.prepareStatement(sql)) { + statement.setBytes(1, database.encodeUUID(uuid)); + ResultSet rs = statement.executeQuery(); + if (rs.next()) { + return rs.getString("name"); + } + rs.close(); + } catch (SQLException e) { + Main.getInstance().getLogger().severe("SQL Error: " + e.getMessage()); + e.printStackTrace(); + } + return null; + } + + @Nullable + public UUID getUUID(String name) { + String sql = "SELECT * FROM hs_names WHERE name = ?;"; + try(Connection connection = database.connect(); PreparedStatement statement = connection.prepareStatement(sql)) { + statement.setString(1, name); + ResultSet rs = statement.executeQuery(); + if (rs.next()) { + return database.decodeUUID(rs.getBytes("uuid")); + } + rs.close(); + } catch (SQLException e) { + Main.getInstance().getLogger().severe("SQL Error: " + e.getMessage()); + e.printStackTrace(); + } + return null; + } + + public boolean update(UUID uuid, String name){ + String sql = "INSERT OR REPLACE INTO hs_names (uuid, name) VALUES (?,?)"; + try(Connection connection = database.connect(); PreparedStatement statement = connection.prepareStatement(sql)) { + statement.setBytes(1, database.encodeUUID(uuid)); + statement.setString(2, name); + statement.execute(); + statement.close(); + return true; + } catch (SQLException e) { + Main.getInstance().getLogger().severe("SQL Error: " + e.getMessage()); + e.printStackTrace(); + return false; + } + } + +} -- cgit v1.2.3-freya From 6b4bef24c05747280c60f48063ce57b5f654ce04 Mon Sep 17 00:00:00 2001 From: Tyler Murphy Date: Thu, 19 May 2022 17:14:01 -0400 Subject: 1.5.0 Release Canidate 3 --- src/main/java/net/tylermurphy/hideAndSeek/command/Top.java | 9 ++------- src/main/java/net/tylermurphy/hideAndSeek/command/Wins.java | 6 +----- .../net/tylermurphy/hideAndSeek/database/NameDataTable.java | 13 +++++++++++++ src/main/java/net/tylermurphy/hideAndSeek/game/Game.java | 5 ++--- .../net/tylermurphy/hideAndSeek/util/PAPIExpansion.java | 4 ++-- 5 files changed, 20 insertions(+), 17 deletions(-) (limited to 'src/main/java/net/tylermurphy/hideAndSeek/database/NameDataTable.java') diff --git a/src/main/java/net/tylermurphy/hideAndSeek/command/Top.java b/src/main/java/net/tylermurphy/hideAndSeek/command/Top.java index 9b55c9f..6125a00 100644 --- a/src/main/java/net/tylermurphy/hideAndSeek/command/Top.java +++ b/src/main/java/net/tylermurphy/hideAndSeek/command/Top.java @@ -21,6 +21,7 @@ package net.tylermurphy.hideAndSeek.command; import net.tylermurphy.hideAndSeek.Main; import net.tylermurphy.hideAndSeek.database.util.PlayerInfo; +import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.OfflinePlayer; import org.bukkit.entity.Player; @@ -55,13 +56,7 @@ public class Top implements ICommand { return; } for(PlayerInfo info : infos) { - OfflinePlayer temp = Main.getInstance().getServer().getOfflinePlayer(info.getUniqueId()); - String name; - if(temp == null){ - name = Main.getInstance().getDatabase().getNameData().getName(info.getUniqueId()); - } else { - name = temp.getName(); - } + String name = Main.getInstance().getDatabase().getNameData().getName(info.getUniqueId()); ChatColor color; switch (i) { case 1: color = ChatColor.YELLOW; break; diff --git a/src/main/java/net/tylermurphy/hideAndSeek/command/Wins.java b/src/main/java/net/tylermurphy/hideAndSeek/command/Wins.java index 491c9a4..e12d2d4 100644 --- a/src/main/java/net/tylermurphy/hideAndSeek/command/Wins.java +++ b/src/main/java/net/tylermurphy/hideAndSeek/command/Wins.java @@ -42,11 +42,7 @@ public class Wins implements ICommand { } else { name = args[0]; - if(Main.getInstance().getServer().getOfflinePlayer(args[0]) == null){ - uuid = Main.getInstance().getDatabase().getNameData().getUUID(args[0]); - } else { - uuid = Main.getInstance().getServer().getOfflinePlayer(args[0]).getUniqueId(); - } + uuid = Main.getInstance().getDatabase().getNameData().getUUID(args[0]); } if(uuid == null){ sender.sendMessage(errorPrefix + message("START_INVALID_NAME").addPlayer(args[0])); diff --git a/src/main/java/net/tylermurphy/hideAndSeek/database/NameDataTable.java b/src/main/java/net/tylermurphy/hideAndSeek/database/NameDataTable.java index cbf410a..e5ac4bb 100644 --- a/src/main/java/net/tylermurphy/hideAndSeek/database/NameDataTable.java +++ b/src/main/java/net/tylermurphy/hideAndSeek/database/NameDataTable.java @@ -20,8 +20,11 @@ package net.tylermurphy.hideAndSeek.database; import net.tylermurphy.hideAndSeek.Main; +import org.bukkit.Bukkit; +import org.bukkit.OfflinePlayer; import org.jetbrains.annotations.Nullable; +import java.lang.management.BufferPoolMXBean; import java.sql.*; import java.util.UUID; @@ -61,6 +64,11 @@ public class NameDataTable { Main.getInstance().getLogger().severe("SQL Error: " + e.getMessage()); e.printStackTrace(); } + OfflinePlayer retry = Bukkit.getOfflinePlayer(uuid); + if(retry != null){ + this.update(uuid, retry.getName()); + return retry.getName(); + } return null; } @@ -78,6 +86,11 @@ public class NameDataTable { Main.getInstance().getLogger().severe("SQL Error: " + e.getMessage()); e.printStackTrace(); } + OfflinePlayer retry = Bukkit.getOfflinePlayer(name); + if(retry != null){ + this.update(retry.getUniqueId(), name); + return retry.getUniqueId(); + } return null; } diff --git a/src/main/java/net/tylermurphy/hideAndSeek/game/Game.java b/src/main/java/net/tylermurphy/hideAndSeek/game/Game.java index 34f3a46..78c5e01 100644 --- a/src/main/java/net/tylermurphy/hideAndSeek/game/Game.java +++ b/src/main/java/net/tylermurphy/hideAndSeek/game/Game.java @@ -223,7 +223,7 @@ public class Game { private void whileWaiting() { if (!lobbyCountdownEnabled) return; if (lobbyMin <= board.size()) { - if (gameTimer == -1) + if (lobbyTimer < 0) lobbyTimer = countdown; if (board.size() >= changeCountdown) lobbyTimer = Math.min(lobbyTimer, 10); @@ -240,7 +240,6 @@ public class Game { } private void whileStarting() { - if(gameTick % 20 == 0) { if (startingTimer % 5 == 0 || startingTimer < 5) { String message; @@ -259,7 +258,7 @@ public class Game { } else if (countdownDisplay == CountdownDisplay.ACTIONBAR) { ActionBar.clearActionBar(player); ActionBar.sendActionBar(player, messagePrefix + message); - } else if (countdownDisplay == CountdownDisplay.TITLE) { + } else if (countdownDisplay == CountdownDisplay.TITLE && startingTimer != 30) { Titles.clearTitle(player); Titles.sendTitle(player, 10, 40, 10, " ", message); } diff --git a/src/main/java/net/tylermurphy/hideAndSeek/util/PAPIExpansion.java b/src/main/java/net/tylermurphy/hideAndSeek/util/PAPIExpansion.java index 7823fe9..f1a1ce1 100644 --- a/src/main/java/net/tylermurphy/hideAndSeek/util/PAPIExpansion.java +++ b/src/main/java/net/tylermurphy/hideAndSeek/util/PAPIExpansion.java @@ -45,7 +45,7 @@ public class PAPIExpansion extends PlaceholderExpansion { database.getGameData().getInfo(player.getUniqueId()); } else { UUID uuid; - try { uuid = Main.getInstance().getServer().getOfflinePlayer(args[2]).getUniqueId(); } catch (Exception e) { return placeholderError; } + try { uuid = Main.getInstance().getDatabase().getNameData().getUUID(args[2]); } catch (Exception e) { return placeholderError; } info = database.getGameData().getInfo(uuid); } if (info == null) return placeholderNoData; @@ -69,7 +69,7 @@ public class PAPIExpansion extends PlaceholderExpansion { database.getGameData().getInfo(player.getUniqueId()); } else { UUID uuid; - try { uuid = Main.getInstance().getServer().getOfflinePlayer(args[2]).getUniqueId(); } catch (Exception e) { return placeholderError; } + try { uuid = Main.getInstance().getDatabase().getNameData().getUUID(args[2]); } catch (Exception e) { return placeholderError; } info = database.getGameData().getInfo(uuid); } if (info == null) return placeholderNoData; -- cgit v1.2.3-freya