diff options
author | Frog-That-code <max@kawallski.localdomain> | 2024-06-08 18:45:20 -0400 |
---|---|---|
committer | Frog-That-code <max@kawallski.localdomain> | 2024-06-08 18:45:20 -0400 |
commit | 4a4db471dac2435ad40f9fc3c5b6739362bc6eef (patch) | |
tree | 0b59ab594abf3d9fbf6b97eb1d5cd4c00f8245a7 /src/main/java/los/numeros/EPHS/modules/GameClockModule.java | |
parent | 67563e7f41aa1adfb3abbe2d4d6c3bb87c5c9cce (diff) | |
download | lnm-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/modules/GameClockModule.java | 116 |
1 files changed, 116 insertions, 0 deletions
diff --git a/src/main/java/los/numeros/EPHS/modules/GameClockModule.java b/src/main/java/los/numeros/EPHS/modules/GameClockModule.java new file mode 100644 index 0000000..9c64a88 --- /dev/null +++ b/src/main/java/los/numeros/EPHS/modules/GameClockModule.java @@ -0,0 +1,116 @@ +package los.numeros.EPHS.modules; + +import java.util.UUID; + +import los.numeros.GameEngine.Module; +import los.numeros.utils.MinecraftTick; +import net.fabricmc.fabric.api.event.lifecycle.v1.ServerTickEvents; +import net.minecraft.entity.effect.StatusEffectInstance; +import net.minecraft.entity.effect.StatusEffects; +import net.minecraft.network.MessageType; +import net.minecraft.network.packet.s2c.play.TitleS2CPacket; +import net.minecraft.server.MinecraftServer; +import net.minecraft.server.network.ServerPlayerEntity; +import net.minecraft.sound.SoundEvents; +import net.minecraft.text.LiteralText; +import net.minecraft.text.Style; +import net.minecraft.text.TextColor; + +public class GameClockModule implements Module { + private ServerPlayerEntity[] diggers, hiders, players; + private MinecraftServer server; + private MinecraftTick minecraftTick = new MinecraftTick(); + private int i, j; + private LiteralText diggersString; + + private long tickCounter; + private boolean hidersVisible = false; + + public GameClockModule(ServerPlayerEntity diggers[], ServerPlayerEntity hiders[], ServerPlayerEntity[] players, MinecraftServer server) { + this.diggers = diggers; + this.hiders = hiders; + this.players = players; + this.server = server; + } + + private void playCountdownClick() { + for (ServerPlayerEntity p : players) { + p.playSound(SoundEvents.BLOCK_NOTE_BLOCK_HAT, 0.75f, 0.1f); + } + } + + private void preGameClock() { + server.getPlayerManager().broadcastChatMessage( + new LiteralText("20s").setStyle(Style.EMPTY.withColor(TextColor.parse("light_green"))), + MessageType.SYSTEM, + new UUID(0, 0) + ); + playCountdownClick(); + + minecraftTick.delayCallback(MinecraftTick.secondToTick(10), (tickDelay) -> { + server.getPlayerManager().broadcastChatMessage( + new LiteralText("10s").setStyle(Style.EMPTY.withColor(TextColor.parse("light_green"))), + MessageType.SYSTEM, + new UUID(0, 0) + ); + playCountdownClick(); + }); + + /* countdown 5 -> 1 */ + for (i = 15, j = 5; j > 0; i++, j--) { + minecraftTick.delayCallback(MinecraftTick.secondToTick(i), (tickDelay) -> { + final int countdown = Math.abs(MinecraftTick.tickToSecond(tickDelay) - 20); + final String color = countdown <= 3 ? "red" : "yellow"; + + playCountdownClick(); + server.getPlayerManager().broadcastChatMessage( + new LiteralText(String.valueOf(countdown + "s")) + .setStyle(Style.EMPTY.withColor(TextColor.parse(color))), + MessageType.SYSTEM, + new UUID(0, 0) + ); + }); + } + + /* wait 20 seconds */ + minecraftTick.delayCallback(MinecraftTick.secondToTick(20), (tickDelay) -> { + /* make title screen adhere to gammar */ + if (diggers.length > 1) { + diggersString = new LiteralText("The Diggers are Digging"); + } else { + diggersString = new LiteralText("The Digger is Digging"); + } + + /* style text */ + diggersString.setStyle(Style.EMPTY.withColor(TextColor.parse("red"))); + + /* send chat message */ + server.getPlayerManager().broadcastChatMessage( + diggersString, + MessageType.SYSTEM, + new UUID(0, 0) + ); + + /* set title screen */ + server.getPlayerManager().sendToAll( + new TitleS2CPacket(TitleS2CPacket.Action.TITLE, diggersString) + ); + + for (ServerPlayerEntity p : players) { + p.playSound(SoundEvents.BLOCK_NOTE_BLOCK_BASEDRUM, 1f, 0.5f); + } + }); + } + + + @Override + public int init() { + preGameClock(); + return 0; + } + + @Override + public int end() { + return 0; + } +} |