From 924677484fec9f0f9e5dfaadc7f435de7c2ce76b Mon Sep 17 00:00:00 2001 From: Barazok Date: Sat, 24 Oct 2020 17:20:57 +0200 Subject: [PATCH] Refactor code and give ender pearl to ender elf --- .../babamod/mineclass/classes/DwarfClass.java | 4 ++ .../babamod/mineclass/classes/ElfClass.java | 4 ++ .../mineclass/classes/EnderElfClass.java | 11 ++++++ .../mineclass/classes/FireDwarfClass.java | 4 ++ .../babamod/mineclass/classes/MineClass.java | 2 + .../mineclass/classes/MineClassFactory.java | 39 +++++++++++-------- .../mineclass/commands/CommandClass.java | 10 ++--- .../listeners/MineClassListeners.java | 2 - .../mineclass/utils/AppliedStatus.java | 4 +- .../mineclass/utils/PlayerHitCounter.java | 2 +- .../mineclass/utils/SmeltingEngine.java | 7 +++- 11 files changed, 59 insertions(+), 30 deletions(-) diff --git a/src/main/java/net/babamod/mineclass/classes/DwarfClass.java b/src/main/java/net/babamod/mineclass/classes/DwarfClass.java index 67c4070..aab3e05 100644 --- a/src/main/java/net/babamod/mineclass/classes/DwarfClass.java +++ b/src/main/java/net/babamod/mineclass/classes/DwarfClass.java @@ -3,6 +3,7 @@ package net.babamod.mineclass.classes; import net.babamod.mineclass.utils.Pair; import org.bukkit.Material; import org.bukkit.enchantments.Enchantment; +import org.bukkit.entity.Player; import org.bukkit.potion.PotionEffectType; import java.util.*; @@ -91,4 +92,7 @@ public class DwarfClass extends MineClassImpl { public String getCode() { return "dwarf"; } + + @Override + public void giveItems(Player player) {} } diff --git a/src/main/java/net/babamod/mineclass/classes/ElfClass.java b/src/main/java/net/babamod/mineclass/classes/ElfClass.java index 7b43133..24ccdda 100644 --- a/src/main/java/net/babamod/mineclass/classes/ElfClass.java +++ b/src/main/java/net/babamod/mineclass/classes/ElfClass.java @@ -3,6 +3,7 @@ package net.babamod.mineclass.classes; import net.babamod.mineclass.utils.Pair; import org.bukkit.Material; import org.bukkit.enchantments.Enchantment; +import org.bukkit.entity.Player; import org.bukkit.potion.PotionEffectType; import java.util.*; @@ -70,4 +71,7 @@ public class ElfClass extends MineClassImpl { public String getCode() { return "elf"; } + + @Override + public void giveItems(Player player) {} } diff --git a/src/main/java/net/babamod/mineclass/classes/EnderElfClass.java b/src/main/java/net/babamod/mineclass/classes/EnderElfClass.java index ab0d009..3f507ed 100644 --- a/src/main/java/net/babamod/mineclass/classes/EnderElfClass.java +++ b/src/main/java/net/babamod/mineclass/classes/EnderElfClass.java @@ -3,6 +3,8 @@ package net.babamod.mineclass.classes; import net.babamod.mineclass.utils.Pair; import org.bukkit.Material; import org.bukkit.enchantments.Enchantment; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; import org.bukkit.potion.PotionEffectType; import java.util.*; @@ -74,4 +76,13 @@ public class EnderElfClass extends MineClassImpl { public String getCode() { return "ender_elf"; } + + @Override + public void giveItems(Player player) { + if (!player.getInventory().contains(Material.ENDER_PEARL)) { + ItemStack itemStack = new ItemStack(Material.ENDER_PEARL, 1); + enchantItem(itemStack); + player.getInventory().addItem(itemStack); + } + } } diff --git a/src/main/java/net/babamod/mineclass/classes/FireDwarfClass.java b/src/main/java/net/babamod/mineclass/classes/FireDwarfClass.java index 1a9f572..044fa1a 100644 --- a/src/main/java/net/babamod/mineclass/classes/FireDwarfClass.java +++ b/src/main/java/net/babamod/mineclass/classes/FireDwarfClass.java @@ -3,6 +3,7 @@ package net.babamod.mineclass.classes; import net.babamod.mineclass.utils.Pair; import org.bukkit.Material; import org.bukkit.enchantments.Enchantment; +import org.bukkit.entity.Player; import org.bukkit.potion.PotionEffectType; import java.util.*; @@ -109,4 +110,7 @@ public class FireDwarfClass extends MineClassImpl { public String getCode() { return "fire_dwarf"; } + + @Override + public void giveItems(Player player) {} } diff --git a/src/main/java/net/babamod/mineclass/classes/MineClass.java b/src/main/java/net/babamod/mineclass/classes/MineClass.java index f5c6fbf..b2494af 100644 --- a/src/main/java/net/babamod/mineclass/classes/MineClass.java +++ b/src/main/java/net/babamod/mineclass/classes/MineClass.java @@ -27,5 +27,7 @@ public interface MineClass { void enchantItem(ItemStack itemStack); + void giveItems(Player player); + String getCode(); } diff --git a/src/main/java/net/babamod/mineclass/classes/MineClassFactory.java b/src/main/java/net/babamod/mineclass/classes/MineClassFactory.java index fa64dc8..1b04c4c 100644 --- a/src/main/java/net/babamod/mineclass/classes/MineClassFactory.java +++ b/src/main/java/net/babamod/mineclass/classes/MineClassFactory.java @@ -10,6 +10,7 @@ import java.util.*; public class MineClassFactory { /** Instance unique pré-initialisée */ private static MineClassFactory INSTANCE; + private final Map availableClasses; /** Constructeur privé */ @@ -30,19 +31,6 @@ public class MineClassFactory { return INSTANCE; } - public synchronized Set getAvailableClassCodes() { - return availableClasses.keySet(); - } - - public synchronized Optional getRightClass(Player player) { - for (Map.Entry stringMineClassEntry : availableClasses.entrySet()) { - if (stringMineClassEntry.getValue().is(player)) { - return Optional.of(stringMineClassEntry.getValue()); - } - } - return Optional.empty(); - } - public static boolean isSoulBound(ItemStack itemStack) { if (itemStack.getItemMeta() != null && itemStack.getItemMeta().getLore() != null) { return itemStack.getItemMeta().getLore().contains("Soulbound"); @@ -58,10 +46,6 @@ public class MineClassFactory { } } - public void reapplyEffectsByCode(String code, Player player) { - availableClasses.get(code).reapplyEffects(player); - } - public static void setUnbreakableAndSoulbound(ItemStack itemStack) { if (itemStack.getItemMeta() != null) { ItemMeta itemMeta = itemStack.getItemMeta(); @@ -70,4 +54,25 @@ public class MineClassFactory { itemStack.setItemMeta(itemMeta); } } + + public synchronized Set getAvailableClassCodes() { + return availableClasses.keySet(); + } + + public synchronized Optional getRightClass(Player player) { + for (Map.Entry stringMineClassEntry : availableClasses.entrySet()) { + if (stringMineClassEntry.getValue().is(player)) { + return Optional.of(stringMineClassEntry.getValue()); + } + } + return Optional.empty(); + } + + public void reapplyEffectsByCode(String code, Player player) { + availableClasses.get(code).reapplyEffects(player); + } + + public void giveItemsForClassByCode(String code, Player player) { + availableClasses.get(code).giveItems(player); + } } diff --git a/src/main/java/net/babamod/mineclass/commands/CommandClass.java b/src/main/java/net/babamod/mineclass/commands/CommandClass.java index 9d57b43..7834ae6 100644 --- a/src/main/java/net/babamod/mineclass/commands/CommandClass.java +++ b/src/main/java/net/babamod/mineclass/commands/CommandClass.java @@ -11,7 +11,8 @@ public class CommandClass implements CommandExecutor { @Override public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { if (args.length == 0) { - sender.sendMessage("You need to use this command with one of the suggested arguments (press space then tab to see suggested arguments)."); + sender.sendMessage( + "You need to use this command with one of the suggested arguments (press space then tab to see suggested arguments)."); return false; } if (sender instanceof Player) { @@ -20,6 +21,7 @@ public class CommandClass implements CommandExecutor { AppliedStatus.getInstance().setStatus(player.getName(), args[0]); MineClassFactory.clearAllClassEffects(player); MineClassFactory.getInstance().reapplyEffectsByCode(args[0], player); + MineClassFactory.getInstance().giveItemsForClassByCode(args[0], player); return true; } if (args[0].equals("clear")) { @@ -29,10 +31,8 @@ public class CommandClass implements CommandExecutor { } if (args[0].equals("whoami")) { String classCode = AppliedStatus.getInstance().getStatus(player.getName()); - if (!classCode.equals("none")) { - player.sendMessage( - String.format( - "You are a %s.", classCode)); + if (classCode != null && !classCode.equals("none")) { + player.sendMessage(String.format("You are a %s.", classCode)); } else { player.sendMessage("You are a simple steve."); } diff --git a/src/main/java/net/babamod/mineclass/listeners/MineClassListeners.java b/src/main/java/net/babamod/mineclass/listeners/MineClassListeners.java index 5f86032..9f4677f 100644 --- a/src/main/java/net/babamod/mineclass/listeners/MineClassListeners.java +++ b/src/main/java/net/babamod/mineclass/listeners/MineClassListeners.java @@ -4,13 +4,11 @@ import net.babamod.mineclass.Mineclass; import net.babamod.mineclass.classes.MineClass; import net.babamod.mineclass.classes.MineClassFactory; import net.babamod.mineclass.utils.*; -import org.bukkit.Bukkit; import org.bukkit.Material; import org.bukkit.enchantments.Enchantment; import org.bukkit.entity.AbstractArrow; import org.bukkit.entity.EnderPearl; import org.bukkit.entity.Player; -import org.bukkit.event.Event; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.block.Action; diff --git a/src/main/java/net/babamod/mineclass/utils/AppliedStatus.java b/src/main/java/net/babamod/mineclass/utils/AppliedStatus.java index 8b943de..aaa4a0a 100644 --- a/src/main/java/net/babamod/mineclass/utils/AppliedStatus.java +++ b/src/main/java/net/babamod/mineclass/utils/AppliedStatus.java @@ -49,8 +49,6 @@ public class AppliedStatus implements Serializable { @Override public String toString() { - return "AppliedStatus{" + - "appliedStatus=" + appliedStatus + - '}'; + return "AppliedStatus{" + "appliedStatus=" + appliedStatus + '}'; } } diff --git a/src/main/java/net/babamod/mineclass/utils/PlayerHitCounter.java b/src/main/java/net/babamod/mineclass/utils/PlayerHitCounter.java index 2525d31..f224d44 100644 --- a/src/main/java/net/babamod/mineclass/utils/PlayerHitCounter.java +++ b/src/main/java/net/babamod/mineclass/utils/PlayerHitCounter.java @@ -26,7 +26,7 @@ public class PlayerHitCounter { public synchronized void increaseHitCount(Player player) { Integer counter = byPlayerCounter.getOrDefault(player.getName(), 0); - byPlayerCounter.put(player.getName(), counter+1); + byPlayerCounter.put(player.getName(), counter + 1); } public synchronized void resetHitCounter(Player player) { diff --git a/src/main/java/net/babamod/mineclass/utils/SmeltingEngine.java b/src/main/java/net/babamod/mineclass/utils/SmeltingEngine.java index a301e37..84254a4 100644 --- a/src/main/java/net/babamod/mineclass/utils/SmeltingEngine.java +++ b/src/main/java/net/babamod/mineclass/utils/SmeltingEngine.java @@ -33,7 +33,8 @@ public class SmeltingEngine { return INSTANCE; } - public synchronized Optional smelt(Player player, Location location, ItemStack itemStack) { + public synchronized Optional smelt( + Player player, Location location, ItemStack itemStack) { Optional result = Optional.empty(); Iterator iter = Bukkit.recipeIterator(); while (iter.hasNext()) { @@ -54,7 +55,9 @@ public class SmeltingEngine { player.getWorld().spawn(location, ExperienceOrb.class).setExperience(exp); expModifier .get(player.getName()) - .put(result.get().getType(), expModifier.get(player.getName()).get(result.get().getType()) - exp); + .put( + result.get().getType(), + expModifier.get(player.getName()).get(result.get().getType()) - exp); } break; }