mirror of
https://github.com/BentoBoxWorld/Challenges.git
synced 2024-11-24 19:45:14 +01:00
Fix issues when Description were to long to fit in window.
This commit is contained in:
parent
d6a39b2600
commit
586b076860
@ -280,7 +280,7 @@ public class EditChallengeGUI extends CommonGUI
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
return new PanelItem(icon, name, description, glow, clickHandler, false);
|
return new PanelItem(icon, name, GuiUtils.stringSplit(description), glow, clickHandler, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -305,11 +305,12 @@ public class EditChallengeGUI extends CommonGUI
|
|||||||
|
|
||||||
for (Challenge.ChallengeType type : Challenge.ChallengeType.values())
|
for (Challenge.ChallengeType type : Challenge.ChallengeType.values())
|
||||||
{
|
{
|
||||||
values.add((this.challenge.getChallengeType().equals(type) ? "§2" : "§c") +
|
values.add((this.challenge.getChallengeType().equals(type) ? "&2" : "&c") +
|
||||||
this.user.getTranslation("challenges.gui.admin.descriptions." + type.name().toLowerCase()));
|
this.user.getTranslation("challenges.gui.admin.descriptions." + type.name().toLowerCase()));
|
||||||
}
|
}
|
||||||
|
|
||||||
name = this.user.getTranslation("challenges.gui.admin.buttons.type");
|
name = this.user.getTranslation("challenges.gui.admin.buttons.type",
|
||||||
|
"[value]", this.challenge.getChallengeType().name());
|
||||||
description = values;
|
description = values;
|
||||||
|
|
||||||
if (this.challenge.getChallengeType().equals(Challenge.ChallengeType.ISLAND))
|
if (this.challenge.getChallengeType().equals(Challenge.ChallengeType.ISLAND))
|
||||||
@ -450,7 +451,7 @@ public class EditChallengeGUI extends CommonGUI
|
|||||||
|
|
||||||
for (World.Environment environment : World.Environment.values())
|
for (World.Environment environment : World.Environment.values())
|
||||||
{
|
{
|
||||||
values.add((this.challenge.getEnvironment().contains(environment.name()) ? "§2" : "§c") +
|
values.add((this.challenge.getEnvironment().contains(environment.name()) ? "&2" : "&c") +
|
||||||
this.user.getTranslation("challenges.gui.admin.descriptions." + environment.name().toLowerCase()));
|
this.user.getTranslation("challenges.gui.admin.descriptions." + environment.name().toLowerCase()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1153,7 +1154,7 @@ public class EditChallengeGUI extends CommonGUI
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
return new PanelItem(icon, name, description, glow, clickHandler, false);
|
return new PanelItem(icon, name, GuiUtils.stringSplit(description), glow, clickHandler, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -13,11 +13,10 @@ import world.bentobox.bentobox.api.panels.PanelItem;
|
|||||||
import world.bentobox.bentobox.api.panels.builders.PanelBuilder;
|
import world.bentobox.bentobox.api.panels.builders.PanelBuilder;
|
||||||
import world.bentobox.bentobox.api.panels.builders.PanelItemBuilder;
|
import world.bentobox.bentobox.api.panels.builders.PanelItemBuilder;
|
||||||
import world.bentobox.bentobox.api.user.User;
|
import world.bentobox.bentobox.api.user.User;
|
||||||
import world.bentobox.bentobox.util.ItemParser;
|
|
||||||
import world.bentobox.challenges.ChallengesAddon;
|
import world.bentobox.challenges.ChallengesAddon;
|
||||||
import world.bentobox.challenges.ChallengesManager;
|
import world.bentobox.challenges.ChallengesManager;
|
||||||
import world.bentobox.challenges.database.object.ChallengeLevel;
|
|
||||||
import world.bentobox.challenges.database.object.Challenge;
|
import world.bentobox.challenges.database.object.Challenge;
|
||||||
|
import world.bentobox.challenges.database.object.ChallengeLevel;
|
||||||
import world.bentobox.challenges.panel.CommonGUI;
|
import world.bentobox.challenges.panel.CommonGUI;
|
||||||
import world.bentobox.challenges.panel.util.ItemSwitchGUI;
|
import world.bentobox.challenges.panel.util.ItemSwitchGUI;
|
||||||
import world.bentobox.challenges.panel.util.NumberGUI;
|
import world.bentobox.challenges.panel.util.NumberGUI;
|
||||||
@ -253,7 +252,7 @@ public class EditLevelGUI extends CommonGUI
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
return new PanelItem(icon, name, description, glow, clickHandler, false);
|
return new PanelItem(icon, name, GuiUtils.stringSplit(description), glow, clickHandler, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -266,7 +265,7 @@ public class EditLevelGUI extends CommonGUI
|
|||||||
{
|
{
|
||||||
return new PanelItemBuilder().
|
return new PanelItemBuilder().
|
||||||
name(challenge.getFriendlyName()).
|
name(challenge.getFriendlyName()).
|
||||||
description(challenge.getDescription()).
|
description(GuiUtils.stringSplit(challenge.getDescription())).
|
||||||
icon(challenge.getIcon()).
|
icon(challenge.getIcon()).
|
||||||
clickHandler((panel, user1, clickType, slot) -> {
|
clickHandler((panel, user1, clickType, slot) -> {
|
||||||
// Open challenges edit screen.
|
// Open challenges edit screen.
|
||||||
@ -591,7 +590,7 @@ public class EditLevelGUI extends CommonGUI
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
return new PanelItem(icon, name, description, glow, clickHandler, false);
|
return new PanelItem(icon, name, GuiUtils.stringSplit(description), glow, clickHandler, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -66,7 +66,7 @@ public class EditSettingsGUI extends CommonGUI
|
|||||||
// resetChallenges
|
// resetChallenges
|
||||||
panelBuilder.item(19, new PanelItemBuilder().
|
panelBuilder.item(19, new PanelItemBuilder().
|
||||||
name(this.user.getTranslation("challenges.gui.admin.buttons.reset")).
|
name(this.user.getTranslation("challenges.gui.admin.buttons.reset")).
|
||||||
description(this.user.getTranslation("challenges.gui.admin.descriptions.reset")).
|
description(GuiUtils.stringSplit(this.user.getTranslation("challenges.gui.admin.descriptions.reset"))).
|
||||||
icon(Material.LAVA_BUCKET).
|
icon(Material.LAVA_BUCKET).
|
||||||
clickHandler((panel, user1, clickType, i) -> {
|
clickHandler((panel, user1, clickType, i) -> {
|
||||||
this.addon.getChallengesSettings().setResetChallenges(
|
this.addon.getChallengesSettings().setResetChallenges(
|
||||||
@ -79,7 +79,7 @@ public class EditSettingsGUI extends CommonGUI
|
|||||||
// broadcastMessages
|
// broadcastMessages
|
||||||
panelBuilder.item(20, new PanelItemBuilder().
|
panelBuilder.item(20, new PanelItemBuilder().
|
||||||
name(this.user.getTranslation("challenges.gui.admin.buttons.broadcast")).
|
name(this.user.getTranslation("challenges.gui.admin.buttons.broadcast")).
|
||||||
description(this.user.getTranslation("challenges.gui.admin.descriptions.broadcast")).
|
description(GuiUtils.stringSplit(this.user.getTranslation("challenges.gui.admin.descriptions.broadcast"))).
|
||||||
icon(Material.JUKEBOX).
|
icon(Material.JUKEBOX).
|
||||||
clickHandler((panel, user1, clickType, i) -> {
|
clickHandler((panel, user1, clickType, i) -> {
|
||||||
this.addon.getChallengesSettings().setBroadcastMessages(
|
this.addon.getChallengesSettings().setBroadcastMessages(
|
||||||
@ -92,7 +92,7 @@ public class EditSettingsGUI extends CommonGUI
|
|||||||
// removeCompleteOneTimeChallenges
|
// removeCompleteOneTimeChallenges
|
||||||
panelBuilder.item(21, new PanelItemBuilder().
|
panelBuilder.item(21, new PanelItemBuilder().
|
||||||
name(this.user.getTranslation("challenges.gui.admin.buttons.remove-on-complete")).
|
name(this.user.getTranslation("challenges.gui.admin.buttons.remove-on-complete")).
|
||||||
description(this.user.getTranslation("challenges.gui.admin.descriptions.remove-on-complete")).
|
description(GuiUtils.stringSplit(this.user.getTranslation("challenges.gui.admin.descriptions.remove-on-complete"))).
|
||||||
icon(Material.MAGMA_BLOCK).
|
icon(Material.MAGMA_BLOCK).
|
||||||
clickHandler((panel, user1, clickType, i) -> {
|
clickHandler((panel, user1, clickType, i) -> {
|
||||||
this.addon.getChallengesSettings().setRemoveCompleteOneTimeChallenges(
|
this.addon.getChallengesSettings().setRemoveCompleteOneTimeChallenges(
|
||||||
@ -105,7 +105,7 @@ public class EditSettingsGUI extends CommonGUI
|
|||||||
// addCompletedGlow
|
// addCompletedGlow
|
||||||
panelBuilder.item(22, new PanelItemBuilder().
|
panelBuilder.item(22, new PanelItemBuilder().
|
||||||
name(this.user.getTranslation("challenges.gui.admin.buttons.glow")).
|
name(this.user.getTranslation("challenges.gui.admin.buttons.glow")).
|
||||||
description(this.user.getTranslation("challenges.gui.admin.descriptions.glow")).
|
description(GuiUtils.stringSplit(this.user.getTranslation("challenges.gui.admin.descriptions.glow"))).
|
||||||
icon(Material.GLOWSTONE).
|
icon(Material.GLOWSTONE).
|
||||||
clickHandler((panel, user1, clickType, i) -> {
|
clickHandler((panel, user1, clickType, i) -> {
|
||||||
this.addon.getChallengesSettings().setAddCompletedGlow(
|
this.addon.getChallengesSettings().setAddCompletedGlow(
|
||||||
@ -118,7 +118,7 @@ public class EditSettingsGUI extends CommonGUI
|
|||||||
// freeChallengesAtTheTop
|
// freeChallengesAtTheTop
|
||||||
panelBuilder.item(23, new PanelItemBuilder().
|
panelBuilder.item(23, new PanelItemBuilder().
|
||||||
name(this.user.getTranslation("challenges.gui.admin.buttons.free-challenges")).
|
name(this.user.getTranslation("challenges.gui.admin.buttons.free-challenges")).
|
||||||
description(this.user.getTranslation("challenges.gui.admin.descriptions.free-challenges")).
|
description(GuiUtils.stringSplit(this.user.getTranslation("challenges.gui.admin.descriptions.free-challenges"))).
|
||||||
icon(Material.FILLED_MAP).
|
icon(Material.FILLED_MAP).
|
||||||
clickHandler((panel, user1, clickType, i) -> {
|
clickHandler((panel, user1, clickType, i) -> {
|
||||||
this.addon.getChallengesSettings().setFreeChallengesFirst(
|
this.addon.getChallengesSettings().setFreeChallengesFirst(
|
||||||
|
@ -134,7 +134,7 @@ public class ListChallengesGUI extends CommonGUI
|
|||||||
{
|
{
|
||||||
PanelItemBuilder itemBuilder = new PanelItemBuilder().
|
PanelItemBuilder itemBuilder = new PanelItemBuilder().
|
||||||
name(challenge.getFriendlyName()).
|
name(challenge.getFriendlyName()).
|
||||||
description(challenge.getDescription()).
|
description(GuiUtils.stringSplit(challenge.getDescription())).
|
||||||
icon(challenge.getIcon()).
|
icon(challenge.getIcon()).
|
||||||
glow(challenge.isDeployed());
|
glow(challenge.isDeployed());
|
||||||
|
|
||||||
|
@ -134,7 +134,7 @@ public class ListLevelsGUI extends CommonGUI
|
|||||||
{
|
{
|
||||||
PanelItemBuilder itemBuilder = new PanelItemBuilder().
|
PanelItemBuilder itemBuilder = new PanelItemBuilder().
|
||||||
name(challengeLevel.getFriendlyName()).
|
name(challengeLevel.getFriendlyName()).
|
||||||
description(challengeLevel.getUnlockMessage()).
|
description(GuiUtils.stringSplit(challengeLevel.getUnlockMessage())).
|
||||||
icon(challengeLevel.getIcon()).
|
icon(challengeLevel.getIcon()).
|
||||||
glow(false);
|
glow(false);
|
||||||
|
|
||||||
|
@ -216,7 +216,7 @@ public class ListUsersGUI extends CommonGUI
|
|||||||
return new PanelItemBuilder().
|
return new PanelItemBuilder().
|
||||||
name(player.getName()).
|
name(player.getName()).
|
||||||
icon(Material.BARRIER).
|
icon(Material.BARRIER).
|
||||||
description(this.user.getTranslation("general.errors.player-has-no-island")).
|
description(GuiUtils.stringSplit(this.user.getTranslation("general.errors.player-has-no-island"))).
|
||||||
clickHandler((panel, user1, clickType, slot) -> false).
|
clickHandler((panel, user1, clickType, slot) -> false).
|
||||||
build();
|
build();
|
||||||
}
|
}
|
||||||
@ -258,7 +258,7 @@ public class ListUsersGUI extends CommonGUI
|
|||||||
|
|
||||||
for (int i = 0; i < ViewMode.values().length; i++)
|
for (int i = 0; i < ViewMode.values().length; i++)
|
||||||
{
|
{
|
||||||
values.add((this.modeIndex == i ? "§2" : "§c") +
|
values.add((this.modeIndex == i ? "&2" : "&c") +
|
||||||
this.user.getTranslation("challenges.gui.admin.descriptions." +
|
this.user.getTranslation("challenges.gui.admin.descriptions." +
|
||||||
ViewMode.values()[i].name().toLowerCase()));
|
ViewMode.values()[i].name().toLowerCase()));
|
||||||
}
|
}
|
||||||
@ -267,7 +267,7 @@ public class ListUsersGUI extends CommonGUI
|
|||||||
name(this.user.getTranslation("challenges.gui.admin.buttons.toggle-users",
|
name(this.user.getTranslation("challenges.gui.admin.buttons.toggle-users",
|
||||||
"[value]",
|
"[value]",
|
||||||
this.user.getTranslation("challenges.gui.admin.descriptions." + ViewMode.values()[this.modeIndex].name().toLowerCase()))).
|
this.user.getTranslation("challenges.gui.admin.descriptions." + ViewMode.values()[this.modeIndex].name().toLowerCase()))).
|
||||||
description(values).
|
description(GuiUtils.stringSplit(values)).
|
||||||
icon(Material.STONE_BUTTON).
|
icon(Material.STONE_BUTTON).
|
||||||
clickHandler(
|
clickHandler(
|
||||||
(panel, user1, clickType, slot) -> {
|
(panel, user1, clickType, slot) -> {
|
||||||
|
@ -5,7 +5,6 @@ import org.bukkit.Material;
|
|||||||
import org.bukkit.World;
|
import org.bukkit.World;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import world.bentobox.bentobox.api.panels.PanelItem;
|
import world.bentobox.bentobox.api.panels.PanelItem;
|
||||||
@ -17,6 +16,7 @@ import world.bentobox.challenges.ChallengesManager;
|
|||||||
import world.bentobox.challenges.database.object.Challenge;
|
import world.bentobox.challenges.database.object.Challenge;
|
||||||
import world.bentobox.challenges.panel.CommonGUI;
|
import world.bentobox.challenges.panel.CommonGUI;
|
||||||
import world.bentobox.challenges.panel.TryToComplete;
|
import world.bentobox.challenges.panel.TryToComplete;
|
||||||
|
import world.bentobox.challenges.utils.GuiUtils;
|
||||||
import world.bentobox.challenges.utils.LevelStatus;
|
import world.bentobox.challenges.utils.LevelStatus;
|
||||||
|
|
||||||
|
|
||||||
@ -320,7 +320,7 @@ public class ChallengesGUI extends CommonGUI
|
|||||||
return new PanelItemBuilder().
|
return new PanelItemBuilder().
|
||||||
icon(challenge.getIcon()).
|
icon(challenge.getIcon()).
|
||||||
name(challenge.getFriendlyName().isEmpty() ? challenge.getUniqueId() : challenge.getFriendlyName()).
|
name(challenge.getFriendlyName().isEmpty() ? challenge.getUniqueId() : challenge.getFriendlyName()).
|
||||||
description(this.createChallengeDescription(challenge)).
|
description(GuiUtils.stringSplit(this.createChallengeDescription(challenge))).
|
||||||
clickHandler((panel, user1, clickType, slot) -> {
|
clickHandler((panel, user1, clickType, slot) -> {
|
||||||
new TryToComplete(this.addon,
|
new TryToComplete(this.addon,
|
||||||
this.user,
|
this.user,
|
||||||
@ -496,8 +496,7 @@ public class ChallengesGUI extends CommonGUI
|
|||||||
if (level.isUnlocked())
|
if (level.isUnlocked())
|
||||||
{
|
{
|
||||||
icon = level.getLevel().getIcon();
|
icon = level.getLevel().getIcon();
|
||||||
description = Collections.singletonList(
|
description = GuiUtils.stringSplit(this.user.getTranslation("challenges.navigation", "[level]", name));
|
||||||
this.user.getTranslation("challenges.navigation", "[level]", name));
|
|
||||||
clickHandler = (panel, user1, clickType, slot) -> {
|
clickHandler = (panel, user1, clickType, slot) -> {
|
||||||
this.lastSelectedLevel = level;
|
this.lastSelectedLevel = level;
|
||||||
|
|
||||||
@ -514,7 +513,7 @@ public class ChallengesGUI extends CommonGUI
|
|||||||
{
|
{
|
||||||
icon = new ItemStack(Material.BOOK);
|
icon = new ItemStack(Material.BOOK);
|
||||||
|
|
||||||
description = Collections.singletonList(
|
description = GuiUtils.stringSplit(
|
||||||
this.user.getTranslation("challenges.to-complete",
|
this.user.getTranslation("challenges.to-complete",
|
||||||
"[challengesToDo]", Integer.toString(level.getNumberOfChallengesStillToDo()),
|
"[challengesToDo]", Integer.toString(level.getNumberOfChallengesStillToDo()),
|
||||||
"[thisLevel]", level.getPreviousLevel().getFriendlyName()));
|
"[thisLevel]", level.getPreviousLevel().getFriendlyName()));
|
||||||
|
@ -14,6 +14,7 @@ import world.bentobox.bentobox.api.panels.PanelItem;
|
|||||||
import world.bentobox.bentobox.api.panels.PanelListener;
|
import world.bentobox.bentobox.api.panels.PanelListener;
|
||||||
import world.bentobox.bentobox.api.panels.builders.PanelBuilder;
|
import world.bentobox.bentobox.api.panels.builders.PanelBuilder;
|
||||||
import world.bentobox.bentobox.api.user.User;
|
import world.bentobox.bentobox.api.user.User;
|
||||||
|
import world.bentobox.challenges.utils.GuiUtils;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -123,7 +124,7 @@ public class ItemSwitchGUI
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
return new PanelItem(icon, name, description, false, clickHandler, false);
|
return new PanelItem(icon, name, GuiUtils.stringSplit(description), false, clickHandler, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -238,7 +238,7 @@ public class NumberGUI
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
return new PanelItem(icon, name, description, glow, clickHandler, false);
|
return new PanelItem(icon, name, GuiUtils.stringSplit(description), glow, clickHandler, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -127,7 +127,7 @@ public class SelectChallengeGUI
|
|||||||
{
|
{
|
||||||
return new PanelItemBuilder().
|
return new PanelItemBuilder().
|
||||||
name(challenge.getFriendlyName()).
|
name(challenge.getFriendlyName()).
|
||||||
description(challenge.getDescription()).
|
description(GuiUtils.stringSplit(challenge.getDescription())).
|
||||||
icon(challenge.getIcon()).
|
icon(challenge.getIcon()).
|
||||||
clickHandler((panel, user1, clickType, slot) -> {
|
clickHandler((panel, user1, clickType, slot) -> {
|
||||||
this.consumer.accept(true, challenge);
|
this.consumer.accept(true, challenge);
|
||||||
|
@ -3,7 +3,10 @@ package world.bentobox.challenges.panel.util;
|
|||||||
|
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
import java.util.*;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.List;
|
||||||
import java.util.function.BiConsumer;
|
import java.util.function.BiConsumer;
|
||||||
|
|
||||||
import net.wesjd.anvilgui.AnvilGUI;
|
import net.wesjd.anvilgui.AnvilGUI;
|
||||||
@ -174,7 +177,7 @@ public class StringListGUI
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
return new PanelItem(icon, name, description, false, clickHandler, false);
|
return new PanelItem(icon, name, GuiUtils.stringSplit(description), false, clickHandler, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -6,7 +6,6 @@ import org.bukkit.ChatColor;
|
|||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.entity.EntityType;
|
import org.bukkit.entity.EntityType;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
@ -385,4 +384,22 @@ public class GuiUtils
|
|||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Simple splitter for all strings in list.
|
||||||
|
* @param stringList - list of string to be split
|
||||||
|
* @return list of split strings
|
||||||
|
*/
|
||||||
|
public static List<String> stringSplit(List<String> stringList)
|
||||||
|
{
|
||||||
|
if (stringList.isEmpty())
|
||||||
|
{
|
||||||
|
return stringList;
|
||||||
|
}
|
||||||
|
|
||||||
|
List<String> newList = new ArrayList<>(stringList.size());
|
||||||
|
stringList.stream().map(GuiUtils::stringSplit).forEach(newList::addAll);
|
||||||
|
return newList;
|
||||||
|
}
|
||||||
}
|
}
|
@ -134,7 +134,7 @@ challenges:
|
|||||||
search-radius: Search radius
|
search-radius: Search radius
|
||||||
settings: Settings
|
settings: Settings
|
||||||
toggle-users: Choose players
|
toggle-users: Choose players
|
||||||
type: Challenge Type
|
type: 'Challenge Type: [value]'
|
||||||
waiver-amount: Waiver Amount
|
waiver-amount: Waiver Amount
|
||||||
import: Import
|
import: Import
|
||||||
choose-challenge-title: Challenges List
|
choose-challenge-title: Challenges List
|
||||||
|
Loading…
Reference in New Issue
Block a user