13
0

Particle #4

Zusammengeführt
Lixfel hat 24 Commits von Particle nach master 2022-03-26 16:26:40 +01:00 zusammengeführt
12 geänderte Dateien mit 168 neuen und 8 gelöschten Zeilen
Nur Änderungen aus Commit dfb7e63df9 werden angezeigt - Alle Commits anzeigen

Datei anzeigen

@ -25,6 +25,7 @@ PARTICLE_ATTRIBUTE_BI_CIRCLE = §8-§f Doppel Ring
PARTICLE_ATTRIBUTE_CLOUD = §8-§f Wolke
PARTICLE_ATTRIBUTE_TICK = §8-§f Immer aktiv
PARTICLE_ATTRIBUTE_NON_FLOOR = §8-§f in Luft
PARTICLE_ATTRIBUTE_WING = §8-§f Flügel
PARTICLE_ATTRIBUTE = §eAttribute§7:
PARTICLE_UNLOCKED_BY = §eFreigeschaltet durch
@ -64,6 +65,7 @@ PARTICLE_TOWN = §5Town
PARTICLE_ENCHANTING_CIRCLE = §fEnchanted
PARTICLE_WATER_FIRE = §bWater§7/§cFire
PARTICLE_MAGIC_ENCHANTING = §5Magic§7/§eZauber
PARTICLE_WINGS_EVIL = §5Lila Flügel
PARTICLE_UNLOCKED_BY_WGS_PLACEMENT = §fWarGearSeason 1., 2. oder 3. Platz
Lixfel markierte diese Unterhaltung als gelöst Veraltet
Veraltet
Review

Wäre es hier nicht eleganter, den Namen des Events einfach aus der Datenbank einzufügen?

Wäre es hier nicht eleganter, den Namen des Events einfach aus der Datenbank einzufügen?
Veraltet
Review

Vermutlich, guck ich mir gleich an.

Vermutlich, guck ich mir gleich an.
PARTICLE_UNLOCKED_BY_WGS = §fWarGearSeason
@ -73,8 +75,24 @@ PARTICLE_UNLOCKED_BY_HELLSBELLS_PLACEMENT = §fHellsBells 1., 2. oder 3. Platz
PARTICLE_UNLOCKED_BY_HELLSBELLS = §fHellsBells
PARTICLE_UNLOCKED_BY_UNDERWATER_PLACEMENT = §fUnderwater 1., 2. oder 3. Platz
PARTICLE_UNLOCKED_BY_UNDERWATER = §fUnderwater
PARTICLE_UNLOCKED_BY_ADVENTWARSHIP_PLACEMENT = §fAdvent-WarShip 1., 2. oder 3. Platz
PARTICLE_UNLOCKED_BY_ADVENTWARSHIP = §fAdvent-WarShip
PARTICLE_UNLOCKED_BY_MWGL_PLACEMENT = §fMiniWarGearLiga 1., 2. oder 3. Platz
PARTICLE_UNLOCKED_BY_MWGL = §fMiniWarGearLiga
PARTICLE_UNLOCKED_BY_ABSTURZ_PLACEMENT = §fAbsturz 1., 2. oder 3. Platz
PARTICLE_UNLOCKED_BY_ABSTURZ = §fAbsturz
PARTICLE_UNLOCKED_BY_UNDERWATERMWG_PLACEMENT = §fUnderwaterMWG 1., 2. oder 3. Platz
PARTICLE_UNLOCKED_BY_UNDERWATERMWG = §fUnderwaterMWG
PARTICLE_UNLOCKED_BY_WGS22_PLACEMENT = §fWarGearSeason 1., 2. oder 3. Platz
PARTICLE_UNLOCKED_BY_WGS22 = §fWarGearSeason
PARTICLE_UNLOCKED_BY_WARGEARCLASH_PLACEMENT = §fWargearClash 1., 2. oder 3. Platz
PARTICLE_UNLOCKED_BY_WARGEARCLASH = §fWargearClash
PARTICLE_EVENT_ENCHANTING = §cVerzaubert
PARTICLE_EVENT_CLOUD = §fCloud
PARTICLE_EVENT_SMOKE = §7Smoke
PARTICLE_EVENT_WATER = §bWasser
PARTICLE_EVENT_WINGS = §fWings
PARTICLE_EVENT_RAIN_CLOUD = §fRegenwolke
PARTICLE_EVENT_WGS = §fWGS
PARTICLE_EVENT_WARGEARCLASH = §fClash

