From 0cdae68c4006dc29acbcde4ebade377c5aa0d95e Mon Sep 17 00:00:00 2001 From: Auxilor Date: Sat, 28 Nov 2020 19:04:24 +0000 Subject: [PATCH] Updated Prerequisites --- .../util/optional/Prerequisite.java | 28 +++++++++++-------- 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/Plugin/src/main/java/com/willfp/ecoenchants/util/optional/Prerequisite.java b/Plugin/src/main/java/com/willfp/ecoenchants/util/optional/Prerequisite.java index 9b323d28..27171cff 100644 --- a/Plugin/src/main/java/com/willfp/ecoenchants/util/optional/Prerequisite.java +++ b/Plugin/src/main/java/com/willfp/ecoenchants/util/optional/Prerequisite.java @@ -1,26 +1,34 @@ package com.willfp.ecoenchants.util.optional; import com.willfp.ecoenchants.util.ClassUtils; +import com.willfp.ecoenchants.util.interfaces.ObjectCallable; import org.bukkit.Bukkit; +import java.util.ArrayList; import java.util.Arrays; +import java.util.List; public class Prerequisite { + private static final List values = new ArrayList<>(); + public static final Prerequisite MinVer1_16 = new Prerequisite( - false, + () -> !Bukkit.getServer().getClass().getPackage().getName().split("\\.")[3].contains("15"), "Requires minimum server version of 1.16" ); public static final Prerequisite HasPaper = new Prerequisite( - false, + () -> ClassUtils.exists("com.destroystokyo.paper.event.player.PlayerElytraBoostEvent"), "Requires server to be running paper (or a fork)" ); private boolean isMet; + private final ObjectCallable isMetCallable; private final String description; - protected Prerequisite(boolean isMet, String description) { - this.isMet = isMet; + public Prerequisite(ObjectCallable isMetCallable, String description) { + this.isMetCallable = isMetCallable; + this.isMet = isMetCallable.call(); this.description = description; + values.add(this); } public String getDescription() { @@ -31,20 +39,16 @@ public class Prerequisite { return isMet; } - private void setMet(boolean met) { - isMet = met; - } - - static { - update(); + private void refresh() { + this.isMet = this.isMetCallable.call(); } public static void update() { - MinVer1_16.setMet(!Bukkit.getServer().getClass().getPackage().getName().split("\\.")[3].contains("15")); - HasPaper.setMet(ClassUtils.exists("com.destroystokyo.paper.event.player.PlayerElytraBoostEvent")); + values.forEach(Prerequisite::refresh); } public static boolean areMet(Prerequisite[] prerequisites) { + update(); return Arrays.stream(prerequisites).allMatch(Prerequisite::isMet); } }