1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
|
package los.numeros.HidersAndDiggers;
import java.util.Random;
import java.util.UUID;
import java.util.Collection;
import java.util.Date;
import java.util.function.BooleanSupplier;
import los.numeros.GameEngine.Engine;
import los.numeros.GameEngine.Module;
import net.fabricmc.fabric.api.networking.v1.PlayerLookup;
import net.minecraft.network.MessageType;
import net.minecraft.server.MinecraftServer;
import net.minecraft.server.command.ServerCommandSource;
import net.minecraft.server.network.ServerPlayerEntity;
import net.minecraft.text.LiteralText;
import los.numeros.HidersAndDiggers.modules.*;
public class Main implements Engine {
BooleanSupplier running = () -> { return true; };
Module modules[] = new Module[10];
public Main(ServerCommandSource source, int numDiggers) {
int i;
MinecraftServer server = source.getMinecraftServer();
ServerPlayerEntity[] players, diggers, hiders;
Random r = new Random(new Date().getTime());
/* get all the players on the server */
Collection<ServerPlayerEntity> playerCollection = PlayerLookup.all(server);
players = playerCollection.toArray(new ServerPlayerEntity[playerCollection.size()]);
/* create the hiders and diggers array of appropriate sizes */
diggers = new ServerPlayerEntity[numDiggers];
hiders = new ServerPlayerEntity[players.length - numDiggers];
/* too few players to start the game */
if (players.length <= 2) {
/* send a message letting everyone know there aren't enough players to start the game */
server.getPlayerManager().broadcastChatMessage(
new LiteralText("Not enough players to start the game"),
MessageType.SYSTEM,
new UUID(0, 0)
);
return;
}
/* creates an array of diggers */
for (i = 0; numDiggers > 0; numDiggers--, i++) {
/* TODO: make sure the same person isn't picked to be all of the diggers */
diggers[i] = players[r.nextInt(players.length)];
}
/* creates an array of hiders */
i = 0;
for (ServerPlayerEntity p : players) {
/* add all players who arent diggers to the hiders array */
if (!hasPlayer(diggers, p)) {
hiders[i++] = p;
}
}
/* populate the modules */
modules[0] = new MainModule(diggers, hiders, players, source);
modules[1] = new GameClockModule(diggers, hiders, players, server);
/* start the game */
Engine.StartEngine(running, modules);
}
private boolean hasPlayer(ServerPlayerEntity[] array, ServerPlayerEntity player)
{
for (ServerPlayerEntity p : array) {
if (p == player)
return true;
}
return false;
}
}
|