Refactored prerequisites

Signed-off-by: BuildTools <unconfigured@null.spigotmc.org>
This commit is contained in:
BuildTools 2020-10-15 11:04:01 +01:00
parent 54d7f3d4df
commit 897f2638f1
3 changed files with 13 additions and 20 deletions

View File

@ -4,7 +4,6 @@ import com.willfp.ecoenchants.config.ConfigManager;
import com.willfp.ecoenchants.config.configs.EnchantmentConfig;
import com.willfp.ecoenchants.enchantments.meta.EnchantmentRarity;
import com.willfp.ecoenchants.enchantments.util.Watcher;
import com.willfp.ecoenchants.util.Logger;
import com.willfp.ecoenchants.util.interfaces.Registerable;
import com.willfp.ecoenchants.util.optional.Prerequisite;
import net.md_5.bungee.api.ChatColor;
@ -44,7 +43,6 @@ public abstract class EcoEnchant extends Enchantment implements Listener, Regist
private final Set<Material> target = new HashSet<>();
private boolean enabled;
private boolean registered = false;
/**
* Create new EcoEnchant matching builder and prerequisites
@ -59,14 +57,8 @@ public abstract class EcoEnchant extends Enchantment implements Listener, Regist
this.configVersion = builder.configVersion;
this.config = builder.config;
if(!Arrays.stream(prerequisites).allMatch(Prerequisite::isMet)) {
Arrays.stream(prerequisites).forEach(prerequisite -> {
if(!prerequisite.isMet()) {
Logger.warn("Enchantment " + builder.key + " does not match prerequisite \"" + prerequisite.getDescription() + "\". It will not be available.");
}
});
if(!Prerequisite.areMet(prerequisites))
return;
}
this.update();
this.add();
@ -131,8 +123,6 @@ public abstract class EcoEnchant extends Enchantment implements Listener, Regist
f.setAccessible(false);
Enchantment.registerEnchantment(this);
this.registered = true;
} catch (NoSuchFieldException | IllegalAccessException ignored) {}
}
@ -174,14 +164,6 @@ public abstract class EcoEnchant extends Enchantment implements Listener, Regist
return this.enabled;
}
/**
* Get if enchantment is registered
* @return If registered
*/
public boolean isRegistered() {
return this.registered;
}
/**
* Get permission name of enchantment
* @return The permission name

View File

@ -17,6 +17,7 @@ import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
import org.bukkit.entity.Trident;
import org.bukkit.event.EventHandler;
import org.bukkit.event.HandlerList;
import org.bukkit.event.block.BlockBreakEvent;
import org.bukkit.event.entity.EntityDamageByEntityEvent;
import org.bukkit.event.entity.ProjectileLaunchEvent;
@ -39,7 +40,11 @@ public abstract class Artifact extends EcoEnchant {
protected Artifact(String key, double version, Prerequisite[] prerequisites) {
super(new EcoEnchantBuilder(key, EnchantmentType.ARTIFACT, version), prerequisites);
if(!this.isRegistered()) return;
if(!Prerequisite.areMet(prerequisites)) {
HandlerList.unregisterAll(this); // Prevent events firing
return;
}
this.particle = this.getParticle();
this.extra = this.getDustOptions();

View File

@ -3,6 +3,8 @@ package com.willfp.ecoenchants.util.optional;
import com.willfp.ecoenchants.util.ClassUtils;
import org.bukkit.Bukkit;
import java.util.Arrays;
public enum Prerequisite {
MinVer1_16(
false,
@ -37,4 +39,8 @@ public enum Prerequisite {
MinVer1_16.setMet(!Bukkit.getServer().getClass().getPackage().getName().split("\\.")[3].contains("15"));
HasPaper.setMet(ClassUtils.exists("com.destroystokyo.paper.event.player.PlayerElytraBoostEvent"));
}
public static boolean areMet(Prerequisite[] prerequisites) {
return Arrays.stream(prerequisites).allMatch(Prerequisite::isMet);
}
}