Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
import org.afterlike.openutils.event.impl.GameTickEvent;
import org.afterlike.openutils.event.impl.ReceiveChatEvent;
import org.afterlike.openutils.event.impl.RenderOverlayEvent;
import org.afterlike.openutils.event.impl.WorldLoadEvent;
import org.afterlike.openutils.module.api.Module;
import org.afterlike.openutils.module.api.ModuleCategory;
import org.afterlike.openutils.module.api.hud.HudModule;
Expand All @@ -18,24 +19,27 @@
import org.afterlike.openutils.module.api.setting.impl.DescriptionSetting;
import org.afterlike.openutils.util.client.ClientUtil;
import org.afterlike.openutils.util.client.TextUtil;
import org.afterlike.openutils.util.game.BedWarsUtil;
import org.afterlike.openutils.util.game.GameModeUtil;

public class FinalKillsHudModule extends Module implements HudModule {
private final Position position = new Position(5, 50);
private final BooleanSetting editPosition;
private final BooleanSetting dropShadow;
private final BooleanSetting showVoidKills;
private final BooleanSetting teammatesOnly;
private final Map<String, Integer> finalKills = new HashMap<>();
private static final String VOID_KEY = "§8Void";
// TODO: implement teammates only filter
private static final Pattern NAME_CHUNK_PATTERN = Pattern
.compile("§([0-9a-fk-or])([A-Za-z0-9_]+)");
private BedWarsUtil.TeamColor playerTeamColor = null;
public FinalKillsHudModule() {
super("Final Kills HUD", ModuleCategory.BEDWARS);
this.registerSetting(new DescriptionSetting("Hypixel language must be ENGLISH!"));
editPosition = this.registerSetting(new BooleanSetting("Edit position", false));
dropShadow = this.registerSetting(new BooleanSetting("Drop shadow", true));
showVoidKills = this.registerSetting(new BooleanSetting("Show void kills", true));
teammatesOnly = this.registerSetting(new BooleanSetting("Teammates only", false));
}

@EventHandler
Expand Down Expand Up @@ -67,6 +71,15 @@ private void onChatReceived(final ReceiveChatEvent event) {
}
return;
}
if (teammatesOnly.getValue()) {
final BedWarsUtil.TeamColor killerTeamColor = BedWarsUtil.TeamColor
.fromColorCode(lastColorCode);
if (killerTeamColor != playerTeamColor) {
ClientUtil.sendDebugMessage(
"skipped non-teammate kill: " + lastColorCode + lastPlayerName);
return;
}
}
final String displayName = lastColorCode + lastPlayerName;
finalKills.put(displayName, finalKills.getOrDefault(displayName, 0) + 1);
ClientUtil.sendDebugMessage(
Expand Down Expand Up @@ -103,11 +116,23 @@ private void onTick(final GameTickEvent event) {
return;
if (GameModeUtil.getBedWarsStatus() != 3) {
resetTracking();
} else if (ClientUtil.notNull() && playerTeamColor == null) {
playerTeamColor = BedWarsUtil.getTeamColor(mc.thePlayer);
if (playerTeamColor != null) {
ClientUtil.sendDebugMessage(
"detected team color: " + playerTeamColor.getDisplayName());
}
}
}

@EventHandler
private void onWorldLoad(final WorldLoadEvent event) {
resetTracking();
}

private void resetTracking() {
finalKills.clear();
playerTeamColor = null;
}

@Override
Expand Down
12 changes: 12 additions & 0 deletions src/main/java/org/afterlike/openutils/util/game/BedWarsUtil.java
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,18 @@ public static TeamColor fromFormattedName(final String formattedName) {
}
return null;
}

public static TeamColor fromColorCode(final String colorCode) {
if (colorCode == null) {
return null;
}
for (TeamColor color : values()) {
if (colorCode.equals(color.colorCode)) {
return color;
}
}
return null;
}
}
public static String getFormattedTeamName(final EntityPlayer player) {
TeamColor color = getTeamColor(player);
Expand Down