65 lines
2.0 KiB
Java
65 lines
2.0 KiB
Java
package net.babamod.mineclass.classes;
|
|
|
|
import net.babamod.mineclass.utils.AppliedStatus;
|
|
import org.bukkit.Material;
|
|
import org.bukkit.entity.Player;
|
|
import org.bukkit.inventory.ItemStack;
|
|
import org.bukkit.potion.PotionEffect;
|
|
|
|
import java.util.ArrayList;
|
|
import java.util.stream.Collectors;
|
|
|
|
public abstract class MineClassImpl implements MineClass {
|
|
|
|
@Override
|
|
public boolean is(Player player) {
|
|
return player.getActivePotionEffects().stream()
|
|
.map(PotionEffect::getType)
|
|
.collect(Collectors.toList())
|
|
.containsAll(getPotionEffects().keySet());
|
|
}
|
|
|
|
@Override
|
|
public void reapplyEffects(Player player) {
|
|
MineClassFactory.clearAllClassEffects(player);
|
|
getPotionEffects()
|
|
.forEach(
|
|
(key, value) -> {
|
|
if (player.hasPotionEffect(key)) {
|
|
player.removePotionEffect(key);
|
|
}
|
|
player.addPotionEffect(
|
|
new PotionEffect(key, Integer.MAX_VALUE, value - 1, false, false));
|
|
});
|
|
AppliedStatus.getInstance().setStatus(player, getCode());
|
|
}
|
|
|
|
@Override
|
|
public boolean isItemForbidden(Material type) {
|
|
return getForbiddenItems().contains(type);
|
|
}
|
|
|
|
@Override
|
|
public void enchantItem(ItemStack itemStack) {
|
|
if (getClassEnchantments().containsKey(itemStack.getType())) {
|
|
getClassEnchantments()
|
|
.getOrDefault(itemStack.getType(), new ArrayList<>())
|
|
.forEach(
|
|
enchantmentIntegerPair ->
|
|
itemStack.addUnsafeEnchantment(
|
|
enchantmentIntegerPair.getFirst(), enchantmentIntegerPair.getSecond()));
|
|
MineClassFactory.setUnbreakableAndSoulbound(itemStack);
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public void dropForbiddenItems(Player player) {
|
|
for (ItemStack content : player.getInventory().getContents()) {
|
|
if (content != null && getForbiddenItems().contains(content.getType())) {
|
|
player.getInventory().remove(content);
|
|
player.getWorld().dropItemNaturally(player.getLocation(), content);
|
|
}
|
|
}
|
|
}
|
|
}
|