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.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) {
|
||||||
|
Reference in New Issue
Block a user