Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
import net.swofty.type.bedwarslobby.item.impl.BedWarsMenu;
import net.swofty.type.bedwarslobby.item.impl.Collectibles;
import net.swofty.type.bedwarslobby.launchpad.BedWarsLaunchPads;
import net.swofty.type.bedwarslobby.parkour.BedWarsLobbyParkour;
import net.swofty.type.bedwarslobby.util.BedWarsLobbyMap;
import net.swofty.type.generic.HypixelConst;
import net.swofty.type.generic.HypixelGenericLoader;
Expand All @@ -27,10 +28,7 @@
import net.swofty.type.generic.tab.TablistModule;
import net.swofty.type.bedwarslobby.tab.BedWarsPlayersOnlineModule;
import net.swofty.type.lobby.LobbyTypeLoader;
import net.swofty.type.lobby.events.LobbyBlockBreak;
import net.swofty.type.lobby.events.LobbyItemEvents;
import net.swofty.type.lobby.events.LobbyLaunchPadEvents;
import net.swofty.type.lobby.events.LobbyPlayerJoinEvents;
import net.swofty.type.lobby.events.*;
import net.swofty.type.lobby.item.LobbyItem;
import net.swofty.type.lobby.item.LobbyItemHandler;
import net.swofty.type.lobby.item.impl.HidePlayers;
Expand All @@ -40,6 +38,7 @@
import net.swofty.type.lobby.launchpad.LaunchPad;
import net.swofty.type.lobby.launchpad.LaunchPadHandler;
import net.swofty.type.lobby.parkour.LobbyParkourManager;
import net.swofty.type.lobby.parkour.Parkour;
import org.jetbrains.annotations.Nullable;
import org.tinylog.Logger;

Expand All @@ -50,6 +49,7 @@

