Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package bot.Util;
- import Json.JsonObject;
- import bot.tenmans.TenMan;
- import bot.users.User;
- import com.mongodb.MongoClient;
- import com.mongodb.client.MongoCollection;
- import com.mongodb.client.MongoDatabase;
- import com.mongodb.client.model.Filters;
- import com.mongodb.client.result.UpdateResult;
- import net.dv8tion.jda.core.entities.Member;
- import org.bson.Document;
- import org.json.JSONObject;
- import java.io.*;
- import java.util.HashMap;
- import java.util.Random;
- /**
- * esports-bot
- * bot.Util
- * dzyrr
- * 2/19/2018
- * 6:07 AM
- * 2018
- * 02
- * 19
- */
- public class TenManManager {
- public static HashMap<String, TenMan> matches = new HashMap<>();
- private static ShellScriptExecuter executer = new ShellScriptExecuter();
- private static Thread gameThread;
- public static boolean createMatch(TenMan match, Member member) {
- MongoClient mongoClient = new MongoClient("localhost", 27017);
- MongoDatabase database = mongoClient.getDatabase("glorybot");
- MongoCollection<Document> matchesCollection = database.getCollection("10mans");
- Document fetchedMatch = matchesCollection.find(Filters.eq("name", match.getName())).first();
- if (fetchedMatch != null) {
- return false;
- } else {
- Document matchDoc = new Document("name", match.getName()).append("players_id", member.getUser().getId());
- matchesCollection.insertOne(matchDoc);
- matches.put(match.getName(), match);
- mongoClient.close();
- return true;
- }
- }
- public static boolean removeTenMan(String lobby) {
- MongoClient mongoClient = new MongoClient("localhost", 27017);
- MongoDatabase database = mongoClient.getDatabase("glorybot");
- MongoCollection<Document> tenMansCollection = database.getCollection("10mans");
- Document fetchedMatch = tenMansCollection.find(Filters.eq("name", lobby)).first();
- if (fetchedMatch != null) {
- System.out.println("DELETED MATCH: " + lobby);
- tenMansCollection.deleteOne(fetchedMatch);
- return true;
- }
- return false;
- }
- public static boolean joinTenMan(String matchName, Member member) {
- MongoClient mongoClient = new MongoClient("localhost", 27017);
- MongoDatabase database = mongoClient.getDatabase("glorybot");
- MongoCollection<Document> matchesCollection = database.getCollection("10mans");
- Document fetchedMatch = matchesCollection.find(Filters.eq("name", matchName)).first();
- if (fetchedMatch != null) {
- String matchJsonString = fetchedMatch.toJson();
- JSONObject matchObject = new JSONObject(matchJsonString);
- if (matchObject.get("players_id") != null) {
- String playerIdsFromDatabase = (String) matchObject.get("players_id");
- String[] playerIds = playerIdsFromDatabase.split("/");
- if (playerIds != null) {
- for (int i = 0; i < playerIds.length; i++) {
- if (playerIds[i].equals(member.getUser().getId())) {
- return false;
- }
- }
- UpdateResult updatedMatch =
- matchesCollection.updateOne(Filters.eq("name", matchName), new Document("$set", new Document("name", matchName).append("players_id", fetchedMatch.get("players_id") + "/" + member.getUser().getId())));
- mongoClient.close();
- if (updatedMatch.getModifiedCount() > 0) {
- return true;
- }
- }
- }
- }
- mongoClient.close();
- return false;
- }
- public static boolean startTenMan(TenMan tenMan) {
- MongoClient mongoClient = new MongoClient("localhost", 27017);
- MongoDatabase database = mongoClient.getDatabase("glorybot");
- MongoCollection<Document> tenMansCollection = database.getCollection("10mans");
- Document fetchedMatch = tenMansCollection.find(Filters.eq("name", tenMan.getName())).first();
- if (fetchedMatch != null) {
- String matchJsonString = fetchedMatch.toJson();
- JSONObject matchObject = new JSONObject(matchJsonString);
- if (matchObject.get("players_id") != null) {
- String playerIdsFromDatabase = (String) matchObject.get("players_id");
- String[] playerIds = playerIdsFromDatabase.split("/");
- if (playerIds != null) {
- if (playerIds.length <= 10) {
- // Lobby is full
- // TODO: Read in the start.sh file
- // TODO: Change the +game_mode and +map <map name>
- // TODO: Make start.sh exec the 10man config
- Random random = new Random();
- String mapName = "";
- switch (random.nextInt(1)) {
- case 0:
- mapName = "de_cache";
- break;
- case 1:
- mapName = "de_mirage";
- break;
- }
- String newStatScript =
- "#!/bin/bash\n./srcds_run -game csgo -console -usercon +game_type 0 +game_mode 1 +mapgroup mg_active -tickrate 128 +map " + mapName + " +sv_setsteamaccount STEAMTOKEN -net_port_try 1";
- //
- // FileWriter writer = new FileWriter("/home/steam/steamcmd/server/steamcmd/csgo/start.sh");
- // BufferedWriter bufferedWriter = new BufferedWriter(writer);
- // bufferedWriter.write(newStatScript);
- gameThread = new Thread(new Runnable() {
- @Override
- public void run() {
- String[] cmdScript = new String[]{"/bin/bash", "-c", "sh /home/steam/steamcmd/server/steamcmd/csgo/srcds_run -game csgo -console -usercon +game_type 0 +game_mode 1 +mapgroup mg_active -tickrate 128 +map de_mirage +sv_setsteamaccount STEAMTOKEN -net_port_try 1"};
- try {
- ProcessBuilder processBuilder = new ProcessBuilder(cmdScript);
- Process pr = processBuilder.start();
- BufferedReader input = new BufferedReader(new InputStreamReader(pr.getInputStream()));
- String line = "";
- while ((line = input.readLine()) != null) {
- System.out.println(line);
- }
- System.out.println(pr.isAlive());
- } catch (Exception e) {
- System.out.println(e.toString());
- e.printStackTrace();
- }
- }
- });
- gameThread.start();
- return true;
- } else if (playerIds.length > 10) {
- // to many players
- } else if (playerIds.length < 10) {
- // not enough players
- }
- }
- }
- } else {
- return false;
- }
- return false;
- }
- public static void stopServer() {
- try {
- gameThread.join();
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement