feat(i18n): move to adventure
This commit is contained in:
parent
3377dcf2bf
commit
84e792880f
13 changed files with 175 additions and 110 deletions
|
@ -49,6 +49,7 @@ dependencies {
|
||||||
implementation("com.comphenix.protocol:ProtocolLib:5.1.1-SNAPSHOT")
|
implementation("com.comphenix.protocol:ProtocolLib:5.1.1-SNAPSHOT")
|
||||||
|
|
||||||
shadowImplementation("me.clip:placeholderapi:2.11.4")
|
shadowImplementation("me.clip:placeholderapi:2.11.4")
|
||||||
|
shadowImplementation("net.kyori:adventure-api:4.14.0")
|
||||||
shadowImplementation("xyz.xenondevs.invui:invui:1.23")
|
shadowImplementation("xyz.xenondevs.invui:invui:1.23")
|
||||||
shadowImplementation("net.wesjd:anvilgui:1.9.0-SNAPSHOT")
|
shadowImplementation("net.wesjd:anvilgui:1.9.0-SNAPSHOT")
|
||||||
shadowImplementation("com.github.jsixface:yamlconfig:1.2")
|
shadowImplementation("com.github.jsixface:yamlconfig:1.2")
|
||||||
|
|
|
@ -40,13 +40,7 @@ public class AppearanceManager {
|
||||||
profile.setName(defaultName);
|
profile.setName(defaultName);
|
||||||
profile.setSkin(defaultName);
|
profile.setSkin(defaultName);
|
||||||
dataStore.getCache().cache(player.getUniqueId(), profile);
|
dataStore.getCache().cache(player.getUniqueId(), profile);
|
||||||
final ActionResult actionResult = updatePlayer(true, true);
|
return updatePlayer(true, true);
|
||||||
if (!actionResult.isError()) {
|
|
||||||
profile.setSkin(null);
|
|
||||||
profile.setName(null);
|
|
||||||
dataStore.getCache().cache(player.getUniqueId(), profile);
|
|
||||||
}
|
|
||||||
return actionResult;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public ActionResult updatePlayer(boolean skinChange, boolean reset) {
|
public ActionResult updatePlayer(boolean skinChange, boolean reset) {
|
||||||
|
|
|
@ -4,10 +4,7 @@ import org.bukkit.entity.Player;
|
||||||
import xyz.ineanto.nicko.gui.items.appearance.ChangeBothItem;
|
import xyz.ineanto.nicko.gui.items.appearance.ChangeBothItem;
|
||||||
import xyz.ineanto.nicko.gui.items.appearance.ChangeNameItem;
|
import xyz.ineanto.nicko.gui.items.appearance.ChangeNameItem;
|
||||||
import xyz.ineanto.nicko.gui.items.appearance.ChangeSkinItem;
|
import xyz.ineanto.nicko.gui.items.appearance.ChangeSkinItem;
|
||||||
import xyz.ineanto.nicko.gui.items.home.AdminAccessItem;
|
import xyz.ineanto.nicko.gui.items.home.*;
|
||||||
import xyz.ineanto.nicko.gui.items.home.ExitItem;
|
|
||||||
import xyz.ineanto.nicko.gui.items.home.ResetItem;
|
|
||||||
import xyz.ineanto.nicko.gui.items.home.SettingsAccessItem;
|
|
||||||
import xyz.ineanto.nicko.i18n.I18N;
|
import xyz.ineanto.nicko.i18n.I18N;
|
||||||
import xyz.ineanto.nicko.i18n.I18NDict;
|
import xyz.ineanto.nicko.i18n.I18NDict;
|
||||||
import xyz.xenondevs.invui.gui.Gui;
|
import xyz.xenondevs.invui.gui.Gui;
|
||||||
|
@ -20,7 +17,7 @@ public class HomeGUI {
|
||||||
|
|
||||||
public HomeGUI(Player player) {
|
public HomeGUI(Player player) {
|
||||||
final String[] dynamicStructure = new String[]{
|
final String[] dynamicStructure = new String[]{
|
||||||
"# # # # # # # # #",
|
"# # # # D # # # #",
|
||||||
"A # # N B S # # #",
|
"A # # N B S # # #",
|
||||||
"E P # # # # # # R"};
|
"E P # # # # # # R"};
|
||||||
|
|
||||||
|
@ -38,6 +35,7 @@ public class HomeGUI {
|
||||||
final ChangeSkinItem changeSkinItem = new ChangeSkinItem(player);
|
final ChangeSkinItem changeSkinItem = new ChangeSkinItem(player);
|
||||||
final SettingsAccessItem settingsAccessItem = new SettingsAccessItem(player);
|
final SettingsAccessItem settingsAccessItem = new SettingsAccessItem(player);
|
||||||
final AdminAccessItem adminAccessItem = new AdminAccessItem(player);
|
final AdminAccessItem adminAccessItem = new AdminAccessItem(player);
|
||||||
|
final RandomSkinItem randomSkinItem = new RandomSkinItem(player);
|
||||||
|
|
||||||
this.gui = Gui.normal()
|
this.gui = Gui.normal()
|
||||||
.setStructure(dynamicStructure)
|
.setStructure(dynamicStructure)
|
||||||
|
@ -48,6 +46,7 @@ public class HomeGUI {
|
||||||
.addIngredient('S', changeSkinItem.get())
|
.addIngredient('S', changeSkinItem.get())
|
||||||
.addIngredient('P', settingsAccessItem.get())
|
.addIngredient('P', settingsAccessItem.get())
|
||||||
.addIngredient('A', adminAccessItem.get())
|
.addIngredient('A', adminAccessItem.get())
|
||||||
|
.addIngredient('D', randomSkinItem.get())
|
||||||
.build();
|
.build();
|
||||||
this.player = player;
|
this.player = player;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
package xyz.ineanto.nicko.gui.items.admin.cache;
|
package xyz.ineanto.nicko.gui.items.admin.cache;
|
||||||
|
|
||||||
|
import net.kyori.adventure.text.Component;
|
||||||
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;
|
||||||
|
@ -27,17 +28,19 @@ public class CacheEntryItem extends AsyncItem {
|
||||||
private final MojangAPI mojangAPI = NickoBukkit.getInstance().getMojangAPI();
|
private final MojangAPI mojangAPI = NickoBukkit.getInstance().getMojangAPI();
|
||||||
|
|
||||||
public CacheEntryItem(I18N i18n, String uuid) {
|
public CacheEntryItem(I18N i18n, String uuid) {
|
||||||
super(new ItemBuilder(Material.PAINTING).setDisplayName("§7§oLoading..."), () -> {
|
super(new ItemBuilder(Material.PAINTING)
|
||||||
final String dashedUuid = uuid.replaceAll("(.{8})(.{4})(.{4})(.{4})(.+)", "$1-$2-$3-$4-$5");
|
.setDisplayName(Component.text(i18n.translateStringWithoutPrefix(I18NDict.GUI.LOADING)).content()),
|
||||||
final UUID uuidObject = UUID.fromString(dashedUuid);
|
() -> {
|
||||||
try {
|
final String dashedUuid = uuid.replaceAll("(.{8})(.{4})(.{4})(.{4})(.+)", "$1-$2-$3-$4-$5");
|
||||||
final SkullBuilder skull = new SkullBuilder(uuidObject);
|
final UUID uuidObject = UUID.fromString(dashedUuid);
|
||||||
return i18n.translateItem(skull, I18NDict.GUI.Admin.Cache.ENTRY, NickoBukkit.getInstance().getMojangAPI().getUUIDName(uuid));
|
try {
|
||||||
} catch (MojangApiUtils.MojangApiException | IOException e) {
|
final SkullBuilder skull = new SkullBuilder(uuidObject);
|
||||||
NickoBukkit.getInstance().getLogger().warning("Unable to get Head texture for specified UUID (" + uuid + ")! (GUI/Cache/Entry)");
|
return i18n.translateItem(skull, I18NDict.GUI.Admin.Cache.ENTRY, NickoBukkit.getInstance().getMojangAPI().getUUIDName(uuid));
|
||||||
return ItemDefaults.getErrorSkullItem(i18n, I18NDict.GUI.Admin.Cache.ENTRY, NickoBukkit.getInstance().getMojangAPI().getUUIDName(uuid));
|
} catch (MojangApiUtils.MojangApiException | IOException e) {
|
||||||
}
|
NickoBukkit.getInstance().getLogger().warning("Unable to get Head texture for specified UUID (" + uuid + ")! (GUI/Cache/Entry)");
|
||||||
});
|
return ItemDefaults.getErrorSkullItem(i18n, I18NDict.GUI.Admin.Cache.ENTRY, NickoBukkit.getInstance().getMojangAPI().getUUIDName(uuid));
|
||||||
|
}
|
||||||
|
});
|
||||||
this.uuid = uuid;
|
this.uuid = uuid;
|
||||||
this.name = mojangAPI.getUUIDName(uuid);
|
this.name = mojangAPI.getUUIDName(uuid);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
package xyz.ineanto.nicko.gui.items.common;
|
package xyz.ineanto.nicko.gui.items.common;
|
||||||
|
|
||||||
|
import net.kyori.adventure.text.Component;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import xyz.ineanto.nicko.i18n.I18N;
|
import xyz.ineanto.nicko.i18n.I18N;
|
||||||
import xyz.ineanto.nicko.i18n.I18NDict;
|
import xyz.ineanto.nicko.i18n.I18NDict;
|
||||||
|
@ -21,7 +22,7 @@ public class ScrollDownItem extends ScrollItem {
|
||||||
public ItemProvider getItemProvider(ScrollGui gui) {
|
public ItemProvider getItemProvider(ScrollGui gui) {
|
||||||
final ItemBuilder builder = new ItemBuilder(Material.GREEN_STAINED_GLASS_PANE);
|
final ItemBuilder builder = new ItemBuilder(Material.GREEN_STAINED_GLASS_PANE);
|
||||||
final Translation translation = i18n.translate(I18NDict.GUI.SCROLL_DOWN);
|
final Translation translation = i18n.translate(I18NDict.GUI.SCROLL_DOWN);
|
||||||
builder.setDisplayName(translation.name());
|
builder.setDisplayName(Component.text(translation.name()).content());
|
||||||
if (!gui.canScroll(1)) translation.lore().forEach(builder::addLoreLines);
|
if (!gui.canScroll(1)) translation.lore().forEach(builder::addLoreLines);
|
||||||
return builder;
|
return builder;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
package xyz.ineanto.nicko.gui.items.common;
|
package xyz.ineanto.nicko.gui.items.common;
|
||||||
|
|
||||||
|
import net.kyori.adventure.text.Component;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import xyz.ineanto.nicko.i18n.I18N;
|
import xyz.ineanto.nicko.i18n.I18N;
|
||||||
import xyz.ineanto.nicko.i18n.I18NDict;
|
import xyz.ineanto.nicko.i18n.I18NDict;
|
||||||
|
@ -21,7 +22,7 @@ public class ScrollUpItem extends ScrollItem {
|
||||||
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 Translation translation = i18n.translate(I18NDict.GUI.SCROLL_UP);
|
final Translation translation = i18n.translate(I18NDict.GUI.SCROLL_UP);
|
||||||
builder.setDisplayName(translation.name());
|
builder.setDisplayName(Component.text(translation.name()).content());
|
||||||
if (!gui.canScroll(-1)) translation.lore().forEach(builder::addLoreLines);
|
if (!gui.canScroll(-1)) translation.lore().forEach(builder::addLoreLines);
|
||||||
return builder;
|
return builder;
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,53 @@
|
||||||
|
package xyz.ineanto.nicko.gui.items.home;
|
||||||
|
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.inventory.ClickType;
|
||||||
|
import xyz.ineanto.nicko.NickoBukkit;
|
||||||
|
import xyz.ineanto.nicko.appearance.AppearanceManager;
|
||||||
|
import xyz.ineanto.nicko.i18n.I18N;
|
||||||
|
import xyz.ineanto.nicko.i18n.I18NDict;
|
||||||
|
import xyz.ineanto.nicko.profile.NickoProfile;
|
||||||
|
import xyz.xenondevs.invui.item.builder.SkullBuilder;
|
||||||
|
import xyz.xenondevs.invui.item.impl.SuppliedItem;
|
||||||
|
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
|
public class RandomSkinItem {
|
||||||
|
private final I18N i18n;
|
||||||
|
private final NickoBukkit instance;
|
||||||
|
|
||||||
|
public RandomSkinItem(Player player) {
|
||||||
|
this.instance = NickoBukkit.getInstance();
|
||||||
|
this.i18n = new I18N(player);
|
||||||
|
}
|
||||||
|
|
||||||
|
public SuppliedItem get() {
|
||||||
|
return new SuppliedItem(() -> {
|
||||||
|
final SkullBuilder.HeadTexture texture = new SkullBuilder.HeadTexture("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYzgzMTEzOGMyMDYxMWQzMDJjNDIzZmEzMjM3MWE3NDNkMTc0MzdhMTg5NzNjMzUxOTczNDQ3MGE3YWJiNCJ9fX0=");
|
||||||
|
final SkullBuilder builder = new SkullBuilder(texture);
|
||||||
|
return i18n.translateItem(builder, I18NDict.GUI.Home.RANDOM_SKIN);
|
||||||
|
}, (event) -> {
|
||||||
|
final Player player = event.getPlayer();
|
||||||
|
final ClickType clickType = event.getClickType();
|
||||||
|
if (clickType.isLeftClick() || clickType.isRightClick()) {
|
||||||
|
final Optional<NickoProfile> optionalProfile = NickoProfile.get(player);
|
||||||
|
optionalProfile.ifPresent(profile -> {
|
||||||
|
final String name = instance.getNameFetcher().getRandomUsername();
|
||||||
|
final String skin = instance.getNameFetcher().getRandomUsername();
|
||||||
|
profile.setName(name);
|
||||||
|
profile.setSkin(skin);
|
||||||
|
instance.getDataStore().updateCache(player.getUniqueId(), profile);
|
||||||
|
|
||||||
|
final AppearanceManager appearanceManager = new AppearanceManager(player);
|
||||||
|
if (!appearanceManager.updatePlayer(true, false).isError()) {
|
||||||
|
player.sendMessage(i18n.translateString(I18NDict.Event.Appearance.Set.OK));
|
||||||
|
} else {
|
||||||
|
player.sendMessage(i18n.translateString(I18NDict.Event.Appearance.Set.ERROR));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
|
@ -40,8 +40,6 @@ public class ResetItem {
|
||||||
player.sendMessage(i18n.translateString(I18NDict.Event.Appearance.Remove.OK));
|
player.sendMessage(i18n.translateString(I18NDict.Event.Appearance.Remove.OK));
|
||||||
} else {
|
} else {
|
||||||
player.sendMessage(i18n.translateString(I18NDict.Event.Appearance.Remove.ERROR));
|
player.sendMessage(i18n.translateString(I18NDict.Event.Appearance.Remove.ERROR));
|
||||||
profile.setSkin(null);
|
|
||||||
profile.setName(null);
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return true;
|
return true;
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
package xyz.ineanto.nicko.gui.items.settings;
|
package xyz.ineanto.nicko.gui.items.settings;
|
||||||
|
|
||||||
|
import net.kyori.adventure.text.Component;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.Sound;
|
import org.bukkit.Sound;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
@ -59,7 +60,7 @@ public class LanguageCyclingItem {
|
||||||
final Translation translation = i18n.translate(I18NDict.GUI.Settings.LANGUAGE);
|
final Translation translation = i18n.translate(I18NDict.GUI.Settings.LANGUAGE);
|
||||||
final Translation cyclingChoicesTranslation = i18n.translate(I18NDict.GUI.Settings.CYCLING_CHOICES);
|
final Translation cyclingChoicesTranslation = i18n.translate(I18NDict.GUI.Settings.CYCLING_CHOICES);
|
||||||
|
|
||||||
builder.setDisplayName(translation.name());
|
builder.setDisplayName(Component.text(translation.name()).content());
|
||||||
for (Locale value : locales) {
|
for (Locale value : locales) {
|
||||||
if (locale != value) {
|
if (locale != value) {
|
||||||
builder.addLoreLines("§7> " + value.getName());
|
builder.addLoreLines("§7> " + value.getName());
|
||||||
|
|
|
@ -1,6 +1,9 @@
|
||||||
package xyz.ineanto.nicko.i18n;
|
package xyz.ineanto.nicko.i18n;
|
||||||
|
|
||||||
import com.github.jsixface.YamlConfig;
|
import com.github.jsixface.YamlConfig;
|
||||||
|
import net.kyori.adventure.text.Component;
|
||||||
|
import net.kyori.adventure.text.minimessage.MiniMessage;
|
||||||
|
import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import xyz.ineanto.nicko.NickoBukkit;
|
import xyz.ineanto.nicko.NickoBukkit;
|
||||||
import xyz.ineanto.nicko.profile.NickoProfile;
|
import xyz.ineanto.nicko.profile.NickoProfile;
|
||||||
|
@ -36,7 +39,18 @@ public class I18N {
|
||||||
|
|
||||||
public AbstractItemBuilder<?> translateItem(AbstractItemBuilder<?> item, String key, Object... args) {
|
public AbstractItemBuilder<?> translateItem(AbstractItemBuilder<?> item, String key, Object... args) {
|
||||||
final Translation translation = translate(key, args);
|
final Translation translation = translate(key, args);
|
||||||
item.setDisplayName(translation.name());
|
|
||||||
|
// Name serialization
|
||||||
|
final Component deserializedName = MiniMessage.miniMessage().deserialize(translation.name());
|
||||||
|
final String serializedName = LegacyComponentSerializer.legacySection().serialize(deserializedName);
|
||||||
|
|
||||||
|
// Lore serialization
|
||||||
|
translation.lore().replaceAll(s -> {
|
||||||
|
final Component deserializedLoreLine = MiniMessage.miniMessage().deserialize(s);
|
||||||
|
return LegacyComponentSerializer.legacySection().serialize(deserializedLoreLine);
|
||||||
|
});
|
||||||
|
|
||||||
|
item.setDisplayName(serializedName);
|
||||||
translation.lore().forEach(item::addLoreLines);
|
translation.lore().forEach(item::addLoreLines);
|
||||||
return item;
|
return item;
|
||||||
}
|
}
|
||||||
|
|
|
@ -105,6 +105,7 @@ public class I18NDict {
|
||||||
public static final String CHANGE_SKIN = HOME_KEY + "change_skin";
|
public static final String CHANGE_SKIN = HOME_KEY + "change_skin";
|
||||||
public static final String CHANGE_BOTH = HOME_KEY + "change_both";
|
public static final String CHANGE_BOTH = HOME_KEY + "change_both";
|
||||||
public static final String RESET = HOME_KEY + "reset";
|
public static final String RESET = HOME_KEY + "reset";
|
||||||
|
public static final String RANDOM_SKIN = HOME_KEY + "random_skin";
|
||||||
public static final String SETTINGS = HOME_KEY + "settings";
|
public static final String SETTINGS = HOME_KEY + "settings";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -39,11 +39,6 @@ gui:
|
||||||
cache: "Nicko > Admin... > Cache"
|
cache: "Nicko > Admin... > Cache"
|
||||||
invalidate_skin: "... > Cache > Invalidate"
|
invalidate_skin: "... > Cache > Invalidate"
|
||||||
|
|
||||||
cycling_choices:
|
|
||||||
name: "IGNOREME"
|
|
||||||
lore:
|
|
||||||
- "§7§oGet through the values"
|
|
||||||
- "§7§oby left or right clicking."
|
|
||||||
exit:
|
exit:
|
||||||
name: "Exit"
|
name: "Exit"
|
||||||
go_back:
|
go_back:
|
||||||
|
@ -51,99 +46,97 @@ gui:
|
||||||
unavailable:
|
unavailable:
|
||||||
name: "Unavailable"
|
name: "Unavailable"
|
||||||
lore:
|
lore:
|
||||||
- "§7§oThis button is disabled."
|
- "<gray><i>This button is disabled.</i></gray>"
|
||||||
error:
|
error:
|
||||||
name: "Error!"
|
name: "Error!"
|
||||||
lore:
|
lore:
|
||||||
- "§7"
|
- "<gray>The item texture failed to load, but it might still work.</gray>"
|
||||||
- "§7The item texture failed to load, but it might still work."
|
|
||||||
loading:
|
loading:
|
||||||
name: "§7§oLoading..."
|
name: "<gray><i>Loading...</i></gray>"
|
||||||
choice:
|
choice:
|
||||||
confirm:
|
confirm:
|
||||||
name: "§aConfirm"
|
name: "<green>Confirm</green>"
|
||||||
choose:
|
choose:
|
||||||
name: "§6§oChoose an option..."
|
name: "<gold><i>Choose an option...</i></gold>"
|
||||||
cancel:
|
cancel:
|
||||||
name: "§cCancel"
|
name: "<red>Cancel</red>"
|
||||||
scroll_up:
|
scroll_up:
|
||||||
name: "Scroll up"
|
name: "Scroll up"
|
||||||
lore:
|
lore:
|
||||||
- "§8§o(You can't scroll any higher.)"
|
- "<dark_gray><i>(You can't scroll any higher.)</i></dark_gray>"
|
||||||
scroll_down:
|
scroll_down:
|
||||||
name: "Scroll down"
|
name: "Scroll down"
|
||||||
lore:
|
lore:
|
||||||
- "§8§o(You can't scroll any further down.)"
|
- "<dark_gray><i>(You can't scroll any further down.)</i></dark_gray>"
|
||||||
home:
|
home:
|
||||||
admin:
|
admin:
|
||||||
name: "Administration panel"
|
name: "Administration panel"
|
||||||
lore:
|
lore:
|
||||||
- "§7Configure and manage Nicko."
|
- "<gray>Configure and manage Nicko.</gray>"
|
||||||
settings:
|
settings:
|
||||||
name: "Settings"
|
name: "Settings"
|
||||||
lore:
|
lore:
|
||||||
- "§7Fine tune your experience with Nicko."
|
- "<gray>Fine tune your experience with Nicko.</gray>"
|
||||||
change_name:
|
change_name:
|
||||||
name: "§6Nickname §fchange"
|
name: "Change your <gold>nickname</gold>"
|
||||||
change_skin:
|
change_skin:
|
||||||
name: "§6Skin §fchange"
|
name: "Change your <gold>skin</gold>"
|
||||||
change_both:
|
change_both:
|
||||||
name: "Change §6both"
|
name: "Change <gold>both</gold>"
|
||||||
|
random_skin:
|
||||||
|
name: "<rainbow>Get a random appearance!</rainbow>"
|
||||||
reset:
|
reset:
|
||||||
name: "Reset appearance"
|
name: "Reset appearance"
|
||||||
lore:
|
lore:
|
||||||
- "§7Completely remove your disguise."
|
- "<gray>Completely remove your disguise.</gray>"
|
||||||
admin:
|
admin:
|
||||||
manage_cache:
|
manage_cache:
|
||||||
name: "Manage §6skin §fcache..."
|
name: "Manage the <gold>skin</gold> cache..."
|
||||||
lore:
|
lore:
|
||||||
- "§7View and manage the skin cache."
|
- "<gray>View and manage the skin cache.</gray>"
|
||||||
manage_player:
|
manage_player:
|
||||||
name: "Check a player..."
|
name: "Inspect a player..."
|
||||||
lore:
|
lore:
|
||||||
- "§7See players' disguise information."
|
- "<gray>See players' disguise information.</gray>"
|
||||||
check:
|
check:
|
||||||
name: "§6{0}"
|
name: "<gold>{0}</gold>"
|
||||||
lore:
|
lore:
|
||||||
- "§cNicked: §a{1}"
|
- "<red>Nicked:</red> {1}"
|
||||||
- "§cName: §6{2}"
|
- "<red>Name:</red> <gold>{2}</gold>"
|
||||||
- "§cSkin: §6{3}"
|
- "<red>Skin:</red> <gold>{3}</gold>"
|
||||||
- " "
|
- " "
|
||||||
- "§7§oClick to remove skin!"
|
- "<gray><i>Click to remove skin!</i></gray>"
|
||||||
cache:
|
cache:
|
||||||
statistics:
|
statistics:
|
||||||
name: "Statistics"
|
name: "Statistics"
|
||||||
lore:
|
lore:
|
||||||
- "§fRequest count: §b{0}"
|
- "Request count: <aqua>{0}</aqua>"
|
||||||
- "§fNumber of skin cached: §b{1}"
|
- "Number of skin cached: <aqua>{1}</aqua>"
|
||||||
- "§8§oCache is cleared every 24 hours."
|
- "<dark_gray><i>Cache is cleared every 24 hours.</i></dark_gray>"
|
||||||
invalidate_cache:
|
invalidate_cache:
|
||||||
name: "Invalidate cache"
|
name: "Invalidate cache"
|
||||||
lore:
|
lore:
|
||||||
- "§c§oNOT RECOMMENDED"
|
- "<red><i>NOT RECOMMENDED</i></red>"
|
||||||
- "§7Invalidate the entirety of the skin cache."
|
- "<gray>Invalidate the entirety of the skin cache.</gray>"
|
||||||
- "§7This doesn't reset player's disguises."
|
- "<gray>This doesn't reset player's disguises.</gray>"
|
||||||
invalidate_skin:
|
invalidate_skin:
|
||||||
name: "Invalidate a skin..."
|
name: "Invalidate a skin..."
|
||||||
lore:
|
lore:
|
||||||
- "§7Select a specific skin to invalidate."
|
- "<gray>Select a specific skin to invalidate.</gray>"
|
||||||
- "§7Useful if a skin has been recently updated."
|
- "<gray>Useful if a skin has been recently updated.</gray>"
|
||||||
entry:
|
entry:
|
||||||
name: "§6{0}"
|
name: "<gold>{0}</gold>"
|
||||||
lore:
|
lore:
|
||||||
- "§7Click to invalidate..."
|
- "<gray>Click to invalidate...</gray>"
|
||||||
settings:
|
settings:
|
||||||
toggleable_button:
|
toggleable_button:
|
||||||
name: "IGNORE_ME"
|
|
||||||
lore:
|
lore:
|
||||||
# {0}/{1} represents the carets that shows the current selected option.
|
- "{0} Disabled"
|
||||||
- "§b{0} Disabled"
|
- "{1} Enabled"
|
||||||
- "§b{1} Enabled"
|
|
||||||
cycling_choices:
|
cycling_choices:
|
||||||
name: "IGNORE_ME"
|
|
||||||
lore:
|
lore:
|
||||||
- "§7§oCycle through the values"
|
- "<gray><i>Cycle through the values</i></gray>"
|
||||||
- "§7§oby left or right clicking."
|
- "<gray><i>by left or right clicking.</i></gray>"
|
||||||
language:
|
language:
|
||||||
name: "Language"
|
name: "Language"
|
||||||
random_skin:
|
random_skin:
|
||||||
|
|
|
@ -46,84 +46,90 @@ gui:
|
||||||
unavailable:
|
unavailable:
|
||||||
name: "Indisponible"
|
name: "Indisponible"
|
||||||
lore:
|
lore:
|
||||||
- "§7§oCe boutton est désactivé."
|
- "<gray><i>Ce boutton est désactivé.</i></gray>"
|
||||||
|
error:
|
||||||
|
name: "Erreur!"
|
||||||
|
lore:
|
||||||
|
- "<gray>La texture de l'objet n'a pas chargé</gray>"
|
||||||
|
- "<gray>correctement mais il fonctionne encore.</gray>"
|
||||||
loading:
|
loading:
|
||||||
name: "§7§oChargement..."
|
name: "<gray><i>Chargement...</i></gray>"
|
||||||
choice:
|
choice:
|
||||||
confirm:
|
confirm:
|
||||||
name: "§aConfirmer"
|
name: "<green>Confirmer</green>"
|
||||||
choose:
|
choose:
|
||||||
name: "§6§oChoisissez une option..."
|
name: "<gold><i>Choisissez une option...</i></gold>"
|
||||||
cancel:
|
cancel:
|
||||||
name: "§cAnnuler"
|
name: "<red>Annuler</red>"
|
||||||
scroll_up:
|
scroll_up:
|
||||||
name: "Défiler vers le haut"
|
name: "Défiler vers le haut"
|
||||||
lore:
|
lore:
|
||||||
- "§8§o(Impossible de défiler plus haut.)"
|
- "<dark_gray><i>(Impossible de défiler plus haut.)</i></dark_gray>"
|
||||||
scroll_down:
|
scroll_down:
|
||||||
name: "Défiler vers le bas"
|
name: "Défiler vers le bas"
|
||||||
lore:
|
lore:
|
||||||
- "§8§o(Impossible de défiler plus bas.)"
|
- "<dark_gray><i>(Impossible de défiler plus bas.)</i></dark_gray>"
|
||||||
home:
|
home:
|
||||||
admin:
|
admin:
|
||||||
name: "Panel d'administration"
|
name: "Panel d'administration"
|
||||||
lore:
|
lore:
|
||||||
- "§7Configurez et gérez Nicko."
|
- "<gray>Configurez et gérez Nicko.</gray>"
|
||||||
settings:
|
settings:
|
||||||
name: "Paramètres"
|
name: "Paramètres"
|
||||||
lore:
|
lore:
|
||||||
- "§7Gérez votre expérience avec Nicko."
|
- "<gray>Gérez votre expérience avec Nicko.</gray>"
|
||||||
change_name:
|
change_name:
|
||||||
name: "Changer le §6pseudo"
|
name: "Changer le <gold>pseudo</gold>"
|
||||||
change_skin:
|
change_skin:
|
||||||
name: "Changer le §6skin"
|
name: "Changer le <gold>skin</gold>"
|
||||||
change_both:
|
change_both:
|
||||||
name: "Changer les §6deux"
|
name: "Changer les <gold>deux</gold>"
|
||||||
|
random_skin:
|
||||||
|
name: "<rainbow>Obtenir une apparence aléatoire !</rainbow>"
|
||||||
reset:
|
reset:
|
||||||
name: "Réinitialiser l'apparence"
|
name: "Réinitialiser l'apparence"
|
||||||
lore:
|
lore:
|
||||||
- "§7Supprime complètement votre déguisement."
|
- "<gray>Supprime complètement votre déguisement.</gray>"
|
||||||
admin:
|
admin:
|
||||||
manage_cache:
|
manage_cache:
|
||||||
name: "Gérer le cache de §6skin..."
|
name: "Gérer le cache de <gold>skin...</gold>"
|
||||||
lore:
|
lore:
|
||||||
- "§7Consultez et gérez le cache de skin."
|
- "<gray>Consultez et gérez le cache de skin.</gray>"
|
||||||
manage_player:
|
manage_player:
|
||||||
name: "Vérifier un joueur..."
|
name: "Vérifier un joueur..."
|
||||||
lore:
|
lore:
|
||||||
- "§7Vérifiez les informations de déguisement d'un joueur."
|
- "<gray>Vérifiez les informations de déguisement d'un joueur.</gray>"
|
||||||
check:
|
check:
|
||||||
name: "§6{0}"
|
name: "<gold>{0}</gold>"
|
||||||
lore:
|
lore:
|
||||||
- "§cDéguisé: §a{1}"
|
- "<red>Déguisé:</red> {1}"
|
||||||
- "§cNom: §6{2}"
|
- "<red>Nom:</red> <gold>{2}</gold>"
|
||||||
- "§cSkin: §6{3}"
|
- "<red>Skin:</red> <gold>{3}</gold>"
|
||||||
- " "
|
- " "
|
||||||
- "§7§oCliquez pour retirer le skin!"
|
- "<gray><i>Cliquez pour retirer le skin !</i></gray>"
|
||||||
cache:
|
cache:
|
||||||
statistics:
|
statistics:
|
||||||
name: "Statistiques"
|
name: "Statistiques"
|
||||||
lore:
|
lore:
|
||||||
- "§fNombre de requêtes: §b{0}"
|
- "Nombre de requêtes: <aqua>{0}</aqua>"
|
||||||
- "§fNb. de skin dans le cache: §b{1}"
|
- "Nb. de skin dans le cache: <aqua>{1}</aqua>"
|
||||||
- "§8§oLe cache est vidé toutes les 24 heures."
|
- "<dark_gray><i>Le cache est vidé toutes les 24 heures.</i></dark_gray>"
|
||||||
invalidate_cache:
|
invalidate_cache:
|
||||||
name: "Invalider le cache"
|
name: "Invalider le cache"
|
||||||
lore:
|
lore:
|
||||||
- "§c§oDÉCONSEILLÉ"
|
- "<red><i>DÉCONSEILLÉ</i></red>"
|
||||||
- "§7Invalide l'entièreté du cache des skin."
|
- "<gray>Invalide l'entièreté du cache des skin.</gray>"
|
||||||
- "§7Ne retire pas les déguisements"
|
- "<gray>Ne retire pas les déguisements des joueurs.</gray>"
|
||||||
- "§7pour les joueurs en disposant."
|
|
||||||
invalidate_skin:
|
invalidate_skin:
|
||||||
name: "Invalider un skin..."
|
name: "Invalider un skin..."
|
||||||
lore:
|
lore:
|
||||||
- "§7Sélectionnez une apparence spécifique à"
|
- "<gray>Sélectionnez une apparence spécifique à</gray>"
|
||||||
- "§7invalider. Utile dans le cas où un skin"
|
- "<gray>invalider. Utile dans le cas où un skin</gray>"
|
||||||
- "§7a récemment été mis à jour."
|
- "<gray>a récemment été mis à jour.</gray>"
|
||||||
entry:
|
entry:
|
||||||
name: "§6{0}"
|
name: "<gold>{0}</gold>"
|
||||||
lore:
|
lore:
|
||||||
- "§7Cliquez pour invalider..."
|
- "<gray>Cliquez pour invalider...</gray>"
|
||||||
settings:
|
settings:
|
||||||
toggleable_button:
|
toggleable_button:
|
||||||
lore:
|
lore:
|
||||||
|
@ -131,8 +137,8 @@ gui:
|
||||||
- "{1} Activé"
|
- "{1} Activé"
|
||||||
cycling_choices:
|
cycling_choices:
|
||||||
lore:
|
lore:
|
||||||
- "§7§oParcourez les valeurs"
|
- "<gray><i>Parcourez les valeurs</i></gray>"
|
||||||
- "§7§oavec un clique gauche/droit."
|
- "<gray><i>avec un clique gauche/droit.</i></gray>"
|
||||||
language:
|
language:
|
||||||
name: "Langage"
|
name: "Langage"
|
||||||
random_skin:
|
random_skin:
|
||||||
|
|
Loading…
Reference in a new issue