Advertisement
meku

Untitled

Nov 23rd, 2017
8,347
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 15.47 KB | None | 0 0
  1. package pl.koxlifeg.proxy.listen;
  2.  
  3. import org.spacehq.mc.auth.data.GameProfile;
  4. import org.spacehq.mc.auth.exception.request.RequestException;
  5. import org.spacehq.mc.protocol.MinecraftProtocol;
  6. import org.spacehq.mc.protocol.MinecraftConstants;
  7. import org.spacehq.mc.protocol.data.SubProtocol;
  8. import org.spacehq.mc.protocol.ServerLoginHandler;
  9. import org.spacehq.mc.protocol.data.game.EntityMetadata;
  10. import org.spacehq.mc.protocol.data.game.Position;
  11. import org.spacehq.mc.protocol.data.game.values.MessageType;
  12. import org.spacehq.mc.protocol.data.game.values.PlayerListEntry;
  13. import org.spacehq.mc.protocol.data.game.values.entity.player.GameMode;
  14. import org.spacehq.mc.protocol.data.game.values.scoreboard.ScoreboardPosition;
  15. import org.spacehq.mc.protocol.data.game.values.setting.Difficulty;
  16. import org.spacehq.mc.protocol.data.game.values.world.WorldType;
  17. import org.spacehq.mc.protocol.data.game.values.world.block.BlockChangeRecord;
  18. import org.spacehq.mc.protocol.data.message.ChatColor;
  19. import org.spacehq.mc.protocol.data.message.ChatFormat;
  20. import org.spacehq.mc.protocol.data.message.Message;
  21. import org.spacehq.mc.protocol.data.message.MessageStyle;
  22. import org.spacehq.mc.protocol.data.message.TextMessage;
  23. import org.spacehq.mc.protocol.data.message.TranslationMessage;
  24. import org.spacehq.mc.protocol.data.status.PlayerInfo;
  25. import org.spacehq.mc.protocol.data.status.ServerStatusInfo;
  26. import org.spacehq.mc.protocol.data.status.VersionInfo;
  27. import org.spacehq.mc.protocol.data.status.handler.ServerInfoBuilder;
  28. import org.spacehq.mc.protocol.data.status.handler.ServerInfoHandler;
  29. import org.spacehq.mc.protocol.data.status.handler.ServerPingTimeHandler;
  30. import org.spacehq.mc.protocol.packet.handshake.client.HandshakePacket;
  31. import org.spacehq.mc.protocol.packet.ingame.client.ClientChatPacket;
  32. import org.spacehq.mc.protocol.packet.ingame.client.ClientKeepAlivePacket;
  33. import org.spacehq.mc.protocol.packet.ingame.client.player.ClientPlayerInteractEntityPacket;
  34. import org.spacehq.mc.protocol.packet.ingame.client.window.ClientWindowActionPacket;
  35. import org.spacehq.mc.protocol.packet.ingame.server.ServerChatPacket;
  36. import org.spacehq.mc.protocol.packet.ingame.server.ServerJoinGamePacket;
  37. import org.spacehq.mc.protocol.packet.ingame.server.ServerTitlePacket;
  38. import org.spacehq.mc.protocol.packet.ingame.server.entity.player.ServerPlayerPositionRotationPacket;
  39. import org.spacehq.mc.protocol.packet.login.client.LoginStartPacket;
  40. import org.spacehq.mc.protocol.packet.login.server.LoginDisconnectPacket;
  41. import org.spacehq.mc.protocol.packet.login.server.LoginSetCompressionPacket;
  42. import org.spacehq.mc.protocol.packet.login.server.LoginSuccessPacket;
  43. import org.spacehq.mc.protocol.packet.status.client.StatusPingPacket;
  44. import org.spacehq.mc.protocol.packet.status.client.StatusQueryPacket;
  45. import org.spacehq.mc.protocol.packet.status.server.StatusPongPacket;
  46. import org.spacehq.mc.protocol.packet.status.server.StatusResponsePacket;
  47. import org.spacehq.packetlib.Client;
  48. import org.spacehq.packetlib.Server;
  49. import org.spacehq.packetlib.Session;
  50. import org.spacehq.packetlib.event.server.ServerAdapter;
  51. import org.spacehq.packetlib.event.server.ServerBoundEvent;
  52. import org.spacehq.packetlib.event.server.SessionAddedEvent;
  53. import org.spacehq.packetlib.event.server.SessionRemovedEvent;
  54. import org.spacehq.packetlib.event.session.ConnectedEvent;
  55. import org.spacehq.packetlib.event.session.DisconnectedEvent;
  56. import org.spacehq.packetlib.event.session.PacketReceivedEvent;
  57. import org.spacehq.packetlib.event.session.PacketSentEvent;
  58. import org.spacehq.packetlib.event.session.SessionAdapter;
  59. import org.spacehq.packetlib.event.session.SessionListener;
  60. import org.spacehq.packetlib.packet.Packet;
  61. import org.spacehq.packetlib.tcp.TcpSessionFactory;
  62.  
  63. import pl.koxlifeg.proxy.bots.Bot;
  64. import pl.koxlifeg.proxy.managers.BotManager;
  65. import pl.koxlifeg.proxy.managers.MacroManager;
  66. import pl.koxlifeg.proxy.managers.ProxyManager;
  67. import pl.koxlifeg.proxy.system.command.Cmd;
  68. import pl.koxlifeg.proxy.system.connect.JoinAddon;
  69. import pl.koxlifeg.proxy.system.messages.Config;
  70. import pl.koxlifeg.proxy.system.utils.Util;
  71.  
  72. import java.awt.image.BufferedImage;
  73. import java.net.Proxy;
  74. import java.util.ArrayList;
  75. import java.util.Arrays;
  76. import java.util.HashMap;
  77. import java.util.List;
  78.  
  79. @SuppressWarnings("unused")
  80. public class ProxyServer {
  81. private static String humanReadableByteCount(long bytes) {
  82. if (bytes < 1536L) {
  83. return bytes + " B";
  84. } else {
  85. int exp = (int) (Math.log((double) bytes) / Math.log(1536.0D));
  86. String pre = "KMGTPE".charAt(exp - 1) + "i";
  87. return String.format("%.2f %sB",
  88. (double) bytes / Math.pow(1024.0D, (double) exp), pre);
  89. }
  90. }
  91.  
  92. private static final boolean SPAWN_SERVER = true;
  93. private static final boolean VERIFY_USERS = false;
  94. private static final String HOST = "0.0.0.0";
  95. private static final int PORT = 25565;
  96. private static final Proxy PROXY = Proxy.NO_PROXY;
  97. private static final Proxy AUTH_PROXY = Proxy.NO_PROXY;
  98. private static final String USERNAME = "MBot";
  99. private static final String PASSWORD = "Password";
  100. static boolean join = false;
  101. static int i = 0;
  102. private static int antiterminated = 0;
  103. public static String ID = JoinAddon.generateID(5);
  104. public static HashMap<String, String> users = new HashMap<>();
  105. public static List<Session> gracze = new ArrayList<>();
  106. public static List<Session> logins = new ArrayList<>();
  107. public static void main(String[] args) {
  108. users.put("koxlifeg", "adesskitoziomal");
  109. users.put("Szewior", "kvbus");
  110. if (SPAWN_SERVER) {
  111. Server server = new Server(HOST, PORT, MinecraftProtocol.class,
  112. new TcpSessionFactory(PROXY));
  113. server.setGlobalFlag(MinecraftConstants.AUTH_PROXY_KEY,
  114. Proxy.NO_PROXY);
  115. server.setGlobalFlag(MinecraftConstants.VERIFY_USERS_KEY, false);
  116. server.setGlobalFlag(MinecraftConstants.SERVER_INFO_BUILDER_KEY,
  117. new ServerInfoBuilder() {
  118. @Override
  119. public ServerStatusInfo buildInfo(Session session) {
  120. return new ServerStatusInfo(
  121. new VersionInfo(
  122. MinecraftConstants.GAME_VERSION,
  123. MinecraftConstants.PROTOCOL_VERSION),
  124. new PlayerInfo(20, 0, new GameProfile[0]),
  125. new TextMessage(Config.Motd),null);
  126. }
  127. });
  128.  
  129. server.setGlobalFlag(MinecraftConstants.SERVER_LOGIN_HANDLER_KEY,
  130. new ServerLoginHandler() {
  131. @Override
  132. public void loggedIn(Session s) {
  133. GameProfile profile = s.getFlag(MinecraftConstants.PROFILE_KEY);
  134. System.out.println(profile.getName() + " Podlaczyl sie do proxy");
  135. if (antiterminated != 0) {
  136. if (users.containsKey(profile.getName())) {
  137. gracze.add(s);
  138. for (Session sesja : gracze) {
  139. Util.sendMsg(sesja, "&a" + profile.getName() + " &cDolaczyl do serwera proxy");
  140. }
  141. s.send(new ServerJoinGamePacket(0, false,GameMode.SURVIVAL, 0, Difficulty.PEACEFUL,10, WorldType.LARGE_BIOMES, false)); // USTAWIENIA WORLDA
  142. s.send(new ServerPlayerPositionRotationPacket(0,0,0,0,0));
  143. Util.sendTitle(s, Config.TitleLog);
  144. Util.sendSubTitle(s, Config.SubTitleLog);
  145. Util.sendMsgLOGIN(s, Config.Logged);
  146. s.send(new ServerTitlePacket(0, 35, 0));
  147. } else {
  148. Util.sendDisconnect(s, Config.Access);
  149. }
  150. } else {
  151. antiterminated++;
  152. }
  153. }
  154. });
  155. server.setGlobalFlag(
  156. MinecraftConstants.SERVER_COMPRESSION_THRESHOLD, 100);
  157. server.addListener(new ServerAdapter() {
  158. @Override
  159. public void sessionAdded(SessionAddedEvent event) {
  160. event.getSession().addListener(new SessionAdapter() {
  161. @Override
  162. public void packetReceived(PacketReceivedEvent event) {
  163. if (event.getPacket() instanceof ClientChatPacket) {
  164. ClientChatPacket packet = event.getPacket();
  165. GameProfile profile = event
  166. .getSession()
  167. .getFlag(MinecraftConstants.PROFILE_KEY);
  168. String[] vargs = packet.getMessage().split(" ");
  169. vargs[0] = vargs[0].toLowerCase();
  170. try {
  171. Cmd.check(vargs, event.getSession(), args);
  172. } catch (Exception e) {
  173. // TODO Auto-generated catch block
  174. e.printStackTrace();
  175. }
  176. }
  177. if (MacroManager.RECORDING) {
  178. if (!(event.getPacket() instanceof ClientChatPacket)) {
  179. MacroManager.packets.add(event.getPacket());
  180. MacroManager.MacroPackets++;
  181. MacroManager.MacroList++;
  182. if(MacroManager.MacroList == 100){
  183. MacroManager.MacroList = 0;
  184. Util.sendMsgMACRO(event.getSession(), Config.MacroAlready + MacroManager.MacroPackets);
  185. }
  186. } else {
  187. ClientChatPacket p = event.getPacket();
  188. if (!p.getMessage().contains(",macro")) {
  189. MacroManager.packets.add(event.getPacket());
  190. MacroManager.MacroPackets++;
  191. MacroManager.MacroList++;
  192. }
  193. }
  194. }
  195. if(event.getPacket() instanceof ClientChatPacket){
  196. ClientChatPacket p = event.getPacket();
  197. String[] vargs = packet.getMessage().split(" ");
  198. vargs[0] = vargs[0].toLowerCase();
  199. if(vargs[0].equalsIgnoreCase("@"){
  200. for (Session sesja : gracze) {
  201. Util.sendMsg(sesja, profile.getName() + p.getMessage());
  202. }
  203. }
  204. }
  205. if(BotManager.MOTHER == true){
  206. if (event.getPacket() instanceof ClientChatPacket) {
  207. ClientChatPacket p = event.getPacket();
  208. if (!p.getMessage().startsWith(",") && !p.getMessage().startsWith("@")) {
  209. Bot.sendPacket(event.getPacket());
  210. }//ClientPlayerInteractEntityPacket
  211. } else if (event.getPacket() instanceof ClientPlayerInteractEntityPacket) {} else if (event.getPacket() instanceof ClientWindowActionPacket) {
  212. ClientWindowActionPacket packet = event.getPacket();
  213. Bot.sendPacket(packet);
  214. } else {
  215. Bot.sendPacket(event.getPacket());
  216. }
  217. }
  218. if (JoinAddon.users.containsKey(event.getSession())) {
  219. if (event.getPacket() instanceof ClientChatPacket) {
  220. ClientChatPacket p = event.getPacket();
  221. if (!p.getMessage().startsWith(",") && !p.getMessage().startsWith("@")) {
  222. JoinAddon.sendPacket(event.getSession(), event.getPacket());
  223. }
  224. }else {
  225. JoinAddon.sendPacket(event.getSession(), event.getPacket());
  226. }
  227. }
  228. }
  229. });
  230. }
  231.  
  232. });
  233. ProxyManager.loadProxies();
  234. server.bind();
  235. }
  236.  
  237. status();
  238. login();
  239. }
  240.  
  241.  
  242. private static void status() {
  243. MinecraftProtocol protocol = new MinecraftProtocol(SubProtocol.STATUS);
  244. Client client = new Client(HOST, PORT, protocol, new TcpSessionFactory(
  245. PROXY));
  246. client.getSession().setFlag(MinecraftConstants.AUTH_PROXY_KEY,
  247. AUTH_PROXY);
  248. client.getSession().setFlag(MinecraftConstants.SERVER_INFO_HANDLER_KEY,
  249. new ServerInfoHandler() {
  250. @Override
  251. public void handle(Session session, ServerStatusInfo info) {
  252. System.out.println("koxlifeg-proxy by koxlifeg & meku");
  253. }
  254. });
  255.  
  256. client.getSession().setFlag(
  257. MinecraftConstants.SERVER_PING_TIME_HANDLER_KEY,
  258. new ServerPingTimeHandler() {
  259. @Override
  260. public void handle(Session session, long pingTime) {
  261. }
  262. });
  263.  
  264. client.getSession().connect(true);
  265.  
  266. while (client.getSession().isConnected()) {
  267.  
  268. try {
  269. Thread.sleep(5);
  270. } catch (InterruptedException e) {
  271. e.printStackTrace();
  272. }
  273. }
  274. }
  275.  
  276. private static void login() {
  277. MinecraftProtocol protocol = null;
  278. if (VERIFY_USERS) {
  279. try {
  280. protocol = new MinecraftProtocol(USERNAME, PASSWORD, false);
  281. System.out.println("Successfully authenticated user.");
  282. } catch (RequestException e) {
  283. e.printStackTrace();
  284. return;
  285. }
  286. } else {
  287. protocol = new MinecraftProtocol(USERNAME);
  288. }
  289. Client client = new Client(HOST, PORT, protocol, new TcpSessionFactory(
  290. PROXY));
  291. client.getSession().setFlag(MinecraftConstants.AUTH_PROXY_KEY,
  292. AUTH_PROXY);
  293. client.getSession().addListener(new SessionAdapter() {
  294. public void packetReceived(PacketReceivedEvent event) {
  295.  
  296. }
  297.  
  298. @Override
  299. public void disconnected(DisconnectedEvent event) {
  300. gracze.remove(event.getSession());
  301. ProxyServer.logins.remove(event.getSession());
  302. if (event.getCause() != null) {
  303. event.getCause().printStackTrace();
  304. }
  305. }
  306. });
  307.  
  308. client.getSession().connect();
  309. }
  310.  
  311. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement