Added requirements into eco
This commit is contained in:
@@ -13,6 +13,7 @@ import com.willfp.eco.core.gui.GUIFactory;
|
|||||||
import com.willfp.eco.core.integrations.placeholder.PlaceholderIntegration;
|
import com.willfp.eco.core.integrations.placeholder.PlaceholderIntegration;
|
||||||
import com.willfp.eco.core.proxy.Cleaner;
|
import com.willfp.eco.core.proxy.Cleaner;
|
||||||
import com.willfp.eco.core.proxy.ProxyFactory;
|
import com.willfp.eco.core.proxy.ProxyFactory;
|
||||||
|
import com.willfp.eco.core.requirement.RequirementFactory;
|
||||||
import com.willfp.eco.core.scheduling.Scheduler;
|
import com.willfp.eco.core.scheduling.Scheduler;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
@@ -194,4 +195,11 @@ public interface Handler {
|
|||||||
* @param plugin The plugin.
|
* @param plugin The plugin.
|
||||||
*/
|
*/
|
||||||
void registerBStats(@NotNull EcoPlugin plugin);
|
void registerBStats(@NotNull EcoPlugin plugin);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the requirement factory.
|
||||||
|
*
|
||||||
|
* @return The factory.
|
||||||
|
*/
|
||||||
|
RequirementFactory getRequirementFactory();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,28 @@
|
|||||||
|
package com.willfp.eco.core.requirement;
|
||||||
|
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A requirement is a defined goal that a player must meet.
|
||||||
|
*/
|
||||||
|
public abstract class Requirement {
|
||||||
|
/**
|
||||||
|
* Create a new requirement.
|
||||||
|
*/
|
||||||
|
protected Requirement() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test if the player meets the requirement.
|
||||||
|
*
|
||||||
|
* @param player The player.
|
||||||
|
* @param args The arguments.
|
||||||
|
* @return The requirement.
|
||||||
|
*/
|
||||||
|
public abstract boolean doesPlayerMeet(@NotNull Player player,
|
||||||
|
@NotNull List<String> args);
|
||||||
|
}
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
package com.willfp.eco.core.requirement;
|
||||||
|
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Interface for internal requirement factory implementations.
|
||||||
|
*/
|
||||||
|
public interface RequirementFactory {
|
||||||
|
/**
|
||||||
|
* Create a requirement.
|
||||||
|
*
|
||||||
|
* @param name The name.
|
||||||
|
* @return The requirement returned for the name.
|
||||||
|
* Will return a requirement that is always true if not found.
|
||||||
|
*/
|
||||||
|
Requirement create(@NotNull String name);
|
||||||
|
}
|
||||||
@@ -0,0 +1,41 @@
|
|||||||
|
package com.willfp.eco.core.requirement;
|
||||||
|
|
||||||
|
import com.willfp.eco.core.Eco;
|
||||||
|
import lombok.experimental.UtilityClass;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Contains methods and fields pertaining to requirements.
|
||||||
|
*/
|
||||||
|
@UtilityClass
|
||||||
|
public class Requirements {
|
||||||
|
/**
|
||||||
|
* Requires a player to have a permission.
|
||||||
|
*/
|
||||||
|
public static final Requirement HAS_PERMISSION = Eco.getHandler().getRequirementFactory().create("has-permission");
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Placeholder equals value.
|
||||||
|
*/
|
||||||
|
public static final Requirement PLACEHOLDER_EQUALS = Eco.getHandler().getRequirementFactory().create("placeholder-equals");
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Numeric placeholder greater than value.
|
||||||
|
*/
|
||||||
|
public static final Requirement PLACEHOLDER_GREATER_THAN = Eco.getHandler().getRequirementFactory().create("placeholder-greater-than");
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Numeric placeholder less than value.
|
||||||
|
*/
|
||||||
|
public static final Requirement PLACEHOLDER_LESS_THAN = Eco.getHandler().getRequirementFactory().create("placeholder-less-than");
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get Requirements matching ID.
|
||||||
|
*
|
||||||
|
* @param name The ID to search for.
|
||||||
|
* @return The matching Requirements.
|
||||||
|
*/
|
||||||
|
public static Requirement getByID(@NotNull final String name) {
|
||||||
|
return Eco.getHandler().getRequirementFactory().create(name);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
package com.willfp.eco.internal.requirement
|
||||||
|
|
||||||
|
import com.willfp.eco.core.requirement.Requirement
|
||||||
|
import com.willfp.eco.core.requirement.RequirementFactory
|
||||||
|
import com.willfp.eco.internal.requirement.requirements.*
|
||||||
|
|
||||||
|
class EcoRequirementFactory: RequirementFactory {
|
||||||
|
override fun create(name: String): Requirement {
|
||||||
|
return when (name.lowercase()) {
|
||||||
|
"has-permission" -> RequirementHasPermission()
|
||||||
|
"placeholder-equals" -> RequirementPlaceholderEquals()
|
||||||
|
"placeholder-greater-than" -> RequirementPlaceholderGreaterThan()
|
||||||
|
"placeholder-less-than" -> RequirementPlaceholderLessThan()
|
||||||
|
else -> RequirementTrue()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
package com.willfp.eco.internal.requirement.requirements
|
||||||
|
|
||||||
|
import com.willfp.eco.core.requirement.Requirement
|
||||||
|
import org.bukkit.entity.Player
|
||||||
|
|
||||||
|
class RequirementHasPermission : Requirement() {
|
||||||
|
override fun doesPlayerMeet(
|
||||||
|
player: Player,
|
||||||
|
args: List<String>
|
||||||
|
): Boolean {
|
||||||
|
if (args.isEmpty()) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
val permission = args[0]
|
||||||
|
return player.hasPermission(permission)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
package com.willfp.eco.internal.requirement.requirements
|
||||||
|
|
||||||
|
import com.willfp.eco.core.integrations.placeholder.PlaceholderManager
|
||||||
|
import com.willfp.eco.core.requirement.Requirement
|
||||||
|
import org.bukkit.entity.Player
|
||||||
|
|
||||||
|
class RequirementPlaceholderEquals : Requirement() {
|
||||||
|
override fun doesPlayerMeet(
|
||||||
|
player: Player,
|
||||||
|
args: List<String>
|
||||||
|
): Boolean {
|
||||||
|
if (args.size < 2) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
val placeholder = args[0]
|
||||||
|
val equals = args[1]
|
||||||
|
return PlaceholderManager.translatePlaceholders(placeholder, player).equals(equals, ignoreCase = true)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
package com.willfp.eco.internal.requirement.requirements
|
||||||
|
|
||||||
|
import com.willfp.eco.core.integrations.placeholder.PlaceholderManager
|
||||||
|
import com.willfp.eco.core.requirement.Requirement
|
||||||
|
import org.bukkit.entity.Player
|
||||||
|
|
||||||
|
class RequirementPlaceholderGreaterThan : Requirement() {
|
||||||
|
override fun doesPlayerMeet(
|
||||||
|
player: Player,
|
||||||
|
args: List<String>
|
||||||
|
): Boolean {
|
||||||
|
if (args.size < 2) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
val placeholder = args[0]
|
||||||
|
val equals = args[1].toDoubleOrNull() ?: return false
|
||||||
|
return PlaceholderManager.translatePlaceholders(placeholder, player).toDoubleOrNull() ?: 0.0 >= equals
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
package com.willfp.eco.internal.requirement.requirements
|
||||||
|
|
||||||
|
import com.willfp.eco.core.integrations.placeholder.PlaceholderManager
|
||||||
|
import com.willfp.eco.core.requirement.Requirement
|
||||||
|
import org.bukkit.entity.Player
|
||||||
|
|
||||||
|
class RequirementPlaceholderLessThan : Requirement() {
|
||||||
|
override fun doesPlayerMeet(
|
||||||
|
player: Player,
|
||||||
|
args: List<String>
|
||||||
|
): Boolean {
|
||||||
|
if (args.size < 2) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
val placeholder = args[0]
|
||||||
|
val equals = args[1].toDoubleOrNull() ?: return false
|
||||||
|
return PlaceholderManager.translatePlaceholders(placeholder, player).toDoubleOrNull() ?: 0.0 < equals
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
package com.willfp.eco.internal.requirement.requirements
|
||||||
|
|
||||||
|
import com.willfp.eco.core.requirement.Requirement
|
||||||
|
import org.bukkit.entity.Player
|
||||||
|
|
||||||
|
class RequirementTrue : Requirement() {
|
||||||
|
override fun doesPlayerMeet(
|
||||||
|
player: Player,
|
||||||
|
args: List<String>
|
||||||
|
): Boolean {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -15,6 +15,7 @@ import com.willfp.eco.core.gui.GUIFactory
|
|||||||
import com.willfp.eco.core.integrations.placeholder.PlaceholderIntegration
|
import com.willfp.eco.core.integrations.placeholder.PlaceholderIntegration
|
||||||
import com.willfp.eco.core.proxy.Cleaner
|
import com.willfp.eco.core.proxy.Cleaner
|
||||||
import com.willfp.eco.core.proxy.ProxyFactory
|
import com.willfp.eco.core.proxy.ProxyFactory
|
||||||
|
import com.willfp.eco.core.requirement.RequirementFactory
|
||||||
import com.willfp.eco.core.scheduling.Scheduler
|
import com.willfp.eco.core.scheduling.Scheduler
|
||||||
import com.willfp.eco.internal.EcoCleaner
|
import com.willfp.eco.internal.EcoCleaner
|
||||||
import com.willfp.eco.internal.Plugins
|
import com.willfp.eco.internal.Plugins
|
||||||
@@ -30,6 +31,7 @@ import com.willfp.eco.internal.gui.EcoGUIFactory
|
|||||||
import com.willfp.eco.internal.integrations.PlaceholderIntegrationPAPI
|
import com.willfp.eco.internal.integrations.PlaceholderIntegrationPAPI
|
||||||
import com.willfp.eco.internal.logging.EcoLogger
|
import com.willfp.eco.internal.logging.EcoLogger
|
||||||
import com.willfp.eco.internal.proxy.EcoProxyFactory
|
import com.willfp.eco.internal.proxy.EcoProxyFactory
|
||||||
|
import com.willfp.eco.internal.requirement.EcoRequirementFactory
|
||||||
import com.willfp.eco.internal.scheduling.EcoScheduler
|
import com.willfp.eco.internal.scheduling.EcoScheduler
|
||||||
import com.willfp.eco.proxy.FastItemStackFactoryProxy
|
import com.willfp.eco.proxy.FastItemStackFactoryProxy
|
||||||
import com.willfp.eco.spigot.integrations.bstats.MetricHandler
|
import com.willfp.eco.spigot.integrations.bstats.MetricHandler
|
||||||
@@ -39,6 +41,7 @@ import java.util.logging.Logger
|
|||||||
@Suppress("UNUSED")
|
@Suppress("UNUSED")
|
||||||
class EcoHandler : EcoSpigotPlugin(), Handler {
|
class EcoHandler : EcoSpigotPlugin(), Handler {
|
||||||
private val cleaner = EcoCleaner()
|
private val cleaner = EcoCleaner()
|
||||||
|
private val requirementFactory = EcoRequirementFactory()
|
||||||
|
|
||||||
override fun createScheduler(plugin: EcoPlugin): Scheduler {
|
override fun createScheduler(plugin: EcoPlugin): Scheduler {
|
||||||
return EcoScheduler(plugin)
|
return EcoScheduler(plugin)
|
||||||
@@ -119,4 +122,8 @@ class EcoHandler : EcoSpigotPlugin(), Handler {
|
|||||||
override fun registerBStats(plugin: EcoPlugin) {
|
override fun registerBStats(plugin: EcoPlugin) {
|
||||||
MetricHandler.createMetrics(plugin, this.ecoPlugin)
|
MetricHandler.createMetrics(plugin, this.ecoPlugin)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun getRequirementFactory(): RequirementFactory {
|
||||||
|
return requirementFactory
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user