package com.alterdekim.hearthhack.component; import com.alterdekim.PegasusGame; import com.alterdekim.PegasusShared; import com.alterdekim.hearthhack.game.GameTag; import com.alterdekim.hearthhack.util.PegasusPacket; import com.alterdekim.hearthhack.util.Util; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.security.core.parameters.P; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.Socket; import java.util.Optional; @Slf4j @RequiredArgsConstructor public class GameConnection extends Thread { private final Socket client; private final GameServer parent; private OutputStream outToClient; private Long id; private boolean isLoggedIn = false; public void stopListeningAndDisconnect() { try { this.client.close(); this.interrupt(); } catch (IOException e) { log.error(e.getMessage()); } } private void processPacket( PegasusPacket packet ) throws Exception { log.info("PegasusPacket: type={}, context={}, size={}", packet.getType(), packet.getContext(), packet.getSize()); if( !isLoggedIn && packet.getType() != 168 ) stopListeningAndDisconnect(); switch (packet.getType()) { case 168: PegasusGame.Handshake handshake = PegasusGame.Handshake.parseFrom((byte[]) packet.getBody()); log.info("Handshake: {}", handshake); // game_handle: gameId // client_handle: userId // password: roomPassword GameRoom room = parent.getGamePool().getGameRoomById((long) handshake.getGameHandle()); log.info("Handshake check: {}", room); if( room == null || !room.getPassword().equals(handshake.getPassword()) || !room.getPlayers().stream().anyMatch(p -> p.getUserId().longValue() == handshake.getClientHandle()) ) { log.error("Handshake failed!"); return; } log.info("Handshake success!"); PegasusGame.GameSetup setup = PegasusGame.GameSetup.newBuilder() .setBoard(2) .setMaxFriendlyMinionsPerPlayer(7) .setMaxSecretsPerPlayer(5) .setKeepAliveFrequencySeconds(30) .setDisconnectWhenStuckSeconds(500) .build(); PegasusPacket result = new PegasusPacket(16, 0, setup); this.send(result); this.isLoggedIn = true; break; case 1: // GetGameState try { PegasusGame.PowerHistory powerHistory = PegasusGame.PowerHistory.newBuilder() .addList(PegasusGame.PowerHistoryData.newBuilder() .setCreateGame(PegasusGame.PowerHistoryCreateGame.newBuilder() .setGameEntity(PegasusGame.Entity.newBuilder() .setId(1) .addTags(PegasusGame.Tag.newBuilder() .setName(53) .setValue(1) ) .addTags(PegasusGame.Tag.newBuilder() .setName(198) .setValue(4) ) .addTags(PegasusGame.Tag.newBuilder() .setName(49) .setValue(1) ) .addTags(PegasusGame.Tag.newBuilder() .setName(204) .setValue(2) ) .addTags(PegasusGame.Tag.newBuilder() .setName(20) .setValue(1) ) .addTags(PegasusGame.Tag.newBuilder() .setName(202) .setValue(1) ) .addTags(PegasusGame.Tag.newBuilder() .setName(10) .setValue(85) ) ) .addPlayers(PegasusGame.Player.newBuilder() .setId(2) .setGameAccountId(PegasusShared.BnetId.newBuilder() .setHi(144115198130930503L) .setLo(78330215) ) .setCardBack(0) .setEntity(PegasusGame.Entity.newBuilder() .setId(3) .addTags(PegasusGame.Tag.newBuilder() .setName(50) .setValue(2) ) .addTags(PegasusGame.Tag.newBuilder() .setName(53) .setValue(3) ) .addTags(PegasusGame.Tag.newBuilder() .setName(399) .setValue(3) ) .addTags(PegasusGame.Tag.newBuilder() .setName(176) .setValue(10) ) .addTags(PegasusGame.Tag.newBuilder() .setName(7) .setValue(75) ) .addTags(PegasusGame.Tag.newBuilder() .setName(49) .setValue(1) ) .addTags(PegasusGame.Tag.newBuilder() .setName(202) .setValue(2) ) .addTags(PegasusGame.Tag.newBuilder() .setName(272) .setValue(1) ) .addTags(PegasusGame.Tag.newBuilder() .setName(29) .setValue(4) ) .addTags(PegasusGame.Tag.newBuilder() .setName(28) .setValue(10) ) .addTags(PegasusGame.Tag.newBuilder() .setName(30) .setValue(2) ) .addTags(PegasusGame.Tag.newBuilder() .setName(31) .setValue(2) ) .addTags(PegasusGame.Tag.newBuilder() .setName(23) .setValue(1) ) .addTags(PegasusGame.Tag.newBuilder() .setName(17) .setValue(1) ) .addTags(PegasusGame.Tag.newBuilder() .setName(27) .setValue(66) ) .addTags(PegasusGame.Tag.newBuilder() .setName(24) .setValue(1) ) ) ) .addPlayers(PegasusGame.Player.newBuilder() .setId(1) .setGameAccountId(PegasusShared.BnetId.newBuilder() .setHi(144115198130930503L) .setLo(77500085) ) .setCardBack(0) .setEntity(PegasusGame.Entity.newBuilder() .setId(2) .addTags(PegasusGame.Tag.newBuilder() .setName(50) .setValue(1) ) .addTags(PegasusGame.Tag.newBuilder() .setName(53) .setValue(2) ) .addTags(PegasusGame.Tag.newBuilder() .setName(399) .setValue(4) ) .addTags(PegasusGame.Tag.newBuilder() .setName(176) .setValue(10) ) .addTags(PegasusGame.Tag.newBuilder() .setName(7) .setValue(75) ) .addTags(PegasusGame.Tag.newBuilder() .setName(202) .setValue(2) ) .addTags(PegasusGame.Tag.newBuilder() .setName(272) .setValue(1) ) .addTags(PegasusGame.Tag.newBuilder() .setName(29) .setValue(4) ) .addTags(PegasusGame.Tag.newBuilder() .setName(28) .setValue(10) ) .addTags(PegasusGame.Tag.newBuilder() .setName(30) .setValue(1) ) .addTags(PegasusGame.Tag.newBuilder() .setName(31) .setValue(1) ) .addTags(PegasusGame.Tag.newBuilder() .setName(49) .setValue(1) ) .addTags(PegasusGame.Tag.newBuilder() .setName(17) .setValue(1) ) .addTags(PegasusGame.Tag.newBuilder() .setName(27) .setValue(64) ) ) ) ) ) .addList(PegasusGame.PowerHistoryData.newBuilder() .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() .setEntity(34) .setName("") .addTags(PegasusGame.Tag.newBuilder() .setName(53) .setValue(34) ) .addTags(PegasusGame.Tag.newBuilder() .setName(50) .setValue(2) ) .addTags(PegasusGame.Tag.newBuilder() .setName(49) .setValue(2) ) ) ) .addList(PegasusGame.PowerHistoryData.newBuilder() .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() .setEntity(35) .setName("") .addTags(PegasusGame.Tag.newBuilder() .setName(53) .setValue(35) ) .addTags(PegasusGame.Tag.newBuilder() .setName(50) .setValue(2) ) .addTags(PegasusGame.Tag.newBuilder() .setName(49) .setValue(2) ) ) ) .addList(PegasusGame.PowerHistoryData.newBuilder() .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() .setEntity(36) .setName("") .addTags(PegasusGame.Tag.newBuilder() .setName(53) .setValue(36) ) .addTags(PegasusGame.Tag.newBuilder() .setName(50) .setValue(2) ) .addTags(PegasusGame.Tag.newBuilder() .setName(49) .setValue(2) ) ) ) .addList(PegasusGame.PowerHistoryData.newBuilder() .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() .setEntity(37) .setName("EX1_593") .addTags(PegasusGame.Tag.newBuilder() .setName(53) .setValue(37) ) .addTags(PegasusGame.Tag.newBuilder() .setName(50) .setValue(2) ) .addTags(PegasusGame.Tag.newBuilder() .setName(263) .setValue(3) ) .addTags(PegasusGame.Tag.newBuilder() .setName(49) .setValue(3) ) .addTags(PegasusGame.Tag.newBuilder() .setName(321) .setValue(1) ) .addTags(PegasusGame.Tag.newBuilder() .setName(183) .setValue(2) ) .addTags(PegasusGame.Tag.newBuilder() .setName(218) .setValue(1) ) .addTags(PegasusGame.Tag.newBuilder() .setName(45) .setValue(2) ) .addTags(PegasusGame.Tag.newBuilder() .setName(47) .setValue(4) ) .addTags(PegasusGame.Tag.newBuilder() .setName(48) .setValue(4) ) .addTags(PegasusGame.Tag.newBuilder() .setName(202) .setValue(4) ) .addTags(PegasusGame.Tag.newBuilder() .setName(203) .setValue(2) ) .addTags(PegasusGame.Tag.newBuilder() .setName(201) .setValue(3) ) ) ) .addList(PegasusGame.PowerHistoryData.newBuilder() .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() .setEntity(38) .setName("EX1_383") .addTags(PegasusGame.Tag.newBuilder() .setName(53) .setValue(38) ) .addTags(PegasusGame.Tag.newBuilder() .setName(50) .setValue(2) ) .addTags(PegasusGame.Tag.newBuilder() .setName(263) .setValue(1) ) .addTags(PegasusGame.Tag.newBuilder() .setName(49) .setValue(3) ) .addTags(PegasusGame.Tag.newBuilder() .setName(251) .setValue(1) ) .addTags(PegasusGame.Tag.newBuilder() .setName(194) .setValue(0) ) .addTags(PegasusGame.Tag.newBuilder() .setName(321) .setValue(1) ) .addTags(PegasusGame.Tag.newBuilder() .setName(183) .setValue(3) ) .addTags(PegasusGame.Tag.newBuilder() .setName(190) .setValue(0) ) .addTags(PegasusGame.Tag.newBuilder() .setName(330) .setValue(0) ) .addTags(PegasusGame.Tag.newBuilder() .setName(331) .setValue(0) ) .addTags(PegasusGame.Tag.newBuilder() .setName(45) .setValue(16) ) .addTags(PegasusGame.Tag.newBuilder() .setName(47) .setValue(3) ) .addTags(PegasusGame.Tag.newBuilder() .setName(114) .setValue(1) ) .addTags(PegasusGame.Tag.newBuilder() .setName(48) .setValue(3) ) .addTags(PegasusGame.Tag.newBuilder() .setName(199) .setValue(5) ) .addTags(PegasusGame.Tag.newBuilder() .setName(202) .setValue(4) ) .addTags(PegasusGame.Tag.newBuilder() .setName(203) .setValue(5) ) .addTags(PegasusGame.Tag.newBuilder() .setName(217) .setValue(0) ) .addTags(PegasusGame.Tag.newBuilder() .setName(201) .setValue(3) ) ) ) .addList(PegasusGame.PowerHistoryData.newBuilder() .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() .setEntity(39) .setName("") .addTags(PegasusGame.Tag.newBuilder() .setName(53) .setValue(39) ) .addTags(PegasusGame.Tag.newBuilder() .setName(50) .setValue(2) ) .addTags(PegasusGame.Tag.newBuilder() .setName(49) .setValue(2) ) ) ) .addList(PegasusGame.PowerHistoryData.newBuilder() .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() .setEntity(40) .setName("") .addTags(PegasusGame.Tag.newBuilder() .setName(53) .setValue(40) ) .addTags(PegasusGame.Tag.newBuilder() .setName(50) .setValue(2) ) .addTags(PegasusGame.Tag.newBuilder() .setName(49) .setValue(2) ) ) ) .addList(PegasusGame.PowerHistoryData.newBuilder() .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() .setEntity(41) .setName("") .addTags(PegasusGame.Tag.newBuilder() .setName(53) .setValue(41) ) .addTags(PegasusGame.Tag.newBuilder() .setName(50) .setValue(2) ) .addTags(PegasusGame.Tag.newBuilder() .setName(49) .setValue(2) ) ) ) .addList(PegasusGame.PowerHistoryData.newBuilder() .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() .setEntity(42) .setName("") .addTags(PegasusGame.Tag.newBuilder() .setName(53) .setValue(42) ) .addTags(PegasusGame.Tag.newBuilder() .setName(50) .setValue(2) ) .addTags(PegasusGame.Tag.newBuilder() .setName(49) .setValue(2) ) ) ) .addList(PegasusGame.PowerHistoryData.newBuilder() .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() .setEntity(43) .setName("") .addTags(PegasusGame.Tag.newBuilder() .setName(53) .setValue(43) ) .addTags(PegasusGame.Tag.newBuilder() .setName(50) .setValue(2) ) .addTags(PegasusGame.Tag.newBuilder() .setName(49) .setValue(2) ) ) ) .addList(PegasusGame.PowerHistoryData.newBuilder() .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() .setEntity(44) .setName("") .addTags(PegasusGame.Tag.newBuilder() .setName(53) .setValue(44) ) .addTags(PegasusGame.Tag.newBuilder() .setName(50) .setValue(2) ) .addTags(PegasusGame.Tag.newBuilder() .setName(49) .setValue(2) ) ) ) .addList(PegasusGame.PowerHistoryData.newBuilder() .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() .setEntity(45) .setName("") .addTags(PegasusGame.Tag.newBuilder() .setName(53) .setValue(45) ) .addTags(PegasusGame.Tag.newBuilder() .setName(50) .setValue(2) ) .addTags(PegasusGame.Tag.newBuilder() .setName(49) .setValue(2) ) ) ) .addList(PegasusGame.PowerHistoryData.newBuilder() .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() .setEntity(46) .setName("") .addTags(PegasusGame.Tag.newBuilder() .setName(53) .setValue(46) ) .addTags(PegasusGame.Tag.newBuilder() .setName(50) .setValue(2) ) .addTags(PegasusGame.Tag.newBuilder() .setName(49) .setValue(2) ) ) ) .addList(PegasusGame.PowerHistoryData.newBuilder() .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() .setEntity(47) .setName("") .addTags(PegasusGame.Tag.newBuilder() .setName(53) .setValue(47) ) .addTags(PegasusGame.Tag.newBuilder() .setName(50) .setValue(2) ) .addTags(PegasusGame.Tag.newBuilder() .setName(49) .setValue(2) ) ) ) .addList(PegasusGame.PowerHistoryData.newBuilder() .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() .setEntity(48) .setName("") .addTags(PegasusGame.Tag.newBuilder() .setName(53) .setValue(48) ) .addTags(PegasusGame.Tag.newBuilder() .setName(50) .setValue(2) ) .addTags(PegasusGame.Tag.newBuilder() .setName(49) .setValue(2) ) ) ) .addList(PegasusGame.PowerHistoryData.newBuilder() .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() .setEntity(49) .setName("") .addTags(PegasusGame.Tag.newBuilder() .setName(53) .setValue(49) ) .addTags(PegasusGame.Tag.newBuilder() .setName(50) .setValue(2) ) .addTags(PegasusGame.Tag.newBuilder() .setName(49) .setValue(2) ) ) ) .addList(PegasusGame.PowerHistoryData.newBuilder() .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() .setEntity(50) .setName("") .addTags(PegasusGame.Tag.newBuilder() .setName(53) .setValue(50) ) .addTags(PegasusGame.Tag.newBuilder() .setName(50) .setValue(2) ) .addTags(PegasusGame.Tag.newBuilder() .setName(49) .setValue(2) ) ) ) .addList(PegasusGame.PowerHistoryData.newBuilder() .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() .setEntity(51) .setName("") .addTags(PegasusGame.Tag.newBuilder() .setName(53) .setValue(51) ) .addTags(PegasusGame.Tag.newBuilder() .setName(50) .setValue(2) ) .addTags(PegasusGame.Tag.newBuilder() .setName(49) .setValue(2) ) ) ) .addList(PegasusGame.PowerHistoryData.newBuilder() .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() .setEntity(52) .setName("") .addTags(PegasusGame.Tag.newBuilder() .setName(53) .setValue(52) ) .addTags(PegasusGame.Tag.newBuilder() .setName(50) .setValue(2) ) .addTags(PegasusGame.Tag.newBuilder() .setName(49) .setValue(2) ) ) ) .addList(PegasusGame.PowerHistoryData.newBuilder() .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() .setEntity(53) .setName("") .addTags(PegasusGame.Tag.newBuilder() .setName(53) .setValue(53) ) .addTags(PegasusGame.Tag.newBuilder() .setName(50) .setValue(2) ) .addTags(PegasusGame.Tag.newBuilder() .setName(49) .setValue(2) ) ) ) .addList(PegasusGame.PowerHistoryData.newBuilder() .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() .setEntity(54) .setName("LOEA16_9") .addTags(PegasusGame.Tag.newBuilder() .setName(53) .setValue(54) ) .addTags(PegasusGame.Tag.newBuilder() .setName(50) .setValue(2) ) .addTags(PegasusGame.Tag.newBuilder() .setName(263) .setValue(2) ) .addTags(PegasusGame.Tag.newBuilder() .setName(49) .setValue(3) ) .addTags(PegasusGame.Tag.newBuilder() .setName(48) .setValue(0) ) .addTags(PegasusGame.Tag.newBuilder() .setName(330) .setValue(0) ) .addTags(PegasusGame.Tag.newBuilder() .setName(331) .setValue(0) ) .addTags(PegasusGame.Tag.newBuilder() .setName(202) .setValue(5) ) .addTags(PegasusGame.Tag.newBuilder() .setName(183) .setValue(20) ) ) ) .addList(PegasusGame.PowerHistoryData.newBuilder() .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() .setEntity(55) .setName("") .addTags(PegasusGame.Tag.newBuilder() .setName(53) .setValue(55) ) .addTags(PegasusGame.Tag.newBuilder() .setName(50) .setValue(2) ) .addTags(PegasusGame.Tag.newBuilder() .setName(49) .setValue(2) ) ) ) .addList(PegasusGame.PowerHistoryData.newBuilder() .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() .setEntity(56) .setName("") .addTags(PegasusGame.Tag.newBuilder() .setName(53) .setValue(56) ) .addTags(PegasusGame.Tag.newBuilder() .setName(50) .setValue(2) ) .addTags(PegasusGame.Tag.newBuilder() .setName(49) .setValue(2) ) ) ) .addList(PegasusGame.PowerHistoryData.newBuilder() .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() .setEntity(57) .setName("") .addTags(PegasusGame.Tag.newBuilder() .setName(53) .setValue(57) ) .addTags(PegasusGame.Tag.newBuilder() .setName(50) .setValue(2) ) .addTags(PegasusGame.Tag.newBuilder() .setName(49) .setValue(2) ) ) ) .addList(PegasusGame.PowerHistoryData.newBuilder() .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() .setEntity(58) .setName("") .addTags(PegasusGame.Tag.newBuilder() .setName(53) .setValue(58) ) .addTags(PegasusGame.Tag.newBuilder() .setName(50) .setValue(2) ) .addTags(PegasusGame.Tag.newBuilder() .setName(49) .setValue(2) ) ) ) .addList(PegasusGame.PowerHistoryData.newBuilder() .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() .setEntity(59) .setName("") .addTags(PegasusGame.Tag.newBuilder() .setName(53) .setValue(59) ) .addTags(PegasusGame.Tag.newBuilder() .setName(50) .setValue(2) ) .addTags(PegasusGame.Tag.newBuilder() .setName(49) .setValue(2) ) ) ) .addList(PegasusGame.PowerHistoryData.newBuilder() .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() .setEntity(60) .setName("") .addTags(PegasusGame.Tag.newBuilder() .setName(53) .setValue(60) ) .addTags(PegasusGame.Tag.newBuilder() .setName(50) .setValue(2) ) .addTags(PegasusGame.Tag.newBuilder() .setName(49) .setValue(2) ) ) ) .addList(PegasusGame.PowerHistoryData.newBuilder() .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() .setEntity(61) .setName("") .addTags(PegasusGame.Tag.newBuilder() .setName(53) .setValue(61) ) .addTags(PegasusGame.Tag.newBuilder() .setName(50) .setValue(2) ) .addTags(PegasusGame.Tag.newBuilder() .setName(49) .setValue(2) ) ) ) .addList(PegasusGame.PowerHistoryData.newBuilder() .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() .setEntity(62) .setName("") .addTags(PegasusGame.Tag.newBuilder() .setName(53) .setValue(62) ) .addTags(PegasusGame.Tag.newBuilder() .setName(50) .setValue(2) ) .addTags(PegasusGame.Tag.newBuilder() .setName(49) .setValue(2) ) ) ) .addList(PegasusGame.PowerHistoryData.newBuilder() .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() .setEntity(63) .setName("") .addTags(PegasusGame.Tag.newBuilder() .setName(53) .setValue(63) ) .addTags(PegasusGame.Tag.newBuilder() .setName(50) .setValue(2) ) .addTags(PegasusGame.Tag.newBuilder() .setName(49) .setValue(2) ) ) ) .addList(PegasusGame.PowerHistoryData.newBuilder() .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() .setEntity(4) .setName("") .addTags(PegasusGame.Tag.newBuilder() .setName(53) .setValue(4) ) .addTags(PegasusGame.Tag.newBuilder() .setName(50) .setValue(1) ) .addTags(PegasusGame.Tag.newBuilder() .setName(49) .setValue(2) ) ) ) .addList(PegasusGame.PowerHistoryData.newBuilder() .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() .setEntity(5) .setName("") .addTags(PegasusGame.Tag.newBuilder() .setName(53) .setValue(5) ) .addTags(PegasusGame.Tag.newBuilder() .setName(50) .setValue(1) ) .addTags(PegasusGame.Tag.newBuilder() .setName(49) .setValue(2) ) ) ) .addList(PegasusGame.PowerHistoryData.newBuilder() .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() .setEntity(6) .setName("") .addTags(PegasusGame.Tag.newBuilder() .setName(53) .setValue(6) ) .addTags(PegasusGame.Tag.newBuilder() .setName(50) .setValue(1) ) .addTags(PegasusGame.Tag.newBuilder() .setName(49) .setValue(2) ) ) ) .addList(PegasusGame.PowerHistoryData.newBuilder() .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() .setEntity(7) .setName("") .addTags(PegasusGame.Tag.newBuilder() .setName(53) .setValue(7) ) .addTags(PegasusGame.Tag.newBuilder() .setName(50) .setValue(1) ) .addTags(PegasusGame.Tag.newBuilder() .setName(49) .setValue(2) ) ) ) .addList(PegasusGame.PowerHistoryData.newBuilder() .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() .setEntity(8) .setName("") .addTags(PegasusGame.Tag.newBuilder() .setName(53) .setValue(8) ) .addTags(PegasusGame.Tag.newBuilder() .setName(50) .setValue(1) ) .addTags(PegasusGame.Tag.newBuilder() .setName(49) .setValue(2) ) ) ) .addList(PegasusGame.PowerHistoryData.newBuilder() .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() .setEntity(9) .setName("") .addTags(PegasusGame.Tag.newBuilder() .setName(53) .setValue(9) ) .addTags(PegasusGame.Tag.newBuilder() .setName(50) .setValue(1) ) .addTags(PegasusGame.Tag.newBuilder() .setName(49) .setValue(2) ) ) ) .addList(PegasusGame.PowerHistoryData.newBuilder() .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() .setEntity(10) .setName("") .addTags(PegasusGame.Tag.newBuilder() .setName(53) .setValue(10) ) .addTags(PegasusGame.Tag.newBuilder() .setName(50) .setValue(1) ) .addTags(PegasusGame.Tag.newBuilder() .setName(49) .setValue(2) ) ) ) .addList(PegasusGame.PowerHistoryData.newBuilder() .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() .setEntity(11) .setName("") .addTags(PegasusGame.Tag.newBuilder() .setName(53) .setValue(11) ) .addTags(PegasusGame.Tag.newBuilder() .setName(50) .setValue(1) ) .addTags(PegasusGame.Tag.newBuilder() .setName(263) .setValue(4) ) .addTags(PegasusGame.Tag.newBuilder() .setName(49) .setValue(3) ) ) ) .addList(PegasusGame.PowerHistoryData.newBuilder() .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() .setEntity(12) .setName("") .addTags(PegasusGame.Tag.newBuilder() .setName(53) .setValue(12) ) .addTags(PegasusGame.Tag.newBuilder() .setName(50) .setValue(1) ) .addTags(PegasusGame.Tag.newBuilder() .setName(49) .setValue(2) ) ) ) .addList(PegasusGame.PowerHistoryData.newBuilder() .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() .setEntity(13) .setName("") .addTags(PegasusGame.Tag.newBuilder() .setName(53) .setValue(13) ) .addTags(PegasusGame.Tag.newBuilder() .setName(50) .setValue(1) ) .addTags(PegasusGame.Tag.newBuilder() .setName(49) .setValue(2) ) ) ) .addList(PegasusGame.PowerHistoryData.newBuilder() .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() .setEntity(14) .setName("") .addTags(PegasusGame.Tag.newBuilder() .setName(53) .setValue(14) ) .addTags(PegasusGame.Tag.newBuilder() .setName(50) .setValue(1) ) .addTags(PegasusGame.Tag.newBuilder() .setName(49) .setValue(2) ) ) ) .addList(PegasusGame.PowerHistoryData.newBuilder() .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() .setEntity(15) .setName("") .addTags(PegasusGame.Tag.newBuilder() .setName(53) .setValue(15) ) .addTags(PegasusGame.Tag.newBuilder() .setName(50) .setValue(1) ) .addTags(PegasusGame.Tag.newBuilder() .setName(49) .setValue(2) ) ) ) .addList(PegasusGame.PowerHistoryData.newBuilder() .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() .setEntity(16) .setName("") .addTags(PegasusGame.Tag.newBuilder() .setName(53) .setValue(16) ) .addTags(PegasusGame.Tag.newBuilder() .setName(50) .setValue(1) ) .addTags(PegasusGame.Tag.newBuilder() .setName(49) .setValue(2) ) ) ) .addList(PegasusGame.PowerHistoryData.newBuilder() .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() .setEntity(17) .setName("") .addTags(PegasusGame.Tag.newBuilder() .setName(53) .setValue(17) ) .addTags(PegasusGame.Tag.newBuilder() .setName(50) .setValue(1) ) .addTags(PegasusGame.Tag.newBuilder() .setName(263) .setValue(3) ) .addTags(PegasusGame.Tag.newBuilder() .setName(49) .setValue(3) ) ) ) .addList(PegasusGame.PowerHistoryData.newBuilder() .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() .setEntity(18) .setName("") .addTags(PegasusGame.Tag.newBuilder() .setName(53) .setValue(18) ) .addTags(PegasusGame.Tag.newBuilder() .setName(50) .setValue(1) ) .addTags(PegasusGame.Tag.newBuilder() .setName(49) .setValue(2) ) ) ) .addList(PegasusGame.PowerHistoryData.newBuilder() .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() .setEntity(19) .setName("") .addTags(PegasusGame.Tag.newBuilder() .setName(53) .setValue(19) ) .addTags(PegasusGame.Tag.newBuilder() .setName(50) .setValue(1) ) .addTags(PegasusGame.Tag.newBuilder() .setName(49) .setValue(2) ) ) ) .addList(PegasusGame.PowerHistoryData.newBuilder() .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() .setEntity(20) .setName("") .addTags(PegasusGame.Tag.newBuilder() .setName(53) .setValue(20) ) .addTags(PegasusGame.Tag.newBuilder() .setName(50) .setValue(1) ) .addTags(PegasusGame.Tag.newBuilder() .setName(49) .setValue(2) ) ) ) .addList(PegasusGame.PowerHistoryData.newBuilder() .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() .setEntity(21) .setName("") .addTags(PegasusGame.Tag.newBuilder() .setName(53) .setValue(21) ) .addTags(PegasusGame.Tag.newBuilder() .setName(50) .setValue(1) ) .addTags(PegasusGame.Tag.newBuilder() .setName(263) .setValue(1) ) .addTags(PegasusGame.Tag.newBuilder() .setName(49) .setValue(3) ) ) ) .addList(PegasusGame.PowerHistoryData.newBuilder() .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() .setEntity(22) .setName("") .addTags(PegasusGame.Tag.newBuilder() .setName(53) .setValue(22) ) .addTags(PegasusGame.Tag.newBuilder() .setName(50) .setValue(1) ) .addTags(PegasusGame.Tag.newBuilder() .setName(49) .setValue(2) ) ) ) .addList(PegasusGame.PowerHistoryData.newBuilder() .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() .setEntity(23) .setName("") .addTags(PegasusGame.Tag.newBuilder() .setName(53) .setValue(23) ) .addTags(PegasusGame.Tag.newBuilder() .setName(50) .setValue(1) ) .addTags(PegasusGame.Tag.newBuilder() .setName(49) .setValue(2) ) ) ) .addList(PegasusGame.PowerHistoryData.newBuilder() .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() .setEntity(24) .setName("") .addTags(PegasusGame.Tag.newBuilder() .setName(53) .setValue(24) ) .addTags(PegasusGame.Tag.newBuilder() .setName(50) .setValue(1) ) .addTags(PegasusGame.Tag.newBuilder() .setName(49) .setValue(2) ) ) ) .addList(PegasusGame.PowerHistoryData.newBuilder() .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() .setEntity(25) .setName("") .addTags(PegasusGame.Tag.newBuilder() .setName(53) .setValue(25) ) .addTags(PegasusGame.Tag.newBuilder() .setName(50) .setValue(1) ) .addTags(PegasusGame.Tag.newBuilder() .setName(49) .setValue(2) ) ) ) .addList(PegasusGame.PowerHistoryData.newBuilder() .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() .setEntity(26) .setName("") .addTags(PegasusGame.Tag.newBuilder() .setName(53) .setValue(26) ) .addTags(PegasusGame.Tag.newBuilder() .setName(50) .setValue(1) ) .addTags(PegasusGame.Tag.newBuilder() .setName(263) .setValue(2) ) .addTags(PegasusGame.Tag.newBuilder() .setName(49) .setValue(3) ) ) ) .addList(PegasusGame.PowerHistoryData.newBuilder() .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() .setEntity(27) .setName("") .addTags(PegasusGame.Tag.newBuilder() .setName(53) .setValue(27) ) .addTags(PegasusGame.Tag.newBuilder() .setName(50) .setValue(1) ) .addTags(PegasusGame.Tag.newBuilder() .setName(49) .setValue(2) ) ) ) .addList(PegasusGame.PowerHistoryData.newBuilder() .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() .setEntity(28) .setName("") .addTags(PegasusGame.Tag.newBuilder() .setName(53) .setValue(28) ) .addTags(PegasusGame.Tag.newBuilder() .setName(50) .setValue(1) ) .addTags(PegasusGame.Tag.newBuilder() .setName(49) .setValue(2) ) ) ) .addList(PegasusGame.PowerHistoryData.newBuilder() .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() .setEntity(29) .setName("") .addTags(PegasusGame.Tag.newBuilder() .setName(53) .setValue(29) ) .addTags(PegasusGame.Tag.newBuilder() .setName(50) .setValue(1) ) .addTags(PegasusGame.Tag.newBuilder() .setName(49) .setValue(2) ) ) ) .addList(PegasusGame.PowerHistoryData.newBuilder() .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() .setEntity(30) .setName("") .addTags(PegasusGame.Tag.newBuilder() .setName(53) .setValue(30) ) .addTags(PegasusGame.Tag.newBuilder() .setName(50) .setValue(1) ) .addTags(PegasusGame.Tag.newBuilder() .setName(49) .setValue(2) ) ) ) .addList(PegasusGame.PowerHistoryData.newBuilder() .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() .setEntity(31) .setName("") .addTags(PegasusGame.Tag.newBuilder() .setName(53) .setValue(31) ) .addTags(PegasusGame.Tag.newBuilder() .setName(50) .setValue(1) ) .addTags(PegasusGame.Tag.newBuilder() .setName(49) .setValue(2) ) ) ) .addList(PegasusGame.PowerHistoryData.newBuilder() .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() .setEntity(32) .setName("") .addTags(PegasusGame.Tag.newBuilder() .setName(53) .setValue(32) ) .addTags(PegasusGame.Tag.newBuilder() .setName(50) .setValue(1) ) .addTags(PegasusGame.Tag.newBuilder() .setName(49) .setValue(2) ) ) ) .addList(PegasusGame.PowerHistoryData.newBuilder() .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() .setEntity(33) .setName("") .addTags(PegasusGame.Tag.newBuilder() .setName(53) .setValue(33) ) .addTags(PegasusGame.Tag.newBuilder() .setName(50) .setValue(1) ) .addTags(PegasusGame.Tag.newBuilder() .setName(49) .setValue(2) ) ) ) .addList(PegasusGame.PowerHistoryData.newBuilder() .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() .setEntity(66) .setName("LOEA04_01") .addTags(PegasusGame.Tag.newBuilder() .setName(49) .setValue(1) ) .addTags(PegasusGame.Tag.newBuilder() .setName(53) .setValue(66) ) .addTags(PegasusGame.Tag.newBuilder() .setName(50) .setValue(2) ) .addTags(PegasusGame.Tag.newBuilder() .setName(183) .setValue(20) ) .addTags(PegasusGame.Tag.newBuilder() .setName(380) .setValue(16231) ) .addTags(PegasusGame.Tag.newBuilder() .setName(330) .setValue(0) ) .addTags(PegasusGame.Tag.newBuilder() .setName(331) .setValue(0) ) .addTags(PegasusGame.Tag.newBuilder() .setName(45) .setValue(30) ) .addTags(PegasusGame.Tag.newBuilder() .setName(202) .setValue(3) ) ) ) .addList(PegasusGame.PowerHistoryData.newBuilder() .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() .setEntity(67) .setName("CS1h_001") .addTags(PegasusGame.Tag.newBuilder() .setName(313) .setValue(66) ) .addTags(PegasusGame.Tag.newBuilder() .setName(49) .setValue(1) ) .addTags(PegasusGame.Tag.newBuilder() .setName(53) .setValue(67) ) .addTags(PegasusGame.Tag.newBuilder() .setName(50) .setValue(2) ) .addTags(PegasusGame.Tag.newBuilder() .setName(49) .setValue(1) ) .addTags(PegasusGame.Tag.newBuilder() .setName(251) .setValue(1) ) .addTags(PegasusGame.Tag.newBuilder() .setName(183) .setValue(2) ) .addTags(PegasusGame.Tag.newBuilder() .setName(48) .setValue(2) ) .addTags(PegasusGame.Tag.newBuilder() .setName(199) .setValue(6) ) .addTags(PegasusGame.Tag.newBuilder() .setName(202) .setValue(10) ) .addTags(PegasusGame.Tag.newBuilder() .setName(203) .setValue(2) ) .addTags(PegasusGame.Tag.newBuilder() .setName(201) .setValue(3) ) ) ) .addList(PegasusGame.PowerHistoryData.newBuilder() .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() .setEntity(64) .setName("TB_SPT_Boss") .addTags(PegasusGame.Tag.newBuilder() .setName(49) .setValue(1) ) .addTags(PegasusGame.Tag.newBuilder() .setName(53) .setValue(64) ) .addTags(PegasusGame.Tag.newBuilder() .setName(50) .setValue(1) ) .addTags(PegasusGame.Tag.newBuilder() .setName(47) .setValue(0) ) .addTags(PegasusGame.Tag.newBuilder() .setName(45) .setValue(30) ) .addTags(PegasusGame.Tag.newBuilder() .setName(202) .setValue(3) ) .addTags(PegasusGame.Tag.newBuilder() .setName(183) .setValue(18) ) .addTags(PegasusGame.Tag.newBuilder() .setName(380) .setValue(39537) ) ) ) .addList(PegasusGame.PowerHistoryData.newBuilder() .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() .setEntity(65) .setName("CS1h_001") .addTags(PegasusGame.Tag.newBuilder() .setName(313) .setValue(64) ) .addTags(PegasusGame.Tag.newBuilder() .setName(49) .setValue(1) ) .addTags(PegasusGame.Tag.newBuilder() .setName(53) .setValue(65) ) .addTags(PegasusGame.Tag.newBuilder() .setName(50) .setValue(1) ) .addTags(PegasusGame.Tag.newBuilder() .setName(49) .setValue(1) ) .addTags(PegasusGame.Tag.newBuilder() .setName(251) .setValue(1) ) .addTags(PegasusGame.Tag.newBuilder() .setName(183) .setValue(2) ) .addTags(PegasusGame.Tag.newBuilder() .setName(48) .setValue(2) ) .addTags(PegasusGame.Tag.newBuilder() .setName(199) .setValue(6) ) .addTags(PegasusGame.Tag.newBuilder() .setName(202) .setValue(10) ) .addTags(PegasusGame.Tag.newBuilder() .setName(203) .setValue(2) ) .addTags(PegasusGame.Tag.newBuilder() .setName(201) .setValue(3) ) ) ) .addList(PegasusGame.PowerHistoryData.newBuilder() .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() .setEntity(68) .setName("") .addTags(PegasusGame.Tag.newBuilder() .setName(53) .setValue(68) ) .addTags(PegasusGame.Tag.newBuilder() .setName(50) .setValue(1) ) .addTags(PegasusGame.Tag.newBuilder() .setName(263) .setValue(5) ) .addTags(PegasusGame.Tag.newBuilder() .setName(49) .setValue(3) ) ) ).build(); log.info("Packet: {}", powerHistory); this.send(new PegasusPacket(19, 0, powerHistory.toByteArray())); } catch (Exception e) { e.printStackTrace(); } PegasusGame.GetGameState state = PegasusGame.GetGameState.parseFrom((byte[]) packet.getBody()); log.info("GetGameState: {}", state); // this.send(new PegasusPacket( 19, 0, Util.hexStringToByteArray("0AA6022AA3020A2F0801120408351001120508C6011004120408311001120508CC011002120408141001120508CA0110011204080A1055127D0802120F08C786D1BAA58080800210E7F2AC251800226608031204083210021204083510031205088F031003120508B001100A12040807104B120408311001120508CA011002120508900210011204081D10041204081C100A1204081E10021204081F10021204081710011204081110011204081B104212040818100112710801120F08C786D1BAA58080800210B59DFA241800225A08021204083210011204083510021205088F031004120508B001100A12040807104B120508CA011002120508900210011204081D10041204081C100A1204081E10011204081F10011204083110011204081110011204081B10400A180A16082212001A04083510221A04083210021A04083110020A180A16082312001A04083510231A04083210021A04083110020A180A16082412001A04083510241A04083210021A04083110020A620A60082512074558315F3539331A04083510251A04083210021A0508870210031A04083110031A0508C10210011A0508B70110021A0508DA0110011A04082D10021A04082F10041A04083010041A0508CA0110041A0508CB0110021A0508C90110030A93010A9001082612074558315F3338331A04083510261A04083210021A0508870210011A04083110031A0508FB0110011A0508C20110001A0508C10210011A0508B70110031A0508BE0110001A0508CA0210001A0508CB0210001A04082D10101A04082F10031A04087210011A04083010031A0508C70110051A0508CA0110041A0508CB0110051A0508D90110001A0508C90110030A180A16082712001A04083510271A04083210021A04083110020A180A16082812001A04083510281A04083210021A04083110020A180A16082912001A04083510291A04083210021A04083110020A180A16082A12001A040835102A1A04083210021A04083110020A180A16082B12001A040835102B1A04083210021A04083110020A180A16082C12001A040835102C1A04083210021A04083110020A180A16082D12001A040835102D1A04083210021A04083110020A180A16082E12001A040835102E1A04083210021A04083110020A180A16082F12001A040835102F1A04083210021A04083110020A180A16083012001A04083510301A04083210021A04083110020A180A16083112001A04083510311A04083210021A04083110020A180A16083212001A04083510321A04083210021A04083110020A180A16083312001A04083510331A04083210021A04083110020A180A16083412001A04083510341A04083210021A04083110020A180A16083512001A04083510351A04083210021A04083110020A490A47083612084C4F454131365F391A04083510361A04083210021A0508870210021A04083110031A04083010001A0508CA0210001A0508CB0210001A0508CA0110051A0508B70110140A180A16083712001A04083510371A04083210021A04083110020A180A16083812001A04083510381A04083210021A04083110020A180A16083912001A04083510391A04083210021A04083110020A180A16083A12001A040835103A1A04083210021A04083110020A180A16083B12001A040835103B1A04083210021A04083110020A180A16083C12001A040835103C1A04083210021A04083110020A180A16083D12001A040835103D1A04083210021A04083110020A180A16083E12001A040835103E1A04083210021A04083110020A180A16083F12001A040835103F1A04083210021A04083110020A180A16080412001A04083510041A04083210011A04083110020A180A16080512001A04083510051A04083210011A04083110020A180A16080612001A04083510061A04083210011A04083110020A180A16080712001A04083510071A04083210011A04083110020A180A16080812001A04083510081A04083210011A04083110020A180A16080912001A04083510091A04083210011A04083110020A180A16080A12001A040835100A1A04083210011A04083110020A1F0A1D080B12001A040835100B1A04083210011A0508870210041A04083110030A180A16080C12001A040835100C1A04083210011A04083110020A180A16080D12001A040835100D1A04083210011A04083110020A180A16080E12001A040835100E1A04083210011A04083110020A180A16080F12001A040835100F1A04083210011A04083110020A180A16081012001A04083510101A04083210011A04083110020A1F0A1D081112001A04083510111A04083210011A0508870210031A04083110030A180A16081212001A04083510121A04083210011A04083110020A180A16081312001A04083510131A04083210011A04083110020A180A16081412001A04083510141A04083210011A04083110020A1F0A1D081512001A04083510151A04083210011A0508870210011A04083110030A180A16081612001A04083510161A04083210011A04083110020A180A16081712001A04083510171A04083210011A04083110020A180A16081812001A04083510181A04083210011A04083110020A180A16081912001A04083510191A04083210011A04083110020A1F0A1D081A12001A040835101A1A04083210011A0508870210021A04083110030A180A16081B12001A040835101B1A04083210011A04083110020A180A16081C12001A040835101C1A04083210011A04083110020A180A16081D12001A040835101D1A04083210011A04083110020A180A16081E12001A040835101E1A04083210011A04083110020A180A16081F12001A040835101F1A04083210011A04083110020A180A16082012001A04083510201A04083210011A04083110020A180A16082112001A04083510211A04083210011A04083110020A4B0A49084212094C4F454130345F30311A04083110011A04083510421A04083210021A0508B70110141A0608FC0210E77E1A0508CA0210001A0508CB0210001A04082D101E1A0508CA0110030A5D0A5B08431208435331685F3030311A0508B90210421A04083110011A04083510431A04083210021A04083110011A0508FB0110011A0508B70110021A04083010021A0508C70110061A0508CA01100A1A0508CB0110021A0508C90110030A460A440840120B54425F5350545F426F73731A04083110011A04083510401A04083210011A04082F10001A04082D101E1A0508CA0110031A0508B70110121A0708FC0210F1B4020A5D0A5B08411208435331685F3030311A0508B90210401A04083110011A04083510411A04083210011A04083110011A0508FB0110011A0508B70110021A04083010021A0508C70110061A0508CA01100A1A0508CB0110021A0508C90110030A1F0A1D084412001A04083510441A04083210011A0508870210051A0408311003"))); this.send(new PegasusPacket( 19, 0, Util.hexStringToByteArray("0A0822060801100A18550A092207080110CA0118010A0822060801101418010A092207080110CC0118020A0822060801103118010A092207080110C60118040A0822060801103518010A0822060801101318040A0822060802101B18400A0822060802101118010A0822060802103118010A0822060802101F18010A0822060802101E18010A0822060802101C180A0A0822060802101D18040A092207080210900218010A092207080210CA0118020A08220608021007184B0A092207080210B001180A0A0922070802108F0318040A0822060802103518020A0822060802103218010A092207080210B10218010A0822060803101818010A0822060803101B18420A0822060803101118010A0822060803101718010A0822060803101F18020A0822060803101E18020A0822060803101C180A0A0822060803101D18040A092207080310900218010A092207080310CA0118020A0822060803103118010A08220608031007184B0A092207080310B001180A0A0922070803108F0318030A0822060803103518030A0822060803103218020A133211080510FFFFFFFFFFFFFFFFFF0118012000"))); this.send(new PegasusPacket( 17, 0, Util.hexStringToByteArray("0801100120002803320336262538014002"))); this.send(new PegasusPacket( 17, 0, Util.hexStringToByteArray("08011001200028053205441A15110B38014001"))); this.send(new PegasusPacket( 19, 0, Util.hexStringToByteArray("0A092207080310B1021801"))); this.send(new PegasusPacket( 15, 0, Util.hexStringToByteArray("0A0A08001000181A2000280010001801"))); this.send(new PegasusPacket( 15, 0, Util.hexStringToByteArray("0A0A0800100018152000280010001801"))); this.send(new PegasusPacket( 15, 0, Util.hexStringToByteArray("0A0A08001000181A2000280010001801"))); this.send(new PegasusPacket( 15, 0, Util.hexStringToByteArray("0A0A0800100018112000280010001801"))); this.send(new PegasusPacket( 15, 0, Util.hexStringToByteArray("0A0A08001000180B2000280010001801"))); this.send(new PegasusPacket( 15, 0, Util.hexStringToByteArray("0A0A0800100018112000280010001801"))); this.send(new PegasusPacket( 15, 0, Util.hexStringToByteArray("0A0A0800100018002000280010001801"))); this.send(new PegasusPacket( 19, 0, Util.hexStringToByteArray("0A092207080310B10218020A0A320808051006180320000A092207080310B10218030A023A000A0A320808051007180320000A092207080310B10218040A023A00"))); this.send(new PegasusPacket( 19, 0, Util.hexStringToByteArray("0A092207080210B10218020A0A320808051006180220000A092207080210B10218030A023A000A0A320808051007180220000A092207080210B10218040A092207080110C60118060A023A00"))); this.send(new PegasusPacket( 19, 0, Util.hexStringToByteArray("0A0822060801101318060A0A320808051001180320000A0822060803101A18010A0922070803108F0318000A092207080110C60118110A023A000A0822060801101318110A0A320808051008180320000A092207080110C60118090A023A000A0822060801101318090A0A320808051000180320000A441242083C12074756475F3031301A0508C10210011A0508B701100D1A0508CA0210001A0508CB0210001A04083010001A0508C70110061A0508CA0110051A0508CB0110010A082206083C103118030A092207083C10870218040A0922070803108F0318010A092207080110C601180A0A023A000A08220608011013180A0A0A320808051002180320000A092207080110C601180C0A023A00"))); this.send(new PegasusPacket( 14, 0, Util.hexStringToByteArray("080112020802120A0803120608431A024042120608031202083C12060803120208361206080312020826"))); this.send(new PegasusPacket( 15, 0, Util.hexStringToByteArray("0A0A0800100018402000280010001801"))); this.send(new PegasusPacket( 15, 0, Util.hexStringToByteArray("0A0A0800100018002000280010001801"))); this.send(new PegasusPacket( 19, 0, Util.hexStringToByteArray("0A0A320808071000182620000A0822060826102B18010A092207082510870218020A092207083610870218010A092207083C10870218030A133211080310FFFFFFFFFFFFFFFFFF01180020000A023A000A3E0A3C084512094353325F31303365321A04083510451A04083210021A0508CB0210001A0508CA0210001A0508C701100A1A0508CA0110061A0508B70110020A0822060845102818260A092207084510870218000A0822060845103118060A0822060826103118010A092207082610870218010A0822060826102B18010A023A00"))); this.send(new PegasusPacket( 14, 0, Util.hexStringToByteArray("080112020802120B0803120708431A03404226120608031202083C1206080312020836"))); break; case 115: pong(); break; default: break; } } private void pong() throws Exception { this.send(new PegasusPacket(116, 0, PegasusGame.Pong.newBuilder().build())); } public void send(PegasusPacket pp) throws Exception { this.outToClient.write(pp.Encode()); this.outToClient.flush(); } public void sendRaw(byte[] data) throws Exception { this.outToClient.write(data); this.outToClient.flush(); } @Override public void run() { try { InputStream is = client.getInputStream(); outToClient = client.getOutputStream(); while (true) { try { int count; byte[] buffer = new byte[4096]; // or 4096, or more ByteArrayOutputStream baos = new ByteArrayOutputStream(); while ((count = is.read(buffer)) > 0) { baos.write(buffer, 0, count); byte[] r = baos.toByteArray(); PegasusPacket pp = new PegasusPacket(); int offset = 0; while( offset < r.length ) { offset += pp.Decode(r, offset, r.length); processPacket(pp); } baos.reset(); } baos.close(); } catch (Exception e) { log.error(e.getMessage()); break; } } } catch (Exception e) { log.error(e.getMessage()); } } }