Skip to content

Commit b1a1fc3

Browse files
committed
feat オンラインプレイヤー数に応じてチームをつくるコマンドを実装
1 parent a23a227 commit b1a1fc3

File tree

2 files changed

+43
-1
lines changed

2 files changed

+43
-1
lines changed

src/main/java/com/github/elic0de/hungergames/command/HungerCommand.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,12 @@ private void end(Player player) {
2525
@Subcommand("team random")
2626
private void random(Player player) {
2727
game.randomTeam();
28-
player.sendMessage("プレイヤーを既存のチームにランダムに振り分けます");
28+
player.sendMessage("既存のチームにプレイヤーをランダムに振り分けます");
29+
}
30+
31+
@Subcommand("team create")
32+
private void create(Player player, int count) {
33+
game.createTeams(count);
34+
player.sendMessage("オンラインプレイヤー数に応じて "+ count + "プレイヤーのチームを作ります");
2935
}
3036
}

src/main/java/com/github/elic0de/hungergames/game/HungerGame.java

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,18 @@ public class HungerGame extends AbstractGame {
5555

5656
private BukkitTask borderTask;
5757

58+
private final List<ChatColor> colors = List.of(
59+
ChatColor.RED,
60+
ChatColor.BLUE,
61+
ChatColor.AQUA,
62+
ChatColor.YELLOW,
63+
ChatColor.GOLD,
64+
ChatColor.GREEN,
65+
ChatColor.LIGHT_PURPLE,
66+
ChatColor.WHITE,
67+
ChatColor.GRAY
68+
);
69+
5870
public HungerGame() {
5971
scoreboard = Bukkit.getScoreboardManager().getMainScoreboard();
6072
border = new GameBorder(this);
@@ -70,6 +82,30 @@ public void join(GameUser user) {
7082
public void leave(GameUser user) {
7183
super.leave(user);
7284
bossBar.removePlayer(user);
85+
getUserTeam(user).ifPresent(team -> team.removeEntry(user.getUsername()));
86+
}
87+
88+
89+
public void createTeams(int count) {
90+
final AtomicInteger colorIndex = new AtomicInteger();
91+
int teamSize = Math.round(12/count);
92+
93+
// 既存のチームを削除
94+
scoreboard.getTeams().forEach(Team::unregister);
95+
// 人数に応じてチームを作る
96+
for(int i = 0; i < teamSize; i++) {
97+
if (colorIndex.get() < colors.size()) {
98+
final ChatColor color = colors.get(colorIndex.get());
99+
final String teamName = scoreboard.getTeam(color.name()) != null ? UUID.randomUUID().toString().substring(0, 6) : color.name();
100+
final Team team = scoreboard.registerNewTeam(teamName);
101+
102+
team.setColor(color);
103+
team.setOption(Team.Option.NAME_TAG_VISIBILITY, Team.OptionStatus.FOR_OWN_TEAM);
104+
colorIndex.incrementAndGet();
105+
continue;
106+
}
107+
colorIndex.set(0);
108+
}
73109
}
74110

75111
public void randomTeam() {

0 commit comments

Comments
 (0)