/
EventListener.java
60 lines (52 loc) · 2.36 KB
/
EventListener.java
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
package de.melanx.simplebackups;
import de.melanx.simplebackups.commands.BackupCommand;
import de.melanx.simplebackups.commands.MergeCommand;
import de.melanx.simplebackups.commands.PauseCommand;
import de.melanx.simplebackups.config.CommonConfig;
import de.melanx.simplebackups.config.ServerConfig;
import net.minecraft.commands.Commands;
import net.minecraft.server.level.ServerPlayer;
import net.minecraftforge.event.RegisterCommandsEvent;
import net.minecraftforge.event.TickEvent;
import net.minecraftforge.event.entity.player.PlayerEvent;
import net.minecraftforge.eventbus.api.SubscribeEvent;
public class EventListener {
private boolean doBackup;
@SubscribeEvent
public void registerCommands(RegisterCommandsEvent event) {
event.getDispatcher().register(Commands.literal(SimpleBackups.MODID)
.requires(stack -> ServerConfig.commandsCheatsDisabled() || stack.hasPermission(2))
.then(BackupCommand.register())
.then(PauseCommand.register())
.then(MergeCommand.register()));
}
@SubscribeEvent
public void onServerTick(TickEvent.LevelTickEvent event) {
//noinspection ConstantConditions
if (event.phase == TickEvent.Phase.END && !event.level.isClientSide
&& event.level.getGameTime() % 20 == 0 && event.level == event.level.getServer().overworld()) {
if (!event.level.getServer().getPlayerList().getPlayers().isEmpty() || this.doBackup) {
this.doBackup = false;
boolean done = BackupThread.tryCreateBackup(event.level.getServer());
if (done) {
SimpleBackups.LOGGER.info("Backup done.");
}
}
}
}
@SubscribeEvent
public void onPlayerConnect(PlayerEvent.PlayerLoggedInEvent event) {
if (CommonConfig.isEnabled() && event.getEntity().getServer() != null) {
SimpleBackups.network().pause(event.getEntity(), BackupData.get(event.getEntity().getServer()).isPaused());
}
}
@SubscribeEvent
public void onPlayerDisconnect(PlayerEvent.PlayerLoggedOutEvent event) {
if (event.getEntity() instanceof ServerPlayer player) {
//noinspection ConstantConditions
if (player.getServer().getPlayerList().getPlayers().isEmpty()) {
this.doBackup = true;
}
}
}
}