Example #1
0
 public void onCommand(CommandSender sender, String[] args) {
   if (!(sender instanceof Player)) {
     sender.sendMessage("You need to be a player to do this.");
     return;
   }
   if (args.length != 1) {
     MessageManager.getInstance().msg(sender, MessageManager.MessageType.WARN, super.getUsage());
   }
   Player p = Bukkit.getPlayer(((Player) sender).getUniqueId());
   if (args[0] == "s") {
     cm.set("ht", HubType.SINGLE);
     String world = p.getWorld().getName();
     Double x = p.getLocation().getX();
     Double y = p.getLocation().getY();
     Double z = p.getLocation().getZ();
     Float yaw = p.getLocation().getYaw();
     Float pitch = p.getLocation().getPitch();
     cm.set("hw", world);
     cm.set("hx", x);
     cm.set("hy", y);
     cm.set("hz", z);
     cm.set("hyw", yaw);
     cm.set("hph", pitch);
     MessageManager.getInstance()
         .msg(sender, MessageManager.MessageType.INFO, "Hub location set.");
   } else if (args[0] == "m") {
     MessageManager.getInstance()
         .msg(sender, MessageManager.MessageType.WARN, "We dont support multiple mode yet.");
     // TODO: Add multiple mode.
   } else {
     MessageManager.getInstance().msg(sender, MessageManager.MessageType.WARN, super.getUsage());
   }
 }
Example #2
0
  @Override
  public void run() {
    int i = 0;
    while (!exitFlag) {
      Message m = new Message();
      m.setAuthor("Test,author");
      m.setText("test text " + i);
      m.setSource(Source.TEST);
      if (i % 3 == 0) {
        m.setHighlighted(true);
      }
      //            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
      //            try {
      //                m.setText(br.readLine());
      //            } catch (IOException e) {
      //                logger.log(Level.WARNING, "Something goes wrong...", e);
      //            }
      messageManager.sendMessage(m);

      Source[] sources = Source.values();
      if (i % 5 == 0) {
        MessageManager.getInstance()
            .sendInfoMessage(
                new InfoMessage(sources[(i / 5) % sources.length], "test info message " + i));
      }
      i++;
      synchronized (this) {
        try {
          wait(1000);
        } catch (InterruptedException e) {
          logger.log(Level.WARNING, "Something goes wrong...", e);
        }
      }
    }
  }
Example #3
0
  @Override
  public void run() {
    DuelManager dm = plugin.getDuelManager();
    FileManager fm = plugin.getFileManager();
    MessageManager mm = plugin.getMessageManager();
    int duelTime = fm.getDuelTime();
    String senderName = sender.getName();
    String targetName = target.getName();
    UUID senderUUID = sender.getUniqueId();
    UUID targetUUID = target.getUniqueId();
    int duelSize = duelArena.getPlayers().size();

    if (plugin.isDebugEnabled()) {
      SendConsoleMessage.debug("Duel size: " + duelSize);
    }

    if (duelSize == 0) {
      dm.endDuel(duelArena);
      this.cancel();
    }

    if (this.countDown > 0 && duelSize == 2) {
      String duelStartActionBar = mm.getDuelStartingActionBarMessage();
      duelStartActionBar =
          duelStartActionBar.replaceAll("%seconds%", String.valueOf(this.countDown));
      Util.sendActionBarMessage(sender, target, duelStartActionBar);
      this.countDown--;
    } else {
      if (duelSize == 2) {
        Util.setTime(sender, target, this.countDown);
        Util.sendMsg(sender, target, ChatColor.YELLOW + "Duel!");
        duelArena.setDuelState(DuelState.STARTED);
        dm.surroundLocation(duelArena.getSpawnpoint1(), Material.AIR);
        dm.surroundLocation(duelArena.getSpawnpoint2(), Material.AIR);
        dm.updateDuelStatusSign(duelArena);
      }

      // dm.removeFrozenPlayer(senderUUID);
      // dm.removeFrozenPlayer(targetUUID);

      if (plugin.isDebugEnabled()) {
        SendConsoleMessage.debug("Stopping duel start thread.");
      }
      this.cancel();

      if (duelTime != 0 && duelSize == 2) {
        if (plugin.isDebugEnabled()) {
          SendConsoleMessage.debug("Duel time limit is set, starting countdown task.");
        }
        new DuelTimeThread(plugin, sender, target, duelArena, duelTime)
            .runTaskTimer(plugin, 20L, 20L);
      }
    }
  }
