Refactor code and give ender pearl to ender elf

This commit is contained in:
Barazok
2020-10-24 17:20:57 +02:00
parent 3afa2d1f2a
commit 924677484f
11 changed files with 59 additions and 30 deletions

View File

@@ -3,6 +3,7 @@ package net.babamod.mineclass.classes;
import net.babamod.mineclass.utils.Pair; import net.babamod.mineclass.utils.Pair;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.enchantments.Enchantment; import org.bukkit.enchantments.Enchantment;
import org.bukkit.entity.Player;
import org.bukkit.potion.PotionEffectType; import org.bukkit.potion.PotionEffectType;
import java.util.*; import java.util.*;
@@ -91,4 +92,7 @@ public class DwarfClass extends MineClassImpl {
public String getCode() { public String getCode() {
return "dwarf"; return "dwarf";
} }
@Override
public void giveItems(Player player) {}
} }

View File

@@ -3,6 +3,7 @@ package net.babamod.mineclass.classes;
import net.babamod.mineclass.utils.Pair; import net.babamod.mineclass.utils.Pair;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.enchantments.Enchantment; import org.bukkit.enchantments.Enchantment;
import org.bukkit.entity.Player;
import org.bukkit.potion.PotionEffectType; import org.bukkit.potion.PotionEffectType;
import java.util.*; import java.util.*;
@@ -70,4 +71,7 @@ public class ElfClass extends MineClassImpl {
public String getCode() { public String getCode() {
return "elf"; return "elf";
} }
@Override
public void giveItems(Player player) {}
} }

View File

@@ -3,6 +3,8 @@ package net.babamod.mineclass.classes;
import net.babamod.mineclass.utils.Pair; import net.babamod.mineclass.utils.Pair;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.enchantments.Enchantment; import org.bukkit.enchantments.Enchantment;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import org.bukkit.potion.PotionEffectType; import org.bukkit.potion.PotionEffectType;
import java.util.*; import java.util.*;
@@ -74,4 +76,13 @@ public class EnderElfClass extends MineClassImpl {
public String getCode() { public String getCode() {
return "ender_elf"; 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);
}
}
} }

View File

@@ -3,6 +3,7 @@ package net.babamod.mineclass.classes;
import net.babamod.mineclass.utils.Pair; import net.babamod.mineclass.utils.Pair;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.enchantments.Enchantment; import org.bukkit.enchantments.Enchantment;
import org.bukkit.entity.Player;
import org.bukkit.potion.PotionEffectType; import org.bukkit.potion.PotionEffectType;
import java.util.*; import java.util.*;
@@ -109,4 +110,7 @@ public class FireDwarfClass extends MineClassImpl {
public String getCode() { public String getCode() {
return "fire_dwarf"; return "fire_dwarf";
} }
@Override
public void giveItems(Player player) {}
} }

View File

@@ -27,5 +27,7 @@ public interface MineClass {
void enchantItem(ItemStack itemStack); void enchantItem(ItemStack itemStack);
void giveItems(Player player);
String getCode(); String getCode();
} }

View File

