refactor: use Component.equals on bossbar title checking and new placeholder title

This commit is contained in:
ChomeNS
2024-12-28 13:38:57 +07:00
parent 90aef4e594
commit 9c75b6309f
3 changed files with 18 additions and 20 deletions

View File

@@ -1,18 +1,22 @@
package me.chayapak1.chomens_bot.data;
import me.chayapak1.chomens_bot.Bot;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.format.NamedTextColor;
import net.kyori.adventure.text.serializer.gson.GsonComponentSerializer;
import org.geysermc.mcprotocollib.protocol.data.game.BossBarColor;
import org.geysermc.mcprotocollib.protocol.data.game.BossBarDivision;
import me.chayapak1.chomens_bot.Bot;
import me.chayapak1.chomens_bot.util.ComponentUtilities;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.serializer.gson.GsonComponentSerializer;
import java.util.UUID;
public class BotBossBar extends BossBar {
public UUID uuid = UUID.randomUUID(); // the random uuid will be temporary
public final Component secret = Component.text(Math.random() * 69420);
public final Component secret = Component
.text(UUID.randomUUID().toString())
.color(NamedTextColor.BLACK)
.append(Component.space())
.append(Component.text("(please ignore!)").color(NamedTextColor.GRAY));
public boolean gotSecret = false;
@@ -54,7 +58,7 @@ public class BotBossBar extends BossBar {
public void setTitle(Component title, boolean force) {
if (!gotSecret) return;
if (ComponentUtilities.isEqual(this.title, title) && !force) return;
if (this.title.equals(title) && !force) return;
if (bot.bossbar.actionBar) {
bot.chat.actionBar(title, players);

View File

@@ -1,17 +1,16 @@
package me.chayapak1.chomens_bot.plugins;
import me.chayapak1.chomens_bot.Bot;
import me.chayapak1.chomens_bot.data.BossBar;
import me.chayapak1.chomens_bot.data.BotBossBar;
import me.chayapak1.chomens_bot.data.PlayerEntry;
import net.kyori.adventure.text.serializer.gson.GsonComponentSerializer;
import org.geysermc.mcprotocollib.network.Session;
import org.geysermc.mcprotocollib.network.event.session.ConnectedEvent;
import org.geysermc.mcprotocollib.network.event.session.DisconnectedEvent;
import org.geysermc.mcprotocollib.network.packet.Packet;
import org.geysermc.mcprotocollib.protocol.data.game.BossBarColor;
import org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound.ClientboundBossEventPacket;
import me.chayapak1.chomens_bot.Bot;
import me.chayapak1.chomens_bot.data.BossBar;
import me.chayapak1.chomens_bot.data.BotBossBar;
import me.chayapak1.chomens_bot.data.PlayerEntry;
import me.chayapak1.chomens_bot.util.ComponentUtilities;
import net.kyori.adventure.text.serializer.gson.GsonComponentSerializer;
import java.util.HashMap;
import java.util.Map;
@@ -62,7 +61,7 @@ public class BossbarManagerPlugin extends Bot.Listener {
for (Map.Entry<UUID, BotBossBar> _bossBar : mapCopy.entrySet()) {
final BotBossBar bossBar = _bossBar.getValue();
if (ComponentUtilities.isEqual(bossBar.secret, packet.getTitle())) {
if (bossBar.secret.equals(packet.getTitle())) {
bossBars.remove(_bossBar.getKey());
final BotBossBar newBossBar = new BotBossBar(
@@ -114,7 +113,7 @@ public class BossbarManagerPlugin extends Bot.Listener {
final BotBossBar botBossBar = get(bossBar.uuid);
if (botBossBar != null && ComponentUtilities.isEqual(botBossBar.secret, packet.getTitle())) {
if (botBossBar != null && botBossBar.secret.equals(packet.getTitle())) {
botBossBar.uuid = packet.getUuid();
botBossBar.gotSecret = true;
@@ -144,7 +143,7 @@ public class BossbarManagerPlugin extends Bot.Listener {
bossBar.gotSecret = false;
addBossBar(bossBar.id, bossBar, true);
} else if (!ComponentUtilities.isEqual(bossBar.title(), serverBossBar.title)) {
} else if (!bossBar.title().equals(serverBossBar.title)) {
bossBar.setTitle(bossBar.title, true);
} else if (bossBar.value() != serverBossBar.health * bossBar.max()) {
bossBar.setValue(bossBar.value(), true);

View File

@@ -19,11 +19,6 @@ import java.util.regex.Pattern;
// totallynotskidded™ from chipmunkbot and added colors (ignore the ohio code please,..,.)
public class ComponentUtilities {
// is this the best way to check?
public static boolean isEqual (Component component1, Component component2) {
return component1.toString().equals(component2.toString());
}
// component parsing
public static final Map<String, String> language = loadJsonStringMap("language.json");
private static final Map<String, String> voiceChatLanguage = loadJsonStringMap("voiceChatLanguage.json");