Skip to content

Commit 4fa517c

Browse files
committed
feat #1 個人試合
1 parent 0eda1f5 commit 4fa517c

File tree

3 files changed

+57
-45
lines changed

3 files changed

+57
-45
lines changed

src/main/java/com/github/elic0de/hungergames/command/HungerCommand.java renamed to src/main/java/com/github/elic0de/battleroyale/command/BattleCommand.java

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,22 @@
1-
package com.github.elic0de.hungergames.command;
1+
package com.github.elic0de.battleroyale.command;
22

33
import co.aikar.commands.BaseCommand;
44
import co.aikar.commands.annotation.CommandAlias;
55
import co.aikar.commands.annotation.Default;
66
import co.aikar.commands.annotation.Subcommand;
7-
import com.github.elic0de.hungergames.HungerGames;
8-
import com.github.elic0de.hungergames.game.HungerGame;
7+
import com.github.elic0de.battleroyale.BattleRoyale;
8+
import com.github.elic0de.battleroyale.game.GameType;
9+
import com.github.elic0de.battleroyale.game.Game;
910
import org.bukkit.entity.Player;
1011

11-
@CommandAlias("hungergames|hg")
12-
public class HungerCommand extends BaseCommand {
12+
@CommandAlias("battleroyale|br")
13+
public class BattleCommand extends BaseCommand {
1314

14-
private final HungerGame game = HungerGames.getInstance().getGame();
15+
private final Game game = BattleRoyale.getInstance().getGame();
1516

1617
@Subcommand("start")
17-
private void start(Player player) {
18-
game.startGame(player, false);
19-
}
20-
21-
@Subcommand("start modifier")
22-
private void startModifier(Player player) {
23-
game.startGame(player, true);
18+
private void start(Player player, GameType type, @Default("false") boolean modifier) {
19+
game.startGame(player, type, modifier);
2420
}
2521

2622
@Subcommand("end")

src/main/java/com/github/elic0de/hungergames/game/HungerGame.java renamed to src/main/java/com/github/elic0de/battleroyale/game/Game.java

Lines changed: 42 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,18 @@
1-
package com.github.elic0de.hungergames.game;
1+
package com.github.elic0de.battleroyale.game;
22

33
import com.github.elic0de.eliccommon.game.AbstractGame;
44
import com.github.elic0de.eliccommon.game.phase.Phase;
55
import com.github.elic0de.eliccommon.user.OnlineUser;
66
import com.github.elic0de.eliccommon.util.ItemBuilder;
7-
import com.github.elic0de.hungergames.HungerGames;
8-
import com.github.elic0de.hungergames.chest.DeathChest;
9-
import com.github.elic0de.hungergames.dragon.DragonTrait;
10-
import com.github.elic0de.hungergames.game.phase.InGamePhase;
11-
import com.github.elic0de.hungergames.game.phase.WaitingPhase;
12-
import com.github.elic0de.hungergames.modifier.ModifierManager;
13-
import com.github.elic0de.hungergames.user.GameUser;
14-
import com.github.elic0de.hungergames.user.GameUserManager;
7+
import com.github.elic0de.battleroyale.BattleRoyale;
8+
import com.github.elic0de.battleroyale.chest.DeathChest;
9+
import com.github.elic0de.battleroyale.dragon.DragonTrait;
10+
import com.github.elic0de.battleroyale.event.GamePlayerKillEvent;
11+
import com.github.elic0de.battleroyale.game.phase.InGamePhase;
12+
import com.github.elic0de.battleroyale.game.phase.WaitingPhase;
13+
import com.github.elic0de.battleroyale.modifier.ModifierManager;
14+
import com.github.elic0de.battleroyale.user.GameUser;
15+
import com.github.elic0de.battleroyale.user.GameUserManager;
1516
import de.themoep.minedown.MineDown;
1617
import lombok.Getter;
1718
import net.citizensnpcs.api.CitizensAPI;
@@ -30,7 +31,7 @@
3031
import java.util.concurrent.atomic.AtomicInteger;
3132
import java.util.stream.Collectors;
3233

33-
public class HungerGame extends AbstractGame {
34+
public class Game extends AbstractGame {
3435

3536
private final Scoreboard scoreboard;
3637

@@ -58,7 +59,7 @@ public class HungerGame extends AbstractGame {
5859
private GameRecords records;
5960
private BukkitTask borderTask;
6061

61-
public HungerGame() {
62+
public Game() {
6263
scoreboard = Bukkit.getScoreboardManager().getMainScoreboard();
6364
border = new GameBorder(this);
6465
deathChest = new DeathChest();
@@ -105,28 +106,35 @@ public void teleportStartLocation(Player player) {
105106
player.teleport(start);
106107
}
107108

108-
public void startGame(Player player, boolean modifier) {
109+
public void startGame(Player player, GameType type, boolean modifier) {
109110
if (getPhase() instanceof WaitingPhase) {
110111
final WorldBorder border = player.getWorld().getWorldBorder();
111112
final Location start = border.getCenter().clone().add((border.getSize() / 2) - 2, 130, (border.getSize() / 2) - 2);
112-
// modifierが有効の場合、ランダムにmodifierを加える
113-
// if (modifier) modifierManager.modify();
114113

115-
getPlayers(GameUser.class).forEach(user -> {
116-
// プレイヤーが所属しているチームを生存しているチームとして登録
117-
// チームに所属していなかったら観戦者とする
118-
getUserTeam(user).ifPresentOrElse(aliveTeams::add, () -> deadPlayers.add(user.getUsername()));
119-
user.clearEffectAndHeal();
120-
121-
user.getPlayer().getInventory().clear();
122-
user.getPlayer().teleport(start);
123-
user.getPlayer().setGameMode(GameMode.SPECTATOR);
124-
125-
// 10秒のクールダウン
126-
user.getPlayer().setCooldown(Material.COMMAND_BLOCK, 10 * 20);
114+
Bukkit.getScheduler().runTask(BattleRoyale.getInstance(), () -> {
115+
if (type == GameType.SOLO) {
116+
createTeams(1);
117+
randomTeam();
118+
}
119+
// modifierが有効の場合、ランダムにmodifierを加える
120+
if (modifier) modifierManager.modify();
121+
122+
getPlayers(GameUser.class).forEach(user -> {
123+
// プレイヤーが所属しているチームを生存しているチームとして登録
124+
// チームに所属していなかったら観戦者とする
125+
getUserTeam(user).ifPresentOrElse(aliveTeams::add, () -> deadPlayers.add(user.getUsername()));
126+
user.clearEffectAndHeal();
127+
128+
user.getPlayer().getInventory().clear();
129+
user.getPlayer().teleport(start);
130+
user.getPlayer().setGameMode(GameMode.SPECTATOR);
131+
132+
// 10秒のクールダウン
133+
user.getPlayer().setCooldown(Material.COMMAND_BLOCK, 10 * 20);
134+
});
135+
nextPhase();
136+
spawnEnderDragon(player);
127137
});
128-
nextPhase();
129-
spawnEnderDragon(player);
130138
}
131139
}
132140

@@ -142,10 +150,10 @@ public void spawnEnderDragon(Player player) {
142150
final Location start = border.getCenter().clone().add(border.getSize() / 2, 130, border.getSize() / 2);
143151
final Location end = border.getCenter().clone().subtract(border.getSize() / 2, -130, border.getSize() / 2);
144152

145-
borderTask = Bukkit.getScheduler().runTaskLater(HungerGames.getInstance(), this::startBorder, (long) ((start.distance(end) / 10) * 20));
153+
borderTask = Bukkit.getScheduler().runTaskLater(BattleRoyale.getInstance(), this::startBorder, (long) ((start.distance(end) / 10) * 20));
146154

147155
dragonTrait = new DragonTrait(border);
148-
Bukkit.getScheduler().runTaskTimer(HungerGames.getInstance(), task -> {
156+
Bukkit.getScheduler().runTaskTimer(BattleRoyale.getInstance(), task -> {
149157
CitizensNPC dragon = new CitizensNPC(UUID.randomUUID(), 1, "", EntityControllers.createForType(EntityType.ENDER_DRAGON), CitizensAPI.getNPCRegistry());
150158
dragon.spawn(player.getLocation());
151159
dragon.addTrait(dragonTrait);
@@ -158,7 +166,7 @@ public void spawnEnderDragon(Player player) {
158166
}
159167

160168
public void dismountWithTeam(GameUser user) {
161-
Bukkit.getScheduler().runTask(HungerGames.getInstance(), () -> getTeamUsers(user).stream().filter(user1 -> user1 != user).forEach(user1 -> user.getPlayer().addPassenger(user1.getPlayer())));
169+
Bukkit.getScheduler().runTask(BattleRoyale.getInstance(), () -> getTeamUsers(user).stream().filter(user1 -> user1 != user).forEach(user1 -> user.getPlayer().addPassenger(user1.getPlayer())));
162170
}
163171

164172
public void onDeath(GameUser user) {
@@ -175,7 +183,9 @@ public void onDeath(GameUser user) {
175183
});
176184

177185
if (user.getPlayer().getKiller() != null) {
178-
records.addKill(GameUserManager.getGameUser(user.getPlayer().getKiller()));
186+
final GameUser killer = GameUserManager.getGameUser(user.getPlayer().getKiller());
187+
Bukkit.getPluginManager().callEvent(new GamePlayerKillEvent(killer, user));
188+
records.addKill(killer);
179189
}
180190

181191
deathChest.generateChest(user);
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package com.github.elic0de.battleroyale.game;
2+
3+
public enum GameType {
4+
SOLO,
5+
TEAM
6+
}

0 commit comments

Comments
 (0)