Add some of the Easter Particles

This commit is contained in:
2025-03-03 09:35:42 +01:00
parent 85c0db873c
commit 0a60654a28
16 changed files with 251 additions and 36 deletions
@@ -50,6 +50,7 @@ PARTICLE_UNLOCKED_BY_EASTER_EGG_HUNT_DIFFICULTY = §fFind all Easter Eggs with d
PARTICLE_ATTRIBUTE = §eAttributes§7: PARTICLE_ATTRIBUTE = §eAttributes§7:
PARTICLE_ATTRIBUTE_CIRCLE = §8-§f Ring PARTICLE_ATTRIBUTE_CIRCLE = §8-§f Ring
PARTICLE_ATTRIBUTE_BI_CIRCLE = §8-§f Double ring PARTICLE_ATTRIBUTE_BI_CIRCLE = §8-§f Double ring
PARTICLE_ATTRIBUTE_TRI_CIRCLE = §8-§f Tripple ring
PARTICLE_ATTRIBUTE_CLOUD = §8-§f Cloud PARTICLE_ATTRIBUTE_CLOUD = §8-§f Cloud
PARTICLE_ATTRIBUTE_TICK = §8-§f Always active PARTICLE_ATTRIBUTE_TICK = §8-§f Always active
PARTICLE_ATTRIBUTE_NON_FLOOR = §8-§f In air PARTICLE_ATTRIBUTE_NON_FLOOR = §8-§f In air
@@ -101,10 +102,16 @@ PARTICLE_MAGIC_ENCHANTING = §5Magic/Enchantment
PARTICLE_WINGS_EVIL = §5Purple wings PARTICLE_WINGS_EVIL = §5Purple wings
PARTICLE_PLAYER_HAYLIM_AURA = §fHaylim\'s Aura PARTICLE_PLAYER_HAYLIM_AURA = §fHaylim\'s Aura
PARTICLE_PLAYER_RONGAMER99091_AURA = §7Smoke Granade PARTICLE_PLAYER_1063 = §7Circling Circle
PARTICLE_PLAYER_PLOMPA = §9ECAL PARTICLE_PLAYER_10916_AURA = §7Tornado
PARTICLE_PLAYER_10697_AURA = §7Smoke Granade
PARTICLE_PLAYER_64 = §9ECAL
PARTICLE_PLAYER_153 = §9ELY
PARTICLE_PLAYER_3266 = §9Tricolo
PARTICLE_TEAM_158_1 = §9EV
PARTICLE_TEAM_158_2 = §9DNA
PARTICLE_TEAM_PULSE_AURA_1 = §fPulse Aura §cFlame PARTICLE_TEAM_PULSE_AURA = §fPulse Aura §cFlame
PARTICLE_TEAM_PULSE_AURA_2 = §fPulse Aura §7End Rod PARTICLE_TEAM_PULSE_AURA_2 = §fPulse Aura §7End Rod
PARTICLE_TEAM_PULSE_AURA_3 = §fPulse Aura §fEnchanted PARTICLE_TEAM_PULSE_AURA_3 = §fPulse Aura §fEnchanted
PARTICLE_TEAM_PULSE_LOGO = §fPulse Logo PARTICLE_TEAM_PULSE_LOGO = §fPulse Logo
@@ -49,6 +49,7 @@ PARTICLE_UNLOCKED_BY_EASTER_EGG_HUNT_DIFFICULTY = §fAlle Eierer mit Schwierigke
PARTICLE_ATTRIBUTE_CIRCLE = §8-§f Ring PARTICLE_ATTRIBUTE_CIRCLE = §8-§f Ring
PARTICLE_ATTRIBUTE_BI_CIRCLE = §8-§f Doppelring PARTICLE_ATTRIBUTE_BI_CIRCLE = §8-§f Doppelring
PARTICLE_ATTRIBUTE_TRI_CIRCLE = §8-§f Dreifachring
PARTICLE_ATTRIBUTE_CLOUD = §8-§f Wolke PARTICLE_ATTRIBUTE_CLOUD = §8-§f Wolke
PARTICLE_ATTRIBUTE_TICK = §8-§f Immer aktiv PARTICLE_ATTRIBUTE_TICK = §8-§f Immer aktiv
PARTICLE_ATTRIBUTE_NON_FLOOR = §8-§f In der Luft PARTICLE_ATTRIBUTE_NON_FLOOR = §8-§f In der Luft
@@ -99,7 +100,8 @@ PARTICLE_WATER_FIRE = §bWasser§7/§cFeuer
PARTICLE_MAGIC_ENCHANTING = §5Magie§7/§eZauber PARTICLE_MAGIC_ENCHANTING = §5Magie§7/§eZauber
PARTICLE_WINGS_EVIL = §5Lila Flügel PARTICLE_WINGS_EVIL = §5Lila Flügel
PARTICLE_PLAYER_RONGAMER99091_AURA = §7Rauchgranate PARTICLE_PLAYER_1063 = §7Kreisende Kreise
PARTICLE_PLAYER_10697_AURA = §7Rauchgranate
PARTICLE_TEAM_PULSE_HEART_BEAT = §cHerzschlag PARTICLE_TEAM_PULSE_HEART_BEAT = §cHerzschlag
@@ -0,0 +1,53 @@
/*
* This file is a part of the SteamWar software.
*
* Copyright (C) 2020 SteamWar.de-Serverteam
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package de.steamwar.lobby.particle;
import java.awt.*;
import java.util.Arrays;
import java.util.List;
public class Gradient {
private List<Color> colors;
public Gradient(Color... colors) {
this.colors = Arrays.asList(colors);
}
public Color getColor(double value, double maxValue) {
value /= maxValue / (double) (colors.size() - 1);
return lerpColor(
colors.get((int) value),
colors.get((int) value + 1),
value - (int) value,
1);
}
private Color lerpColor(Color start, Color end, double step, double maxStep) {
double rStep = (end.getRed() - start.getRed()) / maxStep;
double gStep = (end.getGreen() - start.getGreen()) / maxStep;
double bStep = (end.getBlue() - start.getBlue()) / maxStep;
return new Color(start.getRed() + (int) (rStep * step),
start.getGreen() + (int) (gStep * step),
start.getBlue() + (int) (bStep * step));
}
}
@@ -24,6 +24,10 @@ public interface ParticleElement {
return new Particle.DustOptions(randomColor(), randomSize()); return new Particle.DustOptions(randomColor(), randomSize());
} }
default Particle.DustOptions withColor(int r, int g, int b) {
return new Particle.DustOptions(Color.fromRGB(r, g, b), randomSize());
}
default void display(Location location, Player root, boolean onlySelf, boolean onlyOther, Consumer<Player> consumer) { default void display(Location location, Player root, boolean onlySelf, boolean onlyOther, Consumer<Player> consumer) {
if (onlySelf) { if (onlySelf) {
consumer.accept(root); consumer.accept(root);
@@ -53,4 +53,10 @@ public interface WingDesign {
WingDesign PL = new WingDesignImpl(create("/de/steamwar/lobby/particle/decorator/PL-Logo.png")); WingDesign PL = new WingDesignImpl(create("/de/steamwar/lobby/particle/decorator/PL-Logo.png"));
WingDesign PlompaEasterWings = new WingDesignImpl(create("/de/steamwar/lobby/particle/decorator/ECAL-Logo.png")); WingDesign PlompaEasterWings = new WingDesignImpl(create("/de/steamwar/lobby/particle/decorator/ECAL-Logo.png"));
WingDesign ELY_E = new WingDesignImpl(create("/de/steamwar/lobby/particle/decorator/Ely_E.png"));
WingDesign ELY_L = new WingDesignImpl(create("/de/steamwar/lobby/particle/decorator/Ely_L.png"));
WingDesign ELY_Y = new WingDesignImpl(create("/de/steamwar/lobby/particle/decorator/Ely_Y.png"));
WingDesign EV = new WingDesignImpl(create("/de/steamwar/lobby/particle/decorator/EV.png"));
} }
Binary file not shown.

After

Width:  |  Height:  |  Size: 614 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 198 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 182 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 183 B

@@ -1,10 +1,13 @@
package de.steamwar.lobby.particle.elements; package de.steamwar.lobby.particle.elements;
import de.steamwar.lobby.particle.Gradient;
import de.steamwar.lobby.particle.ParticleElement; import de.steamwar.lobby.particle.ParticleElement;
import de.steamwar.lobby.particle.ParticleTickData; import de.steamwar.lobby.particle.ParticleTickData;
import org.bukkit.Location; import org.bukkit.Location;
import org.bukkit.Particle; import org.bukkit.Particle;
import java.awt.*;
public class DustParticle implements ParticleElement { public class DustParticle implements ParticleElement {
private Particle particle; private Particle particle;
@@ -13,32 +16,44 @@ public class DustParticle implements ParticleElement {
private float vz = 0.01f; private float vz = 0.01f;
private double speed = 0.01; private double speed = 0.01;
private int count = 5; private int count = 5;
private Gradient gradient;
public DustParticle(Particle particle) { public DustParticle(Particle particle, Gradient gradient) {
this.particle = particle; this.particle = particle;
this.gradient = gradient;
} }
public DustParticle(Particle particle, float vx, float vy, float vz) { public DustParticle(Particle particle, float vx, float vy, float vz, Gradient gradient) {
this.particle = particle; this.particle = particle;
this.vx = vx; this.vx = vx;
this.vy = vy; this.vy = vy;
this.vz = vz; this.vz = vz;
this.gradient = gradient;
} }
public DustParticle(Particle particle, float vx, float vy, float vz, double speed, int count) { public DustParticle(Particle particle, float vx, float vy, float vz, double speed, int count, Gradient gradient) {
this.particle = particle; this.particle = particle;
this.vx = vx; this.vx = vx;
this.vy = vy; this.vy = vy;
this.vz = vz; this.vz = vz;
this.speed = speed; this.speed = speed;
this.count = count; this.count = count;
this.gradient = gradient;
} }
@Override @Override
public void tick(ParticleTickData particleTickData) { public void tick(ParticleTickData particleTickData) {
Location location = particleTickData.getLocation().add(0.0, 0.2, 0.0); Location location = particleTickData.getLocation().add(0.0, 0.2, 0.0);
Particle.DustOptions dustOptions;
if (gradient != null) {
double result = particleTickData.getDeg() % 360;
Color color = gradient.getColor(result, 360);
dustOptions = withColor(color.getRed(), color.getGreen(), color.getBlue());
} else {
dustOptions = randomParticleDust();
}
display(location, particleTickData.getPlayer(), particleTickData.isOnlySelf(), particleTickData.isOnlyOthers(), player -> { display(location, particleTickData.getPlayer(), particleTickData.isOnlySelf(), particleTickData.isOnlyOthers(), player -> {
player.spawnParticle(particle, location, count, vx, vy, vz, speed, randomParticleDust()); player.spawnParticle(particle, location, count, vx, vy, vz, speed, dustOptions);
}); });
} }
} }
@@ -0,0 +1,61 @@
package de.steamwar.lobby.particle.elements;
import de.steamwar.lobby.particle.ParticleElement;
import de.steamwar.lobby.particle.ParticleTickData;
import de.steamwar.lobby.particle.ParticleTickType;
import org.bukkit.Location;
import org.bukkit.util.Vector;
public class TrippleCircle extends Circle {
private ParticleElement second;
private ParticleElement third;
private double distance;
private double speed;
public TrippleCircle(ParticleElement first, ParticleElement second, ParticleElement third) {
super(first);
this.second = second;
this.distance = 1;
this.speed = 1;
}
public TrippleCircle(ParticleElement first, ParticleElement second, ParticleElement third, double distance, double speed) {
super(first);
this.second = second;
this.distance = distance;
this.speed = speed;
}
@Override
public String attribute() {
return "PARTICLE_ATTRIBUTE_TRI_CIRCLE";
}
@Override
public ParticleTickType tickType() {
if (particleElement.tickType() == second.tickType() && particleElement.tickType() == third.tickType()) {
return particleElement.tickType();
}
return ParticleTickType.MOVE;
}
@Override
public void tick(ParticleTickData particleTickData) {
Location location = particleTickData.getLocation();
Vector vector = new Vector(distance, 0, 0);
vector.rotateAroundY((particleTickData.getDeg() * speed) % 360);
ParticleTickData nParticleTickData = particleTickData.withLocation(location.clone().add(vector));
particleElement.tick(nParticleTickData);
vector.rotateAroundY(120);
nParticleTickData = particleTickData.withLocation(location.clone().add(vector));
second.tick(nParticleTickData);
vector.rotateAroundY(120);
nParticleTickData = particleTickData.withLocation(location.clone().add(vector));
third.tick(nParticleTickData);
}
}
@@ -10,13 +10,15 @@ public class YOffset extends DelegatingParticleElement {
private double minY; private double minY;
private double maxY; private double maxY;
private boolean inverted; private boolean inverted;
private boolean bounce;
public YOffset(ParticleElement particleElement, double speed, double minY, double maxY, boolean inverted) { public YOffset(ParticleElement particleElement, double speed, double minY, double maxY, boolean inverted, boolean bounce) {
super(particleElement); super(particleElement);
this.multiplication = speed; this.multiplication = speed;
this.minY = minY; this.minY = minY;
this.maxY = maxY; this.maxY = maxY;
this.inverted = inverted; this.inverted = inverted;
this.bounce = bounce;
} }
@Override @Override
@@ -26,19 +28,28 @@ public class YOffset extends DelegatingParticleElement {
@Override @Override
public void tick(ParticleTickData particleTickData) { public void tick(ParticleTickData particleTickData) {
double value = ((particleTickData.getDeg() * multiplication) % 360) / 180;
double y; double y;
if (inverted) { if (bounce) {
if (value <= 1) { double value = ((particleTickData.getDeg() * multiplication) % 360) / 180;
y = maxY - (maxY - minY) * value; if (inverted) {
if (value <= 1) {
y = maxY - (maxY - minY) * value;
} else {
y = minY + (maxY - minY) * (value - 1);
}
} else { } else {
y = minY + (maxY - minY) * (value - 1); if (value <= 1) {
y = minY + (maxY - minY) * value;
} else {
y = maxY - (maxY - minY) * (value - 1);
}
} }
} else { } else {
if (value <= 1) { double value = ((particleTickData.getDeg() * multiplication) % 360) / 360;
y = minY + (maxY - minY) * value; if (inverted) {
y = maxY - (maxY - minY) * value;
} else { } else {
y = maxY - (maxY - minY) * (value - 1); y = minY + (maxY - minY) * value;
} }
} }
ParticleTickData current = particleTickData.withLocation(particleTickData.getLocation().clone().add(0, y, 0)); ParticleTickData current = particleTickData.withLocation(particleTickData.getLocation().clone().add(0, y, 0));
@@ -21,7 +21,7 @@ public enum EasterParticle implements ParticleEnum {
new Always(new Floor(new Sneaking(new SimpleParticle(Particle.GLOW_SQUID_INK, 0.4F, 0.9F, 0.4F, 0.01))))) new Always(new Floor(new Sneaking(new SimpleParticle(Particle.GLOW_SQUID_INK, 0.4F, 0.9F, 0.4F, 0.01)))))
), ),
EGG_HUNT_HARD(new ParticleData(Material.RED_CONCRETE_POWDER, "PARTICLE_EGG_HUNT_HARD", ParticleRequirement.EGG_HUNT_HARD, EGG_HUNT_HARD(new ParticleData(Material.RED_CONCRETE_POWDER, "PARTICLE_EGG_HUNT_HARD", ParticleRequirement.EGG_HUNT_HARD,
new Always(new LocationMutator(new DoubleCircle(new DustParticle(Particle.REDSTONE, 0, 0, 0, 0.01, 1), new DustParticle(Particle.REDSTONE, 0, 0, 0, 0.01, 1)), 0, 0.5, 0))) new Always(new LocationMutator(new DoubleCircle(new DustParticle(Particle.REDSTONE, 0, 0, 0, 0.01, 1, null), new DustParticle(Particle.REDSTONE, 0, 0, 0, 0.01, 1, null)), 0, 0.5, 0)))
), ),
EGG_HUNT_EXTREME(new ParticleData(Material.PURPLE_CONCRETE_POWDER, "PARTICLE_EGG_HUNT_EXTREME", ParticleRequirement.EGG_HUNT_EXTREME, EGG_HUNT_EXTREME(new ParticleData(Material.PURPLE_CONCRETE_POWDER, "PARTICLE_EGG_HUNT_EXTREME", ParticleRequirement.EGG_HUNT_EXTREME,
new Always(new LocationMutator(new SimpleParticle(Particle.FALLING_OBSIDIAN_TEAR, 0.5F, 0.1F, 0.5F, 1, 1), 0, 2.2, 0))) new Always(new LocationMutator(new SimpleParticle(Particle.FALLING_OBSIDIAN_TEAR, 0.5F, 0.1F, 0.5F, 1, 1), 0, 2.2, 0)))
@@ -38,7 +38,7 @@ public enum PlayerParticle implements ParticleEnum {
new SimpleParticle(Particle.SNOWBALL, 0.2F, 0.2F ,0.2F, 0.01)) new SimpleParticle(Particle.SNOWBALL, 0.2F, 0.2F ,0.2F, 0.01))
), ),
EFFECT(new ParticleData(Material.GLASS_BOTTLE, "PARTICLE_EFFECT", EFFECT(new ParticleData(Material.GLASS_BOTTLE, "PARTICLE_EFFECT",
new DustParticle(Particle.REDSTONE, 0, 0.2F, 0, 0.01, 5)) new DustParticle(Particle.REDSTONE, 0, 0.2F, 0, 0.01, 5, null))
), ),
CAMPFIRE(new ParticleData(Material.CAMPFIRE, "PARTICLE_CAMPFIRE", CAMPFIRE(new ParticleData(Material.CAMPFIRE, "PARTICLE_CAMPFIRE",
new SimpleParticle(Particle.CAMPFIRE_COSY_SMOKE, 0, 0.2F ,0, 0.01)) new SimpleParticle(Particle.CAMPFIRE_COSY_SMOKE, 0, 0.2F ,0, 0.01))
@@ -1,44 +1,100 @@
package de.steamwar.lobby.particle.particles.custom; package de.steamwar.lobby.particle.particles.custom;
import de.steamwar.lobby.particle.ParticleData; import de.steamwar.lobby.particle.*;
import de.steamwar.lobby.particle.ParticleEnum;
import de.steamwar.lobby.particle.ParticleRequirement;
import de.steamwar.lobby.particle.WingDesign;
import de.steamwar.lobby.particle.elements.*; import de.steamwar.lobby.particle.elements.*;
import de.steamwar.lobby.particle.elements.custom.HearthBeat; import de.steamwar.lobby.particle.elements.custom.HearthBeat;
import de.steamwar.lobby.particle.elements.custom.NonMoving; import de.steamwar.lobby.particle.elements.custom.NonMoving;
import de.steamwar.lobby.particle.elements.custom.PulseShimmer; import de.steamwar.lobby.particle.elements.custom.PulseShimmer;
import de.steamwar.lobby.particle.elements.custom.YOffset;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Getter; import lombok.Getter;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.Particle; import org.bukkit.Particle;
import java.awt.*;
@AllArgsConstructor @AllArgsConstructor
public enum CustomEasterParticle implements ParticleEnum { public enum CustomEasterParticle implements ParticleEnum {
/* PLAYER_1063(new ParticleData(Material.ENDER_PEARL, "PARTICLE_PLAYER_1063", ParticleRequirement.easterEventSpecificPlayer(1063),
Lord_Loading(new ParticleData(Material.ENDER_PEARL, "Loading Test", ParticleRequirement.easterEventSpecificPlayer(1063), new Always(new DoubleCircle(
new Always(new DoubleCircle(new DoubleCircle(new SimpleParticle(Particle.CRIT_MAGIC, 0, 0, 0, 0.01, 1), new DoubleCircle(
new SimpleParticle(Particle.CRIT_MAGIC, 0, 0, 0, 0.01, 1), 0.5, 4), new SimpleParticle(Particle.CRIT_MAGIC, 0, 0, 0, 0.01, 1),
new DoubleCircle(new SimpleParticle(Particle.CRIT_MAGIC, 0, 0, 0, 0.01, 1), new SimpleParticle(Particle.CRIT_MAGIC, 0, 0, 0, 0.01, 1), 0.5, 4),
new SimpleParticle(Particle.CRIT_MAGIC, 0, 0, 0, 0.01, 1), 0.5, 4), 1.5, 1))) new DoubleCircle(
new SimpleParticle(Particle.CRIT_MAGIC, 0, 0, 0, 0.01, 1),
new SimpleParticle(Particle.CRIT_MAGIC, 0, 0, 0, 0.01, 1), 0.5, 4), 1.5, 1)
))
), ),
*/ PLAYER_10916(new ParticleData(Material.TORCHFLOWER, "PARTICLE_PLAYER_10916_AURA", ParticleRequirement.easterEventSpecificPlayer(10916),
Rongamer99091(new ParticleData(Material.GUNPOWDER, "PARTICLE_PLAYER_RONGAMER99091_AURA", ParticleRequirement.easterEventSpecificPlayer(10697), new Always(new NonMoving(new Group(
new LocationMutator(new Circle(new SimpleParticle(Particle.REDSTONE, 0, 0, 0, 0, 1), 0.1, 1), location -> location.add(0, 0.2, 0)),
new LocationMutator(new Circle(new SimpleParticle(Particle.REDSTONE, 0, 0, 0, 0, 1), 0.1, 1), location -> location.add(0, 0.3, 0)),
new LocationMutator(new Circle(new SimpleParticle(Particle.REDSTONE, 0, 0, 0, 0, 1), 0.1, 1), location -> location.add(0, 0.4, 0)),
new LocationMutator(new Circle(new SimpleParticle(Particle.REDSTONE, 0, 0, 0, 0, 1), 0.1, 1), location -> location.add(0, 0.5, 0)),
new LocationMutator(new Circle(new SimpleParticle(Particle.REDSTONE, 0, 0, 0, 0, 1), 0.1, 1), location -> location.add(0, 0.6, 0)),
new LocationMutator(new Circle(new SimpleParticle(Particle.REDSTONE, 0, 0, 0, 0, 1), 0.1, 1), location -> location.add(0, 0.7, 0)),
new LocationMutator(new Circle(new SimpleParticle(Particle.REDSTONE, 0, 0, 0, 0, 1), 0.1, 1), location -> location.add(0, 0.8, 0)),
new LocationMutator(new Circle(new SimpleParticle(Particle.REDSTONE, 0, 0, 0, 0, 1), 0.1, 1), location -> location.add(0, 0.9, 0)),
new LocationMutator(new Circle(new SimpleParticle(Particle.REDSTONE, 0, 0, 0, 0, 1), 0.1, 1), location -> location.add(0, 1.0, 0)),
new LocationMutator(new Circle(new SimpleParticle(Particle.REDSTONE, 0, 0, 0, 0, 1), 0.1, 1), location -> location.add(0, 1.1, 0)),
new LocationMutator(new Circle(new SimpleParticle(Particle.REDSTONE, 0, 0, 0, 0, 1), 0.1, 1), location -> location.add(0, 1.2, 0)),
new LocationMutator(new Circle(new SimpleParticle(Particle.REDSTONE, 0, 0, 0, 0, 1), 0.1, 1), location -> location.add(0, 1.3, 0)),
new LocationMutator(new Circle(new SimpleParticle(Particle.REDSTONE, 0, 0, 0, 0, 1), 0.1, 1), location -> location.add(0, 1.4, 0)),
new LocationMutator(new Circle(new SimpleParticle(Particle.REDSTONE, 0, 0, 0, 0, 1), 0.1, 1), location -> location.add(0, 1.5, 0)),
new LocationMutator(new Circle(new SimpleParticle(Particle.REDSTONE, 0, 0, 0, 0, 1), 0.1, 1), location -> location.add(0, 1.6, 0)),
new LocationMutator(new Circle(new SimpleParticle(Particle.REDSTONE, 0, 0, 0, 0, 1), 0.1, 1), location -> location.add(0, 1.7, 0)),
new LocationMutator(new Circle(new SimpleParticle(Particle.REDSTONE, 0, 0, 0, 0, 1), 0.1, 1), location -> location.add(0, 1.8, 0)),
new LocationMutator(new Circle(new SimpleParticle(Particle.REDSTONE, 0, 0, 0, 0, 1), 0.1, 1), location -> location.add(0, 1.9, 0)),
new LocationMutator(new Circle(new SimpleParticle(Particle.REDSTONE, 0, 0, 0, 0, 1), 0.1, 1), location -> location.add(0, 2.0, 0))
))))
),
PLAYER_10697(new ParticleData(Material.GUNPOWDER, "PARTICLE_PLAYER_10697_AURA", ParticleRequirement.easterEventSpecificPlayer(10697),
new Always(new Sneaking(new Group( new Always(new Sneaking(new Group(
new OnlySelf(new Delayed(new SimpleParticle(Particle.EXPLOSION_HUGE, 0, 0, 0, 0.01, 1), 20)), new OnlySelf(new Delayed(new SimpleParticle(Particle.EXPLOSION_HUGE, 0, 0, 0, 0.01, 1), 20)),
new OnlyOthers(new Delayed(new SimpleParticle(Particle.EXPLOSION_HUGE, 0, 0, 0, 0.01, 1), 2)) new OnlyOthers(new Delayed(new SimpleParticle(Particle.EXPLOSION_HUGE, 0, 0, 0, 0.01, 1), 2))
)))) ))))
), ),
Plompa(new ParticleData(Material.PUFFERFISH_BUCKET, "PARTICLE_PLAYER_PLOMPA", ParticleRequirement.specificPlayer(64), PLAYER_64(new ParticleData(Material.PUFFERFISH_BUCKET, "PARTICLE_PLAYER_64", ParticleRequirement.easterEventSpecificPlayer(64),
new Always(new Delayed(new NonFlying(new Wing(new SimpleParticle(Particle.END_ROD, 0, 0, 0, 0, 1), 0.15, WingDesign.PlompaEasterWings)), 80))) new Always(new Delayed(new NonFlying(new Wing(new SimpleParticle(Particle.END_ROD, 0, 0, 0, 0, 1), 0.15, WingDesign.PlompaEasterWings)), 80)))
), ),
Pulse_EASTER_1(new ParticleData(Material.RED_CANDLE, "PARTICLE_TEAM_PULSE_AURA_1", ParticleRequirement.easterEventSpecificTeam(210), TEAM_210_1(new ParticleData(Material.RED_CANDLE, "PARTICLE_TEAM_PULSE_AURA", ParticleRequirement.easterEventSpecificTeam(210),
new Always(new NonMoving(new PulseShimmer(new SimpleParticle(Particle.FLAME, 0, 0, 0, 0, 1), 80, 2)))) new Always(new NonMoving(new PulseShimmer(new SimpleParticle(Particle.FLAME, 0, 0, 0, 0, 1), 80, 2))))
), ),
Pulse_EASTER_3(new ParticleData(Material.APPLE, "PARTICLE_TEAM_PULSE_HEART_BEAT", ParticleRequirement.easterEventSpecificTeam(210), TEAM_210_2(new ParticleData(Material.APPLE, "PARTICLE_TEAM_PULSE_HEART_BEAT", ParticleRequirement.easterEventSpecificTeam(210),
new Always(new NonFlying(new HearthBeat(new SimpleParticle(Particle.FLAME, 0, 0, 0, 0, 1), 80)))) new Always(new NonFlying(new HearthBeat(new SimpleParticle(Particle.FLAME, 0, 0, 0, 0, 1), 80))))
), ),
PLAYER_153(new ParticleData(Material.OAK_SIGN, "PARTICLE_PLAYER_153", ParticleRequirement.easterEventSpecificPlayer(153),
new Always(new Delayed(new NonFlying(new Group(
new Wing(new SimpleParticle(Particle.VILLAGER_ANGRY, 0, 0, 0, 0, 1), 0.15, WingDesign.ELY_E),
new Wing(new SimpleParticle(Particle.COMPOSTER, 0, 0, 0, 0, 1), 0.15, WingDesign.ELY_L),
new Wing(new SimpleParticle(Particle.CRIT, 0, 0, 0, 0, 1), 0.15, WingDesign.ELY_Y)
)), 80)))
),
// TODO: Implement zSalos! -> Team
// TODO: Implement GroupXyz!
// TODO: Implement minecrafter_133 1817!
// TODO: Implement TheReaper22122!
// TODO: Implement Bosslar!
// TODO: Implement ATOM65!
PLAYER_3266(new ParticleData(Material.CHORUS_FRUIT, "PARTICLE_PLAYER_3266", ParticleRequirement.easterEventSpecificPlayer(3266),
new Always(new NonFlying(new Cloud(new LocationMutator(new TrippleCircle(
new DustParticle(Particle.REDSTONE, new Gradient(Color.CYAN, Color.BLUE, Color.MAGENTA.darker(), Color.RED, Color.YELLOW, Color.GREEN, Color.CYAN)),
new DustParticle(Particle.REDSTONE, new Gradient(Color.CYAN, Color.BLUE, Color.MAGENTA.darker(), Color.RED, Color.YELLOW, Color.GREEN, Color.CYAN)),
new DustParticle(Particle.REDSTONE, new Gradient(Color.CYAN, Color.BLUE, Color.MAGENTA.darker(), Color.RED, Color.YELLOW, Color.GREEN, Color.CYAN)),
0.7,
0.5), location -> location.add(0, 1.2, 0)
)))))
),
// TODO: Implement Gehfxhler!
// TODO: Implement SchwarzerFuerst
// TODO: Implement byVallu
TEAM_158_1(new ParticleData(Material.ENCHANTED_BOOK, "PARTICLE_TEAM_158_1", ParticleRequirement.easterEventSpecificTeam(158),
new Always(new NonFlying(new Delayed(new Wing(new SimpleParticle(Particle.CRIT_MAGIC, 0, 0, 0, 0, 1), 0.2, WingDesign.EV), 80))))
),
TEAM_158_2(new ParticleData(Material.ENDER_EYE, "PARTICLE_TEAM_158_2", ParticleRequirement.easterEventSpecificTeam(158),
new Always(new NonFlying(new YOffset(new DoubleCircle(new SimpleParticle(Particle.SPORE_BLOSSOM_AIR, 0, 0, 0, 0, 1), new SimpleParticle(Particle.SPORE_BLOSSOM_AIR, 0, 0, 0, 0, 1), 0.5, 1), 1, 0, 2, false, false))))
),
; ;
public static ParticleEnum[] particles = values(); public static ParticleEnum[] particles = values();
@@ -16,8 +16,8 @@ public enum CustomPlayerParticle implements ParticleEnum {
Haylim_(new ParticleData(Material.WHITE_CANDLE, "PARTICLE_PLAYER_HAYLIM_AURA", ParticleRequirement.specificPlayer(9426), Haylim_(new ParticleData(Material.WHITE_CANDLE, "PARTICLE_PLAYER_HAYLIM_AURA", ParticleRequirement.specificPlayer(9426),
new Always(new NonMoving(new NonFlying(new Group( new Always(new NonMoving(new NonFlying(new Group(
new DoubleCircle(new YOffset(new SimpleParticle(Particle.ENCHANTMENT_TABLE, 0, 0, 0, 0.01, 5), 40, 0, 2, false), new YOffset(new SimpleParticle(Particle.ENCHANTMENT_TABLE, 0, 0, 0, 0.0,5), 40, 0, 2, true)), new DoubleCircle(new YOffset(new SimpleParticle(Particle.ENCHANTMENT_TABLE, 0, 0, 0, 0.01, 5), 40, 0, 2, false, false), new YOffset(new SimpleParticle(Particle.ENCHANTMENT_TABLE, 0, 0, 0, 0.0,5), 40, 0, 2, true, false)),
new DoubleCircle(new YOffset(new SimpleParticle(Particle.ENCHANTMENT_TABLE, 0, 0, 0, 0.01, 5), 40, 0, 2, true), new YOffset(new SimpleParticle(Particle.ENCHANTMENT_TABLE, 0, 0, 0, 0.0,5), 40, 0, 2, false)) new DoubleCircle(new YOffset(new SimpleParticle(Particle.ENCHANTMENT_TABLE, 0, 0, 0, 0.01, 5), 40, 0, 2, true, false), new YOffset(new SimpleParticle(Particle.ENCHANTMENT_TABLE, 0, 0, 0, 0.0,5), 40, 0, 2, false, false))
))))) )))))
), ),
; ;