diff options
| author | Anhgelus Morhtuuzh <william@herges.fr> | 2026-03-16 21:12:14 +0100 |
|---|---|---|
| committer | Anhgelus Morhtuuzh <william@herges.fr> | 2026-03-16 21:17:25 +0100 |
| commit | 724dbeea6672d31658d6563c1fe372a6f4cb4fbb (patch) | |
| tree | 29cc8c854833ac45f71c9a61329999d98b878216 /src | |
| parent | 411484a33f6fa407de332ec9eddf8ecb65ee078c (diff) | |
fix(game): #18
Diffstat (limited to 'src')
| -rw-r--r-- | src/main/java/world/anhgelus/molehunt/Molehunt.java | 5 | ||||
| -rw-r--r-- | src/main/java/world/anhgelus/molehunt/game/Game.java | 30 |
2 files changed, 19 insertions, 16 deletions
diff --git a/src/main/java/world/anhgelus/molehunt/Molehunt.java b/src/main/java/world/anhgelus/molehunt/Molehunt.java index 8df6e32..d5df320 100644 --- a/src/main/java/world/anhgelus/molehunt/Molehunt.java +++ b/src/main/java/world/anhgelus/molehunt/Molehunt.java @@ -160,7 +160,9 @@ public class Molehunt implements ModInitializer { return Command.SINGLE_SUCCESS; }) )); - command.then(literal("role").requires(ServerCommandSource::isExecutedByPlayer).executes(context -> { + command.then(literal("role") + .requires(ServerCommandSource::isExecutedByPlayer) + .executes(context -> { if (game == null || !game.started()) { throw (new SimpleCommandExceptionType(Text.translatable("commands.molehunt.error.game_not_started"))).create(); } @@ -216,7 +218,6 @@ public class Molehunt implements ModInitializer { ServerPlayerEvents.AFTER_RESPAWN.register((oldPlayer, newPlayer, alive) -> { if (game == null) return; if (!game.started()) return; - if (game.getMoles().contains(oldPlayer)) game.updateMole(oldPlayer, newPlayer); newPlayer.changeGameMode(GameMode.SPECTATOR); }); diff --git a/src/main/java/world/anhgelus/molehunt/game/Game.java b/src/main/java/world/anhgelus/molehunt/game/Game.java index 117dbce..6ab5a4a 100644 --- a/src/main/java/world/anhgelus/molehunt/game/Game.java +++ b/src/main/java/world/anhgelus/molehunt/game/Game.java @@ -1,6 +1,8 @@ package world.anhgelus.molehunt.game;
import net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking;
+import net.minecraft.entity.Entity;
+import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
import net.minecraft.network.packet.s2c.play.OverlayMessageS2CPacket;
@@ -27,7 +29,7 @@ public class Game { private final MinecraftServer server;
- private final List<ServerPlayerEntity> moles = new ArrayList<>();
+ private final List<UUID> moles = new ArrayList<>();
private final TitleFadeS2CPacket timing = new TitleFadeS2CPacket(20, 40, 20);
@@ -49,7 +51,7 @@ public class Game { final var r = ThreadLocalRandom.current().nextInt(0, players.size());
final var mole = players.get(r);
if (mole == null) throw new IllegalStateException("Mole is null!");
- moles.add(mole);
+ moles.add(mole.getUuid());
players.remove(r);
}
@@ -94,7 +96,7 @@ public class Game { public void run() {
playerManager.getPlayerList().forEach(p -> {
p.networkHandler.sendPacket(timing);
- if (moles.contains(p)) {
+ if (moles.contains(p.getUuid())) {
p.networkHandler.sendPacket(new TitleS2CPacket(Text.translatable("molehunt.game.start.mole.title")));
p.networkHandler.sendPacket(new SubtitleS2CPacket(Text.translatable("molehunt.game.start.mole.subtitle")));
} else {
@@ -118,7 +120,7 @@ public class Game { public void run() {
remaining--;
playerManager.getPlayerList().forEach(player -> {
- if (Molehunt.timerVisibility.getOrDefault(player, true)) {
+ if (Molehunt.timerVisibility.getOrDefault(player.getUuid(), true)) {
player.networkHandler.sendPacket(new OverlayMessageS2CPacket(Text.of(getRemainingText())));
}
});
@@ -173,19 +175,23 @@ public class Game { }
public List<ServerPlayerEntity> getMoles() {
- return moles;
+ return moles.stream()
+ .map(uuid -> server.getPlayerManager().getPlayer(uuid))
+ .filter(Objects::nonNull)
+ .filter(p -> !p.isSpectator())
+ .toList();
}
public String getMolesAsString() {
- return moles.stream()
- .map(ServerPlayerEntity::getDisplayName)
+ return getMoles().stream()
+ .map(PlayerEntity::getDisplayName)
.filter(Objects::nonNull)
- .map(Text::getString)
+ .map(Object::toString)
.collect(Collectors.joining(", "));
}
public boolean isMole(ServerPlayerEntity player) {
- return moles.contains(player);
+ return moles.contains(player.getUuid());
}
public boolean wonByMoles() {
@@ -194,15 +200,11 @@ public class Game { .getPlayerList()
.stream()
.filter(p -> !p.isSpectator() && !p.isCreative())
+ .map(Entity::getUuid)
.toList()
);
}
- public void updateMole(ServerPlayerEntity oldPlayer, ServerPlayerEntity newPlayer) {
- moles.remove(oldPlayer);
- moles.add(newPlayer);
- }
-
public boolean started() {
return started;
}
|