public class TypeBedWarsLobbyLoader implements LobbyTypeLoader {
public static BedWarsLobbyMap bedWarsLobbyMap = new BedWarsLobbyMap();
public static LobbyParkourManager parkourManager;

@Getter
private final LobbyItemHandler itemHandler = new LobbyItemHandler();
Expand All @@ -59,6 +59,11 @@ public ServerType getType() {
return ServerType.BEDWARS_LOBBY;
}

@Override
public Parkour getParkour() {
return new BedWarsLobbyParkour();
}

@Override
public void onInitialize(MinecraftServer server) {
}
Expand Down Expand Up @@ -93,13 +98,20 @@ public void afterInitialize(MinecraftServer server) {
MinecraftServer.getSchedulerManager().buildTask(PlayerHolograms::updateExternalHolograms).delay(TaskSchedule.seconds(5))
.repeat(TaskSchedule.seconds(2))
.schedule();

parkourManager = new LobbyParkourManager(getParkour());
}

@Override
public List<LaunchPad> getLaunchPads() {
return Arrays.asList(BedWarsLaunchPads.values());
}

@Override
public @Nullable LobbyParkourManager getParkourManager() {
return parkourManager;
}

@Override
public Map<Integer, LobbyItem> getHotbarItems() {
return Map.of(
Expand All @@ -112,11 +124,6 @@ public Map<Integer, LobbyItem> getHotbarItems() {
);
}

@Override
public LobbyParkourManager getParkourManager() {
return null;
}

@Override
public List<ServiceType> getRequiredServices() {
return List.of(ServiceType.ORCHESTRATOR);
Expand Down Expand Up @@ -153,6 +160,7 @@ public List<HypixelEventClass> getTraditionalEvents() {
).toList());
// Add lobby base events
events.add(new LobbyItemEvents());
events.add(new LobbyParkourEvents());
events.add(new LobbyLaunchPadEvents());
events.add(new LobbyPlayerJoinEvents());
events.add(new LobbyBlockBreak());
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
package net.swofty.type.bedwarslobby.parkour;

import net.minestom.server.coordinate.BlockVec;
import net.minestom.server.coordinate.Point;
import net.minestom.server.coordinate.Pos;
import net.swofty.type.generic.data.datapoints.DatapointParkourData;
import net.swofty.type.lobby.parkour.Parkour;

import java.util.List;

public class BedWarsLobbyParkour implements Parkour {

@Override
public DatapointParkourData.ParkourType getId() {
return DatapointParkourData.ParkourType.BED_WARS_LOBBY;
}

@Override
public Pos getStartLocation() {
return new Pos(-32.5, 72, -25.5, 135, 0);
}

@Override
public List<Point> getCheckpoints() {
return List.of(
new BlockVec(-34, 72, -27),
new BlockVec(-36, 97, -113),
new BlockVec(95, 92, -111),
new BlockVec(144, 98, 2),
new BlockVec(88, 99, 106),
new BlockVec(45, 92, 117),
new BlockVec(-70, 75, 118),
new BlockVec(-41, 72, 38)
);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ public DatapointParkourData(String key) {
@Getter
public enum ParkourType {
PROTOTYPE_LOBBY,
MURDER_MYSTERY_LOBBY
MURDER_MYSTERY_LOBBY,
BED_WARS_LOBBY
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -146,17 +146,34 @@ public void finishedParkour(HypixelPlayer player) {
long timeTaken = System.currentTimeMillis() - startTime;
DatapointParkourData datapoint = player.getDataHandler().get(HypixelDataHandler.Data.PARKOUR_DATA, DatapointParkourData.class);
Map<DatapointParkourData.ParkourType, Long> data = datapoint.getValue();

long previousTimeTaken = data.getOrDefault(parkour.getId(), 0L);
boolean newRecord = false;
if (data.containsKey(parkour.getId())) {
data.replace(parkour.getId(), Math.min(data.getOrDefault(parkour.getId(), Long.MAX_VALUE), timeTaken));
long previousBest = data.get(parkour.getId());
if (timeTaken < previousBest) {
data.put(parkour.getId(), timeTaken);
newRecord = true;
}
} else {
data.put(parkour.getId(), timeTaken);
newRecord = true;
}
datapoint.setValue(data);
String timeString = String.format("%02d:%02d.%03d",
(timeTaken / 60000),
(timeTaken % 60000) / 1000,
(timeTaken % 1000));
player.sendMessage("§a§lCongratulations! You finished the parkour challenge in §e§l" + timeString + "§a§l!");

if (newRecord) {
player.sendMessage("§a§lThat's a new record of §e§l" + timeString + "§a§l! Try again to get an even better record!");
} else {
String previousTimeString = String.format("%02d:%02d.%03d",
(previousTimeTaken / 60000),
(previousTimeTaken % 60000) / 1000,
(previousTimeTaken % 1000));
player.sendMessage("§a§lYour time of §e§l" + timeString + "§a§l did not beat your previous record of §e§l" + previousTimeString + "§a§l! Try again to beat your old record!");
}

if (HypixelConst.getTypeLoader() instanceof LobbyTypeLoader lobbyLoader) {
player.getInventory().clear();
Expand All @@ -182,7 +199,11 @@ public void checkpointPlayer(HypixelPlayer player, int checkpointIndex) {
return;
}
perPlayerStartTime.put(player.getUuid(), new RunData(runData.startTime(), checkpointIndex));
player.sendMessage("§a§lCheckpoint §e§l#" + checkpointIndex + " §areached!");
String timeString = String.format("%02d:%02d.%03d",
((System.currentTimeMillis() - runData.startTime()) / 60000),
((System.currentTimeMillis() - runData.startTime()) % 60000) / 1000,
((System.currentTimeMillis() - runData.startTime()) % 1000));
player.sendMessage("§a§lYou reached §e§lCheckpoint #" + checkpointIndex + " §a§lafter §e§l" + timeString + "§a§l.");
}

public void cancelParkour(HypixelPlayer player) {
Expand Down