From 1296f8973517afc01349ec3ded9595a3adf1714e Mon Sep 17 00:00:00 2001 From: Dustin Weckenbrock Date: Mon, 15 Jun 2026 21:23:26 +0200 Subject: [PATCH 1/3] fix(translations): update placeholders in German and English property files --- src/main/resources/stardust_de_DE.properties | 102 +++++++++-------- src/main/resources/stardust_en_US.properties | 110 +++++++++---------- 2 files changed, 110 insertions(+), 102 deletions(-) diff --git a/src/main/resources/stardust_de_DE.properties b/src/main/resources/stardust_de_DE.properties index 22b827ee..c4d89b66 100644 --- a/src/main/resources/stardust_de_DE.properties +++ b/src/main/resources/stardust_de_DE.properties @@ -1,50 +1,58 @@ -remaining-time.seconds={0} Sekunde(n) -remaining-time.minutes={0} Minute(n) und {1} Sekunde(n) -remaining-time.hours={0} Stunde(n) {1} Minute(n) und {2} Sekunde(n) -remaining-time.days={0} Tag(e) {1} Stunde(n) {2} Minute(n) und {3} Sekunde(n) -frog-bucket-spawn-success={0} Der Frosch wurde erfolgreich freigelassen! -frog-bucket-added-to-inventory={0} Bekam {1} {2} zu {3} -frog-cannot-be-spawned={0} Der Frosch konnte nicht gespawnt werden!/red> +remaining-time.seconds= Sekunde(n) +remaining-time.minutes= Minute(n) und Sekunde(n) +remaining-time.hours= Stunde(n) Minute(n) und Sekunde(n) +remaining-time.days= Tag(e) Stunde(n) Minute(n) und Sekunde(n) +frog-bucket-spawn-success= Der Frosch wurde erfolgreich freigelassen! +frog-bucket-added-to-inventory= Bekam zu +frog-cannot-be-spawned= Der Frosch konnte nicht gespawnt werden!/red> plugin.prefix=[Stardust] -plugin.command-cooldowned={0} Du musst {1} warten, bevor du diesen Befehl wieder verwenden kannst. -plugin.inventory-full={0} Dein Inventar ist voll. -plugin.not-enough-permissions={0} Dir fehlen Berechtigungen, um dies zu tun. +plugin.command-cooldowned= Du musst warten, bevor du diesen Befehl wieder verwenden kannst. +plugin.inventory-full= Dein Inventar ist voll. +plugin.not-enough-permissions= Dir fehlen Berechtigungen, um dies zu tun. plugin.vanish-actionbar=Du bist unsichtbar f\u00FCr andere Spieler -plugin.no-item-in-hand={0} Bitte halte ein item in deiner Hand. -plugin.first-join={0} Willkommen, {1} auf OneLiteFeather.NET -already-in-flight-mode={0} Player {1} kann bereits fliegen. -vanish.confirm-chat-message={0} Du bist unsichtbar, best\u00E4tige diese Nachricht, wenn du deine Nachricht an alle Spieler trotzdem schicken m\u00F6chtest -listener.join-message=[\u2191] {0} -listener.quit-message=[\u2193] {0} -commands.flight.enable={0} Spieler {1} kann nun fliegen! -commands.flight.target.enable={0} Du kannst nun fliegen! -commands.flight.disable={0} Spieler {1} kann nun nicht mehr fliegen! -commands.flight.target.disable={0} Du kannst nun nicht mehr fliegen! -commands.glow.enabled={0} Spieler {1} leuchtet nun in der passenden Scoreboard Team Farbe. -commands.glow.disabled={0} Der Spieler {1} leuchtet nicht mehr in der passenden Scoreboard Team Farbe.. -commands.godmode.enable={0} Spieler {1} ist jetzt unverletzbar. -commands.godmode.disable={0} Spieler {1} ist jetzt verletzbar. -commands.godmode.enable.target={0} Du bist nun unverwundbar -commands.godmode.disable.target={0} Du bist nun verwundbar -commands.heal.success={0} Du hast Spieler {1} geheilt. -commands.heal.target={0} Du wurdest geheilt. -commands.rename.success={0} Das Item {1} wurde erfolgreich unbenannt -commands.rename.invalid-item={0} Stelle bitte sicher, dass du in deiner Hand ein Item h\u00E4ltst . -commands.repair.success={0} Das item in deiner Hand wurde erfolgreich repariert. -commands.repair.invalid-item={0}Dieses Item kann nicht repariert werden. +plugin.no-item-in-hand= Bitte halte ein item in deiner Hand. +plugin.first-join= Willkommen, auf OneLiteFeather.NET +already-in-flight-mode= Player kann bereits fliegen. +vanish.confirm-chat-message= Du bist unsichtbar, bestätige diese Nachricht, wenn du deine Nachricht an alle Spieler trotzdem schicken m\u00F6chtest +listener.join-message=[\u2191] +listener.quit-message=[\u2193] +commands.flight.enable= Spieler kann nun fliegen! +commands.flight.target.enable= Du kannst nun fliegen! +commands.flight.disable= Spieler kann nun nicht mehr fliegen! +commands.flight.target.disable= Du kannst nun nicht mehr fliegen! +commands.glow.enabled= Spieler leuchtet nun in der passenden Scoreboard Team Farbe. +commands.glow.disabled= Der Spieler leuchtet nicht mehr in der passenden Scoreboard Team Farbe.. +commands.godmode.enable= Spieler ist jetzt unverletzbar. +commands.godmode.disable= Spieler ist jetzt verletzbar. +commands.godmode.enable.target= Du bist nun unverwundbar +commands.godmode.disable.target= Du bist nun verwundbar +commands.heal.success= Du hast Spieler geheilt. +commands.heal.target= Du wurdest geheilt. +commands.rename.success= Das Item wurde erfolgreich unbenannt +commands.rename.invalid-item= Stelle bitte sicher, dass du in deiner Hand ein Item h\u00E4ltst . +commands.repair.success= Das item in deiner Hand wurde erfolgreich repariert. +commands.repair.invalid-item=Dieses Item kann nicht repariert werden. commands.repair.repaired-items.separator=, -commands.repair.all.success={0} Repariert: {1}">Alle Items in deinem Inventar wurden repariert. -commands.sign.signed={0} Das Item wurde erfolgreich signiert. -commands.sign.already-signed={0} Dieses Item wurde schon signiert. -commands.sign.no-item-in-hand={0} Du h\u00E4ltst kein Item in deiner Hand. -commands.skull.success={0} Du hast nun den Kopf von {1}.. -vanish.self.disappeared={0} Du bist nun unsichtbar f\u00FCr andere Spieler. -vanish.self.reappeared={0} Du bist nun sichtbar f\u00FCr andere Spieler. -commands.vanish.property-set={0} Eigenschaften {1} wurden gesetzt zu {2} f\u00FCr den Spieler {3} -commands.unsign.not-signed={0} Dieses Item wurde nicht von dir signiert -commands.unsign.success={0} Du hast erfolgreich deine Signierung von diesem Item entfernt -vanish.disappeared={0} {1} ist nun unsichtbar. -vanish.reappeared={0} {1} ist nun sichtbar. -vanish.join.silently={0} {1} ist dem Server unsichtbar beigetreten. -vanish.quit.silently={0} {1} hat den Server unsichtbar verlassen. -vanish.join.self={0} Du bist immer noch unsichtbar. \ No newline at end of file +commands.ipsame.show= Spieler hat die gleiche IP-Adresse wie Spieler: +commands.ipsame.target-ip= Spieler hat folgende IP-Adresse: '> +commands.ipshow= <#9c9c9c>IP-Adresse von : <#2d4e9c>: +commands.repair.all.success= Repariert: ">Alle Items in deinem Inventar wurden repariert. +commands.sign.signed= Das Item wurde erfolgreich signiert. +commands.sign.already-signed= Dieses Item wurde schon signiert. +commands.sign.no-item-in-hand= Du h\u00E4ltst kein Item in deiner Hand. +commands.skull.success= Du hast nun den Kopf von .. +commands.ping.show= <#9c9c9c>Ping von : <#2d4e9c>ms +vanish.self.disappeared= Du bist nun unsichtbar f\u00FCr andere Spieler. +vanish.self.reappeared= Du bist nun sichtbar f\u00FCr andere Spieler. +commands.vanish.property-set= Eigenschaften wurden gesetzt zu f\u00FCr den Spieler +commands.unsign.not-signed= Dieses Item wurde nicht von dir signiert +commands.unsign.success= Du hast erfolgreich deine Signierung von diesem Item entfernt +vanish.disappeared= ist nun unsichtbar. +vanish.reappeared= ist nun sichtbar. +vanish.join.silently= ist dem Server unsichtbar beigetreten. +vanish.quit.silently= hat den Server unsichtbar verlassen. +vanish.join.self= Du bist immer noch unsichtbar. +commands.vpncheck.block.0= <#9c9c9c>VPNCheck from IP: \nISP: \nASN: \nCountry Name: ()'> +commands.vpncheck.block.1= <#9c9c9c>VPNCheck from IP: \nISP: \nASN: \nCountry Name: ()'> +commands.vpncheck.block.2= <#9c9c9c>VPNCheck from IP: \nISP: \nASN: \nCountry Name: ()'> +commands.vpncheck.block.3= <#9c9c9c>VPNCheck from IP: \nISP: \nASN: \nCountry Name: ()'> \ No newline at end of file diff --git a/src/main/resources/stardust_en_US.properties b/src/main/resources/stardust_en_US.properties index 529e7497..4182d3eb 100644 --- a/src/main/resources/stardust_en_US.properties +++ b/src/main/resources/stardust_en_US.properties @@ -1,58 +1,58 @@ -remaining-time.seconds={0} second(s) -remaining-time.minutes={0} minute(s) and {1} second(s) -remaining-time.hours={0} hour(s) {1} minute(s) and {2} second(s) -remaining-time.days={0} day(s) {1} hour(s) {2} minute(s) and {3} second(s) -frog-bucket-spawn-success={0} The Frog was successfully spawned! -frog-bucket-added-to-inventory={0} Gave {1} {2} to {3} -frog-cannot-be-spawned={0} The Frog cannot be spawned!/red> +remaining-time.seconds= second(s) +remaining-time.minutes= minute(s) and second(s) +remaining-time.hours= hour(s) minute(s) and second(s) +remaining-time.days= day(s) hour(s) minute(s) and second(s) +frog-bucket-spawn-success= The Frog was successfully spawned! +frog-bucket-added-to-inventory= Gave to +frog-cannot-be-spawned= The Frog cannot be spawned!/red> plugin.prefix=[Stardust] -plugin.command-cooldowned={0} You have to wait {1} before you can use this command again. -plugin.not-enough-permissions={0} You don't have enough permissions do to that. -plugin.no-item-in-hand={0} Please hold an item in your hand. -plugin.inventory-full={0} Your inventory is full. -plugin.first-join={0} Welcome, {1} on OneLiteFeather.NET -already-in-flight-mode={0} Player {1} is already in flight mode. +plugin.command-cooldowned= You have to wait before you can use this command again. +plugin.inventory-full= Your inventory is full. +plugin.not-enough-permissions= You don't have enough permissions do to that. plugin.vanish-actionbar=You are hidden for other players -listener.join-message=[\u2191] {0} -listener.quit-message=[\u2193] {0} -commands.flight.enable={0} Set fly mode enabled for {1} -commands.flight.target.enable={0} Fly mode was enabled -commands.flight.disable={0} Set fly mode disabled for {1} -commands.flight.target.disable={0} Fly mode was disabled -commands.glow.enabled={0} Player {1} is now glowing in the appropriate scoreboard team color. -commands.glow.disabled={0} Player {1} is no longer glowing in the appropriate scoreboard team color.. -commands.godmode.enable={0} Player {1} is now invulnerable. -commands.godmode.disable={0} Player {1} is now vulnerable. -commands.godmode.enable.target={0} You\u00B4re now invulnerable -commands.godmode.disable.target={0} You\u00B4re now vulnerable -commands.heal.success={0} You healed player {1} -commands.heal.target={0} You have been healed -commands.rename.invalid-item={0} Please take sure you are holding an item in your hand. -commands.rename.success={0} Item {1} has been successfully renamed -commands.repair.success={0} The item in your hand has been repaired successfully. -commands.repair.all.success={0} Repaired: {1}">All items in your inventory have been repaired. -commands.repair.invalid-item={0}This item can not be repaired. +plugin.no-item-in-hand= Please hold an item in your hand. +plugin.first-join= Welcome, on OneLiteFeather.NET +already-in-flight-mode= Player is already in flight mode. +listener.join-message=[\u2191] +listener.quit-message=[\u2193] +commands.flight.enable= Set fly mode enabled for +commands.flight.target.enable= Fly mode was enabled +commands.flight.disable= Set fly mode disabled for +commands.flight.target.disable= Fly mode was disabled +commands.glow.enabled= Player is now glowing in the appropriate scoreboard team color. +commands.glow.disabled= Player is no longer glowing in the appropriate scoreboard team color.. +commands.godmode.enable= Player is now invulnerable. +commands.godmode.disable= Player is now vulnerable. +commands.godmode.enable.target= You\u00B4re now invulnerable +commands.godmode.disable.target= You\u00B4re now vulnerable +commands.heal.success= You healed player +commands.heal.target= You have been healed +commands.rename.invalid-item= Please take sure you are holding an item in your hand. +commands.rename.success= Item has been successfully renamed +commands.repair.success= The item in your hand has been repaired successfully. +commands.repair.all.success= Repaired: ">All items in your inventory have been repaired. +commands.repair.invalid-item=This item can not be repaired. commands.repair.repaired-items.separator=, -commands.ipsame.show={0} Player {1} has the same IP as following player: {2} -commands.ipsame.target-ip={0} Player {1} following IP: {2} -commands.ipshow={0} <#9c9c9c>IP from {1}: <#2d4e9c>{2}:{3} -commands.sign.signed={0} Item has been successfully signed. -commands.sign.already-signed={0} This item had already been signed. -commands.sign.no-item-in-hand={0} You do not have an item held in your hand. -commands.unsign.not-signed={0} This item was not signed by you -commands.unsign.success={0} You have successfully removed your signature from this item -commands.skull.success={0} You now have the head of {1}.. -commands.ping.show={0} <#9c9c9c>Ping from {1}: <#2d4e9c>{2}ms -vanish.self.disappeared={0} You\u00B4re now invisible for other players. -vanish.self.reappeared={0} You\u00B4re now visible for other players. -commands.vanish.property-set={0} Property {1} was set to {2} for player {3} -vanish.confirm-chat-message={0} You are vanished, confirm this message if you want to send this message in public -vanish.disappeared={0} {1} vanished. -vanish.reappeared={0} {1} reappeared. -vanish.join.silently={0} {1} joined silently -vanish.quit.silently={0} {1} left silently -vanish.join.self={0} You`re still invisible -commands.vpncheck.block.0={0} <#9c9c9c>VPNCheck from IP: {1}\nISP: {2}\nASN: {3}\nCountry Name: {4}({5})'>{6} -commands.vpncheck.block.1={0} <#9c9c9c>VPNCheck from IP: {1}\nISP: {2}\nASN: {3}\nCountry Name: {4}({5})'>{6} -commands.vpncheck.block.2={0} <#9c9c9c>VPNCheck from IP: {1}\nISP: {2}\nASN: {3}\nCountry Name: {4}({5})'>{6} -commands.vpncheck.block.3={0} <#9c9c9c>VPNCheck from IP: {1}\nISP: {2}\nASN: {3}\nCountry Name: {4}({5})'>{6} +commands.ipsame.show= Player has the same IP as following player: +commands.ipsame.target-ip= Player following IP: '> +commands.ipshow= <#9c9c9c>IP from : <#2d4e9c>: +commands.sign.signed= Item has been successfully signed. +commands.sign.already-signed= This item had already been signed. +commands.sign.no-item-in-hand= You do not have an item held in your hand. +commands.unsign.not-signed= This item was not signed by you +commands.unsign.success= You have successfully removed your signature from this item +commands.skull.success= You now have the head of .. +commands.ping.show= <#9c9c9c>Ping from : <#2d4e9c>ms +vanish.self.disappeared= You\u00B4re now invisible for other players. +vanish.self.reappeared= You\u00B4re now visible for other players. +commands.vanish.property-set= Property was set to for player +vanish.confirm-chat-message= You are vanished, confirm this message if you want to send this message in public +vanish.disappeared= vanished. +vanish.reappeared= reappeared. +vanish.join.silently= joined silently +vanish.quit.silently= left silently +vanish.join.self= You`re still invisible +commands.vpncheck.block.0= <#9c9c9c>VPNCheck from IP: \nISP: \nASN: \nCountry Name: ()'> +commands.vpncheck.block.1= <#9c9c9c>VPNCheck from IP: \nISP: \nASN: \nCountry Name: ()'> +commands.vpncheck.block.2= <#9c9c9c>VPNCheck from IP: \nISP: \nASN: \nCountry Name: ()'> +commands.vpncheck.block.3= <#9c9c9c>VPNCheck from IP: \nISP: \nASN: \nCountry Name: ()'> From 0d6986ff9932b40453b344b3910312840bf04212 Mon Sep 17 00:00:00 2001 From: Dustin Weckenbrock Date: Mon, 15 Jun 2026 21:23:45 +0200 Subject: [PATCH 2/3] fix(translations): update translation system to use MiniMessageTranslationStore --- .../stardust/StardustPlugin.java | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/main/java/net/onelitefeather/stardust/StardustPlugin.java b/src/main/java/net/onelitefeather/stardust/StardustPlugin.java index 334195e0..69df3bef 100644 --- a/src/main/java/net/onelitefeather/stardust/StardustPlugin.java +++ b/src/main/java/net/onelitefeather/stardust/StardustPlugin.java @@ -4,15 +4,13 @@ import io.github.retrooper.packetevents.factory.spigot.SpigotPacketEventsBuilder; import net.kyori.adventure.key.Key; import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.minimessage.translation.MiniMessageTranslationStore; import net.kyori.adventure.translation.GlobalTranslator; -import net.kyori.adventure.translation.TranslationRegistry; -import net.kyori.adventure.util.UTF8ResourceBundleControl; import net.onelitefeather.stardust.api.CommandCooldownService; import net.onelitefeather.stardust.api.ItemSignService; import net.onelitefeather.stardust.configuration.PluginConfiguration; import net.onelitefeather.stardust.listener.*; import net.onelitefeather.stardust.service.*; -import net.onelitefeather.stardust.translation.PluginTranslationRegistry; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; import org.bukkit.plugin.PluginDescriptionFile; @@ -46,6 +44,7 @@ public StardustPlugin(JavaPluginLoader loader, PluginDescriptionFile description private ItemSignService itemSignService; private VanishNoPacketListener packetListener; private PluginConfiguration pluginConfiguration; + private MiniMessageTranslationStore translationStore; @Override public void onLoad() { @@ -64,14 +63,14 @@ public void onEnable() { this.pluginConfiguration = new PluginConfiguration(getConfig()); - var registry = TranslationRegistry.create(Key.key("stardust", "localization")); - supportedLocals.forEach(locale -> { - var bundle = ResourceBundle.getBundle("stardust", locale, UTF8ResourceBundleControl.get()); - registry.registerAll(locale, bundle, true); - }); + this.translationStore = MiniMessageTranslationStore.create(Key.key("stardust", "translations")); + this.translationStore.defaultLocale(supportedLocals.getFirst()); + GlobalTranslator.translator().addSource(this.translationStore); - registry.defaultLocale(supportedLocals.getFirst()); - GlobalTranslator.translator().addSource(new PluginTranslationRegistry(registry)); + supportedLocals.forEach(locale -> this.translationStore.registerAll( + locale, + ResourceBundle.getBundle("stardust", locale), + false)); this.syncFrogService = new SyncFrogService(this); @@ -97,6 +96,7 @@ public void onDisable() { this.luckPermsService.unsubscribeEvents(); this.databaseService.close(); + GlobalTranslator.translator().removeSource(this.translationStore); this.packetListener.unregister(); PacketEvents.getAPI().terminate(); } From 098ac2c76e6eccde053c7af77590955907c7f271 Mon Sep 17 00:00:00 2001 From: Dustin Weckenbrock Date: Mon, 15 Jun 2026 21:24:38 +0200 Subject: [PATCH 3/3] fix(VPNCheckCommand): Remove unnecessary debug output --- .../stardust/command/commands/VPNCheckCommand.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/net/onelitefeather/stardust/command/commands/VPNCheckCommand.java b/src/main/java/net/onelitefeather/stardust/command/commands/VPNCheckCommand.java index 1c56ec57..ebb5e4f9 100644 --- a/src/main/java/net/onelitefeather/stardust/command/commands/VPNCheckCommand.java +++ b/src/main/java/net/onelitefeather/stardust/command/commands/VPNCheckCommand.java @@ -40,7 +40,6 @@ public void vpnCheck(Player player, @Argument("player") Player target) { .header("X-Key", this.plugin.getConfig().getString("iphub.key")) .build(); try { - player.sendMessage(Component.text(address.getAddress().getHostAddress())); var response = client.send(request, HttpResponse.BodyHandlers.ofString(StandardCharsets.UTF_8)); player.sendMessage(Component.text(response.body())); if (response.statusCode() == 200) {