summaryrefslogtreewikicommitdiff
path: root/src/main/java/net/tylermurphy/hideAndSeek/Main.java
diff options
context:
space:
mode:
authortylermurphy534 <tylermurphy534@gmail.com>2023-02-05 19:02:59 +0000
committertylermurphy534 <tylermurphy534@gmail.com>2023-02-05 19:02:59 +0000
commit8fdd3461c14a70dd69b34ba7bb44130e3f3a8ef0 (patch)
treeb82610c3a320bdcb8dd45197f7db309d7a3a7aa3 /src/main/java/net/tylermurphy/hideAndSeek/Main.java
parentUpdate 'README.md' (diff)
parent1.7.0 rc3 (diff)
downloadkenshinshideandseek-8fdd3461c14a70dd69b34ba7bb44130e3f3a8ef0.tar.gz
kenshinshideandseek-8fdd3461c14a70dd69b34ba7bb44130e3f3a8ef0.tar.bz2
kenshinshideandseek-8fdd3461c14a70dd69b34ba7bb44130e3f3a8ef0.zip
Merge pull request '1.7.0 - Multi Map Support' (#4) from dev into main
Reviewed-on: https://g.tylerm.dev/tylermurphy534/KenshinsHideAndSeek/pulls/4
Diffstat (limited to 'src/main/java/net/tylermurphy/hideAndSeek/Main.java')
-rw-r--r--src/main/java/net/tylermurphy/hideAndSeek/Main.java198
1 files changed, 152 insertions, 46 deletions
diff --git a/src/main/java/net/tylermurphy/hideAndSeek/Main.java b/src/main/java/net/tylermurphy/hideAndSeek/Main.java
index 4d8581f..36d92ee 100644
--- a/src/main/java/net/tylermurphy/hideAndSeek/Main.java
+++ b/src/main/java/net/tylermurphy/hideAndSeek/Main.java
@@ -1,49 +1,34 @@
-/*
- * This file is part of Kenshins Hide and Seek
- *
- * Copyright (c) 2021 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 <http://www.gnu.org/licenses/>.
- *
- */
-
package net.tylermurphy.hideAndSeek;
-import net.tylermurphy.hideAndSeek.configuration.Config;
-import net.tylermurphy.hideAndSeek.configuration.Items;
-import net.tylermurphy.hideAndSeek.configuration.Localization;
+import net.tylermurphy.hideAndSeek.command.*;
+import net.tylermurphy.hideAndSeek.command.map.*;
+import net.tylermurphy.hideAndSeek.command.map.blockhunt.Enabled;
+import net.tylermurphy.hideAndSeek.command.map.set.*;
+import net.tylermurphy.hideAndSeek.command.world.Create;
+import net.tylermurphy.hideAndSeek.command.world.Delete;
+import net.tylermurphy.hideAndSeek.command.world.Tp;
+import net.tylermurphy.hideAndSeek.configuration.*;
import net.tylermurphy.hideAndSeek.database.Database;
import net.tylermurphy.hideAndSeek.game.*;
-import net.tylermurphy.hideAndSeek.game.util.Status;
-import net.tylermurphy.hideAndSeek.util.CommandHandler;
+import net.tylermurphy.hideAndSeek.command.util.CommandGroup;
import net.tylermurphy.hideAndSeek.game.listener.*;
import net.tylermurphy.hideAndSeek.util.PAPIExpansion;
-import net.tylermurphy.hideAndSeek.util.TabCompleter;
import org.bukkit.Bukkit;
-import org.bukkit.Location;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
import org.bukkit.event.Listener;
import org.bukkit.plugin.java.JavaPlugin;
import org.jetbrains.annotations.NotNull;
import java.io.File;
-import java.util.List;
+import java.util.ArrayList;
+import java.util.Arrays;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
-import static net.tylermurphy.hideAndSeek.configuration.Config.exitPosition;
-import static net.tylermurphy.hideAndSeek.configuration.Config.exitWorld;
+import static net.tylermurphy.hideAndSeek.configuration.Config.*;
+import static net.tylermurphy.hideAndSeek.configuration.Localization.message;
public class Main extends JavaPlugin implements Listener {
@@ -55,51 +40,136 @@ public class Main extends JavaPlugin implements Listener {
private Disguiser disguiser;
private EntityHider entityHider;
private Game game;
+ private CommandGroup commandGroup;
+ private boolean loaded;
public void onEnable() {
+
+ long start = System.currentTimeMillis();
+
+ getLogger().info("Loading Kenshin's Hide and Seek");
Main.instance = this;
- this.updateVersion();
- Config.loadConfig();
- Localization.loadLocalization();
- Items.loadItems();
+ getLogger().info("Getting minecraft version...");
+ this.updateVersion();;
+
+ try {
+ getLogger().info("Loading config.yml...");
+ Config.loadConfig();
+ getLogger().info("Loading maps.yml...");
+ Maps.loadMaps();
+ getLogger().info("Loading localization.yml...");
+ Localization.loadLocalization();
+ getLogger().info("Loading items.yml...");
+ Items.loadItems();
+ getLogger().info("Loading leaderboard.yml...");
+ Leaderboard.loadLeaderboard();
+ } catch (Exception e) {
+ getLogger().severe(e.getMessage());
+ Bukkit.getPluginManager().disablePlugin(this);
+ return;
+ }
+ getLogger().info("Creating internal scoreboard...");
this.board = new Board();
+ getLogger().info("Connecting to database...");
this.database = new Database();
+ getLogger().info("Loading disguises...");
this.disguiser = new Disguiser();
+ getLogger().info("Loading entity hider...");
this.entityHider = new EntityHider(this, EntityHider.Policy.BLACKLIST);
+ getLogger().info("Registering listeners...");
this.registerListeners();
- CommandHandler.registerCommands();
+ getLogger().info("Registering commands...");
+ this.commandGroup = new CommandGroup("hs",
+ new Help(),
+ new Reload(),
+ new Join(),
+ new Leave(),
+ new Send(),
+ new Start(),
+ new Stop(),
+ new CommandGroup("map",
+ new CommandGroup("blockhunt",
+ new CommandGroup("blocks",
+ new net.tylermurphy.hideAndSeek.command.map.blockhunt.blocks.Add(),
+ new net.tylermurphy.hideAndSeek.command.map.blockhunt.blocks.Remove(),
+ new net.tylermurphy.hideAndSeek.command.map.blockhunt.blocks.List()
+ ),
+ new Enabled()
+ ),
+ new CommandGroup("set",
+ new Lobby(),
+ new Spawn(),
+ new SeekerLobby(),
+ new Border(),
+ new Bounds()
+ ),
+ new Add(),
+ new Remove(),
+ new List(),
+ new Status(),
+ new Save(),
+ new Debug(),
+ new GoTo()
+ ),
+ new CommandGroup("world",
+ new Create(),
+ new Delete(),
+ new net.tylermurphy.hideAndSeek.command.world.List(),
+ new Tp()
+ ),
+ new SetExitLocation(),
+ new Top(),
+ new Wins(),
+ new Confirm()
+ );
- game = new Game(board);
+ getLogger().info("Loading game...");
+ game = new Game(null, board);
+ getLogger().info("Scheduling tick tasks...");
getServer().getScheduler().runTaskTimer(this, this::onTick,0,1).getTaskId();
+ getLogger().info("Registering outgoing bungeecord plugin channel...");
Bukkit.getServer().getMessenger().registerOutgoingPluginChannel(this, "BungeeCord");
+ getLogger().info("Checking for PlaceholderAPI...");
if (getServer().getPluginManager().getPlugin("PlaceholderAPI") != null) {
+ getLogger().info("PlaceholderAPI found...");
+ getLogger().info("Registering PlaceholderAPI expansion...");
new PAPIExpansion().register();
}
+
+ long end = System.currentTimeMillis();
+ getLogger().info("Finished loading plugin ("+(end-start)+"ms)");
+ loaded = true;
+
}
public void onDisable() {
version = 0;
- board.getPlayers().forEach(player -> {
- board.removeBoard(player);
- PlayerLoader.unloadPlayer(player);
- player.teleport(new Location(Bukkit.getWorld(exitWorld), exitPosition.getX(), exitPosition.getY(), exitPosition.getZ()));
- });
+ if(board != null) {
+ board.getPlayers().forEach(player -> {
+ board.removeBoard(player);
+ PlayerLoader.unloadPlayer(player);
+ exitPosition.teleport(player);
+ });
+ board.cleanup();
+ }
+
+ if(disguiser != null) {
+ disguiser.cleanUp();
+ }
Bukkit.getServer().getMessenger().unregisterOutgoingPluginChannel(this);
- board.cleanup();
- disguiser.cleanUp();
}
private void onTick() {
- if(game.getStatus() == Status.ENDED) game = new Game(board);
+ if(game.getStatus() == net.tylermurphy.hideAndSeek.game.util.Status.ENDED) game = new Game(game.getCurrentMap(), board);
game.onTick();
disguiser.check();
}
@@ -115,6 +185,7 @@ public class Main extends JavaPlugin implements Listener {
getServer().getPluginManager().registerEvents(new MovementHandler(), this);
getServer().getPluginManager().registerEvents(new PlayerHandler(), this);
getServer().getPluginManager().registerEvents(new RespawnHandler(), this);
+ getServer().getPluginManager().registerEvents(new WorldInteractHandler(), this);
}
private void updateVersion(){
@@ -127,11 +198,20 @@ public class Main extends JavaPlugin implements Listener {
}
public boolean onCommand(@NotNull CommandSender sender, @NotNull Command cmd, @NotNull String label, String[] args) {
- return CommandHandler.handleCommand(sender, args);
+ if (!(sender instanceof Player)) {
+ sender.sendMessage(errorPrefix + message("COMMAND_PLAYER_ONLY"));
+ return true;
+ }
+ commandGroup.handleCommand((Player)sender, args);
+ return true;
}
- public List<String> onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) {
- return TabCompleter.handleTabComplete(sender, args);
+ public java.util.List<String> onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) {
+ if (!(sender instanceof Player)) {
+ sender.sendMessage(errorPrefix + message("COMMAND_PLAYER_ONLY"));
+ return new ArrayList<>();
+ }
+ return commandGroup.handleTabComplete((Player)sender, args);
}
public static Main getInstance() {
@@ -158,8 +238,34 @@ public class Main extends JavaPlugin implements Listener {
public EntityHider getEntityHider() { return entityHider; }
+ public CommandGroup getCommandGroup() { return commandGroup; }
+
public boolean supports(int v){
return version >= v;
}
+
+ public java.util.List<String> getWorlds() {
+ java.util.List<String> worlds = new ArrayList<>();
+ File[] containers = getWorldContainer().listFiles();
+ if(containers != null) {
+ Arrays.stream(containers).forEach(file -> {
+ if (!file.isDirectory()) return;
+ String[] files = file.list();
+ if (files == null) return;
+ if (!Arrays.asList(files).contains("session.lock") && !Arrays.asList(files).contains("level.dat")) return;
+ worlds.add(file.getName());
+ });
+ }
+ return worlds;
+ }
+
+ public boolean isLoaded() {
+ return loaded;
+ }
+
+ public void scheduleTask(Runnable task) {
+ if(!isEnabled()) return;
+ Bukkit.getServer().getScheduler().runTask(this, task);
+ }
} \ No newline at end of file