Example #4
0
public class TestChatClient implements ChatClient, Runnable {

  private static final Logger logger = Logger.getLogger(TestChatClient.class.getName());

  private MessageManager messageManager = MessageManager.getInstance();
  boolean exitFlag = false;

  @Override
  public void goOffline() {
    exitFlag = true;
  }

  @Override
  public void goOnline() {
    Thread t = new Thread(this, "TestChatClient");
    t.start();
  }

  @Override
  public ChatClientStatus getStatus() {
    return null;
  }

  @Override
  public void run() {
    int i = 0;
    while (!exitFlag) {
      Message m = new Message();
      m.setAuthor("Test,author");
      m.setText("test text " + i);
      m.setSource(Source.TEST);
      if (i % 3 == 0) {
        m.setHighlighted(true);
      }
      //            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
      //            try {
      //                m.setText(br.readLine());
      //            } catch (IOException e) {
      //                logger.log(Level.WARNING, "Something goes wrong...", e);
      //            }
      messageManager.sendMessage(m);

      Source[] sources = Source.values();
      if (i % 5 == 0) {
        MessageManager.getInstance()
            .sendInfoMessage(
                new InfoMessage(sources[(i / 5) % sources.length], "test info message " + i));
      }
      i++;
      synchronized (this) {
        try {
          wait(1000);
        } catch (InterruptedException e) {
          logger.log(Level.WARNING, "Something goes wrong...", e);
        }
      }
    }
  }
}
 public void removeFromOtherQueues(Player p, int id) {
   for (Game g : getGames()) {
     if (g.isInQueue(p) && g.getID() != id) {
       g.removeFromQueue(p);
       msgmgr.sendMessage(PrefixType.INFO, "Removed from the queue in arena " + g.getID(), p);
     }
   }
 }
Example #6
0
  public static void exitApp() {
    if (prepareExisting) {
      return;
    }

    prepareExisting = true;
    MessageManager.getInstance()
        .syncNotify(
            MessageID.OBSERVER_APP,
            new MessageManager.Caller<IAppObserver>() {
              public void call() {
                try {
                  //							ob.IAppObserver_PrepareExitApp();
                } catch (Throwable e) {
                }
              }
            });
    // 异步一下,给已经发出还没执行的异步零延时observer一个执行的机会
    MessageManager.getInstance()
        .asyncRun(
            new MessageManager.Runner() {
              @Override
              public void call() {
                isExiting = true; // 从此不能再发通知了
                MessageManager.getInstance()
                    .asyncRun(
                        new MessageManager.Runner() {
                          @Override
                          public void call() {
                            MessageManager.getInstance().silence(); // 从此延时通知直接丢掉不执行了
                            MessageManager.getInstance()
                                .asyncRun(
                                    500,
                                    new MessageManager.Runner() {
                                      @Override
                                      public void call() {
                                        android.os.Process.killProcess(android.os.Process.myPid());
                                        System.exit(0);
                                      }
                                    });
                          }
                        });
              }
            });
  }
 public void addPlayer(Player p, int g) {
   Game game = getGame(g);
   if (game == null) {
     MessageManager.getInstance()
         .sendFMessage(PrefixType.ERROR, "error.input", p, "message-No game by this ID exist!");
     return;
   }
   getGame(g).addPlayer(p);
 }
