Advertisement
Guest User

Untitled

a guest
Mar 31st, 2017
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 31.68 KB | None | 0 0
  1. //FrostyMaingo Code
  2. //
  3. //
  4. // Version 1.0
  5. //
  6. //
  7. // Code By: Frostystorm1
  8. // Contributors: 314 (Some aspects of regex and commands were modified from his bot)
  9. //
  10.  
  11. import java.awt.List;
  12. import java.io.BufferedReader;
  13. import java.io.BufferedWriter;
  14. import java.io.File;
  15. import java.io.FileReader;
  16. import java.io.FileWriter;
  17. import java.io.IOException;
  18. import java.net.Proxy;
  19. import java.text.DateFormat;
  20. import java.text.SimpleDateFormat;
  21. import java.util.ArrayList;
  22. import java.util.Arrays;
  23. import java.util.Date;
  24. import java.util.Random;
  25. import java.util.Timer;
  26. import java.util.TimerTask;
  27. import java.util.concurrent.TimeUnit;
  28. import java.util.regex.Matcher;
  29. import java.util.regex.Pattern;
  30.  
  31. import org.spacehq.mc.auth.data.GameProfile;
  32. import org.spacehq.mc.auth.exception.request.RequestException;
  33. import org.spacehq.mc.protocol.MinecraftConstants;
  34. import org.spacehq.mc.protocol.MinecraftProtocol;
  35. import org.spacehq.mc.protocol.ServerLoginHandler;
  36. import org.spacehq.mc.protocol.data.SubProtocol;
  37. import org.spacehq.mc.protocol.data.game.PlayerListEntry;
  38. import org.spacehq.mc.protocol.data.game.PlayerListEntryAction;
  39. import org.spacehq.mc.protocol.data.game.entity.player.GameMode;
  40. import org.spacehq.mc.protocol.data.game.setting.Difficulty;
  41. import org.spacehq.mc.protocol.data.game.world.WorldType;
  42. import org.spacehq.mc.protocol.data.game.world.block.value.BlockValueType;
  43. import org.spacehq.mc.protocol.data.message.ChatColor;
  44. import org.spacehq.mc.protocol.data.message.ChatFormat;
  45. import org.spacehq.mc.protocol.data.message.Message;
  46. import org.spacehq.mc.protocol.data.message.MessageStyle;
  47. import org.spacehq.mc.protocol.data.message.TextMessage;
  48. import org.spacehq.mc.protocol.data.message.TranslationMessage;
  49. import org.spacehq.mc.protocol.data.status.PlayerInfo;
  50. import org.spacehq.mc.protocol.data.status.ServerStatusInfo;
  51. import org.spacehq.mc.protocol.data.status.VersionInfo;
  52. import org.spacehq.mc.protocol.data.status.handler.ServerInfoBuilder;
  53. import org.spacehq.mc.protocol.data.status.handler.ServerInfoHandler;
  54. import org.spacehq.mc.protocol.data.status.handler.ServerPingTimeHandler;
  55. import org.spacehq.mc.protocol.packet.ingame.client.ClientChatPacket;
  56. import org.spacehq.mc.protocol.packet.ingame.server.ServerChatPacket;
  57. import org.spacehq.mc.protocol.packet.ingame.server.ServerJoinGamePacket;
  58. import org.spacehq.mc.protocol.packet.ingame.server.ServerPlayerListEntryPacket;
  59. import org.spacehq.mc.protocol.packet.ingame.server.entity.ServerEntityTeleportPacket;
  60. import org.spacehq.mc.protocol.packet.ingame.server.entity.player.ServerPlayerChangeHeldItemPacket;
  61. import org.spacehq.mc.protocol.packet.ingame.server.entity.spawn.ServerSpawnPlayerPacket;
  62. import org.spacehq.mc.protocol.packet.ingame.server.world.ServerBlockChangePacket;
  63. import org.spacehq.mc.protocol.packet.ingame.server.world.ServerBlockValuePacket;
  64. import org.spacehq.packetlib.Client;
  65. import org.spacehq.packetlib.Server;
  66. import org.spacehq.packetlib.Session;
  67. import org.spacehq.packetlib.event.server.ServerAdapter;
  68. import org.spacehq.packetlib.event.server.SessionAddedEvent;
  69. import org.spacehq.packetlib.event.server.SessionRemovedEvent;
  70. import org.spacehq.packetlib.event.session.DisconnectedEvent;
  71. import org.spacehq.packetlib.event.session.PacketReceivedEvent;
  72. import org.spacehq.packetlib.event.session.SessionAdapter;
  73. import org.spacehq.packetlib.tcp.TcpSessionFactory;
  74.  
  75. public class MCBotMain {
  76. private static final boolean SPAWN_SERVER = false;
  77. private static final boolean VERIFY_USERS = true;
  78. private static final String HOST = "mc.ecocitycraft.com";
  79. private static final int PORT = 25565;
  80. private static final Proxy PROXY = Proxy.NO_PROXY;
  81. private static final Proxy AUTH_PROXY = Proxy.NO_PROXY;
  82. private static String USERNAME = "";
  83. private static String PASSWORD = "";
  84.  
  85.  
  86. private static Message message = null;
  87. private static Client client;
  88.  
  89.  
  90. private static ArrayList<String> commandqueue = new ArrayList<String>();
  91. private static ArrayList<String> parameterOne = new ArrayList<String>();
  92. private static ArrayList<String> parameterTwo = new ArrayList<String>();
  93. private static ArrayList<String> parameterThree = new ArrayList<String>();
  94. private static ArrayList<String> parameterFour = new ArrayList<String>();
  95. private static ArrayList<String> parameterFive = new ArrayList<String>();
  96. private static ArrayList<String> parameterSix = new ArrayList<String>();
  97.  
  98.  
  99. private static boolean startLoggingPlayerJoin = false;
  100. private static boolean loggingBlocks = false;
  101. private static String blockLogPlayer = "";
  102.  
  103. //Party Regex
  104. private static Pattern p_kick = Pattern.compile("^From ([*_A-Za-z0-9]+): !kick ([a-zA-Z0-9]+) (.+)$");
  105. private static Pattern p_invite = Pattern.compile("^From ([*_A-Za-z0-9]+): !invite ([*_A-Za-z0-9]+)$");
  106. private static Pattern p_whitelist = Pattern.compile("^From ([*_A-Za-z0-9]+): !whitelist (add|remove|info) ?([*_A-Za-z0-9]+)?$");
  107. private static Pattern p_getinvite = Pattern.compile("^From ([*_A-Za-z0-9]+): !getinvite$");
  108.  
  109.  
  110. //Party Arrays
  111. private static ArrayList<String> partyOwners = new ArrayList<String>();
  112. private static ArrayList<String> whitelist = new ArrayList<String>();
  113.  
  114.  
  115.  
  116. //Rank Arrays
  117. private static ArrayList<String> admins = new ArrayList<String>();
  118. private static ArrayList<String> commanders = new ArrayList<String>();
  119. private static ArrayList<String> captains = new ArrayList<String>();
  120. private static ArrayList<String> sergeants = new ArrayList<String>();
  121.  
  122.  
  123. //Command Spam Check Vars
  124. private static double now = 0;
  125. private static double lastCMDTime = 0;
  126.  
  127. //Command Regex
  128. private static Pattern p_say = Pattern.compile("^From ([*_A-Za-z0-9]+): !say (.+)$");
  129. private static Pattern p_ping = Pattern.compile("^From ([*_A-Za-z0-9]+): !ping$");
  130. private static Pattern p_stop = Pattern.compile("^From ([*_A-Za-z0-9]+): !stop$");
  131. private static Pattern p_calc = Pattern.compile("^From ([*_A-Za-z0-9]+): !calc ([0-9.-]+)([+\\-\\*/])([0-9.-]+)$");
  132. private static Pattern p_shout = Pattern.compile("^From ([*_A-Za-z0-9]+): !shout (.+)$");
  133. private static Pattern p_logblock = Pattern.compile("^From ([*_A-Za-z0-9]+): !logblocks$");
  134.  
  135. //private static Pattern p_loglotto = Pattern.compile("^\\[LOTTERY\\] Congratulations go to ([*_A-Za-z0-9]+) for winning \\$([0-9]+) with ([0-9])+ tickets\\.$");
  136.  
  137.  
  138. //Generic Regex
  139.  
  140. private static Pattern p_pmRecieved = Pattern.compile("^From ([*_A-Za-z0-9]+): (.+)$");
  141. //Group 1: Gives user rank, Group 2: Gives CTAG, DTAG, Group 3: Gives Username/Nickname, Group 4: Gives message
  142. private static Pattern p_global = Pattern.compile("^\\[G] \\[([_A-Za-z0-9$]+)](\\[.+])? (.+): (.+)$");
  143.  
  144.  
  145.  
  146. public static boolean checkCommandSpam(String function, String parameter1, String parameter2, String parameter3, String parameter4, String parameter5, String parameter6){
  147. now = (double) System.currentTimeMillis();
  148. if (now-lastCMDTime > 3000){
  149. lastCMDTime = now;
  150. return true;
  151. }
  152. else{
  153. if(!function.equals("")){
  154. if(function.equals("say")){
  155. commandqueue.add("say");
  156. parameterOne.add(parameter1);
  157. }
  158. else if(function.equals("shout")){
  159. commandqueue.add("shout");
  160. parameterOne.add(parameter1);
  161. }
  162. else if(function.equals("kick")){
  163. commandqueue.add("kick");
  164. parameterOne.add(parameter1);
  165. parameterTwo.add(parameter2);
  166. parameterThree.add(parameter3);
  167. }
  168. else if(function.equals("invite")){
  169. commandqueue.add("invite");
  170. parameterOne.add(parameter1);
  171. parameterTwo.add(parameter2);
  172. }
  173. else if(function.equals("whitelistinfo")){
  174. commandqueue.add("whitelistinfo");
  175. parameterOne.add(parameter1);
  176. }
  177. else if(function.equals("getinvite")){
  178. commandqueue.add("getinvite");
  179. parameterOne.add(parameter1);
  180. }
  181. else if(function.equals("logblocks")){
  182. commandqueue.add("logblocks");
  183. parameterOne.add(parameter1);
  184. parameterTwo.add(parameter2);
  185. parameterThree.add(parameter3);
  186. parameterFour.add(parameter4);
  187. parameterFive.add(parameter5);
  188. parameterSix.add(parameter6);
  189. }
  190. }
  191. return false;
  192.  
  193. }
  194.  
  195. }
  196.  
  197.  
  198.  
  199.  
  200. public static void readWhitelist(){ //Reads the whitelist text file and puts it in an arraylist.
  201.  
  202. String thisLine = null;
  203.  
  204. try {
  205.  
  206. BufferedReader br = new BufferedReader(new FileReader(new File("Whitelist.txt")));
  207.  
  208. while ((thisLine = br.readLine()) != null) {
  209. whitelist.add(thisLine);
  210. }
  211.  
  212. } catch(Exception e) {
  213. e.printStackTrace();
  214. }
  215.  
  216.  
  217. }
  218.  
  219.  
  220. public static void writeWhitelist(){ //Writes arraylist into whitelist text file
  221.  
  222.  
  223. BufferedWriter whitelistwriter = null;
  224.  
  225.  
  226. try
  227. {
  228.  
  229. File whitelistfile = new File("Whitelist.txt");
  230.  
  231. whitelistfile.delete();
  232.  
  233. whitelistwriter = new BufferedWriter(new FileWriter("Whitelist.txt", true));
  234.  
  235. for(int i=0;i<whitelist.size();i++){
  236. whitelistwriter.write(whitelist.get(i));
  237. whitelistwriter.write("\n");
  238. }
  239.  
  240. }
  241. catch (IOException e)
  242. {
  243. }
  244. finally
  245. {
  246. try
  247. {
  248. if (whitelistwriter != null)
  249. whitelistwriter.close( );
  250.  
  251. }
  252. catch (IOException e)
  253. {
  254. }
  255. }
  256.  
  257.  
  258.  
  259.  
  260. }
  261.  
  262.  
  263. public static void say(String message){ //Says or runs command when !say is issued
  264.  
  265. if(checkCommandSpam("say", message, "", "", "", "", "")){
  266. sendMessage(message);
  267.  
  268. lastCMDTime = now;
  269. }
  270. }
  271.  
  272.  
  273. public static void ping(){ //Responds with Pong! when !ping is issued
  274. if(checkCommandSpam("ping", "", "", "", "", "", "")){
  275. sendMessage("/r Pong!");
  276.  
  277. lastCMDTime = now;
  278. }
  279. }
  280.  
  281.  
  282.  
  283. public static void stopBot(){ //Disconnects the bot when !stop is issued
  284. client.getSession().disconnect("Disconnected!");
  285.  
  286. }
  287.  
  288.  
  289. public static void calc(String firstValue, String calcType, String secondValue){ //Calculate simple functions
  290.  
  291. if(checkCommandSpam("calc", firstValue, calcType, secondValue, "", "", "")){
  292.  
  293. double numberOne = Double.parseDouble(firstValue);
  294. double numberTwo = Double.parseDouble(secondValue);
  295.  
  296. if(calcType.equals("+")){
  297. sendMessage("/r = "+(numberOne+numberTwo));
  298. }
  299. else if(calcType.equals("-")){
  300. sendMessage("/r = "+(numberOne-numberTwo));
  301. }
  302. else if(calcType.equals("*")){
  303. sendMessage("/r = "+(numberOne*numberTwo));
  304. }
  305. else if(calcType.equals("/")){
  306. sendMessage("/r = "+(numberOne/numberTwo));
  307. }
  308.  
  309. lastCMDTime = now;
  310. }
  311. }
  312.  
  313. public static void shout(String message){ //Shouts message to party
  314. if(checkCommandSpam("shout", message, "", "","", "", "")){
  315. sendMessage("/p [Shout] "+message);
  316.  
  317. lastCMDTime = now;
  318. }
  319. }
  320.  
  321.  
  322.  
  323.  
  324. public static void kick(String kicker, String kickMember, String reason) throws IOException{
  325. if(checkCommandSpam("kick", kicker, kickMember, reason,"", "", "")){
  326. sendMessage("/party kick "+kickMember);
  327.  
  328. whitelist.remove(kickMember);
  329.  
  330. writeWhitelist();
  331.  
  332.  
  333. BufferedWriter writer = null;
  334.  
  335. DateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy [HH:mm:ss]");
  336. Date dateFull = new Date();
  337.  
  338.  
  339. try
  340. {
  341. writer = new BufferedWriter(new FileWriter("Logs/PartyLog.txt", true));
  342. writer.write("\n");
  343. writer.write("["+dateFormat.format(dateFull)+"] Player "+kicker+ " kicked "+kickMember+" from the party: "+reason);
  344.  
  345. }
  346. catch (IOException e)
  347. {
  348. }
  349. finally
  350. {
  351. try
  352. {
  353. if ( writer != null)
  354. writer.close( );
  355. }
  356. catch (IOException e)
  357. {
  358. }
  359. }
  360.  
  361. lastCMDTime = now;
  362. }
  363. }
  364.  
  365.  
  366. public static void invite(String inviter, String inviteMember){
  367. if(checkCommandSpam("invite", inviter, inviteMember, "","", "", "")){
  368. sendMessage("/party invite "+inviteMember);
  369.  
  370. BufferedWriter writer = null;
  371.  
  372. DateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy [HH:mm:ss]");
  373. Date dateFull = new Date();
  374.  
  375.  
  376. try
  377. {
  378. writer = new BufferedWriter(new FileWriter("Logs/PartyLog.txt", true));
  379. writer.write("\n");
  380. writer.write("["+dateFormat.format(dateFull)+"] "+inviter+ " invited "+inviteMember+" to the party.");
  381.  
  382. }
  383. catch (IOException e)
  384. {
  385. }
  386. finally
  387. {
  388. try
  389. {
  390. if ( writer != null)
  391. writer.close( );
  392. }
  393. catch (IOException e)
  394. {
  395. }
  396. }
  397.  
  398.  
  399. lastCMDTime = now;
  400.  
  401. }
  402. }
  403.  
  404.  
  405.  
  406. public static void globalMessage(String rank, String userTags, String nickname, String message){
  407.  
  408.  
  409. }
  410.  
  411. public static void whitelist(int groupCount, String subCommand, String user, String targetUser){
  412. if(groupCount == 3){
  413. if(subCommand.equals("remove")){
  414. whitelist.remove(targetUser);
  415.  
  416. writeWhitelist();
  417. }
  418. else if(subCommand.equals("add")){
  419. if(!whitelist.contains(targetUser)){
  420. whitelist.add(targetUser);
  421.  
  422. writeWhitelist();
  423. }
  424.  
  425. }
  426. }
  427. if(subCommand.equals("info")){
  428. if(checkCommandSpam("whitelistinfo", user,"","","", "", "")){
  429. sendMessage("/pm "+user+" "+whitelist);
  430. lastCMDTime = now;
  431. }
  432. }
  433.  
  434. }
  435.  
  436. public static void logblocks(String blockLogPlayer, String blockID, String blockData, String xCoord, String yCoord, String zCoord){
  437. if(loggingBlocks == true){
  438. if(checkCommandSpam("logblocks",blockLogPlayer,blockID,blockData,xCoord,yCoord,zCoord)){
  439. sendMessage("/pm "+blockLogPlayer+" Block ID: "+blockID+", Block Data: "+blockData+", Coords: ("+xCoord+", "+yCoord+", "+zCoord+")");
  440. lastCMDTime = now;
  441. }
  442. }
  443.  
  444. }
  445.  
  446. public static void getinvite(String user){
  447. if(checkCommandSpam("getinvite",user, "","","", "", "")){
  448. sendMessage("/party invite "+user);
  449. lastCMDTime = now;
  450. }
  451. }
  452.  
  453. public static void recieveCredentials(String username, String password){ //Recieve info from login panel
  454. USERNAME = username;
  455. PASSWORD = password;
  456.  
  457. status();
  458. login();
  459. }
  460.  
  461. public static void sendMessage(String message){ //Send a message/command to the server from the bot
  462. client.getSession().send(new ClientChatPacket(message));
  463.  
  464. }
  465.  
  466. public static void runCommandQueue(){
  467. if(commandqueue.size() > 0){
  468. if(commandqueue.get(0).equals("say")){
  469. say(parameterOne.get(0));
  470. }
  471. else if(commandqueue.get(0).equals("shout")){
  472. shout(parameterOne.get(0));
  473. }
  474. else if(commandqueue.get(0).equals("kick")){
  475.  
  476. try {
  477. kick(parameterOne.get(0), parameterTwo.get(0), parameterThree.get(0));
  478. } catch (IOException e) {
  479. // TODO Auto-generated catch block
  480. e.printStackTrace();
  481. }
  482.  
  483. }
  484. else if(commandqueue.get(0).equals("invite")){
  485.  
  486. invite(parameterOne.get(0), parameterTwo.get(0));
  487.  
  488. }
  489. else if(commandqueue.get(0).equals("whitelistinfo")){
  490. sendMessage("/pm "+parameterOne.get(0)+" "+whitelist);
  491. }
  492. else if(commandqueue.get(0).equals("getinvite")){
  493.  
  494. getinvite(parameterOne.get(0));
  495. }
  496. else if(commandqueue.get(0).equals("logblocks")){
  497. logblocks(parameterOne.get(0),parameterTwo.get(0),parameterThree.get(0),parameterFour.get(0),parameterFive.get(0),parameterSix.get(0));
  498. }
  499.  
  500. commandqueue.remove(0);
  501. parameterOne.remove(0);
  502. parameterTwo.remove(0);
  503. parameterThree.remove(0);
  504. parameterFour.remove(0);
  505. parameterFive.remove(0);
  506. parameterSix.remove(0);
  507.  
  508.  
  509.  
  510. }
  511.  
  512.  
  513. }
  514.  
  515.  
  516. public static void writeChatToFile(){ //Log chat to a text file and timestamp the messages
  517. DateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy [HH:mm:ss]");
  518. Date dateFull = new Date();
  519.  
  520. DateFormat dateFormatShort = new SimpleDateFormat("MM-dd-yyyy");
  521. Date dateShort = new Date();
  522.  
  523.  
  524. BufferedWriter writer = null;
  525.  
  526. Console.updateChat(message.getFullText());
  527.  
  528. try
  529. {
  530. writer = new BufferedWriter(new FileWriter("Logs/["+(dateFormatShort.format(dateShort))+"] Log.txt", true));
  531. writer.write("\n");
  532. writer.write(dateFormat.format(dateFull)+message.getFullText());
  533.  
  534. }
  535. catch (IOException e)
  536. {
  537. }
  538. finally
  539. {
  540. try
  541. {
  542. if ( writer != null)
  543. writer.close( );
  544. }
  545. catch (IOException e)
  546. {
  547. }
  548. }
  549.  
  550. }
  551.  
  552.  
  553. public static void main(String[] args) {
  554.  
  555.  
  556. if(SPAWN_SERVER) {
  557. Server server = new Server(HOST, PORT, MinecraftProtocol.class, new TcpSessionFactory(PROXY));
  558. server.setGlobalFlag(MinecraftConstants.AUTH_PROXY_KEY, AUTH_PROXY);
  559. server.setGlobalFlag(MinecraftConstants.VERIFY_USERS_KEY, VERIFY_USERS);
  560. server.setGlobalFlag(MinecraftConstants.SERVER_INFO_BUILDER_KEY, new ServerInfoBuilder() {
  561. @Override
  562. public ServerStatusInfo buildInfo(Session session) {
  563. return new ServerStatusInfo(new VersionInfo(MinecraftConstants.GAME_VERSION, MinecraftConstants.PROTOCOL_VERSION), new PlayerInfo(100, 0, new GameProfile[0]), new TextMessage("Hello world!"), null);
  564. }
  565. });
  566.  
  567. server.setGlobalFlag(MinecraftConstants.SERVER_LOGIN_HANDLER_KEY, new ServerLoginHandler() {
  568. @Override
  569. public void loggedIn(Session session) {
  570. session.send(new ServerJoinGamePacket(0, false, GameMode.SURVIVAL, 0, Difficulty.PEACEFUL, 10, WorldType.DEFAULT, false));
  571. }
  572.  
  573.  
  574.  
  575. });
  576.  
  577.  
  578.  
  579. server.setGlobalFlag(MinecraftConstants.SERVER_COMPRESSION_THRESHOLD, 100);
  580. server.addListener(new ServerAdapter() {
  581. @Override
  582. public void sessionAdded(SessionAddedEvent event) {
  583. event.getSession().addListener(new SessionAdapter() {
  584. @Override
  585. public void packetReceived(PacketReceivedEvent event) {
  586. if(event.getPacket() instanceof ClientChatPacket) {
  587. ClientChatPacket packet = event.getPacket();
  588. GameProfile profile = event.getSession().getFlag(MinecraftConstants.PROFILE_KEY);
  589. System.out.println(profile.getName() + ": " + packet.getMessage());
  590. Message msg = new TextMessage("Hello, ").setStyle(new MessageStyle().setColor(ChatColor.GREEN));
  591. Message name = new TextMessage(profile.getName()).setStyle(new MessageStyle().setColor(ChatColor.AQUA).addFormat(ChatFormat.UNDERLINED));
  592. Message end = new TextMessage("!");
  593. msg.addExtra(name);
  594. msg.addExtra(end);
  595. event.getSession().send(new ServerChatPacket(msg));
  596. }
  597.  
  598.  
  599. }
  600.  
  601. });
  602. }
  603.  
  604. @Override
  605. public void sessionRemoved(SessionRemovedEvent event) {
  606. MinecraftProtocol protocol = (MinecraftProtocol) event.getSession().getPacketProtocol();
  607. if(protocol.getSubProtocol() == SubProtocol.GAME) {
  608. System.out.println("Closing server.");
  609. event.getServer().close();
  610. }
  611. }
  612. });
  613.  
  614. server.bind();
  615. }
  616.  
  617.  
  618. }
  619.  
  620.  
  621.  
  622. public static void status() {
  623. MinecraftProtocol protocol = new MinecraftProtocol(SubProtocol.STATUS);
  624. Client client = new Client(HOST, PORT, protocol, new TcpSessionFactory(PROXY));
  625. client.getSession().setFlag(MinecraftConstants.AUTH_PROXY_KEY, AUTH_PROXY);
  626. client.getSession().setFlag(MinecraftConstants.SERVER_INFO_HANDLER_KEY, new ServerInfoHandler() {
  627.  
  628.  
  629. @Override
  630. public void handle(Session session, ServerStatusInfo info) {
  631. System.out.println("Version: " + info.getVersionInfo().getVersionName() + ", " + info.getVersionInfo().getProtocolVersion());
  632. System.out.println("Player Count: " + info.getPlayerInfo().getOnlinePlayers() + " / " + info.getPlayerInfo().getMaxPlayers());
  633. System.out.println("Players: " + Arrays.toString(info.getPlayerInfo().getPlayers()));
  634. System.out.println("Description: " + info.getDescription().getFullText());
  635. System.out.println("Icon: " + info.getIcon());
  636. }
  637. });
  638.  
  639. client.getSession().setFlag(MinecraftConstants.SERVER_PING_TIME_HANDLER_KEY, new ServerPingTimeHandler() {
  640. @Override
  641. public void handle(Session session, long pingTime) {
  642. System.out.println("Server ping took " + pingTime + "ms");
  643. }
  644. });
  645.  
  646. client.getSession().connect();
  647. while(client.getSession().isConnected()) {
  648. try {
  649. Thread.sleep(5);
  650. } catch(InterruptedException e) {
  651. e.printStackTrace();
  652. }
  653. }
  654. }
  655.  
  656.  
  657. public static void readChat(String message){ //Called whenever a message is received
  658.  
  659.  
  660. Matcher m_say = p_say.matcher(message);
  661. Matcher m_ping = p_ping.matcher(message);
  662. Matcher m_stop = p_stop.matcher(message);
  663. Matcher m_calc = p_calc.matcher(message);
  664. Matcher m_shout = p_shout.matcher(message);
  665. Matcher m_logblock = p_logblock.matcher(message);
  666.  
  667.  
  668. //Party Matchers
  669. Matcher m_kick = p_kick.matcher(message);
  670. Matcher m_invite = p_invite.matcher(message);
  671. Matcher m_whitelist = p_whitelist.matcher(message);
  672. Matcher m_getinvite = p_getinvite.matcher(message);
  673.  
  674.  
  675. Matcher m_global = p_global.matcher(message);
  676. Matcher m_pmRecieved = p_pmRecieved.matcher(message);
  677.  
  678.  
  679.  
  680. if(m_say.find() && admins.contains(m_say.group(1))) {
  681. say(m_say.group(2));
  682. }
  683. else if(m_ping.find() && admins.contains(m_ping.group(1))) {
  684. ping();
  685. }
  686. else if(m_stop.find() && admins.contains(m_stop.group(1))) {
  687. stopBot();
  688. }
  689. else if(m_calc.find() && captains.contains(m_calc.group(1))){
  690. calc(m_calc.group(2),m_calc.group(3),m_calc.group(4));
  691. }
  692. else if(m_shout.find() && sergeants.contains(m_shout.group(1))){
  693. shout(m_shout.group(2));
  694. }
  695. else if(m_kick.find() && partyOwners.contains(m_kick.group(1))){
  696. try {
  697. kick(m_kick.group(1), m_kick.group(2), m_kick.group(3));
  698. } catch (IOException e) {
  699. // TODO Auto-generated catch block
  700. e.printStackTrace();
  701. }
  702.  
  703. }
  704. else if(m_invite.find() && partyOwners.contains(m_invite.group(1))){
  705. invite(m_invite.group(1), m_invite.group(2));
  706. }
  707. else if(m_whitelist.find() && partyOwners.contains(m_whitelist.group(1))){
  708. if(m_whitelist.groupCount()==3){
  709. whitelist(m_whitelist.groupCount(), m_whitelist.group(2), m_whitelist.group(1), m_whitelist.group(3));
  710. }
  711. else{
  712. whitelist(m_whitelist.groupCount(), m_whitelist.group(2), m_whitelist.group(1), "");
  713. }
  714. }
  715. else if(m_getinvite.find() && whitelist.contains(m_getinvite.group(1))){
  716. getinvite(m_getinvite.group(1));
  717.  
  718. }
  719.  
  720. else if(m_logblock.find() && admins.contains(m_logblock.group(1))){
  721. if(loggingBlocks == false){
  722. loggingBlocks = true;
  723. blockLogPlayer = m_logblock.group(1);
  724. }
  725. else{
  726. loggingBlocks = false;
  727. blockLogPlayer = "";
  728. }
  729. }
  730.  
  731.  
  732. else if(m_global.find()){
  733. globalMessage(m_global.group(1),m_global.group(2),m_global.group(3),m_global.group(4));
  734. }
  735.  
  736. }
  737.  
  738.  
  739.  
  740. public static void login() {
  741.  
  742. //ADD THE USERNAMES TO EACH RANK ARRAY
  743.  
  744. //Admins
  745. admins.add("Frostystorm1");
  746. admins.add("FrostyMaingo");
  747.  
  748. //Commanders
  749.  
  750. //Sergeants
  751.  
  752. //Captains
  753.  
  754.  
  755. //Add the admins to all the rank arrays
  756. for(int x = 0; x < admins.size(); x = x + 1) {
  757. commanders.add(admins.get(x));
  758. sergeants.add(admins.get(x));
  759. captains.add(admins.get(x));
  760. }
  761.  
  762. //Add commanders to the sergeant and captain rank arrays
  763. for(int x = 0; x < commanders.size()-3; x = x + 1) {
  764. sergeants.add(commanders.get(x));
  765. captains.add(commanders.get(x));
  766. }
  767.  
  768. //Add sergeants to the captain rank array
  769. for(int x = 0; x < sergeants.size()-4; x = x + 1) {
  770. captains.add(sergeants.get(x));
  771. }
  772.  
  773.  
  774.  
  775. partyOwners.add("Frostystorm1");
  776.  
  777.  
  778.  
  779. MinecraftProtocol protocol = null;
  780. if(VERIFY_USERS) {
  781. try {
  782. protocol = new MinecraftProtocol(USERNAME, PASSWORD, false);
  783. System.out.println("Successfully authenticated user.");
  784. Console.loginSuccess();
  785.  
  786. } catch(RequestException e) {
  787. Console.loginError();
  788. e.printStackTrace();
  789. return;
  790. }
  791. } else {
  792. protocol = new MinecraftProtocol(USERNAME);
  793. }
  794.  
  795. client = new Client(HOST, PORT, protocol, new TcpSessionFactory(PROXY));
  796. client.getSession().setFlag(MinecraftConstants.AUTH_PROXY_KEY, AUTH_PROXY);
  797. client.getSession().addListener(new SessionAdapter() {
  798. @Override
  799. public void packetReceived(PacketReceivedEvent event) {
  800.  
  801. now = (double) System.currentTimeMillis();
  802. if (now-lastCMDTime > 3000){
  803. runCommandQueue();
  804. }
  805.  
  806.  
  807. if(event.getPacket() instanceof ServerJoinGamePacket) {
  808. //sendMessage("/p", false);
  809. }
  810. else if(event.getPacket() instanceof ServerBlockChangePacket) {
  811.  
  812.  
  813. String blockID = Integer.toString(event.<ServerBlockChangePacket>getPacket().getRecord().getBlock().getId());
  814. String blockData = Integer.toString(event.<ServerBlockChangePacket>getPacket().getRecord().getBlock().getData());
  815.  
  816. String xCoord = Integer.toString(event.<ServerBlockChangePacket>getPacket().getRecord().getPosition().getX());
  817. String yCoord = Integer.toString(event.<ServerBlockChangePacket>getPacket().getRecord().getPosition().getY());
  818. String zCoord = Integer.toString(event.<ServerBlockChangePacket>getPacket().getRecord().getPosition().getZ());
  819.  
  820. logblocks(blockLogPlayer, blockID, blockData, xCoord, yCoord, zCoord);
  821.  
  822. }
  823. else if(event.getPacket() instanceof ServerBlockValuePacket) {
  824.  
  825. int blockID = event.<ServerBlockValuePacket>getPacket().getBlockId();
  826. double xCoord = event.<ServerBlockValuePacket>getPacket().getPosition().getX();
  827. double yCoord = event.<ServerBlockValuePacket>getPacket().getPosition().getY();
  828. double zCoord = event.<ServerBlockValuePacket>getPacket().getPosition().getZ();
  829. String type = event.<ServerBlockValuePacket>getPacket().getType().toString();
  830. String value = event.<ServerBlockValuePacket>getPacket().getValue().toString();
  831.  
  832. System.out.println("Block ID: "+blockID+", Coords: ("+xCoord+", "+yCoord+", "+zCoord+"), Type: "+type+", Value: "+value);
  833.  
  834. }
  835. /*else if(event.getPacket() instanceof ServerPlayerListEntryPacket) {
  836.  
  837. if(((ServerPlayerListEntryPacket) event.getPacket()).getAction() == PlayerListEntryAction.ADD_PLAYER){
  838. PlayerListEntry[] entry = ((ServerPlayerListEntryPacket) event.getPacket()).getEntries();
  839.  
  840.  
  841. if(!entry[0].getProfile().getName().startsWith(" BTLP Slot ") && startLoggingPlayerJoin == true){
  842. System.out.println(entry[0].getProfile().getName()+" joined the server.");
  843. }
  844.  
  845. if(entry[0].getProfile().getName().equals("FrostyMaingo")){
  846. startLoggingPlayerJoin = true;
  847. }
  848.  
  849. }
  850.  
  851. }*/
  852. else if(event.getPacket() instanceof ServerChatPacket) {
  853. message = event.<ServerChatPacket>getPacket().getMessage();
  854.  
  855. writeChatToFile();
  856. readChat(message.getFullText());
  857.  
  858. if(message instanceof TranslationMessage) {
  859. System.out.println("Received Translation Components: " + Arrays.toString(((TranslationMessage) message).getTranslationParams()));
  860. }
  861.  
  862. // event.getSession().disconnect("Finished");
  863.  
  864. }
  865.  
  866.  
  867. }
  868.  
  869.  
  870.  
  871.  
  872. @Override
  873. public void disconnected(DisconnectedEvent event) {
  874. System.out.println("Disconnected: " + Message.fromString(event.getReason()).getFullText());
  875. if(event.getCause() != null) {
  876. event.getCause().printStackTrace();
  877. }
  878. }
  879. });
  880.  
  881. client.getSession().connect();
  882.  
  883. }
  884.  
  885. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement