Skip to content

Commit 3a2c8f6

Browse files
Okay, NOW we have getters
1 parent 118fbd4 commit 3a2c8f6

File tree

1 file changed

+71
-11
lines changed

1 file changed

+71
-11
lines changed

src/main/java/dev/latvian/mods/kubejs/component/ItemComponentFunctions.java

Lines changed: 71 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -120,8 +120,8 @@ public interface ItemComponentFunctions extends ComponentFunctions {
120120
}
121121

122122
default boolean kjs$hasAttributeModifier(Holder<Attribute> attribute, ResourceLocation id) {
123-
for (var modifier : kjs$getAttributeModifiers().modifiers()) {
124-
if (modifier.matches(attribute, id)) {
123+
for (var entry : kjs$getAttributeModifiers().modifiers()) {
124+
if (entry.matches(attribute, id)) {
125125
return true;
126126
}
127127
}
@@ -130,9 +130,9 @@ public interface ItemComponentFunctions extends ComponentFunctions {
130130

131131
@Nullable
132132
default AttributeModifier kjs$getAttributeModifier(Holder<Attribute> attribute, ResourceLocation id) {
133-
for (var modifier : kjs$getAttributeModifiers().modifiers()) {
134-
if (modifier.matches(attribute, id)) {
135-
return modifier.modifier();
133+
for (var entry : kjs$getAttributeModifiers().modifiers()) {
134+
if (entry.matches(attribute, id)) {
135+
return entry.modifier();
136136
}
137137
}
138138
return null;
@@ -150,12 +150,12 @@ public interface ItemComponentFunctions extends ComponentFunctions {
150150
var oldMods = kjs$getAttributeModifiers();
151151

152152
var list = new ArrayList<ItemAttributeModifiers.Entry>(oldMods.modifiers().size());
153-
for (var modifier : oldMods.modifiers()) {
154-
if (modifier.attribute().equals(Attributes.ATTACK_SPEED)) {
153+
for (var entry : oldMods.modifiers()) {
154+
if (entry.attribute().equals(Attributes.ATTACK_SPEED)) {
155155
continue;
156156
}
157157

158-
list.add(modifier);
158+
list.add(entry);
159159
}
160160
list.add(new ItemAttributeModifiers.Entry(Attributes.ATTACK_SPEED,
161161
new AttributeModifier(BASE_ATTACK_SPEED_ID, speed, Operation.ADD_VALUE),
@@ -168,12 +168,12 @@ public interface ItemComponentFunctions extends ComponentFunctions {
168168
var oldMods = kjs$getAttributeModifiers();
169169

170170
var list = new ArrayList<ItemAttributeModifiers.Entry>(oldMods.modifiers().size());
171-
for (var modifier : oldMods.modifiers()) {
172-
if (modifier.attribute().equals(Attributes.ATTACK_DAMAGE)) {
171+
for (var entry : oldMods.modifiers()) {
172+
if (entry.attribute().equals(Attributes.ATTACK_DAMAGE)) {
173173
continue;
174174
}
175175

176-
list.add(modifier);
176+
list.add(entry);
177177
}
178178
list.add(new ItemAttributeModifiers.Entry(Attributes.ATTACK_DAMAGE,
179179
new AttributeModifier(BASE_ATTACK_DAMAGE_ID, dmg, Operation.ADD_VALUE),
@@ -182,6 +182,48 @@ public interface ItemComponentFunctions extends ComponentFunctions {
182182
kjs$override(DataComponents.ATTRIBUTE_MODIFIERS, new ItemAttributeModifiers(list, oldMods.showInTooltip()));
183183
}
184184

185+
default double kjs$getAttackDamage() {
186+
var base = kjs$getBaseAttackDamage();
187+
var sum = 0.0;
188+
189+
for (var entry : kjs$getAttributeModifiers().modifiers()) {
190+
if (entry.matches(Attributes.ATTACK_DAMAGE, BASE_ATTACK_DAMAGE_ID)) {
191+
continue;
192+
}
193+
194+
var mod = entry.modifier();
195+
double d1 = mod.amount();
196+
197+
sum += switch (mod.operation()) {
198+
case ADD_VALUE -> d1;
199+
case ADD_MULTIPLIED_BASE -> d1 * base;
200+
case ADD_MULTIPLIED_TOTAL -> d1 * sum;
201+
};
202+
}
203+
return sum;
204+
}
205+
206+
default double kjs$getAttackSpeed() {
207+
var base = kjs$getBaseAttackSpeed();
208+
var sum = 0.0;
209+
210+
for (var entry : kjs$getAttributeModifiers().modifiers()) {
211+
if (entry.matches(Attributes.ATTACK_SPEED, BASE_ATTACK_SPEED_ID)) {
212+
continue;
213+
}
214+
215+
var mod = entry.modifier();
216+
double d1 = mod.amount();
217+
218+
sum += switch (mod.operation()) {
219+
case ADD_VALUE -> d1;
220+
case ADD_MULTIPLIED_BASE -> d1 * base;
221+
case ADD_MULTIPLIED_TOTAL -> d1 * sum;
222+
};
223+
}
224+
return sum;
225+
}
226+
185227
default void kjs$setBaseAttackSpeed(double speed) {
186228
kjs$override(DataComponents.ATTRIBUTE_MODIFIERS, kjs$getAttributeModifiers()
187229
.withModifierAdded(Attributes.ATTACK_SPEED,
@@ -196,4 +238,22 @@ public interface ItemComponentFunctions extends ComponentFunctions {
196238
EquipmentSlotGroup.MAINHAND));
197239
}
198240

241+
default double kjs$getBaseAttackDamage() {
242+
for (var modifier : kjs$getAttributeModifiers().modifiers()) {
243+
if (modifier.matches(Attributes.ATTACK_DAMAGE, BASE_ATTACK_DAMAGE_ID)) {
244+
return modifier.modifier().amount();
245+
}
246+
}
247+
return 0.0;
248+
}
249+
250+
default double kjs$getBaseAttackSpeed() {
251+
for (var modifier : kjs$getAttributeModifiers().modifiers()) {
252+
if (modifier.matches(Attributes.ATTACK_SPEED, BASE_ATTACK_SPEED_ID)) {
253+
return modifier.modifier().amount();
254+
}
255+
}
256+
return 0.0;
257+
}
258+
199259
}

0 commit comments

Comments
 (0)