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 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) {}
}

View File

@@ -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) {}
}

View File

@@ -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);
}
}
}

View File

@@ -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) {}
}

View File

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

View File

@@ -10,6 +10,7 @@ import java.util.*;
public class MineClassFactory {
/** Instance unique pré-initialisée */
private static MineClassFactory INSTANCE;
private final Map<String, MineClass> availableClasses;
/** Constructeur privé */
@@ -30,19 +31,6 @@ public class MineClassFactory {
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) {
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<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
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.");
}

View File

@@ -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;

View File

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

View File

@@ -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) {

View File

@@ -33,7 +33,8 @@ public class SmeltingEngine {
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();
Iterator<Recipe> 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;
}