From 275f607f481550e21c59bc8b49a85f7b4e56fd73 Mon Sep 17 00:00:00 2001 From: Auxilor Date: Tue, 19 Jan 2021 10:57:18 +0000 Subject: [PATCH] Added more options to eagive --- .../ecoarmor/commands/CommandEagive.java | 27 +++++++++++++++- .../ecoarmor/commands/TabcompleterEagive.java | 16 ++++++++++ .../willfp/ecoarmor/sets/meta/ArmorSlot.java | 31 +++++++++++++++++++ .../core-plugin/src/main/resources/sets.yml | 2 +- 4 files changed, 74 insertions(+), 2 deletions(-) diff --git a/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/commands/CommandEagive.java b/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/commands/CommandEagive.java index 69fe00f..293008c 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/commands/CommandEagive.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/commands/CommandEagive.java @@ -67,8 +67,33 @@ public class CommandEagive extends AbstractCommand { String message = this.getPlugin().getLangYml().getMessage("give-success"); message = message.replace("%item%", set.getName() + " Set").replace("%recipient%", reciever.getName()); sender.sendMessage(message); + + boolean advanced = false; + if (args.size() >= 4) { + advanced = Boolean.parseBoolean(args.get(3)); + } + + if (args.size() >= 3) { + ArmorSlot slot = ArmorSlot.getSlot(args.get(2)); + + if (slot == null) { + sender.sendMessage(this.getPlugin().getLangYml().getMessage("invalid-item")); + return; + } + + if (advanced) { + reciever.getInventory().addItem(set.getAdvancedItemStack(slot)); + } else { + reciever.getInventory().addItem(set.getItemStack(slot)); + } + } + for (ArmorSlot slot : ArmorSlot.values()) { - reciever.getInventory().addItem(set.getItemStack(slot)); + if (advanced) { + reciever.getInventory().addItem(set.getAdvancedItemStack(slot)); + } else { + reciever.getInventory().addItem(set.getItemStack(slot)); + } } return; diff --git a/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/commands/TabcompleterEagive.java b/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/commands/TabcompleterEagive.java index 3723e7f..c64e333 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/commands/TabcompleterEagive.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/commands/TabcompleterEagive.java @@ -4,6 +4,7 @@ import com.willfp.eco.util.command.AbstractCommand; import com.willfp.eco.util.command.AbstractTabCompleter; import com.willfp.eco.util.config.updating.annotations.ConfigUpdater; import com.willfp.ecoarmor.sets.ArmorSets; +import com.willfp.ecoarmor.sets.meta.ArmorSlot; import com.willfp.ecoarmor.upgrades.crystal.UpgradeCrystal; import org.bukkit.Bukkit; import org.bukkit.command.CommandSender; @@ -12,6 +13,7 @@ import org.bukkit.util.StringUtil; import org.jetbrains.annotations.NotNull; import java.util.ArrayList; +import java.util.Arrays; import java.util.Collections; import java.util.List; import java.util.Objects; @@ -71,6 +73,20 @@ public class TabcompleterEagive extends AbstractTabCompleter { return completions; } + if (args.size() == 3) { + StringUtil.copyPartialMatches(args.get(2), Arrays.stream(ArmorSlot.values()).map(slot -> slot.name().toLowerCase()).collect(Collectors.toList()), completions); + + Collections.sort(completions); + return completions; + } + + if (args.size() == 4) { + StringUtil.copyPartialMatches(args.get(3), Arrays.asList("true", "false"), completions); + + Collections.sort(completions); + return completions; + } + return new ArrayList<>(0); } } diff --git a/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/sets/meta/ArmorSlot.java b/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/sets/meta/ArmorSlot.java index 32ec13d..9a7fa1d 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/sets/meta/ArmorSlot.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/sets/meta/ArmorSlot.java @@ -76,4 +76,35 @@ public enum ArmorSlot { return null; } + + /** + * Get ArmorSlot from name. + * + * @param name The name. + * @return The slot, or null. + */ + @Nullable + public static ArmorSlot getSlot(@NotNull final String name) { + if (name.equalsIgnoreCase("helmet")) { + return HELMET; + } + + if (name.equalsIgnoreCase("chestplate")) { + return CHESTPLATE; + } + + if (name.equalsIgnoreCase("elytra")) { + return ELYTRA; + } + + if (name.equalsIgnoreCase("leggings")) { + return LEGGINGS; + } + + if (name.equalsIgnoreCase("boots")) { + return BOOTS; + } + + return null; + } } diff --git a/eco-core/core-plugin/src/main/resources/sets.yml b/eco-core/core-plugin/src/main/resources/sets.yml index 5ad1b23..2854c3b 100644 --- a/eco-core/core-plugin/src/main/resources/sets.yml +++ b/eco-core/core-plugin/src/main/resources/sets.yml @@ -19,7 +19,7 @@ Reaper: - prismarine_shard - ecoarmor:set_reaper_chestplate - - ecoarmor:upgrade_crystal_manyullyn + - nether_star - ecoarmor:set_reaper_leggings - prismarine_shard