Skip to content

Commit 9ad5395

Browse files
committed
途中参加実装
1 parent ec212d4 commit 9ad5395

File tree

2 files changed

+27
-2
lines changed

2 files changed

+27
-2
lines changed

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

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import com.github.elic0de.eliccommon.game.AbstractGame;
44
import com.github.elic0de.eliccommon.game.phase.Phase;
5+
import com.github.elic0de.eliccommon.util.ItemBuilder;
56
import com.github.elic0de.hungergames.HungerGames;
67
import com.github.elic0de.hungergames.chest.DeathChest;
78
import com.github.elic0de.hungergames.dragon.DragonTrait;
@@ -18,6 +19,7 @@
1819
import org.bukkit.entity.EntityType;
1920
import org.bukkit.entity.Player;
2021
import org.bukkit.event.player.PlayerTeleportEvent;
22+
import org.bukkit.inventory.ItemStack;
2123
import org.bukkit.scoreboard.Scoreboard;
2224
import org.bukkit.scoreboard.Team;
2325
import org.jetbrains.annotations.NotNull;
@@ -174,6 +176,28 @@ public boolean isSpectator(GameUser user) {
174176
return deadPlayers.contains(user.getUsername());
175177
}
176178

179+
public void rejoin(GameUser user) {
180+
if (getPhase() instanceof InGamePhase) {
181+
if (rejoinPlayers.contains(user.getUniqueId())) {
182+
final Player player = user.getPlayer();
183+
final ItemStack chestPlate = player.getInventory().getChestplate();
184+
if (chestPlate == null) return;
185+
if (chestPlate.getType() == Material.ELYTRA) {
186+
player.getInventory().setChestplate(null);
187+
player.getInventory().addItem(ItemBuilder.of(Material.BREAD).amount(20).build());
188+
player.getPassengers().forEach(player::removePassenger);
189+
}
190+
rejoinPlayers.remove(user.getUniqueId());
191+
}
192+
}
193+
}
194+
195+
public void addRejoinPlayer(GameUser user) {
196+
// 死んでいる場合は再参加無効に
197+
if (deadPlayers.contains(user.getUsername())) return;
198+
rejoinPlayers.add(user.getUniqueId());
199+
}
200+
177201
public boolean checkTeamDead(GameUser user) {
178202
if (getUserTeam(user).isPresent()) {
179203
final Team team = getUserTeam(user).get();

src/main/java/com/github/elic0de/hungergames/game/phase/InGamePhase.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import com.github.elic0de.eliccommon.game.phase.Phase;
44
import com.github.elic0de.eliccommon.user.OnlineUser;
55
import com.github.elic0de.hungergames.game.HungerGame;
6+
import com.github.elic0de.hungergames.user.GameUser;
67

78
public class InGamePhase extends Phase {
89

@@ -29,11 +30,11 @@ public void end() {
2930

3031
@Override
3132
public void join(OnlineUser player) {
32-
33+
game.rejoin((GameUser) player);
3334
}
3435

3536
@Override
3637
public void leave(OnlineUser player) {
37-
38+
game.addRejoinPlayer((GameUser) player);
3839
}
3940
}

0 commit comments

Comments
 (0)