Skip to content
Open
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
1 change: 1 addition & 0 deletions .github/workflows/maven.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
name: Java CI with Maven

on:
workflow_dispatch: {}
push:
branches: [ "master" ]
pull_request:
Expand Down
5 changes: 4 additions & 1 deletion API/src/main/java/dev/lrxh/api/NeptuneAPI.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import dev.lrxh.api.features.IDivisionService;
import dev.lrxh.api.features.IItemBrowserService;
import dev.lrxh.api.kit.IKitService;
import dev.lrxh.api.leaderboard.ILeaderboardService;
import dev.lrxh.api.match.IMatchService;
import dev.lrxh.api.profile.IProfileService;
import dev.lrxh.api.scoreboard.IScoreboardService;
Expand All @@ -25,4 +26,6 @@ public interface NeptuneAPI {
ICosmeticService getCosmeticService();

IItemBrowserService getItemBrowserService();
}

ILeaderboardService getLeaderboardService();
}
2 changes: 2 additions & 0 deletions API/src/main/java/dev/lrxh/api/NeptuneAPIImpl.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import dev.lrxh.api.features.IDivisionService;
import dev.lrxh.api.features.IItemBrowserService;
import dev.lrxh.api.kit.IKitService;
import dev.lrxh.api.leaderboard.ILeaderboardService;
import dev.lrxh.api.match.IMatchService;
import dev.lrxh.api.profile.IProfileService;
import dev.lrxh.api.scoreboard.IScoreboardService;
Expand All @@ -22,4 +23,5 @@ public class NeptuneAPIImpl implements NeptuneAPI {
private final IDivisionService divisionService;
private final ICosmeticService cosmeticService;
private final IItemBrowserService itemBrowserService;
private final ILeaderboardService leaderboardService;
}
5 changes: 5 additions & 0 deletions API/src/main/java/dev/lrxh/api/arena/IArenaService.java
Original file line number Diff line number Diff line change
@@ -1,9 +1,14 @@
package dev.lrxh.api.arena;

import java.util.LinkedHashSet;
import java.util.List;

public interface IArenaService {
LinkedHashSet<IArena> getAllArenas();

IArena getArenaByName(String name);

List<IArena> getDuplicatesApi(IArena owner);

IArena getFreeDuplicateApi(IArena owner);
}
2 changes: 2 additions & 0 deletions API/src/main/java/dev/lrxh/api/kit/IKitService.java
Original file line number Diff line number Diff line change
Expand Up @@ -14,4 +14,6 @@ public interface IKitService {
void removeArena(IArena arena);

boolean addKit(IKit kit);

void save();
}
11 changes: 11 additions & 0 deletions API/src/main/java/dev/lrxh/api/leaderboard/ILeaderboardEntry.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package dev.lrxh.api.leaderboard;

import java.util.UUID;

