From a725f1376b18fe04c050281765c3978859099761 Mon Sep 17 00:00:00 2001 From: Minenash Date: Thu, 31 Jan 2019 19:01:53 -0500 Subject: Changed the cost for /name and /lore --- .../java/com/redstoner/modules/naming/Naming.java | 51 ++++++++++++++-------- 1 file changed, 32 insertions(+), 19 deletions(-) diff --git a/src/main/java/com/redstoner/modules/naming/Naming.java b/src/main/java/com/redstoner/modules/naming/Naming.java index c1d136c..1bfd0c6 100644 --- a/src/main/java/com/redstoner/modules/naming/Naming.java +++ b/src/main/java/com/redstoner/modules/naming/Naming.java @@ -1,9 +1,12 @@ package com.redstoner.modules.naming; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.regex.Pattern; import org.bukkit.GameMode; +import org.bukkit.Material; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; @@ -18,23 +21,19 @@ import com.redstoner.modules.Module; import net.md_5.bungee.api.ChatColor; @Commands(CommandHolderType.File) -@Version(major = 5, minor = 2, revision = 0, compatible = 4) +@Version(major = 5, minor = 3, revision = 0, compatible = 4) public class Naming implements Module { + private final Pattern COLOR_CHECK = Pattern.compile(".*&[\\da-fk-or].*"); + private final ItemStack[] COST = new ItemStack[] {new ItemStack(Material.IRON_INGOT, 1)}; + @Command(hook = "name") public void name(CommandSender sender, String name) { Player player = (Player) sender; - if (player.getGameMode() == GameMode.SURVIVAL) { - int level = player.getLevel(); - if (level < 1) { - getLogger().message(sender, true, "You don't have enough levels to rename the item."); - return; - } - else - player.setLevel(level-1); - } + if (player.getGameMode() == GameMode.SURVIVAL && !processSurvivalPlayer(player, name, "rename the item")) + return; name = ChatColor.translateAlternateColorCodes('&', name); ItemStack item = player.getInventory().getItemInMainHand(); @@ -55,15 +54,8 @@ public class Naming implements Module { Player player = (Player) sender; - if (player.getGameMode() == GameMode.SURVIVAL) { - int level = player.getLevel(); - if (level < 1) { - getLogger().message(sender, true, "You don't have enough levels to rename the item."); - return; - } - else - player.setLevel(level-1); - } + if (player.getGameMode() == GameMode.SURVIVAL && !processSurvivalPlayer(player, lore, append? "append to the lore" : "add lore to the item")) + return; ItemStack item = player.getInventory().getItemInMainHand(); ItemMeta meta = item.getItemMeta(); @@ -89,4 +81,25 @@ public class Naming implements Module getLogger().message(sender, "Lore set to &5&o" + lore + "&7."); player.updateInventory(); } + + private boolean processSurvivalPlayer(Player player, String str, String operation) { + + int levelsNeeded = COLOR_CHECK.matcher(str).matches()? 2 : 1; + int levels = player.getLevel(); + + if (levels < levelsNeeded) { + getLogger().message(player, true, "You don't have enough levels. " + (levelsNeeded == 1? + "You need &e1&7 level to " + operation + "." : + "You need &e2&7 levels to " + operation + " with color/formatting.")); + return false; + } + + HashMap result = player.getInventory().removeItem(COST); + if (result.size() > 0) { + getLogger().message(player, true, "You don't have enough resources. You need &e1&7 iron ingot to " + operation + "."); + return false; + } + player.setLevel(levels - levelsNeeded); + return true; + } } -- cgit v1.2.3