Skip to content

Commit cf2acb3

Browse files
committed
add bow / bow string stats to TIC materials. Close #736
1 parent 41f177e commit cf2acb3

6 files changed

Lines changed: 193 additions & 2 deletions

File tree

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package com.blamejared.compat.tconstruct.actions;
2+
3+
import com.blamejared.compat.tconstruct.materials.ITICMaterial;
4+
import crafttweaker.IAction;
5+
import slimeknights.tconstruct.library.materials.*;
6+
7+
public class SetBowBonusDamageAction implements IAction {
8+
9+
private final ITICMaterial material;
10+
private final String stat;
11+
private final float newValue;
12+
13+
public SetBowBonusDamageAction(ITICMaterial material, String stat, float newValue) {
14+
this.material = material;
15+
this.stat = stat;
16+
this.newValue = newValue;
17+
}
18+
19+
private static void set(Material material, String stat, float bonusDamage) {
20+
IMaterialStats oldStat = material.getStats(stat);
21+
if(oldStat instanceof BowMaterialStats) {
22+
BowMaterialStats bowStat = (BowMaterialStats) oldStat;
23+
BowMaterialStats newBow = new BowMaterialStats(bowStat.drawspeed, bowStat.range, bonusDamage);
24+
material.addStats(newBow);
25+
}
26+
27+
}
28+
29+
@Override
30+
public void apply() {
31+
set((Material) material.getInternal(), stat, newValue);
32+
}
33+
34+
35+
@Override
36+
public String describe() {
37+
return "Setting BonusDamage of " + material.getName() + " to " + newValue + " for " + stat;
38+
}
39+
40+
}
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package com.blamejared.compat.tconstruct.actions;
2+
3+
import com.blamejared.compat.tconstruct.materials.ITICMaterial;
4+
import crafttweaker.IAction;
5+
import slimeknights.tconstruct.library.materials.*;
6+
7+
public class SetBowRangeAction implements IAction {
8+
9+
private final ITICMaterial material;
10+
private final String stat;
11+
private final float newValue;
12+
13+
public SetBowRangeAction(ITICMaterial material, String stat, float newValue) {
14+
this.material = material;
15+
this.stat = stat;
16+
this.newValue = newValue;
17+
}
18+
19+
private static void set(Material material, String stat, float range) {
20+
IMaterialStats oldStat = material.getStats(stat);
21+
if(oldStat instanceof BowMaterialStats) {
22+
BowMaterialStats bowStat = (BowMaterialStats) oldStat;
23+
BowMaterialStats newBow = new BowMaterialStats(bowStat.drawspeed, range, bowStat.bonusDamage);
24+
material.addStats(newBow);
25+
}
26+
27+
}
28+
29+
@Override
30+
public void apply() {
31+
set((Material) material.getInternal(), stat, newValue);
32+
}
33+
34+
35+
@Override
36+
public String describe() {
37+
return "Setting Range of " + material.getName() + " to " + newValue + " for " + stat;
38+
}
39+
40+
}
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package com.blamejared.compat.tconstruct.actions;
2+
3+
import com.blamejared.compat.tconstruct.materials.ITICMaterial;
4+
import crafttweaker.IAction;
5+
import slimeknights.tconstruct.library.materials.*;
6+
7+
public class SetDrawSpeedAction implements IAction {
8+
9+
private final ITICMaterial material;
10+
private final String stat;
11+
private final float newValue;
12+
13+
public SetDrawSpeedAction(ITICMaterial material, String stat, float newValue) {
14+
this.material = material;
15+
this.stat = stat;
16+
this.newValue = newValue;
17+
}
18+
19+
private static void set(Material material, String stat, float drawSpeed) {
20+
IMaterialStats oldStat = material.getStats(stat);
21+
if(oldStat instanceof BowMaterialStats) {
22+
BowMaterialStats bowStat = (BowMaterialStats) oldStat;
23+
BowMaterialStats newBow = new BowMaterialStats(drawSpeed, bowStat.range, bowStat.bonusDamage);
24+
material.addStats(newBow);
25+
}
26+
27+
}
28+
29+
@Override
30+
public void apply() {
31+
set((Material) material.getInternal(), stat, newValue);
32+
}
33+
34+
35+
@Override
36+
public String describe() {
37+
return "Setting DrawSpeed of " + material.getName() + " to " + newValue + " for " + stat;
38+
}
39+
40+
}