Example #8
0
  @Override
  protected void onInitialize(boolean isReconnect) {
    super.onInitialize(isReconnect);
    LOGD(TAG, "onInitialize " + isReconnect);
    setUpdateWhenScreenOn(true);

    if (!isReconnect) {
      mManager = MessageManager.getInstance(this);
    }
  }
Example #9
0
 @Override
 public void onLowMemory() {
   MessageManager.getInstance()
       .syncNotify(
           MessageID.OBSERVER_APP,
           new MessageManager.Caller<IAppObserver>() {
             @Override
             public void call() {
               //				ob.IAppObserver_OnLowMemory();
             }
           });
   super.onLowMemory();
   System.gc();
 }
Example #10
0
  /** @param object */
  private void readData() {

    if (mManager == null) return;

    dashIcon = R.drawable.ic_extension_whts;

    int mCount = mManager.getmCount();
    LOGD(TAG, "count=" + mCount);

    if (mCount > 0) {
      dashVisible = true;

      dashStatus = "" + mCount;

      Resources res = getResources();
      String book = res.getQuantityString(R.plurals.notifications, mCount, mCount);
      dashTitle = book;

      ArrayList<MessageWht> msgs = mManager.getmMsgs();
      if (msgs != null) {
        StringBuilder sb = new StringBuilder();
        String and = "";

        for (MessageWht msg : msgs) {
          sb.append(and);
          sb.append(msg.getText());
          and = "\n";
        }

        dashSubtitle = sb.toString();
      }

    } else {
      dashVisible = false;
    }
  }
  public void createArenaFromSelection(Player pl) {
    FileConfiguration c = SettingsManager.getInstance().getSystemConfig();
    // SettingsManager s = SettingsManager.getInstance();

    WorldEditPlugin we = getWorldEdit();
    Selection sel = we.getSelection(pl);
    if (sel == null) {
      msgmgr.sendMessage(PrefixType.WARNING, "You must make a WorldEdit Selection first!", pl);
      return;
    }
    Location max = sel.getMaximumPoint();
    Location min = sel.getMinimumPoint();

    /* if(max.getWorld()!=SettingsManager.getGameWorld() || min.getWorld()!=SettingsManager.getGameWorld()){
        pl.sendMessage(ChatColor.RED+"Wrong World!");
        return;
    }*/

    /*
     *
     *
     *
     *     RE-IMPLEMENT THIS PART
     *     LEAVING AS A REFRENCE
     *
     *
     */

    int no = c.getInt("sg-system.arenano") + 1;
    c.set("sg-system.arenano", no);
    if (games.size() == 0) {
      no = 1;
    } else no = games.get(games.size() - 1).getID() + 1;
    SettingsManager.getInstance().getSpawns().set(("spawns." + no), null);
    c.set("sg-system.arenas." + no + ".world", max.getWorld().getName());
    c.set("sg-system.arenas." + no + ".x1", max.getBlockX());
    c.set("sg-system.arenas." + no + ".y1", max.getBlockY());
    c.set("sg-system.arenas." + no + ".z1", max.getBlockZ());
    c.set("sg-system.arenas." + no + ".x2", min.getBlockX());
    c.set("sg-system.arenas." + no + ".y2", min.getBlockY());
    c.set("sg-system.arenas." + no + ".z2", min.getBlockZ());
    c.set("sg-system.arenas." + no + ".enabled", true);

    SettingsManager.getInstance().saveSystemConfig();
    hotAddArena(no);
    pl.sendMessage(ChatColor.GREEN + "Arena ID " + no + " Succesfully added");
  }