@@ -10,6 +10,7 @@ import java.util.*;
public class MineClassFactory { public class MineClassFactory {
/** Instance unique pré-initialisée */ /** Instance unique pré-initialisée */
private static MineClassFactory INSTANCE; private static MineClassFactory INSTANCE;
private final Map<String, MineClass> availableClasses; private final Map<String, MineClass> availableClasses;
/** Constructeur privé */ /** Constructeur privé */
@@ -30,19 +31,6 @@ public class MineClassFactory {
return INSTANCE; return INSTANCE;
} }
public synchronized Set<String> getAvailableClassCodes() {
return availableClasses.keySet();
}
public synchronized Optional<MineClass> getRightClass(Player player) {
for (Map.Entry<String, MineClass> stringMineClassEntry : availableClasses.entrySet()) {
if (stringMineClassEntry.getValue().is(player)) {
return Optional.of(stringMineClassEntry.getValue());
}
}
return Optional.empty();
}
public static boolean isSoulBound(ItemStack itemStack) { public static boolean isSoulBound(ItemStack itemStack) {
if (itemStack.getItemMeta() != null && itemStack.getItemMeta().getLore() != null) { if (itemStack.getItemMeta() != null && itemStack.getItemMeta().getLore() != null) {
return itemStack.getItemMeta().getLore().contains("Soulbound"); 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) { public static void setUnbreakableAndSoulbound(ItemStack itemStack) {
if (itemStack.getItemMeta() != null) { if (itemStack.getItemMeta() != null) {
ItemMeta itemMeta = itemStack.getItemMeta(); ItemMeta itemMeta = itemStack.getItemMeta();
@@ -70,4 +54,25 @@ public class MineClassFactory {
itemStack.setItemMeta(itemMeta); itemStack.setItemMeta(itemMeta);
} }
} }
public synchronized Set<String> getAvailableClassCodes() {
return availableClasses.keySet();
}
public synchronized Optional<MineClass> getRightClass(Player player) {
for (Map.Entry<String, MineClass> 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);
}
} }

View File

@@ -11,7 +11,8 @@ public class CommandClass implements CommandExecutor {
@Override @Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
if (args.length == 0) { 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; return false;
} }
if (sender instanceof Player) { if (sender instanceof Player) {
@@ -20,6 +21,7 @@ public class CommandClass implements CommandExecutor {
AppliedStatus.getInstance().setStatus(player.getName(), args[0]); AppliedStatus.getInstance().setStatus(player.getName(), args[0]);
MineClassFactory.clearAllClassEffects(player); MineClassFactory.clearAllClassEffects(player);
MineClassFactory.getInstance().reapplyEffectsByCode(args[0], player); MineClassFactory.getInstance().reapplyEffectsByCode(args[0], player);
MineClassFactory.getInstance().giveItemsForClassByCode(args[0], player);
return true; return true;
} }
if (args[0].equals("clear")) { if (args[0].equals("clear")) {
@@ -29,10 +31,8 @@ public class CommandClass implements CommandExecutor {
} }
if (args[0].equals("whoami")) { if (args[0].equals("whoami")) {
String classCode = AppliedStatus.getInstance().getStatus(player.getName()); String classCode = AppliedStatus.getInstance().getStatus(player.getName());
if (!classCode.equals("none")) { if (classCode != null && !classCode.equals("none")) {
player.sendMessage( player.sendMessage(String.format("You are a %s.", classCode));
String.format(
"You are a %s.", classCode));
} else { } else {
player.sendMessage("You are a simple steve."); player.sendMessage("You are a simple steve.");
} }

View File

@@ -4,13 +4,11 @@ import net.babamod.mineclass.Mineclass;
import net.babamod.mineclass.classes.MineClass; import net.babamod.mineclass.classes.MineClass;
import net.babamod.mineclass.classes.MineClassFactory; import net.babamod.mineclass.classes.MineClassFactory;
import net.babamod.mineclass.utils.*; import net.babamod.mineclass.utils.*;
import org.bukkit.Bukkit;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.enchantments.Enchantment; import org.bukkit.enchantments.Enchantment;
import org.bukkit.entity.AbstractArrow; import org.bukkit.entity.AbstractArrow;
import org.bukkit.entity.EnderPearl; import org.bukkit.entity.EnderPearl;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.event.Event;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener; import org.bukkit.event.Listener;
import org.bukkit.event.block.Action; import org.bukkit.event.block.Action;

View File

@@ -49,8 +49,6 @@ public class AppliedStatus implements Serializable {
@Override @Override
public String toString() { public String toString() {
return "AppliedStatus{" + return "AppliedStatus{" + "appliedStatus=" + appliedStatus + '}';
"appliedStatus=" + appliedStatus +
'}';
} }
} }

View File

@@ -33,7 +33,8 @@ public class SmeltingEngine {
return INSTANCE; return INSTANCE;
} }
public synchronized Optional<ItemStack> smelt(Player player, Location location, ItemStack itemStack) { public synchronized Optional<ItemStack> smelt(
Player player, Location location, ItemStack itemStack) {
Optional<ItemStack> result = Optional.empty(); Optional<ItemStack> result = Optional.empty();
Iterator<Recipe> iter = Bukkit.recipeIterator(); Iterator<Recipe> iter = Bukkit.recipeIterator();
while (iter.hasNext()) { while (iter.hasNext()) {
@@ -54,7 +55,9 @@ public class SmeltingEngine {
player.getWorld().spawn(location, ExperienceOrb.class).setExperience(exp); player.getWorld().spawn(location, ExperienceOrb.class).setExperience(exp);
expModifier expModifier
.get(player.getName()) .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; break;
} }