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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
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;
}
}
|