src/main/java/com/blamejared/compat/tconstruct/actions/SetModifierAction.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,13 @@ private static void set(Material material, String stat, float modifier) {
2626
ArrowShaftMaterialStats shaftStat = (ArrowShaftMaterialStats) oldStat;
2727
ArrowShaftMaterialStats newShaft = new ArrowShaftMaterialStats(modifier, shaftStat.bonusAmmo);
2828
material.addStats(newShaft);
29-
}else if(oldStat instanceof FletchingMaterialStats) {
29+
} else if(oldStat instanceof FletchingMaterialStats) {
3030
FletchingMaterialStats fletch = (FletchingMaterialStats) oldStat;
3131
FletchingMaterialStats newShaft = new FletchingMaterialStats(fletch.accuracy, modifier);
3232
material.addStats(newShaft);
33+
}else if(oldStat instanceof BowStringMaterialStats) {
34+
BowStringMaterialStats newBowString = new BowStringMaterialStats( modifier);
35+
material.addStats(newBowString);
3336
}
3437

3538

src/main/java/com/blamejared/compat/tconstruct/materials/ITICMaterial.java

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,4 +86,30 @@ public interface ITICMaterial {
8686
@ZenGetter("fletchingAccuracy")
8787
float getFletchingAccuracy();
8888

89+
@ZenGetter("bowDrawSpeed")
90+
float getBowDrawSpeed();
91+
92+
@ZenSetter("bowDrawSpeed")
93+
void setBowDrawSpeed(float drawSpeed);
94+
95+
@ZenGetter("bowRange")
96+
float getBowRange();
97+
98+
@ZenSetter("bowRange")
99+
void setBowRange(float range);
100+
101+
@ZenGetter("bonusDamage")
102+
float getBonusDamage();
103+
104+
@ZenSetter("bonusDamage")
105+
void setBonusDamage(float bonusDamage);
106+
107+
@ZenGetter("bowStringModifier")
108+
float getBowStringModifier();
109+
110+
@ZenSetter("bowStringModifier")
111+
void setBowStringModifier(float modifier);
112+
113+
114+
89115
}

src/main/java/com/blamejared/compat/tconstruct/materials/TICMaterial.java

Lines changed: 43 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ public void setDurabilityExtra(int durability) {
100100

101101
@Override
102102
public int getDurabilityExtra() {
103-
return ((ExtraMaterialStats ) material.getStats("extra")).extraDurability;
103+
return ((ExtraMaterialStats) material.getStats("extra")).extraDurability;
104104
}
105105

106106
@Override
@@ -143,5 +143,47 @@ public float getFletchingAccuracy() {
143143
return ((FletchingMaterialStats) material.getStats("fletching")).accuracy;
144144
}
145145

146+
@Override
147+
public float getBowDrawSpeed() {
148+
return ((BowMaterialStats) material.getStats("bow")).drawspeed;
149+
}
150+
151+
@Override
152+
public void setBowDrawSpeed(float drawSpeed) {
153+
CraftTweakerAPI.apply(new SetDrawSpeedAction(this, "bow", drawSpeed));
154+
}
155+
156+
@Override
157+
public float getBowRange() {
158+
return ((BowMaterialStats) material.getStats("bow")).range;
159+
}
160+
161+
@Override
162+
public void setBowRange(float range) {
163+
CraftTweakerAPI.apply(new SetBowRangeAction(this, "bow", range));
164+
}
165+
166+
@Override
167+
public float getBonusDamage() {
168+
return ((BowMaterialStats) material.getStats("bow")).bonusDamage;
169+
}
170+
171+
@Override
172+
public void setBonusDamage(float bonusDamage) {
173+
CraftTweakerAPI.apply(new SetBowBonusDamageAction(this, "bow", bonusDamage));
174+
}
175+
176+
@Override
177+
public float getBowStringModifier() {
178+
return ((BowStringMaterialStats) material.getStats("bowstring")).modifier;
179+
180+
}
181+
182+
@Override
183+
public void setBowStringModifier(float modifier) {
184+
CraftTweakerAPI.apply(new SetModifierAction(this, "bowstring", modifier));
185+
186+
}
187+
146188

147189
}

0 commit comments

Comments
 (0)