Example #12
0
  @Override
  public String resolve(String variableName, Json sr, Properties properties) {
    String activityLegacyCode;

    OWLLiteral variableLegacyCode =
        OWL.dataProperty(
            MessageManager.findIndividualFromVariable(variableName), "legacy:hasLegacyCode");
    if (variableLegacyCode != null && variableLegacyCode.getLiteral().length() > 0)
      activityLegacyCode =
          variableLegacyCode
              .getLiteral(); // look for a specific activity as defined with the variable
    else activityLegacyCode = properties.getProperty("LEGACY_CODE");
    Json activity = SRJsonActivityUtil.getMostRecentActivityByLegacyCode(sr, activityLegacyCode);
    if (activity == null || activity.isNull()) {
      System.out.println(
          "Messaging - ActivityResolver: unable to find activity "
              + properties.getProperty("LEGACY_CODE")
              + " in SR "
              + sr);
      return null;
    }
    String result = null;
    if (VAR_SR_ACTIVITY_TYPE.equals(variableName))
      result = SRJsonActivityUtil.getActivityTypeLabel(activity);
    else {
      if (variableName.contains("_OUTCOME")) {
        result = SRJsonActivityUtil.getHasOutcomeLabel(activity);
      } else if (variableName.contains("_DETAILS") || variableName.contains("_DTLS$$")) {
        result = SRJsonActivityUtil.getHasDetails(activity);
      } else if (variableName.contains("_DUE_DTE")) {
        result = SRJsonActivityUtil.getHasDueDate(activity, DATE_PATTERN);
      } else if (variableName.equals("$$SR_ACTIVITY_DATE_TIME$$")) {
        result = SRJsonActivityUtil.getHasDateCreated(activity, DATE_PATTERN);
      } else if (variableName.equals("$$SR_ACTIVITY_DUEDATE_SWR$$")) {
        result = SRJsonActivityUtil.getDueDate90Days(activity, DATE_PATTERN);
      } else if (variableName.contains("SR_ACTIVITY_CALLCREATED_D")) {
        result = SRJsonActivityUtil.getIsCreatedByName(activity);
      } else if (variableName.equals("$$SR_ASSIGNED_STAFF$$")) {
        result = SRJsonActivityUtil.getAssignedStaffName(activity);
      } else {
        System.out.println(
            "Messaging - ActivityResolver: unable to resolve variable" + variableName);
      }
      // Just a check if we already know the variable.
      if (VALIDATE_VARS_POST_RESOLUTION && !ActivityVariableValidator.isKnown(variableName))
        System.err.println(
            "ActivityResolver resolved an unknown variable: "
                + variableName
                + " to value "
                + result);
    }
    if (DBG) {
      System.out.println(
          "ActivityResolver: Var "
              + variableName
              + " Result: "
              + result
              + " Act: "
              + activity
              + " Code: "
              + activityLegacyCode);
    }
    return result;
  }
Example #13
0
 public static void sendLocal(ColorScheme scheme, String input, Location loc, double range) {
   message.sendLocal(scheme, input, loc, range);
 }
Example #14
0
 public static void sendAll(ColorScheme scheme, String input) {
   message.sendAll(scheme, input);
 }
Example #15
0
 public static String style(ColorScheme scheme, String input) {
   return message.style(scheme, input);
 }
public class GameManager {

  static GameManager instance = new GameManager();
  private ArrayList<Game> games = new ArrayList<Game>();
  MessageManager msgmgr = MessageManager.getInstance();

  Minigame plugin;

  private GameManager() {}

  public static GameManager getInstance() {
    return instance;
  }

  public void setup(Minigame plugin) {
    this.plugin = plugin;
    LoadGames();
  }

  public Plugin getPlugin() {
    return plugin;
  }

  public void reloadGames() {
    LoadGames();
  }

  /*
   *
   *
   *
   *     RE-IMPLEMENT THIS PART
   *     LEAVING AS A REFRENCE
   *
   *
   */
  public void LoadGames() {
    FileConfiguration c = SettingsManager.getInstance().getSystemConfig();
    games.clear();
    int no = c.getInt("sg-system.arenano", 0);
    int loaded = 0;
    int a = 1;
    while (loaded < no) {
      if (c.isSet("sg-system.arenas." + a + ".x1")) {
        if (c.getBoolean("sg-system.arenas." + a + ".enabled")) {
          Minigame.$("Loading Arena: " + a);
          loaded++;
          games.add(new Game(a));
        }
      }
      a++;
    }
    // LobbyManager.getInstance().clearAllSigns();

  }

