Dream_Star_mc
本帖最后由 Dream_Star_mc 于 2023-5-11 14:53 编辑

如题,使用BedwarsRel 1.3.6时如何在游戏等待阶段可以选择队伍的时候实现禁止玩家选择人数过多的队伍。
例如:四支队伍,A队有7人,B队有5人,C队有5人,D队有5人,则禁止玩家选择A队,如果玩家尝试选择A队,则弹出错误信息。
简单来说:就是我想实现队伍人数平衡,避免某一队人数过多或某一队人数过少的情况。
                   其实几年前YC的起床就有这个功能,肯定是用了什么插件,但我现在找不到了。。。效果图:
附加要求:1.不使用BedwarsRel 1.3.6中的autoBalance功能,这个功能会剥夺玩家选择队伍的权利。
                   2.自动化,即每局游戏不需要人为干预即可完成队伍人数平衡。
                   3.尽量使用插件,且插件轻量化(就实现一个功能肯定轻量呀)


1909瓜
本帖最后由 1909瓜 于 2023-5-11 17:19 编辑

用一个list存空队伍玩家
四个list各存一队 建立一个变量初始为0 每次玩家进队增加0.25(1/4)
玩家进队时如果队伍中已有人数大于变量就拒绝

最后按照人数升序为所有队伍扔空队人

代码大概是这样的(瞎写的,看方法不要看实现)
  1. <div style="background-color:#2b2b2b;color:#a9b7c6;font-family:'JetBrains Mono',monospace;font-size:9.8pt;white-space:pre;"><div class="blockcode"><blockquote>    List<UUID> teamnull = new ArrayList<>();
  2.     List<UUID> team1 = new ArrayList<>(), team2 = new ArrayList<>(), team3 = new ArrayList<>(), team4 = new ArrayList<>();
  3.     List[] teams = new List[]{team1, team2, team3, team4};
  4.     float avgplayer = 0;

  5.     @EventHandler
  6.     public void onJoin(Player player, int teamnum) {
  7.         if (teams[teamnum].size() > avgplayer) {
  8.             player.sendMessage(ChatColor.RED + "该队伍人数过多");
  9.             event.setcancel(true);
  10.             return;
  11.         }
  12.         teamnull.remove(player.getUniqueId());
  13.         teams[teamnum].add(player.getUniqueId());
  14.         avgplayer+=0.25;
  15.     }
  16.     public void finalJoin() {
  17.         for (int i = 0; i <= 2; i++) {
  18.             for (int j = i + 1; j <= 3; j++) {
  19.                 if (teams[i].size() > teams[j].size()) {
  20.                     List temp = teams[i];
  21.                     teams[i] = teams[j];
  22.                     teams[j] = temp;
  23.                 }
  24.             }
  25.         }
  26.         for (int i=0; i<=teamnull.size(); i++) {
  27.             teams[i%4].add(teamnull.get(i));
  28.         }
  29.     }
复制代码

Dream_Star_mc
1909瓜 发表于 2023-5-11 17:17
用一个list存空队伍玩家
四个list各存一队 建立一个变量初始为0 每次玩家进队增加0.25(1/4)
玩家进队时如果 ...

代码看不懂,但方法是可行的。
就是要自己写插件比较烦。
没有别的更简单的答案就采纳你吧  ╮(╯▽╰)╭

第一页 上一页 下一页 最后一页