package de.steamwar.lobby.particle.elements.custom; import de.steamwar.lobby.particle.ParticleElement; import de.steamwar.lobby.particle.ParticleTickData; import de.steamwar.lobby.particle.elements.DelegatingParticleElement; public class YOffset extends DelegatingParticleElement { private double multiplication; private double minY; private double maxY; private boolean inverted; private boolean bounce; public YOffset(ParticleElement particleElement, double speed, double minY, double maxY, boolean inverted, boolean bounce) { super(particleElement); this.multiplication = speed; this.minY = minY; this.maxY = maxY; this.inverted = inverted; this.bounce = bounce; } @Override public String attribute() { return null; } @Override public void tick(ParticleTickData particleTickData) { double y; if (bounce) { double value = ((particleTickData.getDeg() * multiplication) % 360) / 180; if (inverted) { if (value <= 1) { y = maxY - (maxY - minY) * value; } else { y = minY + (maxY - minY) * (value - 1); } } else { if (value <= 1) { y = minY + (maxY - minY) * value; } else { y = maxY - (maxY - minY) * (value - 1); } } } else { double value = ((particleTickData.getDeg() * multiplication) % 360) / 360; if (inverted) { y = maxY - (maxY - minY) * value; } else { y = minY + (maxY - minY) * value; } } ParticleTickData current = particleTickData.withLocation(particleTickData.getLocation().clone().add(0, y, 0)); particleElement.tick(current); } }