|
1 | 1 | package me.simplicitee.project.items; |
2 | 2 |
|
| 3 | +import com.projectkorra.projectkorra.ability.CoreAbility; |
3 | 4 | import com.projectkorra.projectkorra.attribute.AttributeModifier; |
| 5 | +import com.projectkorra.projectkorra.attribute.AttributePriority; |
4 | 6 |
|
5 | 7 | public final class BendingModifier { |
6 | 8 |
|
7 | | - private String attribute, value; |
| 9 | + private String attribute; |
8 | 10 | private AttributeModifier mod; |
9 | | - private Number num; |
| 11 | + private Number scalar; |
10 | 12 |
|
11 | | - public BendingModifier(String attribute, String value) { |
| 13 | + public BendingModifier(String attribute, AttributeModifier mod, Number scalar) { |
12 | 14 | this.attribute = attribute; |
13 | | - this.value = value; |
14 | | - this.mod = value.charAt(0) == 'x' ? AttributeModifier.MULTIPLICATION : AttributeModifier.ADDITION; |
15 | | - this.num = Double.parseDouble(value.substring(1, value.length())); |
| 15 | + this.mod = mod; |
| 16 | + this.scalar = scalar; |
16 | 17 | } |
17 | 18 |
|
18 | 19 | public String attribute() { |
19 | 20 | return attribute; |
20 | 21 | } |
21 | 22 |
|
22 | | - public AttributeModifier method() { |
23 | | - return mod; |
| 23 | + public void apply(CoreAbility ability) { |
| 24 | + try { |
| 25 | + ability.addAttributeModifier(attribute, scalar, mod, AttributePriority.LOW); |
| 26 | + } catch (Exception e) {} |
24 | 27 | } |
25 | 28 |
|
26 | | - public Number num() { |
27 | | - return num; |
| 29 | + @Override |
| 30 | + public String toString() { |
| 31 | + return attribute + ": " + (mod == AttributeModifier.MULTIPLICATION ? "x" : "+") + scalar.toString(); |
28 | 32 | } |
29 | 33 |
|
30 | | - public String value() { |
31 | | - return value; |
| 34 | + public static BendingModifier of(String attribute, String value) { |
| 35 | + if (!value.startsWith("x") || !value.startsWith("+")) { |
| 36 | + throw new IllegalArgumentException("Mods must start with 'x' or '+'"); |
| 37 | + } |
| 38 | + |
| 39 | + AttributeModifier mod = value.startsWith("x") ? AttributeModifier.MULTIPLICATION : AttributeModifier.ADDITION; |
| 40 | + Number scalar = Double.parseDouble(value.substring(1)); |
| 41 | + |
| 42 | + return new BendingModifier(attribute, mod, scalar); |
32 | 43 | } |
33 | 44 | } |
0 commit comments