fixed bugs in strike handling

This commit is contained in:
2025-06-22 10:59:38 +02:00
parent 76297bb3af
commit 0ce69f207f

View File

@ -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.core.util.IteratorUtil;
import eu.mhsl.craftattack.spawn.varo.appliances.metaGameplay.teams.Teams; import eu.mhsl.craftattack.spawn.varo.appliances.metaGameplay.teams.Teams;
import eu.mhsl.craftattack.spawn.varo.appliances.metaGameplay.teams.VaroTeam; 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.Component;
import net.kyori.adventure.text.ComponentBuilder; import net.kyori.adventure.text.ComponentBuilder;
import net.kyori.adventure.text.TextComponent; import net.kyori.adventure.text.TextComponent;
@ -18,10 +19,7 @@ import org.bukkit.entity.Player;
import org.bukkit.event.Listener; import org.bukkit.event.Listener;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import java.util.List; import java.util.*;
import java.util.Objects;
import java.util.Optional;
import java.util.UUID;
import java.util.stream.Collectors; import java.util.stream.Collectors;
public class Strike extends Appliance { public class Strike extends Appliance {
@ -37,16 +35,22 @@ public class Strike extends Appliance {
public void leakCoordinates() { public void leakCoordinates() {
} }
record StrikeInfo(List<UUID> users, int totalWeight) {
}
@Override @Override
public void httpApi(HttpServer.ApiBuilder apiBuilder) { public void httpApi(HttpServer.ApiBuilder apiBuilder) {
record StrikeInfo(List<UUID> users, int totalWeight) {
}
apiBuilder.post("update", StrikeInfo.class, (data, request) -> { apiBuilder.post("update", StrikeInfo.class, (data, request) -> {
Main.instance().getLogger().info(String.format( Main.instance().getLogger().info(String.format(
"API Triggered Strike-Profile update for %s", "API Triggered Strike-Profile update for %s",
data.users.stream().map(UUID::toString).collect(Collectors.joining(", "))) data.users.stream().map(UUID::toString).collect(Collectors.joining(", ")))
); );
this.processUpdate(data);
return HttpServer.nothing;
});
}
private void processUpdate(StrikeInfo data) {
try {
VaroTeam select = null; VaroTeam select = null;
for(UUID uuid : data.users) { for(UUID uuid : data.users) {
select = this.queryAppliance(Teams.class).getTeamFromPlayer(uuid); select = this.queryAppliance(Teams.class).getTeamFromPlayer(uuid);
@ -56,6 +60,11 @@ public class Strike extends Appliance {
VaroTeam team = select; VaroTeam team = select;
switch(data.totalWeight) { 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 -> { case 1 -> {
Main.logger().info(String.format("Cord leak for Team %s", team.name)); Main.logger().info(String.format("Cord leak for Team %s", team.name));
ComponentBuilder<TextComponent, TextComponent.Builder> text = Component.text() ComponentBuilder<TextComponent, TextComponent.Builder> text = Component.text()
@ -96,11 +105,20 @@ public class Strike extends Appliance {
() -> InvClear.add(member.player.getUniqueId()) () -> 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) { public void checkJoin(@NotNull Player player) {