  public int getBlockGameId(Location v) {
    for (Game g : games) {
      if (g.isBlockInArena(v)) {
        return g.getID();
      }
    }
    return -1;
  }

  public int getPlayerGameId(Player p) {
    for (Game g : games) {
      if (g.isPlayerActive(p)) {
        return g.getID();
      }
    }
    return -1;
  }

  public int getPlayerSpectateId(Player p) {
    for (Game g : games) {
      if (g.isSpectator(p)) {
        return g.getID();
      }
    }
    return -1;
  }

  public boolean isPlayerActive(Player player) {
    for (Game g : games) {
      if (g.isPlayerInactive(player)) {
        return true;
      }
    }
    return false;
  }

  public boolean isPlayerInactive(Player player) {
    for (Game g : games) {
      if (g.isPlayerInactive(player)) {
        return true;
      }
    }
    return false;
  }

  public boolean isSpectator(Player player) {
    for (Game g : games) {
      if (g.isSpectator(player)) {
        return true;
      }
    }
    return false;
  }

  public void removeFromOtherQueues(Player p, int id) {
    for (Game g : getGames()) {
      if (g.isInQueue(p) && g.getID() != id) {
        g.removeFromQueue(p);
        msgmgr.sendMessage(PrefixType.INFO, "Removed from the queue in arena " + g.getID(), p);
      }
    }
  }

  public int getGameCount() {
    return games.size();
  }

  public Game getGame(int a) {
    // int t = gamemap.get(a);
    for (Game g : games) {
      if (g.getID() == a) {
        return g;
      }
    }
    return null;
  }

  public void removePlayer(Player p, boolean b) {
    for (Game g : games) {
      if (g.getAllPlayers().contains(p)) {
        // PlayerLeaveArenaEvent leavearena = new PlayerLeaveArenaEvent(p, g);
        // Bukkit.getServer().getPluginManager().callEvent(leavearena);
      }
    }
    getGame(getPlayerGameId(p)).removePlayer(p, b);
  }

  public void removeSpectator(Player p) {
    getGame(getPlayerSpectateId(p)).removeSpectator(p);
  }

  public void disableGame(int id) {
    getGame(id).disable();
  }

  public void enableGame(int id) {
    getGame(id).enable();
  }

  public ArrayList<Game> getGames() {
    return games;
  }

  public GameState getGameMode(int a) {
    for (Game g : games) {
      if (g.getID() == a) {
        return g.getState();
      }
    }
    return null;
  }

  // TODO: Actually make this countdown correctly
  public void startGame(int a) {
    getGame(a).countdown(10);
  }

  public void addPlayer(Player p, int g) {
    Game game = getGame(g);
    if (game == null) {
      MessageManager.getInstance()
          .sendFMessage(PrefixType.ERROR, "error.input", p, "message-No game by this ID exist!");
      return;
    }
    getGame(g).addPlayer(p);
  }

  /*	public void autoAddPlayer(Player pl) {
  	ArrayList < Game > qg = new ArrayList < Game > (5);
  	for (Game g: games) {
  		if (g.getMode() == Game.GameMode.WAITING) qg.add(g);
  	}
  	//TODO: fancy auto balance algorithm
  	if (qg.size() == 0) {
  		pl.sendMessage(ChatColor.RED + "No games to join");
  		msgmgr.sendMessage(PrefixType.WARNING, "No games to join!", pl);
  		return;
  	}
  	qg.get(0).addPlayer(pl);
  }*/

  public WorldEditPlugin getWorldEdit() {
    return plugin.getWorldEdit();
  }

