From 696c4bc260e6a9ca65ef18d91970919a00c4c042 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Elias=20M=C3=BCller?= Date: Mon, 9 Dec 2024 22:04:30 +0100 Subject: [PATCH] added bedrock displayname prefix --- .../spawn/appliances/afkTag/AfkTag.java | 2 +- .../appliances/displayName/DisplayName.java | 24 +++++++++++++++---- .../spawn/appliances/outlawed/Outlawed.java | 2 +- .../spawn/appliances/sleepTag/SleepTag.java | 2 +- .../spawn/appliances/yearRank/YearRank.java | 2 +- .../spawn/util/text/ComponentUtil.java | 4 ++++ 6 files changed, 27 insertions(+), 9 deletions(-) diff --git a/src/main/java/eu/mhsl/craftattack/spawn/appliances/afkTag/AfkTag.java b/src/main/java/eu/mhsl/craftattack/spawn/appliances/afkTag/AfkTag.java index e9b9668..d2246a3 100644 --- a/src/main/java/eu/mhsl/craftattack/spawn/appliances/afkTag/AfkTag.java +++ b/src/main/java/eu/mhsl/craftattack/spawn/appliances/afkTag/AfkTag.java @@ -15,7 +15,7 @@ import org.jetbrains.annotations.Nullable; import java.util.*; -public class AfkTag extends Appliance implements DisplayName.DisplayNamed { +public class AfkTag extends Appliance implements DisplayName.Prefixed { private final HashMap afkTimings = new HashMap<>(); private static final int updateIntervalSeconds = 30; private static final int afkWhenMillis = 3 * 60 * 1000; diff --git a/src/main/java/eu/mhsl/craftattack/spawn/appliances/displayName/DisplayName.java b/src/main/java/eu/mhsl/craftattack/spawn/appliances/displayName/DisplayName.java index 8d19a54..765e2b7 100644 --- a/src/main/java/eu/mhsl/craftattack/spawn/appliances/displayName/DisplayName.java +++ b/src/main/java/eu/mhsl/craftattack/spawn/appliances/displayName/DisplayName.java @@ -8,9 +8,13 @@ import eu.mhsl.craftattack.spawn.appliances.afkTag.AfkTag; import eu.mhsl.craftattack.spawn.appliances.outlawed.Outlawed; import eu.mhsl.craftattack.spawn.appliances.sleepTag.SleepTag; import eu.mhsl.craftattack.spawn.appliances.yearRank.YearRank; +import eu.mhsl.craftattack.spawn.util.server.Floodgate; +import eu.mhsl.craftattack.spawn.util.text.ComponentUtil; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.ComponentBuilder; import net.kyori.adventure.text.TextComponent; +import net.kyori.adventure.text.event.HoverEvent; +import net.kyori.adventure.text.format.NamedTextColor; import net.kyori.adventure.text.format.TextColor; import org.bukkit.entity.Player; import org.bukkit.event.Listener; @@ -22,7 +26,7 @@ import java.util.function.Supplier; import java.util.logging.Level; public class DisplayName extends Appliance { - public interface DisplayNamed { + public interface Prefixed { @Nullable Component getNamePrefix(Player player); } @@ -39,10 +43,22 @@ public class DisplayName extends Appliance { prefixes.forEach(supplier -> { Component prefix = supplier.get(); if(prefix == null) return; - playerName.append(prefix).append( - Component.text(" ").hoverEvent(Component.empty().asHoverEvent())); + playerName + .append(prefix) + .append(ComponentUtil.clearedSpace()); }); + if(Floodgate.isBedrock(player)) { + playerName + .append( + Component.text("\uD83C\uDFAE", NamedTextColor.GRAY) + .hoverEvent(HoverEvent.showText(Component.text( + String.format("%s spielt die Minecraft: Bedrock Edition", player.getName()) + ))) + ) + .append(ComponentUtil.clearedSpace()); + } + playerName.append(Component.text(player.getName(), playerColor)); setGlobal(player, playerName.build()); @@ -54,12 +70,10 @@ public class DisplayName extends Appliance { player.displayName(component); player.playerListName(component); } catch(Exception e) { - //TODO this throws often exceptions, but still works, don't know why Main.instance().getLogger().log(Level.SEVERE, e, e::getMessage); } } - @Override @NotNull protected List listeners() { diff --git a/src/main/java/eu/mhsl/craftattack/spawn/appliances/outlawed/Outlawed.java b/src/main/java/eu/mhsl/craftattack/spawn/appliances/outlawed/Outlawed.java index 3fb23fb..c8e5d6a 100644 --- a/src/main/java/eu/mhsl/craftattack/spawn/appliances/outlawed/Outlawed.java +++ b/src/main/java/eu/mhsl/craftattack/spawn/appliances/outlawed/Outlawed.java @@ -17,7 +17,7 @@ import org.jetbrains.annotations.NotNull; import java.util.*; -public class Outlawed extends Appliance implements DisplayName.DisplayNamed { +public class Outlawed extends Appliance implements DisplayName.Prefixed { public final int timeoutInMs = 1000 * 60 * 60 * 6; private final Map timeouts = new HashMap<>(); diff --git a/src/main/java/eu/mhsl/craftattack/spawn/appliances/sleepTag/SleepTag.java b/src/main/java/eu/mhsl/craftattack/spawn/appliances/sleepTag/SleepTag.java index 1d92aff..d38655c 100644 --- a/src/main/java/eu/mhsl/craftattack/spawn/appliances/sleepTag/SleepTag.java +++ b/src/main/java/eu/mhsl/craftattack/spawn/appliances/sleepTag/SleepTag.java @@ -17,7 +17,7 @@ import java.util.HashSet; import java.util.List; import java.util.Set; -public class SleepTag extends Appliance implements DisplayName.DisplayNamed { +public class SleepTag extends Appliance implements DisplayName.Prefixed { private final Set sleepingPlayers = new HashSet<>(); @Override diff --git a/src/main/java/eu/mhsl/craftattack/spawn/appliances/yearRank/YearRank.java b/src/main/java/eu/mhsl/craftattack/spawn/appliances/yearRank/YearRank.java index 0b97f9b..f66b349 100644 --- a/src/main/java/eu/mhsl/craftattack/spawn/appliances/yearRank/YearRank.java +++ b/src/main/java/eu/mhsl/craftattack/spawn/appliances/yearRank/YearRank.java @@ -16,7 +16,7 @@ import org.jetbrains.annotations.Nullable; import java.io.File; import java.util.*; -public class YearRank extends Appliance implements DisplayName.DisplayNamed { +public class YearRank extends Appliance implements DisplayName.Prefixed { record CraftAttackYear(String name) {} private final Map> rankMap = new HashMap<>(); diff --git a/src/main/java/eu/mhsl/craftattack/spawn/util/text/ComponentUtil.java b/src/main/java/eu/mhsl/craftattack/spawn/util/text/ComponentUtil.java index 19adb0d..c2bb5e6 100644 --- a/src/main/java/eu/mhsl/craftattack/spawn/util/text/ComponentUtil.java +++ b/src/main/java/eu/mhsl/craftattack/spawn/util/text/ComponentUtil.java @@ -22,6 +22,10 @@ public class ComponentUtil { return Component.text("Bitte warte einen Augenblick...", NamedTextColor.GRAY); } + public static Component clearedSpace() { + return Component.text(" ").hoverEvent(Component.empty().asHoverEvent()); + } + public static TextComponent appendWithNewline(Component a, Component b) { return Component.text().append(a.appendNewline().append(b)).build(); }