Skip to content

Commit 9b0d0ae

Browse files
authored
Merge pull request #641 from ArikSquad/feat/parkour-command
feat: parkour command
2 parents 62b99be + 06cae54 commit 9b0d0ae

8 files changed

Lines changed: 86 additions & 1 deletion

File tree

type.bedwarslobby/src/main/java/net/swofty/type/bedwarslobby/TypeBedWarsLobbyLoader.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,8 @@ public void afterInitialize(MinecraftServer server) {
100100
.schedule();
101101

102102
parkourManager = new LobbyParkourManager(getParkour());
103+
104+
LobbyTypeLoader.registerLobbyCommands();
103105
}
104106

105107
@Override

type.lobby/src/main/java/net/swofty/type/lobby/LobbyTypeLoader.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,16 @@
11
package net.swofty.type.lobby;
22

3+
import net.minestom.server.MinecraftServer;
4+
import net.swofty.type.generic.HypixelGenericLoader;
35
import net.swofty.type.generic.HypixelTypeLoader;
6+
import net.swofty.type.generic.command.HypixelCommand;
47
import net.swofty.type.lobby.item.LobbyItem;
58
import net.swofty.type.lobby.item.LobbyItemHandler;
69
import net.swofty.type.lobby.launchpad.LaunchPad;
710
import net.swofty.type.lobby.parkour.LobbyParkourManager;
811
import net.swofty.type.lobby.parkour.Parkour;
912
import org.jetbrains.annotations.Nullable;
13+
import org.tinylog.Logger;
1014

1115
import java.util.List;
1216
import java.util.Map;
@@ -36,4 +40,15 @@ default Parkour getParkour() {
3640
}
3741

3842
@Nullable LobbyParkourManager getParkourManager();
43+
44+
static void registerLobbyCommands() {
45+
HypixelGenericLoader.loopThroughPackage("net.swofty.type.lobby.commands", HypixelCommand.class).forEach(command -> {
46+
try {
47+
MinecraftServer.getCommandManager().register(command.getCommand());
48+
} catch (Exception e) {
49+
Logger.error(e, "Failed to register command {} in class {}",
50+
command.getCommand().getName(), command.getClass().getSimpleName());
51+
}
52+
});
53+
}
3954
}
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
package net.swofty.type.lobby.commands;
2+
3+
import net.minestom.server.command.builder.arguments.ArgumentLiteral;
4+
import net.minestom.server.entity.Player;
5+
import net.swofty.type.generic.HypixelConst;
6+
import net.swofty.type.generic.command.CommandParameters;
7+
import net.swofty.type.generic.command.HypixelCommand;
8+
import net.swofty.type.generic.user.HypixelPlayer;
9+
import net.swofty.type.generic.user.categories.Rank;
10+
import net.swofty.type.lobby.LobbyTypeLoader;
11+
import net.swofty.type.lobby.parkour.LobbyParkourManager;
12+
import net.swofty.type.lobby.parkour.Parkour;
13+
14+
@CommandParameters(aliases = "parkour", allowsConsole = false, description = "Parkour related commands", permission = Rank.DEFAULT, usage = "/parkour")
15+
public class ParkourCommand extends HypixelCommand {
16+
17+
@Override
18+
public void registerUsage(MinestomCommand command) {
19+
LobbyParkourManager manager;
20+
if (HypixelConst.getTypeLoader() instanceof LobbyTypeLoader loader) {
21+
manager = loader.getParkourManager();
22+
} else {
23+
manager = null;
24+
}
25+
26+
// start
27+
command.addSyntax((sender, context) -> {
28+
if (manager == null) {
29+
sender.sendMessage("§cThis command is unavailable here.");
30+
return;
31+
}
32+
if (!(sender instanceof Player player)) return;
33+
player.teleport(manager.getParkour().getStartLocation());
34+
}, new ArgumentLiteral("start"));
35+
36+
// cancel
37+
command.addSyntax((sender, context) -> {
38+
if (manager == null) {
39+
sender.sendMessage("§cThis command is unavailable here.");
40+
return;
41+
}
42+
if (!(sender instanceof HypixelPlayer player)) return;
43+
manager.cancelParkour(player);
44+
}, new ArgumentLiteral("cancel"));
45+
46+
// reset
47+
command.addSyntax((sender, context) -> {
48+
if (manager == null) {
49+
sender.sendMessage("§cThis command is unavailable here.");
50+
return;
51+
}
52+
if (!(sender instanceof HypixelPlayer player)) return;
53+
manager.resetPlayer(player);
54+
}, new ArgumentLiteral("reset"));
55+
}
56+
}

type.lobby/src/main/java/net/swofty/type/lobby/item/impl/ResetParkour.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import net.minestom.server.item.Material;
77
import net.swofty.type.generic.HypixelConst;
88
import net.swofty.type.generic.gui.inventory.ItemStackCreator;
9+
import net.swofty.type.generic.user.HypixelPlayer;
910
import net.swofty.type.lobby.LobbyTypeLoader;
1011
import net.swofty.type.lobby.item.LobbyItem;
1112
import net.swofty.type.lobby.parkour.LobbyParkourManager;
@@ -27,7 +28,7 @@ public void onItemInteract(PlayerInstanceEvent event) {
2728
if (HypixelConst.getTypeLoader() instanceof LobbyTypeLoader lobbyLoader) {
2829
LobbyParkourManager parkourManager = lobbyLoader.getParkourManager();
2930
if (parkourManager == null) return;
30-
event.getPlayer().teleport(parkourManager.getParkour().getStartLocation());
31+
parkourManager.resetPlayer((HypixelPlayer) event.getPlayer());
3132
}
3233
}
3334
}

type.lobby/src/main/java/net/swofty/type/lobby/parkour/LobbyParkourManager.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -229,6 +229,11 @@ public void cancelParkour(HypixelPlayer player) {
229229
}
230230
}
231231

232+
public void resetPlayer(HypixelPlayer player) {
233+
player.teleport(parkour.getStartLocation());
234+
startParkour(player);
235+
}
236+
232237
public static void removePlayerHolograms(HypixelPlayer player) {
233238
HologramCache cache = perPlayerHolo.remove(player.getUuid());
234239
if (cache != null) {

type.murdermysterylobby/src/main/java/net/swofty/type/murdermysterylobby/TypeMurderMysteryLobbyLoader.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,8 @@ public void afterInitialize(MinecraftServer server) {
9090
.delay(TaskSchedule.seconds(5))
9191
.repeat(TaskSchedule.seconds(2))
9292
.schedule();
93+
94+
LobbyTypeLoader.registerLobbyCommands();
9395
}
9496

9597
@Override

type.prototypelobby/src/main/java/net/swofty/type/prototypelobby/TypePrototypeLobbyLoader.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,8 @@ public void afterInitialize(MinecraftServer server) {
6262
getHotbarItems().values().forEach(itemHandler::add);
6363

6464
parkourManager = new LobbyParkourManager(getParkour());
65+
66+
LobbyTypeLoader.registerLobbyCommands();
6567
}
6668

6769
@Override

type.skywarslobby/src/main/java/net/swofty/type/skywarslobby/TypeSkywarsLobbyLoader.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,8 @@ public void afterInitialize(MinecraftServer server) {
110110
.delay(TaskSchedule.seconds(5))
111111
.repeat(TaskSchedule.seconds(2))
112112
.schedule();
113+
114+
LobbyTypeLoader.registerLobbyCommands();
113115
}
114116

115117
@Override

0 commit comments

Comments
 (0)