Advertisement
Guest User

Untitled

a guest
Feb 4th, 2017
143
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.12 KB | None | 0 0
  1.  
  2. var readline = require('readline');
  3. var fs = require('fs');
  4. var color = require("ansi-color").set;
  5. var mc = require('minecraft-protocol');
  6. var states = mc.states;
  7. var util = require('util');
  8.  
  9.  
  10. var colors = {
  11. "black": 'black+white_bg',
  12. "dark_blue": 'blue',
  13. "dark_green": 'green',
  14. "dark_aqua": 'cyan',
  15. "dark_red": 'red',
  16. "dark_purple": 'magenta',
  17. "gold": 'yellow',
  18. "gray": 'black+white_bg',
  19. "dark_gray": 'black+white_bg',
  20. "blue": 'blue',
  21. "green": 'green',
  22. "aqua": 'cyan',
  23. "red": 'red',
  24. "light_purple": 'magenta',
  25. "yellow": 'yellow',
  26. "white": 'white',
  27. "obfuscated": 'blink',
  28. "bold": 'bold',
  29. "strikethrough": '',
  30. "underlined": 'underlined',
  31. "italic": '',
  32. "reset": 'white+black_bg'
  33. };
  34.  
  35. var dictionary = {
  36. "chat.stream.emote": "(%s) * %s %s",
  37. "chat.stream.text": "(%s) <%s> %s",
  38. "chat.type.achievement": "%s has just earned the achievement %s",
  39. "chat.type.admin": "[%s: %s]",
  40. "chat.type.announcement": "[%s] %s",
  41. "chat.type.emote": "* %s %s",
  42. "chat.type.text": "<%s> %s"
  43. };
  44.  
  45. var rl = readline.createInterface({
  46. input: process.stdin,
  47. output: process.stdout,
  48. terminal: false
  49. });
  50. var users = JSON.parse(fs.readFileSync('users.txt', 'utf8'));
  51. var userIndex = -1;
  52.  
  53.  
  54.  
  55. function indexOfUser(email){
  56.  
  57. }
  58. var user = ""
  59. var passwd = ""
  60.  
  61. function print_help() {
  62. console.log("usage: node client_chat.js <hostname> <port> <user> [<password>]");
  63. }
  64.  
  65. if(process.argv.length < 3) {
  66. if (users.users.length > 0){
  67. console.log("Too few arguments! setting user to user with email -> " + users.users[0].email );
  68. user = users.users[0].email;
  69. passwd = users.users[0].passwd;
  70. }else {
  71. console.log("Too few arguments!");
  72. process.exit(1);
  73. }
  74. } else {
  75. user = process.argv[2];
  76. passwd = process.argv[3];
  77. }
  78.  
  79. process.argv.forEach(function(val) {
  80. if(val == "-h") {
  81. print_help();
  82. process.exit(0);
  83. }
  84. });
  85.  
  86. var host = "mc.freakyville.net"
  87. var port = 25565
  88.  
  89. users.users.forEach(function iterate(item,index) {
  90. if (user == item.email){
  91. userIndex = index;
  92. console.log(userIndex);
  93. }
  94. });
  95.  
  96. if(host.indexOf(':') != -1) {
  97. port = host.substring(host.indexOf(':') + 1);
  98. host = host.substring(0, host.indexOf(':'));
  99. }
  100.  
  101.  
  102. console.log("connecting to " + host + ":" + port);
  103. console.log("user: " + user);
  104.  
  105.  
  106.  
  107. var client = mc.createClient({
  108. host: host,
  109. port: port,
  110. username: user,
  111. password: passwd,
  112. version: '1.10'
  113. });
  114.  
  115. client.on('kick_disconnect', function(packet) {
  116. console.info(color('Kicked for ' + packet.reason, "blink+red"));
  117. //process.exit(1);
  118. });
  119.  
  120. var chats = [];
  121.  
  122. client.on('connect', function() {
  123. console.info(color('Successfully connected to ' + host + ':' + port, "blink+green"));
  124. setTimeout(function(){
  125. //do what you need here
  126. client.write('chat', {message:"/skyblock"});
  127. setTimeout(function(){
  128. getAllKits();
  129. setTimeout(function(){
  130. client.end();
  131. },30000)
  132. }, 2000);
  133. }, 2000);
  134.  
  135.  
  136. });
  137.  
  138. client.on('disconnect', function(packet) {
  139. console.log('disconnected: '+ packet.reason);
  140. });
  141.  
  142. client.on('end', function() {
  143. console.log("Connection lost");
  144. console.log(userIndex + ":" + users.users.length);
  145. if ( users.users.length > userIndex ){
  146. userIndex++;
  147. require('child_process').exec(__dirname + '\\mybat.bat ' + users.users[userIndex].email + ' ' + users.users[userIndex].passwd,function (err, stdout, stderr) {
  148. if(err) {
  149. console.log(err);
  150. }
  151. });
  152. }
  153. });
  154.  
  155.  
  156.  
  157. client.on('error', function(err) {
  158. console.log("Error occured");
  159. console.log(err);
  160. //process.exit(1);
  161. });
  162.  
  163. client.on('state', function(newState) {
  164. if(newState === states.PLAY) {
  165. chats.forEach(function(chat) {
  166. client.write('chat', {message: chat});
  167. });
  168. }
  169. });
  170.  
  171. rl.on('line', function(line) {
  172. if(line == '') {
  173. return;
  174. } else if(line == '/quit') {
  175. console.info('Disconnected from ' + host + ':' + port);
  176. client.end();
  177. return;
  178. } else if(line == '/end') {
  179. console.info('Forcibly ended client');
  180. //process.exit(0);
  181. return;
  182. }
  183. if(!client.write('chat', {message: line})) {
  184. chats.push(line);
  185. }
  186. });
  187.  
  188. client.on('chat', function(packet) {
  189. var j = JSON.parse(packet.message);
  190. var chat = parseChat(j, {});
  191. var lastMsg = ""
  192. if (lastMsg != chat){
  193. lastMsg = chat
  194. console.info(chat);
  195. }
  196. });
  197.  
  198.  
  199. function sendChat(msg){
  200. client.write('chat', {message: msg});
  201. }
  202.  
  203. function getAllKits(){
  204. getKit('konge');
  205. getKit('op');
  206. getKit('titan');
  207. getKit('treasure');
  208. getKit('madchemist');
  209. }
  210.  
  211. function getKit(kit){
  212. sendChat('/kit ' + kit);
  213. }
  214.  
  215. function parseChat(chatObj, parentState) {
  216. function getColorize(parentState) {
  217. var myColor = "";
  218. if('color' in parentState) myColor += colors[parentState.color] + "+";
  219. if(parentState.bold) myColor += "bold+";
  220. if(parentState.underlined) myColor += "underline+";
  221. if(parentState.obfuscated) myColor += "obfuscated+";
  222. if(myColor.length > 0) myColor = myColor.slice(0, -1);
  223. return myColor;
  224. }
  225.  
  226. if(typeof chatObj === "string") {
  227. return color(chatObj, getColorize(parentState));
  228. } else {
  229. var chat = "";
  230. if('color' in chatObj) parentState.color = chatObj['color'];
  231. if('bold' in chatObj) parentState.bold = chatObj['bold'];
  232. if('italic' in chatObj) parentState.italic = chatObj['italic'];
  233. if('underlined' in chatObj) parentState.underlined = chatObj['underlined'];
  234. if('strikethrough' in chatObj) parentState.strikethrough = chatObj['strikethrough'];
  235. if('obfuscated' in chatObj) parentState.obfuscated = chatObj['obfuscated'];
  236.  
  237. if('text' in chatObj) {
  238. chat += color(chatObj.text, getColorize(parentState));
  239. } else if('translate' in chatObj && dictionary.hasOwnProperty(chatObj.translate)) {
  240. var args = [dictionary[chatObj.translate]];
  241. chatObj['with'].forEach(function(s) {
  242. args.push(parseChat(s, parentState));
  243. });
  244.  
  245. chat += color(util.format.apply(this, args), getColorize(parentState));
  246. }
  247. if (chatObj.extra) {
  248. chatObj.extra.forEach(function(item) {
  249. chat += parseChat(item, parentState);
  250. });
  251. }
  252. return chat;
  253. }
  254. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement