diff --git a/api/src/main/java/com/rappytv/globaltags/api/ApiHandler.java b/api/src/main/java/com/rappytv/globaltags/api/ApiHandler.java index 5d1369e6..7de1fc81 100644 --- a/api/src/main/java/com/rappytv/globaltags/api/ApiHandler.java +++ b/api/src/main/java/com/rappytv/globaltags/api/ApiHandler.java @@ -1,5 +1,6 @@ package com.rappytv.globaltags.api; +import com.rappytv.globaltags.types.GlobalFont; import com.rappytv.globaltags.types.GlobalIcon; import com.rappytv.globaltags.types.PlayerInfo; import com.rappytv.globaltags.types.PlayerInfo.Suspension; @@ -59,6 +60,7 @@ public Map getBody() { consumer.accept(new PlayerInfo( uuid, request.responseBody.tag, + request.responseBody.font, request.responseBody.position, request.responseBody.icon, request.responseBody.admin, @@ -92,6 +94,31 @@ public Map getBody() { })); } + public static void setFont(GlobalFont font, Consumer consumer) { + setFont(Laby.labyAPI().getUniqueId(), font, consumer); + } + + public static void setFont(UUID uuid, GlobalFont font, Consumer consumer) { + ApiRequest request = new ApiRequest( + Method.POST, + "/players/" + uuid + "/font", + Util.getSessionToken() + ) { + @Override + public Map getBody() { + return Map.of("font", font.name()); + } + }; + request.sendAsyncRequest((response) -> { + if(!request.isSuccessful()) { + consumer.accept(new ApiResponse(false, request.getError())); + return; + } + TagCache.clear(); + TagCache.resolveSelf((info) -> consumer.accept(new ApiResponse(true, request.getMessage()))); + }); + } + public static void setPosition(PositionType position, Consumer consumer) { setPosition(Laby.labyAPI().getUniqueId(), position, consumer); } diff --git a/api/src/main/java/com/rappytv/globaltags/api/ResponseBody.java b/api/src/main/java/com/rappytv/globaltags/api/ResponseBody.java index 3313cfc9..f5ba23dd 100644 --- a/api/src/main/java/com/rappytv/globaltags/api/ResponseBody.java +++ b/api/src/main/java/com/rappytv/globaltags/api/ResponseBody.java @@ -4,6 +4,7 @@ public class ResponseBody { // For success public String tag; + public String font; public String position; public String icon; public boolean admin; diff --git a/api/src/main/java/com/rappytv/globaltags/types/GlobalFont.java b/api/src/main/java/com/rappytv/globaltags/types/GlobalFont.java new file mode 100644 index 00000000..7526dd8a --- /dev/null +++ b/api/src/main/java/com/rappytv/globaltags/types/GlobalFont.java @@ -0,0 +1,56 @@ +package com.rappytv.globaltags.types; + +import net.labymod.api.Laby; +import net.labymod.api.client.resources.ResourceLocation; +import org.jetbrains.annotations.Nullable; +import java.util.HashMap; +import java.util.Map; + +public enum GlobalFont { + DEFAULT(0, 0), + UNICODE(-1, -10), + ALAGARD(1, 3), + DARK_SOULS(1, 22), + GLACIAL_INDIFFERENCE(3, 18), + SUPER_RPG(2, 10); + + private static final Map locations = new HashMap<>(); + + private final double vanillaMargin; + private final double fancyMargin; + + GlobalFont(double vanillaMargin, double fancyMargin) { + this.vanillaMargin = vanillaMargin; + this.fancyMargin = fancyMargin; + } + + public double getStaffMargin() { + return switch (Laby.labyAPI().themeService().currentTheme().getId()) { + case "vanilla" -> vanillaMargin; + case "fancy" -> fancyMargin; + default -> 0; + }; + } + + @Nullable + public ResourceLocation getCachedLocation() { + if(locations.containsKey(this)) return locations.get(this); + locations.put(this, getResourceLocation()); + return getCachedLocation(); + } + + @Nullable + private ResourceLocation getResourceLocation() { + return switch (this) { + case DEFAULT -> null; + case UNICODE -> ResourceLocation.create( + "minecraft", + "uniform" + ); + default -> ResourceLocation.create( + "globaltags", + this.name().toLowerCase() + ); + }; + } +} diff --git a/api/src/main/java/com/rappytv/globaltags/types/PlayerInfo.java b/api/src/main/java/com/rappytv/globaltags/types/PlayerInfo.java index 53fb3485..4c6b90fe 100644 --- a/api/src/main/java/com/rappytv/globaltags/types/PlayerInfo.java +++ b/api/src/main/java/com/rappytv/globaltags/types/PlayerInfo.java @@ -15,14 +15,16 @@ public class PlayerInfo { private final UUID uuid; private final Component tag; private final String plainTag; + private final String font; private final String position; private final String icon; private final boolean admin; private final Suspension suspension; - public PlayerInfo(UUID uuid, String tag, String position, String icon, boolean admin, Ban ban) { + public PlayerInfo(UUID uuid, String tag, String font, String position, String icon, boolean admin, Ban ban) { this.uuid = uuid; - this.tag = Util.translateColorCodes(tag); + this.font = font; + this.tag = Util.formatTag(tag, getFont()); this.plainTag = tag != null ? tag : ""; this.position = position; this.icon = icon; @@ -54,6 +56,18 @@ public String getPlainTag() { return plainTag; } + /** + * Returns the {@link GlobalFont} enum value which the player has selected + */ + @NotNull + public GlobalFont getFont() { + try { + return GlobalFont.valueOf(font); + } catch (Exception ignored) { + return GlobalFont.DEFAULT; + } + } + /** * Returns the player's GlobalTag position */ diff --git a/api/src/main/java/com/rappytv/globaltags/util/Util.java b/api/src/main/java/com/rappytv/globaltags/util/Util.java index aeb65989..3029617e 100644 --- a/api/src/main/java/com/rappytv/globaltags/util/Util.java +++ b/api/src/main/java/com/rappytv/globaltags/util/Util.java @@ -1,5 +1,6 @@ package com.rappytv.globaltags.util; +import com.rappytv.globaltags.types.GlobalFont; import net.labymod.api.Laby; import net.labymod.api.client.component.Component; import net.labymod.api.client.component.format.NamedTextColor; @@ -20,6 +21,7 @@ public class Util { NamedTextColor.DARK_GRAY ); private static Component tagResponse = null; + private static Component fontResponse = null; private static Component positionResponse = null; private static Component iconResponse = null; @@ -41,16 +43,22 @@ public static void notify(Component title, Component description) { public static void update(ResultType type, Component component) { switch (type) { case TAG -> tagResponse = component; + case FONT -> fontResponse = component; case POSITION -> positionResponse = component; case ICON -> iconResponse = component; } - if(tagResponse == null || positionResponse == null || iconResponse == null) return; + if(tagResponse == null + || fontResponse == null + || positionResponse == null + || iconResponse == null + ) return; SimpleAdvancedPopup popup = SimpleAdvancedPopup .builder() .title(Component.text("Update result", NamedTextColor.AQUA)) .description(Component.translatable( "globaltags.settings.tags.updateSettings.result", tagResponse, + fontResponse, positionResponse, iconResponse )) @@ -61,6 +69,7 @@ public static void update(ResultType type, Component component) { TagCache.clear(); TagCache.resolveSelf(); tagResponse = null; + fontResponse = null; positionResponse = null; iconResponse = null; }); @@ -68,16 +77,20 @@ public static void update(ResultType type, Component component) { public enum ResultType { TAG, + FONT, POSITION, ICON } @NotNull - public static Component translateColorCodes(String string) { - if(string == null) string = ""; - return LegacyComponentSerializer + public static Component formatTag(String tag, GlobalFont font) { + if(tag == null) tag = ""; + Component component = LegacyComponentSerializer .legacyAmpersand() - .deserialize(string); + .deserialize(tag); + if(font.getCachedLocation() != null) + component.style(component.style().font(font.getCachedLocation())); + return component; } public static @Nullable String getSessionToken() { diff --git a/build.gradle.kts b/build.gradle.kts index 5b0a50e6..b443727a 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -15,7 +15,7 @@ labyMod { author = "RappyTV" description = "Get yourself a custom Globaltag that's publicly visible to anyone using this addon." minecraftVersion = "*" - version = System.getenv().getOrDefault("VERSION", "1.2.0") + version = System.getenv().getOrDefault("VERSION", "1.2.1") } minecraft { diff --git a/core/src/main/java/com/rappytv/globaltags/GlobalTagAddon.java b/core/src/main/java/com/rappytv/globaltags/GlobalTagAddon.java index 41d978e4..2991fc34 100644 --- a/core/src/main/java/com/rappytv/globaltags/GlobalTagAddon.java +++ b/core/src/main/java/com/rappytv/globaltags/GlobalTagAddon.java @@ -37,7 +37,8 @@ protected void preConfigurationLoad() { Laby.references().revisionRegistry().register(new SimpleRevision("globaltags", new SemanticVersion("1.1.0"), "2023-11-24")); Laby.references().revisionRegistry().register(new SimpleRevision("globaltags", new SemanticVersion("1.1.7"), "2024-02-27")); Laby.references().revisionRegistry().register(new SimpleRevision("globaltags", new SemanticVersion("1.1.9"), "2024-06-01")); - Laby.references().revisionRegistry().register(new SimpleRevision("globaltags", new SemanticVersion("1.2.0"), "2024-07-06")); + Laby.references().revisionRegistry().register(new SimpleRevision("globaltags", new SemanticVersion("1.2.0"), "2024-07-10")); + Laby.references().revisionRegistry().register(new SimpleRevision("globaltags", new SemanticVersion("1.2.1"), "2024-07-10")); } @Override diff --git a/core/src/main/java/com/rappytv/globaltags/config/GlobalTagConfig.java b/core/src/main/java/com/rappytv/globaltags/config/GlobalTagConfig.java index fd4b51ed..7de2bbba 100644 --- a/core/src/main/java/com/rappytv/globaltags/config/GlobalTagConfig.java +++ b/core/src/main/java/com/rappytv/globaltags/config/GlobalTagConfig.java @@ -36,6 +36,7 @@ public GlobalTagConfig() { @SpriteSlot(size = 32, y = 2, x = 2) @SwitchSetting private final ConfigProperty localizedResponses = new ConfigProperty<>(true); + @IntroducedIn(namespace = "globaltags", value = "1.2.0") @MethodOrder(after = "localizedResponses") @SpriteSlot(size = 32, y = 2, x = 3) @ButtonSetting diff --git a/core/src/main/java/com/rappytv/globaltags/config/subconfig/TagSubConfig.java b/core/src/main/java/com/rappytv/globaltags/config/subconfig/TagSubConfig.java index 3f40f6ce..230239df 100644 --- a/core/src/main/java/com/rappytv/globaltags/config/subconfig/TagSubConfig.java +++ b/core/src/main/java/com/rappytv/globaltags/config/subconfig/TagSubConfig.java @@ -3,6 +3,7 @@ import com.rappytv.globaltags.api.ApiHandler; import com.rappytv.globaltags.config.widget.TagPreviewWidget; import com.rappytv.globaltags.config.widget.TagPreviewWidget.TagPreviewSetting; +import com.rappytv.globaltags.types.GlobalFont; import com.rappytv.globaltags.types.GlobalIcon; import com.rappytv.globaltags.util.TagCache; import com.rappytv.globaltags.util.Util; @@ -30,8 +31,9 @@ public TagSubConfig() { TagPreviewWidget::change ); tag.addChangeListener(runnable); + font.addChangeListener(runnable); position.addChangeListener(runnable); - globalIcon.addChangeListener(runnable); + icon.addChangeListener(runnable); } @SpriteSlot(size = 32, x = 1) @@ -43,15 +45,20 @@ public TagSubConfig() { @SpriteSlot(size = 32, y = 1) private final ConfigProperty tag = new ConfigProperty<>(""); + @IntroducedIn(namespace = "globaltags", value = "1.2.1") + @SpriteSlot(size = 32, y = 3) + @DropdownSetting + private final ConfigProperty font = new ConfigProperty<>(GlobalFont.DEFAULT); + @DropdownSetting @SpriteSlot(size = 32, x = 3) private final ConfigProperty position = new ConfigProperty<>(PositionType.ABOVE_NAME); @DropdownSetting @SpriteSlot(size = 32, y = 1, x = 2) - private final ConfigProperty globalIcon = new ConfigProperty<>(GlobalIcon.NONE); + private final ConfigProperty icon = new ConfigProperty<>(GlobalIcon.NONE); - @MethodOrder(after = "globalIcon") + @MethodOrder(after = "icon") @ButtonSetting @SpriteSlot(size = 32, y = 1, x = 1) @SuppressWarnings("ConstantConditions") @@ -74,12 +81,17 @@ else if(info == null) else Util.update(ResultType.TAG, response.getMessage()); }); else Util.update(ResultType.TAG, Util.unchanged); + if(!info.getFont().equals(font.get())) ApiHandler.setFont(font.get(), (response) -> { + if(response.isSuccessful()) Util.update(ResultType.FONT, Component.text("✔", NamedTextColor.GREEN)); + else Util.update(ResultType.FONT, response.getMessage()); + }); + else Util.update(ResultType.FONT, Util.unchanged); if(!info.getPosition().equals(position.get())) ApiHandler.setPosition(position.get(), (response) -> { if(response.isSuccessful()) Util.update(ResultType.POSITION, Component.text("✔", NamedTextColor.GREEN)); else Util.update(ResultType.POSITION, response.getMessage()); }); else Util.update(ResultType.POSITION, Util.unchanged); - if(!info.getGlobalIcon().equals(globalIcon.get())) ApiHandler.setIcon(globalIcon.get(), (response) -> { + if(!info.getGlobalIcon().equals(icon.get())) ApiHandler.setIcon(icon.get(), (response) -> { if(response.isSuccessful()) Util.update(ResultType.ICON, Component.text("✔", NamedTextColor.GREEN)); else Util.update(ResultType.ICON, response.getMessage()); }); @@ -106,11 +118,13 @@ public void resetTag(Setting setting) { public ConfigProperty tag() { return tag; } + public ConfigProperty font() { + return font; + } public ConfigProperty position() { return position; } - public ConfigProperty icon() { - return globalIcon; + return icon; } } diff --git a/core/src/main/java/com/rappytv/globaltags/config/widget/TagPreviewWidget.java b/core/src/main/java/com/rappytv/globaltags/config/widget/TagPreviewWidget.java index 96923974..f913b290 100644 --- a/core/src/main/java/com/rappytv/globaltags/config/widget/TagPreviewWidget.java +++ b/core/src/main/java/com/rappytv/globaltags/config/widget/TagPreviewWidget.java @@ -75,10 +75,12 @@ public void initialize(boolean refetched) { } else { if(refetched) { config.tag().set(info.getPlainTag()); + config.font().set(info.getFont()); config.position().set(info.getPosition()); config.icon().set(info.getGlobalIcon()); } boolean updated = !config.tag().get().equals(info.getPlainTag()) + || !config.font().get().equals(info.getFont()) || !config.position().get().equals(info.getPosition()) || !config.icon().get().equals(info.getGlobalIcon()); if(changed && updated) { @@ -87,13 +89,14 @@ public void initialize(boolean refetched) { I18n.translate("globaltags.settings.tags.staged.description") ); } + setVariable("--staff-margin", 2 + config.font().get().getStaffMargin()); ComponentWidget tag = ComponentWidget.component( config.tag().get().isBlank() ? Component.translatable( "globaltags.settings.tags.tagPreview.empty", NamedTextColor.RED ) - : Util.translateColorCodes(config.tag().get()) + : Util.formatTag(config.tag().get(), config.font().get()) ).addId("text"); if (config.icon().get() != GlobalIcon.NONE) this.addEntryInitialized(new IconWidget(config.icon().get().getIcon()).addId("icon")); diff --git a/core/src/main/java/com/rappytv/globaltags/nametag/CustomTag.java b/core/src/main/java/com/rappytv/globaltags/nametag/CustomTag.java index a987cd7c..fe8358a5 100644 --- a/core/src/main/java/com/rappytv/globaltags/nametag/CustomTag.java +++ b/core/src/main/java/com/rappytv/globaltags/nametag/CustomTag.java @@ -70,7 +70,13 @@ public void render(Stack stack, Entity entity) { Laby.labyAPI().renderPipeline().renderSeeThrough(entity, () -> { if(info.getIcon() != null) info.getIcon().render(stack, -11, 0, 9, 9); - if(info.isAdmin()) admin.render(stack, getWidth() + 0.9F, -1.2F, 11, 11); + if(info.isAdmin()) admin.render( + stack, + getWidth() + 0.9F + (float) info.getFont().getStaffMargin(), + -1.2F, + 11, + 11 + ); }); } diff --git a/core/src/main/resources/assets/globaltags/font/alagard.json b/core/src/main/resources/assets/globaltags/font/alagard.json new file mode 100644 index 00000000..38312700 --- /dev/null +++ b/core/src/main/resources/assets/globaltags/font/alagard.json @@ -0,0 +1,14 @@ +{ + "providers": [ + { + "type": "ttf", + "file": "globaltags:alagard.ttf", + "shift": [ + 0, + 1.6 + ], + "size": 8.0, + "oversample": 10.0 + } + ] +} diff --git a/core/src/main/resources/assets/globaltags/font/alagard.ttf b/core/src/main/resources/assets/globaltags/font/alagard.ttf new file mode 100644 index 00000000..c7ed1d91 Binary files /dev/null and b/core/src/main/resources/assets/globaltags/font/alagard.ttf differ diff --git a/core/src/main/resources/assets/globaltags/font/dark_souls.json b/core/src/main/resources/assets/globaltags/font/dark_souls.json new file mode 100644 index 00000000..d6b7ce16 --- /dev/null +++ b/core/src/main/resources/assets/globaltags/font/dark_souls.json @@ -0,0 +1,14 @@ +{ + "providers": [ + { + "type": "ttf", + "file": "globaltags:dark_souls.ttf", + "shift": [ + 0, + 0.8 + ], + "size": 11.0, + "oversample": 11.0 + } + ] +} diff --git a/core/src/main/resources/assets/globaltags/font/dark_souls.ttf b/core/src/main/resources/assets/globaltags/font/dark_souls.ttf new file mode 100644 index 00000000..dcf331ab Binary files /dev/null and b/core/src/main/resources/assets/globaltags/font/dark_souls.ttf differ diff --git a/core/src/main/resources/assets/globaltags/font/glacial_indifference.json b/core/src/main/resources/assets/globaltags/font/glacial_indifference.json new file mode 100644 index 00000000..b741748c --- /dev/null +++ b/core/src/main/resources/assets/globaltags/font/glacial_indifference.json @@ -0,0 +1,15 @@ +{ + "providers": [ + { + "type": "ttf", + "file": "globaltags:glacial_indifference.ttf", + "shift": [ + 0, + 0.5 + ], + "size": 12.0, + "oversample": 6.0, + "skip": "" + } + ] +} diff --git a/core/src/main/resources/assets/globaltags/font/glacial_indifference.ttf b/core/src/main/resources/assets/globaltags/font/glacial_indifference.ttf new file mode 100644 index 00000000..f828594b Binary files /dev/null and b/core/src/main/resources/assets/globaltags/font/glacial_indifference.ttf differ diff --git a/core/src/main/resources/assets/globaltags/font/super_rpg.json b/core/src/main/resources/assets/globaltags/font/super_rpg.json new file mode 100644 index 00000000..aa3f60c0 --- /dev/null +++ b/core/src/main/resources/assets/globaltags/font/super_rpg.json @@ -0,0 +1,14 @@ +{ + "providers": [ + { + "type": "ttf", + "file": "globaltags:super_rpg.ttf", + "shift": [ + 0.5, + 1 + ], + "size": 10.0, + "oversample": 6.0 + } + ] +} diff --git a/core/src/main/resources/assets/globaltags/font/super_rpg.ttf b/core/src/main/resources/assets/globaltags/font/super_rpg.ttf new file mode 100644 index 00000000..d5d2642e Binary files /dev/null and b/core/src/main/resources/assets/globaltags/font/super_rpg.ttf differ diff --git a/core/src/main/resources/assets/globaltags/i18n/de_de.json b/core/src/main/resources/assets/globaltags/i18n/de_de.json index 53f61c50..b2c43cae 100644 --- a/core/src/main/resources/assets/globaltags/i18n/de_de.json +++ b/core/src/main/resources/assets/globaltags/i18n/de_de.json @@ -1,162 +1,173 @@ { - "globaltags": { - "settings": { - "name": "Global Tags", - "header": { - "display": { - "name": "Anzeigeeinstellungen" - }, - "tags": { - "name": "Tag-Einstellungen" - } - }, - "enabled": { - "name": "Aktiviert" - }, - "localizedResponses": { - "name": "API-Antworten lokalisieren", - "description": "Wenn diese Option aktiviert ist, sendet das Addon auch deine Minecraft-Sprache an die API. Wenn die Übersetzungen vorhanden sind, erhältst du lokalisierte Antworten. Deine Minecraft-Sprache wird nirgendwo gespeichert." - }, - "joinDiscord": { - "name": "Discord Server", - "text": "Beitreten" - }, - "showOwnTag": { - "name": "Eigenen Tag anzeigen" - }, - "tagSize": { - "name": "Tag Größe" - }, - "showBackground": { - "name": "Hintergrund anzeigen", - "description": "Wenn diese Option aktiviert ist, siehst du den standard Vanilla-Hintergrund hinter den Global Tags." - }, - "tags": { - "name": "Globale Tag-Einstellungen", - "staged": { - "title": "Ausstehende Änderungen", - "description": "Klicke auf den Knopf \"Einstellungen anwenden\", um die ausstehenden Änderungen anzuwenden!" - }, - "tagPreview": { - "name": "Tag-Vorschau", - "banned": "Dein Account wurde gesperrt!\nGrund: %s", - "noInfo": "Kontoinformationen konnten nicht abgerufen werden!", - "labyConnect": "Du bist nicht mit LabyConnect verbunden!", - "empty": "", - "emptyReason": "Kein Grund angegeben", - "appeal": { - "name": "Entbannung", - "description": "⚠️ Dieser Button ist nur klickbar, wenn du Entbannungsanträge stellen darfst.", - "popup": { - "label": "Warum sollten wir dich entbannen?", - "placeholder": "Bitte gebe einen Grund an...", - "button": "Antrag senden" + "globaltags": { + "settings": { + "name": "Global Tags", + "header": { + "display": { + "name": "Anzeigeeinstellungen" + }, + "tags": { + "name": "Tag-Einstellungen" + } + }, + "enabled": { + "name": "Aktiviert" + }, + "localizedResponses": { + "name": "API-Antworten lokalisieren", + "description": "Wenn diese Option aktiviert ist, sendet das Addon auch deine Minecraft-Sprache an die API. Wenn die Übersetzungen vorhanden sind, erhältst du lokalisierte Antworten. Deine Minecraft-Sprache wird nirgendwo gespeichert." + }, + "joinDiscord": { + "name": "Discord Server", + "text": "Beitreten" + }, + "showOwnTag": { + "name": "Eigenen Tag anzeigen" + }, + "tagSize": { + "name": "Tag Größe" + }, + "showBackground": { + "name": "Hintergrund anzeigen", + "description": "Wenn diese Option aktiviert ist, siehst du den standard Vanilla-Hintergrund hinter den Global Tags." + }, + "tags": { + "name": "Globale Tag-Einstellungen", + "staged": { + "title": "Ausstehende Änderungen", + "description": "Klicke auf den Knopf \"Einstellungen anwenden\", um die ausstehenden Änderungen anzuwenden!" + }, + "tagPreview": { + "name": "Tag-Vorschau", + "banned": "Dein Account wurde gesperrt!\nGrund: %s", + "noInfo": "Kontoinformationen konnten nicht abgerufen werden!", + "labyConnect": "Du bist nicht mit LabyConnect verbunden!", + "empty": "", + "emptyReason": "Kein Grund angegeben", + "appeal": { + "name": "Entbannung", + "description": "⚠️ Dieser Button ist nur klickbar, wenn du Entbannungsanträge stellen darfst.", + "popup": { + "label": "Warum sollten wir dich entbannen?", + "placeholder": "Bitte gebe einen Grund an...", + "button": "Antrag senden" + } + } + }, + "tag": { + "name": "Globaler Tag" + }, + "font": { + "name": "Globale Schriftart", + "entries": { + "default": "Zum theme passend", + "unicode": "Unicode", + "alagard": "Alagard", + "darkSouls": "Dark Souls", + "glacialIndifference": "Glacial Indifference", + "superRpg": "Super RPG" + } + }, + "position": { + "name": "Globale Position", + "description": "Dein Tag ist an dieser Position für alle sichtbar.", + "entries": { + "aboveName": "Über dem Namen", + "belowName": "Unten dem Namen", + "rightToName": "Rechts vom Namen", + "leftToName": "Links vom Namen" + } + }, + "icon": { + "name": "Globales Icon", + "entries": { + "none": "Keins", + "discord": "Discord", + "bereal": "BeReal.", + "ebio": "e.bio", + "epicgames": "Epic Games", + "github": "GitHub", + "gitlab": "GitLab", + "instagram": "Instagram", + "kick": "Kick", + "pinterest": "Pinterest", + "playstation": "Playstation", + "snapchat": "Snapchat", + "steam": "Steam", + "threads": "Threads", + "tiktok": "TikTok", + "twitch": "Twitch", + "x": "x", + "xbox": "Xbox", + "youtube": "YouTube" + } + }, + "updateSettings": { + "name": "Einstellungen anwenden", + "text": "Aktualisieren", + "result": "Tag: %s\nSchriftart: %s\nPosition: %s\nIcon: %s", + "unchanged": "Unverändert" + }, + "resetTag": { + "name": "Global Tag löschen", + "text": "Löschen" + } + }, + "clearCache": { + "name": "Cache leeren", + "text": "Leeren", + "description": "Löscht den Tag-Cache manuell.\nDer Cache wird automatisch alle §b5 Minuten§f geleert.\nDu kannst den Cache auch mit §b/gt cc§f löschen." } - } }, - "tag": { - "name": "Global Tag" + "notifications": { + "success": "Erfolg!", + "error": "Es ist ein Fehler aufgetreten", + "cacheCleared": "Der Cache wurde geleert!" }, - "position": { - "name": "Globale Position", - "description": "Dein Tag ist an dieser Position für alle sichtbar.", - "entries": { - "aboveName": "Über dem Namen", - "belowName": "Unten dem Namen", - "rightToName": "Rechts vom Namen", - "leftToName": "Links vom Namen" - } + "messages": { + "clearCache": "Cache leeren", + "hoverClearCache": "Klicke hier, um den Tag-Cache zu leeren!", + "offline": "Verbindung fehlgeschlagen!", + "code": "Der Code wurde in deine Zwischenablage kopiert!" }, - "globalIcon": { - "name": "Globales Icon", - "entries": { - "none": "Keins", - "discord": "Discord", - "bereal": "BeReal.", - "ebio": "e.bio", - "epicgames": "Epic Games", - "github": "GitHub", - "gitlab": "GitLab", - "instagram": "Instagram", - "kick": "Kick", - "pinterest": "Pinterest", - "playstation": "Playstation", - "snapchat": "Snapchat", - "steam": "Steam", - "threads": "Threads", - "tiktok": "TikTok", - "twitch": "Twitch", - "x": "x", - "xbox": "Xbox", - "youtube": "YouTube" - } - }, - "updateSettings": { - "name": "Einstellungen anwenden", - "text": "Aktualisieren", - "result": "Tag: %s\nPosition: %s\nIcon: %s", - "unchanged": "Unverändert" - }, - "resetTag": { - "name": "Global Tag löschen", - "text": "Löschen" + "context": { + "reason": "Grund", + "placeholder": "Bitte gib einen Grund an...", + "report": { + "name": "GlobalTag melden", + "title": "%s melden", + "send": "Meldung senden" + }, + "ban": { + "name": "GlobalTag-Spieler bannen", + "title": "%s bannen", + "send": "Bannen" + }, + "unban": { + "name": "GlobalTag-Spieler entbannen", + "title": "%s entbannen", + "send": "Entbannen" + }, + "editBan": { + "name": "GlobalTag-Ban bearbeiten", + "title": "Bearbeite den Ban von %s", + "send": "Änderungen speichern", + "appealable": "Darf Entbannungsantrag stellen" + }, + "changeTag": { + "name": "GlobalTag ändern", + "title": "Ändere den Tag von %s", + "label": "Neuer GlobalTag", + "placeholder": "Gib den aktualisierten GlobalTag ein...", + "send": "Tag aktualisieren" + }, + "clearTag": { + "name": "GlobalTag löschen" + }, + "admin": { + "set": "GlobalTag Admin machen", + "remove": "GlobalTag Admin entfernen" + } } - }, - "clearCache": { - "name": "Cache leeren", - "text": "Leeren", - "description": "Löscht den Tag-Cache manuell.\nDer Cache wird automatisch alle §b5 Minuten§f geleert.\nDu kannst den Cache auch mit §b/gt cc§f löschen." - } - }, - "notifications": { - "success": "Erfolg!", - "error": "Es ist ein Fehler aufgetreten", - "cacheCleared": "Der Cache wurde geleert!" - }, - "messages": { - "clearCache": "Cache leeren", - "hoverClearCache": "Klicke hier, um den Tag-Cache zu leeren!", - "offline": "Verbindung fehlgeschlagen!", - "code": "Der Code wurde in deine Zwischenablage kopiert!" - }, - "context": { - "reason": "Grund", - "placeholder": "Bitte gib einen Grund an...", - "report": { - "name": "GlobalTag melden", - "title": "%s melden", - "send": "Meldung senden" - }, - "ban": { - "name": "GlobalTag-Spieler bannen", - "title": "%s bannen", - "send": "Bannen" - }, - "unban": { - "name": "GlobalTag-Spieler entbannen", - "title": "%s entbannen", - "send": "Entbannen" - }, - "editBan": { - "name": "GlobalTag-Ban bearbeiten", - "title": "Bearbeite den Ban von %s", - "send": "Änderungen speichern", - "appealable": "Darf Entbannungsantrag stellen" - }, - "changeTag": { - "name": "GlobalTag ändern", - "title": "Ändere den Tag von %s", - "label": "Neuer GlobalTag", - "placeholder": "Gib den aktualisierten GlobalTag ein...", - "send": "Tag aktualisieren" - }, - "clearTag": { - "name": "GlobalTag löschen" - }, - "admin": { - "set": "GlobalTag Admin machen", - "remove": "GlobalTag Admin entfernen" - } } - } } diff --git a/core/src/main/resources/assets/globaltags/i18n/en_us.json b/core/src/main/resources/assets/globaltags/i18n/en_us.json index 6180d055..ef59d618 100644 --- a/core/src/main/resources/assets/globaltags/i18n/en_us.json +++ b/core/src/main/resources/assets/globaltags/i18n/en_us.json @@ -57,6 +57,17 @@ "tag": { "name": "Global tag" }, + "font": { + "name": "Global font", + "entries": { + "default": "Matching theme", + "unicode": "Unicode", + "alagard": "Alagard", + "darkSouls": "Dark Souls", + "glacialIndifference": "Glacial Indifference", + "superRpg": "Super RPG" + } + }, "position": { "name": "Global position", "description": "Your tag is visible in this position to everyone.", @@ -67,7 +78,7 @@ "leftToName": "Left to name" } }, - "globalIcon": { + "icon": { "name": "Global icon", "entries": { "none": "None", @@ -94,7 +105,7 @@ "updateSettings": { "name": "Publish settings", "text": "Update", - "result": "Tag: %s\nPosition: %s\nIcon: %s", + "result": "Tag: %s\nFont: %s\nPosition: %s\nIcon: %s", "unchanged": "Unchanged" }, "resetTag": { diff --git a/core/src/main/resources/assets/globaltags/themes/fancy/lss/preview.lss b/core/src/main/resources/assets/globaltags/themes/fancy/lss/preview.lss index 183000c0..727ec880 100644 --- a/core/src/main/resources/assets/globaltags/themes/fancy/lss/preview.lss +++ b/core/src/main/resources/assets/globaltags/themes/fancy/lss/preview.lss @@ -18,7 +18,7 @@ TagPreview { } .staff-icon { - margin-left: 2; + margin-left: var(--staff-margin); height: 11; width: height; } diff --git a/core/src/main/resources/assets/globaltags/themes/vanilla/lss/preview.lss b/core/src/main/resources/assets/globaltags/themes/vanilla/lss/preview.lss index 183000c0..727ec880 100644 --- a/core/src/main/resources/assets/globaltags/themes/vanilla/lss/preview.lss +++ b/core/src/main/resources/assets/globaltags/themes/vanilla/lss/preview.lss @@ -18,7 +18,7 @@ TagPreview { } .staff-icon { - margin-left: 2; + margin-left: var(--staff-margin); height: 11; width: height; } diff --git a/core/src/main/resources/assets/globaltags/themes/vanilla/textures/settings.png b/core/src/main/resources/assets/globaltags/themes/vanilla/textures/settings.png index e5aaf2fa..806d8685 100644 Binary files a/core/src/main/resources/assets/globaltags/themes/vanilla/textures/settings.png and b/core/src/main/resources/assets/globaltags/themes/vanilla/textures/settings.png differ