Skip to content

Commit e5e0a5d

Browse files
committed
Add max travel time attribute
1 parent d4d2360 commit e5e0a5d

File tree

3 files changed

+9
-4
lines changed

3 files changed

+9
-4
lines changed

core/src/main/java/tc/oc/pgm/projectile/ProjectileDefinition.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ public class ProjectileDefinition extends SelfIdentifyingFeatureDefinition {
2424
protected BlockMaterialData blockMaterial;
2525
protected float scale;
2626
protected boolean solidBlockCollision;
27+
protected Duration maxTravelTime;
2728

2829
public ProjectileDefinition(
2930
@Nullable String id,
@@ -40,7 +41,8 @@ public ProjectileDefinition(
4041
boolean precise,
4142
BlockMaterialData blockMaterial,
4243
float scale,
43-
boolean solidBlockCollision) {
44+
boolean solidBlockCollision,
45+
Duration maxTravelTime) {
4446
super(id);
4547
this.name = name;
4648
this.damage = damage;
@@ -56,6 +58,7 @@ public ProjectileDefinition(
5658
this.blockMaterial = blockMaterial;
5759
this.scale = scale;
5860
this.solidBlockCollision = solidBlockCollision;
61+
this.maxTravelTime = maxTravelTime;
5962
}
6063

6164
public @Nullable String getName() {

core/src/main/java/tc/oc/pgm/projectile/ProjectileMatchModule.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,7 @@ public boolean getAsBoolean() {
172172
return false;
173173
}
174174
},
175-
1L, 4000, projectile::remove
175+
1L, projectileDefinition.maxTravelTime.toMillis(), projectile::remove
176176
);
177177
}
178178
projectile.setMetadata(
@@ -246,7 +246,7 @@ private Location calculateTo(
246246

247247
private static void runFixedTimesAtPeriod(
248248
final ScheduledExecutorService scheduledExecutorService, final BooleanSupplier runnable,
249-
final long periodTicks, final int upperBoundMillis,
249+
final long periodTicks, final long upperBoundMillis,
250250
final Runnable finishHandler
251251
) {
252252
final ScheduledFuture<?>[] ref = new ScheduledFuture[2];

core/src/main/java/tc/oc/pgm/projectile/ProjectileModule.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@ public ProjectileModule parse(MapFactory factory, Logger logger, Document doc)
7979
boolean precise = XMLUtils.parseBoolean(projectileElement.getAttribute("precise"), true);
8080
float scale = XMLUtils.parseNumber(Node.fromChildOrAttr(projectileElement, "scale"), Float.class, 1.0f);
8181
boolean solidBlockCollision = XMLUtils.parseBoolean(projectileElement.getAttribute("solid-block-collision"), true);
82+
Duration maxTravelTime = XMLUtils.parseDuration(projectileElement.getAttribute("max-travel-time"), Duration.ofSeconds(1));
8283

8384
ProjectileDefinition projectileDefinition = new ProjectileDefinition(
8485
id,
@@ -95,7 +96,8 @@ public ProjectileModule parse(MapFactory factory, Logger logger, Document doc)
9596
precise,
9697
blockMaterial,
9798
scale,
98-
solidBlockCollision);
99+
solidBlockCollision,
100+
maxTravelTime);
99101

100102
factory.getFeatures().addFeature(projectileElement, projectileDefinition);
101103
projectiles.add(projectileDefinition);

0 commit comments

Comments
 (0)