fixed bugs in strike handling
This commit is contained in:
@ -6,6 +6,7 @@ import eu.mhsl.craftattack.spawn.core.appliance.Appliance;
|
||||
import eu.mhsl.craftattack.spawn.core.util.IteratorUtil;
|
||||
import eu.mhsl.craftattack.spawn.varo.appliances.metaGameplay.teams.Teams;
|
||||
import eu.mhsl.craftattack.spawn.varo.appliances.metaGameplay.teams.VaroTeam;
|
||||
import io.papermc.paper.ban.BanListType;
|
||||
import net.kyori.adventure.text.Component;
|
||||
import net.kyori.adventure.text.ComponentBuilder;
|
||||
import net.kyori.adventure.text.TextComponent;
|
||||
@ -18,10 +19,7 @@ import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.Optional;
|
||||
import java.util.UUID;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class Strike extends Appliance {
|
||||
@ -37,16 +35,22 @@ public class Strike extends Appliance {
|
||||
public void leakCoordinates() {
|
||||
}
|
||||
|
||||
record StrikeInfo(List<UUID> users, int totalWeight) {
|
||||
}
|
||||
@Override
|
||||
public void httpApi(HttpServer.ApiBuilder apiBuilder) {
|
||||
record StrikeInfo(List<UUID> users, int totalWeight) {
|
||||
}
|
||||
apiBuilder.post("update", StrikeInfo.class, (data, request) -> {
|
||||
Main.instance().getLogger().info(String.format(
|
||||
"API Triggered Strike-Profile update for %s",
|
||||
data.users.stream().map(UUID::toString).collect(Collectors.joining(", ")))
|
||||
);
|
||||
this.processUpdate(data);
|
||||
return HttpServer.nothing;
|
||||
});
|
||||
}
|
||||
|
||||
private void processUpdate(StrikeInfo data) {
|
||||
try {
|
||||
VaroTeam select = null;
|
||||
for(UUID uuid : data.users) {
|
||||
select = this.queryAppliance(Teams.class).getTeamFromPlayer(uuid);
|
||||
@ -56,6 +60,11 @@ public class Strike extends Appliance {
|
||||
VaroTeam team = select;
|
||||
|
||||
switch(data.totalWeight) {
|
||||
case 0 -> team.members.forEach(member -> {
|
||||
Main.logger().info(String.format("Unbanning player %s because there are now 0 Strikes!", member.player.getName()));
|
||||
Bukkit.getBanList(BanListType.PROFILE).pardon(member.player.getPlayerProfile());
|
||||
});
|
||||
|
||||
case 1 -> {
|
||||
Main.logger().info(String.format("Cord leak for Team %s", team.name));
|
||||
ComponentBuilder<TextComponent, TextComponent.Builder> text = Component.text()
|
||||
@ -96,11 +105,20 @@ public class Strike extends Appliance {
|
||||
() -> InvClear.add(member.player.getUniqueId())
|
||||
);
|
||||
});
|
||||
case 3 -> team.members.forEach(member -> member.player.banPlayer("projektausschluss"));
|
||||
}
|
||||
|
||||
return HttpServer.nothing;
|
||||
});
|
||||
case 3 -> {
|
||||
team.members.forEach(member -> {
|
||||
Main.logger().info(String.format("Banning player %s because of third Strike!", member.player.getName()));
|
||||
Bukkit.getBanList(BanListType.PROFILE)
|
||||
.addBan(member.player.getPlayerProfile(), "projektausschluiss", (Date) null, null);
|
||||
});
|
||||
team.getOnlinePlayers().forEach(Player::kick);
|
||||
}
|
||||
}
|
||||
} catch(Exception e) {
|
||||
Main.logger().warning("Failed to process Strikes: " + e.getMessage());
|
||||
Main.logger().throwing("Strike", "process", e);
|
||||
}
|
||||
}
|
||||
|
||||
public void checkJoin(@NotNull Player player) {
|
||||
|
Reference in New Issue
Block a user