From dfb7e63df998a85dcb8549a49f858fa7262311b8 Mon Sep 17 00:00:00 2001 From: yoyosource Date: Fri, 25 Mar 2022 17:28:32 +0100 Subject: [PATCH] Update Event particles --- src/de/steamwar/lobby/LobbySystem.properties | 20 +++- .../lobby/particle/DustSimpleParticle.java | 13 ++- .../particle/decorator/WingParticle.java | 110 ++++++++++++++++++ .../lobby/particle/decorator/WingSW.png | Bin 0 -> 205 bytes .../lobby/particle/decorator/WingSimple2.png | Bin 0 -> 746 bytes .../lobby/particle/decorator/WingSimple4.png | Bin 0 -> 511 bytes .../lobby/particle/decorator/WingSword.png | Bin 0 -> 188 bytes .../particle/decorator/WingSwordCrossed.png | Bin 0 -> 855 bytes .../lobby/particle/decorator/WingWGS.png | Bin 0 -> 184 bytes .../particles/EventParticleParticipation.java | 10 ++ .../particles/EventParticlePlacement.java | 15 ++- .../particles/ServerTeamParticle.java | 8 +- 12 files changed, 168 insertions(+), 8 deletions(-) create mode 100644 src/de/steamwar/lobby/particle/decorator/WingParticle.java create mode 100644 src/de/steamwar/lobby/particle/decorator/WingSW.png create mode 100644 src/de/steamwar/lobby/particle/decorator/WingSimple2.png create mode 100644 src/de/steamwar/lobby/particle/decorator/WingSimple4.png create mode 100644 src/de/steamwar/lobby/particle/decorator/WingSword.png create mode 100644 src/de/steamwar/lobby/particle/decorator/WingSwordCrossed.png create mode 100644 src/de/steamwar/lobby/particle/decorator/WingWGS.png diff --git a/src/de/steamwar/lobby/LobbySystem.properties b/src/de/steamwar/lobby/LobbySystem.properties index 49f4da7..79006d0 100644 --- a/src/de/steamwar/lobby/LobbySystem.properties +++ b/src/de/steamwar/lobby/LobbySystem.properties @@ -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 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 \ No newline at end of file +PARTICLE_EVENT_WATER = §bWasser +PARTICLE_EVENT_WINGS = §fWings +PARTICLE_EVENT_RAIN_CLOUD = §fRegenwolke +PARTICLE_EVENT_WGS = §fWGS +PARTICLE_EVENT_WARGEARCLASH = §fClash \ No newline at end of file diff --git a/src/de/steamwar/lobby/particle/DustSimpleParticle.java b/src/de/steamwar/lobby/particle/DustSimpleParticle.java index bf77930..533b889 100644 --- a/src/de/steamwar/lobby/particle/DustSimpleParticle.java +++ b/src/de/steamwar/lobby/particle/DustSimpleParticle.java @@ -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()); } } diff --git a/src/de/steamwar/lobby/particle/decorator/WingParticle.java b/src/de/steamwar/lobby/particle/decorator/WingParticle.java new file mode 100644 index 0000000..ba07190 --- /dev/null +++ b/src/de/steamwar/lobby/particle/decorator/WingParticle.java @@ -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 . + */ + +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 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 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); + }); + } +} diff --git a/src/de/steamwar/lobby/particle/decorator/WingSW.png b/src/de/steamwar/lobby/particle/decorator/WingSW.png new file mode 100644 index 0000000000000000000000000000000000000000..3f5dc5a86a78d41a86d81fedc16279d011f1195b GIT binary patch literal 205 zcmeAS@N?(olHy`uVBq!ia0vp^oIotf!3HF!v>y2Yq!^2X+?^QKos)S9a~60+7BevL9R^{>Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0)I(FK~y+TwUob0 zvQZSrAAe+nRDyzKwMT>w;$Wad;_RYe|3DZ)YX~8wVK@q|nvUX9kb{a1P9lOt4hDjQ zR7(ZfkHLP}r}sX@OFqQAyx-w^?m6Fc?mge-9?i2bD^tTCJ)V78aJ4 zmeguBuDiQC5qo)g!Rd55FE1~J=XXGZObUs@GZ+k5r>3TGa)dM*jrRBV%jNRZ)04?$ z((CoHSPUbPNPK*J5CzZA&%zkTcL?&)(b3Av3h5LHg+jyOkg^mf`gIH_6be3{uib9v za=C+pgMPnnx7*oHOiY}gpA&-9YPAGeKx_#?fCiZq5=o~>uh%0)SwYt9?d{Rs^73-G z+r7WPN4NF$b-&+_j41H>`bw8(vw3Z8ZFY9{@bJ*(a>0+sPwBiTs?(VW8U3{{QSkmMKBno1VXcFwc7XhcR@xXR-8JW zZhCqe8h7HxR0rvFy3^?hrhtl$Wb-f33jHoFE}os8p$VUNdwZMC5JzT6lGrAb$$GtR zwOVNx#b}Wms8lMM^bMii50pwJRxX7I7|muAl`@&kpP&r3I0<1xgNz{($Dw=-*xK4U zIXSt$zUJ0!QKncdijctR=_yVO2+$ytB0}T%dM=7crBV+M4+ewb`1n|((J(xGhR4T8 z5yhCCoXlpkgdjkJOp1t(L!LB6*lae`X9&^SVzDs64u=EjxjwT%b!Lx|+1%WO23by1 zg7OIb0CUV+W72MJZg{zPZf|er=H|qtg~MS%`vw1W41gAmM%`|=_(L)pjkQ`W5{W1b c)i@;S6Jl#6C32W@{Qv*}07*qoM6N<$g5|tiJOBUy literal 0 HcmV?d00001 diff --git a/src/de/steamwar/lobby/particle/decorator/WingSimple4.png b/src/de/steamwar/lobby/particle/decorator/WingSimple4.png new file mode 100644 index 0000000000000000000000000000000000000000..09b3803034f7e411fe63e11ffcef88c0f2668a21 GIT binary patch literal 511 zcmVPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0hCEZK~y+Tos+*y z0&y6|-*c`;CmR&8ttS5pX|PR5griLyDh!tjZ1)earOVdpPjC=ZiHclYQUV+F&M3^x zlz6-6?M_ZqHDCzA(UtJS1O#SCzV?mx!={b_Q! z3#wKhN!NAKG|k!)#bPmXyWOa~60+7BevL9R^{>gv%S$I4eCQh8l=-biA>Ghb^ zB#5Pm--wr)`K4M6!#WO20Y{TfkJ+~#{@57k>Krbp@pIv`Or3_VYl_pgPISueOj%eg fa3NHXnVI27im2;?2kZX>4QKFl^>bP0l+XkKo^?1c literal 0 HcmV?d00001 diff --git a/src/de/steamwar/lobby/particle/decorator/WingSwordCrossed.png b/src/de/steamwar/lobby/particle/decorator/WingSwordCrossed.png new file mode 100644 index 0000000000000000000000000000000000000000..d0bd2355ff8a81ce6b8b125ab15d0831d52e02e4 GIT binary patch literal 855 zcmV-d1E~CoP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0_;gdK~zXft(84b zVnGy!N5MiH3qVCpq(GyE#t``xBpPd>5u(M)hb9`WjBCX&(Go(a#7+eT1f?)yh_R3# zU}CZY3;V)53~)iSYxXH_&YW}RxpU_Z7cnr> zrl+Udx2VI20?Lf_dOfbcK1%EBKk`pch~MAec|V|ZV`F1CH#dxlc8wPo7Y2iYu}-I} zR;!gt1-HR8rBeZP*VosK6?z&f-$!+JcJ}e{k;&E?A08fXk{iN0N@ug#_-2#IT0=Mu4h;vkPZ(I%a+DU@n-Q`W)-ATsfmdR##pKB6JlXu0h`8rhY=qo+0x|j z@KDy8q|<49lMu)bA+U%-p};C=8QXR3D-DOkvZF~b7?iap__oTLGHz~e%AyeX-@rCw zvk}kF&p$suvxl6YpR*0L-x&V_Y^WPGIu>vsR#sLtI`I1Xy0o-}PK(8o%jNLD#ED>S zZ4C|L;NUNn{1`ISV`@iy0XB4ude`@%$AjKtW$m7sn8d;JJOCObiMfOk4l|-)Yh%_V!W? zOOdC;+zU< 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(); diff --git a/src/de/steamwar/lobby/particle/particles/EventParticlePlacement.java b/src/de/steamwar/lobby/particle/particles/EventParticlePlacement.java index 8d5139b..73e934c 100644 --- a/src/de/steamwar/lobby/particle/particles/EventParticlePlacement.java +++ b/src/de/steamwar/lobby/particle/particles/EventParticlePlacement.java @@ -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(); diff --git a/src/de/steamwar/lobby/particle/particles/ServerTeamParticle.java b/src/de/steamwar/lobby/particle/particles/ServerTeamParticle.java index 86fa05b..fc9d000 100644 --- a/src/de/steamwar/lobby/particle/particles/ServerTeamParticle.java +++ b/src/de/steamwar/lobby/particle/particles/ServerTeamParticle.java @@ -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();