Interface LoadRequirement
- All Known Implementing Classes:
LoadRequirement.AnyOfRequirement, LoadRequirement.AvailableComplementRequirement, LoadRequirement.ClassRequirement, LoadRequirement.MultiLoadRequirement, LoadRequirement.NoneLoadRequirement, LoadRequirement.PlatformRequirement
public sealed interface LoadRequirement
permits LoadRequirement.NoneLoadRequirement, LoadRequirement.AvailableComplementRequirement, LoadRequirement.MultiLoadRequirement, LoadRequirement.PlatformRequirement, LoadRequirement.ClassRequirement, LoadRequirement.AnyOfRequirement
This class specifies the conditions that must be met
in order to load an
Expansion from an ExpansionProvider.- Since:
- 3.0.0
-
Nested Class Summary
Nested ClassesModifier and TypeInterfaceDescriptionstatic final recordAnyOfLoadRequirementstatic final recordAvailableComplementRequirementstatic final recordClassRequirementstatic final recordMultiLoadRequirementstatic enumNoneLoadRequirementstatic final recordPlatformLoadRequirement -
Method Summary
Static MethodsModifier and TypeMethodDescriptionstatic LoadRequirementallOf(LoadRequirement... requirements) Multiple requirement, in case an expansion needs to depend on a platform as well as one or more add-ons that are installed.static LoadRequirementanyOf(LoadRequirement... requirements) This requirement checks whether any of the conditions presented are satisfied.static LoadRequirementnone()It means that there is no requirement to load an expansion.static LoadRequirementRequirement that the current execution be on a specific platform.static LoadRequirementrequiredClass(String clazz) Requirement that a specific class be present.static LoadRequirementrequiredComplement(String name, String... aliases) Requirement for a complement, whether a plugin or mod, to be present in order for an expansion to be loaded.
The ability to provide multiple strings is provided because names may vary on some platforms.
-
Method Details
-
none
It means that there is no requirement to load an expansion.- Returns:
- a LoadRequirement that does not perform any validation
- Since:
- 3.0.0
-
requiredComplement
Requirement for a complement, whether a plugin or mod, to be present in order for an expansion to be loaded.
The ability to provide multiple strings is provided because names may vary on some platforms. For example, Velocity requires plugin IDs to be lowercase, such asminiplaceholders, while Paper can contain uppercase letters, such asMiniPlaceholders.- Parameters:
name- the principal name of this complementaliases- the platform aliases of a complement- Returns:
- a load requirement that checks for an available complement
- Since:
- 3.0.0
-
allOf
Multiple requirement, in case an expansion needs to depend on a platform as well as one or more add-ons that are installed.- Parameters:
requirements- the load requirements- Returns:
- a load requirement of many load requirements
- Since:
- 3.0.0
-
platform
Requirement that the current execution be on a specific platform.- Parameters:
platforms- the supported platforms- Returns:
- a load requirement that checks for a supported platform
- Since:
- 3.0.0
-
requiredClass
static LoadRequirement requiredClass(@Pattern("^([a-z_][a-z0-9_]*)(\\.[a-z_][a-z0-9_]*)*(\\.[A-Z][A-Za-z0-9_]*)$") String clazz) Requirement that a specific class be present.- Parameters:
clazz- the specified class.- Returns:
- a load requirement that checks for a present class
- Since:
- 3.1.0
-
anyOf
This requirement checks whether any of the conditions presented are satisfied.- Parameters:
requirements- the requerimients- Returns:
- a requirement that checks whether a condition is valid
- Since:
- 3.1.0
-