diff --git a/plugins/bastion-paper/src/main/java/isaac/bastion/listeners/ModeListener.java b/plugins/bastion-paper/src/main/java/isaac/bastion/listeners/ModeListener.java index 54601561f..8546975a8 100644 --- a/plugins/bastion-paper/src/main/java/isaac/bastion/listeners/ModeListener.java +++ b/plugins/bastion-paper/src/main/java/isaac/bastion/listeners/ModeListener.java @@ -6,10 +6,11 @@ import isaac.bastion.BastionType; import isaac.bastion.Permissions; import isaac.bastion.utils.BastionSettingManager; import java.util.ArrayList; -import java.util.Collections; import java.util.List; +import java.util.Map; import java.util.Set; -import java.util.TreeSet; +import java.util.SortedMap; +import java.util.TreeMap; import java.util.UUID; import org.bukkit.Bukkit; import org.bukkit.ChatColor; @@ -107,37 +108,41 @@ public class ModeListener implements Listener { } return; } - Set alliedBastions = new TreeSet<>(); - Set enemyBastions = new TreeSet<>(); + + SortedMap alliedBastions = new TreeMap<>(); + SortedMap enemyBastions = new TreeMap<>(); for (BastionBlock bastion : bastionBlocks) { if (NameLayerAPI.getGroupManager().hasAccess(bastion.getGroup(), player.getUniqueId(), placePerm)) { - alliedBastions.add(bastion.getType()); + alliedBastions.merge(bastion.getType(), bastion.isMature(), Boolean::logicalAnd); } else { - enemyBastions.add(bastion.getType()); + enemyBastions.merge(bastion.getType(), bastion.isMature(), Boolean::logicalAnd); } } if (!alliedBastions.isEmpty() && !enemyBastions.isEmpty()) { updateDisplaySetting(player, String.format("%s%sConflict Bastion %s[%s] %s[%s]", ChatColor.YELLOW, ChatColor.BOLD, - ChatColor.GREEN, buildBastionTypeList(alliedBastions), ChatColor.RED, - buildBastionTypeList(enemyBastions))); + ChatColor.GREEN, buildBastionTypeList(alliedBastions, ChatColor.GREEN), + ChatColor.RED, buildBastionTypeList(enemyBastions, ChatColor.RED))); return; } if (!alliedBastions.isEmpty()) { updateDisplaySetting(player, - String.format("%sAlly Bastion [%s]", ChatColor.GREEN, buildBastionTypeList(alliedBastions))); + String.format("%sAlly Bastion [%s]", ChatColor.GREEN, buildBastionTypeList(alliedBastions, ChatColor.GREEN))); return; } updateDisplaySetting(player, String.format("%s%sHostile Bastion [%s]", ChatColor.RED, ChatColor.BOLD, - buildBastionTypeList(enemyBastions))); + buildBastionTypeList(enemyBastions, ChatColor.RED))); } - private String buildBastionTypeList(Set types) { + private String buildBastionTypeList(SortedMap types, ChatColor baseColor) { List identifiers = new ArrayList<>(); - for (BastionType type : types) { - identifiers.add(type.getOverlayName()); + for (Map.Entry entry : types.entrySet()) { + String name = entry.getKey().getOverlayName(); + if (!entry.getValue()) { + name = ChatColor.ITALIC + name + baseColor; + } + identifiers.add(name); } - Collections.sort(identifiers); return String.join(",", identifiers); }