diff --git a/pom.xml b/pom.xml
index 38b42ff..ae582fa 100644
--- a/pom.xml
+++ b/pom.xml
@@ -100,7 +100,7 @@
world.bentobox
bentobox
- 1.2.1
+ 1.3.0-SNAPSHOT
provided
diff --git a/src/main/java/world/bentobox/challenges/ParseItem.java b/src/main/java/world/bentobox/challenges/ParseItem.java
deleted file mode 100644
index 67fd806..0000000
--- a/src/main/java/world/bentobox/challenges/ParseItem.java
+++ /dev/null
@@ -1,170 +0,0 @@
-package world.bentobox.challenges;
-
-import org.bukkit.Material;
-import org.bukkit.inventory.ItemStack;
-import org.bukkit.inventory.meta.PotionMeta;
-import org.bukkit.potion.PotionData;
-import org.bukkit.potion.PotionType;
-
-/**
- * Class that parses a string into an ItemStack
- * Used for converting config file entries to objects
- * @author tastybento
- *
- * @deprecated
- * @see world.bentobox.bentobox.util.ItemParser#parse(String)
- */
-@Deprecated
-public class ParseItem {
-
- private final ItemStack item;
- private ChallengesAddon addon;
-
- public ParseItem(ChallengesAddon addon, String s) {
- this.addon = addon;
- item = parseItem(s);
- }
-
- /**
- * Parse a string into an itemstack
- * @param s - input string
- * @return ItemStack or null if parsing failed
- */
- private ItemStack parseItem(String s) {
- String[] part = s.split(":");
- if (part.length > 0 && (part[0].equalsIgnoreCase("POTION") || part[0].equalsIgnoreCase("TIPPED_ARROW"))) {
- return potion(s, part);
- }
- // Material:Qty
- if (part.length == 2) {
- return two(s, part);
- } else if (part.length == 3) {
- return three(s, part);
- }
- showError(s);
- return null;
-
- }
-
- private ItemStack potion(String s, String[] part) {
- /*
- * # Format POTION:NAME::::QTY
- # LEVEL, EXTENDED, SPLASH, LINGER are optional.
- # LEVEL is a number, 1 or 2
- # LINGER is for V1.9 servers and later
- # Examples:
- # POTION:STRENGTH:1:EXTENDED:SPLASH:1
- # POTION:INSTANT_DAMAGE:2::LINGER:2
- # POTION:JUMP:2:NOTEXTENDED:NOSPLASH:1
- # POTION:WEAKNESS::::1 - any weakness potion
- */
-
- ItemStack result = new ItemStack(Material.POTION);
- if (part[0].equalsIgnoreCase("TIPPED_ARROW")) {
- result = new ItemStack(Material.TIPPED_ARROW);
- } else if (part[0].equalsIgnoreCase("SPLASH_POTION")) {
- result = new ItemStack(Material.SPLASH_POTION);
- } else if (part[0].equalsIgnoreCase("LINGERING_POTION")) {
- result = new ItemStack(Material.LINGERING_POTION);
- }
- int reqAmount = 0;
- String amount = "1";
- String level = "1";
- String ext = "";
- String splashLinger = "";
- switch (part.length) {
- case 3:
- amount = part[2];
- break;
- case 4:
- level = part[2];
- amount = part[3];
- break;
- case 5:
- level = part[2];
- ext = part[3];
- amount = part[4];
- break;
- case 6:
- level = part[2];
- ext = part[3];
- splashLinger = part[4];
- amount = part[5];
- break;
-
- default:
- // Because I don't know!
- return null;
- }
- // Parse the quantity
- try {
- reqAmount = Integer.parseInt(amount);
- } catch (Exception e) {
- addon.getLogger().severe(() -> "Could not parse the quantity of the potion or tipped arrow " + s);
- return null;
- }
- result.setAmount(reqAmount);
-
- // Parse the legacy splash / linger
- if (splashLinger.equalsIgnoreCase("SPLASH")) {
- result = new ItemStack(Material.SPLASH_POTION);
- } else if (splashLinger.equalsIgnoreCase("LINGER")) {
- result = new ItemStack(Material.LINGERING_POTION);
- }
- // Parse the type of potion
- PotionMeta potionMeta = (PotionMeta)(result.getItemMeta());
- PotionType type = PotionType.valueOf(part[1].toUpperCase());
- boolean isUpgraded = (level.isEmpty() || level.equalsIgnoreCase("1")) ? false: true;
- boolean isExtended = ext.equalsIgnoreCase("EXTENDED") ? true : false;
- PotionData data = new PotionData(type, isExtended, isUpgraded);
- potionMeta.setBasePotionData(data);
- result.setItemMeta(potionMeta);
- return result;
- }
-
- private ItemStack three(String s, String[] part) {
- // Rearrange
- String[] twoer = {part[0], part[2]};
- ItemStack result = two(s, twoer);
- if (result == null) {
- showError(s);
- return null;
- }
-
- return result;
-
- }
-
- private void showError(String s) {
- addon.getLogger().severe(() -> "Problem with " + s + " in config.yml!");
- }
-
- private ItemStack two(String s, String[] part) {
- int reqAmount = 0;
- try {
- reqAmount = Integer.parseInt(part[1]);
- } catch (Exception e) {
- showError(s);
- return null;
- }
- Material reqItem = Material.getMaterial(part[0].toUpperCase() + "_ITEM");
- if (reqItem == null) {
- // Try the item
- reqItem = Material.getMaterial(part[0].toUpperCase());
- }
-
- if (reqItem == null) {
- showError(s);
- return null;
- }
- return new ItemStack(reqItem, reqAmount);
-
- }
-
- /**
- * @return the item
- */
- public ItemStack getItem() {
- return item;
- }
-}
diff --git a/src/main/java/world/bentobox/challenges/commands/admin/CompleteChallenge.java b/src/main/java/world/bentobox/challenges/commands/admin/CompleteChallenge.java
index 9893677..a29e437 100644
--- a/src/main/java/world/bentobox/challenges/commands/admin/CompleteChallenge.java
+++ b/src/main/java/world/bentobox/challenges/commands/admin/CompleteChallenge.java
@@ -13,6 +13,7 @@ import world.bentobox.bentobox.api.localization.TextVariables;
import world.bentobox.bentobox.api.user.User;
import world.bentobox.bentobox.util.Util;
+@Deprecated
public class CompleteChallenge extends CompositeCommand {
private ChallengesManager manager;
diff --git a/src/main/java/world/bentobox/challenges/commands/admin/CreateChallenge.java b/src/main/java/world/bentobox/challenges/commands/admin/CreateChallenge.java
deleted file mode 100644
index ae450ba..0000000
--- a/src/main/java/world/bentobox/challenges/commands/admin/CreateChallenge.java
+++ /dev/null
@@ -1,52 +0,0 @@
-package world.bentobox.challenges.commands.admin;
-
-import java.util.List;
-
-import world.bentobox.challenges.ChallengesAddon;
-import world.bentobox.challenges.panel.CreateChallengeListener;
-import world.bentobox.bentobox.api.addons.Addon;
-import world.bentobox.bentobox.api.commands.CompositeCommand;
-import world.bentobox.bentobox.api.panels.builders.PanelBuilder;
-import world.bentobox.bentobox.api.user.User;
-
-
-/**
- * @deprecated Challenges can be creaded via GUI.
- */
-@Deprecated
-public class CreateChallenge extends CompositeCommand {
-
- /**
- * Admin command to make challenges
- * @param parent
- */
- public CreateChallenge(Addon addon, CompositeCommand parent) {
- super(addon, parent, "create");
- new CreateSurrounding(addon, this);
- }
-
- @Override
- public void setup() {
- this.setOnlyPlayer(true);
- this.setPermission("admin.challenges");
- this.setParametersHelp("challenges.commands.admin.create.parameters");
- this.setDescription("challenges.commands.admin.create.description");
-
- }
-
- @Override
- public boolean execute(User user, String label, List args) {
- if (args.isEmpty()) {
- user.sendMessage("challenges.errors.no-name");
- return false;
- }
- new PanelBuilder()
- .name(args.get(0))
- .size(49)
- .listener(new CreateChallengeListener((ChallengesAddon) getAddon(), user))
- .user(user)
- .build();
- return true;
- }
-
-}
diff --git a/src/main/java/world/bentobox/challenges/commands/admin/CreateSurrounding.java b/src/main/java/world/bentobox/challenges/commands/admin/CreateSurrounding.java
deleted file mode 100644
index e9fee1f..0000000
--- a/src/main/java/world/bentobox/challenges/commands/admin/CreateSurrounding.java
+++ /dev/null
@@ -1,125 +0,0 @@
-package world.bentobox.challenges.commands.admin;
-
-import java.util.HashMap;
-import java.util.List;
-import java.util.UUID;
-
-import org.bukkit.entity.Player;
-import org.bukkit.event.Cancellable;
-import org.bukkit.event.EventHandler;
-import org.bukkit.event.EventPriority;
-import org.bukkit.event.Listener;
-import org.bukkit.event.block.Action;
-import org.bukkit.event.block.BlockBreakEvent;
-import org.bukkit.event.entity.EntityDamageByEntityEvent;
-import org.bukkit.event.player.PlayerInteractAtEntityEvent;
-import org.bukkit.event.player.PlayerInteractEvent;
-import org.bukkit.event.player.PlayerQuitEvent;
-
-import world.bentobox.challenges.ChallengesAddon;
-import world.bentobox.bentobox.api.addons.Addon;
-import world.bentobox.bentobox.api.commands.CompositeCommand;
-import world.bentobox.bentobox.api.user.User;
-import world.bentobox.bentobox.util.Util;
-
-/**
- * Command to create a surrounding type challenge
- * @author tastybento
- * @deprecated Required blocks can be added via GUI. Not necessary.
- */
-@Deprecated
-public class CreateSurrounding extends CompositeCommand implements Listener {
-
- HashMap inProgress = new HashMap<>();
-
- /**
- * Admin command to make surrounding challenges
- * @param parent
- */
- public CreateSurrounding(Addon addon, CompositeCommand parent) {
- super(addon, parent, "surrounding");
- addon.getServer().getPluginManager().registerEvents(this, addon.getPlugin());
- }
-
- @Override
- public void setup() {
- this.setOnlyPlayer(true);
- this.setPermission("admin.challenges");
- this.setParametersHelp("challenges.commands.admin.surrounding.parameters");
- this.setDescription("challenges.commands.admin.surrounding.description");
- }
-
- @Override
- public boolean execute(User user, String label, List args) {
- if (args.isEmpty()) {
- user.sendMessage("challenges.errors.no-name");
- return false;
- }
- // Tell user to hit objects to add to the surrounding object requirements
- user.sendMessage("challenges.messages.admin.hit-things");
- inProgress.put(user.getUniqueId(), new SurroundChallengeBuilder((ChallengesAddon) getAddon()).owner(user).name(args.get(0)));
- return true;
- }
-
- @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true)
- public void onBlockBreak(BlockBreakEvent e) {
- e.setCancelled(inProgress.containsKey(e.getPlayer().getUniqueId()) ? true : false);
- }
-
- @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true)
- public void onPlayerQuit(PlayerQuitEvent e) {
- inProgress.remove(e.getPlayer().getUniqueId());
- }
-
- @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true)
- public boolean onPlayerInteract(PlayerInteractEvent e) {
- if (e.getAction().equals(Action.LEFT_CLICK_BLOCK) && inProgress.containsKey(e.getPlayer().getUniqueId())) {
- // Prevent damage
- e.setCancelled(true);
- inProgress.get(e.getPlayer().getUniqueId()).addBlock(e.getClickedBlock().getType());
- User.getInstance(e.getPlayer()).sendMessage("challenges.messages.admin.you-added", "[thing]", Util.prettifyText(e.getClickedBlock().getType().toString()));
- return true;
- }
-
- if (e.getAction().equals(Action.RIGHT_CLICK_BLOCK)) {
- return finished(e, e.getPlayer().getUniqueId());
- }
- return false;
- }
-
- private boolean finished(Cancellable e, UUID uuid) {
- if (inProgress.containsKey(uuid)) {
- e.setCancelled(true);
- boolean status = inProgress.get(uuid).build();
- if (status) {
- inProgress.get(uuid).getOwner().sendMessage("challenges.messages.admin.challenge-created", "[challenge]", inProgress.get(uuid).getName());
- }
- inProgress.remove(uuid);
- return status;
- }
- return false;
- }
-
- @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true)
- public boolean onPlayerInteract(PlayerInteractAtEntityEvent e) {
- return finished(e, e.getPlayer().getUniqueId());
- }
-
- @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true)
- public boolean onLeft(EntityDamageByEntityEvent e) {
- if (!(e.getDamager() instanceof Player)) {
- return false;
- }
- Player player = (Player)e.getDamager();
- if (inProgress.containsKey(player.getUniqueId())) {
- // Prevent damage
- e.setCancelled(true);
- inProgress.get(player.getUniqueId()).addEntity(e.getEntityType());
- User.getInstance(player).sendMessage("challenges.messages.admin.you-added", "[thing]", Util.prettifyText(e.getEntityType().toString()));
- return true;
- }
- return false;
- }
-
-
-}
diff --git a/src/main/java/world/bentobox/challenges/commands/admin/SurroundChallengeBuilder.java b/src/main/java/world/bentobox/challenges/commands/admin/SurroundChallengeBuilder.java
deleted file mode 100644
index 037b0af..0000000
--- a/src/main/java/world/bentobox/challenges/commands/admin/SurroundChallengeBuilder.java
+++ /dev/null
@@ -1,84 +0,0 @@
-package world.bentobox.challenges.commands.admin;
-
-import java.util.EnumMap;
-import java.util.Map;
-
-import org.bukkit.Material;
-import org.bukkit.entity.EntityType;
-
-import world.bentobox.challenges.ChallengesAddon;
-import world.bentobox.bentobox.api.user.User;
-
-/**
- * Enables the state of a Surrounding Challenge to be stored as it is built
- * @author tastybento
- * @deprecated Levels and challenges can be created via GUI. Not necessary command.
- */
-@Deprecated
-public class SurroundChallengeBuilder {
- private ChallengesAddon addon;
- private String name;
- private User owner;
- private Map reqBlocks = new EnumMap<>(Material.class);
- private Map reqEntities = new EnumMap<>(EntityType.class);
-
- public SurroundChallengeBuilder(ChallengesAddon addon) {
- this.addon = addon;
- }
-
- SurroundChallengeBuilder name(String name) {
- this.name = name;
- return this;
- }
-
- SurroundChallengeBuilder owner(User user) {
- this.owner = user;
- return this;
- }
-
- SurroundChallengeBuilder addBlock(Material mat) {
- reqBlocks.computeIfPresent(mat, (material, amount) -> amount + 1);
- reqBlocks.putIfAbsent(mat, 1);
- return this;
- }
-
- SurroundChallengeBuilder addEntity(EntityType ent) {
- reqEntities.computeIfPresent(ent, (type, amount) -> amount + 1);
- reqEntities.putIfAbsent(ent, 1);
- return this;
- }
-
- /**
- * @return the name
- */
- public String getName() {
- return name;
- }
-
- /**
- * @return the owner
- */
- public User getOwner() {
- return owner;
- }
-
- /**
- * @return the reqBlocks
- */
- public Map getReqBlocks() {
- return reqBlocks;
- }
-
- /**
- * @return the reqEntities
- */
- public Map getReqEntities() {
- return reqEntities;
- }
-
- public boolean build() {
- return false; //addon.getChallengesManager().createSurroundingChallenge(this);
-
- }
-
-}
\ No newline at end of file
diff --git a/src/main/java/world/bentobox/challenges/panel/AdminEditGUI.java b/src/main/java/world/bentobox/challenges/panel/AdminEditGUI.java
deleted file mode 100644
index 2b3fd09..0000000
--- a/src/main/java/world/bentobox/challenges/panel/AdminEditGUI.java
+++ /dev/null
@@ -1,69 +0,0 @@
-package world.bentobox.challenges.panel;
-
-import org.bukkit.Material;
-import org.bukkit.World;
-import org.bukkit.event.inventory.ClickType;
-import org.bukkit.inventory.ItemStack;
-
-import world.bentobox.challenges.ChallengesAddon;
-import world.bentobox.challenges.database.object.Challenge;
-import world.bentobox.bentobox.api.panels.Panel;
-import world.bentobox.bentobox.api.panels.PanelItem.ClickHandler;
-import world.bentobox.bentobox.api.panels.builders.PanelBuilder;
-import world.bentobox.bentobox.api.panels.builders.PanelItemBuilder;
-import world.bentobox.bentobox.api.user.User;
-
-
-/**
- * @deprecated All panels are reworked.
- */
-@Deprecated
-public class AdminEditGUI implements ClickHandler {
-
- private ChallengesAddon addon;
- private User requester;
- private Challenge challenge;
- private World world;
- private String permPrefix;
- private String label;
- private User target;
-
- /**
- * Shows the admin panel for the challenge for a player
- * @param addon addon
- * @param requester admin user
- * @param target target of admin
- * @param challenge challenge
- * @param world world
- * @param permPrefix permission prefix for world
- * @param label command label
- */
- public AdminEditGUI(ChallengesAddon addon, User requester, User target, Challenge challenge, World world,
- String permPrefix, String label) {
- super();
- this.addon = addon;
- this.requester = requester;
- this.target = target;
- this.challenge = challenge;
- this.world = world;
- this.permPrefix = permPrefix;
- this.label = label;
-
- new PanelBuilder().size(27).user(requester).name(requester.getTranslation("challenges.admin.gui-title"))
- .item(new PanelItemBuilder().icon(challenge.getIcon()).name("Icon").build())
- .item(9, new PanelItemBuilder().icon(new ItemStack(Material.WHITE_BANNER)).name("Description").description(challenge.getDescription()).build())
- .item(18, new PanelItemBuilder().icon(new ItemStack(Material.GREEN_STAINED_GLASS_PANE)).name("Active").build())
- .item(27, new PanelItemBuilder().icon(new ItemStack(Material.BOOK)).name("Edit required items").clickHandler(this).build())
- .build();
- }
-
- @Override
- public boolean onClick(Panel panel, User user, ClickType clickType, int slot) {
- if (slot == 27) {
- new RequiredPanel(challenge, user, panel);
- }
- return true;
- }
-
-
-}
diff --git a/src/main/java/world/bentobox/challenges/panel/AdminGUI.java b/src/main/java/world/bentobox/challenges/panel/AdminGUI.java
deleted file mode 100644
index 2382d84..0000000
--- a/src/main/java/world/bentobox/challenges/panel/AdminGUI.java
+++ /dev/null
@@ -1,66 +0,0 @@
-package world.bentobox.challenges.panel;
-
-import org.bukkit.Material;
-import org.bukkit.World;
-import org.bukkit.event.inventory.ClickType;
-import org.bukkit.inventory.ItemStack;
-
-import world.bentobox.challenges.ChallengesAddon;
-import world.bentobox.challenges.database.object.Challenge;
-import world.bentobox.bentobox.api.panels.Panel;
-import world.bentobox.bentobox.api.panels.PanelItem.ClickHandler;
-import world.bentobox.bentobox.api.panels.builders.PanelBuilder;
-import world.bentobox.bentobox.api.panels.builders.PanelItemBuilder;
-import world.bentobox.bentobox.api.user.User;
-
-
-/**
- * @deprecated All panels are reworked.
- */
-@Deprecated
-public class AdminGUI implements ClickHandler {
-
- private ChallengesAddon addon;
- private User player;
- private Challenge challenge;
- private World world;
- private String permPrefix;
- private String label;
-
- /**
- * Shows the admin panel for the challenge
- * @param addon
- * @param player
- * @param challenge
- * @param world
- * @param permPrefix
- * @param label
- */
- public AdminGUI(ChallengesAddon addon, User player, Challenge challenge, World world,
- String permPrefix, String label) {
- super();
- this.addon = addon;
- this.player = player;
- this.challenge = challenge;
- this.world = world;
- this.permPrefix = permPrefix;
- this.label = label;
-
- new PanelBuilder().size(27).user(player).name(player.getTranslation("challenges.admin.gui-title"))
- .item(new PanelItemBuilder().icon(challenge.getIcon()).name("Icon").build())
- .item(9, new PanelItemBuilder().icon(new ItemStack(Material.WHITE_BANNER)).name("Description").description(challenge.getDescription()).build())
- .item(18, new PanelItemBuilder().icon(new ItemStack(Material.GREEN_STAINED_GLASS_PANE)).name("Active").build())
- .item(27, new PanelItemBuilder().icon(new ItemStack(Material.BOOK)).name("Edit required items").clickHandler(this).build())
- .build();
- }
-
- @Override
- public boolean onClick(Panel panel, User user, ClickType clickType, int slot) {
- if (slot == 27) {
- new RequiredPanel(challenge, user, panel);
- }
- return true;
- }
-
-
-}
diff --git a/src/main/java/world/bentobox/challenges/panel/ChallengesPanels.java b/src/main/java/world/bentobox/challenges/panel/ChallengesPanels.java
deleted file mode 100644
index 495ab02..0000000
--- a/src/main/java/world/bentobox/challenges/panel/ChallengesPanels.java
+++ /dev/null
@@ -1,248 +0,0 @@
-package world.bentobox.challenges.panel;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-import java.util.Set;
-
-import org.bukkit.Material;
-import org.bukkit.World;
-import org.bukkit.inventory.ItemStack;
-
-import world.bentobox.challenges.ChallengesAddon;
-import world.bentobox.challenges.ChallengesManager;
-import world.bentobox.challenges.database.object.ChallengeLevel;
-import world.bentobox.challenges.utils.GuiUtils;
-import world.bentobox.challenges.utils.LevelStatus;
-import world.bentobox.challenges.commands.ChallengesCommand;
-import world.bentobox.challenges.database.object.Challenge;
-import world.bentobox.challenges.database.object.Challenge.ChallengeType;
-import world.bentobox.bentobox.api.panels.Panel;
-import world.bentobox.bentobox.api.panels.PanelItem;
-import world.bentobox.bentobox.api.panels.builders.PanelBuilder;
-import world.bentobox.bentobox.api.panels.builders.PanelItemBuilder;
-import world.bentobox.bentobox.api.user.User;
-
-
-/**
- * @deprecated All panels are reworked.
- */
-@Deprecated
-public class ChallengesPanels {
- private ChallengesAddon addon;
- private ChallengesManager manager;
- private User user;
- private ChallengeLevel level;
- private World world;
- private String permPrefix;
- private String label;
-
- public ChallengesPanels(ChallengesAddon addon, User user, String level, World world, String permPrefix, String label) {
- this.addon = addon;
- this.manager = addon.getChallengesManager();
- this.user = user;
- this.world = world;
- this.permPrefix = permPrefix;
- this.label = label;
-
- if (manager.getAllChallenges(world).isEmpty()) {
- addon.getLogger().severe("There are no challenges set up!");
- user.sendMessage("general.errors.general");
- return;
- }
- if (level.isEmpty()) {
- level = manager.getLevels(world).iterator().next().getUniqueId();
- }
- this.level = this.manager.getLevel(level);
- // Check if level is valid
- if (!manager.isLevelUnlocked(user, this.level)) {
- return;
- }
- PanelBuilder panelBuilder = new PanelBuilder()
- .name(user.getTranslation("challenges.gui-title"));
-
- addChallengeItems(panelBuilder);
- addNavigation(panelBuilder);
- addFreeChallanges(panelBuilder);
-
- // Create the panel
- Panel panel = panelBuilder.build();
- panel.open(user);
- }
-
- private void addChallengeItems(PanelBuilder panelBuilder) {
- List levelChallenges = manager.getLevelChallenges(level);
- // Only show a control panel for the level requested.
- for (Challenge challenge : levelChallenges) {
- createItem(panelBuilder, challenge);
- }
- }
-
- private void addFreeChallanges(PanelBuilder panelBuilder) {
- manager.getFreeChallenges(world).forEach(challenge -> createItem(panelBuilder, challenge));
- }
-
-
- /**
- * Creates a panel item for challenge if appropriate and adds it to panelBuilder
- * @param panelBuilder
- * @param challenge
- */
- private void createItem(PanelBuilder panelBuilder, Challenge challenge) {
- // Check completion
- boolean completed = manager.isChallengeComplete(user, challenge);
- // If challenge is removed after completion, remove it
- if (completed && challenge.isRemoveWhenCompleted()) {
- return;
- }
- PanelItem item = new PanelItemBuilder()
- .icon(challenge.getIcon())
- .name(challenge.getFriendlyName().isEmpty() ? challenge.getUniqueId() : challenge.getFriendlyName())
- .description(challengeDescription(challenge))
- .glow(completed)
- .clickHandler((panel, player, c, s) -> {
- new TryToComplete(addon).user(player).manager(manager).challenge(challenge)
- .world(world).permPrefix(permPrefix).label(label).build();
- return true;
- })
- .build();
- if (challenge.getOrder() >= 0) {
- panelBuilder.item(challenge.getOrder(),item);
- } else {
- panelBuilder.item(item);
- }
- }
-
- private void addNavigation(PanelBuilder panelBuilder) {
- // TODO: This if fix for wrong getNumberOfChallengesStillToDo() issue. #23
- LevelStatus previousStatus = null;
-
- // Add navigation to other levels
- for (LevelStatus status: manager.getChallengeLevelStatus(user, world)) {
- if (status.getLevel().getUniqueId().equals(level)) {
- // Skip if this is the current level
- previousStatus = status;
- continue;
- }
- // Create a nice name for the level
- String name = status.getLevel().getFriendlyName().isEmpty() ? status.getLevel().getUniqueId() : status.getLevel().getFriendlyName();
-
- if (status.isUnlocked()) {
- // Clicking on this icon will open up this level's challenges
- PanelItem item = new PanelItemBuilder()
- .icon(new ItemStack(Material.ENCHANTED_BOOK))
- .name(name)
- .description(GuiUtils.stringSplit(
- user.getTranslation("challenges.navigation","[level]",name),
- this.addon.getChallengesSettings().getLoreLineLength()))
- .clickHandler((p, u, c, s) -> {
- u.closeInventory();
- u.performCommand(label + " " + ChallengesCommand.CHALLENGE_COMMAND + " " + status.getLevel().getUniqueId());
- return true;
- })
- .build();
- panelBuilder.item(item);
- } else {
- // Clicking on this icon will do nothing because the challenge is not unlocked yet
- String previousLevelName = status.getPreviousLevel().getFriendlyName().isEmpty() ? status.getPreviousLevel().getUniqueId() : status.getPreviousLevel().getFriendlyName();
- PanelItem item = new PanelItemBuilder()
- .icon(new ItemStack(Material.BOOK))
- .name(name)
- .description(GuiUtils.stringSplit(
- user.getTranslation("challenges.to-complete",
- "[challengesToDo]", String.valueOf(previousStatus != null ? previousStatus.getNumberOfChallengesStillToDo() : ""),
- "[thisLevel]", previousLevelName),
- this.addon.getChallengesSettings().getLoreLineLength()))
- .build();
- panelBuilder.item(item);
- }
-
- previousStatus = status;
- }
- }
-
- /**
- * Creates the challenge description for the "item" in the inventory
- *
- * @param challenge
- * @return List of strings splitting challenge string into 25 chars long
- */
- private List challengeDescription(Challenge challenge) {
- List result = new ArrayList();
- String level = challenge.getLevel();
- if (!level.isEmpty()) {
- result.addAll(splitTrans(user, "challenges.level", "[level]", level));
- }
- // Check if completed or not
-
- boolean complete = addon.getChallengesManager().isChallengeComplete(user, challenge);
- int maxTimes = challenge.getMaxTimes();
- long doneTimes = addon.getChallengesManager().getChallengeTimes(user, challenge);
- if (complete) {
- result.add(user.getTranslation("challenges.complete"));
- }
- if (challenge.isRepeatable()) {
- if (maxTimes == 0) {
-
- // Check if the player has maxed out the challenge
- if (doneTimes < maxTimes) {
- result.addAll(splitTrans(user, "challenges.completed-times","[donetimes]", String.valueOf(doneTimes),"[maxtimes]", String.valueOf(maxTimes)));
- } else {
- result.addAll(splitTrans(user, "challenges.maxed-reached","[donetimes]", String.valueOf(doneTimes),"[maxtimes]", String.valueOf(maxTimes)));
- }
- }
- }
- if (!complete || (complete && challenge.isRepeatable())) {
- result.addAll(challenge.getDescription());
- if (challenge.getChallengeType().equals(ChallengeType.INVENTORY)) {
- if (challenge.isTakeItems()) {
- result.addAll(splitTrans(user, "challenges.item-take-warning"));
- }
- } else if (challenge.getChallengeType().equals(ChallengeType.ISLAND)) {
- result.addAll(splitTrans(user, "challenges.items-closeby"));
- }
- }
- if (complete && (!challenge.getChallengeType().equals(ChallengeType.INVENTORY) || !challenge.isRepeatable())) {
- result.addAll(splitTrans(user, "challenges.not-repeatable"));
- return result;
- }
- double moneyReward = 0;
- int expReward = 0;
- String rewardText = "";
- if (!complete) {
- // First time
- moneyReward = challenge.getRewardMoney();
- rewardText = challenge.getRewardText();
- expReward = challenge.getRewardExperience();
- if (!rewardText.isEmpty()) {
- result.addAll(splitTrans(user, "challenges.first-time-rewards"));
- }
- } else {
- // Repeat challenge
- moneyReward = challenge.getRepeatMoneyReward();
- rewardText = challenge.getRepeatRewardText();
- expReward = challenge.getRepeatExperienceReward();
- if (!rewardText.isEmpty()) {
- result.addAll(splitTrans(user, "challenges.repeat-rewards"));
- }
-
- }
- if (!rewardText.isEmpty()) {
- result.addAll(splitTrans(user,rewardText));
- }
- if (expReward > 0) {
- result.addAll(splitTrans(user,"challenges.exp-reward", "[reward]", String.valueOf(expReward)));
- }
- if (addon.getPlugin().getSettings().isUseEconomy() && moneyReward > 0) {
- result.addAll(splitTrans(user,"challenges.money-reward", "[reward]", String.valueOf(moneyReward)));
- }
- // Final placeholder change for [label]
- result.replaceAll(x -> x.replace("[label]", label));
- return result;
- }
-
- private Collection extends String> splitTrans(User user, String string, String...strings) {
- return GuiUtils.stringSplit(user.getTranslation(string, strings),
- this.addon.getChallengesSettings().getLoreLineLength());
- }
-}
diff --git a/src/main/java/world/bentobox/challenges/panel/ChallengesPanels2.java b/src/main/java/world/bentobox/challenges/panel/ChallengesPanels2.java
deleted file mode 100644
index 2ef67cb..0000000
--- a/src/main/java/world/bentobox/challenges/panel/ChallengesPanels2.java
+++ /dev/null
@@ -1,320 +0,0 @@
-package world.bentobox.challenges.panel;
-
-
-import org.bukkit.Material;
-import org.bukkit.World;
-import org.bukkit.inventory.ItemStack;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-
-import world.bentobox.bentobox.api.panels.Panel;
-import world.bentobox.bentobox.api.panels.PanelItem;
-import world.bentobox.bentobox.api.panels.builders.PanelBuilder;
-import world.bentobox.bentobox.api.panels.builders.PanelItemBuilder;
-import world.bentobox.bentobox.api.user.User;
-import world.bentobox.challenges.ChallengesAddon;
-import world.bentobox.challenges.ChallengesManager;
-import world.bentobox.challenges.commands.ChallengesCommand;
-import world.bentobox.challenges.database.object.Challenge;
-import world.bentobox.challenges.database.object.Challenge.ChallengeType;
-import world.bentobox.challenges.database.object.ChallengeLevel;
-import world.bentobox.challenges.utils.GuiUtils;
-import world.bentobox.challenges.utils.LevelStatus;
-
-
-/**
- * @deprecated All panels are reworked.
- */
-@Deprecated
-public class ChallengesPanels2 {
-
- public enum Mode {
- ADMIN,
- EDIT,
- PLAYER
- }
- private ChallengesAddon addon;
- private ChallengesManager manager;
- private User requester;
- private ChallengeLevel level;
- private World world;
- private String permPrefix;
- private String label;
- private Mode mode;
- private User target;
-
- public ChallengesPanels2(ChallengesAddon addon, User requester, User target, String level, World world, String permPrefix, String label, Mode mode) {
- this.addon = addon;
- this.manager = addon.getChallengesManager();
- this.requester = requester;
- this.target = target;
- this.world = world;
- this.permPrefix = permPrefix;
- this.label = label;
- this.mode = mode;
-
- if (manager.getAllChallenges(world).isEmpty()) {
- addon.getLogger().severe("There are no challenges set up!");
- requester.sendMessage("general.errors.general");
- return;
- }
- if (level.isEmpty()) {
- // TODO: open the farthest challenge panel
- level = manager.getLevels(world).iterator().next().getUniqueId();
- }
- this.level = manager.getLevel(level);
- // Check if level is valid
- if (mode.equals(Mode.PLAYER) && !manager.isLevelUnlocked(requester, this.level)) {
- return;
- }
- PanelBuilder panelBuilder = new PanelBuilder();
- switch (mode) {
- case ADMIN:
- panelBuilder.name(requester.getTranslation("challenges.admin.gui-title"));
- break;
- case EDIT:
- panelBuilder.name(requester.getTranslation("challenges.admin.edit-gui-title"));
- break;
- case PLAYER:
- panelBuilder.name(requester.getTranslation("challenges.gui-title"));
- break;
- default:
- break;
-
- }
-
- addChallengeItems(panelBuilder);
- addNavigation(panelBuilder);
- addFreeChallanges(panelBuilder);
-
- // Create the panel
- Panel panel = panelBuilder.build();
- panel.open(requester);
- }
-
- private void addChallengeItems(PanelBuilder panelBuilder) {
- // Only show a control panel for the level requested.
- for (Challenge challenge : manager.getLevelChallenges(level)) {
- createItem(panelBuilder, challenge);
- }
- }
-
- private void addFreeChallanges(PanelBuilder panelBuilder) {
- manager.getFreeChallenges(world).forEach(challenge -> createItem(panelBuilder, challenge));
- }
-
-
- /**
- * Creates a panel item for challenge if appropriate and adds it to panelBuilder
- * @param panelBuilder
- * @param challenge
- */
- private void createItem(PanelBuilder panelBuilder, Challenge challenge) {
- // For admin, glow means activated. For user, glow means done
- boolean glow = false;
- switch (mode) {
- case ADMIN:
- glow = challenge.isDeployed();
- break;
- case EDIT:
- glow = manager.isChallengeComplete(requester, challenge);
- break;
- case PLAYER:
- glow = manager.isChallengeComplete(requester, challenge);
- break;
- default:
- break;
-
- }
- // If not admin and challenge is removed after completion, remove it
- if (mode.equals(Mode.PLAYER) && glow && challenge.isRemoveWhenCompleted()) {
- return;
- }
- PanelItemBuilder itemBuilder = new PanelItemBuilder()
- .icon(challenge.getIcon())
- .name(challenge.getFriendlyName().isEmpty() ? challenge.getUniqueId() : challenge.getFriendlyName())
- .description(challengeDescription(challenge))
- .glow(glow);
- if (mode.equals(Mode.ADMIN)) {
- // Admin click
- itemBuilder.clickHandler((panel, player, c, s) -> {
- new AdminGUI(addon, player, challenge, world, permPrefix, label);
- return true;
- });
-
- } else if (mode.equals(Mode.EDIT)) {
- // Admin edit click
- itemBuilder.clickHandler((panel, player, c, s) -> {
- new AdminEditGUI(addon, player, target, challenge, world, permPrefix, label);
- return true;
- });
- } else {
- // Player click
- itemBuilder.clickHandler((panel, player, c, s) -> {
- new TryToComplete(addon, player, challenge, world, label, permPrefix).build();
- return true;
- });
- }
-
- // If the challenge has a specific slot allocated, use it
- if (challenge.getOrder() >= 0) {
- panelBuilder.item(challenge.getOrder(),itemBuilder.build());
- } else {
- panelBuilder.item(itemBuilder.build());
- }
- }
-
- private void addNavigation(PanelBuilder panelBuilder) {
- // TODO: This if fix for wrong getNumberOfChallengesStillToDo() issue. #23
- LevelStatus previousStatus = null;
-
- // Add navigation to other levels
- for (LevelStatus status: manager.getChallengeLevelStatus(requester, world)) {
- if (status.getLevel().getUniqueId().equalsIgnoreCase(level.getUniqueId())) {
- // Skip if this is the current level
- previousStatus = status;
- continue;
- }
- // Create a nice name for the level
- String name = status.getLevel().getFriendlyName().isEmpty() ? status.getLevel().getUniqueId() : status.getLevel().getFriendlyName();
-
- if (mode.equals(Mode.ADMIN) || mode.equals(Mode.EDIT) || status.isUnlocked()) {
- // Clicking on this icon will open up this level's challenges
- PanelItem item = new PanelItemBuilder()
- .icon(new ItemStack(Material.ENCHANTED_BOOK))
- .name(name)
- .description(GuiUtils.stringSplit(
- requester.getTranslation("challenges.navigation","[level]",name),
- this.addon.getChallengesSettings().getLoreLineLength()))
- .clickHandler((p, u, c, s) -> {
- u.closeInventory();
- u.performCommand(label + " " + ChallengesCommand.CHALLENGE_COMMAND + " " + status.getLevel().getUniqueId());
- return true;
- })
- .build();
- panelBuilder.item(item);
- } else {
- // Clicking on this icon will do nothing because the challenge is not unlocked yet
- String previousLevelName = status.getPreviousLevel().getFriendlyName().isEmpty() ? status.getPreviousLevel().getUniqueId() : status.getPreviousLevel().getFriendlyName();
- PanelItem item = new PanelItemBuilder()
- .icon(new ItemStack(Material.BOOK))
- .name(name)
- .description(GuiUtils.stringSplit(requester.getTranslation("challenges.to-complete",
- "[challengesToDo]", String.valueOf(previousStatus != null ? previousStatus.getNumberOfChallengesStillToDo() : ""),
- "[thisLevel]", previousLevelName),
- this.addon.getChallengesSettings().getLoreLineLength()))
- .build();
- panelBuilder.item(item);
- }
-
- previousStatus = status;
- }
- }
-
- /**
- * Creates the challenge description for the "item" in the inventory
- *
- * @param challenge
- * @return List of strings splitting challenge string into 25 chars long
- */
- private List challengeDescription(Challenge challenge) {
- List result = new ArrayList();
- String level = challenge.getLevel();
- if (!level.isEmpty()) {
- result.addAll(splitTrans(requester, "challenges.level", "[level]", level));
- }
-
- if (mode.equals(Mode.ADMIN)) {
- if ((!challenge.getChallengeType().equals(ChallengeType.INVENTORY) || !challenge.isRepeatable())) {
- result.addAll(splitTrans(requester, "challenges.not-repeatable"));
- } else {
- result.addAll(splitTrans(requester, "challenges.repeatable", "[maxtimes]", String.valueOf(challenge.getMaxTimes())));
- }
- if (challenge.getChallengeType().equals(ChallengeType.INVENTORY) && challenge.isTakeItems()) {
- result.addAll(splitTrans(requester, "challenges.item-take-warning"));
- }
- result.addAll(addRewards(challenge, true, true));
- } else {
- // Check if completed or not
- boolean complete = addon.getChallengesManager().isChallengeComplete(requester, challenge);
- int maxTimes = challenge.getMaxTimes();
- long doneTimes = addon.getChallengesManager().getChallengeTimes(requester, challenge);
- if (complete) {
- result.add(requester.getTranslation("challenges.complete"));
- }
-
- if (challenge.isRepeatable()) {
- if (maxTimes == 0) {
-
- // Check if the player has maxed out the challenge
- if (doneTimes < maxTimes) {
- result.addAll(splitTrans(requester, "challenges.completed-times","[donetimes]", String.valueOf(doneTimes),"[maxtimes]", String.valueOf(maxTimes)));
- } else {
- result.addAll(splitTrans(requester, "challenges.maxed-reached","[donetimes]", String.valueOf(doneTimes),"[maxtimes]", String.valueOf(maxTimes)));
- }
- }
- }
- if (!complete || (complete && challenge.isRepeatable())) {
- result.addAll(challenge.getDescription());
- if (challenge.getChallengeType().equals(ChallengeType.INVENTORY)) {
- if (challenge.isTakeItems()) {
- result.addAll(splitTrans(requester, "challenges.item-take-warning"));
- }
- } else if (challenge.getChallengeType().equals(ChallengeType.ISLAND)) {
- result.addAll(splitTrans(requester, "challenges.items-closeby"));
- }
- }
- if (complete && (!challenge.getChallengeType().equals(ChallengeType.INVENTORY) || !challenge.isRepeatable())) {
- result.addAll(splitTrans(requester, "challenges.not-repeatable"));
- result.replaceAll(x -> x.replace("[label]", label));
- return result;
- }
- result.addAll(addRewards(challenge, complete, false));
- }
- // Final placeholder change for [label]
- result.replaceAll(x -> x.replace("[label]", label));
- return result;
- }
-
- private List addRewards(Challenge challenge, boolean complete, boolean admin) {
- List result = new ArrayList<>();
- double moneyReward = 0;
- int expReward = 0;
- String rewardText = "";
- if (admin || !complete) {
- // First time
- moneyReward = challenge.getRewardMoney();
- rewardText = challenge.getRewardText();
- expReward = challenge.getRewardExperience();
- if (!rewardText.isEmpty()) {
- result.addAll(splitTrans(requester, "challenges.first-time-rewards"));
- }
- }
- if (admin || complete){
- // Repeat challenge
- moneyReward = challenge.getRepeatMoneyReward();
- rewardText = challenge.getRepeatRewardText();
- expReward = challenge.getRepeatExperienceReward();
- if (!rewardText.isEmpty()) {
- result.addAll(splitTrans(requester, "challenges.repeat-rewards"));
- }
- }
-
- if (!rewardText.isEmpty()) {
- result.addAll(splitTrans(requester,rewardText));
- }
- if (expReward > 0) {
- result.addAll(splitTrans(requester,"challenges.exp-reward", "[reward]", String.valueOf(expReward)));
- }
- if (addon.getPlugin().getSettings().isUseEconomy() && moneyReward > 0) {
- result.addAll(splitTrans(requester,"challenges.money-reward", "[reward]", String.valueOf(moneyReward)));
- }
- return result;
- }
-
- private Collection extends String> splitTrans(User user, String string, String...strings) {
- return GuiUtils.stringSplit(user.getTranslation(string, strings),
- this.addon.getChallengesSettings().getLoreLineLength());
- }
-}
diff --git a/src/main/java/world/bentobox/challenges/panel/CreateChallengeListener.java b/src/main/java/world/bentobox/challenges/panel/CreateChallengeListener.java
deleted file mode 100644
index d0b63ee..0000000
--- a/src/main/java/world/bentobox/challenges/panel/CreateChallengeListener.java
+++ /dev/null
@@ -1,40 +0,0 @@
-package world.bentobox.challenges.panel;
-
-import org.bukkit.event.inventory.InventoryClickEvent;
-import org.bukkit.event.inventory.InventoryCloseEvent;
-
-import world.bentobox.challenges.ChallengesAddon;
-import world.bentobox.bentobox.api.panels.PanelListener;
-import world.bentobox.bentobox.api.user.User;
-
-
-/**
- * @deprecated All panels are reworked.
- */
-@Deprecated
-public class CreateChallengeListener implements PanelListener {
-
- private ChallengesAddon addon;
- private User user;
-
- public CreateChallengeListener(ChallengesAddon addon, User user) {
- this.addon = addon;
- this.user = user;
- }
-
- @Override
- public void setup() {
- // Nothing to setup
- }
-
- @Override
- public void onInventoryClose(InventoryCloseEvent event) {
- addon.getChallengesManager().createChallenge("uniqueID");
- }
-
- @Override
- public void onInventoryClick(User user, InventoryClickEvent event) {
- // Allow drag and drop
- event.setCancelled(false);
- }
-}
diff --git a/src/main/java/world/bentobox/challenges/panel/CreateChallengePanel.java b/src/main/java/world/bentobox/challenges/panel/CreateChallengePanel.java
deleted file mode 100644
index 1c7473a..0000000
--- a/src/main/java/world/bentobox/challenges/panel/CreateChallengePanel.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package world.bentobox.challenges.panel;
-
-import world.bentobox.challenges.ChallengesAddon;
-import world.bentobox.bentobox.api.panels.builders.PanelBuilder;
-import world.bentobox.bentobox.api.user.User;
-
-
-/**
- * @deprecated All panels are reworked.
- */
-@Deprecated
-public class CreateChallengePanel {
-
- public CreateChallengePanel(ChallengesAddon addon, User user) {
- new PanelBuilder().size(49).listener(new CreateChallengeListener(addon, user)).user(user).build();
- }
-
-}
diff --git a/src/main/java/world/bentobox/challenges/panel/RequiredPanel.java b/src/main/java/world/bentobox/challenges/panel/RequiredPanel.java
deleted file mode 100644
index 76ff526..0000000
--- a/src/main/java/world/bentobox/challenges/panel/RequiredPanel.java
+++ /dev/null
@@ -1,165 +0,0 @@
-package world.bentobox.challenges.panel;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map.Entry;
-
-import org.bukkit.Bukkit;
-import org.bukkit.Material;
-import org.bukkit.entity.EntityType;
-import org.bukkit.event.inventory.ClickType;
-import org.bukkit.event.inventory.InventoryClickEvent;
-import org.bukkit.event.inventory.InventoryCloseEvent;
-import org.bukkit.inventory.ItemStack;
-
-import world.bentobox.challenges.database.object.Challenge;
-import world.bentobox.bentobox.api.panels.Panel;
-import world.bentobox.bentobox.api.panels.PanelItem.ClickHandler;
-import world.bentobox.bentobox.api.panels.PanelListener;
-import world.bentobox.bentobox.api.panels.builders.PanelBuilder;
-import world.bentobox.bentobox.api.panels.builders.PanelItemBuilder;
-import world.bentobox.bentobox.api.user.User;
-import world.bentobox.bentobox.util.Util;
-
-/**
- * Handles the requirements for a challenge
- * Items, blocks, entities
- * @author tastybento
- * @deprecated All panels are reworked.
- */
-@Deprecated
-public class RequiredPanel implements ClickHandler, PanelListener {
- private static final int CONTROL_NUMBER = 4;
- private Challenge challenge;
- private User user;
- private Panel panel;
- private Panel referringPanel;
-
- /**
- * @param challenge
- * @param user
- */
- public RequiredPanel(Challenge challenge, User user, Panel referringPanel) {
- this.challenge = challenge;
- this.user = user;
- this.panel = openPanel();
- this.referringPanel = referringPanel;
- }
-
- private Panel openPanel() {
- PanelBuilder pb = new PanelBuilder().listener(this).name("Required Items").size(49);
- // Add the name and description icon
- pb.item(new PanelItemBuilder().icon(Material.BOOK).name(challenge.getFriendlyName()).description(challenge.getDescription()).clickHandler(this).build());
- // Add take all button
- pb.item(new PanelItemBuilder().icon(Material.BOOK).name("Take Items").description(challenge.isTakeItems() ? "Yes" : "No").clickHandler(this).build());
- // Add save button
- pb.item(new PanelItemBuilder().icon(Material.BOOK).name("Save").clickHandler(this).build());
- // Add cancel button
- pb.item(new PanelItemBuilder().icon(Material.BOOK).name("Cancel").clickHandler(this).build());
-
- switch (challenge.getChallengeType()) {
- case INVENTORY:
- // Show the required items in the inventory
- challenge.getRequiredItems().stream().map(i -> new PanelItemBuilder().icon(i).clickHandler(this).build()).forEach(pb::item);
- return pb.user(user).build();
- case ISLAND:
- // Create the blocks required
- challenge.getRequiredBlocks().entrySet().stream().map(en -> new ItemStack(en.getKey(), en.getValue())).map(i -> new PanelItemBuilder().icon(i).clickHandler(this).build()).forEach(pb::item);
- // Create the entities required
- challenge.getRequiredEntities().entrySet().stream().map(this::toSpawnEgg).map(i -> new PanelItemBuilder()
- .icon(i)
- .name(Util.prettifyText(i.getType().toString()))
- .description("Entity")
- .clickHandler(this)
- .build()).forEach(pb::item);
- return pb.user(user).build();
- case OTHER:
-
- break;
- default:
- break;
-
- }
- return panel;
- }
-
- private ItemStack toSpawnEgg(Entry en) {
- Material mat = Material.getMaterial(en.getKey().name() + "_SPAWN_EGG");
- if (mat != null) {
- return new ItemStack(mat, en.getValue());
- } else {
- return new ItemStack(Material.COW_SPAWN_EGG);
- }
- }
-
-
- @Override
- public boolean onClick(Panel panel, User user, ClickType clickType, int slot) {
- Bukkit.getLogger().info("DEBUG: slot = " + slot);
- return slot < CONTROL_NUMBER;
- }
-
- @Override
- public void setup() {
- // nothing to do
-
- }
-
- @Override
- public void onInventoryClose(InventoryCloseEvent event) {
-
- }
-
-
- @Override
- public void onInventoryClick(User user, InventoryClickEvent event) {
- // Allow drag and drop
- event.setCancelled(event.getRawSlot() < CONTROL_NUMBER);
-
- Bukkit.getLogger().info("DEBUG: inv slot = " + event.getSlot());
- Bukkit.getLogger().info("DEBUG: inv slot type = " + event.getSlotType());
- if (event.getSlot() == 1) {
- // Take items
- challenge.setTakeItems(!challenge.isTakeItems());
- // Update item
- event.getInventory().setItem(event.getSlot(), new PanelItemBuilder().icon(Material.BOOK).name("Take Items").description(challenge.isTakeItems() ? "Yes" : "No").build().getItem());
- return;
- }
- if (event.getSlot() == 3) {
- // Cancel
- referringPanel.open(user);
- return;
- // Return to previous panel
- }
- // Save
- if (event.getSlot() != 2) {
- return;
- }
- // Save changes
- switch (challenge.getChallengeType()) {
- case INVENTORY:
- List reqItems = new ArrayList<>();
- // Skip first item
- for (int i = CONTROL_NUMBER; i < event.getInventory().getSize(); i++) {
- if (event.getInventory().getItem(i) != null) {
- reqItems.add(event.getInventory().getItem(i));
- }
- }
- challenge.setRequiredItems(reqItems);
- user.sendMessage("challenges.admin.saved");
- // TODO: save challenges
- event.getInventory().setItem(event.getSlot(), new PanelItemBuilder().icon(Material.BOOK).name("Save").description("Saved").build().getItem());
- break;
- case ISLAND:
- break;
- case OTHER:
- break;
- default:
- break;
-
- }
-
- }
-
-
-}
diff --git a/src/test/java/world/bentobox/challenges/ParseItemTest.java b/src/test/java/world/bentobox/challenges/ParseItemTest.java
deleted file mode 100644
index 7a46f8a..0000000
--- a/src/test/java/world/bentobox/challenges/ParseItemTest.java
+++ /dev/null
@@ -1,124 +0,0 @@
-package world.bentobox.challenges;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.mockito.Matchers.any;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
-
-import java.util.logging.Logger;
-
-import org.bukkit.Bukkit;
-import org.bukkit.Material;
-import org.bukkit.Server;
-import org.bukkit.World;
-import org.bukkit.inventory.ItemFactory;
-import org.bukkit.inventory.ItemStack;
-import org.bukkit.inventory.meta.PotionMeta;
-import org.bukkit.inventory.meta.SpawnEggMeta;
-import org.bukkit.plugin.PluginManager;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.powermock.modules.junit4.PowerMockRunner;
-import world.bentobox.challenges.ChallengesAddon;
-import world.bentobox.challenges.ParseItem;
-
-@RunWith(PowerMockRunner.class)
-@Deprecated
-public class ParseItemTest {
-
- private static ChallengesAddon addon;
- private static ItemFactory itemFactory;
-
-
- @BeforeClass
- public static void setUpBeforeClass() throws Exception {
- addon = mock(ChallengesAddon.class);
- when(addon.getLogger()).thenReturn(Logger.getAnonymousLogger());
- Server server = mock(Server.class);
- World world = mock(World.class);
- when(server.getLogger()).thenReturn(Logger.getAnonymousLogger());
- when(server.getWorld("world")).thenReturn(world);
- when(server.getVersion()).thenReturn("BSB_Mocking");
-
- PluginManager pluginManager = mock(PluginManager.class);
- when(server.getPluginManager()).thenReturn(pluginManager);
-
- itemFactory = mock(ItemFactory.class);
- when(server.getItemFactory()).thenReturn(itemFactory);
-
- Bukkit.setServer(server);
-
- SpawnEggMeta itemMeta = mock(SpawnEggMeta.class);
- when(itemFactory.getItemMeta(any())).thenReturn(itemMeta);
- when(Bukkit.getItemFactory()).thenReturn(itemFactory);
-
- }
-
-
- @Test
- public void parseItemTest() {
- // Nothing test
- assertNull(new ParseItem(addon, "").getItem());
- // other
- assertNull(new ParseItem(addon, "::::::::::::::").getItem());
- // other
- assertNull(new ParseItem(addon, "anything:anything").getItem());
- // Bad material
- assertNull(new ParseItem(addon, "nosuchmaterial:2").getItem());
-
- // Material
- for (Material mat : Material.values()) {
- ItemStack test = new ParseItem(addon, mat.name() + ":5").getItem();
- if (test != null) {
- if (test.getType().toString().endsWith("_ITEM") && !mat.toString().endsWith("_ITEM")) {
- assertEquals(mat.toString() + "_ITEM", test.getType().toString());
- } else {
- assertEquals(mat, test.getType());
- }
- }
- }
-
- // Nothing amount
- ItemStack test = new ParseItem(addon, "STONE:").getItem();
- assertNull(test);
-
-
- // Test 3
- // Bad material
- assertNull(new ParseItem(addon, "nosuchmaterial:2:2").getItem());
-
- // Bad amount
- assertNull(new ParseItem(addon, "STONE:1:sdfgsd").getItem());
-
- // Missing amount = 1
- test = new ParseItem(addon, "STONE:1:").getItem();
- assertNotNull(test); // This is okay, it's just a 2
-
- // Test Potions
- PotionMeta itemMeta = mock(PotionMeta.class);
- when(itemFactory.getItemMeta(any())).thenReturn(itemMeta);
- when(Bukkit.getItemFactory()).thenReturn(itemFactory);
-
- // Bad material
- assertNull(new ParseItem(addon, "nosuchmaterial:JUMP:2:NOTEXTENDED:NOSPLASH:2").getItem());
- // Bad amount
- assertNull(new ParseItem(addon, "POTION:JUMP:2:NOTEXTENDED:NOSPLASH:asfdas").getItem());
- test = new ParseItem(addon, "POTION:JUMP:2:NOTEXTENDED:NOSPLASH:").getItem();
- assertNull(test);
-
- test = new ParseItem(addon, "POTION:JUMP:2:NOTEXTENDED:NOSPLASH:1").getItem();
- assertEquals(Material.POTION, test.getType());
- test = new ParseItem(addon, "POTION:JUMP:2").getItem();
- assertEquals(Material.POTION, test.getType());
- test = new ParseItem(addon, "POTION:STRENGTH:1:EXTENDED:SPLASH:1").getItem();
- assertEquals(Material.SPLASH_POTION, test.getType());
- test = new ParseItem(addon, "POTION:INSTANT_DAMAGE:2::LINGER:2").getItem();
- assertEquals(Material.LINGERING_POTION, test.getType());
- test = new ParseItem(addon, "TIPPED_ARROW:STRENGTH:1:::1").getItem();
- assertEquals(Material.TIPPED_ARROW, test.getType());
- }
-
-}