Skip to content

Commit 513dd18

Browse files
authored
Merge pull request #644 from ArikSquad/feat/parkour-command-2
feat: add /parkour checkpoint and closer to 1:1 messages
2 parents 7f65e86 + 2f74e2f commit 513dd18

1 file changed

Lines changed: 35 additions & 1 deletion

File tree

type.lobby/src/main/java/net/swofty/type/lobby/commands/ParkourCommand.java

Lines changed: 35 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,14 +23,27 @@ public void registerUsage(MinestomCommand command) {
2323
manager = null;
2424
}
2525

26+
command.setDefaultExecutor(((sender, context) -> {
27+
sender.sendMessage("§c/parkour start");
28+
sender.sendMessage("§c/parkour reset");
29+
sender.sendMessage("§c/parkour checkpoint");
30+
sender.sendMessage("§c/parkour cancel");
31+
}));
32+
2633
// start
2734
command.addSyntax((sender, context) -> {
2835
if (manager == null) {
2936
sender.sendMessage("§cThis command is unavailable here.");
3037
return;
3138
}
32-
if (!(sender instanceof Player player)) return;
39+
if (!(sender instanceof HypixelPlayer player)) return;
40+
if (manager.getPerPlayerStartTime().containsKey(player.getUuid())) {
41+
sender.sendMessage("§cYou are currently in a parkour race. Use /parkour reset");
42+
return;
43+
}
44+
3345
player.teleport(manager.getParkour().getStartLocation());
46+
manager.startParkour(player);
3447
}, new ArgumentLiteral("start"));
3548

3649
// cancel
@@ -52,5 +65,26 @@ public void registerUsage(MinestomCommand command) {
5265
if (!(sender instanceof HypixelPlayer player)) return;
5366
manager.resetPlayer(player);
5467
}, new ArgumentLiteral("reset"));
68+
69+
// checkpoint
70+
command.addSyntax((sender, context) -> {
71+
if (manager == null) {
72+
sender.sendMessage("§cThis command is unavailable here.");
73+
return;
74+
}
75+
if (!(sender instanceof HypixelPlayer player)) return;
76+
Parkour parkour = manager.getParkour();
77+
if (!manager.getPerPlayerStartTime().containsKey(player.getUuid())) {
78+
sender.sendMessage("§cYou haven't started the parkour challenge yet! Use §e/parkour start §cto start!");
79+
return;
80+
}
81+
int checkpointIndex = manager.getPerPlayerStartTime().get(player.getUuid()).lastCheckpointIndex();
82+
if (checkpointIndex == 0) {
83+
player.teleport(parkour.getStartLocation());
84+
} else {
85+
player.teleport(parkour.getCheckpoints().get(checkpointIndex - 1).asPos());
86+
}
87+
}, new ArgumentLiteral("checkpoint"));
5588
}
89+
5690
}

0 commit comments

Comments
 (0)