public interface ILeaderboardEntry {
String getUsername();

UUID getUuid();

int getValue();
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package dev.lrxh.api.leaderboard;

import dev.lrxh.api.kit.IKit;

import java.util.List;
import java.util.UUID;

public interface ILeaderboardService {
List<ILeaderboardEntry> getTopPlayers(IKit kit, ILeaderboardType type, int limit);

int getPlayerRank(UUID playerUUID, IKit kit, ILeaderboardType type);

/**
* The loading is asynchronous.
*/
void reload();
}
10 changes: 10 additions & 0 deletions API/src/main/java/dev/lrxh/api/leaderboard/ILeaderboardType.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package dev.lrxh.api.leaderboard;

public enum ILeaderboardType {
KILLS,
DEATHS,
WINS,
LOSSES,
BEST_WIN_STREAK,
ELO
}
8 changes: 7 additions & 1 deletion API/src/main/java/dev/lrxh/api/match/IMatch.java
Original file line number Diff line number Diff line change
Expand Up @@ -24,15 +24,21 @@ public interface IMatch {

int getRounds();

int getCurrentRound();

boolean isDuel();

boolean isEnded();

IParticipant getParticipant(Player player);

IParticipant getParticipant(UUID playerUUID);

boolean isSpectator(UUID playerUUID);

void broadcast(String message);

String getWinnerName();

String getLoserName();
}
18 changes: 18 additions & 0 deletions API/src/main/java/dev/lrxh/api/match/IMatchService.java
Original file line number Diff line number Diff line change
@@ -1,7 +1,25 @@
package dev.lrxh.api.match;

import dev.lrxh.api.kit.IKit;
import org.bukkit.entity.Player;

import java.util.List;
import java.util.UUID;

public interface IMatchService {
void startMatch(IMatch match, Player redPlayer, Player bluePlayer);

void startFfaMatch(List<Player> players, IKit kit);

void startTeamMatch(List<Player> redTeam, List<Player> blueTeam, IKit kit);

void startDuelMatch(Player redPlayer, Player bluePlayer, IKit kit, boolean duel, int rounds);

IMatch getMatchApi(Player player);

IMatch getMatchApi(UUID playerUUID);

List<IMatch> getActiveMatches();

void stopMatch(IMatch match);
}
5 changes: 5 additions & 0 deletions API/src/main/java/dev/lrxh/api/profile/IProfile.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package dev.lrxh.api.profile;

import dev.lrxh.api.data.IGameData;
import dev.lrxh.api.match.IMatch;
import org.bukkit.entity.Player;

import java.util.UUID;
Expand All @@ -12,6 +13,8 @@ public interface IProfile {

IGameData getGameData();

IMatch getIMatch();

void setState(String customState);

String getProfileState();
Expand All @@ -23,4 +26,6 @@ public interface IProfile {
void addCooldown(String name, int millis);

boolean hasCooldownEnded(String name);

void forfeit();
}
4 changes: 4 additions & 0 deletions API/src/main/java/dev/lrxh/api/profile/IProfileService.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,8 @@

public interface IProfileService {
CompletableFuture<IProfile> getProfile(UUID uuid);

IProfile getCachedProfile(UUID uuid);

boolean isLoaded(UUID uuid);
}
7 changes: 7 additions & 0 deletions API/src/main/java/dev/lrxh/api/queue/IQueueService.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package dev.lrxh.api.queue;

import dev.lrxh.api.kit.IKit;
import org.bukkit.entity.Player;

import java.util.Map;
import java.util.Queue;
Expand All @@ -14,4 +15,10 @@ public interface IQueueService {
IQueueEntry remove(UUID playerUUID);

IQueueEntry get(UUID playerUUID);
IQueueEntry get(UUID playerUUID, IKit kit);

void addPlayerToQueue(Player player, IKit kit);

boolean isInQueue(UUID playerUUID);
boolean isInQueue(UUID playerUUID, IKit kit);
}
4 changes: 2 additions & 2 deletions Plugin/src/main/java/dev/lrxh/neptune/Neptune.java
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,6 @@
import dev.lrxh.neptune.feature.settings.command.SettingProvider;
import dev.lrxh.neptune.feature.settings.command.SettingsCommand;
import dev.lrxh.neptune.game.arena.Arena;
import dev.lrxh.neptune.game.arena.ArenaDuplicator;
import dev.lrxh.neptune.game.arena.ArenaService;
import com.fastasyncworldedit.core.configuration.Settings;
import dev.lrxh.neptune.game.arena.command.ArenaProvider;
Expand Down Expand Up @@ -120,7 +119,8 @@ private void initAPI() {
getServer().getServicesManager().register(
NeptuneAPI.class,
new NeptuneAPIImpl(ProfileService.get(), MatchService.get(), KitService.get(), ScoreboardService.get(),
ArenaService.get(), DivisionService.get(), CosmeticService.get(), ItemBrowserService.get()),
ArenaService.get(), DivisionService.get(), CosmeticService.get(), ItemBrowserService.get(),
LeaderboardService.get()),
this,
ServicePriority.Normal);
ServerUtils.info("Neptune API Initialized");
Expand Down
29 changes: 2 additions & 27 deletions Plugin/src/main/java/dev/lrxh/neptune/commands/LeaveCommand.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,40 +2,15 @@

import com.jonahseguin.drink.annotation.Command;
import com.jonahseguin.drink.annotation.Sender;
import dev.lrxh.api.events.PlayerLeaveEvent;
import dev.lrxh.neptune.API;
import dev.lrxh.neptune.configs.impl.MessagesLocale;
import dev.lrxh.neptune.profile.data.ProfileState;
import dev.lrxh.neptune.profile.impl.Profile;
import dev.lrxh.neptune.utils.PlayerUtil;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;

public class LeaveCommand {

@Command(name = "", desc = "")
public void leave(@Sender Player player) {
Profile profile = API.getProfile(player.getUniqueId());
ProfileState state = profile.getState();
String previousStatus = profile.getProfileState();
switch (state) {
case IN_SPECTATOR:
profile.getMatch().removeSpectator(player.getUniqueId(), true);
return;
case IN_GAME:
profile.getMatch().onLeave(profile.getMatch().getParticipant(player.getUniqueId()), false);
MessagesLocale.MATCH_FORFEIT.send(player);
return;
case IN_CUSTOM:
PlayerUtil.reset(player);
profile.setState(ProfileState.IN_LOBBY);
PlayerUtil.teleportToSpawn(player.getUniqueId());
return;
default:
break;
}
PlayerLeaveEvent event = new PlayerLeaveEvent(profile, previousStatus);
Bukkit.getPluginManager().callEvent(event);
PlayerUtil.teleportToSpawn(player.getUniqueId());
Profile profile = API.getProfile(player);
profile.forfeit();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -196,11 +196,15 @@ public void execute(Player player) {
DuelRequest duelRequest = new DuelRequest(profile.getPlayerUUID(), match.getKit(), arena, false,
match.getRounds());
Player opponent = match.getParticipant(player).getOpponent().getPlayer();
if (opponent == null)
if (opponent == null) {
arena.remove();
return;
}
Profile opponentProfile = API.getProfile(opponent);
if (opponentProfile == null)
if (opponentProfile == null) {
arena.remove();
return;
}
opponentProfile.sendRequest(duelRequest, true);
});
}
Expand Down
Loading
Loading