  public void createArenaFromSelection(Player pl) {
    FileConfiguration c = SettingsManager.getInstance().getSystemConfig();
    // SettingsManager s = SettingsManager.getInstance();

    WorldEditPlugin we = getWorldEdit();
    Selection sel = we.getSelection(pl);
    if (sel == null) {
      msgmgr.sendMessage(PrefixType.WARNING, "You must make a WorldEdit Selection first!", pl);
      return;
    }
    Location max = sel.getMaximumPoint();
    Location min = sel.getMinimumPoint();

    /* if(max.getWorld()!=SettingsManager.getGameWorld() || min.getWorld()!=SettingsManager.getGameWorld()){
        pl.sendMessage(ChatColor.RED+"Wrong World!");
        return;
    }*/

    /*
     *
     *
     *
     *     RE-IMPLEMENT THIS PART
     *     LEAVING AS A REFRENCE
     *
     *
     */

    int no = c.getInt("sg-system.arenano") + 1;
    c.set("sg-system.arenano", no);
    if (games.size() == 0) {
      no = 1;
    } else no = games.get(games.size() - 1).getID() + 1;
    SettingsManager.getInstance().getSpawns().set(("spawns." + no), null);
    c.set("sg-system.arenas." + no + ".world", max.getWorld().getName());
    c.set("sg-system.arenas." + no + ".x1", max.getBlockX());
    c.set("sg-system.arenas." + no + ".y1", max.getBlockY());
    c.set("sg-system.arenas." + no + ".z1", max.getBlockZ());
    c.set("sg-system.arenas." + no + ".x2", min.getBlockX());
    c.set("sg-system.arenas." + no + ".y2", min.getBlockY());
    c.set("sg-system.arenas." + no + ".z2", min.getBlockZ());
    c.set("sg-system.arenas." + no + ".enabled", true);

    SettingsManager.getInstance().saveSystemConfig();
    hotAddArena(no);
    pl.sendMessage(ChatColor.GREEN + "Arena ID " + no + " Succesfully added");
  }

  private void hotAddArena(int no) {
    Game game = new Game(no);
    games.add(game);
    // StatsManager.getInstance().addArena(no);
    // Assassins.$("game added "+ games.size()+"
    // "+SettingsManager.getInstance().getSystemConfig().getInt("gs-system.arenano"));
  }

  public void hotRemoveArena(int no) {
    for (Game g : games.toArray(new Game[0])) {
      if (g.getID() == no) {
        games.remove(getGame(no));
      }
    }
  }

  public void gameEndCallBack(int id) {}