Datei anzeigen

@ -30,6 +30,7 @@ public class DustSimpleParticle implements BaseParticle {
private float vy;
private float vz;
private double time = 1;
private int count = 5;
public DustSimpleParticle(ParticleItem particleItem, Particle particle, float vx, float vy, float vz, double time) {
this.particleItem = particleItem;
@ -40,6 +41,16 @@ public class DustSimpleParticle implements BaseParticle {
this.time = time;
}
public DustSimpleParticle(ParticleItem particleItem, Particle particle, float vx, float vy, float vz, double time, int count) {
this.particleItem = particleItem;
this.particle = particle;
this.vx = vx;
this.vy = vy;
this.vz = vz;
this.time = time;
this.count = count;
}
@Override
public ParticleItem getItem() {
return particleItem;
@ -48,6 +59,6 @@ public class DustSimpleParticle implements BaseParticle {
@Override
public void particle(ParticleData particleData) {
Location location = particleData.getLocation().add(0.0, 0.2, 0.0);
particleData.getWorld().spawnParticle(particle, location, 5, vx, vy, vz, time, getParticleDust());
particleData.getWorld().spawnParticle(particle, location, count, vx, vy, vz, time, getParticleDust());
}
}

Datei anzeigen

@ -0,0 +1,110 @@
/*
* This file is a part of the SteamWar software.
*
* Copyright (C) 2022 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.decorator;
import de.steamwar.lobby.particle.BaseParticle;
import de.steamwar.lobby.particle.ParticleData;
import de.steamwar.lobby.particle.ParticleItem;
import lombok.SneakyThrows;
import org.bukkit.Location;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.util.Vector;
import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class WingParticle implements BaseParticle, Listener {
private Map<Player, Integer> playerMap = new HashMap<>();
@EventHandler
public void onPlayerQuit(PlayerQuitEvent event) {
playerMap.remove(event.getPlayer());
}
public enum WingDesign {
SIMPLE("WingSimple4.png"),
COMPLEX("WingSimple2.png"),
SWORD("WingSword.png"),
SW("WingSW.png"),
WGS("WingWGS.png"),
SWORD_CROSSED("WingSwordCrossed.png"),
;
private List<Vector> vectors = new ArrayList<>();
@SneakyThrows
WingDesign(String wingResource) {
BufferedImage bufferedImage = ImageIO.read(WingParticle.class.getResourceAsStream(wingResource));
for (int x = 0; x < bufferedImage.getWidth(); x++) {
for (int y = 0; y < bufferedImage.getHeight(); y++) {
int rgb = bufferedImage.getRGB(x, y);
if (Color.WHITE.getRGB() != rgb) {
vectors.add(new Vector(x - bufferedImage.getWidth() / 2.0, bufferedImage.getHeight() - y - 1.0, 0));
}
}
}
}
}
private BaseParticle particle;
private double size;
private WingDesign wingDesign;
public WingParticle(BaseParticle particle, double size, WingDesign wingDesign) {
this.particle = particle;
this.size = size;
this.wingDesign = wingDesign;
}
@Override
public ParticleItem getItem() {
return particle.getItem().addAttribute("PARTICLE_ATTRIBUTE_WING");
}
@Override
public void particle(ParticleData particleData) {
int currentNumber = playerMap.getOrDefault(particleData.getPlayer(), 0) % 20;
playerMap.put(particleData.getPlayer(), currentNumber + 1);
if (currentNumber != 0) {
return;
}
if (particleData.getPlayer().isGliding()) {
return;
}
wingDesign.vectors.forEach(dVector -> {
Vector vector = new Vector(dVector.getX() * size, 0.6 + dVector.getY() * size - (particleData.getPlayer().isSneaking() ? 0.5 : 0) , 0.5);
vector.rotateAroundY(Math.toRadians(particleData.getPlayer().getLocation().getYaw() * -1));
vector.setX(-vector.getX());
vector.setZ(-vector.getZ());
Location location = particleData.getPlayer().getLocation().clone().add(vector);
ParticleData current = particleData.withLocation(location);
particle.particle(current);
});
}
}

Binäre Datei nicht angezeigt.

Nachher

Breite:  |  Höhe:  |  Größe: 205 B

Binäre Datei nicht angezeigt.

Nachher

Breite:  |  Höhe:  |  Größe: 746 B

Binäre Datei nicht angezeigt.

Nachher

Breite:  |  Höhe:  |  Größe: 511 B

Binäre Datei nicht angezeigt.

Nachher

Breite:  |  Höhe:  |  Größe: 188 B

Binäre Datei nicht angezeigt.

Nachher

Breite:  |  Höhe:  |  Größe: 855 B

Binäre Datei nicht angezeigt.

Nachher

Breite:  |  Höhe:  |  Größe: 184 B

Datei anzeigen

@ -23,6 +23,10 @@ import de.steamwar.lobby.particle.BaseParticle;
import de.steamwar.lobby.particle.ParticleItem;
import de.steamwar.lobby.particle.SimpleParticle;
import de.steamwar.lobby.particle.decorator.CircleParticle;
import de.steamwar.lobby.particle.decorator.TickParticle;
import de.steamwar.lobby.particle.decorator.WingParticle;
import de.steamwar.lobby.particle.group.ParticleGroup;
import de.steamwar.lobby.particle.mutator.LocationParticleMutator;
import lombok.AllArgsConstructor;
import lombok.Getter;
import org.bukkit.Particle;
@ -37,6 +41,12 @@ public enum EventParticleParticipation implements ParticleEnum {
AirshipEvent(26, new SimpleParticle(new ParticleItem(SNOW_BLOCK, "PARTICLE_EVENT_CLOUD", "PARTICLE_UNLOCKED_BY_AIRSHIPEVENT"), Particle.CLOUD)),
HellsBellsWs(28, new CircleParticle(new SimpleParticle(new ParticleItem(TNT, "PARTICLE_EVENT_SMOKE", "PARTICLE_UNLOCKED_BY_HELLSBELLS"), Particle.CAMPFIRE_COSY_SMOKE, 0, 0, 0, 0.01))),
Underwater(31, new SimpleParticle(new ParticleItem(PRISMARINE_BRICKS, "PARTICLE_EVENT_WATER", "PARTICLE_UNLOCKED_BY_UNDERWATER"), Particle.DRIP_WATER)),
AdventWarShip(32, new ParticleGroup(new ParticleItem(PRISMARINE_WALL, "PARTICLE_EVENT_WATER", "PARTICLE_UNLOCKED_BY_ADVENTWARSHIP_PLACEMENT"), new SimpleParticle(null, Particle.DRIP_WATER), new SimpleParticle(null, Particle.WATER_WAKE, 0.2F, 0.2F, 0.2F, 0.01))),
MiniWarGearLiga(33, new CircleParticle(new SimpleParticle(new ParticleItem(PRISMARINE_SLAB, "PARTICLE_EVENT_WATER", "PARTICLE_UNLOCKED_BY_MWGL"), Particle.WATER_WAKE, 0, 0, 0, 0))),
// Absturz(34, null),
UnderwaterMWG(35, new TickParticle(new LocationParticleMutator(new ParticleGroup(new ParticleItem(BLUE_CARPET, "PARTICLE_EVENT_RAIN_CLOUD", "PARTICLE_UNLOCKED_BY_UNDERWATERMWG"), new SimpleParticle(null, Particle.CLOUD, 0.3F, 0.1F, 0.3F, 0.01), new SimpleParticle(null, Particle.WATER_WAKE, 0.3F, 0.1F, 0.3F, 0.01), new LocationParticleMutator(new SimpleParticle(null, Particle.DRIP_WATER, 0.3F, 0.0F, 0.3F, 0.01), location -> location.subtract(0, 0.2, 0))), location -> location.add(0, 2.2, 0)))),
WarGearSeason2022(37, new TickParticle(new WingParticle(new SimpleParticle(new ParticleItem(DIAMOND_SWORD, "PARTICLE_EVENT_WINGS", "PARTICLE_UNLOCKED_BY_WGS22"), Particle.DRAGON_BREATH, 0, 0, 0, 0, 1), 0.15, WingParticle.WingDesign.COMPLEX))),
// WargearClash(38, null),
;
public static EventParticleParticipation[] particles = values();

Datei anzeigen

@ -24,6 +24,9 @@ import de.steamwar.lobby.particle.ParticleItem;
import de.steamwar.lobby.particle.SimpleParticle;
import de.steamwar.lobby.particle.decorator.CircleParticle;
import de.steamwar.lobby.particle.decorator.CloudParticle;
import de.steamwar.lobby.particle.decorator.TickParticle;
import de.steamwar.lobby.particle.decorator.WingParticle;
import de.steamwar.lobby.particle.group.ParticleGroup;
import de.steamwar.lobby.particle.mutator.LocationParticleMutator;
import lombok.AllArgsConstructor;
import lombok.Getter;
@ -35,10 +38,16 @@ import static org.bukkit.Material.*;
@Getter
public enum EventParticlePlacement implements ParticleEnum {
WarGearSeason(22, new int[]{12, 285, 54}, new CloudParticle(new CircleParticle(new LocationParticleMutator(new SimpleParticle(new ParticleItem(ENCHANTING_TABLE, "PARTICLE_EVENT_ENCHANTING", "PARTICLE_UNLOCKED_BY_WGS_PLACEMENT"), Particle.ENCHANTMENT_TABLE), location -> location.add(0, 1.1, 0))))),
AirshipEvent(26, new int[]{205, 9, 54, 120, 292}, new CircleParticle(new LocationParticleMutator(new SimpleParticle(new ParticleItem(SNOWBALL, "PARTICLE_EVENT_CLOUD", "PARTICLE_UNLOCKED_BY_AIRSHIPEVENT_PLACEMENT"), Particle.CLOUD), location -> location.add(0, 2.2, 0)))),
HellsBellsWs(28, new int[]{205, 9, 11}, new CloudParticle(new CircleParticle(new LocationParticleMutator(new SimpleParticle(new ParticleItem(TNT_MINECART, "PARTICLE_EVENT_SMOKE", "PARTICLE_UNLOCKED_BY_HELLSBELLS_PLACEMENT"), Particle.CAMPFIRE_COSY_SMOKE), location -> location.add(0, 2.2, 0))))),
WarGearSeason(22, new int[]{12, 285, 54}, new CloudParticle(new CircleParticle(new LocationParticleMutator(new SimpleParticle(new ParticleItem(ENCHANTING_TABLE, "PARTICLE_EVENT_ENCHANTING", "PARTICLE_UNLOCKED_BY_WGS_PLACEMENT"), Particle.ENCHANTMENT_TABLE, 0, 0, 0, 0.01), location -> location.add(0, 1.1, 0))))),
AirshipEvent(26, new int[]{205, 9, 54, 120, 292}, new CircleParticle(new LocationParticleMutator(new SimpleParticle(new ParticleItem(SNOWBALL, "PARTICLE_EVENT_CLOUD", "PARTICLE_UNLOCKED_BY_AIRSHIPEVENT_PLACEMENT"), Particle.CLOUD, 0, 0, 0, 0.01), location -> location.add(0, 2.2, 0)))),
HellsBellsWs(28, new int[]{205, 9, 11}, new CloudParticle(new CircleParticle(new LocationParticleMutator(new SimpleParticle(new ParticleItem(TNT_MINECART, "PARTICLE_EVENT_SMOKE", "PARTICLE_UNLOCKED_BY_HELLSBELLS_PLACEMENT"), Particle.CAMPFIRE_COSY_SMOKE, 0, 0, 0, 0.01), location -> location.add(0, 2.2, 0))))),
Underwater(31, new int[]{9, 210, 520}, new CloudParticle(new SimpleParticle(new ParticleItem(PRISMARINE_SHARD, "PARTICLE_EVENT_WATER", "PARTICLE_UNLOCKED_BY_UNDERWATER_PLACEMENT"), Particle.DRIP_WATER))),
AdventWarShip(32, new int[]{9, 205, 210}, new TickParticle(new LocationParticleMutator(new CircleParticle(new ParticleGroup(new ParticleItem(PRISMARINE_CRYSTALS, "PARTICLE_EVENT_WATER", "PARTICLE_UNLOCKED_BY_ADVENTWARSHIP"), new SimpleParticle(null, Particle.DRIP_WATER), new SimpleParticle(null, Particle.WATER_WAKE, 0.2F, 0.2F, 0.2F, 0.01))), location -> location.add(0, 1.1, 0)))),
MiniWarGearLiga(33, new int[]{9, 34, 205}, new TickParticle(new WingParticle(new SimpleParticle(new ParticleItem(IRON_SWORD, "PARTICLE_EVENT_WINGS", "PARTICLE_UNLOCKED_BY_MWGL_PLACEMENT"), Particle.WATER_WAKE, 0, 0, 0, 0, 1), 0.05, WingParticle.WingDesign.SWORD))),
Absturz(34, new int[]{210, 205, 527, 286}, new TickParticle(new WingParticle(new SimpleParticle(new ParticleItem(FEATHER, "PARTICLE_EVENT_WINGS", "PARTICLE_UNLOCKED_BY_ABSTURZ_PLACEMENT"), Particle.CRIT_MAGIC, 0, 0, 0, 0, 1), 0.15, WingParticle.WingDesign.SIMPLE))),
UnderwaterMWG(35, new int[]{9, 210}, new TickParticle(new WingParticle(new SimpleParticle(new ParticleItem(CYAN_CARPET, "PARTICLE_EVENT_RAIN_CLOUD", "PARTICLE_UNLOCKED_BY_UNDERWATERMWG_PLACEMENT"), Particle.CRIT_MAGIC, 0, 0, 0, 0, 1), 0.15, WingParticle.WingDesign.SW))),
WarGearSeason2022(37, new int[]{}, new TickParticle(new WingParticle(new SimpleParticle(new ParticleItem(DIAMOND_HELMET, "PARTICLE_EVENT_WGS", "PARTICLE_UNLOCKED_BY_WGS22_PLACEMENT"), Particle.FIREWORKS_SPARK, 0, 0, 0, 0, 1), 0.15, WingParticle.WingDesign.WGS))),
WargearClash(38, new int[]{210, 158, 167, 286}, new TickParticle(new WingParticle(new SimpleParticle(new ParticleItem(GOLDEN_SWORD, "PARTICLE_EVENT_WARGEARCLASH", "PARTICLE_UNLOCKED_BY_WARGEARCLASH_PLACEMENT"), Particle.CRIT_MAGIC, 0, 0, 0, 0, 1), 0.1, WingParticle.WingDesign.SWORD_CROSSED))),
;
public static EventParticlePlacement[] particles = values();

Datei anzeigen

@ -25,6 +25,7 @@ import de.steamwar.lobby.particle.SimpleParticle;
import de.steamwar.lobby.particle.decorator.CircleParticle;
import de.steamwar.lobby.particle.decorator.CloudParticle;
import de.steamwar.lobby.particle.decorator.TickParticle;
import de.steamwar.lobby.particle.decorator.WingParticle;
import de.steamwar.lobby.particle.mutator.LocationParticleMutator;
import lombok.AllArgsConstructor;
import lombok.Getter;
@ -42,15 +43,15 @@ public enum ServerTeamParticle implements ParticleEnum {
FLAME(new SimpleParticle(new ParticleItem(FLINT_AND_STEEL, "PARTICLE_FLAME", "PARTICLE_UNLOCKED_BY_SERVER_TEAM"), Particle.FLAME, 0F, 0.2F, 0F, 0.01)),
END_ROD(new SimpleParticle(new ParticleItem(Material.END_ROD, "PARTICLE_END_ROD", "PARTICLE_UNLOCKED_BY_SERVER_TEAM"), Particle.END_ROD, 0.2F, 0.2F, 0.2F, 0.01)),
CLOUD(new CloudParticle(new SimpleParticle(new ParticleItem(WHITE_WOOL, "PARTICLE_CLOUD", "PARTICLE_UNLOCKED_BY_SERVER_TEAM"), Particle.CLOUD))),
TOTEM(new CloudParticle(new SimpleParticle(new ParticleItem(TOTEM_OF_UNDYING, "PARTICLE_TOTEM", "PARTICLE_UNLOCKED_BY_SERVER_TEAM"), Particle.TOTEM))),
TOTEM(new CloudParticle(new SimpleParticle(new ParticleItem(TOTEM_OF_UNDYING, "PARTICLE_TOTEM", "PARTICLE_UNLOCKED_BY_SERVER_TEAM"), Particle.TOTEM, 0.2F, 0.2F, 0.2F, 0.01))),
ENCHANTING_CLOUD(new CloudParticle(new SimpleParticle(new ParticleItem(WHITE_DYE, "PARTICLE_ENCHANTING", "PARTICLE_UNLOCKED_BY_SERVER_TEAM"), Particle.ENCHANTMENT_TABLE))),
FLAME_CLOUD(new CloudParticle(new SimpleParticle(new ParticleItem(FIRE_CORAL_BLOCK, "PARTICLE_FLAME", "PARTICLE_UNLOCKED_BY_SERVER_TEAM"), Particle.FLAME))),
SNEEZE_CLOUD(new CloudParticle(new SimpleParticle(new ParticleItem(LIME_SHULKER_BOX, "PARTICLE_SNEEZE", "PARTICLE_UNLOCKED_BY_SERVER_TEAM"), Particle.SNEEZE))),
SLIME_CLOUD(new CloudParticle(new SimpleParticle(new ParticleItem(GREEN_SHULKER_BOX, "PARTICLE_SLIME", "PARTICLE_UNLOCKED_BY_SERVER_TEAM"), Particle.SLIME))),
SMOKE_CLOUD(new CloudParticle(new SimpleParticle(new ParticleItem(DEAD_BRAIN_CORAL_BLOCK, "PARTICLE_SMOKE", "PARTICLE_UNLOCKED_BY_SERVER_TEAM"), Particle.CAMPFIRE_COSY_SMOKE))),
SMOKE_CLOUD(new CloudParticle(new SimpleParticle(new ParticleItem(DEAD_BRAIN_CORAL_BLOCK, "PARTICLE_SMOKE", "PARTICLE_UNLOCKED_BY_SERVER_TEAM"), Particle.CAMPFIRE_COSY_SMOKE, 0.2F, 0.2F, 0.2F, 0.01))),
TOWN_CLOUD(new CloudParticle(new SimpleParticle(new ParticleItem(FIREWORK_STAR, "PARTICLE_TOWN", "PARTICLE_UNLOCKED_BY_SERVER_TEAM"), Particle.TOWN_AURA))),
FLAME_CIRCLE(new CircleParticle(new LocationParticleMutator(new SimpleParticle(new ParticleItem(MAGMA_BLOCK, "PARTICLE_FLAME", "PARTICLE_UNLOCKED_BY_SERVER_TEAM"), Particle.FLAME, 0F, 0F, 0F, 0.01), location -> location.add(0, 1.1, 0)))),
ENCHANTING_CIRCLE(new CircleParticle(new LocationParticleMutator(new SimpleParticle(new ParticleItem(WHITE_DYE, "PARTICLE_ENCHANTING_CIRCLE", "PARTICLE_UNLOCKED_BY_SERVER_TEAM"), Particle.ENCHANTMENT_TABLE, 0F, 0F, 0F, 0.01), location -> location.add(0, 1.1, 0)))),
ENCHANTING_CIRCLE(new CircleParticle(new LocationParticleMutator(new SimpleParticle(new ParticleItem(WHITE_DYE, "PARTICLE_ENCHANTING_CIRCLE", "PARTICLE_UNLOCKED_BY_SERVER_TEAM"), Particle.ENCHANTMENT_TABLE, 0.2F, 0.2F, 0.2F, 0.01), location -> location.add(0, 1.1, 0)))),
NOTES_CIRCLE(new CircleParticle(new LocationParticleMutator(new SimpleParticle(new ParticleItem(NOTE_BLOCK, "PARTICLE_NOTES", "PARTICLE_UNLOCKED_BY_SERVER_TEAM"), Particle.NOTE, 0F, 0F, 0F, 0.01), location -> location.add(0, 2.2, 0)))),
WATER_FIRE(new LocationParticleMutator(new CircleParticle(new ParticleItem(GUARDIAN_SPAWN_EGG, "PARTICLE_WATER_FIRE", "PARTICLE_UNLOCKED_BY_SERVER_TEAM"), new SimpleParticle(null, Particle.DRIP_WATER, 0.0F, 0.0F, 0.0F, 0.01), new SimpleParticle(null, Particle.DRIP_LAVA, 0.0F, 0.0F, 0.0F, 0.01)), location -> location.add(0, 1.1, 0))),
WATER_FIRE_ALWAYS(new TickParticle(new LocationParticleMutator(new CircleParticle(new ParticleItem(MAGMA_CUBE_SPAWN_EGG, "PARTICLE_WATER_FIRE", "PARTICLE_UNLOCKED_BY_SERVER_TEAM"), new SimpleParticle(null,Particle.DRIP_WATER, 0.0F, 0.0F, 0.0F, 0.01), new SimpleParticle(null,Particle.DRIP_LAVA, 0.0F, 0.0F, 0.0F, 0.01)), location -> location.add(0, 1.1, 0)))),
@ -61,6 +62,7 @@ public enum ServerTeamParticle implements ParticleEnum {
FIREWORK_CLOUD_CIRCLE(new CloudParticle(new CircleParticle(new LocationParticleMutator(new SimpleParticle(new ParticleItem(FIREWORK_ROCKET, "PARTICLE_FIREWORK", "PARTICLE_UNLOCKED_BY_SERVER_TEAM"), Particle.FIREWORKS_SPARK, 0.0F, 0.0F, 0.0F, 0.01), location -> location.add(0, 1.1, 0))))),
WATER_CLOUD_CIRCLE(new CloudParticle(new CircleParticle(new LocationParticleMutator(new SimpleParticle(new ParticleItem(CYAN_DYE, "PARTICLE_WATER", "PARTICLE_UNLOCKED_BY_SERVER_TEAM"), Particle.WATER_WAKE, 0.0F, 0.0F, 0.0F, 0.01), location -> location.add(0, 1.1, 0))))),
ENCHANTING_DOUBLE_CIRCLE(new TickParticle(new LocationParticleMutator(new CircleParticle(new ParticleItem(BUBBLE_CORAL_BLOCK, "PARTICLE_ENCHANTING", "PARTICLE_UNLOCKED_BY_SERVER_TEAM"), new SimpleParticle(null, Particle.ENCHANTMENT_TABLE, 0.0F, 0.0F, 0.0F, 0.01), new SimpleParticle(null, Particle.ENCHANTMENT_TABLE, 0.0F, 0.0F, 0.0F, 0.01)), location -> location.add(0, 2.2, 0)))),
EVIL_WINGS(new TickParticle(new WingParticle(new SimpleParticle(new ParticleItem(PURPUR_SLAB, "PARTICLE_WINGS_EVIL", "PARTICLE_UNLOCKED_BY_SERVER_TEAM"), Particle.SPELL_WITCH, 0, 0, 0, 0, 1), 0.15, WingParticle.WingDesign.SIMPLE))),
;
public static ParticleEnum[] particles = values();