LoParkour/loparkour-vilib/src/main/java/dev/efnilite/vilib/particle/ParticleData.java
loki 8aeb547897 v1.2.4: Remove roguelike perks, update bStats to 3.2.1, add new game modes and lpschem system
- Removed roguelike perk system (double jump, magnet, shield, second chance)
- Updated bStats dependency to 3.2.1 with proper relocation
- Changed bStats plugin ID to 29754
- Added new game modes: Speedrun, Gravity Shift, Hardcore
- Implemented .lpschem format with GZIP + JSON compression
- Added JumpValidator for physics-based jump validation
- Added JumpType system (neo-jump, head-hitter, fence, trapdoor, ladder)
- Implemented Ghost system for recording/playback top players
- Added loparkour-vilib as local dependency
- Updated config with new mode settings and removed roguelike section
- Cleaned up TODO.md roadmap
2026-02-25 00:55:24 +01:00

117 lines
No EOL
2.7 KiB
Java

package dev.efnilite.vilib.particle;
import org.bukkit.Particle;
import org.jetbrains.annotations.Nullable;
/**
* Wrapper for data used in {@link Particles}
*
* @author Efnilite
*/
public class ParticleData<T> {
private int size;
private double speed;
private double offsetX;
private double offsetY;
private double offsetZ;
private Particle type;
@Nullable
private T data;
public ParticleData(Particle type, @Nullable T data, int size) {
this(type, data, size, 0, 0, 0, 0);
}
public ParticleData(Particle type, @Nullable T data, int size, double speed) {
this(type, data, size, speed, 0, 0, 0);
}
public ParticleData(Particle type, @Nullable T data, int size, double offsetX, double offsetY, double offsetZ) {
this(type, data, size, 0, offsetX, offsetY, offsetZ);
}
/**
* Main constructor for Particle Data.
*
* @param type The type of particle
* @param data The possible data associated with this particle (colour, etc.)
* @param size The size of the particle
* @param speed The speed of the particle
* @param offsetX The max x offset in moving
* @param offsetY The max y offset in moving
* @param offsetZ The max z offset in moving
*/
public ParticleData(Particle type, @Nullable T data, int size, double speed, double offsetX, double offsetY, double offsetZ) {
this.data = data;
this.type = type;
this.size = size;
this.speed = speed;
this.offsetX = offsetX;
this.offsetY = offsetY;
this.offsetZ = offsetZ;
}
public ParticleData<T> size(int size) {
this.size = size;
return this;
}
public ParticleData<T> speed(double speed) {
this.speed = speed;
return this;
}
public ParticleData<T> offsetX(double offsetX) {
this.offsetX = offsetX;
return this;
}
public ParticleData<T> offsetY(double offsetY) {
this.offsetY = offsetY;
return this;
}
public ParticleData<T> offsetZ(double offsetZ) {
this.offsetZ = offsetZ;
return this;
}
public ParticleData<T> data(@Nullable T data) {
this.data = data;
return this;
}
public ParticleData<T> type(Particle type) {
this.type = type;
return this;
}
public int getSize() {
return size;
}
public double getSpeed() {
return speed;
}
public double getOffsetX() {
return offsetX;
}
public double getOffsetY() {
return offsetY;
}
public double getOffsetZ() {
return offsetZ;
}
public @Nullable T getData() {
return data;
}
public Particle getType() {
return type;
}
}