aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java/los/numeros/EPHS/Main.java
diff options
context:
space:
mode:
authorFrog-That-code <max@kawallski.localdomain>2024-06-08 18:45:20 -0400
committerFrog-That-code <max@kawallski.localdomain>2024-06-08 18:45:20 -0400
commit4a4db471dac2435ad40f9fc3c5b6739362bc6eef (patch)
tree0b59ab594abf3d9fbf6b97eb1d5cd4c00f8245a7 /src/main/java/los/numeros/EPHS/Main.java
parent67563e7f41aa1adfb3abbe2d4d6c3bb87c5c9cce (diff)
downloadlnm-4a4db471dac2435ad40f9fc3c5b6739362bc6eef.tar.gz
lnm-4a4db471dac2435ad40f9fc3c5b6739362bc6eef.tar.bz2
lnm-4a4db471dac2435ad40f9fc3c5b6739362bc6eef.zip
begins the code for EPHS
Diffstat (limited to '')
-rw-r--r--src/main/java/los/numeros/EPHS/Main.java79
1 files changed, 79 insertions, 0 deletions
diff --git a/src/main/java/los/numeros/EPHS/Main.java b/src/main/java/los/numeros/EPHS/Main.java
new file mode 100644
index 0000000..530bc20
--- /dev/null
+++ b/src/main/java/los/numeros/EPHS/Main.java
@@ -0,0 +1,79 @@
+package los.numeros.EPHS;
+
+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;
+ }
+}