mirror of
https://github.com/Shiewk/SModeration.git
synced 2026-04-28 05:54:16 +02:00
Fix hardcoded page switching strings; add German translations
This commit is contained in:
@@ -55,7 +55,8 @@ public final class SModerationPaper extends JavaPlugin {
|
|||||||
createMiniMessage(),
|
createMiniMessage(),
|
||||||
"smoderation/translations/",
|
"smoderation/translations/",
|
||||||
new Locale[] {
|
new Locale[] {
|
||||||
Locale.forLanguageTag("en-US")
|
Locale.forLanguageTag("en-US"),
|
||||||
|
Locale.forLanguageTag("de-DE")
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
@@ -1,12 +1,17 @@
|
|||||||
package de.shiewk.smoderation.paper.inventory;
|
package de.shiewk.smoderation.paper.inventory;
|
||||||
|
|
||||||
import net.kyori.adventure.text.Component;
|
import io.papermc.paper.datacomponent.DataComponentTypes;
|
||||||
import net.kyori.adventure.text.format.NamedTextColor;
|
import net.kyori.adventure.text.format.NamedTextColor;
|
||||||
import net.kyori.adventure.text.format.TextColor;
|
import net.kyori.adventure.text.format.TextColor;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.inventory.InventoryClickEvent;
|
import org.bukkit.event.inventory.InventoryClickEvent;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
|
import static net.kyori.adventure.text.Component.text;
|
||||||
|
import static net.kyori.adventure.text.Component.translatable;
|
||||||
|
|
||||||
|
@SuppressWarnings("UnstableApiUsage") // Paper Data Component API
|
||||||
public abstract class PageableCustomInventory implements CustomInventory {
|
public abstract class PageableCustomInventory implements CustomInventory {
|
||||||
|
|
||||||
protected final int prevSlot, nextSlot;
|
protected final int prevSlot, nextSlot;
|
||||||
@@ -49,21 +54,21 @@ public abstract class PageableCustomInventory implements CustomInventory {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public ItemStack createPreviousPageStack(){
|
public ItemStack createPreviousPageStack(Player viewer){
|
||||||
boolean allowed = page > 0;
|
boolean allowed = page > 0;
|
||||||
TextColor color = allowed ? NamedTextColor.GREEN : NamedTextColor.RED;
|
TextColor color = allowed ? NamedTextColor.GREEN : NamedTextColor.RED;
|
||||||
int skip = allowed ? page : page+1;
|
int skip = allowed ? page : page+1;
|
||||||
ItemStack stack = new ItemStack(allowed ? Material.GREEN_STAINED_GLASS_PANE : Material.RED_STAINED_GLASS_PANE);
|
ItemStack stack = new ItemStack(allowed ? Material.GREEN_STAINED_GLASS_PANE : Material.RED_STAINED_GLASS_PANE);
|
||||||
stack.editMeta(meta -> meta.displayName(applyFormatting(Component.text("Previous page (%s/%s)".formatted(skip, lastPage()+1)).color(color))));
|
stack.setData(DataComponentTypes.ITEM_NAME, CustomInventory.renderComponent(viewer, applyFormatting(translatable("smod.inventory.previous", text(skip), text(lastPage()+1)).color(color))));
|
||||||
return stack;
|
return stack;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ItemStack createNextPageStack(){
|
public ItemStack createNextPageStack(Player viewer){
|
||||||
boolean allowed = page < lastPage();
|
boolean allowed = page < lastPage();
|
||||||
TextColor color = allowed ? NamedTextColor.GREEN : NamedTextColor.RED;
|
TextColor color = allowed ? NamedTextColor.GREEN : NamedTextColor.RED;
|
||||||
int skip = allowed ? page+2 : page+1;
|
int skip = allowed ? page+2 : page+1;
|
||||||
ItemStack stack = new ItemStack(allowed ? Material.GREEN_STAINED_GLASS_PANE : Material.RED_STAINED_GLASS_PANE);
|
ItemStack stack = new ItemStack(allowed ? Material.GREEN_STAINED_GLASS_PANE : Material.RED_STAINED_GLASS_PANE);
|
||||||
stack.editMeta(meta -> meta.displayName(applyFormatting(Component.text("Next page (%s/%s)".formatted(skip, lastPage()+1)).color(color))));
|
stack.setData(DataComponentTypes.ITEM_NAME, CustomInventory.renderComponent(viewer, applyFormatting(translatable("smod.inventory.next", text(skip), text(lastPage()+1)).color(color))));
|
||||||
return stack;
|
return stack;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -356,8 +356,8 @@ public class SModMenu extends PageableCustomInventory {
|
|||||||
for (int i = 45; i < 54; i++) {
|
for (int i = 45; i < 54; i++) {
|
||||||
inventory.setItem(i, createEmptyStack());
|
inventory.setItem(i, createEmptyStack());
|
||||||
}
|
}
|
||||||
inventory.setItem(prevSlot, createPreviousPageStack());
|
inventory.setItem(prevSlot, createPreviousPageStack(player));
|
||||||
inventory.setItem(nextSlot, createNextPageStack());
|
inventory.setItem(nextSlot, createNextPageStack(player));
|
||||||
inventory.setItem(47, createSearchItem());
|
inventory.setItem(47, createSearchItem());
|
||||||
inventory.setItem(48, createTypeItem());
|
inventory.setItem(48, createTypeItem());
|
||||||
inventory.setItem(50, createFilterItem());
|
inventory.setItem(50, createFilterItem());
|
||||||
|
|||||||
@@ -0,0 +1,111 @@
|
|||||||
|
{
|
||||||
|
"smod.argument.duration.fail.invalid": "Ungültige Zeit '<arg:0>'",
|
||||||
|
"smod.argument.duration.fail.pattern": "Bitte gib eine gültige Zeit an, z.B. '1d6h30min'",
|
||||||
|
"smod.argument.offlinePlayer.fail.notCached": "Dieser Spieler ist nicht gespeichert.",
|
||||||
|
"smod.argument.uuid.fail.notCached": "Dieser Spieler ist nicht gespeichert. Versuche, stattdessen seine UUID anzugeben.",
|
||||||
|
"smod.chatInput.remainingTime": "<gray><arg:0> Sekunden",
|
||||||
|
"smod.command.ban.fail.forceReason": "Bitte gib einen Grund an.",
|
||||||
|
"smod.command.ban.fail.protect": "Dieser Spieler kann nicht gebannt werden.",
|
||||||
|
"smod.command.ban.fail.self": "Du kannst dich nicht selbst bannen.",
|
||||||
|
"smod.command.ban.fail.tooShort": "Du kannst Spieler, die nicht online sind, nicht so kurz bannen.",
|
||||||
|
"smod.command.ecsee.opening": "<primary>Enderkiste von <secondary><arg:0></secondary> wird geöffnet.",
|
||||||
|
"smod.command.fail.invalidPlayer": "Bitte gib einen gültigen Spieler an.",
|
||||||
|
"smod.command.fail.players": "Nur Spieler können diesen Befehl ausführen.",
|
||||||
|
"smod.command.fail.playersConsole": "Nur Spieler und die Konsole können diesen Befehl ausführen.",
|
||||||
|
"smod.command.invsee.fail.self": "Du kannst dein eigenes Inventar nicht öffnen.",
|
||||||
|
"smod.command.invsee.opening": "<primary>Inventar von <secondary><arg:0></secondary> wird geöffnet.",
|
||||||
|
"smod.command.kick.fail.forceReason": "Bitte gib einen Grund an.",
|
||||||
|
"smod.command.kick.fail.protect": "Dieser Spieler kann nicht gekickt werden.",
|
||||||
|
"smod.command.kick.fail.self": "Du kannst dich nicht selbst kicken.",
|
||||||
|
"smod.command.modlogs.ban": "<primary>- ist bis <secondary><arg:0></secondary> <gray>(in <arg:1>)</gray> gebannt. Grund: <secondary><arg:2>",
|
||||||
|
"smod.command.modlogs.heading": "<primary>Spieler <secondary><arg:0> <gray>(<arg:1>)",
|
||||||
|
"smod.command.modlogs.mute": "<primary>- ist bis <secondary><arg:0></secondary> <gray>(in <arg:1>)</gray> stummgeschaltet. Grund: <secondary><arg:2>",
|
||||||
|
"smod.command.modlogs.none": "<primary>- ist momentan nicht gebannt oder stummgeschaltet.",
|
||||||
|
"smod.command.mute.fail.forceReason": "Bitte gib einen Grund an.",
|
||||||
|
"smod.command.mute.fail.protect": "Dieser Spieler kann nicht stummgeschaltet werden.",
|
||||||
|
"smod.command.mute.fail.self": "Du kannst dich nicht selbst stummschalten.",
|
||||||
|
"smod.command.mute.fail.tooShort": "Du kannst Spieler nicht so kurz stummschalten.",
|
||||||
|
"smod.command.offlinetp.fail.unknown": "Die Position des Spielers ist nicht bekannt.",
|
||||||
|
"smod.command.offlinetp.teleporting": "<primary>Du wirst zu <secondary><arg:0></secondary> teleportiert.",
|
||||||
|
"smod.command.socialspy.disabled": "<primary>SocialSpy <red>deaktiviert</red>.",
|
||||||
|
"smod.command.socialspy.enabled": "<primary>SocialSpy <green>aktiviert</green>.",
|
||||||
|
"smod.command.unban.fail.notBanned": "Dieser Spieler ist nicht gebannt.",
|
||||||
|
"smod.command.unmute.fail.notMuted": "Dieser Spieler ist nicht stummgeschaltet.",
|
||||||
|
"smod.command.vanish.broadcast.off": "<primary><secondary><arg:0></secondary> ist wieder erschienen.",
|
||||||
|
"smod.command.vanish.broadcast.on": "<primary><secondary><arg:0></secondary> ist verschwunden.",
|
||||||
|
"smod.command.vanish.fail.noPlayersFound": "Kein Spieler wurde gefunden.",
|
||||||
|
"smod.command.vanish.list": "<primary>Diese Spieler sind momentan versteckt: <arg:0>",
|
||||||
|
"smod.command.vanish.list.none": "<primary>Keine Spieler sind gerade versteckt.",
|
||||||
|
"smod.command.vanish.stillEnabled": "<bold><primary>Du bist noch unsichtbar!",
|
||||||
|
"smod.command.vanish.toggle.off": "<primary>Du bist nicht mehr versteckt.",
|
||||||
|
"smod.command.vanish.toggle.on": "<primary>Du bist jetzt unsichtbar.",
|
||||||
|
"smod.confirm.no": "<red>Nein",
|
||||||
|
"smod.confirm.yes": "<green>Ja",
|
||||||
|
"smod.menu": "SMod Menü",
|
||||||
|
"smod.menu.filter": "Filter: <arg:0>",
|
||||||
|
"smod.menu.filter.active": "Aktive Strafen",
|
||||||
|
"smod.menu.filter.all": "Alle Strafen",
|
||||||
|
"smod.menu.filter.expired": "Abgelaufene Strafen",
|
||||||
|
"smod.menu.filter.switch": "\u00BB Klicke, um den Filter zu ändern",
|
||||||
|
"smod.menu.info.click": "\u00BB Klicke, um die Strafe aufzuheben",
|
||||||
|
"smod.menu.info.duration": "<secondary>Dauer: <primary><arg:0>",
|
||||||
|
"smod.menu.info.expiry.future": "<secondary>Läuft ab: <primary>In <arg:0>",
|
||||||
|
"smod.menu.info.expiry.past": "<secondary>Ist abgelaufen: <primary><arg:0> ago",
|
||||||
|
"smod.menu.info.player": "<secondary>Spieler: <primary><arg:0>",
|
||||||
|
"smod.menu.info.punishedBy": "<secondary>Bestraft von: <primary><arg:0>",
|
||||||
|
"smod.menu.info.reason": "<secondary>Grund: <primary><arg:0>",
|
||||||
|
"smod.menu.info.timestamp": "<secondary>Zeitpunkt: <primary><arg:0>",
|
||||||
|
"smod.menu.info.undone": "<red>Aufgehoben von: <gold><arg:0>",
|
||||||
|
"smod.menu.search": "Suchen",
|
||||||
|
"smod.menu.search.current": "Aktueller Suchbegriff: <arg:0>",
|
||||||
|
"smod.menu.search.new": "\u00BB Klicke, um einen neuen Suchbegriff einzugeben",
|
||||||
|
"smod.menu.search.none": "Keiner",
|
||||||
|
"smod.menu.search.query": "Gib deinen Suchbegriff in den Chat ein",
|
||||||
|
"smod.menu.search.remove": "\u00BB Rechtsklick, um die Suche aufzuheben",
|
||||||
|
"smod.menu.sort": "Sortieren nach: <arg:0>",
|
||||||
|
"smod.menu.sort.expiry": "Ablaufzeitpunkt",
|
||||||
|
"smod.menu.sort.moderatorName": "Moderatorname",
|
||||||
|
"smod.menu.sort.playerName": "Spielername",
|
||||||
|
"smod.menu.sort.switch": "\u00BB Klicke, um die Sortierung zu ändern",
|
||||||
|
"smod.menu.sort.time": "Ausstellungszeitpunkt",
|
||||||
|
"smod.menu.type": "Typ: <arg:0>",
|
||||||
|
"smod.menu.type.all": "Alle",
|
||||||
|
"smod.menu.type.switch": "\u00BB Klicke, um den Typ zu ändern",
|
||||||
|
"smod.menu.undoConfirmation": "Bist du sicher, dass du die Strafe aufheben willst?",
|
||||||
|
"smod.punishment.broadcast.ban": "<primary><secondary><arg:0></secondary> wurde von <secondary><arg:1></secondary> für <secondary><arg:2></secondary> gebannt.<newline>Grund: <secondary><arg:3>",
|
||||||
|
"smod.punishment.broadcast.kick": "<primary><secondary><arg:0></secondary> wurde von <secondary><arg:1></secondary> gekickt.<newline>Grund: <secondary><arg:3>",
|
||||||
|
"smod.punishment.broadcast.mute": "<primary><secondary><arg:0></secondary> wurde von <secondary><arg:1></secondary> für <secondary><arg:2></secondary> stummgeschaltet.<newline>Grund: <secondary><arg:3>",
|
||||||
|
"smod.punishment.name.ban": "Bann",
|
||||||
|
"smod.punishment.name.kick": "Kick",
|
||||||
|
"smod.punishment.name.mute": "Stummschaltung",
|
||||||
|
"smod.punishment.playerMessage.ban": "<primary>Du wurdest von <secondary><arg:0></secondary> vom Server gebannt.<newline>Grund: <secondary><arg:1></secondary><newline>Dein Bann läuft in <secondary><arg:2></secondary> ab.",
|
||||||
|
"smod.punishment.playerMessage.kick": "<primary>Du wurdest von <secondary><arg:0></secondary> vom Server gekickt.<newline>Grund: <secondary><arg:1>",
|
||||||
|
"smod.punishment.playerMessage.mute": "<primary>Du wurdest von <secondary><arg:0></secondary> stummgeschaltet.<newline>Grund: <secondary><arg:1></secondary><newline>Du kannst in <secondary><arg:2></secondary> wieder schreiben.",
|
||||||
|
"smod.punishment.playerMessage.mute.chat": "<primary>Du kannst diesen Befehl nicht ausführen, während du stummgeschaltet bist.",
|
||||||
|
"smod.punishment.undo.ban": "<primary><secondary><arg:0></secondary> wurde von <secondary><arg:1></secondary> entbannt.",
|
||||||
|
"smod.punishment.undo.mute": "<primary><secondary><arg:0></secondary>s Stummschaltung wurde von <secondary><arg:1></secondary> aufgehoben.",
|
||||||
|
"smod.socialspy.command": "<primary>[<secondary>SocialSpy</secondary>] <arg:0>: <secondary><arg:1>",
|
||||||
|
"smod.time.days": "<arg:0> Tage",
|
||||||
|
"smod.time.hours": "<arg:0> Stunden",
|
||||||
|
"smod.time.milliseconds": "<arg:0> Millisekunden",
|
||||||
|
"smod.time.minutes": "<arg:0> Minuten",
|
||||||
|
"smod.time.month.0": "Januar",
|
||||||
|
"smod.time.month.1": "Februar",
|
||||||
|
"smod.time.month.10": "November",
|
||||||
|
"smod.time.month.11": "Dezember",
|
||||||
|
"smod.time.month.2": "März",
|
||||||
|
"smod.time.month.3": "April",
|
||||||
|
"smod.time.month.4": "Mai",
|
||||||
|
"smod.time.month.5": "Juni",
|
||||||
|
"smod.time.month.6": "Juli",
|
||||||
|
"smod.time.month.7": "August",
|
||||||
|
"smod.time.month.8": "September",
|
||||||
|
"smod.time.month.9": "Oktober",
|
||||||
|
"smod.time.months": "<arg:0> Monate",
|
||||||
|
"smod.time.seconds": "<arg:0> Sekunden",
|
||||||
|
"smod.time.timestamp": "<arg:2>. <arg:1> <arg:0> <arg:3>:<arg:4>:<arg:5> <arg:6>",
|
||||||
|
"smod.time.weeks": "<arg:0> Wochen",
|
||||||
|
"smod.time.years": "<arg:0> Jahre",
|
||||||
|
"smod.inventory.next": "Nächste Seite (<arg:0>/<arg:1>)",
|
||||||
|
"smod.inventory.previous": "Vorherige Seite (<arg:0>/<arg:1>)"
|
||||||
|
}
|
||||||
@@ -41,6 +41,8 @@
|
|||||||
"smod.command.vanish.toggle.on": "<primary>You are now vanished.",
|
"smod.command.vanish.toggle.on": "<primary>You are now vanished.",
|
||||||
"smod.confirm.no": "<red>No",
|
"smod.confirm.no": "<red>No",
|
||||||
"smod.confirm.yes": "<green>Yes",
|
"smod.confirm.yes": "<green>Yes",
|
||||||
|
"smod.inventory.next": "Next page (<arg:0>/<arg:1>)",
|
||||||
|
"smod.inventory.previous": "Previous page (<arg:0>/<arg:1>)",
|
||||||
"smod.menu": "SMod Menu",
|
"smod.menu": "SMod Menu",
|
||||||
"smod.menu.filter": "Filter: <arg:0>",
|
"smod.menu.filter": "Filter: <arg:0>",
|
||||||
"smod.menu.filter.active": "Active punishments",
|
"smod.menu.filter.active": "Active punishments",
|
||||||
|
|||||||
Reference in New Issue
Block a user