public Game(JavaPlugin plugin, int gameid, int maxPlayers, Location signLoc, String gameName, GameStage gamestage, ArrayList<Location> teamspawns, long delay, long period) {
        if (plugin == null) {
            throw new IllegalArgumentException("Plugin cannot be null!");
        }
        if (!plugin.isEnabled()) {
            throw new IllegalArgumentException(plugin.getName() + " is not enabled and is trying to setup games!");
        }
        if (gameid < 1) {
            throw new IllegalArgumentException("Game ID cannot be less than 1, given: " + gameid);
        }
        if (maxPlayers < 1) {
            throw new IllegalArgumentException("Max players cannot be less than 1, given: " + maxPlayers);
        }
        if (gameName == null || gameName == "") {
            throw new IllegalArgumentException("The game's name cannot be null or blank!");
        }
        if (teamspawns == null || teamspawns.isEmpty()) {
            throw new IllegalArgumentException("The game's spawn points cannot be null or empty!");
        }
        this.plugin = plugin;
        this.gameid = gameid;
        this.maxPlayers = maxPlayers;
        this.signLoc = signLoc;
        this.gameName = gameName;
        this.gamestage = gamestage;
        this.defaultStage = gamestage;
        this.teamspawns = teamspawns;
        taskID = plugin.getServer().getScheduler().scheduleSyncRepeatingTask(plugin, this, delay, period);
    }