  public String getStringList(int gid) {
    Game g = getGame(gid);
    StringBuilder sb = new StringBuilder();
    Player[][] players = g.getPlayers();

    sb.append(
        ChatColor.GREEN
            + "<---------------------[ Alive: "
            + players[0].length
            + " ]--------------------->\n"
            + ChatColor.GREEN
            + " ");
    for (Player p : players[0]) {
      sb.append(p.getName() + ",");
    }
    sb.append("\n\n");
    sb.append(
        ChatColor.RED
            + "<---------------------[ Dead: "
            + players[1].length
            + " ]---------------------->\n"
            + ChatColor.GREEN
            + " ");
    for (Player p : players[1]) {
      sb.append(p.getName() + ",");
    }
    sb.append("\n\n");

    return sb.toString();
  }
}
  private int postReadProcess() throws IOException {
    int prot_bytes_read = 0;
    int data_bytes_read = 0;

    if (!reading_length_mode && !destroyed) { // reading payload data mode
      // ensure-restore proper buffer limits
      payload_buffer.limit(SS, message_length);
      length_buffer.limit(SS, 4);

      int read = payload_buffer.position(SS) - pre_read_start_position;

      if (payload_buffer.position(SS) > 0) { // need to have read the message id first byte
        if (BTMessageFactory.getMessageType(payload_buffer) == Message.TYPE_DATA_PAYLOAD) {
          data_bytes_read += read;
        } else {
          prot_bytes_read += read;
        }
      }

      if (!payload_buffer.hasRemaining(SS) && !is_paused) { // full message received!
        payload_buffer.position(SS, 0);

        DirectByteBuffer ref_buff = payload_buffer;
        payload_buffer = null;

        if (reading_handshake_message) { // decode handshake
          reading_handshake_message = false;

          DirectByteBuffer handshake_data =
              DirectByteBufferPool.getBuffer(DirectByteBuffer.AL_MSG_BT_HAND, 68);
          handshake_data.putInt(SS, HANDSHAKE_FAKE_LENGTH);
          handshake_data.put(SS, ref_buff);
          handshake_data.flip(SS);

          ref_buff.returnToPool();

          try {
            Message handshake =
                MessageManager.getSingleton()
                    .createMessage(BTMessage.ID_BT_HANDSHAKE_BYTES, handshake_data, (byte) 1);
            messages_last_read.add(handshake);
          } catch (MessageException me) {
            handshake_data.returnToPool();
            throw new IOException("BT message decode failed: " + me.getMessage());
          }

          // we need to auto-pause decoding until we're told to start again externally,
          // as we don't want to accidentally read the next message on the stream if it's an
          // AZ-format handshake
          pauseDecoding();
        } else { // decode normal message
          try {
            messages_last_read.add(createMessage(ref_buff));
          } catch (Throwable e) {
            ref_buff.returnToPoolIfNotFree();

            // maintain unexpected errors as such so they get logged later

            if (e instanceof RuntimeException) {

              throw ((RuntimeException) e);
            }

            throw new IOException("BT message decode failed: " + e.getMessage());
          }
        }

        reading_length_mode = true; // see if we've already read the next message's length
        percent_complete = -1; // reset receive percentage
      } else { // only partial received so far
        percent_complete =
            (payload_buffer.position(SS) * 100) / message_length; // compute receive percentage
      }
    }

    if (reading_length_mode && !destroyed) {
      length_buffer.limit(SS, 4); // ensure proper buffer limit

      prot_bytes_read +=
          (pre_read_start_buffer == 1)
              ? length_buffer.position(SS) - pre_read_start_position
              : length_buffer.position(SS);

      if (!length_buffer.hasRemaining(SS)) { // done reading the length
        reading_length_mode = false;

        length_buffer.position(SS, 0);
        message_length = length_buffer.getInt(SS);

        length_buffer.position(SS, 0); // reset it for next length read

        if (message_length == HANDSHAKE_FAKE_LENGTH) { // handshake message
          reading_handshake_message = true;
          message_length = 64; // restore 'real' length
          payload_buffer =
              DirectByteBufferPool.getBuffer(DirectByteBuffer.AL_MSG_BT_HAND, message_length);
        } else if (message_length == 0) { // keep-alive message
          reading_length_mode = true;
          last_received_was_keepalive = true;

          try {
            Message keep_alive =
                MessageManager.getSingleton()
                    .createMessage(BTMessage.ID_BT_KEEP_ALIVE_BYTES, null, (byte) 1);
            messages_last_read.add(keep_alive);
          } catch (MessageException me) {
            throw new IOException("BT message decode failed: " + me.getMessage());
          }
        } else if (message_length < MIN_MESSAGE_LENGTH || message_length > MAX_MESSAGE_LENGTH) {
          throw new IOException(
              "Invalid message length given for BT message decode: " + message_length);
        } else { // normal message
          payload_buffer =
              DirectByteBufferPool.getBuffer(DirectByteBuffer.AL_MSG_BT_PAYLOAD, message_length);
        }
      }
    }

    protocol_bytes_last_read += prot_bytes_read;
    data_bytes_last_read += data_bytes_read;

    return prot_bytes_read + data_bytes_read;
  }
Example #18
0
 public static void send(ColorScheme scheme, String input, Player player) {
   message.send(scheme, input, player);
 }