1212import java .util .Optional ;
1313import java .util .stream .Collectors ;
1414
15- public final class ConfigEnchantmentEntry {
15+ public class ConfigEnchantmentEntry {
1616 /**
1717 * Name of the enchantment.
1818 */
19- private final @ NotNull String name ;
19+ public final @ NotNull String name ;
2020
2121 /**
2222 * Maximum level of the enchantment.
2323 */
24- private final @ Nullable Integer maxLevel ;
24+ protected final @ Nullable Integer maxLevel ;
2525
2626 /**
2727 * Max level relative
2828 */
29- private final boolean maxLevelRelative ;
29+ protected final boolean maxLevelRelative ;
3030
3131 /**
3232 * Cost of the enchantment.
3333 */
34- private final int cost ;
34+ protected final int cost ;
3535
3636 /**
3737 * Multiply cost by level.
3838 */
39- private final boolean multiplyCostByLevel ;
39+ protected final boolean multiplyCostByLevel ;
4040
4141 /**
4242 * Name of the enchantment.
4343 */
44- public @ NotNull String getName () {
44+ public final @ NotNull String getName () {
4545 return name ;
4646 }
4747
4848 /**
4949 * Maximum level of the enchantment.
5050 */
51- public @ NotNull Optional <@ NotNull Integer > getMaxLevel () {
51+ public final @ NotNull Optional <@ NotNull Integer > getMaxLevel () {
5252 if (Optional .ofNullable (maxLevel ).isEmpty ()) return Optional .empty ();
5353 if (maxLevelRelative ) return Optional .of (getEnchantment ().getMaxLevel () + maxLevel );
5454 return Optional .of (maxLevel );
@@ -57,21 +57,21 @@ public final class ConfigEnchantmentEntry {
5757 /**
5858 * Cost of the enchantment.
5959 */
60- public int getCost () {
60+ public final int getCost () {
6161 return cost ;
6262 }
6363
6464 /**
6565 * Multiply cost by level.
6666 */
67- public boolean getMultiplyCostByLevel () {
67+ public final boolean getMultiplyCostByLevel () {
6868 return multiplyCostByLevel ;
6969 }
7070
7171 /**
7272 * Get enchantment
7373 */
74- public Enchantment getEnchantment () {
74+ public final Enchantment getEnchantment () {
7575 return Enchantment .getByKey (NamespacedKey .minecraft (name ));
7676 }
7777
@@ -80,7 +80,7 @@ public Enchantment getEnchantment() {
8080 *
8181 * @param enchantment The enchantment
8282 */
83- public boolean isEnchantment (final @ NotNull Enchantment enchantment ) {
83+ public final boolean isEnchantment (final @ NotNull Enchantment enchantment ) {
8484 return name .equalsIgnoreCase (enchantment .getKey ().getKey ());
8585 }
8686
@@ -192,4 +192,18 @@ private static boolean isValidConfigValue(final @Nullable Object configValue) {
192192 if (!isValidConfigValue (configValue )) throw new IllegalArgumentException ("Invalid config value" );
193193 return configArray ((ArrayList <HashMap <String , Object >>) configValue );
194194 }
195+
196+ public static final class AllConfigEnchantmentEntry extends ConfigEnchantmentEntry {
197+ private AllConfigEnchantmentEntry (final @ Nullable Integer maxLevel , final boolean maxLevelRelative , final int cost , final boolean multiplyCostByLevel ) {
198+ super ("ALL" , maxLevel , maxLevelRelative , cost , multiplyCostByLevel );
199+ }
200+
201+ public static @ NotNull AllConfigEnchantmentEntry from (final @ NotNull ConfigEnchantmentEntry configEnchantmentEntry ) {
202+ return new AllConfigEnchantmentEntry (configEnchantmentEntry .maxLevel , configEnchantmentEntry .maxLevelRelative , configEnchantmentEntry .cost , configEnchantmentEntry .multiplyCostByLevel );
203+ }
204+
205+ public @ NotNull ConfigEnchantmentEntry enchant (final @ NotNull Enchantment enchantment ) {
206+ return new ConfigEnchantmentEntry (enchantment .getKey ().getKey (), this .maxLevel , maxLevelRelative , cost , multiplyCostByLevel );
207+ }
208+ }
195209}
0 commit comments