@Override
  public void hidePlayer(Player player, Player toHide) {
    if (player != null && toHide != null && !player.equals(toHide)) {
      if (!hiddenPlayersMap.containsKey(player) || !hiddenPlayersMap.get(player).contains(toHide)) {
        hiddenPlayersMap.get(player).add(toHide);

        net.minecraft.entity.EntityTrackerEntry entry = tracker.getTrackerEntry(toHide.getID());
        entry.a(((CanaryPlayer) player).getHandle());

        PlayerListData listEntry = toHide.getPlayerListData(PlayerListAction.REMOVE_PLAYER);
        player.sendPlayerListData(listEntry);
      }
    }
  }
  @Override
  public void showPlayer(Player player, Player toShow) {
    if (player != null && toShow != null && !player.equals(toShow)) {
      if (hiddenPlayersMap.containsKey(player) && hiddenPlayersMap.get(player).contains(toShow)) {
        hiddenPlayersMap.get(player).remove(toShow);

        PlayerListData listEntry = toShow.getPlayerListData(PlayerListAction.ADD_PLAYER);
        player.sendPlayerListData(listEntry);

        net.minecraft.entity.EntityTrackerEntry entry = tracker.getTrackerEntry(toShow.getID());
        entry.b(((CanaryPlayer) player).getHandle());
      }
    }
  }