Untitled
unknown
java
9 months ago
2.5 kB
7
Indexable
@SuppressWarnings("OptionalUsedAsFieldOrParameterType")
private void setBombVelocity(Player player, WrapperEntity bombEntity, Location location, Vector direction, Bomb bomb, Optional<Hologram> hologram) {
Vector initialVelocity = direction.multiply(bomb.getVelocity()).multiply(bomb.getVelocityMultiplier()).setY(bomb.getYMultiplier());
new BukkitRunnable() {
private final Vector velocity = initialVelocity;
final AtomicInteger ticksLived = new AtomicInteger(0);
@Override
public void run() {
if (bomb.isParticlesEnabled()) {
ParticleManager.sendParticlePacket(
player,
location,
bomb.getTrailParticle(),
bomb.getTrailOffset(),
bomb.getTrailSpeed(),
bomb.getTrailAmount(),
false);
}
hologram.ifPresent(h -> h.teleport(location.clone().add(0, bomb.getHologramYOffset(), 0)));
hologram.ifPresent(h -> {
for (int i = 0; i < bomb.getHologramText().size(); i++) {
String updatedLine = bomb.getHologramText().get(i);
if (updatedLine.contains("%time%")) {
String parsedTime = MessageParser.getTimeRemaining(ticksLived.get(), bomb.getMaxTicks());
updatedLine = updatedLine.replace("%time%", parsedTime);
h.updateLine(i, new OptimalTextLine((OptimalHologram) h, Color.hex(updatedLine)));
}
}
});
location.add(velocity.getX(), velocity.getY(), velocity.getZ());
bombEntity.teleport(SpigotConversionUtil.fromBukkitLocation(location));
velocity.setY(velocity.getY() + bomb.getGravity());
if (location.getBlock().isSolid() || ticksLived.getAndIncrement() > bomb.getMaxTicks()) {
hologram.ifPresent(Hologram::delete);
bombEntity.remove();
cancel();
BombHandler.handleBomb(player, bomb, LocationUtils.getPlayersWithinRadiusSync(location, bomb.getViewDistance()), location);
}
}
}.runTaskTimerAsynchronously(PhantomBombs.getInstance(), 0L, 1L);
}Editor is loading...
Leave a Comment