From 7940313dd1d12e29ba2d864c5149466254a24371 Mon Sep 17 00:00:00 2001 From: Super_ Date: Sun, 12 Jan 2020 20:56:31 -0500 Subject: [PATCH] ivan u never commit --- .../totalfreedommod/command/Command_shop.java | 4 +-- .../totalfreedommod/fun/ItemFun.java | 31 +++++++++++++------ .../totalfreedommod/shop/ShopData.java | 18 ++++++----- .../totalfreedommod/shop/ShopItem.java | 11 +++++-- .../totalfreedommod/util/FUtil.java | 23 +++++++++++--- 5 files changed, 61 insertions(+), 26 deletions(-) diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_shop.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_shop.java index 23223e7d..c0e87e56 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_shop.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_shop.java @@ -100,7 +100,7 @@ public class Command_shop extends FreedomCommand case "buy": { ShopItem item = ShopItem.findItem(args[1]); - if (item == null) + if (item == null || !item.isPurchaseable()) { msg("Invalid item: " + item); return true; @@ -133,7 +133,7 @@ public class Command_shop extends FreedomCommand case "get": { ShopItem item = ShopItem.findItem(args[1]); - if (item == null) + if (item == null || !item.isPurchaseable()) { msg("Invalid item: " + item); return true; diff --git a/src/main/java/me/totalfreedom/totalfreedommod/fun/ItemFun.java b/src/main/java/me/totalfreedom/totalfreedommod/fun/ItemFun.java index 94d6ef6d..3c3cd2b4 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/fun/ItemFun.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/fun/ItemFun.java @@ -49,26 +49,39 @@ public class ItemFun extends FreedomService private static final String COOLDOWN_MESSAGE = ChatColor.RED + "You're on cooldown for this feature."; - private final Map cooldownTracker = new HashMap<>(); + private final Map> cooldownTracker = new HashMap<>(); private final Map orientationTracker = new HashMap<>(); private void cooldown(Player player, String feature, int seconds) { - cooldownTracker.put(player.getName(), feature); + if (cooldownTracker.get(player.getName()) == null) + { + List featureList = new ArrayList<>(); + featureList.add(feature); + cooldownTracker.put(player.getName(), featureList); + } + else + { + cooldownTracker.get(player.getName()).add(feature); + } new BukkitRunnable() { @Override public void run() { - cooldownTracker.remove(player.getName()); + cooldownTracker.get(player.getName()).remove(feature); } }.runTaskLater(plugin, seconds * 20); } public boolean onCooldown(Player player, String feature) { - return cooldownTracker.containsKey(player.getName()) && cooldownTracker.containsValue(feature); + if (cooldownTracker.get(player.getName()) == null) + { + return false; + } + return cooldownTracker.get(player.getName()).contains(feature); } public ItemFun(TotalFreedomMod plugin) @@ -345,23 +358,23 @@ public class ItemFun extends FreedomService boolean superior = FUtil.random(1, 100) == 50; Player rplayer = FUtil.getRandomPlayer(); ShopData psd = plugin.sh.getData(rplayer); - String key = FUtil.generateKey(8); - psd.giveRawItem(key); - plugin.sh.save(psd); if (superior) { for (int i = 0; i < 25; i++) { rplayer.getWorld().strikeLightning(rplayer.getLocation()); } + String key = psd.giveItem(ShopItem.SUPERIOR_SWORD); FUtil.bcastMsg("THOR'S STAR HAS GRANTED " + rplayer.getName().toUpperCase() + " A " + ChatColor.GOLD + "SUPERIOR SWORD" + ChatColor.RED + "!!!!", ChatColor.RED); - FUtil.give(rplayer, Material.GOLDEN_SWORD, "&6Superior Sword", 1, "&7RMB - Shoot fireball", ChatColor.DARK_GRAY + key); + FUtil.give(player, ShopItem.SUPERIOR_SWORD, "&7RMB - Shoot fireball", ChatColor.DARK_GRAY + key); } else { + String key = psd.giveItem(ShopItem.ELECTRICAL_DIAMOND_SWORD); FUtil.bcastMsg("Thor's Star has granted " + rplayer.getName() + " an " + ChatColor.YELLOW + "Electrical Diamond Sword" + ChatColor.RED + "!", ChatColor.RED); - FUtil.give(rplayer, Material.DIAMOND_SWORD, "&eElectrical Diamond Sword", 1, "&7RMB - Strike lightning", ChatColor.DARK_GRAY + key); + FUtil.give(player, ShopItem.ELECTRICAL_DIAMOND_SWORD, "&7RMB - Strike lightning", ChatColor.DARK_GRAY + key); } + plugin.sh.save(psd); cooldown(player, "nether_star", 600); break; } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/shop/ShopData.java b/src/main/java/me/totalfreedom/totalfreedommod/shop/ShopData.java index 8adf6321..ad13b341 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/shop/ShopData.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/shop/ShopData.java @@ -82,11 +82,7 @@ public class ShopData implements ConfigLoadable, ConfigSavable, Validatable public String giveItem(ShopItem item) { - String signature = String.valueOf(item.ordinal()); - for (int i = 0; i < 7; i++) - { - signature += FUtil.getRandomCharacter(); - } + String signature = FUtil.generateSignature(item); items.add(signature); return signature; } @@ -103,7 +99,7 @@ public class ShopData implements ConfigLoadable, ConfigSavable, Validatable int id; try { - id = Integer.valueOf(i.substring(0, 1)); + id = Integer.valueOf(i.substring(0, i.indexOf("A"))); } catch (NumberFormatException ex) { @@ -122,7 +118,15 @@ public class ShopData implements ConfigLoadable, ConfigSavable, Validatable String signature = ""; for (String i : items) { - int id = Integer.valueOf(i.substring(0, 1)); + int id; + try + { + id = Integer.valueOf(i.substring(0, i.indexOf("A"))); + } + catch (NumberFormatException ex) + { + continue; + } if (item.ordinal() == id) { signature = i; diff --git a/src/main/java/me/totalfreedom/totalfreedommod/shop/ShopItem.java b/src/main/java/me/totalfreedom/totalfreedommod/shop/ShopItem.java index 1a0314db..a2f38cc9 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/shop/ShopItem.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/shop/ShopItem.java @@ -6,8 +6,10 @@ import org.bukkit.Material; public enum ShopItem { - GRAPPLING_HOOK("Grappling Hook", Material.FISHING_ROD, 100, ChatColor.GREEN), - THOR_STAR("Thor's Star", Material.NETHER_STAR, 10000, ChatColor.LIGHT_PURPLE); + GRAPPLING_HOOK("Grappling Hook", Material.FISHING_ROD, 100, ChatColor.GREEN, true), + THOR_STAR("Thor's Star", Material.NETHER_STAR, 10000, ChatColor.LIGHT_PURPLE, true), + ELECTRICAL_DIAMOND_SWORD("Electrical Diamond Sword", Material.DIAMOND_SWORD, 0, ChatColor.YELLOW, false), + SUPERIOR_SWORD("Superior Sword", Material.GOLDEN_SWORD, 0, ChatColor.GOLD, false); @Getter private final String name; @@ -17,13 +19,16 @@ public enum ShopItem private final int cost; @Getter private final ChatColor color; + @Getter + private final boolean purchaseable; - ShopItem(String name, Material material, int cost, ChatColor color) + ShopItem(String name, Material material, int cost, ChatColor color, boolean purchaseable) { this.name = name; this.material = material; this.cost = cost; this.color = color; + this.purchaseable = purchaseable; } public String getColoredName() diff --git a/src/main/java/me/totalfreedom/totalfreedommod/util/FUtil.java b/src/main/java/me/totalfreedom/totalfreedommod/util/FUtil.java index 83731ea7..cf1b77d6 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/util/FUtil.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/util/FUtil.java @@ -1,5 +1,6 @@ package me.totalfreedom.totalfreedommod.util; +import com.comphenix.protocol.PacketType; import java.io.File; import java.io.FileFilter; import java.lang.reflect.Field; @@ -22,6 +23,7 @@ import java.util.TimeZone; import java.util.regex.Matcher; import java.util.regex.Pattern; import me.totalfreedom.totalfreedommod.config.ConfigEntry; +import me.totalfreedom.totalfreedommod.shop.ShopItem; import org.apache.commons.io.FileUtils; import org.apache.commons.lang.StringUtils; import org.bukkit.Bukkit; @@ -535,14 +537,25 @@ public class FUtil player.getInventory().setItem(player.getInventory().firstEmpty(), stack); } - public static String generateKey(int length) + public static void give(Player player, ShopItem item, String... lore) { - StringBuilder key = new StringBuilder(); - for (int i = 0; i < length; i++) + give(player, item.getMaterial(), item.getColoredName(), 1, lore); + } + + public static String generateSignature(ShopItem item) + { + String signature = String.valueOf(item.ordinal()); + signature += "A"; // mark the ending + for (int i = 0; i < 8; i++) { - key.append(getRandomCharacter()); + char c = FUtil.getRandomCharacter(); + while (c == 'A') + { + c = FUtil.getRandomCharacter(); + } + signature += FUtil.getRandomCharacter(); } - return key.toString(); + return signature; } public static Player getRandomPlayer()