diff --git a/pom.xml b/pom.xml index fff9f6c..b72260d 100644 --- a/pom.xml +++ b/pom.xml @@ -41,8 +41,10 @@ *:* META-INF/*.MF - META-INF/*.md - META-INF + META-INF/*.MD + META-INF/*.SF + META-INF/*.DSA + META-INF/*.RSA sqlite-jdbc.properties diff --git a/src/main/java/net/tylermurphy/hideAndSeek/command/Top.java b/src/main/java/net/tylermurphy/hideAndSeek/command/Top.java index caa751b..9b55c9f 100644 --- a/src/main/java/net/tylermurphy/hideAndSeek/command/Top.java +++ b/src/main/java/net/tylermurphy/hideAndSeek/command/Top.java @@ -22,6 +22,7 @@ package net.tylermurphy.hideAndSeek.command; import net.tylermurphy.hideAndSeek.Main; import net.tylermurphy.hideAndSeek.database.util.PlayerInfo; import org.bukkit.ChatColor; +import org.bukkit.OfflinePlayer; import org.bukkit.entity.Player; import java.util.List; @@ -54,7 +55,13 @@ public class Top implements ICommand { return; } for(PlayerInfo info : infos) { - String name = Main.getInstance().getServer().getOfflinePlayer(info.getUniqueId()).getName(); + 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(); + } 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 8a0b6dc..491c9a4 100644 --- a/src/main/java/net/tylermurphy/hideAndSeek/command/Wins.java +++ b/src/main/java/net/tylermurphy/hideAndSeek/command/Wins.java @@ -37,23 +37,21 @@ public class Wins implements ICommand { UUID uuid; String name; if (args.length == 0) { - Player player = Main.getInstance().getServer().getPlayer(sender.getName()); - if (player == null) { - sender.sendMessage(errorPrefix + message("START_INVALID_NAME").addPlayer(sender.getName())); - return; - } - uuid = player.getUniqueId(); + uuid = sender.getUniqueId(); name = sender.getName(); } else { - try { - name = args[0]; + 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(); - } catch (Exception e) { - sender.sendMessage(errorPrefix + message("START_INVALID_NAME").addPlayer(args[0])); - return; } } + if(uuid == null){ + sender.sendMessage(errorPrefix + message("START_INVALID_NAME").addPlayer(args[0])); + return; + } PlayerInfo info = Main.getInstance().getDatabase().getGameData().getInfo(uuid); if (info == null) { sender.sendMessage(errorPrefix + message("NO_GAME_INFO")); diff --git a/src/main/java/net/tylermurphy/hideAndSeek/configuration/Config.java b/src/main/java/net/tylermurphy/hideAndSeek/configuration/Config.java index 03d7504..4aeac68 100644 --- a/src/main/java/net/tylermurphy/hideAndSeek/configuration/Config.java +++ b/src/main/java/net/tylermurphy/hideAndSeek/configuration/Config.java @@ -55,7 +55,13 @@ public class Config { locale, leaveServer, placeholderError, - placeholderNoData; + placeholderNoData, + databaseType, + databaseHost, + databasePort, + databaseUser, + databasePass, + databaseName; public static Vector spawnPosition, @@ -71,6 +77,7 @@ public class Config { tauntEnabled, tauntCountdown, tauntLast, + alwaysGlow, glowEnabled, glowStackable, pvpEnabled, @@ -218,9 +225,10 @@ public class Config { tauntLast = config.getBoolean("taunt.whenLastPerson"); //Glow + alwaysGlow = config.getBoolean("alwaysGlow") && Main.getInstance().supports(9); glowLength = Math.max(1, config.getInt("glow.time")); glowStackable = config.getBoolean("glow.stackable"); - glowEnabled = config.getBoolean("glow.enabled") && Main.getInstance().supports(9); + glowEnabled = config.getBoolean("glow.enabled") && Main.getInstance().supports(9) && !alwaysGlow; if (glowEnabled) { glowPowerupItem = createItemStack("glow"); } @@ -314,6 +322,19 @@ public class Config { teleportItem = createItemStack("spectatorItems.teleport"); teleportItemPosition = config.getInt("spectatorItems.teleport.position"); + + //Database + databaseHost = config.getString("databaseHost"); + databasePort = config.getString("databasePort"); + databaseUser = config.getString("databaseUser"); + databasePass = config.getString("databasePass"); + databaseName = config.getString("databaseName"); + + databaseType = config.getString("databaseType").toUpperCase(); + if(!databaseType.equals("SQLITE") && !databaseType.equals("MYSQL")){ + Main.getInstance().getLogger().warning("databaseType: "+databaseType+" is not a valid configuration option!"); + databaseType = "SQLITE"; + } } public static void addToConfig(String path, Object value) { diff --git a/src/main/java/net/tylermurphy/hideAndSeek/configuration/ConfigManager.java b/src/main/java/net/tylermurphy/hideAndSeek/configuration/ConfigManager.java index f02eaba..381a41c 100644 --- a/src/main/java/net/tylermurphy/hideAndSeek/configuration/ConfigManager.java +++ b/src/main/java/net/tylermurphy/hideAndSeek/configuration/ConfigManager.java @@ -205,6 +205,10 @@ public class ConfigManager { } } + public ConfigurationSection getDefaultConfigurationSection(String path) { + return defaultConfig.getConfigurationSection(path); + } + public void set(String path, Object value) { config.set(path, value); } diff --git a/src/main/java/net/tylermurphy/hideAndSeek/configuration/Localization.java b/src/main/java/net/tylermurphy/hideAndSeek/configuration/Localization.java index be60b61..9418414 100644 --- a/src/main/java/net/tylermurphy/hideAndSeek/configuration/Localization.java +++ b/src/main/java/net/tylermurphy/hideAndSeek/configuration/Localization.java @@ -28,6 +28,7 @@ import java.util.Map; public class Localization { public static final Map LOCAL = new HashMap<>(); + public static final Map DEFAULT_LOCAL = new HashMap<>(); private static final Map CHANGES = new HashMap() {{ put("en-US", new String[][]{{"WORLDBORDER_DECREASING"},{"START","TAUNTED"}}); @@ -61,17 +62,28 @@ public class Localization { for(String key : manager.getConfigurationSection("Localization").getKeys(false)) { LOCAL.put( - key, + key, new LocalizationString( ChatColor.translateAlternateColorCodes('&', manager.getString("Localization."+key) ) ) - ); + ); + } + + for(String key : manager.getDefaultConfigurationSection("Localization").getKeys(false)) { + DEFAULT_LOCAL.put( + key, + new LocalizationString( ChatColor.translateAlternateColorCodes('&', manager.getString("Localization."+key) ) ) + ); } } public static LocalizationString message(String key) { - LocalizationString temp = LOCAL.get(key); - if (temp == null) { - return new LocalizationString(ChatColor.RED + "" + ChatColor.ITALIC + key + " is not found in localization.yml. This is a plugin issue, please report it."); + LocalizationString message = LOCAL.get(key); + if (message == null) { + LocalizationString defaultMessage = DEFAULT_LOCAL.get(key); + if(defaultMessage == null) { + return new LocalizationString(ChatColor.RED + "" + ChatColor.ITALIC + key + " is not found in localization.yml. This is a plugin issue, please report it."); + } + return new LocalizationString(defaultMessage.toString()); } - return new LocalizationString(temp.toString()); + return new LocalizationString(message.toString()); } } diff --git a/src/main/java/net/tylermurphy/hideAndSeek/database/Database.java b/src/main/java/net/tylermurphy/hideAndSeek/database/Database.java index 0eceb98..0489b5d 100644 --- a/src/main/java/net/tylermurphy/hideAndSeek/database/Database.java +++ b/src/main/java/net/tylermurphy/hideAndSeek/database/Database.java @@ -22,6 +22,7 @@ package net.tylermurphy.hideAndSeek.database; import com.google.common.io.ByteStreams; import net.tylermurphy.hideAndSeek.Main; import net.tylermurphy.hideAndSeek.database.connections.DatabaseConnection; +import net.tylermurphy.hideAndSeek.database.connections.MySQLConnection; import net.tylermurphy.hideAndSeek.database.connections.SQLiteConnection; import java.io.ByteArrayInputStream; @@ -32,6 +33,8 @@ import java.sql.Connection; import java.sql.SQLException; import java.util.UUID; +import static net.tylermurphy.hideAndSeek.configuration.Config.databaseType; + public class Database { private final GameDataTable playerInfo; @@ -40,7 +43,11 @@ public class Database { public Database(){ - connection = new SQLiteConnection(); + if(databaseType.equals("SQLITE")) { + connection = new SQLiteConnection(); + } else { + connection = new MySQLConnection(); + } playerInfo = new GameDataTable(this); diff --git a/src/main/java/net/tylermurphy/hideAndSeek/database/connections/MySQLConnection.java b/src/main/java/net/tylermurphy/hideAndSeek/database/connections/MySQLConnection.java index c29d1b3..b7c1b1d 100644 --- a/src/main/java/net/tylermurphy/hideAndSeek/database/connections/MySQLConnection.java +++ b/src/main/java/net/tylermurphy/hideAndSeek/database/connections/MySQLConnection.java @@ -25,26 +25,22 @@ import com.zaxxer.hikari.HikariDataSource; import java.sql.Connection; import java.sql.SQLException; +import static net.tylermurphy.hideAndSeek.configuration.Config.*; + public class MySQLConnection implements DatabaseConnection { - private final HikariConfig config; private final HikariDataSource ds; public MySQLConnection(){ - String host = "to be implemented"; - String port = "to be implemented"; - String user = "to be implemented"; - String pass = "to be implemented"; + HikariConfig config = new HikariConfig(); - config = new HikariConfig(); - - config.setJdbcUrl("jdbc:mariadb://"+host+":"+port+"/kenbot"); + config.setJdbcUrl("jdbc:mariadb://"+databaseHost+":"+databasePort+"/"+databaseName); config.addDataSourceProperty("cachePrepStmts", "true"); config.addDataSourceProperty("prepStmtCacheSize", "250"); config.addDataSourceProperty("prepStmtCacheSqlLimit", "2048"); - config.addDataSourceProperty("user", user); - config.addDataSourceProperty("password",pass); + config.addDataSourceProperty("user", databaseUser); + config.addDataSourceProperty("password",databasePass); config.addDataSourceProperty("autoCommit", "true"); config.setAutoCommit(true); config.setMaximumPoolSize(20); diff --git a/src/main/java/net/tylermurphy/hideAndSeek/game/Board.java b/src/main/java/net/tylermurphy/hideAndSeek/game/Board.java index 04b0d37..a8e41c7 100644 --- a/src/main/java/net/tylermurphy/hideAndSeek/game/Board.java +++ b/src/main/java/net/tylermurphy/hideAndSeek/game/Board.java @@ -153,7 +153,7 @@ public class Board { } else { hider_kills.put(uuid.toString(), 1); } - } else if (getFirstSeeker().getUniqueId().equals(uuid)) { + } else if (Seeker.contains(uuid.toString())) { if (seeker_kills.containsKey(uuid.toString())) { seeker_kills.put(uuid.toString(), seeker_kills.get(uuid.toString())+1); } else { @@ -169,7 +169,7 @@ public class Board { } else { hider_deaths.put(uuid.toString(), 1); } - } else if (getFirstSeeker().getUniqueId().equals(uuid)) { + } else if (Seeker.contains(uuid.toString())) { if (seeker_deaths.containsKey(uuid.toString())) { seeker_deaths.put(uuid.toString(), seeker_deaths.get(uuid.toString())+1); } else { @@ -234,7 +234,7 @@ public class Board { private void createGameBoard(Player player, boolean recreate) { CustomBoard board = customBoards.get(player.getUniqueId().toString()); - if (recreate) { + if (recreate || board == null) { board = new CustomBoard(player, GAME_TITLE); board.updateTeams(); } diff --git a/src/main/java/net/tylermurphy/hideAndSeek/game/Game.java b/src/main/java/net/tylermurphy/hideAndSeek/game/Game.java index c261b52..cb3ad1f 100644 --- a/src/main/java/net/tylermurphy/hideAndSeek/game/Game.java +++ b/src/main/java/net/tylermurphy/hideAndSeek/game/Game.java @@ -242,12 +242,14 @@ public class Game { private void whileStarting() { if(gameTick % 20 == 0) { - if (startingTimer % 5 == 0 || startingTimer < 4) { + if (startingTimer % 5 == 0 || startingTimer < 5) { String message; if (startingTimer == 0) { message = message("START").toString(); status = Status.PLAYING; board.getPlayers().forEach(player -> PlayerLoader.resetPlayer(player, board)); + } else if (startingTimer == 1){ + message = message("START_COUNTDOWN_LAST").addAmount(startingTimer).toString(); } else { message = message("START_COUNTDOWN").addAmount(startingTimer).toString(); } @@ -305,7 +307,7 @@ public class Game { } if (worldBorderEnabled) worldBorder.update(); if (tauntEnabled) taunt.update(); - if (glowEnabled) glow.update(); + if (glowEnabled || alwaysGlow) glow.update(); } board.getSpectators().forEach(spectator -> spectator.setFlying(spectator.getAllowFlight())); checkWinConditions(); diff --git a/src/main/java/net/tylermurphy/hideAndSeek/game/events/Glow.java b/src/main/java/net/tylermurphy/hideAndSeek/game/events/Glow.java index a1d7295..8631ef5 100644 --- a/src/main/java/net/tylermurphy/hideAndSeek/game/events/Glow.java +++ b/src/main/java/net/tylermurphy/hideAndSeek/game/events/Glow.java @@ -10,8 +10,7 @@ import org.bukkit.entity.Player; import java.lang.reflect.InvocationTargetException; -import static net.tylermurphy.hideAndSeek.configuration.Config.glowLength; -import static net.tylermurphy.hideAndSeek.configuration.Config.glowStackable; +import static net.tylermurphy.hideAndSeek.configuration.Config.*; public class Glow { @@ -37,6 +36,10 @@ public class Glow { } public void update() { + if(alwaysGlow){ + sendPackets(); + return; + } if (running) { sendPackets(); glowTime--; diff --git a/src/main/java/net/tylermurphy/hideAndSeek/game/listener/DamageHandler.java b/src/main/java/net/tylermurphy/hideAndSeek/game/listener/DamageHandler.java index 701f446..3b90d39 100644 --- a/src/main/java/net/tylermurphy/hideAndSeek/game/listener/DamageHandler.java +++ b/src/main/java/net/tylermurphy/hideAndSeek/game/listener/DamageHandler.java @@ -96,21 +96,18 @@ public class DamageHandler implements Listener { // Broadcast player death message if (board.isSeeker(player)) { game.broadcastMessage(message("GAME_PLAYER_DEATH").addPlayer(player).toString()); - if (board.getFirstSeeker().getName().equals(player.getName())) { - board.addDeath(player.getUniqueId()); - } } else if (board.isHider(player)) { if (attacker == null) { game.broadcastMessage(message("GAME_PLAYER_FOUND").addPlayer(player).toString()); } else { game.broadcastMessage(message("GAME_PLAYER_FOUND_BY").addPlayer(player).addPlayer(attacker).toString()); } - board.addDeath(player.getUniqueId()); board.addSeeker(player); } - // Add leaderboard kills if attacker - if (attacker != null && ( board.isHider(attacker) || board.getFirstSeeker().getName().equals(attacker.getName()) ) ) - board.addKill(attacker.getUniqueId()); + // Add leaderboard stats + board.addDeath(player.getUniqueId()); + if (attacker != null) board.addKill(attacker.getUniqueId()); + //Reload player PlayerLoader.resetPlayer(player, board); board.reloadBoardTeams(); } diff --git a/src/main/java/net/tylermurphy/hideAndSeek/game/listener/JoinLeaveHandler.java b/src/main/java/net/tylermurphy/hideAndSeek/game/listener/JoinLeaveHandler.java index 094ff68..7ac4f85 100644 --- a/src/main/java/net/tylermurphy/hideAndSeek/game/listener/JoinLeaveHandler.java +++ b/src/main/java/net/tylermurphy/hideAndSeek/game/listener/JoinLeaveHandler.java @@ -23,8 +23,8 @@ public class JoinLeaveHandler implements Listener { @EventHandler(priority = EventPriority.HIGHEST) public void onPlayerJoin(PlayerJoinEvent event) { - if(!Main.getInstance().getDatabase().getNameData().update(event.getPlayer().getUniqueId(), event.getPlayer().getDisplayName())){ - Main.getInstance().getLogger().warning("Failed to save name data for user: " + event.getPlayer().getDisplayName()); + if(!Main.getInstance().getDatabase().getNameData().update(event.getPlayer().getUniqueId(), event.getPlayer().getName())){ + Main.getInstance().getLogger().warning("Failed to save name data for user: " + event.getPlayer().getName()); } Main.getInstance().getBoard().remove(event.getPlayer()); removeItems(event.getPlayer()); diff --git a/src/main/java/net/tylermurphy/hideAndSeek/util/PAPIExpansion.java b/src/main/java/net/tylermurphy/hideAndSeek/util/PAPIExpansion.java index 72d1f4d..7823fe9 100644 --- a/src/main/java/net/tylermurphy/hideAndSeek/util/PAPIExpansion.java +++ b/src/main/java/net/tylermurphy/hideAndSeek/util/PAPIExpansion.java @@ -39,15 +39,17 @@ public class PAPIExpansion extends PlaceholderExpansion { Database database = Main.getInstance().getDatabase(); String[] args = params.split("_"); if (args.length < 1) return null; - if (args[0].equals("stats") && args.length == 2) { - PlayerInfo info = database.getGameData().getInfo(player.getUniqueId()); + if (args[0].equals("stats") && (args.length == 2 || args.length == 3)) { + PlayerInfo info = null; + if(args.length == 2) { + database.getGameData().getInfo(player.getUniqueId()); + } else { + UUID uuid; + try { uuid = Main.getInstance().getServer().getOfflinePlayer(args[2]).getUniqueId(); } catch (Exception e) { return placeholderError; } + info = database.getGameData().getInfo(uuid); + } if (info == null) return placeholderNoData; return getValue(info, args[1]); - } else if (args[0].equals("stats") && args.length == 3) { - UUID uuid; - try { uuid = Main.getInstance().getServer().getOfflinePlayer(args[2]).getUniqueId(); } catch (Exception e) { return placeholderError; } - PlayerInfo info = database.getGameData().getInfo(uuid); - return getValue(info, args[1]); } else if ((args[0].equals("rank-score") || args[0].equals("rank-name") ) && args.length == 3) { int place; try { place = Integer.parseInt(args[2]); } catch (NumberFormatException e) { return placeholderError; } @@ -60,24 +62,21 @@ public class PAPIExpansion extends PlaceholderExpansion { } else { return Main.getInstance().getServer().getOfflinePlayer(info.getUniqueId()).getName(); } - } else if (args[0].equals("rank-place") && args.length == 2) { + } else if (args[0].equals("rank-place") && (args.length == 2 || args.length == 3)) { if (getRanking(args[1]) == null) { return placeholderError; } - PlayerInfo info = database.getGameData().getInfo(player.getUniqueId()); + PlayerInfo info = null; + if(args.length == 2){ + database.getGameData().getInfo(player.getUniqueId()); + } else { + UUID uuid; + try { uuid = Main.getInstance().getServer().getOfflinePlayer(args[2]).getUniqueId(); } catch (Exception e) { return placeholderError; } + info = database.getGameData().getInfo(uuid); + } if (info == null) return placeholderNoData; if (getValue(info, args[1]).equals("0")) { return "-"; } Integer count = database.getGameData().getRanking(getRanking(args[1]), player.getUniqueId()); if (count == null) { return placeholderNoData; } return count.toString(); - } else if (args[0].equals("rank-place") && args.length == 3) { - UUID uuid; - try { uuid = Main.getInstance().getServer().getOfflinePlayer(args[2]).getUniqueId(); } catch (Exception e) { return placeholderError; } - if (getRanking(args[1]) == null) { return placeholderError; } - PlayerInfo info = database.getGameData().getInfo(player.getUniqueId()); - if (info == null) return placeholderNoData; - if (getValue(info, args[1]).equals("0")) { return "-"; } - Integer count = database.getGameData().getRanking(getRanking(args[1]), uuid); - if (count == null) { return placeholderNoData; } - return count.toString(); } return null; } diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 2d76b4a..6153c46 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -94,6 +94,26 @@ leaveServer: hub # default: true mapSaveEnabled: true +# How you want to store game data. If you are running a single server, sqlite is fine, as no setup is necessary. +# But if you want the data to go across multiple servers, you can switch it to mysql. +# WARNING: Data is not saved across databases. You have to migrate the data yourself! +# +# SQLITE - A single database.db file in the plugin folder, good for a single server. +# +# MYSQL - Uses a mysql server to store data, good for multi-server setups or large servers. +# +# default: SQLITE +databaseType: SQLITE + +# The following settings are used for MYSQL databases ONLY. If you are running SQLITE, these +# will be ignored. If you are running MYSQL, you need to provide the database host url, database +# host port (usually 3306), database username, and database password. +databaseHost: localhost +databasePort: 3306 +databaseUser: root +databasePass: +databaseName: hideandseek + # The world border closes every interval, which is evey [delay] in minutes. # Thw world border starts at [size], and decreases 100 blocks every interval. # x & z are the center location. [enabled] is whenever the border is enabled. @@ -132,6 +152,14 @@ glow: material: SNOWBALL model-data: 0 +# This has the same glow effect as the glow powerup in that all seekers positions get +# shown to hiders. But enabling this force disables the powerup, and instead always shows +# the seekers positions to the hiders. Good for small maps. Since the glow effect wasn't added +# until Minecraft 1.9, any server running 1.8 will have this disabled regardless of the +# options below. +# default: false +alwaysGlow: false + # The message prefixes displayed before messages. The message contents themselves # can be changed in localization.yml. prefix: diff --git a/src/main/resources/lang/localization_de-DE.yml b/src/main/resources/lang/localization_de-DE.yml index 84ada18..a1a6eea 100644 --- a/src/main/resources/lang/localization_de-DE.yml +++ b/src/main/resources/lang/localization_de-DE.yml @@ -56,6 +56,7 @@ Localization: START_MIN_PLAYERS: "Um das Spiel zu starten benötigst du mindestens {AMOUNT} Spieler." START_INVALID_NAME: "Ungültiger Spieler: {PLAYER}." START_COUNTDOWN: "Die Hider haben {AMOUNT} Sekunden Zeit sich zu verstecken!" + START_COUNTDOWN_LAST: "Die Hider haben {AMOUNT} Sekunde Zeit sich zu verstecken!" START: "Los, Seeker! Es ist Zeit, die Hider zu finden." STOP: "Das Spiel wurde gestoppt." HIDER_TEAM_NAME: "&6&lHIDER" diff --git a/src/main/resources/lang/localization_en-US.yml b/src/main/resources/lang/localization_en-US.yml index 07d547b..96ccf7a 100644 --- a/src/main/resources/lang/localization_en-US.yml +++ b/src/main/resources/lang/localization_en-US.yml @@ -57,6 +57,7 @@ Localization: START_MIN_PLAYERS: "You must have at least {AMOUNT} players to start." START_INVALID_NAME: "Invalid player: {PLAYER}." START_COUNTDOWN: "Hiders have {AMOUNT} seconds to hide!" + START_COUNTDOWN_LAST: "Hiders have {AMOUNT} second to hide!" START: "Attention SEEKERS, its time to find the hiders!" STOP: "Game has been force stopped." HIDER_TEAM_NAME: "&6&lHIDER" diff --git a/src/test/java/MainTest.java b/src/test/java/MainTest.java deleted file mode 100644 index 9997e04..0000000 --- a/src/test/java/MainTest.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * 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 . - * - */ - -import be.seeseemelk.mockbukkit.MockBukkit; -import be.seeseemelk.mockbukkit.ServerMock; -import net.tylermurphy.hideAndSeek.Main; -import org.junit.After; -import org.junit.Before; - -public class MainTest { - - private ServerMock server; - private Main plugin; - - @Before - public void setUp() { - server = MockBukkit.mock(); - plugin = MockBukkit.load(Main.class); - } - - @After - public void tearDown() { - MockBukkit.unmock(); - } - -}