mirror of
https://github.com/BentoBoxWorld/Challenges.git
synced 2024-11-24 11:36:53 +01:00
WIP for #338 enable viewing of challenges by admins.
This commit is contained in:
parent
ec6b950304
commit
ace31c292e
@ -2,10 +2,12 @@ package world.bentobox.challenges.commands.admin;
|
|||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import world.bentobox.bentobox.BentoBox;
|
||||||
import world.bentobox.bentobox.api.commands.CompositeCommand;
|
import world.bentobox.bentobox.api.commands.CompositeCommand;
|
||||||
import world.bentobox.bentobox.api.user.User;
|
import world.bentobox.bentobox.api.user.User;
|
||||||
import world.bentobox.challenges.ChallengesAddon;
|
import world.bentobox.challenges.ChallengesAddon;
|
||||||
import world.bentobox.challenges.panel.admin.AdminPanel;
|
import world.bentobox.challenges.panel.admin.AdminPanel;
|
||||||
|
import world.bentobox.challenges.panel.user.ChallengesPanel;
|
||||||
|
|
||||||
|
|
||||||
public class ChallengesAdminCommand extends CompositeCommand
|
public class ChallengesAdminCommand extends CompositeCommand
|
||||||
@ -19,9 +21,9 @@ public class ChallengesAdminCommand extends CompositeCommand
|
|||||||
public ChallengesAdminCommand(ChallengesAddon addon, CompositeCommand parent)
|
public ChallengesAdminCommand(ChallengesAddon addon, CompositeCommand parent)
|
||||||
{
|
{
|
||||||
super(addon,
|
super(addon,
|
||||||
parent,
|
parent,
|
||||||
addon.getChallengesSettings().getAdminMainCommand().split(" ")[0],
|
addon.getChallengesSettings().getAdminMainCommand().split(" ")[0],
|
||||||
addon.getChallengesSettings().getAdminMainCommand().split(" "));
|
addon.getChallengesSettings().getAdminMainCommand().split(" "));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -52,16 +54,36 @@ public class ChallengesAdminCommand extends CompositeCommand
|
|||||||
@Override
|
@Override
|
||||||
public boolean execute(User user, String label, List<String> args)
|
public boolean execute(User user, String label, List<String> args)
|
||||||
{
|
{
|
||||||
|
BentoBox.getInstance().logDebug("Args size = " + args.size());
|
||||||
// Open up the admin challenges GUI
|
// Open up the admin challenges GUI
|
||||||
if (user.isPlayer())
|
if (user.isPlayer())
|
||||||
{
|
{
|
||||||
AdminPanel.open(this.getAddon(),
|
if (args.isEmpty()) {
|
||||||
this.getWorld(),
|
AdminPanel.open(this.getAddon(),
|
||||||
user,
|
this.getWorld(),
|
||||||
this.getTopLabel(),
|
user,
|
||||||
this.getPermissionPrefix());
|
this.getTopLabel(),
|
||||||
|
this.getPermissionPrefix());
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
} else if (args.size() == 1) {
|
||||||
|
User target = getPlayers().getUser(args.get(0).trim());
|
||||||
|
if (target == null) {
|
||||||
|
user.sendMessage("general.errors.unknown-player");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
ChallengesPanel.view(this.getAddon(),
|
||||||
|
this.getWorld(),
|
||||||
|
target,
|
||||||
|
user,
|
||||||
|
this.getTopLabel(),
|
||||||
|
this.getPermissionPrefix());
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
// Show help
|
||||||
|
showHelp(this, user);
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -42,7 +42,7 @@ public abstract class CommonPagedPanel<T> extends CommonPanel
|
|||||||
User user,
|
User user,
|
||||||
World world, String topLabel, String permissionPrefix)
|
World world, String topLabel, String permissionPrefix)
|
||||||
{
|
{
|
||||||
super(addon, user, world, topLabel, permissionPrefix);
|
super(addon, user, user, world, topLabel, permissionPrefix);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -38,28 +38,80 @@ import world.bentobox.challenges.utils.Utils;
|
|||||||
* This class contains common methods for all panels.
|
* This class contains common methods for all panels.
|
||||||
*/
|
*/
|
||||||
public abstract class CommonPanel {
|
public abstract class CommonPanel {
|
||||||
|
|
||||||
|
// ---------------------------------------------------------------------
|
||||||
|
// Section: Variables
|
||||||
|
// ---------------------------------------------------------------------
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This variable stores parent gui.
|
||||||
|
*/
|
||||||
|
@Nullable
|
||||||
|
protected final CommonPanel parentPanel;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Variable stores Challenges addon.
|
||||||
|
*/
|
||||||
|
protected final ChallengesAddon addon;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Variable stores Challenges addon manager.
|
||||||
|
*/
|
||||||
|
protected final ChallengesManager manager;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Variable stores world in which panel is referred to.
|
||||||
|
*/
|
||||||
|
protected final World world;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Variable stores user who created this panel.
|
||||||
|
*/
|
||||||
|
protected final User user;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Variable stores top label of command from which panel was called.
|
||||||
|
*/
|
||||||
|
protected final String topLabel;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Variable stores permission prefix of command from which panel was called.
|
||||||
|
*/
|
||||||
|
protected final String permissionPrefix;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This object holds PanelItem that allows to return to previous panel.
|
||||||
|
*/
|
||||||
|
protected PanelItem returnButton;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The panel viewer
|
||||||
|
*/
|
||||||
|
protected User viewer;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This is default constructor for all classes that extends CommonPanel.
|
* This is default constructor for all classes that extends CommonPanel.
|
||||||
*
|
*
|
||||||
* @param addon ChallengesAddon instance.
|
* @param addon ChallengesAddon instance.
|
||||||
* @param user User who opens panel.
|
* @param user User who opens panel.
|
||||||
*/
|
*/
|
||||||
protected CommonPanel(ChallengesAddon addon, User user, World world, String topLabel, String permissionPrefix) {
|
protected CommonPanel(ChallengesAddon addon, User user, User viewer, World world, String topLabel, String permissionPrefix) {
|
||||||
this.addon = addon;
|
this.addon = addon;
|
||||||
this.world = world;
|
this.world = world;
|
||||||
this.manager = addon.getChallengesManager();
|
this.manager = addon.getChallengesManager();
|
||||||
this.user = user;
|
this.user = user;
|
||||||
|
this.viewer = viewer;
|
||||||
|
|
||||||
this.topLabel = topLabel;
|
this.topLabel = topLabel;
|
||||||
this.permissionPrefix = permissionPrefix;
|
this.permissionPrefix = permissionPrefix;
|
||||||
|
|
||||||
this.parentPanel = null;
|
this.parentPanel = null;
|
||||||
|
|
||||||
this.returnButton = new PanelItemBuilder().name(this.user.getTranslation(Constants.BUTTON + "quit.name"))
|
this.returnButton = new PanelItemBuilder().name(this.viewer.getTranslation(Constants.BUTTON + "quit.name"))
|
||||||
.description(this.user.getTranslationOrNothing(Constants.BUTTON + "quit.description")).description("")
|
.description(this.viewer.getTranslationOrNothing(Constants.BUTTON + "quit.description")).description("")
|
||||||
.description(this.user.getTranslationOrNothing(Constants.TIPS + "click-to-quit"))
|
.description(this.viewer.getTranslationOrNothing(Constants.TIPS + "click-to-quit"))
|
||||||
.icon(Material.OAK_DOOR).clickHandler((panel, user1, clickType, i) -> {
|
.icon(Material.OAK_DOOR).clickHandler((panel, user1, clickType, i) -> {
|
||||||
this.user.closeInventory();
|
this.viewer.closeInventory();
|
||||||
return true;
|
return true;
|
||||||
}).build();
|
}).build();
|
||||||
}
|
}
|
||||||
@ -73,6 +125,7 @@ public abstract class CommonPanel {
|
|||||||
this.addon = parentPanel.addon;
|
this.addon = parentPanel.addon;
|
||||||
this.manager = parentPanel.manager;
|
this.manager = parentPanel.manager;
|
||||||
this.user = parentPanel.user;
|
this.user = parentPanel.user;
|
||||||
|
this.viewer = parentPanel.viewer;
|
||||||
this.world = parentPanel.world;
|
this.world = parentPanel.world;
|
||||||
|
|
||||||
this.topLabel = parentPanel.topLabel;
|
this.topLabel = parentPanel.topLabel;
|
||||||
@ -80,9 +133,9 @@ public abstract class CommonPanel {
|
|||||||
|
|
||||||
this.parentPanel = parentPanel;
|
this.parentPanel = parentPanel;
|
||||||
|
|
||||||
this.returnButton = new PanelItemBuilder().name(this.user.getTranslation(Constants.BUTTON + "return.name"))
|
this.returnButton = new PanelItemBuilder().name(this.viewer.getTranslation(Constants.BUTTON + "return.name"))
|
||||||
.description(this.user.getTranslationOrNothing(Constants.BUTTON + "return.description")).description("")
|
.description(this.viewer.getTranslationOrNothing(Constants.BUTTON + "return.description")).description("")
|
||||||
.description(this.user.getTranslationOrNothing(Constants.TIPS + "click-to-return"))
|
.description(this.viewer.getTranslationOrNothing(Constants.TIPS + "click-to-return"))
|
||||||
.icon(Material.OAK_DOOR).clickHandler((panel, user1, clickType, i) -> {
|
.icon(Material.OAK_DOOR).clickHandler((panel, user1, clickType, i) -> {
|
||||||
this.parentPanel.build();
|
this.parentPanel.build();
|
||||||
return true;
|
return true;
|
||||||
@ -131,7 +184,7 @@ public abstract class CommonPanel {
|
|||||||
final String reference = Constants.DESCRIPTIONS + "challenge.";
|
final String reference = Constants.DESCRIPTIONS + "challenge.";
|
||||||
|
|
||||||
// Get description from custom translations
|
// Get description from custom translations
|
||||||
String description = this.user
|
String description = this.viewer
|
||||||
.getTranslationOrNothing("challenges.challenges." + challenge.getUniqueId() + ".description");
|
.getTranslationOrNothing("challenges.challenges." + challenge.getUniqueId() + ".description");
|
||||||
|
|
||||||
if (description.isEmpty()) {
|
if (description.isEmpty()) {
|
||||||
@ -148,11 +201,11 @@ public abstract class CommonPanel {
|
|||||||
String requirements = isCompletedAll ? "" : this.generateRequirements(challenge, target);
|
String requirements = isCompletedAll ? "" : this.generateRequirements(challenge, target);
|
||||||
// Get rewards in single string
|
// Get rewards in single string
|
||||||
String rewards = isCompletedAll ? "" : this.generateRewards(challenge, isCompletedOnce);
|
String rewards = isCompletedAll ? "" : this.generateRewards(challenge, isCompletedOnce);
|
||||||
// Get coolDown in singe string
|
// Get coolDown in single string
|
||||||
String coolDown = isCompletedAll || challenge.getTimeout() <= 0 ? "" : this.generateCoolDown(challenge, target);
|
String coolDown = isCompletedAll || challenge.getTimeout() <= 0 ? "" : this.generateCoolDown(challenge, target);
|
||||||
|
|
||||||
if (!description.replaceAll("(?m)^[ \\t]*\\r?\\n", "").isEmpty()) {
|
if (!description.replaceAll("(?m)^[ \\t]*\\r?\\n", "").isEmpty()) {
|
||||||
String returnString = this.user.getTranslationOrNothing(reference + "lore", "[requirements]", requirements,
|
String returnString = this.viewer.getTranslationOrNothing(reference + "lore", "[requirements]", requirements,
|
||||||
"[rewards]", rewards, "[status]", status, "[cooldown]", coolDown);
|
"[rewards]", rewards, "[status]", status, "[cooldown]", coolDown);
|
||||||
|
|
||||||
// remove empty lines from the generated text.
|
// remove empty lines from the generated text.
|
||||||
@ -169,7 +222,7 @@ public abstract class CommonPanel {
|
|||||||
|
|
||||||
return collect;
|
return collect;
|
||||||
} else {
|
} else {
|
||||||
String returnString = this.user.getTranslationOrNothing(reference + "lore", Constants.PARAMETER_DESCRIPTION,
|
String returnString = this.viewer.getTranslationOrNothing(reference + "lore", Constants.PARAMETER_DESCRIPTION,
|
||||||
description, "[requirements]", requirements, "[rewards]", rewards, "[status]", status, "[cooldown]",
|
description, "[requirements]", requirements, "[rewards]", rewards, "[status]", status, "[cooldown]",
|
||||||
coolDown);
|
coolDown);
|
||||||
|
|
||||||
@ -196,16 +249,16 @@ public abstract class CommonPanel {
|
|||||||
long missing = this.manager.getLastCompletionDate(this.user, this.world, challenge) + challenge.getTimeout()
|
long missing = this.manager.getLastCompletionDate(this.user, this.world, challenge) + challenge.getTimeout()
|
||||||
- System.currentTimeMillis();
|
- System.currentTimeMillis();
|
||||||
|
|
||||||
coolDown = this.user.getTranslation(reference + "wait-time", "[time]",
|
coolDown = this.viewer.getTranslation(reference + "wait-time", "[time]",
|
||||||
Utils.parseDuration(Duration.ofMillis(missing), this.user));
|
Utils.parseDuration(Duration.ofMillis(missing), this.viewer));
|
||||||
} else {
|
} else {
|
||||||
coolDown = "";
|
coolDown = "";
|
||||||
}
|
}
|
||||||
|
|
||||||
String timeout = this.user.getTranslation(reference + "timeout", "[time]",
|
String timeout = this.viewer.getTranslation(reference + "timeout", "[time]",
|
||||||
Utils.parseDuration(Duration.ofMillis(challenge.getTimeout()), this.user));
|
Utils.parseDuration(Duration.ofMillis(challenge.getTimeout()), this.viewer));
|
||||||
|
|
||||||
return this.user.getTranslation(reference + "lore", "[timeout]", timeout, "[wait-time]", coolDown);
|
return this.viewer.getTranslation(reference + "lore", "[timeout]", timeout, "[wait-time]", coolDown);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -223,16 +276,16 @@ public abstract class CommonPanel {
|
|||||||
// If challenge can be completed everywhere, do not display requirement.
|
// If challenge can be completed everywhere, do not display requirement.
|
||||||
environment = "";
|
environment = "";
|
||||||
} else if (challenge.getEnvironment().size() == 1) {
|
} else if (challenge.getEnvironment().size() == 1) {
|
||||||
environment = this.user.getTranslationOrNothing(reference + "environment-single",
|
environment = this.viewer.getTranslationOrNothing(reference + "environment-single",
|
||||||
Constants.PARAMETER_ENVIRONMENT,
|
Constants.PARAMETER_ENVIRONMENT,
|
||||||
Utils.prettifyObject(challenge.getEnvironment().iterator().next(), this.user));
|
Utils.prettifyObject(challenge.getEnvironment().iterator().next(), this.viewer));
|
||||||
} else {
|
} else {
|
||||||
StringBuilder builder = new StringBuilder();
|
StringBuilder builder = new StringBuilder();
|
||||||
builder.append(this.user.getTranslationOrNothing(reference + "environment-title"));
|
builder.append(this.viewer.getTranslationOrNothing(reference + "environment-title"));
|
||||||
challenge.getEnvironment().stream().sorted().forEach(en -> {
|
challenge.getEnvironment().stream().sorted().forEach(en -> {
|
||||||
builder.append("\n");
|
builder.append("\n");
|
||||||
builder.append(this.user.getTranslationOrNothing(reference + "environment-single",
|
builder.append(this.viewer.getTranslationOrNothing(reference + "environment-single",
|
||||||
Constants.PARAMETER_ENVIRONMENT, Utils.prettifyObject(en, this.user)));
|
Constants.PARAMETER_ENVIRONMENT, Utils.prettifyObject(en, this.viewer)));
|
||||||
});
|
});
|
||||||
|
|
||||||
environment = builder.toString();
|
environment = builder.toString();
|
||||||
@ -248,13 +301,13 @@ public abstract class CommonPanel {
|
|||||||
StringBuilder permissionBuilder = new StringBuilder();
|
StringBuilder permissionBuilder = new StringBuilder();
|
||||||
|
|
||||||
if (missingPermissions.size() == 1) {
|
if (missingPermissions.size() == 1) {
|
||||||
permissionBuilder.append(this.user.getTranslationOrNothing(reference + "permission-single",
|
permissionBuilder.append(this.viewer.getTranslationOrNothing(reference + "permission-single",
|
||||||
Constants.PARAMETER_PERMISSION, missingPermissions.get(0)));
|
Constants.PARAMETER_PERMISSION, missingPermissions.get(0)));
|
||||||
} else if (!missingPermissions.isEmpty()) {
|
} else if (!missingPermissions.isEmpty()) {
|
||||||
permissionBuilder.append(this.user.getTranslationOrNothing(reference + "permissions-title"));
|
permissionBuilder.append(this.viewer.getTranslationOrNothing(reference + "permissions-title"));
|
||||||
missingPermissions.forEach(permission -> {
|
missingPermissions.forEach(permission -> {
|
||||||
permissionBuilder.append("\n");
|
permissionBuilder.append("\n");
|
||||||
permissionBuilder.append(this.user.getTranslationOrNothing(reference + "permissions-list",
|
permissionBuilder.append(this.viewer.getTranslationOrNothing(reference + "permissions-list",
|
||||||
Constants.PARAMETER_PERMISSION, permission));
|
Constants.PARAMETER_PERMISSION, permission));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -271,7 +324,7 @@ public abstract class CommonPanel {
|
|||||||
case STATISTIC_TYPE -> this.generateStatisticChallenge(challenge.getRequirements());
|
case STATISTIC_TYPE -> this.generateStatisticChallenge(challenge.getRequirements());
|
||||||
};
|
};
|
||||||
|
|
||||||
return this.user.getTranslationOrNothing(reference + "lore", Constants.PARAMETER_ENVIRONMENT, environment,
|
return this.viewer.getTranslationOrNothing(reference + "lore", Constants.PARAMETER_ENVIRONMENT, environment,
|
||||||
"[type-requirement]", typeRequirement, "[permissions]", permissions);
|
"[type-requirement]", typeRequirement, "[permissions]", permissions);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -288,17 +341,17 @@ public abstract class CommonPanel {
|
|||||||
|
|
||||||
if (!requirement.getRequiredBlocks().isEmpty()) {
|
if (!requirement.getRequiredBlocks().isEmpty()) {
|
||||||
StringBuilder builder = new StringBuilder();
|
StringBuilder builder = new StringBuilder();
|
||||||
builder.append(this.user.getTranslationOrNothing(reference + "blocks-title"));
|
builder.append(this.viewer.getTranslationOrNothing(reference + "blocks-title"));
|
||||||
requirement.getRequiredBlocks().entrySet().stream().sorted(Map.Entry.comparingByKey()).forEach(entry -> {
|
requirement.getRequiredBlocks().entrySet().stream().sorted(Map.Entry.comparingByKey()).forEach(entry -> {
|
||||||
builder.append("\n");
|
builder.append("\n");
|
||||||
|
|
||||||
if (entry.getValue() > 1) {
|
if (entry.getValue() > 1) {
|
||||||
builder.append(this.user.getTranslationOrNothing(reference + "blocks-value",
|
builder.append(this.viewer.getTranslationOrNothing(reference + "blocks-value",
|
||||||
Constants.PARAMETER_NUMBER, String.valueOf(entry.getValue()), Constants.PARAMETER_MATERIAL,
|
Constants.PARAMETER_NUMBER, String.valueOf(entry.getValue()), Constants.PARAMETER_MATERIAL,
|
||||||
Utils.prettifyObject(entry.getKey(), this.user)));
|
Utils.prettifyObject(entry.getKey(), this.viewer)));
|
||||||
} else {
|
} else {
|
||||||
builder.append(this.user.getTranslationOrNothing(reference + "block-value",
|
builder.append(this.viewer.getTranslationOrNothing(reference + "block-value",
|
||||||
Constants.PARAMETER_MATERIAL, Utils.prettifyObject(entry.getKey(), this.user)));
|
Constants.PARAMETER_MATERIAL, Utils.prettifyObject(entry.getKey(), this.viewer)));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -311,17 +364,17 @@ public abstract class CommonPanel {
|
|||||||
|
|
||||||
if (!requirement.getRequiredEntities().isEmpty()) {
|
if (!requirement.getRequiredEntities().isEmpty()) {
|
||||||
StringBuilder builder = new StringBuilder();
|
StringBuilder builder = new StringBuilder();
|
||||||
builder.append(this.user.getTranslationOrNothing(reference + "entities-title"));
|
builder.append(this.viewer.getTranslationOrNothing(reference + "entities-title"));
|
||||||
requirement.getRequiredEntities().entrySet().stream().sorted(Map.Entry.comparingByKey()).forEach(entry -> {
|
requirement.getRequiredEntities().entrySet().stream().sorted(Map.Entry.comparingByKey()).forEach(entry -> {
|
||||||
builder.append("\n");
|
builder.append("\n");
|
||||||
|
|
||||||
if (entry.getValue() > 1) {
|
if (entry.getValue() > 1) {
|
||||||
builder.append(this.user.getTranslationOrNothing(reference + "entities-value",
|
builder.append(this.viewer.getTranslationOrNothing(reference + "entities-value",
|
||||||
Constants.PARAMETER_NUMBER, String.valueOf(entry.getValue()), Constants.PARAMETER_ENTITY,
|
Constants.PARAMETER_NUMBER, String.valueOf(entry.getValue()), Constants.PARAMETER_ENTITY,
|
||||||
Utils.prettifyObject(entry.getKey(), this.user)));
|
Utils.prettifyObject(entry.getKey(), this.viewer)));
|
||||||
} else {
|
} else {
|
||||||
builder.append(this.user.getTranslationOrNothing(reference + "entity-value",
|
builder.append(this.viewer.getTranslationOrNothing(reference + "entity-value",
|
||||||
Constants.PARAMETER_ENTITY, Utils.prettifyObject(entry.getKey(), this.user)));
|
Constants.PARAMETER_ENTITY, Utils.prettifyObject(entry.getKey(), this.viewer)));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -330,17 +383,17 @@ public abstract class CommonPanel {
|
|||||||
entities = "";
|
entities = "";
|
||||||
}
|
}
|
||||||
|
|
||||||
String searchRadius = this.user.getTranslationOrNothing(reference + "search-radius", Constants.PARAMETER_NUMBER,
|
String searchRadius = this.viewer.getTranslationOrNothing(reference + "search-radius", Constants.PARAMETER_NUMBER,
|
||||||
String.valueOf(requirement.getSearchRadius()));
|
String.valueOf(requirement.getSearchRadius()));
|
||||||
|
|
||||||
String warningBlocks = requirement.isRemoveBlocks()
|
String warningBlocks = requirement.isRemoveBlocks()
|
||||||
? this.user.getTranslationOrNothing(reference + "warning-block")
|
? this.viewer.getTranslationOrNothing(reference + "warning-block")
|
||||||
: "";
|
: "";
|
||||||
String warningEntities = requirement.isRemoveEntities()
|
String warningEntities = requirement.isRemoveEntities()
|
||||||
? this.user.getTranslationOrNothing(reference + "warning-entity")
|
? this.viewer.getTranslationOrNothing(reference + "warning-entity")
|
||||||
: "";
|
: "";
|
||||||
|
|
||||||
return this.user.getTranslationOrNothing(reference + "lore", "[blocks]", blocks, "[entities]", entities,
|
return this.viewer.getTranslationOrNothing(reference + "lore", "[blocks]", blocks, "[entities]", entities,
|
||||||
"[warning-block]", warningBlocks, "[warning-entity]", warningEntities, "[search-radius]", searchRadius);
|
"[warning-block]", warningBlocks, "[warning-entity]", warningEntities, "[search-radius]", searchRadius);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -357,18 +410,18 @@ public abstract class CommonPanel {
|
|||||||
|
|
||||||
if (!requirement.getRequiredItems().isEmpty()) {
|
if (!requirement.getRequiredItems().isEmpty()) {
|
||||||
StringBuilder builder = new StringBuilder();
|
StringBuilder builder = new StringBuilder();
|
||||||
builder.append(this.user.getTranslationOrNothing(reference + "item-title"));
|
builder.append(this.viewer.getTranslationOrNothing(reference + "item-title"));
|
||||||
Utils.groupEqualItems(requirement.getRequiredItems(), requirement.getIgnoreMetaData()).stream()
|
Utils.groupEqualItems(requirement.getRequiredItems(), requirement.getIgnoreMetaData()).stream()
|
||||||
.sorted(Comparator.comparing(ItemStack::getType)).forEach(itemStack -> {
|
.sorted(Comparator.comparing(ItemStack::getType)).forEach(itemStack -> {
|
||||||
builder.append("\n");
|
builder.append("\n");
|
||||||
|
|
||||||
if (itemStack.getAmount() > 1) {
|
if (itemStack.getAmount() > 1) {
|
||||||
builder.append(this.user.getTranslationOrNothing(reference + "items-value", "[number]",
|
builder.append(this.viewer.getTranslationOrNothing(reference + "items-value", "[number]",
|
||||||
String.valueOf(itemStack.getAmount()), "[item]",
|
String.valueOf(itemStack.getAmount()), "[item]",
|
||||||
Utils.prettifyObject(itemStack, this.user)));
|
Utils.prettifyObject(itemStack, this.viewer)));
|
||||||
} else {
|
} else {
|
||||||
builder.append(this.user.getTranslationOrNothing(reference + "item-value", "[item]",
|
builder.append(this.viewer.getTranslationOrNothing(reference + "item-value", "[item]",
|
||||||
Utils.prettifyObject(itemStack, this.user)));
|
Utils.prettifyObject(itemStack, this.viewer)));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -377,9 +430,9 @@ public abstract class CommonPanel {
|
|||||||
items = "";
|
items = "";
|
||||||
}
|
}
|
||||||
|
|
||||||
String warning = requirement.isTakeItems() ? this.user.getTranslationOrNothing(reference + "warning") : "";
|
String warning = requirement.isTakeItems() ? this.viewer.getTranslationOrNothing(reference + "warning") : "";
|
||||||
|
|
||||||
return this.user.getTranslationOrNothing(reference + "lore", "[items]", items, "[warning]", warning);
|
return this.viewer.getTranslationOrNothing(reference + "lore", "[items]", items, "[warning]", warning);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -392,25 +445,25 @@ public abstract class CommonPanel {
|
|||||||
final String reference = Constants.DESCRIPTIONS + "challenge.requirements.other.";
|
final String reference = Constants.DESCRIPTIONS + "challenge.requirements.other.";
|
||||||
|
|
||||||
String experience = requirement.getRequiredExperience() <= 0 ? ""
|
String experience = requirement.getRequiredExperience() <= 0 ? ""
|
||||||
: this.user.getTranslationOrNothing(reference + "experience", "[number]",
|
: this.viewer.getTranslationOrNothing(reference + "experience", "[number]",
|
||||||
String.valueOf(requirement.getRequiredExperience()));
|
String.valueOf(requirement.getRequiredExperience()));
|
||||||
|
|
||||||
String experienceWarning = requirement.getRequiredExperience() > 0 && requirement.isTakeExperience()
|
String experienceWarning = requirement.getRequiredExperience() > 0 && requirement.isTakeExperience()
|
||||||
? this.user.getTranslationOrNothing(reference + "experience-warning")
|
? this.viewer.getTranslationOrNothing(reference + "experience-warning")
|
||||||
: "";
|
: "";
|
||||||
|
|
||||||
String money = !this.addon.isEconomyProvided() || requirement.getRequiredMoney() <= 0 ? ""
|
String money = !this.addon.isEconomyProvided() || requirement.getRequiredMoney() <= 0 ? ""
|
||||||
: this.user.getTranslationOrNothing(reference + "money", "[number]",
|
: this.viewer.getTranslationOrNothing(reference + "money", "[number]",
|
||||||
String.valueOf(requirement.getRequiredMoney()));
|
String.valueOf(requirement.getRequiredMoney()));
|
||||||
|
|
||||||
String moneyWarning = this.addon.isEconomyProvided() && requirement.getRequiredMoney() > 0
|
String moneyWarning = this.addon.isEconomyProvided() && requirement.getRequiredMoney() > 0
|
||||||
&& requirement.isTakeMoney() ? this.user.getTranslationOrNothing(reference + "money-warning") : "";
|
&& requirement.isTakeMoney() ? this.viewer.getTranslationOrNothing(reference + "money-warning") : "";
|
||||||
|
|
||||||
String level = !this.addon.isLevelProvided() || requirement.getRequiredIslandLevel() <= 0 ? ""
|
String level = !this.addon.isLevelProvided() || requirement.getRequiredIslandLevel() <= 0 ? ""
|
||||||
: this.user.getTranslationOrNothing(reference + "level", "[number]",
|
: this.viewer.getTranslationOrNothing(reference + "level", "[number]",
|
||||||
String.valueOf(requirement.getRequiredIslandLevel()));
|
String.valueOf(requirement.getRequiredIslandLevel()));
|
||||||
|
|
||||||
return this.user.getTranslationOrNothing(reference + "lore", "[experience]", experience, "[experience-warning]",
|
return this.viewer.getTranslationOrNothing(reference + "lore", "[experience]", experience, "[experience-warning]",
|
||||||
experienceWarning, "[money]", money, "[money-warning]", moneyWarning, "[level]", level);
|
experienceWarning, "[money]", money, "[money-warning]", moneyWarning, "[level]", level);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -431,40 +484,40 @@ public abstract class CommonPanel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
switch (requirement.getStatistic().getType()) {
|
switch (requirement.getStatistic().getType()) {
|
||||||
case UNTYPED -> statistic = this.user.getTranslationOrNothing(reference + "statistic", "[statistic]",
|
case UNTYPED -> statistic = this.viewer.getTranslationOrNothing(reference + "statistic", "[statistic]",
|
||||||
Utils.prettifyObject(requirement.getStatistic(), this.user), "[number]",
|
Utils.prettifyObject(requirement.getStatistic(), this.viewer), "[number]",
|
||||||
String.valueOf(requirement.getAmount()));
|
String.valueOf(requirement.getAmount()));
|
||||||
case ITEM, BLOCK -> {
|
case ITEM, BLOCK -> {
|
||||||
if (requirement.getAmount() > 1) {
|
if (requirement.getAmount() > 1) {
|
||||||
statistic = this.user.getTranslationOrNothing(reference + "multiple-target", "[statistic]",
|
statistic = this.viewer.getTranslationOrNothing(reference + "multiple-target", "[statistic]",
|
||||||
Utils.prettifyObject(requirement.getStatistic(), this.user), "[number]",
|
Utils.prettifyObject(requirement.getStatistic(), this.viewer), "[number]",
|
||||||
String.valueOf(requirement.getAmount()), "[target]",
|
String.valueOf(requirement.getAmount()), "[target]",
|
||||||
Utils.prettifyObject(requirement.getMaterial(), this.user));
|
Utils.prettifyObject(requirement.getMaterial(), this.viewer));
|
||||||
} else {
|
} else {
|
||||||
statistic = this.user.getTranslationOrNothing(reference + "single-target", "[statistic]",
|
statistic = this.viewer.getTranslationOrNothing(reference + "single-target", "[statistic]",
|
||||||
Utils.prettifyObject(requirement.getStatistic(), this.user), "[target]",
|
Utils.prettifyObject(requirement.getStatistic(), this.viewer), "[target]",
|
||||||
Utils.prettifyObject(requirement.getMaterial(), this.user));
|
Utils.prettifyObject(requirement.getMaterial(), this.viewer));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
case ENTITY -> {
|
case ENTITY -> {
|
||||||
if (requirement.getAmount() > 1) {
|
if (requirement.getAmount() > 1) {
|
||||||
statistic = this.user.getTranslationOrNothing(reference + "multiple-target", "[statistic]",
|
statistic = this.viewer.getTranslationOrNothing(reference + "multiple-target", "[statistic]",
|
||||||
Utils.prettifyObject(requirement.getStatistic(), this.user), "[number]",
|
Utils.prettifyObject(requirement.getStatistic(), this.viewer), "[number]",
|
||||||
String.valueOf(requirement.getAmount()), "[target]",
|
String.valueOf(requirement.getAmount()), "[target]",
|
||||||
Utils.prettifyObject(requirement.getEntity(), this.user));
|
Utils.prettifyObject(requirement.getEntity(), this.viewer));
|
||||||
} else {
|
} else {
|
||||||
statistic = this.user.getTranslationOrNothing(reference + "single-target", "[statistic]",
|
statistic = this.viewer.getTranslationOrNothing(reference + "single-target", "[statistic]",
|
||||||
Utils.prettifyObject(requirement.getStatistic(), this.user), "[target]",
|
Utils.prettifyObject(requirement.getStatistic(), this.viewer), "[target]",
|
||||||
Utils.prettifyObject(requirement.getEntity(), this.user));
|
Utils.prettifyObject(requirement.getEntity(), this.viewer));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
default -> statistic = "";
|
default -> statistic = "";
|
||||||
}
|
}
|
||||||
|
|
||||||
String warning = requirement.isReduceStatistic() ? this.user.getTranslationOrNothing(reference + "warning")
|
String warning = requirement.isReduceStatistic() ? this.viewer.getTranslationOrNothing(reference + "warning")
|
||||||
: "";
|
: "";
|
||||||
|
|
||||||
return this.user.getTranslationOrNothing(reference + "lore", "[statistic]", statistic, "[warning]", warning);
|
return this.viewer.getTranslationOrNothing(reference + "lore", "[statistic]", statistic, "[warning]", warning);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -483,17 +536,17 @@ public abstract class CommonPanel {
|
|||||||
|
|
||||||
if (completedAll) {
|
if (completedAll) {
|
||||||
if (maxCompletions > 1) {
|
if (maxCompletions > 1) {
|
||||||
return this.user.getTranslationOrNothing(reference + "completed-times-reached", Constants.PARAMETER_MAX,
|
return this.viewer.getTranslationOrNothing(reference + "completed-times-reached", Constants.PARAMETER_MAX,
|
||||||
String.valueOf(maxCompletions));
|
String.valueOf(maxCompletions));
|
||||||
} else {
|
} else {
|
||||||
return this.user.getTranslationOrNothing(reference + "completed");
|
return this.viewer.getTranslationOrNothing(reference + "completed");
|
||||||
}
|
}
|
||||||
} else if (completedOnce) {
|
} else if (completedOnce) {
|
||||||
if (maxCompletions > 0) {
|
if (maxCompletions > 0) {
|
||||||
return this.user.getTranslationOrNothing(reference + "completed-times-of", Constants.PARAMETER_MAX,
|
return this.viewer.getTranslationOrNothing(reference + "completed-times-of", Constants.PARAMETER_MAX,
|
||||||
String.valueOf(maxCompletions), Constants.PARAMETER_NUMBER, String.valueOf(completionCount));
|
String.valueOf(maxCompletions), Constants.PARAMETER_NUMBER, String.valueOf(completionCount));
|
||||||
} else {
|
} else {
|
||||||
return this.user.getTranslationOrNothing(reference + "completed-times", Constants.PARAMETER_NUMBER,
|
return this.viewer.getTranslationOrNothing(reference + "completed-times", Constants.PARAMETER_NUMBER,
|
||||||
String.valueOf(completionCount));
|
String.valueOf(completionCount));
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@ -530,18 +583,18 @@ public abstract class CommonPanel {
|
|||||||
|
|
||||||
if (!challenge.getRepeatItemReward().isEmpty()) {
|
if (!challenge.getRepeatItemReward().isEmpty()) {
|
||||||
StringBuilder builder = new StringBuilder();
|
StringBuilder builder = new StringBuilder();
|
||||||
builder.append(this.user.getTranslationOrNothing(reference + "item-title"));
|
builder.append(this.viewer.getTranslationOrNothing(reference + "item-title"));
|
||||||
Utils.groupEqualItems(challenge.getRepeatItemReward(), challenge.getIgnoreRewardMetaData()).stream()
|
Utils.groupEqualItems(challenge.getRepeatItemReward(), challenge.getIgnoreRewardMetaData()).stream()
|
||||||
.sorted(Comparator.comparing(ItemStack::getType)).forEach(itemStack -> {
|
.sorted(Comparator.comparing(ItemStack::getType)).forEach(itemStack -> {
|
||||||
builder.append("\n");
|
builder.append("\n");
|
||||||
|
|
||||||
if (itemStack.getAmount() > 1) {
|
if (itemStack.getAmount() > 1) {
|
||||||
builder.append(this.user.getTranslationOrNothing(reference + "items-value", "[number]",
|
builder.append(this.viewer.getTranslationOrNothing(reference + "items-value", "[number]",
|
||||||
String.valueOf(itemStack.getAmount()), "[item]",
|
String.valueOf(itemStack.getAmount()), "[item]",
|
||||||
Utils.prettifyObject(itemStack, this.user)));
|
Utils.prettifyObject(itemStack, this.viewer)));
|
||||||
} else {
|
} else {
|
||||||
builder.append(this.user.getTranslationOrNothing(reference + "item-value", "[item]",
|
builder.append(this.viewer.getTranslationOrNothing(reference + "item-value", "[item]",
|
||||||
Utils.prettifyObject(itemStack, this.user)));
|
Utils.prettifyObject(itemStack, this.viewer)));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -551,11 +604,11 @@ public abstract class CommonPanel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
String experience = challenge.getRepeatExperienceReward() <= 0 ? ""
|
String experience = challenge.getRepeatExperienceReward() <= 0 ? ""
|
||||||
: this.user.getTranslationOrNothing(reference + "experience", "[number]",
|
: this.viewer.getTranslationOrNothing(reference + "experience", "[number]",
|
||||||
String.valueOf(challenge.getRepeatExperienceReward()));
|
String.valueOf(challenge.getRepeatExperienceReward()));
|
||||||
|
|
||||||
String money = !this.addon.isEconomyProvided() || challenge.getRepeatMoneyReward() <= 0 ? ""
|
String money = !this.addon.isEconomyProvided() || challenge.getRepeatMoneyReward() <= 0 ? ""
|
||||||
: this.user.getTranslationOrNothing(reference + "money", "[number]",
|
: this.viewer.getTranslationOrNothing(reference + "money", "[number]",
|
||||||
addon.getPlugin().getVault().map(v -> v.format(challenge.getRepeatMoneyReward()))
|
addon.getPlugin().getVault().map(v -> v.format(challenge.getRepeatMoneyReward()))
|
||||||
.orElse(String.valueOf(challenge.getRepeatMoneyReward())));
|
.orElse(String.valueOf(challenge.getRepeatMoneyReward())));
|
||||||
|
|
||||||
@ -565,12 +618,12 @@ public abstract class CommonPanel {
|
|||||||
StringBuilder permissionBuilder = new StringBuilder();
|
StringBuilder permissionBuilder = new StringBuilder();
|
||||||
|
|
||||||
if (!challenge.getRepeatRewardCommands().isEmpty()) {
|
if (!challenge.getRepeatRewardCommands().isEmpty()) {
|
||||||
permissionBuilder.append(this.user.getTranslationOrNothing(reference + "commands-title"));
|
permissionBuilder.append(this.viewer.getTranslationOrNothing(reference + "commands-title"));
|
||||||
|
|
||||||
challenge.getRepeatRewardCommands().forEach(command -> {
|
challenge.getRepeatRewardCommands().forEach(command -> {
|
||||||
permissionBuilder.append("\n");
|
permissionBuilder.append("\n");
|
||||||
permissionBuilder
|
permissionBuilder
|
||||||
.append(this.user.getTranslationOrNothing(reference + "command", "[command]", command));
|
.append(this.viewer.getTranslationOrNothing(reference + "command", "[command]", command));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -585,14 +638,14 @@ public abstract class CommonPanel {
|
|||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
String rewardText = this.user
|
String rewardText = this.viewer
|
||||||
.getTranslationOrNothing("challenges.challenges." + challenge.getUniqueId() + ".repeat-reward-text");
|
.getTranslationOrNothing("challenges.challenges." + challenge.getUniqueId() + ".repeat-reward-text");
|
||||||
|
|
||||||
if (rewardText.isEmpty()) {
|
if (rewardText.isEmpty()) {
|
||||||
rewardText = Util.translateColorCodes(String.join("\n", challenge.getRepeatRewardText()));
|
rewardText = Util.translateColorCodes(String.join("\n", challenge.getRepeatRewardText()));
|
||||||
}
|
}
|
||||||
|
|
||||||
return this.user.getTranslationOrNothing(reference + "lore", "[text]", rewardText, "[items]", items,
|
return this.viewer.getTranslationOrNothing(reference + "lore", "[text]", rewardText, "[items]", items,
|
||||||
"[experience]", experience, "[money]", money, "[commands]", commands);
|
"[experience]", experience, "[money]", money, "[commands]", commands);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -609,18 +662,18 @@ public abstract class CommonPanel {
|
|||||||
|
|
||||||
if (!challenge.getRewardItems().isEmpty()) {
|
if (!challenge.getRewardItems().isEmpty()) {
|
||||||
StringBuilder builder = new StringBuilder();
|
StringBuilder builder = new StringBuilder();
|
||||||
builder.append(this.user.getTranslationOrNothing(reference + "item-title"));
|
builder.append(this.viewer.getTranslationOrNothing(reference + "item-title"));
|
||||||
Utils.groupEqualItems(challenge.getRewardItems(), challenge.getIgnoreRewardMetaData()).stream()
|
Utils.groupEqualItems(challenge.getRewardItems(), challenge.getIgnoreRewardMetaData()).stream()
|
||||||
.sorted(Comparator.comparing(ItemStack::getType)).forEach(itemStack -> {
|
.sorted(Comparator.comparing(ItemStack::getType)).forEach(itemStack -> {
|
||||||
builder.append("\n");
|
builder.append("\n");
|
||||||
|
|
||||||
if (itemStack.getAmount() > 1) {
|
if (itemStack.getAmount() > 1) {
|
||||||
builder.append(this.user.getTranslationOrNothing(reference + "items-value", "[number]",
|
builder.append(this.viewer.getTranslationOrNothing(reference + "items-value", "[number]",
|
||||||
String.valueOf(itemStack.getAmount()), "[item]",
|
String.valueOf(itemStack.getAmount()), "[item]",
|
||||||
Utils.prettifyObject(itemStack, this.user)));
|
Utils.prettifyObject(itemStack, this.viewer)));
|
||||||
} else {
|
} else {
|
||||||
builder.append(this.user.getTranslationOrNothing(reference + "item-value", "[item]",
|
builder.append(this.viewer.getTranslationOrNothing(reference + "item-value", "[item]",
|
||||||
Utils.prettifyObject(itemStack, this.user)));
|
Utils.prettifyObject(itemStack, this.viewer)));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -630,11 +683,11 @@ public abstract class CommonPanel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
String experience = challenge.getRewardExperience() <= 0 ? ""
|
String experience = challenge.getRewardExperience() <= 0 ? ""
|
||||||
: this.user.getTranslationOrNothing(reference + "experience", "[number]",
|
: this.viewer.getTranslationOrNothing(reference + "experience", "[number]",
|
||||||
String.valueOf(challenge.getRewardExperience()));
|
String.valueOf(challenge.getRewardExperience()));
|
||||||
|
|
||||||
String money = !this.addon.isEconomyProvided() || challenge.getRewardMoney() <= 0 ? ""
|
String money = !this.addon.isEconomyProvided() || challenge.getRewardMoney() <= 0 ? ""
|
||||||
: this.user.getTranslationOrNothing(reference + "money", "[number]",
|
: this.viewer.getTranslationOrNothing(reference + "money", "[number]",
|
||||||
addon.getPlugin().getVault().map(v -> v.format(challenge.getRewardMoney()))
|
addon.getPlugin().getVault().map(v -> v.format(challenge.getRewardMoney()))
|
||||||
.orElse(String.valueOf(challenge.getRewardMoney())));
|
.orElse(String.valueOf(challenge.getRewardMoney())));
|
||||||
|
|
||||||
@ -644,12 +697,12 @@ public abstract class CommonPanel {
|
|||||||
StringBuilder permissionBuilder = new StringBuilder();
|
StringBuilder permissionBuilder = new StringBuilder();
|
||||||
|
|
||||||
if (!challenge.getRewardCommands().isEmpty()) {
|
if (!challenge.getRewardCommands().isEmpty()) {
|
||||||
permissionBuilder.append(this.user.getTranslationOrNothing(reference + "commands-title"));
|
permissionBuilder.append(this.viewer.getTranslationOrNothing(reference + "commands-title"));
|
||||||
|
|
||||||
challenge.getRewardCommands().forEach(command -> {
|
challenge.getRewardCommands().forEach(command -> {
|
||||||
permissionBuilder.append("\n");
|
permissionBuilder.append("\n");
|
||||||
permissionBuilder
|
permissionBuilder
|
||||||
.append(this.user.getTranslationOrNothing(reference + "command", "[command]", command));
|
.append(this.viewer.getTranslationOrNothing(reference + "command", "[command]", command));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -664,14 +717,14 @@ public abstract class CommonPanel {
|
|||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
String rewardText = this.user
|
String rewardText = this.viewer
|
||||||
.getTranslationOrNothing("challenges.challenges." + challenge.getUniqueId() + ".reward-text");
|
.getTranslationOrNothing("challenges.challenges." + challenge.getUniqueId() + ".reward-text");
|
||||||
|
|
||||||
if (rewardText.isEmpty()) {
|
if (rewardText.isEmpty()) {
|
||||||
rewardText = Util.translateColorCodes(String.join("\n", challenge.getRewardText()));
|
rewardText = Util.translateColorCodes(String.join("\n", challenge.getRewardText()));
|
||||||
}
|
}
|
||||||
|
|
||||||
return this.user.getTranslationOrNothing(reference + "lore", "[text]", rewardText, "[items]", items,
|
return this.viewer.getTranslationOrNothing(reference + "lore", "[text]", rewardText, "[items]", items,
|
||||||
"[experience]", experience, "[money]", money, "[commands]", commands);
|
"[experience]", experience, "[money]", money, "[commands]", commands);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -690,12 +743,12 @@ public abstract class CommonPanel {
|
|||||||
String status = "";
|
String status = "";
|
||||||
// Get requirements in single string
|
// Get requirements in single string
|
||||||
String waiver = this.manager.isLastLevel(level, this.world) ? ""
|
String waiver = this.manager.isLastLevel(level, this.world) ? ""
|
||||||
: this.user.getTranslationOrNothing(reference + "waiver", "[number]",
|
: this.viewer.getTranslationOrNothing(reference + "waiver", "[number]",
|
||||||
String.valueOf(level.getWaiverAmount()));
|
String.valueOf(level.getWaiverAmount()));
|
||||||
// Get rewards in single string
|
// Get rewards in single string
|
||||||
String rewards = this.generateReward(level);
|
String rewards = this.generateReward(level);
|
||||||
|
|
||||||
String returnString = this.user.getTranslation(reference + "lore", "[text]",
|
String returnString = this.viewer.getTranslation(reference + "lore", "[text]",
|
||||||
Util.translateColorCodes(level.getUnlockMessage()), "[waiver]", waiver, "[rewards]", rewards,
|
Util.translateColorCodes(level.getUnlockMessage()), "[waiver]", waiver, "[rewards]", rewards,
|
||||||
"[status]", status);
|
"[status]", status);
|
||||||
|
|
||||||
@ -724,19 +777,19 @@ public abstract class CommonPanel {
|
|||||||
// Get requirements in single string
|
// Get requirements in single string
|
||||||
String waiver = this.manager.isLastLevel(level, this.world) || !levelStatus.isUnlocked()
|
String waiver = this.manager.isLastLevel(level, this.world) || !levelStatus.isUnlocked()
|
||||||
|| levelStatus.isComplete() ? ""
|
|| levelStatus.isComplete() ? ""
|
||||||
: this.user.getTranslationOrNothing(reference + "waiver", "[number]",
|
: this.viewer.getTranslationOrNothing(reference + "waiver", "[number]",
|
||||||
String.valueOf(level.getWaiverAmount()));
|
String.valueOf(level.getWaiverAmount()));
|
||||||
// Get rewards in single string
|
// Get rewards in single string
|
||||||
String rewards = !levelStatus.isUnlocked() ? "" : this.generateReward(level);
|
String rewards = !levelStatus.isUnlocked() ? "" : this.generateReward(level);
|
||||||
|
|
||||||
String description = this.user
|
String description = this.viewer
|
||||||
.getTranslationOrNothing("challenges.levels." + level.getUniqueId() + ".description");
|
.getTranslationOrNothing("challenges.levels." + level.getUniqueId() + ".description");
|
||||||
|
|
||||||
if (description.isEmpty()) {
|
if (description.isEmpty()) {
|
||||||
description = Util.translateColorCodes(String.join("\n", level.getUnlockMessage()));
|
description = Util.translateColorCodes(String.join("\n", level.getUnlockMessage()));
|
||||||
}
|
}
|
||||||
|
|
||||||
String returnString = this.user.getTranslation(reference + "lore", "[text]", description, "[waiver]", waiver,
|
String returnString = this.viewer.getTranslation(reference + "lore", "[text]", description, "[waiver]", waiver,
|
||||||
"[rewards]", rewards, "[status]", status);
|
"[rewards]", rewards, "[status]", status);
|
||||||
|
|
||||||
// Remove empty lines and returns as a list.
|
// Remove empty lines and returns as a list.
|
||||||
@ -755,11 +808,11 @@ public abstract class CommonPanel {
|
|||||||
final String reference = Constants.DESCRIPTIONS + "level.status.";
|
final String reference = Constants.DESCRIPTIONS + "level.status.";
|
||||||
|
|
||||||
if (!levelStatus.isUnlocked()) {
|
if (!levelStatus.isUnlocked()) {
|
||||||
return this.user.getTranslationOrNothing(reference + "locked") + "\n"
|
return this.viewer.getTranslationOrNothing(reference + "locked") + "\n"
|
||||||
+ this.user.getTranslationOrNothing(reference + "missing-challenges", "[number]",
|
+ this.viewer.getTranslationOrNothing(reference + "missing-challenges", "[number]",
|
||||||
String.valueOf(levelStatus.getNumberOfChallengesStillToDo()));
|
String.valueOf(levelStatus.getNumberOfChallengesStillToDo()));
|
||||||
} else if (levelStatus.isComplete()) {
|
} else if (levelStatus.isComplete()) {
|
||||||
return this.user.getTranslationOrNothing(reference + "completed");
|
return this.viewer.getTranslationOrNothing(reference + "completed");
|
||||||
} else {
|
} else {
|
||||||
ChallengeLevel level = levelStatus.getLevel();
|
ChallengeLevel level = levelStatus.getLevel();
|
||||||
List<Challenge> challengeList = this.addon.getChallengesManager().getLevelChallenges(level);
|
List<Challenge> challengeList = this.addon.getChallengesManager().getLevelChallenges(level);
|
||||||
@ -768,7 +821,7 @@ public abstract class CommonPanel {
|
|||||||
int doneChallenges = (int) challengeList.stream().filter(challenge -> this.addon.getChallengesManager()
|
int doneChallenges = (int) challengeList.stream().filter(challenge -> this.addon.getChallengesManager()
|
||||||
.isChallengeComplete(user.getUniqueId(), world, challenge)).count();
|
.isChallengeComplete(user.getUniqueId(), world, challenge)).count();
|
||||||
|
|
||||||
return this.user.getTranslation(reference + "completed-challenges-of", "[number]",
|
return this.viewer.getTranslation(reference + "completed-challenges-of", "[number]",
|
||||||
String.valueOf(doneChallenges), "[max]", String.valueOf(challengeList.size()));
|
String.valueOf(doneChallenges), "[max]", String.valueOf(challengeList.size()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -786,18 +839,18 @@ public abstract class CommonPanel {
|
|||||||
|
|
||||||
if (!level.getRewardItems().isEmpty()) {
|
if (!level.getRewardItems().isEmpty()) {
|
||||||
StringBuilder builder = new StringBuilder();
|
StringBuilder builder = new StringBuilder();
|
||||||
builder.append(this.user.getTranslationOrNothing(reference + "item-title"));
|
builder.append(this.viewer.getTranslationOrNothing(reference + "item-title"));
|
||||||
Utils.groupEqualItems(level.getRewardItems(), level.getIgnoreRewardMetaData()).stream()
|
Utils.groupEqualItems(level.getRewardItems(), level.getIgnoreRewardMetaData()).stream()
|
||||||
.sorted(Comparator.comparing(ItemStack::getType)).forEach(itemStack -> {
|
.sorted(Comparator.comparing(ItemStack::getType)).forEach(itemStack -> {
|
||||||
builder.append("\n");
|
builder.append("\n");
|
||||||
|
|
||||||
if (itemStack.getAmount() > 1) {
|
if (itemStack.getAmount() > 1) {
|
||||||
builder.append(this.user.getTranslationOrNothing(reference + "items-value", "[number]",
|
builder.append(this.viewer.getTranslationOrNothing(reference + "items-value", "[number]",
|
||||||
String.valueOf(itemStack.getAmount()), "[item]",
|
String.valueOf(itemStack.getAmount()), "[item]",
|
||||||
Utils.prettifyObject(itemStack, this.user)));
|
Utils.prettifyObject(itemStack, this.viewer)));
|
||||||
} else {
|
} else {
|
||||||
builder.append(this.user.getTranslationOrNothing(reference + "item-value", "[item]",
|
builder.append(this.viewer.getTranslationOrNothing(reference + "item-value", "[item]",
|
||||||
Utils.prettifyObject(itemStack, this.user)));
|
Utils.prettifyObject(itemStack, this.viewer)));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -807,11 +860,11 @@ public abstract class CommonPanel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
String experience = level.getRewardExperience() <= 0 ? ""
|
String experience = level.getRewardExperience() <= 0 ? ""
|
||||||
: this.user.getTranslationOrNothing(reference + "experience", "[number]",
|
: this.viewer.getTranslationOrNothing(reference + "experience", "[number]",
|
||||||
String.valueOf(level.getRewardExperience()));
|
String.valueOf(level.getRewardExperience()));
|
||||||
|
|
||||||
String money = !this.addon.isEconomyProvided() || level.getRewardMoney() <= 0 ? ""
|
String money = !this.addon.isEconomyProvided() || level.getRewardMoney() <= 0 ? ""
|
||||||
: this.user.getTranslationOrNothing(reference + "money", "[number]",
|
: this.viewer.getTranslationOrNothing(reference + "money", "[number]",
|
||||||
String.valueOf(level.getRewardMoney()));
|
String.valueOf(level.getRewardMoney()));
|
||||||
|
|
||||||
String commands;
|
String commands;
|
||||||
@ -820,12 +873,12 @@ public abstract class CommonPanel {
|
|||||||
StringBuilder permissionBuilder = new StringBuilder();
|
StringBuilder permissionBuilder = new StringBuilder();
|
||||||
|
|
||||||
if (!level.getRewardCommands().isEmpty()) {
|
if (!level.getRewardCommands().isEmpty()) {
|
||||||
permissionBuilder.append(this.user.getTranslationOrNothing(reference + "commands-title"));
|
permissionBuilder.append(this.viewer.getTranslationOrNothing(reference + "commands-title"));
|
||||||
|
|
||||||
level.getRewardCommands().forEach(command -> {
|
level.getRewardCommands().forEach(command -> {
|
||||||
permissionBuilder.append("\n");
|
permissionBuilder.append("\n");
|
||||||
permissionBuilder
|
permissionBuilder
|
||||||
.append(this.user.getTranslationOrNothing(reference + "command", "[command]", command));
|
.append(this.viewer.getTranslationOrNothing(reference + "command", "[command]", command));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -840,59 +893,15 @@ public abstract class CommonPanel {
|
|||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
String rewardText = this.user
|
String rewardText = this.viewer
|
||||||
.getTranslationOrNothing("challenges.levels." + level.getUniqueId() + ".reward-text");
|
.getTranslationOrNothing("challenges.levels." + level.getUniqueId() + ".reward-text");
|
||||||
|
|
||||||
if (rewardText.isEmpty()) {
|
if (rewardText.isEmpty()) {
|
||||||
rewardText = Util.translateColorCodes(String.join("\n", level.getRewardText()));
|
rewardText = Util.translateColorCodes(String.join("\n", level.getRewardText()));
|
||||||
}
|
}
|
||||||
|
|
||||||
return this.user.getTranslationOrNothing(reference + "lore", "[text]", rewardText, "[items]", items,
|
return this.viewer.getTranslationOrNothing(reference + "lore", "[text]", rewardText, "[items]", items,
|
||||||
"[experience]", experience, "[money]", money, "[commands]", commands);
|
"[experience]", experience, "[money]", money, "[commands]", commands);
|
||||||
}
|
}
|
||||||
|
|
||||||
// ---------------------------------------------------------------------
|
|
||||||
// Section: Variables
|
|
||||||
// ---------------------------------------------------------------------
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This variable stores parent gui.
|
|
||||||
*/
|
|
||||||
@Nullable
|
|
||||||
protected final CommonPanel parentPanel;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Variable stores Challenges addon.
|
|
||||||
*/
|
|
||||||
protected final ChallengesAddon addon;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Variable stores Challenges addon manager.
|
|
||||||
*/
|
|
||||||
protected final ChallengesManager manager;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Variable stores world in which panel is referred to.
|
|
||||||
*/
|
|
||||||
protected final World world;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Variable stores user who created this panel.
|
|
||||||
*/
|
|
||||||
protected final User user;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Variable stores top label of command from which panel was called.
|
|
||||||
*/
|
|
||||||
protected final String topLabel;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Variable stores permission prefix of command from which panel was called.
|
|
||||||
*/
|
|
||||||
protected final String permissionPrefix;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This object holds PanelItem that allows to return to previous panel.
|
|
||||||
*/
|
|
||||||
protected PanelItem returnButton;
|
|
||||||
}
|
}
|
||||||
|
@ -44,10 +44,11 @@ public class AdminPanel extends CommonPanel
|
|||||||
private AdminPanel(ChallengesAddon addon,
|
private AdminPanel(ChallengesAddon addon,
|
||||||
World world,
|
World world,
|
||||||
User user,
|
User user,
|
||||||
|
User viewer,
|
||||||
String topLabel,
|
String topLabel,
|
||||||
String permissionPrefix)
|
String permissionPrefix)
|
||||||
{
|
{
|
||||||
super(addon, user, world, topLabel, permissionPrefix);
|
super(addon, user, viewer, world, topLabel, permissionPrefix);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -66,7 +67,7 @@ public class AdminPanel extends CommonPanel
|
|||||||
String topLabel,
|
String topLabel,
|
||||||
String permissionPrefix)
|
String permissionPrefix)
|
||||||
{
|
{
|
||||||
new AdminPanel(addon, world, user, topLabel, permissionPrefix).build();
|
new AdminPanel(addon, world, user, user, topLabel, permissionPrefix).build();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -61,7 +61,7 @@ public class EditChallengePanel extends CommonPanel {
|
|||||||
*/
|
*/
|
||||||
private EditChallengePanel(ChallengesAddon addon, User user, World world, String topLabel, String permissionPrefix,
|
private EditChallengePanel(ChallengesAddon addon, User user, World world, String topLabel, String permissionPrefix,
|
||||||
Challenge challenge) {
|
Challenge challenge) {
|
||||||
super(addon, user, world, topLabel, permissionPrefix);
|
super(addon, user, user, world, topLabel, permissionPrefix);
|
||||||
this.challenge = challenge;
|
this.challenge = challenge;
|
||||||
this.currentMenuType = MenuType.PROPERTIES;
|
this.currentMenuType = MenuType.PROPERTIES;
|
||||||
}
|
}
|
||||||
|
@ -51,7 +51,7 @@ public class EditSettingsPanel extends CommonPanel
|
|||||||
String topLabel,
|
String topLabel,
|
||||||
String permissionPrefix)
|
String permissionPrefix)
|
||||||
{
|
{
|
||||||
super(addon, user, world, topLabel, permissionPrefix);
|
super(addon, user, user, world, topLabel, permissionPrefix);
|
||||||
this.settings = this.addon.getChallengesSettings();
|
this.settings = this.addon.getChallengesSettings();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -18,11 +18,13 @@ import java.util.List;
|
|||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
import world.bentobox.bentobox.api.panels.Panel;
|
||||||
import world.bentobox.bentobox.api.panels.PanelItem;
|
import world.bentobox.bentobox.api.panels.PanelItem;
|
||||||
import world.bentobox.bentobox.api.panels.TemplatedPanel;
|
import world.bentobox.bentobox.api.panels.TemplatedPanel;
|
||||||
import world.bentobox.bentobox.api.panels.builders.PanelItemBuilder;
|
import world.bentobox.bentobox.api.panels.builders.PanelItemBuilder;
|
||||||
import world.bentobox.bentobox.api.panels.builders.TemplatedPanelBuilder;
|
import world.bentobox.bentobox.api.panels.builders.TemplatedPanelBuilder;
|
||||||
import world.bentobox.bentobox.api.panels.reader.ItemTemplateRecord;
|
import world.bentobox.bentobox.api.panels.reader.ItemTemplateRecord;
|
||||||
|
import world.bentobox.bentobox.api.panels.reader.ItemTemplateRecord.ActionRecords;
|
||||||
import world.bentobox.bentobox.api.user.User;
|
import world.bentobox.bentobox.api.user.User;
|
||||||
import world.bentobox.bentobox.util.Util;
|
import world.bentobox.bentobox.util.Util;
|
||||||
import world.bentobox.challenges.ChallengesAddon;
|
import world.bentobox.challenges.ChallengesAddon;
|
||||||
@ -41,12 +43,13 @@ import world.bentobox.challenges.utils.Utils;
|
|||||||
public class ChallengesPanel extends CommonPanel
|
public class ChallengesPanel extends CommonPanel
|
||||||
{
|
{
|
||||||
private ChallengesPanel(ChallengesAddon addon,
|
private ChallengesPanel(ChallengesAddon addon,
|
||||||
World world,
|
World world,
|
||||||
User user,
|
User user,
|
||||||
String topLabel,
|
User viewer,
|
||||||
String permissionPrefix)
|
String topLabel,
|
||||||
|
String permissionPrefix)
|
||||||
{
|
{
|
||||||
super(addon, user, world, topLabel, permissionPrefix);
|
super(addon, user, viewer, world, topLabel, permissionPrefix);
|
||||||
this.updateLevelList();
|
this.updateLevelList();
|
||||||
this.containsChallenges = this.manager.hasAnyChallengeData(this.world);
|
this.containsChallenges = this.manager.hasAnyChallengeData(this.world);
|
||||||
}
|
}
|
||||||
@ -62,12 +65,32 @@ public class ChallengesPanel extends CommonPanel
|
|||||||
* @param permissionPrefix the permission prefix
|
* @param permissionPrefix the permission prefix
|
||||||
*/
|
*/
|
||||||
public static void open(ChallengesAddon addon,
|
public static void open(ChallengesAddon addon,
|
||||||
World world,
|
World world,
|
||||||
User user,
|
User user,
|
||||||
String topLabel,
|
String topLabel,
|
||||||
String permissionPrefix)
|
String permissionPrefix)
|
||||||
{
|
{
|
||||||
new ChallengesPanel(addon, world, user, topLabel, permissionPrefix).build();
|
new ChallengesPanel(addon, world, user, user, topLabel, permissionPrefix).build();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* View the Challenges GUI.
|
||||||
|
*
|
||||||
|
* @param addon the addon
|
||||||
|
* @param world the world
|
||||||
|
* @param user the user
|
||||||
|
* @param viewer the viewer
|
||||||
|
* @param topLabel the top label
|
||||||
|
* @param permissionPrefix the permission prefix
|
||||||
|
*/
|
||||||
|
public static void view(ChallengesAddon addon,
|
||||||
|
World world,
|
||||||
|
User user,
|
||||||
|
User viewer,
|
||||||
|
String topLabel,
|
||||||
|
String permissionPrefix)
|
||||||
|
{
|
||||||
|
new ChallengesPanel(addon, world, user, viewer, topLabel, permissionPrefix).build();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -77,7 +100,7 @@ public class ChallengesPanel extends CommonPanel
|
|||||||
if (!this.containsChallenges)
|
if (!this.containsChallenges)
|
||||||
{
|
{
|
||||||
this.addon.logError("There are no challenges set up!");
|
this.addon.logError("There are no challenges set up!");
|
||||||
Utils.sendMessage(this.user, this.world, Constants.ERRORS + "no-challenges");
|
Utils.sendMessage(this.viewer, this.world, Constants.ERRORS + "no-challenges");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -91,8 +114,8 @@ public class ChallengesPanel extends CommonPanel
|
|||||||
|
|
||||||
// Set main template.
|
// Set main template.
|
||||||
panelBuilder.template("main_panel", new File(this.addon.getDataFolder(), "panels"));
|
panelBuilder.template("main_panel", new File(this.addon.getDataFolder(), "panels"));
|
||||||
panelBuilder.user(this.user);
|
panelBuilder.user(this.viewer);
|
||||||
panelBuilder.world(this.user.getWorld());
|
panelBuilder.world(this.viewer.getWorld());
|
||||||
|
|
||||||
// Register button builders
|
// Register button builders
|
||||||
panelBuilder.registerTypeBuilder("CHALLENGE", this::createChallengeButton);
|
panelBuilder.registerTypeBuilder("CHALLENGE", this::createChallengeButton);
|
||||||
@ -115,7 +138,7 @@ public class ChallengesPanel extends CommonPanel
|
|||||||
if (this.addon.getChallengesSettings().isRemoveCompleteOneTimeChallenges())
|
if (this.addon.getChallengesSettings().isRemoveCompleteOneTimeChallenges())
|
||||||
{
|
{
|
||||||
this.freeChallengeList.removeIf(challenge -> !challenge.isRepeatable() &&
|
this.freeChallengeList.removeIf(challenge -> !challenge.isRepeatable() &&
|
||||||
this.manager.isChallengeComplete(this.user, this.world, challenge));
|
this.manager.isChallengeComplete(this.user, this.world, challenge));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Remove all undeployed challenges if VisibilityMode is set to Hidden.
|
// Remove all undeployed challenges if VisibilityMode is set to Hidden.
|
||||||
@ -135,7 +158,7 @@ public class ChallengesPanel extends CommonPanel
|
|||||||
if (this.addon.getChallengesSettings().isRemoveCompleteOneTimeChallenges())
|
if (this.addon.getChallengesSettings().isRemoveCompleteOneTimeChallenges())
|
||||||
{
|
{
|
||||||
this.challengeList.removeIf(challenge -> !challenge.isRepeatable() &&
|
this.challengeList.removeIf(challenge -> !challenge.isRepeatable() &&
|
||||||
this.manager.isChallengeComplete(this.user, this.world, challenge));
|
this.manager.isChallengeComplete(this.user, this.world, challenge));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Remove all undeployed challenges if VisibilityMode is set to Hidden.
|
// Remove all undeployed challenges if VisibilityMode is set to Hidden.
|
||||||
@ -179,7 +202,7 @@ public class ChallengesPanel extends CommonPanel
|
|||||||
private boolean updateLevelListSilent()
|
private boolean updateLevelListSilent()
|
||||||
{
|
{
|
||||||
Optional<LevelStatus> firstLockedLevel =
|
Optional<LevelStatus> firstLockedLevel =
|
||||||
this.levelList.stream().filter(levelStatus -> !levelStatus.isUnlocked()).findFirst();
|
this.levelList.stream().filter(levelStatus -> !levelStatus.isUnlocked()).findFirst();
|
||||||
|
|
||||||
if (firstLockedLevel.isPresent())
|
if (firstLockedLevel.isPresent())
|
||||||
{
|
{
|
||||||
@ -188,10 +211,10 @@ public class ChallengesPanel extends CommonPanel
|
|||||||
|
|
||||||
// Find a new first locked level.
|
// Find a new first locked level.
|
||||||
Optional<LevelStatus> newLockedLevel =
|
Optional<LevelStatus> newLockedLevel =
|
||||||
this.levelList.stream().filter(levelStatus -> !levelStatus.isUnlocked()).findFirst();
|
this.levelList.stream().filter(levelStatus -> !levelStatus.isUnlocked()).findFirst();
|
||||||
|
|
||||||
return newLockedLevel.isEmpty() ||
|
return newLockedLevel.isEmpty() ||
|
||||||
firstLockedLevel.get().getLevel() != newLockedLevel.get().getLevel();
|
firstLockedLevel.get().getLevel() != newLockedLevel.get().getLevel();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -219,9 +242,9 @@ public class ChallengesPanel extends CommonPanel
|
|||||||
|
|
||||||
// Find a challenge with given Id;
|
// Find a challenge with given Id;
|
||||||
levelChallenge = this.challengeList.stream().
|
levelChallenge = this.challengeList.stream().
|
||||||
filter(challenge -> challenge.getUniqueId().equals(id)).
|
filter(challenge -> challenge.getUniqueId().equals(id)).
|
||||||
findFirst().
|
findFirst().
|
||||||
orElse(null);
|
orElse(null);
|
||||||
|
|
||||||
if (levelChallenge == null)
|
if (levelChallenge == null)
|
||||||
{
|
{
|
||||||
@ -257,8 +280,8 @@ public class ChallengesPanel extends CommonPanel
|
|||||||
// Template specific title is always more important than challenge name.
|
// Template specific title is always more important than challenge name.
|
||||||
if (template.title() != null && !template.title().isBlank())
|
if (template.title() != null && !template.title().isBlank())
|
||||||
{
|
{
|
||||||
builder.name(this.user.getTranslation(this.world, template.title(),
|
builder.name(this.viewer.getTranslation(this.world, template.title(),
|
||||||
Constants.PARAMETER_CHALLENGE, challenge.getFriendlyName()));
|
Constants.PARAMETER_CHALLENGE, challenge.getFriendlyName()));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -268,7 +291,7 @@ public class ChallengesPanel extends CommonPanel
|
|||||||
if (template.description() != null && !template.description().isBlank())
|
if (template.description() != null && !template.description().isBlank())
|
||||||
{
|
{
|
||||||
// TODO: adding parameters could be useful.
|
// TODO: adding parameters could be useful.
|
||||||
builder.description(this.user.getTranslation(this.world, template.description()));
|
builder.description(this.viewer.getTranslation(this.world, template.description()));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -279,148 +302,153 @@ public class ChallengesPanel extends CommonPanel
|
|||||||
// If challenge is completed all possible times, remove action.
|
// If challenge is completed all possible times, remove action.
|
||||||
|
|
||||||
List<ItemTemplateRecord.ActionRecords> actions = template.actions().stream().
|
List<ItemTemplateRecord.ActionRecords> actions = template.actions().stream().
|
||||||
filter(action -> challenge.isRepeatable() || "COMPLETE".equalsIgnoreCase(action.actionType())).
|
filter(action -> challenge.isRepeatable() || "COMPLETE".equalsIgnoreCase(action.actionType())).
|
||||||
filter(action ->
|
filter(action ->
|
||||||
{
|
|
||||||
boolean isCompletedOnce =
|
|
||||||
this.manager.isChallengeComplete(this.user.getUniqueId(), this.world, challenge);
|
|
||||||
|
|
||||||
if (!isCompletedOnce)
|
|
||||||
{
|
{
|
||||||
// Is not completed once, then it must appear.
|
boolean isCompletedOnce =
|
||||||
return true;
|
this.manager.isChallengeComplete(this.user.getUniqueId(), this.world, challenge);
|
||||||
}
|
|
||||||
else if (challenge.isRepeatable() && challenge.getMaxTimes() <= 0)
|
|
||||||
{
|
|
||||||
// Challenge is unlimited. Must appear in the list.
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// Challenge still have some opened slots.
|
|
||||||
|
|
||||||
long doneTimes = challenge.isRepeatable() ?
|
if (!isCompletedOnce)
|
||||||
this.manager.getChallengeTimes(this.user, this.world, challenge) : 1;
|
{
|
||||||
|
// Is not completed once, then it must appear.
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else if (challenge.isRepeatable() && challenge.getMaxTimes() <= 0)
|
||||||
|
{
|
||||||
|
// Challenge is unlimited. Must appear in the list.
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Challenge still have some opened slots.
|
||||||
|
|
||||||
return challenge.isRepeatable() && doneTimes < challenge.getMaxTimes();
|
long doneTimes = challenge.isRepeatable() ?
|
||||||
}
|
this.manager.getChallengeTimes(this.user, this.world, challenge) : 1;
|
||||||
}).
|
|
||||||
toList();
|
return challenge.isRepeatable() && doneTimes < challenge.getMaxTimes();
|
||||||
|
}
|
||||||
|
}).
|
||||||
|
toList();
|
||||||
|
|
||||||
// Add Click handler
|
// Add Click handler
|
||||||
builder.clickHandler((panel, user, clickType, i) -> {
|
if (user.equals(viewer)) {
|
||||||
for (ItemTemplateRecord.ActionRecords action : actions)
|
builder.clickHandler((panel, user, clickType, i) -> clickHandler(panel, user, clickType, i, actions, template, challenge));
|
||||||
|
|
||||||
|
// Collect tooltips.
|
||||||
|
List<String> tooltips = actions.stream().
|
||||||
|
filter(action -> action.tooltip() != null).
|
||||||
|
map(action -> this.viewer.getTranslation(this.world, action.tooltip())).
|
||||||
|
filter(text -> !text.isBlank()).
|
||||||
|
collect(Collectors.toCollection(() -> new ArrayList<>(template.actions().size())));
|
||||||
|
|
||||||
|
// Add tooltips.
|
||||||
|
if (!tooltips.isEmpty())
|
||||||
{
|
{
|
||||||
if (clickType == action.clickType() || clickType.equals(ClickType.UNKNOWN))
|
// Empty line and tooltips.
|
||||||
|
builder.description("");
|
||||||
|
builder.description(tooltips);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Glow the icon.
|
||||||
|
builder.glow(this.addon.getChallengesSettings().isAddCompletedGlow() &&
|
||||||
|
this.manager.isChallengeComplete(this.user, this.world, challenge));
|
||||||
|
|
||||||
|
// Click Handlers are managed by custom addon buttons.
|
||||||
|
return builder.build();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private boolean clickHandler(Panel panel, User user, ClickType clickType, int i, List<ActionRecords> actions, ItemTemplateRecord template, @NonNull Challenge challenge) {
|
||||||
|
for (ItemTemplateRecord.ActionRecords action : actions)
|
||||||
|
{
|
||||||
|
if (clickType == action.clickType() || clickType.equals(ClickType.UNKNOWN))
|
||||||
|
{
|
||||||
|
switch (action.actionType().toUpperCase())
|
||||||
{
|
{
|
||||||
switch (action.actionType().toUpperCase())
|
case "COMPLETE":
|
||||||
|
if (TryToComplete.complete(this.addon,
|
||||||
|
this.user,
|
||||||
|
challenge,
|
||||||
|
this.world,
|
||||||
|
this.topLabel,
|
||||||
|
this.permissionPrefix))
|
||||||
{
|
{
|
||||||
case "COMPLETE":
|
if (this.updateLevelListSilent())
|
||||||
if (TryToComplete.complete(this.addon,
|
{
|
||||||
|
// Need to rebuild all because completing a challenge
|
||||||
|
// may unlock a new level. #187
|
||||||
|
this.build();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// There was no unlocked levels.
|
||||||
|
panel.getInventory().setItem(i,
|
||||||
|
this.createChallengeButton(template, challenge).getItem());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (challenge.isRepeatable() && challenge.getTimeout() > 0)
|
||||||
|
{
|
||||||
|
// Update timeout after clicking.
|
||||||
|
panel.getInventory().setItem(i,
|
||||||
|
this.createChallengeButton(template, challenge).getItem());
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "COMPLETE_MAX":
|
||||||
|
if (challenge.isRepeatable())
|
||||||
|
{
|
||||||
|
if (TryToComplete.complete(this.addon,
|
||||||
this.user,
|
this.user,
|
||||||
challenge,
|
challenge,
|
||||||
this.world,
|
this.world,
|
||||||
this.topLabel,
|
this.topLabel,
|
||||||
this.permissionPrefix))
|
this.permissionPrefix,
|
||||||
|
Integer.MAX_VALUE))
|
||||||
|
{
|
||||||
|
if (this.updateLevelListSilent())
|
||||||
{
|
{
|
||||||
if (this.updateLevelListSilent())
|
// Need to rebuild all because completing a challenge
|
||||||
{
|
// may unlock a new level. #187
|
||||||
// Need to rebuild all because completing a challenge
|
this.build();
|
||||||
// may unlock a new level. #187
|
|
||||||
this.build();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// There was no unlocked levels.
|
|
||||||
panel.getInventory().setItem(i,
|
|
||||||
this.createChallengeButton(template, challenge).getItem());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else if (challenge.isRepeatable() && challenge.getTimeout() > 0)
|
else
|
||||||
{
|
{
|
||||||
// Update timeout after clicking.
|
// There was no unlocked levels.
|
||||||
panel.getInventory().setItem(i,
|
panel.getInventory().setItem(i,
|
||||||
this.createChallengeButton(template, challenge).getItem());
|
this.createChallengeButton(template, challenge).getItem());
|
||||||
}
|
}
|
||||||
break;
|
}
|
||||||
case "COMPLETE_MAX":
|
else if (challenge.getTimeout() > 0)
|
||||||
if (challenge.isRepeatable())
|
{
|
||||||
{
|
// Update timeout after clicking.
|
||||||
if (TryToComplete.complete(this.addon,
|
panel.getInventory().setItem(i,
|
||||||
|
this.createChallengeButton(template, challenge).getItem());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "MULTIPLE_PANEL":
|
||||||
|
if (challenge.isRepeatable())
|
||||||
|
{
|
||||||
|
MultiplePanel.open(this.addon, this.user, value ->
|
||||||
|
{
|
||||||
|
TryToComplete.complete(this.addon,
|
||||||
this.user,
|
this.user,
|
||||||
challenge,
|
challenge,
|
||||||
this.world,
|
this.world,
|
||||||
this.topLabel,
|
this.topLabel,
|
||||||
this.permissionPrefix,
|
this.permissionPrefix,
|
||||||
Integer.MAX_VALUE))
|
value);
|
||||||
{
|
|
||||||
if (this.updateLevelListSilent())
|
|
||||||
{
|
|
||||||
// Need to rebuild all because completing a challenge
|
|
||||||
// may unlock a new level. #187
|
|
||||||
this.build();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// There was no unlocked levels.
|
|
||||||
panel.getInventory().setItem(i,
|
|
||||||
this.createChallengeButton(template, challenge).getItem());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (challenge.getTimeout() > 0)
|
|
||||||
{
|
|
||||||
// Update timeout after clicking.
|
|
||||||
panel.getInventory().setItem(i,
|
|
||||||
this.createChallengeButton(template, challenge).getItem());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case "MULTIPLE_PANEL":
|
|
||||||
if (challenge.isRepeatable())
|
|
||||||
{
|
|
||||||
MultiplePanel.open(this.addon, this.user, value ->
|
|
||||||
{
|
|
||||||
TryToComplete.complete(this.addon,
|
|
||||||
this.user,
|
|
||||||
challenge,
|
|
||||||
this.world,
|
|
||||||
this.topLabel,
|
|
||||||
this.permissionPrefix,
|
|
||||||
value);
|
|
||||||
|
|
||||||
this.updateLevelListSilent();
|
this.updateLevelListSilent();
|
||||||
this.build();
|
this.build();
|
||||||
});
|
});
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
|
||||||
});
|
|
||||||
|
|
||||||
// Collect tooltips.
|
|
||||||
List<String> tooltips = actions.stream().
|
|
||||||
filter(action -> action.tooltip() != null).
|
|
||||||
map(action -> this.user.getTranslation(this.world, action.tooltip())).
|
|
||||||
filter(text -> !text.isBlank()).
|
|
||||||
collect(Collectors.toCollection(() -> new ArrayList<>(template.actions().size())));
|
|
||||||
|
|
||||||
// Add tooltips.
|
|
||||||
if (!tooltips.isEmpty())
|
|
||||||
{
|
|
||||||
// Empty line and tooltips.
|
|
||||||
builder.description("");
|
|
||||||
builder.description(tooltips);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Glow the icon.
|
return true;
|
||||||
builder.glow(this.addon.getChallengesSettings().isAddCompletedGlow() &&
|
|
||||||
this.manager.isChallengeComplete(this.user, this.world, challenge));
|
|
||||||
|
|
||||||
// Click Handlers are managed by custom addon buttons.
|
|
||||||
return builder.build();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -442,9 +470,9 @@ public class ChallengesPanel extends CommonPanel
|
|||||||
|
|
||||||
// Find a challenge with given Id;
|
// Find a challenge with given Id;
|
||||||
level = this.levelList.stream().
|
level = this.levelList.stream().
|
||||||
filter(levelStatus -> levelStatus.getLevel().getUniqueId().equals(id)).
|
filter(levelStatus -> levelStatus.getLevel().getUniqueId().equals(id)).
|
||||||
findFirst().
|
findFirst().
|
||||||
orElse(null);
|
orElse(null);
|
||||||
|
|
||||||
if (level == null)
|
if (level == null)
|
||||||
{
|
{
|
||||||
@ -499,8 +527,8 @@ public class ChallengesPanel extends CommonPanel
|
|||||||
|
|
||||||
if (template.title() != null && !template.title().isBlank())
|
if (template.title() != null && !template.title().isBlank())
|
||||||
{
|
{
|
||||||
builder.name(this.user.getTranslation(this.world, template.title(),
|
builder.name(this.viewer.getTranslation(this.world, template.title(),
|
||||||
Constants.PARAMETER_LEVEL, level.getLevel().getFriendlyName()));
|
Constants.PARAMETER_LEVEL, level.getLevel().getFriendlyName()));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -510,7 +538,7 @@ public class ChallengesPanel extends CommonPanel
|
|||||||
if (template.description() != null && !template.description().isBlank())
|
if (template.description() != null && !template.description().isBlank())
|
||||||
{
|
{
|
||||||
// TODO: adding parameters could be useful.
|
// TODO: adding parameters could be useful.
|
||||||
builder.description(this.user.getTranslation(this.world, template.description()));
|
builder.description(this.viewer.getTranslation(this.world, template.description()));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -533,11 +561,11 @@ public class ChallengesPanel extends CommonPanel
|
|||||||
|
|
||||||
// Collect tooltips.
|
// Collect tooltips.
|
||||||
List<String> tooltips = template.actions().stream().
|
List<String> tooltips = template.actions().stream().
|
||||||
filter(action -> action.tooltip() != null).
|
filter(action -> action.tooltip() != null).
|
||||||
filter(action -> level != this.lastSelectedLevel && level.isUnlocked()).
|
filter(action -> level != this.lastSelectedLevel && level.isUnlocked()).
|
||||||
map(action -> this.user.getTranslation(this.world, action.tooltip())).
|
map(action -> this.viewer.getTranslation(this.world, action.tooltip())).
|
||||||
filter(text -> !text.isBlank()).
|
filter(text -> !text.isBlank()).
|
||||||
collect(Collectors.toCollection(() -> new ArrayList<>(template.actions().size())));
|
collect(Collectors.toCollection(() -> new ArrayList<>(template.actions().size())));
|
||||||
|
|
||||||
// Add tooltips.
|
// Add tooltips.
|
||||||
if (!tooltips.isEmpty())
|
if (!tooltips.isEmpty())
|
||||||
@ -549,7 +577,7 @@ public class ChallengesPanel extends CommonPanel
|
|||||||
|
|
||||||
// Glow the icon.
|
// Glow the icon.
|
||||||
builder.glow(level == this.lastSelectedLevel ||
|
builder.glow(level == this.lastSelectedLevel ||
|
||||||
level.isUnlocked() &&
|
level.isUnlocked() &&
|
||||||
this.addon.getChallengesSettings().isAddCompletedGlow() &&
|
this.addon.getChallengesSettings().isAddCompletedGlow() &&
|
||||||
this.manager.isLevelCompleted(this.user, this.world, level.getLevel()));
|
this.manager.isLevelCompleted(this.user, this.world, level.getLevel()));
|
||||||
|
|
||||||
@ -576,12 +604,12 @@ public class ChallengesPanel extends CommonPanel
|
|||||||
|
|
||||||
if (template.title() != null)
|
if (template.title() != null)
|
||||||
{
|
{
|
||||||
builder.name(this.user.getTranslation(this.world, template.title()));
|
builder.name(this.viewer.getTranslation(this.world, template.title()));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (template.description() != null)
|
if (template.description() != null)
|
||||||
{
|
{
|
||||||
builder.description(this.user.getTranslation(this.world, template.description()));
|
builder.description(this.viewer.getTranslation(this.world, template.description()));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add ClickHandler
|
// Add ClickHandler
|
||||||
@ -599,11 +627,11 @@ public class ChallengesPanel extends CommonPanel
|
|||||||
|
|
||||||
// Collect tooltips.
|
// Collect tooltips.
|
||||||
List<String> tooltips = template.actions().stream().
|
List<String> tooltips = template.actions().stream().
|
||||||
filter(action -> action.tooltip() != null).
|
filter(action -> action.tooltip() != null).
|
||||||
filter(action -> this.lastSelectedLevel == null).
|
filter(action -> this.lastSelectedLevel == null).
|
||||||
map(action -> this.user.getTranslation(this.world, action.tooltip())).
|
map(action -> this.viewer.getTranslation(this.world, action.tooltip())).
|
||||||
filter(text -> !text.isBlank()).
|
filter(text -> !text.isBlank()).
|
||||||
collect(Collectors.toCollection(() -> new ArrayList<>(template.actions().size())));
|
collect(Collectors.toCollection(() -> new ArrayList<>(template.actions().size())));
|
||||||
|
|
||||||
// Add tooltips.
|
// Add tooltips.
|
||||||
if (!tooltips.isEmpty())
|
if (!tooltips.isEmpty())
|
||||||
@ -626,34 +654,34 @@ public class ChallengesPanel extends CommonPanel
|
|||||||
|
|
||||||
switch (target)
|
switch (target)
|
||||||
{
|
{
|
||||||
case "CHALLENGE" -> {
|
case "CHALLENGE" -> {
|
||||||
int size = this.challengeList.size();
|
int size = this.challengeList.size();
|
||||||
|
|
||||||
if (size <= slot.amountMap().getOrDefault("CHALLENGE", 1) ||
|
if (size <= slot.amountMap().getOrDefault("CHALLENGE", 1) ||
|
||||||
1.0 * size / slot.amountMap().getOrDefault("CHALLENGE", 1) <= this.challengeIndex + 1)
|
1.0 * size / slot.amountMap().getOrDefault("CHALLENGE", 1) <= this.challengeIndex + 1)
|
||||||
{
|
{
|
||||||
// There are no next elements
|
// There are no next elements
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
nextPageIndex = this.challengeIndex + 2;
|
|
||||||
}
|
|
||||||
case "LEVEL" -> {
|
|
||||||
int size = this.levelList.size();
|
|
||||||
|
|
||||||
if (size <= slot.amountMap().getOrDefault("LEVEL", 1) ||
|
|
||||||
1.0 * size / slot.amountMap().getOrDefault("LEVEL", 1) <= this.levelIndex + 1)
|
|
||||||
{
|
|
||||||
// There are no next elements
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
nextPageIndex = this.levelIndex + 2;
|
|
||||||
}
|
|
||||||
default -> {
|
|
||||||
// If not assigned to any type, return null.
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
nextPageIndex = this.challengeIndex + 2;
|
||||||
|
}
|
||||||
|
case "LEVEL" -> {
|
||||||
|
int size = this.levelList.size();
|
||||||
|
|
||||||
|
if (size <= slot.amountMap().getOrDefault("LEVEL", 1) ||
|
||||||
|
1.0 * size / slot.amountMap().getOrDefault("LEVEL", 1) <= this.levelIndex + 1)
|
||||||
|
{
|
||||||
|
// There are no next elements
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
nextPageIndex = this.levelIndex + 2;
|
||||||
|
}
|
||||||
|
default -> {
|
||||||
|
// If not assigned to any type, return null.
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
PanelItemBuilder builder = new PanelItemBuilder();
|
PanelItemBuilder builder = new PanelItemBuilder();
|
||||||
@ -672,13 +700,13 @@ public class ChallengesPanel extends CommonPanel
|
|||||||
|
|
||||||
if (template.title() != null)
|
if (template.title() != null)
|
||||||
{
|
{
|
||||||
builder.name(this.user.getTranslation(this.world, template.title()));
|
builder.name(this.viewer.getTranslation(this.world, template.title()));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (template.description() != null)
|
if (template.description() != null)
|
||||||
{
|
{
|
||||||
builder.description(this.user.getTranslation(this.world, template.description(),
|
builder.description(this.viewer.getTranslation(this.world, template.description(),
|
||||||
Constants.PARAMETER_NUMBER, String.valueOf(nextPageIndex)));
|
Constants.PARAMETER_NUMBER, String.valueOf(nextPageIndex)));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add ClickHandler
|
// Add ClickHandler
|
||||||
@ -687,8 +715,8 @@ public class ChallengesPanel extends CommonPanel
|
|||||||
// Next button ignores click type currently.
|
// Next button ignores click type currently.
|
||||||
switch (target)
|
switch (target)
|
||||||
{
|
{
|
||||||
case "CHALLENGE" -> this.challengeIndex++;
|
case "CHALLENGE" -> this.challengeIndex++;
|
||||||
case "LEVEL" -> this.levelIndex++;
|
case "LEVEL" -> this.levelIndex++;
|
||||||
}
|
}
|
||||||
|
|
||||||
this.build();
|
this.build();
|
||||||
@ -699,10 +727,10 @@ public class ChallengesPanel extends CommonPanel
|
|||||||
|
|
||||||
// Collect tooltips.
|
// Collect tooltips.
|
||||||
List<String> tooltips = template.actions().stream().
|
List<String> tooltips = template.actions().stream().
|
||||||
filter(action -> action.tooltip() != null).
|
filter(action -> action.tooltip() != null).
|
||||||
map(action -> this.user.getTranslation(this.world, action.tooltip())).
|
map(action -> this.viewer.getTranslation(this.world, action.tooltip())).
|
||||||
filter(text -> !text.isBlank()).
|
filter(text -> !text.isBlank()).
|
||||||
collect(Collectors.toCollection(() -> new ArrayList<>(template.actions().size())));
|
collect(Collectors.toCollection(() -> new ArrayList<>(template.actions().size())));
|
||||||
|
|
||||||
// Add tooltips.
|
// Add tooltips.
|
||||||
if (!tooltips.isEmpty())
|
if (!tooltips.isEmpty())
|
||||||
@ -765,13 +793,13 @@ public class ChallengesPanel extends CommonPanel
|
|||||||
|
|
||||||
if (template.title() != null)
|
if (template.title() != null)
|
||||||
{
|
{
|
||||||
builder.name(this.user.getTranslation(this.world, template.title()));
|
builder.name(this.viewer.getTranslation(this.world, template.title()));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (template.description() != null)
|
if (template.description() != null)
|
||||||
{
|
{
|
||||||
builder.description(this.user.getTranslation(this.world, template.description(),
|
builder.description(this.viewer.getTranslation(this.world, template.description(),
|
||||||
Constants.PARAMETER_NUMBER, String.valueOf(previousPageIndex)));
|
Constants.PARAMETER_NUMBER, String.valueOf(previousPageIndex)));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add ClickHandler
|
// Add ClickHandler
|
||||||
@ -780,8 +808,8 @@ public class ChallengesPanel extends CommonPanel
|
|||||||
// Next button ignores click type currently.
|
// Next button ignores click type currently.
|
||||||
switch (target)
|
switch (target)
|
||||||
{
|
{
|
||||||
case "CHALLENGE" -> this.challengeIndex--;
|
case "CHALLENGE" -> this.challengeIndex--;
|
||||||
case "LEVEL" -> this.levelIndex--;
|
case "LEVEL" -> this.levelIndex--;
|
||||||
}
|
}
|
||||||
|
|
||||||
this.build();
|
this.build();
|
||||||
@ -792,10 +820,10 @@ public class ChallengesPanel extends CommonPanel
|
|||||||
|
|
||||||
// Collect tooltips.
|
// Collect tooltips.
|
||||||
List<String> tooltips = template.actions().stream().
|
List<String> tooltips = template.actions().stream().
|
||||||
filter(action -> action.tooltip() != null).
|
filter(action -> action.tooltip() != null).
|
||||||
map(action -> this.user.getTranslation(this.world, action.tooltip())).
|
map(action -> this.viewer.getTranslation(this.world, action.tooltip())).
|
||||||
filter(text -> !text.isBlank()).
|
filter(text -> !text.isBlank()).
|
||||||
collect(Collectors.toCollection(() -> new ArrayList<>(template.actions().size())));
|
collect(Collectors.toCollection(() -> new ArrayList<>(template.actions().size())));
|
||||||
|
|
||||||
// Add tooltips.
|
// Add tooltips.
|
||||||
if (!tooltips.isEmpty())
|
if (!tooltips.isEmpty())
|
||||||
@ -809,9 +837,9 @@ public class ChallengesPanel extends CommonPanel
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// ---------------------------------------------------------------------
|
// ---------------------------------------------------------------------
|
||||||
// Section: Variables
|
// Section: Variables
|
||||||
// ---------------------------------------------------------------------
|
// ---------------------------------------------------------------------
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This boolean indicates if in the world there exist challenges for displaying in GUI.
|
* This boolean indicates if in the world there exist challenges for displaying in GUI.
|
||||||
|
@ -40,7 +40,7 @@ public class GameModePanel extends CommonPanel
|
|||||||
List<GameModeAddon> addonList,
|
List<GameModeAddon> addonList,
|
||||||
boolean adminMode)
|
boolean adminMode)
|
||||||
{
|
{
|
||||||
super(addon, user, world, null, null);
|
super(addon, user, user, world, null, null);
|
||||||
this.addonList = addonList;
|
this.addonList = addonList;
|
||||||
this.adminMode = adminMode;
|
this.adminMode = adminMode;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user