api header support, team api integration
This commit is contained in:
@ -0,0 +1,28 @@
|
||||
package eu.mhsl.craftattack.spawn.varo.api;
|
||||
|
||||
import eu.mhsl.craftattack.spawn.core.config.Configuration;
|
||||
import org.bukkit.configuration.ConfigurationSection;
|
||||
|
||||
import java.net.URI;
|
||||
import java.net.URISyntaxException;
|
||||
import java.net.http.HttpRequest;
|
||||
import java.util.Objects;
|
||||
|
||||
public class VaroApi {
|
||||
private final static ConfigurationSection apiConfig = Objects.requireNonNull(Configuration.cfg.getConfigurationSection("varoApi"));
|
||||
public final static String basePath = apiConfig.getString("endpoint");
|
||||
public final static String apiSecret = apiConfig.getString("auth");
|
||||
|
||||
public static URI getBaseUri() {
|
||||
Objects.requireNonNull(basePath);
|
||||
try {
|
||||
return new URI(basePath);
|
||||
} catch(URISyntaxException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
public static void authorizationHeader(HttpRequest.Builder builder) {
|
||||
builder.header("Authorization", apiSecret);
|
||||
}
|
||||
}
|
@ -0,0 +1,36 @@
|
||||
package eu.mhsl.craftattack.spawn.varo.api.repositories;
|
||||
|
||||
import com.google.common.reflect.TypeToken;
|
||||
import eu.mhsl.craftattack.spawn.core.api.client.HttpRepository;
|
||||
import eu.mhsl.craftattack.spawn.core.api.client.ReqResp;
|
||||
import eu.mhsl.craftattack.spawn.varo.api.VaroApi;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
public class TeamRepository extends HttpRepository {
|
||||
public TeamRepository() {
|
||||
super(VaroApi.getBaseUri(), new RequestModifier(null, VaroApi::authorizationHeader));
|
||||
}
|
||||
|
||||
public record Team(
|
||||
String name,
|
||||
String color,
|
||||
Object lastJoined,
|
||||
Object strikeWeight,
|
||||
List<User> users
|
||||
) {
|
||||
public record User(
|
||||
UUID uuid,
|
||||
boolean dead
|
||||
) {}
|
||||
}
|
||||
|
||||
public ReqResp<List<Team>> getTeams() {
|
||||
var resp = this.get("team", Object.class);
|
||||
System.out.println(resp.toString());
|
||||
return resp
|
||||
.convertToTypeToken(new TypeToken<List<Team>>() {}.getType())
|
||||
.cast();
|
||||
}
|
||||
}
|
@ -4,6 +4,7 @@ import eu.mhsl.craftattack.spawn.core.Main;
|
||||
import eu.mhsl.craftattack.spawn.core.appliance.Appliance;
|
||||
import eu.mhsl.craftattack.spawn.core.util.text.DisconnectInfo;
|
||||
import eu.mhsl.craftattack.spawn.common.appliances.metaGameplay.displayName.DisplayName;
|
||||
import eu.mhsl.craftattack.spawn.varo.api.repositories.TeamRepository;
|
||||
import eu.mhsl.craftattack.spawn.varo.appliances.metaGameplay.joinProtection.JoinProtection;
|
||||
import net.kyori.adventure.text.Component;
|
||||
import net.kyori.adventure.text.format.NamedTextColor;
|
||||
@ -18,19 +19,19 @@ import org.jetbrains.annotations.Nullable;
|
||||
import java.util.*;
|
||||
|
||||
public class Teams extends Appliance implements DisplayName.Prefixed, DisplayName.Colored {
|
||||
private Set<VaroTeam> teams = new HashSet<>() {{
|
||||
this.add(new VaroTeam(
|
||||
new HashSet<>() {{
|
||||
this.add(new VaroTeam.Member(UUID.fromString("3a0a699c-7f0c-319b-839c-ccc8cac8ae63"), false));
|
||||
this.add(new VaroTeam.Member(UUID.fromString("959ed433-14ea-38fe-918b-75b7d09466af"), true));
|
||||
}},
|
||||
"Die Admins",
|
||||
"#0E0E0E"
|
||||
));
|
||||
}};
|
||||
private List<VaroTeam> teams = List.of();
|
||||
|
||||
public Teams() {
|
||||
this.refreshTeamList();
|
||||
}
|
||||
|
||||
public void refreshTeamList() {
|
||||
|
||||
this.teams = this.queryRepository(TeamRepository.class).getTeams().data().stream()
|
||||
.map(team -> new VaroTeam(
|
||||
team.users().stream().map(user -> new VaroTeam.Member(user.uuid(), user.dead())).toList(),
|
||||
team.name(),
|
||||
team.color()
|
||||
)).toList();
|
||||
}
|
||||
|
||||
public boolean canLogin(UUID playerId) {
|
||||
@ -58,16 +59,14 @@ public class Teams extends Appliance implements DisplayName.Prefixed, DisplayNam
|
||||
VaroTeam team = this.getTeamFromPlayer(joinedPlayer.getUniqueId());
|
||||
Bukkit.getScheduler().scheduleSyncDelayedTask(
|
||||
Main.instance(),
|
||||
() -> {
|
||||
team.members.stream()
|
||||
.filter(member -> !member.isDead)
|
||||
.filter(member -> {
|
||||
Player p = Bukkit.getPlayer(member.player.getUniqueId());
|
||||
return p == null || !p.isOnline();
|
||||
})
|
||||
.findAny()
|
||||
.ifPresent(member -> team.kickTeam(disconnectInfo));
|
||||
},
|
||||
() -> team.members.stream()
|
||||
.filter(member -> !member.isDead)
|
||||
.filter(member -> {
|
||||
Player p = Bukkit.getPlayer(member.player.getUniqueId());
|
||||
return p == null || !p.isOnline();
|
||||
})
|
||||
.findAny()
|
||||
.ifPresent(member -> team.kickTeam(disconnectInfo)),
|
||||
Ticks.TICKS_PER_SECOND * (JoinProtection.resistanceDuration / 2)
|
||||
);
|
||||
}
|
||||
|
@ -5,8 +5,8 @@ import org.bukkit.Bukkit;
|
||||
import org.bukkit.OfflinePlayer;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
|
||||
class VaroTeam {
|
||||
@ -26,18 +26,18 @@ class VaroTeam {
|
||||
}
|
||||
|
||||
public boolean isFree(int countdownSeconds) {
|
||||
return this.timestampSince < System.currentTimeMillis() - (countdownSeconds * 1000);
|
||||
return this.timestampSince < System.currentTimeMillis() - (countdownSeconds * 1000L);
|
||||
}
|
||||
}
|
||||
|
||||
public final Set<Member> members;
|
||||
public final List<Member> members;
|
||||
public final UUID teamUuid;
|
||||
public final String name;
|
||||
public final String color;
|
||||
|
||||
public JoinCountdown joinCountdown;
|
||||
|
||||
public VaroTeam(Set<Member> members, String name, String color) {
|
||||
public VaroTeam(List<Member> members, String name, String color) {
|
||||
this.teamUuid = UUID.randomUUID();
|
||||
this.members = members;
|
||||
this.name = name;
|
||||
|
Reference in New Issue
Block a user