refactor(i18n): optimize code

This commit is contained in:
ineanto 2023-11-24 22:10:52 +01:00
parent f74b6d2f81
commit 00e820735d
31 changed files with 111 additions and 184 deletions

View file

@ -1,13 +1,14 @@
package xyz.atnrch.nicko.gui; package xyz.atnrch.nicko.gui;
import org.bukkit.entity.Player;
import xyz.atnrch.nicko.gui.items.ItemDefaults;
import xyz.atnrch.nicko.gui.items.admin.ManageCacheItem; import xyz.atnrch.nicko.gui.items.admin.ManageCacheItem;
import xyz.atnrch.nicko.gui.items.admin.ManagePlayerItem; import xyz.atnrch.nicko.gui.items.admin.ManagePlayerItem;
import xyz.atnrch.nicko.gui.items.common.GoBackItem; import xyz.atnrch.nicko.gui.items.common.GoBackItem;
import org.bukkit.entity.Player;
import xyz.atnrch.nicko.gui.items.common.UnavailableItem;
import xyz.atnrch.nicko.i18n.I18N; import xyz.atnrch.nicko.i18n.I18N;
import xyz.atnrch.nicko.i18n.I18NDict; import xyz.atnrch.nicko.i18n.I18NDict;
import xyz.xenondevs.invui.gui.Gui; import xyz.xenondevs.invui.gui.Gui;
import xyz.xenondevs.invui.item.impl.SimpleItem;
import xyz.xenondevs.invui.window.Window; import xyz.xenondevs.invui.window.Window;
public class AdminGUI { public class AdminGUI {
@ -21,7 +22,6 @@ public class AdminGUI {
final HomeGUI parent = new HomeGUI(player); final HomeGUI parent = new HomeGUI(player);
final GoBackItem backItem = new GoBackItem(player); final GoBackItem backItem = new GoBackItem(player);
final UnavailableItem unavailableItem = new UnavailableItem(player);
final ManagePlayerItem managePlayerItem = new ManagePlayerItem(i18n, player); final ManagePlayerItem managePlayerItem = new ManagePlayerItem(i18n, player);
this.gui = Gui.normal() this.gui = Gui.normal()
@ -32,7 +32,7 @@ public class AdminGUI {
) )
.addIngredient('S', new ManageCacheItem(i18n)) .addIngredient('S', new ManageCacheItem(i18n))
.addIngredient('C', managePlayerItem.get()) .addIngredient('C', managePlayerItem.get())
.addIngredient('U', unavailableItem.get()) .addIngredient('U', new SimpleItem(ItemDefaults.getUnavailableItem(i18n)))
.addIngredient('B', backItem.get(parent.getGUI(), parent.getTitle())) .addIngredient('B', backItem.get(parent.getGUI(), parent.getTitle()))
.build(); .build();
this.player = player; this.player = player;

View file

@ -7,7 +7,6 @@ import xyz.atnrch.nicko.gui.items.common.choice.ChoiceCallback;
import xyz.atnrch.nicko.gui.items.common.choice.ConfirmItem; import xyz.atnrch.nicko.gui.items.common.choice.ConfirmItem;
import xyz.atnrch.nicko.i18n.I18N; import xyz.atnrch.nicko.i18n.I18N;
import xyz.atnrch.nicko.i18n.I18NDict; import xyz.atnrch.nicko.i18n.I18NDict;
import xyz.atnrch.nicko.i18n.ItemTranslation;
import xyz.xenondevs.invui.gui.Gui; import xyz.xenondevs.invui.gui.Gui;
import xyz.xenondevs.invui.item.builder.ItemBuilder; import xyz.xenondevs.invui.item.builder.ItemBuilder;
import xyz.xenondevs.invui.item.impl.SimpleItem; import xyz.xenondevs.invui.item.impl.SimpleItem;
@ -16,13 +15,14 @@ import xyz.xenondevs.invui.window.Window;
public class ChoiceGUI { public class ChoiceGUI {
private final Player player; private final Player player;
private final Gui gui; private final Gui gui;
private final String title;
public ChoiceGUI(Player player, ChoiceCallback callback) { public ChoiceGUI(Player player, ChoiceCallback callback) {
final I18N i18n = new I18N(player); final I18N i18n = new I18N(player);
final ConfirmItem confirmItem = new ConfirmItem(player, callback); final ConfirmItem confirmItem = new ConfirmItem(player, callback);
final CancelItem cancelItem = new CancelItem(player, callback); final CancelItem cancelItem = new CancelItem(player, callback);
final ItemTranslation chooseItemTranslation = i18n.translateItem(I18NDict.GUI.Choice.CHOOSE);
this.title = i18n.translatePrefixless(I18NDict.GUI.Titles.CONFIRM);
this.gui = Gui.normal() this.gui = Gui.normal()
.setStructure( .setStructure(
"@ @ @ @ % & & & &", "@ @ @ @ % & & & &",
@ -31,12 +31,12 @@ public class ChoiceGUI {
) )
.addIngredient('@', confirmItem.get()) .addIngredient('@', confirmItem.get())
.addIngredient('&', cancelItem.get()) .addIngredient('&', cancelItem.get())
.addIngredient('I', new SimpleItem(new ItemBuilder(Material.PAPER).setDisplayName(chooseItemTranslation.getName()).get())) .addIngredient('I', new SimpleItem(i18n.translateItem(new ItemBuilder(Material.PAPER), I18NDict.GUI.Choice.CHOOSE)))
.build(); .build();
this.player = player; this.player = player;
} }
public void open() { public void open() {
Window.single().setGui(gui).setTitle("... > Invalidate > Confirm").open(player); Window.single().setGui(gui).setTitle(title).open(player);
} }
} }

View file

@ -1,13 +1,14 @@
package xyz.atnrch.nicko.gui; package xyz.atnrch.nicko.gui;
import org.bukkit.entity.Player;
import xyz.atnrch.nicko.gui.items.ItemDefaults;
import xyz.atnrch.nicko.gui.items.common.GoBackItem; import xyz.atnrch.nicko.gui.items.common.GoBackItem;
import xyz.atnrch.nicko.gui.items.common.UnavailableItem;
import xyz.atnrch.nicko.gui.items.settings.BungeeCordCyclingItem; import xyz.atnrch.nicko.gui.items.settings.BungeeCordCyclingItem;
import xyz.atnrch.nicko.gui.items.settings.LanguageCyclingItem; import xyz.atnrch.nicko.gui.items.settings.LanguageCyclingItem;
import org.bukkit.entity.Player;
import xyz.atnrch.nicko.i18n.I18N; import xyz.atnrch.nicko.i18n.I18N;
import xyz.atnrch.nicko.i18n.I18NDict; import xyz.atnrch.nicko.i18n.I18NDict;
import xyz.xenondevs.invui.gui.Gui; import xyz.xenondevs.invui.gui.Gui;
import xyz.xenondevs.invui.item.impl.SimpleItem;
import xyz.xenondevs.invui.window.Window; import xyz.xenondevs.invui.window.Window;
public class SettingsGUI { public class SettingsGUI {
@ -29,7 +30,6 @@ public class SettingsGUI {
this.title = i18n.translatePrefixless(I18NDict.GUI.Titles.SETTINGS); this.title = i18n.translatePrefixless(I18NDict.GUI.Titles.SETTINGS);
final HomeGUI parent = new HomeGUI(player); final HomeGUI parent = new HomeGUI(player);
final UnavailableItem unavailableItem = new UnavailableItem(player);
final LanguageCyclingItem languageItem = new LanguageCyclingItem(player); final LanguageCyclingItem languageItem = new LanguageCyclingItem(player);
final BungeeCordCyclingItem bungeeCordItem = new BungeeCordCyclingItem(player); final BungeeCordCyclingItem bungeeCordItem = new BungeeCordCyclingItem(player);
final GoBackItem backItem = new GoBackItem(player); final GoBackItem backItem = new GoBackItem(player);
@ -38,7 +38,7 @@ public class SettingsGUI {
.setStructure(dynamicStructure) .setStructure(dynamicStructure)
.addIngredient('B', backItem.get(parent.getGUI(), parent.getTitle())) .addIngredient('B', backItem.get(parent.getGUI(), parent.getTitle()))
.addIngredient('L', languageItem.get()) .addIngredient('L', languageItem.get())
.addIngredient('U', unavailableItem.get()) .addIngredient('U', new SimpleItem(ItemDefaults.getUnavailableItem(i18n)))
.addIngredient('T', bungeeCordItem.get()) .addIngredient('T', bungeeCordItem.get())
.build(); .build();
this.player = player; this.player = player;

View file

@ -0,0 +1,22 @@
package xyz.atnrch.nicko.gui.items;
import org.bukkit.Material;
import xyz.atnrch.nicko.i18n.I18N;
import xyz.atnrch.nicko.i18n.I18NDict;
import xyz.xenondevs.invui.item.builder.AbstractItemBuilder;
import xyz.xenondevs.invui.item.builder.ItemBuilder;
import xyz.xenondevs.invui.item.builder.SkullBuilder;
public class ItemDefaults {
public static AbstractItemBuilder<?> getErrorSkullItem(I18N i18n, String key, Object... args) {
// "Missing Value" (Valve's signature missing texture) Texture Value
final SkullBuilder.HeadTexture headTexture = new SkullBuilder.HeadTexture("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNjNmZTU5YjJhMWQyYmYzMjcwNDA2OGVmYzg2MGM3NWY5MjEyYzIzMTBiNDNkMDdjNGJiYTRiNGViMjM0ZTY4NCJ9fX0=");
final SkullBuilder builder = new SkullBuilder(headTexture);
return i18n.translateItem(builder, key, args);
}
public static AbstractItemBuilder<?> getUnavailableItem(I18N i18n) {
final ItemBuilder builder = new ItemBuilder(Material.RED_TERRACOTTA);
return i18n.translateItem(builder, I18NDict.GUI.UNAVAILABLE);
}
}

View file

@ -7,9 +7,9 @@ import org.bukkit.event.inventory.InventoryClickEvent;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import xyz.atnrch.nicko.NickoBukkit; import xyz.atnrch.nicko.NickoBukkit;
import xyz.atnrch.nicko.gui.CacheManagementGUI; import xyz.atnrch.nicko.gui.CacheManagementGUI;
import xyz.atnrch.nicko.gui.items.ItemDefaults;
import xyz.atnrch.nicko.i18n.I18N; import xyz.atnrch.nicko.i18n.I18N;
import xyz.atnrch.nicko.i18n.I18NDict; import xyz.atnrch.nicko.i18n.I18NDict;
import xyz.atnrch.nicko.i18n.ItemTranslation;
import xyz.xenondevs.invui.item.builder.ItemBuilder; import xyz.xenondevs.invui.item.builder.ItemBuilder;
import xyz.xenondevs.invui.item.builder.SkullBuilder; import xyz.xenondevs.invui.item.builder.SkullBuilder;
import xyz.xenondevs.invui.item.impl.AsyncItem; import xyz.xenondevs.invui.item.impl.AsyncItem;
@ -22,25 +22,15 @@ public class ManageCacheItem extends AsyncItem {
public ManageCacheItem(I18N i18n) { public ManageCacheItem(I18N i18n) {
super(new SuppliedItem(() -> { super(new SuppliedItem(() -> {
final ItemBuilder builder = new ItemBuilder(Material.PAINTING); final ItemBuilder builder = new ItemBuilder(Material.PAINTING);
final ItemTranslation translation = i18n.translateItem(I18NDict.GUI.LOADING); return i18n.translateItem(builder, I18NDict.GUI.LOADING);
builder.setDisplayName(translation.getName());
translation.getLore().forEach(builder::addLoreLines);
return builder;
}, (click -> true)).getItemProvider(), }, (click -> true)).getItemProvider(),
() -> { () -> {
try { try {
final SkullBuilder builder = new SkullBuilder("Notch"); final SkullBuilder builder = new SkullBuilder("Notch");
final ItemTranslation translation = i18n.translateItem(I18NDict.GUI.Admin.MANAGE_CACHE); return i18n.translateItem(builder, I18NDict.GUI.Admin.MANAGE_CACHE);
builder.setDisplayName(translation.getName());
translation.getLore().forEach(builder::addLoreLines);
return builder;
} catch (MojangApiUtils.MojangApiException | IOException e) { } catch (MojangApiUtils.MojangApiException | IOException e) {
final ItemBuilder builder = new ItemBuilder(Material.TNT);
final ItemTranslation translation = i18n.translateItem(I18NDict.GUI.ERROR);
builder.setDisplayName(translation.getName());
translation.getLore().forEach(builder::addLoreLines);
NickoBukkit.getInstance().getLogger().warning("Unable to get Head texture for Notch! (GUI/ManageCache)"); NickoBukkit.getInstance().getLogger().warning("Unable to get Head texture for Notch! (GUI/ManageCache)");
return builder; return ItemDefaults.getErrorSkullItem(i18n, I18NDict.GUI.Admin.MANAGE_CACHE);
} }
}); });
} }

View file

@ -5,7 +5,6 @@ import org.bukkit.entity.Player;
import xyz.atnrch.nicko.gui.PlayerCheckGUI; import xyz.atnrch.nicko.gui.PlayerCheckGUI;
import xyz.atnrch.nicko.i18n.I18N; import xyz.atnrch.nicko.i18n.I18N;
import xyz.atnrch.nicko.i18n.I18NDict; import xyz.atnrch.nicko.i18n.I18NDict;
import xyz.atnrch.nicko.i18n.ItemTranslation;
import xyz.xenondevs.invui.item.builder.ItemBuilder; import xyz.xenondevs.invui.item.builder.ItemBuilder;
import xyz.xenondevs.invui.item.impl.SuppliedItem; import xyz.xenondevs.invui.item.impl.SuppliedItem;
@ -21,10 +20,7 @@ public class ManagePlayerItem {
public SuppliedItem get() { public SuppliedItem get() {
return new SuppliedItem(() -> { return new SuppliedItem(() -> {
final ItemBuilder builder = new ItemBuilder(Material.WRITABLE_BOOK); final ItemBuilder builder = new ItemBuilder(Material.WRITABLE_BOOK);
final ItemTranslation translation = i18n.translateItem(I18NDict.GUI.Admin.MANAGE_PLAYER); return i18n.translateItem(builder, I18NDict.GUI.Admin.MANAGE_PLAYER);
builder.setDisplayName(translation.getName());
translation.getLore().forEach(builder::addLoreLines);
return builder;
}, click -> { }, click -> {
new PlayerCheckGUI(player).open(); new PlayerCheckGUI(player).open();
return true; return true;

View file

@ -8,10 +8,10 @@ import org.jetbrains.annotations.NotNull;
import xyz.atnrch.nicko.NickoBukkit; import xyz.atnrch.nicko.NickoBukkit;
import xyz.atnrch.nicko.gui.ChoiceGUI; import xyz.atnrch.nicko.gui.ChoiceGUI;
import xyz.atnrch.nicko.gui.InvalidateSkinGUI; import xyz.atnrch.nicko.gui.InvalidateSkinGUI;
import xyz.atnrch.nicko.gui.items.ItemDefaults;
import xyz.atnrch.nicko.gui.items.common.choice.ChoiceCallback; import xyz.atnrch.nicko.gui.items.common.choice.ChoiceCallback;
import xyz.atnrch.nicko.i18n.I18N; import xyz.atnrch.nicko.i18n.I18N;
import xyz.atnrch.nicko.i18n.I18NDict; import xyz.atnrch.nicko.i18n.I18NDict;
import xyz.atnrch.nicko.i18n.ItemTranslation;
import xyz.atnrch.nicko.mojang.MojangAPI; import xyz.atnrch.nicko.mojang.MojangAPI;
import xyz.xenondevs.invui.item.builder.ItemBuilder; import xyz.xenondevs.invui.item.builder.ItemBuilder;
import xyz.xenondevs.invui.item.builder.SkullBuilder; import xyz.xenondevs.invui.item.builder.SkullBuilder;
@ -32,16 +32,10 @@ public class CacheEntryItem extends AsyncItem {
final UUID uuidObject = UUID.fromString(dashedUuid); final UUID uuidObject = UUID.fromString(dashedUuid);
try { try {
final SkullBuilder skull = new SkullBuilder(uuidObject); final SkullBuilder skull = new SkullBuilder(uuidObject);
skull.setDisplayName("§6" + NickoBukkit.getInstance().getMojangAPI().getUUIDName(uuid)); return i18n.translateItem(skull, I18NDict.GUI.Admin.Cache.ENTRY, NickoBukkit.getInstance().getMojangAPI().getUUIDName(uuid));
skull.addLoreLines("§7Click to invalidate skin");
return skull;
} catch (MojangApiUtils.MojangApiException | IOException e) { } catch (MojangApiUtils.MojangApiException | IOException e) {
final ItemBuilder builder = new ItemBuilder(Material.TNT); NickoBukkit.getInstance().getLogger().warning("Unable to get Head texture for specified UUID (" + uuid + ")! (GUI/Cache/Entry)");
final ItemTranslation translation = i18n.translateItem(I18NDict.GUI.ERROR); return ItemDefaults.getErrorSkullItem(i18n, I18NDict.GUI.Admin.Cache.ENTRY, NickoBukkit.getInstance().getMojangAPI().getUUIDName(uuid));
builder.setDisplayName(translation.getName());
translation.getLore().forEach(builder::addLoreLines);
NickoBukkit.getInstance().getLogger().warning("Unable to get Head texture for Notch! (GUI/ManageCache)");
return builder;
} }
}); });
this.uuid = uuid; this.uuid = uuid;

View file

@ -2,13 +2,12 @@ package xyz.atnrch.nicko.gui.items.admin.cache;
import com.google.common.cache.CacheStats; import com.google.common.cache.CacheStats;
import com.google.common.cache.LoadingCache; import com.google.common.cache.LoadingCache;
import org.bukkit.Material;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import xyz.atnrch.nicko.NickoBukkit; import xyz.atnrch.nicko.NickoBukkit;
import xyz.atnrch.nicko.i18n.I18N; import xyz.atnrch.nicko.i18n.I18N;
import xyz.atnrch.nicko.i18n.I18NDict; import xyz.atnrch.nicko.i18n.I18NDict;
import xyz.atnrch.nicko.i18n.ItemTranslation;
import xyz.atnrch.nicko.mojang.MojangSkin; import xyz.atnrch.nicko.mojang.MojangSkin;
import org.bukkit.Material;
import xyz.xenondevs.invui.item.builder.ItemBuilder; import xyz.xenondevs.invui.item.builder.ItemBuilder;
import xyz.xenondevs.invui.item.impl.SuppliedItem; import xyz.xenondevs.invui.item.impl.SuppliedItem;
@ -27,14 +26,10 @@ public class CacheStatisticsItem {
final LoadingCache<String, Optional<MojangSkin>> cache = NickoBukkit.getInstance().getMojangAPI().getSkinCache(); final LoadingCache<String, Optional<MojangSkin>> cache = NickoBukkit.getInstance().getMojangAPI().getSkinCache();
final CacheStats stats = cache.stats(); final CacheStats stats = cache.stats();
final ItemTranslation translation = i18n.translateItem(I18NDict.GUI.Admin.Cache.STATISTICS, return i18n.translateItem(builder, I18NDict.GUI.Admin.Cache.STATISTICS,
stats.requestCount(), stats.requestCount(),
Math.round(cache.size()) Math.round(cache.size())
); );
// TODO (Ineanto, 9/11/23): This doesn't work.
builder.setDisplayName(translation.getName());
translation.getLore().forEach(builder::addLoreLines);
return builder;
}, (event) -> true); }, (event) -> true);
} }
} }

View file

@ -1,12 +1,11 @@
package xyz.atnrch.nicko.gui.items.admin.cache; package xyz.atnrch.nicko.gui.items.admin.cache;
import xyz.atnrch.nicko.NickoBukkit;
import xyz.atnrch.nicko.i18n.I18N;
import xyz.atnrch.nicko.i18n.I18NDict;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.event.inventory.ClickType; import org.bukkit.event.inventory.ClickType;
import xyz.atnrch.nicko.i18n.ItemTranslation; import xyz.atnrch.nicko.NickoBukkit;
import xyz.atnrch.nicko.i18n.I18N;
import xyz.atnrch.nicko.i18n.I18NDict;
import xyz.xenondevs.invui.item.builder.ItemBuilder; import xyz.xenondevs.invui.item.builder.ItemBuilder;
import xyz.xenondevs.invui.item.impl.SuppliedItem; import xyz.xenondevs.invui.item.impl.SuppliedItem;
@ -20,10 +19,7 @@ public class InvalidateCacheItem {
public SuppliedItem get() { public SuppliedItem get() {
return new SuppliedItem(() -> { return new SuppliedItem(() -> {
final ItemBuilder builder = new ItemBuilder(Material.TNT); final ItemBuilder builder = new ItemBuilder(Material.TNT);
final ItemTranslation translation = i18n.translateItem(I18NDict.GUI.Admin.Cache.INVALIDATE_CACHE); return i18n.translateItem(builder, I18NDict.GUI.Admin.Cache.INVALIDATE_CACHE);
builder.setDisplayName(translation.getName());
translation.getLore().forEach(builder::addLoreLines);
return builder;
}, (click) -> { }, (click) -> {
final ClickType clickType = click.getClickType(); final ClickType clickType = click.getClickType();
if (clickType.isLeftClick() || clickType.isRightClick()) { if (clickType.isLeftClick() || clickType.isRightClick()) {

View file

@ -6,7 +6,6 @@ import org.bukkit.event.inventory.ClickType;
import xyz.atnrch.nicko.gui.InvalidateSkinGUI; import xyz.atnrch.nicko.gui.InvalidateSkinGUI;
import xyz.atnrch.nicko.i18n.I18N; import xyz.atnrch.nicko.i18n.I18N;
import xyz.atnrch.nicko.i18n.I18NDict; import xyz.atnrch.nicko.i18n.I18NDict;
import xyz.atnrch.nicko.i18n.ItemTranslation;
import xyz.xenondevs.invui.item.builder.ItemBuilder; import xyz.xenondevs.invui.item.builder.ItemBuilder;
import xyz.xenondevs.invui.item.impl.SuppliedItem; import xyz.xenondevs.invui.item.impl.SuppliedItem;
@ -20,10 +19,7 @@ public class InvalidateSkinItem {
public SuppliedItem get() { public SuppliedItem get() {
return new SuppliedItem(() -> { return new SuppliedItem(() -> {
final ItemBuilder builder = new ItemBuilder(Material.PAPER); final ItemBuilder builder = new ItemBuilder(Material.PAPER);
final ItemTranslation translation = i18n.translateItem(I18NDict.GUI.Admin.Cache.INVALIDATE_SKIN); return i18n.translateItem(builder, I18NDict.GUI.Admin.Cache.INVALIDATE_SKIN);
builder.setDisplayName(translation.getName());
translation.getLore().forEach(builder::addLoreLines);
return builder;
}, (click) -> { }, (click) -> {
final ClickType clickType = click.getClickType(); final ClickType clickType = click.getClickType();
if (clickType.isLeftClick() || clickType.isRightClick()) { if (clickType.isLeftClick() || clickType.isRightClick()) {

View file

@ -4,9 +4,9 @@ import org.bukkit.Bukkit;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import xyz.atnrch.nicko.NickoBukkit; import xyz.atnrch.nicko.NickoBukkit;
import xyz.atnrch.nicko.gui.items.ItemDefaults;
import xyz.atnrch.nicko.i18n.I18N; import xyz.atnrch.nicko.i18n.I18N;
import xyz.atnrch.nicko.i18n.I18NDict; import xyz.atnrch.nicko.i18n.I18NDict;
import xyz.atnrch.nicko.i18n.ItemTranslation;
import xyz.atnrch.nicko.profile.NickoProfile; import xyz.atnrch.nicko.profile.NickoProfile;
import xyz.atnrch.nicko.storage.PlayerDataStore; import xyz.atnrch.nicko.storage.PlayerDataStore;
import xyz.xenondevs.invui.item.builder.ItemBuilder; import xyz.xenondevs.invui.item.builder.ItemBuilder;
@ -23,10 +23,7 @@ public class PlayerInformationItem extends AsyncItem {
public PlayerInformationItem(I18N i18n, UUID uuid) { public PlayerInformationItem(I18N i18n, UUID uuid) {
super(new SuppliedItem(() -> { super(new SuppliedItem(() -> {
final ItemBuilder builder = new ItemBuilder(Material.PAINTING); final ItemBuilder builder = new ItemBuilder(Material.PAINTING);
final ItemTranslation translation = i18n.translateItem(I18NDict.GUI.LOADING); return i18n.translateItem(builder, I18NDict.GUI.LOADING);
builder.setDisplayName(translation.getName());
translation.getLore().forEach(builder::addLoreLines);
return builder;
}, (click -> true)).getItemProvider(), () -> { }, (click -> true)).getItemProvider(), () -> {
final Player player = Bukkit.getPlayer(uuid); final Player player = Bukkit.getPlayer(uuid);
try { try {
@ -36,32 +33,19 @@ public class PlayerInformationItem extends AsyncItem {
if (optionalProfile.isPresent()) { if (optionalProfile.isPresent()) {
final NickoProfile profile = optionalProfile.get(); final NickoProfile profile = optionalProfile.get();
final ItemTranslation translation = i18n.translateItem(I18NDict.GUI.Admin.CHECK, return i18n.translateItem(skull, I18NDict.GUI.Admin.CHECK,
player.getName(), player.getName(),
(profile.hasData() ? "§a✔" : "§c❌"), (profile.hasData() ? "§a✔" : "§c❌"),
(profile.getName() == null ? "§cN/A" : profile.getName()), (profile.getName() == null ? "§7N/A" : profile.getName()),
(profile.getSkin() == null ? "§cN/A" : profile.getSkin())); (profile.getSkin() == null ? "§7N/A" : profile.getSkin()));
skull.setDisplayName("§6" + translation.getName());
translation.getLore().forEach(skull::addLoreLines);
} else {
// Default item name in case the profile is not found
skull.setDisplayName("§6§lYou should not see this!");
skull.addLoreLines(
"§cPlease file a bug report",
"§cat https://ineanto.xyz/git/ineanto/nicko!"
);
} }
return skull;
} catch (MojangApiUtils.MojangApiException | IOException e) { } catch (MojangApiUtils.MojangApiException | IOException e) {
NickoBukkit.getInstance().getLogger().severe("Unable to get head for specified UUID ( " + uuid + ")! (GUI/PlayerCheck)"); NickoBukkit.getInstance().getLogger().severe("Unable to get head for specified UUID ( " + uuid + ")! (GUI/PlayerCheck)");
} }
final ItemBuilder builder = new ItemBuilder(Material.TNT); return ItemDefaults.getErrorSkullItem(i18n, I18NDict.GUI.Admin.CHECK,
final ItemTranslation translation = i18n.translateItem(I18NDict.GUI.ERROR); "§4???", "§cN/A", "§cN/A", "§cN/A"
builder.setDisplayName(translation.getName()); );
translation.getLore().forEach(builder::addLoreLines);
return builder;
}); });
} }
} }

View file

@ -1,12 +1,11 @@
package xyz.atnrch.nicko.gui.items.appearance; package xyz.atnrch.nicko.gui.items.appearance;
import org.bukkit.entity.Player;
import xyz.atnrch.nicko.anvil.AnvilManager;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.ClickType; import org.bukkit.event.inventory.ClickType;
import xyz.atnrch.nicko.anvil.AnvilManager;
import xyz.atnrch.nicko.i18n.I18N; import xyz.atnrch.nicko.i18n.I18N;
import xyz.atnrch.nicko.i18n.I18NDict; import xyz.atnrch.nicko.i18n.I18NDict;
import xyz.atnrch.nicko.i18n.ItemTranslation;
import xyz.xenondevs.invui.item.builder.ItemBuilder; import xyz.xenondevs.invui.item.builder.ItemBuilder;
import xyz.xenondevs.invui.item.impl.SuppliedItem; import xyz.xenondevs.invui.item.impl.SuppliedItem;
@ -20,10 +19,7 @@ public class ChangeBothItem {
public SuppliedItem get() { public SuppliedItem get() {
return new SuppliedItem(() -> { return new SuppliedItem(() -> {
final ItemBuilder builder = new ItemBuilder(Material.TOTEM_OF_UNDYING); final ItemBuilder builder = new ItemBuilder(Material.TOTEM_OF_UNDYING);
final ItemTranslation translation = i18n.translateItem(I18NDict.GUI.Home.CHANGE_BOTH); return i18n.translateItem(builder, I18NDict.GUI.Home.CHANGE_BOTH);
builder.setDisplayName(translation.getName());
translation.getLore().forEach(builder::addLoreLines);
return builder;
}, click -> { }, click -> {
final ClickType clickType = click.getClickType(); final ClickType clickType = click.getClickType();
if (clickType.isLeftClick() || clickType.isRightClick()) { if (clickType.isLeftClick() || clickType.isRightClick()) {

View file

@ -1,12 +1,11 @@
package xyz.atnrch.nicko.gui.items.appearance; package xyz.atnrch.nicko.gui.items.appearance;
import org.bukkit.entity.Player;
import xyz.atnrch.nicko.anvil.AnvilManager;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.ClickType; import org.bukkit.event.inventory.ClickType;
import xyz.atnrch.nicko.anvil.AnvilManager;
import xyz.atnrch.nicko.i18n.I18N; import xyz.atnrch.nicko.i18n.I18N;
import xyz.atnrch.nicko.i18n.I18NDict; import xyz.atnrch.nicko.i18n.I18NDict;
import xyz.atnrch.nicko.i18n.ItemTranslation;
import xyz.xenondevs.invui.item.builder.ItemBuilder; import xyz.xenondevs.invui.item.builder.ItemBuilder;
import xyz.xenondevs.invui.item.impl.SuppliedItem; import xyz.xenondevs.invui.item.impl.SuppliedItem;
@ -20,10 +19,7 @@ public class ChangeNameItem {
public SuppliedItem get() { public SuppliedItem get() {
return new SuppliedItem(() -> { return new SuppliedItem(() -> {
final ItemBuilder builder = new ItemBuilder(Material.NAME_TAG); final ItemBuilder builder = new ItemBuilder(Material.NAME_TAG);
final ItemTranslation translation = i18n.translateItem(I18NDict.GUI.Home.CHANGE_NAME); return i18n.translateItem(builder, I18NDict.GUI.Home.CHANGE_NAME);
builder.setDisplayName(translation.getName());
translation.getLore().forEach(builder::addLoreLines);
return builder;
}, click -> { }, click -> {
final ClickType clickType = click.getClickType(); final ClickType clickType = click.getClickType();
if (clickType.isLeftClick() || clickType.isRightClick()) { if (clickType.isLeftClick() || clickType.isRightClick()) {

View file

@ -1,14 +1,12 @@
package xyz.atnrch.nicko.gui.items.appearance; package xyz.atnrch.nicko.gui.items.appearance;
import org.bukkit.Material;
import xyz.atnrch.nicko.NickoBukkit;
import xyz.atnrch.nicko.anvil.AnvilManager;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.event.inventory.ClickType; import org.bukkit.event.inventory.ClickType;
import xyz.atnrch.nicko.NickoBukkit;
import xyz.atnrch.nicko.anvil.AnvilManager;
import xyz.atnrch.nicko.gui.items.ItemDefaults;
import xyz.atnrch.nicko.i18n.I18N; import xyz.atnrch.nicko.i18n.I18N;
import xyz.atnrch.nicko.i18n.I18NDict; import xyz.atnrch.nicko.i18n.I18NDict;
import xyz.atnrch.nicko.i18n.ItemTranslation;
import xyz.xenondevs.invui.item.builder.ItemBuilder;
import xyz.xenondevs.invui.item.builder.SkullBuilder; import xyz.xenondevs.invui.item.builder.SkullBuilder;
import xyz.xenondevs.invui.item.impl.SuppliedItem; import xyz.xenondevs.invui.item.impl.SuppliedItem;
import xyz.xenondevs.invui.util.MojangApiUtils; import xyz.xenondevs.invui.util.MojangApiUtils;
@ -28,17 +26,10 @@ public class ChangeSkinItem {
return new SuppliedItem(() -> { return new SuppliedItem(() -> {
try { try {
final SkullBuilder builder = new SkullBuilder(player.getName()); final SkullBuilder builder = new SkullBuilder(player.getName());
final ItemTranslation translation = i18n.translateItem(I18NDict.GUI.Home.CHANGE_SKIN); return i18n.translateItem(builder, I18NDict.GUI.Home.CHANGE_SKIN);
builder.setDisplayName(translation.getName());
translation.getLore().forEach(builder::addLoreLines);
return builder;
} catch (MojangApiUtils.MojangApiException | IOException e) { } catch (MojangApiUtils.MojangApiException | IOException e) {
final ItemBuilder builder = new ItemBuilder(Material.TNT);
final ItemTranslation translation = i18n.translateItem(I18NDict.GUI.ERROR);
builder.setDisplayName(translation.getName());
translation.getLore().forEach(builder::addLoreLines);
NickoBukkit.getInstance().getLogger().warning("Unable to get Head texture for specified player (" + player.getName() + ")! (GUI/Home)"); NickoBukkit.getInstance().getLogger().warning("Unable to get Head texture for specified player (" + player.getName() + ")! (GUI/Home)");
return builder; return ItemDefaults.getErrorSkullItem(i18n, I18NDict.GUI.Home.CHANGE_SKIN);
} }
}, click -> { }, click -> {
final ClickType clickType = click.getClickType(); final ClickType clickType = click.getClickType();

View file

@ -4,7 +4,6 @@ import org.bukkit.Material;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import xyz.atnrch.nicko.i18n.I18N; import xyz.atnrch.nicko.i18n.I18N;
import xyz.atnrch.nicko.i18n.I18NDict; import xyz.atnrch.nicko.i18n.I18NDict;
import xyz.atnrch.nicko.i18n.ItemTranslation;
import xyz.xenondevs.invui.gui.Gui; import xyz.xenondevs.invui.gui.Gui;
import xyz.xenondevs.invui.item.builder.ItemBuilder; import xyz.xenondevs.invui.item.builder.ItemBuilder;
import xyz.xenondevs.invui.item.impl.SuppliedItem; import xyz.xenondevs.invui.item.impl.SuppliedItem;
@ -20,9 +19,7 @@ public class GoBackItem {
public SuppliedItem get(Gui gui, String parentTitle) { public SuppliedItem get(Gui gui, String parentTitle) {
return new SuppliedItem(() -> { return new SuppliedItem(() -> {
final ItemBuilder builder = new ItemBuilder(Material.ARROW); final ItemBuilder builder = new ItemBuilder(Material.ARROW);
final ItemTranslation translation = i18n.translateItem(I18NDict.GUI.GO_BACK); return i18n.translateItem(builder, I18NDict.GUI.GO_BACK);
builder.setDisplayName(translation.getName());
return builder;
}, click -> { }, click -> {
click.getEvent().getView().close(); click.getEvent().getView().close();
Window.single().setGui(gui).setTitle(parentTitle).open(click.getPlayer()); Window.single().setGui(gui).setTitle(parentTitle).open(click.getPlayer());

View file

@ -19,8 +19,8 @@ public class ScrollDownItem extends ScrollItem {
@Override @Override
public ItemProvider getItemProvider(ScrollGui gui) { public ItemProvider getItemProvider(ScrollGui gui) {
ItemBuilder builder = new ItemBuilder(Material.GREEN_STAINED_GLASS_PANE); final ItemBuilder builder = new ItemBuilder(Material.GREEN_STAINED_GLASS_PANE);
final ItemTranslation translation = i18n.translateItem(I18NDict.GUI.SCROLL_DOWN); final ItemTranslation translation = i18n.fetchTranslation(I18NDict.GUI.SCROLL_DOWN);
builder.setDisplayName(translation.getName()); builder.setDisplayName(translation.getName());
if (!gui.canScroll(1)) translation.getLore().forEach(builder::addLoreLines); if (!gui.canScroll(1)) translation.getLore().forEach(builder::addLoreLines);
return builder; return builder;

View file

@ -20,7 +20,7 @@ public class ScrollUpItem extends ScrollItem {
@Override @Override
public ItemProvider getItemProvider(ScrollGui gui) { public ItemProvider getItemProvider(ScrollGui gui) {
final ItemBuilder builder = new ItemBuilder(Material.RED_STAINED_GLASS_PANE); final ItemBuilder builder = new ItemBuilder(Material.RED_STAINED_GLASS_PANE);
final ItemTranslation translation = i18n.translateItem(I18NDict.GUI.SCROLL_UP); final ItemTranslation translation = i18n.fetchTranslation(I18NDict.GUI.SCROLL_UP);
builder.setDisplayName(translation.getName()); builder.setDisplayName(translation.getName());
if (!gui.canScroll(-1)) translation.getLore().forEach(builder::addLoreLines); if (!gui.canScroll(-1)) translation.getLore().forEach(builder::addLoreLines);
return builder; return builder;

View file

@ -1,27 +0,0 @@
package xyz.atnrch.nicko.gui.items.common;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import xyz.atnrch.nicko.i18n.I18N;
import xyz.atnrch.nicko.i18n.I18NDict;
import xyz.atnrch.nicko.i18n.ItemTranslation;
import xyz.xenondevs.invui.item.builder.ItemBuilder;
import xyz.xenondevs.invui.item.impl.SuppliedItem;
public class UnavailableItem {
private final I18N i18n;
public UnavailableItem(Player player) {
this.i18n = new I18N(player);
}
public SuppliedItem get() {
return new SuppliedItem(() -> {
final ItemBuilder builder = new ItemBuilder(Material.RED_TERRACOTTA);
final ItemTranslation translation = i18n.translateItem(I18NDict.GUI.UNAVAILABLE);
builder.setDisplayName(translation.getName());
translation.getLore().forEach(builder::addLoreLines);
return builder;
}, click -> true);
}
}

View file

@ -4,7 +4,6 @@ import org.bukkit.Material;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import xyz.atnrch.nicko.i18n.I18N; import xyz.atnrch.nicko.i18n.I18N;
import xyz.atnrch.nicko.i18n.I18NDict; import xyz.atnrch.nicko.i18n.I18NDict;
import xyz.atnrch.nicko.i18n.ItemTranslation;
import xyz.xenondevs.invui.item.builder.ItemBuilder; import xyz.xenondevs.invui.item.builder.ItemBuilder;
import xyz.xenondevs.invui.item.impl.SuppliedItem; import xyz.xenondevs.invui.item.impl.SuppliedItem;
@ -20,9 +19,7 @@ public class CancelItem {
public SuppliedItem get() { public SuppliedItem get() {
return new SuppliedItem(() -> { return new SuppliedItem(() -> {
final ItemBuilder builder = new ItemBuilder(Material.RED_STAINED_GLASS_PANE); final ItemBuilder builder = new ItemBuilder(Material.RED_STAINED_GLASS_PANE);
final ItemTranslation translation = i18n.translateItem(I18NDict.GUI.Choice.CANCEL); return i18n.translateItem(builder, I18NDict.GUI.Choice.CANCEL);
builder.setDisplayName(translation.getName());
return builder;
}, click -> { }, click -> {
click.getEvent().getView().close(); click.getEvent().getView().close();
callback.onCancel(); callback.onCancel();

View file

@ -4,7 +4,6 @@ import org.bukkit.Material;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import xyz.atnrch.nicko.i18n.I18N; import xyz.atnrch.nicko.i18n.I18N;
import xyz.atnrch.nicko.i18n.I18NDict; import xyz.atnrch.nicko.i18n.I18NDict;
import xyz.atnrch.nicko.i18n.ItemTranslation;
import xyz.xenondevs.invui.item.builder.ItemBuilder; import xyz.xenondevs.invui.item.builder.ItemBuilder;
import xyz.xenondevs.invui.item.impl.SuppliedItem; import xyz.xenondevs.invui.item.impl.SuppliedItem;
@ -20,9 +19,7 @@ public class ConfirmItem {
public SuppliedItem get() { public SuppliedItem get() {
return new SuppliedItem(() -> { return new SuppliedItem(() -> {
final ItemBuilder builder = new ItemBuilder(Material.GREEN_STAINED_GLASS_PANE); final ItemBuilder builder = new ItemBuilder(Material.GREEN_STAINED_GLASS_PANE);
final ItemTranslation translation = i18n.translateItem(I18NDict.GUI.Choice.CONFIRM); return i18n.translateItem(builder, I18NDict.GUI.Choice.CONFIRM);
builder.setDisplayName(translation.getName());
return builder;
}, click -> { }, click -> {
click.getEvent().getView().close(); click.getEvent().getView().close();
callback.onConfirm(); callback.onConfirm();

View file

@ -6,7 +6,6 @@ import org.bukkit.event.inventory.ClickType;
import xyz.atnrch.nicko.gui.AdminGUI; import xyz.atnrch.nicko.gui.AdminGUI;
import xyz.atnrch.nicko.i18n.I18N; import xyz.atnrch.nicko.i18n.I18N;
import xyz.atnrch.nicko.i18n.I18NDict; import xyz.atnrch.nicko.i18n.I18NDict;
import xyz.atnrch.nicko.i18n.ItemTranslation;
import xyz.xenondevs.invui.item.builder.ItemBuilder; import xyz.xenondevs.invui.item.builder.ItemBuilder;
import xyz.xenondevs.invui.item.impl.SuppliedItem; import xyz.xenondevs.invui.item.impl.SuppliedItem;
@ -20,10 +19,7 @@ public class AdminAccessItem {
public SuppliedItem get() { public SuppliedItem get() {
return new SuppliedItem(() -> { return new SuppliedItem(() -> {
final ItemBuilder builder = new ItemBuilder(Material.COMMAND_BLOCK_MINECART); final ItemBuilder builder = new ItemBuilder(Material.COMMAND_BLOCK_MINECART);
final ItemTranslation translation = i18n.translateItem(I18NDict.GUI.Home.ADMIN); return i18n.translateItem(builder, I18NDict.GUI.Home.ADMIN);
builder.setDisplayName(translation.getName());
translation.getLore().forEach(builder::addLoreLines);
return builder;
}, click -> { }, click -> {
final ClickType clickType = click.getClickType(); final ClickType clickType = click.getClickType();
if (clickType.isLeftClick() || clickType.isRightClick()) { if (clickType.isLeftClick() || clickType.isRightClick()) {

View file

@ -19,9 +19,7 @@ public class ExitItem {
public SuppliedItem get() { public SuppliedItem get() {
return new SuppliedItem(() -> { return new SuppliedItem(() -> {
final ItemBuilder builder = new ItemBuilder(Material.OAK_DOOR); final ItemBuilder builder = new ItemBuilder(Material.OAK_DOOR);
final ItemTranslation translation = i18n.translateItem(I18NDict.GUI.EXIT); return i18n.translateItem(builder, I18NDict.GUI.EXIT);
builder.setDisplayName(translation.getName());
return builder;
}, click -> { }, click -> {
click.getEvent().getView().close(); click.getEvent().getView().close();
final ClickType clickType = click.getClickType(); final ClickType clickType = click.getClickType();

View file

@ -6,7 +6,6 @@ import org.bukkit.event.inventory.ClickType;
import xyz.atnrch.nicko.appearance.AppearanceManager; import xyz.atnrch.nicko.appearance.AppearanceManager;
import xyz.atnrch.nicko.i18n.I18N; import xyz.atnrch.nicko.i18n.I18N;
import xyz.atnrch.nicko.i18n.I18NDict; import xyz.atnrch.nicko.i18n.I18NDict;
import xyz.atnrch.nicko.i18n.ItemTranslation;
import xyz.atnrch.nicko.profile.NickoProfile; import xyz.atnrch.nicko.profile.NickoProfile;
import xyz.xenondevs.invui.item.builder.ItemBuilder; import xyz.xenondevs.invui.item.builder.ItemBuilder;
import xyz.xenondevs.invui.item.impl.SuppliedItem; import xyz.xenondevs.invui.item.impl.SuppliedItem;
@ -23,10 +22,7 @@ public class ResetItem {
public SuppliedItem get() { public SuppliedItem get() {
return new SuppliedItem(() -> { return new SuppliedItem(() -> {
final ItemBuilder builder = new ItemBuilder(Material.TNT); final ItemBuilder builder = new ItemBuilder(Material.TNT);
final ItemTranslation translation = i18n.translateItem(I18NDict.GUI.Home.RESET); return i18n.translateItem(builder, I18NDict.GUI.Home.RESET);
builder.setDisplayName(translation.getName());
translation.getLore().forEach(builder::addLoreLines);
return builder;
}, (event) -> { }, (event) -> {
final Player player = event.getPlayer(); final Player player = event.getPlayer();
final ClickType clickType = event.getClickType(); final ClickType clickType = event.getClickType();

View file

@ -1,12 +1,11 @@
package xyz.atnrch.nicko.gui.items.home; package xyz.atnrch.nicko.gui.items.home;
import org.bukkit.entity.Player;
import xyz.atnrch.nicko.gui.SettingsGUI;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.ClickType; import org.bukkit.event.inventory.ClickType;
import xyz.atnrch.nicko.gui.SettingsGUI;
import xyz.atnrch.nicko.i18n.I18N; import xyz.atnrch.nicko.i18n.I18N;
import xyz.atnrch.nicko.i18n.I18NDict; import xyz.atnrch.nicko.i18n.I18NDict;
import xyz.atnrch.nicko.i18n.ItemTranslation;
import xyz.xenondevs.invui.item.builder.ItemBuilder; import xyz.xenondevs.invui.item.builder.ItemBuilder;
import xyz.xenondevs.invui.item.impl.SuppliedItem; import xyz.xenondevs.invui.item.impl.SuppliedItem;
@ -20,10 +19,7 @@ public class SettingsAccessItem {
public SuppliedItem get() { public SuppliedItem get() {
return new SuppliedItem(() -> { return new SuppliedItem(() -> {
final ItemBuilder builder = new ItemBuilder(Material.COMPARATOR); final ItemBuilder builder = new ItemBuilder(Material.COMPARATOR);
final ItemTranslation translation = i18n.translateItem(I18NDict.GUI.Home.SETTINGS); return i18n.translateItem(builder, I18NDict.GUI.Home.SETTINGS);
builder.setDisplayName(translation.getName());
translation.getLore().forEach(builder::addLoreLines);
return builder;
}, click -> { }, click -> {
final ClickType clickType = click.getClickType(); final ClickType clickType = click.getClickType();
if (clickType.isLeftClick() || clickType.isRightClick()) { if (clickType.isLeftClick() || clickType.isRightClick()) {

View file

@ -47,9 +47,9 @@ public class BungeeCordCyclingItem {
return new SimpleItem(ItemProvider.EMPTY); return new SimpleItem(ItemProvider.EMPTY);
} }
private ItemProvider getItemProviderForValue(boolean enabled) { private ItemProvider getItemProviderForValue(boolean ignored) {
final ItemBuilder builder = new ItemBuilder(Material.COMPASS); final ItemBuilder builder = new ItemBuilder(Material.COMPASS);
final ItemTranslation translation = i18n.translateItem(I18NDict.GUI.Settings.BUNGEECORD); final ItemTranslation translation = i18n.fetchTranslation(I18NDict.GUI.Settings.BUNGEECORD);
builder.setDisplayName(translation.getName()); builder.setDisplayName(translation.getName());
translation.getLore().forEach(builder::addLoreLines); translation.getLore().forEach(builder::addLoreLines);

View file

@ -57,7 +57,7 @@ public class LanguageCyclingItem {
private ItemProvider generateItem(Locale locale, List<Locale> locales) { private ItemProvider generateItem(Locale locale, List<Locale> locales) {
final ItemBuilder builder = new ItemBuilder(Material.OAK_SIGN); final ItemBuilder builder = new ItemBuilder(Material.OAK_SIGN);
final ItemTranslation translation = i18n.translateItem(I18NDict.GUI.Settings.LANGUAGE); final ItemTranslation translation = i18n.fetchTranslation(I18NDict.GUI.Settings.LANGUAGE);
builder.setDisplayName(translation.getName()); builder.setDisplayName(translation.getName());
for (Locale value : locales) { for (Locale value : locales) {

View file

@ -4,6 +4,7 @@ import com.github.jsixface.YamlConfig;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import xyz.atnrch.nicko.NickoBukkit; import xyz.atnrch.nicko.NickoBukkit;
import xyz.atnrch.nicko.profile.NickoProfile; import xyz.atnrch.nicko.profile.NickoProfile;
import xyz.xenondevs.invui.item.builder.AbstractItemBuilder;
import java.io.InputStream; import java.io.InputStream;
import java.text.MessageFormat; import java.text.MessageFormat;
@ -35,7 +36,14 @@ public class I18N {
this.yamlConfig = getYamlConfig(); this.yamlConfig = getYamlConfig();
} }
public ItemTranslation translateItem(String key, Object... args) { public AbstractItemBuilder<?> translateItem(AbstractItemBuilder<?> item, String key, Object... args) {
final ItemTranslation translation = fetchTranslation(key, args);
item.setDisplayName(translation.getName());
translation.getLore().forEach(item::addLoreLines);
return item;
}
public ItemTranslation fetchTranslation(String key, Object... args) {
final String nameKey = key + ".name"; final String nameKey = key + ".name";
final String loreKey = key + ".lore"; final String loreKey = key + ".lore";
final String name = readString(nameKey); final String name = readString(nameKey);

View file

@ -81,6 +81,7 @@ public class I18NDict {
public static final String SETTINGS = TITLE_KEY + "settings"; public static final String SETTINGS = TITLE_KEY + "settings";
public static final String ADMIN = TITLE_KEY + "admin"; public static final String ADMIN = TITLE_KEY + "admin";
public static final String CHECK = TITLE_KEY + "check"; public static final String CHECK = TITLE_KEY + "check";
public static final String CONFIRM = TITLE_KEY + "confirm";
public static final String CACHE = TITLE_KEY + "cache"; public static final String CACHE = TITLE_KEY + "cache";
public static final String INVALIDATE_SKIN = TITLE_KEY + "invalidate_skin"; public static final String INVALIDATE_SKIN = TITLE_KEY + "invalidate_skin";
} }
@ -124,6 +125,7 @@ public class I18NDict {
public static final String STATISTICS = CACHE_KEY + "statistics"; public static final String STATISTICS = CACHE_KEY + "statistics";
public static final String INVALIDATE_CACHE = CACHE_KEY + "invalidate_cache"; public static final String INVALIDATE_CACHE = CACHE_KEY + "invalidate_cache";
public static final String INVALIDATE_SKIN = CACHE_KEY + "invalidate_skin"; public static final String INVALIDATE_SKIN = CACHE_KEY + "invalidate_skin";
public static final String ENTRY = CACHE_KEY + "entry";
} }
} }
} }

View file

@ -33,6 +33,7 @@ gui:
settings: "Nicko > Settings" settings: "Nicko > Settings"
admin: "Nicko > Administration" admin: "Nicko > Administration"
check: "Nicko > Admin... > Check" check: "Nicko > Admin... > Check"
confirm: "... > Invalidate > Confirm"
cache: "Nicko > Admin... > Cache" cache: "Nicko > Admin... > Cache"
invalidate_skin: "... > Cache > Invalidate" invalidate_skin: "... > Cache > Invalidate"
@ -47,7 +48,8 @@ gui:
error: error:
name: "Error!" name: "Error!"
lore: lore:
- "§7§oAn error occurred." - "§7"
- "§7The item texture failed to load, but it might still work."
loading: loading:
name: "§7§oLoading..." name: "§7§oLoading..."
choice: choice:
@ -94,7 +96,7 @@ gui:
lore: lore:
- "§7See players' disguise information." - "§7See players' disguise information."
check: check:
name: "{0}" name: "§6{0}"
lore: lore:
- "§cNicked: §a{1}" - "§cNicked: §a{1}"
- "§cName: §6{2}" - "§cName: §6{2}"
@ -117,6 +119,10 @@ gui:
lore: lore:
- "§7Select a specific skin to invalidate." - "§7Select a specific skin to invalidate."
- "§7Useful if a skin has been recently updated." - "§7Useful if a skin has been recently updated."
entry:
name: "§6{0}"
lore:
- "§7Click to invalidate..."
settings: settings:
language: language:
name: "Language" name: "Language"

View file

@ -33,6 +33,7 @@ gui:
settings: "Nicko > Paramètres" settings: "Nicko > Paramètres"
admin: "Nicko > Administration" admin: "Nicko > Administration"
check: "Nicko > Admin... > Vérification" check: "Nicko > Admin... > Vérification"
confirm: "... > Invalider > Confirmer"
cache: "Nicko > Admin... > Cache" cache: "Nicko > Admin... > Cache"
invalidate_skin: "... > Cache > Invalider" invalidate_skin: "... > Cache > Invalider"
@ -90,7 +91,7 @@ gui:
lore: lore:
- "§7Vérifiez les informations de déguisement d'un joueur." - "§7Vérifiez les informations de déguisement d'un joueur."
check: check:
name: "{0}" name: "§6{0}"
lore: lore:
- "§cDéguisé: §a{1}" - "§cDéguisé: §a{1}"
- "§cNom: §6{2}" - "§cNom: §6{2}"
@ -115,6 +116,10 @@ gui:
- "§7Sélectionnez une apparence spécifique à" - "§7Sélectionnez une apparence spécifique à"
- "§7invalider. Utile dans le cas où un skin" - "§7invalider. Utile dans le cas où un skin"
- "§7a récemment été mis à jour." - "§7a récemment été mis à jour."
entry:
name: "§6{0}"
lore:
- "§7Cliquez pour invalider..."
settings: settings:
language: language:
name: "Langage" name: "Langage"

View file

@ -34,7 +34,7 @@ public class ItemTranslationTest {
@DisplayName("Translate Item Without Lore") @DisplayName("Translate Item Without Lore")
public void translateItemTranslationWithoutLore() { public void translateItemTranslationWithoutLore() {
final I18N i18n = new I18N(Locale.FRENCH); final I18N i18n = new I18N(Locale.FRENCH);
final ItemTranslation translation = i18n.translateItem(I18NDict.GUI.GO_BACK); final ItemTranslation translation = i18n.fetchTranslation(I18NDict.GUI.GO_BACK);
assertTrue(translation.getLore().isEmpty()); assertTrue(translation.getLore().isEmpty());
assertEquals(translation.getName(), "Retour"); assertEquals(translation.getName(), "Retour");
} }
@ -43,7 +43,7 @@ public class ItemTranslationTest {
@DisplayName("Translate Item") @DisplayName("Translate Item")
public void translateItemLore() { public void translateItemLore() {
final I18N i18n = new I18N(Locale.FRENCH); final I18N i18n = new I18N(Locale.FRENCH);
final ItemTranslation translation = i18n.translateItem(I18NDict.GUI.Admin.Cache.STATISTICS, "1", "1"); final ItemTranslation translation = i18n.fetchTranslation(I18NDict.GUI.Admin.Cache.STATISTICS, "1", "1");
assertFalse(translation.getLore().isEmpty()); assertFalse(translation.getLore().isEmpty());
assertEquals("§fNombre de requêtes: §b1", translation.getLore().get(0)); assertEquals("§fNombre de requêtes: §b1", translation.getLore().get(0));
assertEquals("§fNb. de skin dans le cache: §b1", translation.getLore().get(1)); assertEquals("§fNb. de skin dans le cache: §b1", translation.getLore().get(1));