From b9958ce16fe0319ca4d0c349104f42bbabff42fd Mon Sep 17 00:00:00 2001 From: Electroblob77 <35599699+Electroblob77@users.noreply.github.com> Date: Sat, 18 Apr 2020 18:06:22 +0100 Subject: [PATCH] Add cloud particle from TF spell pack, and change smoke bomb to use it instead of vanilla's large_smoke particles --- .../wizardry/client/ClientProxy.java | 1 + .../client/particle/ParticleCloud.java | 52 ++++++++++++++++++ .../entity/projectile/EntitySmokeBomb.java | 11 ++-- .../wizardry/util/ParticleBuilder.java | 2 + .../ebwizardry/textures/particle/cloud_0.png | Bin 0 -> 2006 bytes .../ebwizardry/textures/particle/cloud_1.png | Bin 0 -> 2038 bytes .../ebwizardry/textures/particle/cloud_2.png | Bin 0 -> 1988 bytes .../ebwizardry/textures/particle/cloud_3.png | Bin 0 -> 2084 bytes 8 files changed, 60 insertions(+), 6 deletions(-) create mode 100644 src/main/java/electroblob/wizardry/client/particle/ParticleCloud.java create mode 100644 src/main/resources/assets/ebwizardry/textures/particle/cloud_0.png create mode 100644 src/main/resources/assets/ebwizardry/textures/particle/cloud_1.png create mode 100644 src/main/resources/assets/ebwizardry/textures/particle/cloud_2.png create mode 100644 src/main/resources/assets/ebwizardry/textures/particle/cloud_3.png diff --git a/src/main/java/electroblob/wizardry/client/ClientProxy.java b/src/main/java/electroblob/wizardry/client/ClientProxy.java index 989589dc..da53f756 100644 --- a/src/main/java/electroblob/wizardry/client/ClientProxy.java +++ b/src/main/java/electroblob/wizardry/client/ClientProxy.java @@ -333,6 +333,7 @@ public class ClientProxy extends CommonProxy { ParticleWizardry.registerParticle(Type.BEAM, ParticleBeam::new); ParticleWizardry.registerParticle(Type.BLOCK_HIGHLIGHT, ParticleBlockHighlight::new); ParticleWizardry.registerParticle(Type.BUFF, ParticleBuff::new); + ParticleWizardry.registerParticle(Type.CLOUD, ParticleCloud::new); ParticleWizardry.registerParticle(Type.DARK_MAGIC, ParticleDarkMagic::new); ParticleWizardry.registerParticle(Type.DUST, ParticleDust::new); ParticleWizardry.registerParticle(Type.FLASH, ParticleFlash::new); diff --git a/src/main/java/electroblob/wizardry/client/particle/ParticleCloud.java b/src/main/java/electroblob/wizardry/client/particle/ParticleCloud.java new file mode 100644 index 00000000..f59ebbf7 --- /dev/null +++ b/src/main/java/electroblob/wizardry/client/particle/ParticleCloud.java @@ -0,0 +1,52 @@ +package electroblob.wizardry.client.particle; + +import net.minecraft.util.ResourceLocation; +import net.minecraft.util.math.MathHelper; +import net.minecraft.world.World; +import net.minecraftforge.client.event.TextureStitchEvent; +import net.minecraftforge.fml.common.Mod; +import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; +import net.minecraftforge.fml.relauncher.Side; + +@Mod.EventBusSubscriber(Side.CLIENT) +public class ParticleCloud extends ParticleWizardry { + + private static final ResourceLocation[] TEXTURES = generateTextures("cloud", 4); + + public ParticleCloud(World world, double x, double y, double z){ + + super(world, x, y, z, TEXTURES[world.rand.nextInt(TEXTURES.length)]); + + this.setRBGColorF(1, 1, 1); + this.particleMaxAge = 48 + this.rand.nextInt(12); + this.particleScale *= 6; + this.setGravity(false); + this.setAlphaF(0); + this.canCollide = false; + this.shaded = true; + } + + @Override + public boolean shouldDisableDepth(){ + return true; + } + + @Override + public void onUpdate(){ + + super.onUpdate(); + + // Fading + float fadeTime = this.particleMaxAge * 0.3f; + this.setAlphaF(MathHelper.clamp(Math.min(this.particleAge / fadeTime, (this.particleMaxAge - this.particleAge) / fadeTime), 0, 1)); + + } + + @SubscribeEvent + public static void onTextureStitchEvent(TextureStitchEvent.Pre event){ + for(ResourceLocation texture : TEXTURES){ + event.getMap().registerSprite(texture); + } + } + +} diff --git a/src/main/java/electroblob/wizardry/entity/projectile/EntitySmokeBomb.java b/src/main/java/electroblob/wizardry/entity/projectile/EntitySmokeBomb.java index 1339c929..ae0c078f 100644 --- a/src/main/java/electroblob/wizardry/entity/projectile/EntitySmokeBomb.java +++ b/src/main/java/electroblob/wizardry/entity/projectile/EntitySmokeBomb.java @@ -39,13 +39,12 @@ public class EntitySmokeBomb extends EntityBomb { this.world.spawnParticle(EnumParticleTypes.EXPLOSION_LARGE, this.posX, this.posY, this.posZ, 0, 0, 0); for(int i = 0; i < 60 * blastMultiplier; i++){ - - this.world.spawnParticle(EnumParticleTypes.SMOKE_LARGE, - this.posX + (this.rand.nextDouble() * 4 - 2) * blastMultiplier, - this.posY + (this.rand.nextDouble() * 4 - 2) * blastMultiplier, - this.posZ + (this.rand.nextDouble() * 4 - 2) * blastMultiplier, 0, 0, 0); - + float brightness = rand.nextFloat() * 0.3f; + ParticleBuilder.create(Type.CLOUD, rand, posX, posY, posZ, 2*blastMultiplier, false) + .clr(brightness, brightness, brightness).spawn(world); + + brightness = rand.nextFloat() * 0.3f; ParticleBuilder.create(Type.DARK_MAGIC, rand, posX, posY, posZ, 2*blastMultiplier, false) .clr(brightness, brightness, brightness).spawn(world); } diff --git a/src/main/java/electroblob/wizardry/util/ParticleBuilder.java b/src/main/java/electroblob/wizardry/util/ParticleBuilder.java index e0a1e8e2..fa6e6660 100644 --- a/src/main/java/electroblob/wizardry/util/ParticleBuilder.java +++ b/src/main/java/electroblob/wizardry/util/ParticleBuilder.java @@ -98,6 +98,8 @@ public final class ParticleBuilder { /** Helical animated 'buffing' particle.
Defaults:J90Wt7=7URu)a`C!0AV#%<=xU>(?9G+y9@W!5$EL>+QE0 z>gz(U?q9tsq%`#s{{)qji@yI`&CSjIdyV|(gHKx)Ud%91GkX8`N`}d<)mm>a9%+bL zdrjwbk+pB|wCU3|yO=`n9{;QF_Uo@*<-E%|X4O-d|2{UOdi6gA_B~x4=RfaZKa&<& z<{UW<6eB5$E3UupIC0vE<9TCvxbKTC8@`vP;1e(XLV-@V9!afZ%miC#Aun~Di4o^ewck4fzL9+Azd zI7PALyVY~Pm9M^vibfyk@6537TC{algiqOqy?cFUEt_LsKW}g7r~jM>GfbR9bC1@v z2&`LQc7J|DK&Wx(*+m+^tS(4uXKuf}C2DPL+>iJJckbO&J72u(uHN6e`HM6(PET5O z;OD6ZeP(m!(gUkHetbN=NaJ1Kq8Dk|Z+|nEm6yN#{+oxbSv;npth}64al&)UK#^X@ z9jqnaYO1U^u n#4nW@l$#eD&%TbLG7Gyo!5{N)(sm=K4OeuuEIJ zSM*2vv{VsS!xd6|d%o{yIAU4u6q>*BnqADar_znr_8CV7itJPBzEo{5mtXOIZ?PVi z;+KZ{E3dy=_ZZ$cJhrDYFYjHxv9WRN^BCQhf=d#`HOa}3nYFdG?b+6?xtir3^7Xev zu!~)8Pvr`YuER>3A}0ngJ4~B4EvNLthSbW1Hr4M#Lu>cnuMY^F?>Xs7cXd$dDvhr7 zk=gr$R$mQkJN)qZp6})i+ShK~K7KM_^;N&4g)wEj? *n2KEw9Usv`gjJ!e$jKx}s#S9GW&7LlfArXg{PWSCd z2^T$H|9sEySEZ%<*R7lP?q`SbwKEo+FODR57 #>Bz3bIHz9)|l zEPl1GzuNBK|IdX>Z@;z5o5HZ;)%Iy-224c{ ee&9S+u%BT*gB^bilOGfBf*CifZ5D4~^y#%&vt-|l zo%dHvd1frXkMT{{3Cqx0&L6QH2ODNLvb &a`}AyJ}VR zfy&UotOe2qvJNf<=MvN2ynSmZ!^f#;60-H_o&PUO{`@GsWMV2 ;uI69sk3L#7F2Mz(Ys_~YbL{Yx=VOz*h1bkGkvB1EPo!ZUl+5p=&+yY z?)(Wqe^!>iyJMMYBBi6FGeO1k?+gC}_uUs?eBQ7{ZE2Xm4uL~=5A0p_t7p}vmnAPs ztX62L`_G%BCCk@7Lo!h0;okJz++LgW{09srcnmg6?Q(Jvn7D0Ko%D}#5!cHh)AP39 zE;_eU;83T)A>nhD*I$;rGceYR-{&()Wrk#TclQj*%vpYi ?wz^U@%V?nYhX>h%P-f!8i@+V8>OK)qLeNPPV|3PSy#XJ;ipfZCU)KL zGMVk`#POwSuZK%s&{YqYTWR0yp5K}58rYM~rxSK<#>}~<# &`PQnDAEIG-t5aN*Ugv&+s~ zPkVg4|N6{_zyAK48MnUt;+c1IeALR@1-3QBG#WePrD-c&GB!T;*f2Uen*GpEzoj>G z7Oh&5m3zkd!1adiQvDN+;SKt;X3mhDe6mI7^o<)gD#A~l?b)OwD0t@0Q@6z%g^wE^ zn0xik0xlg!d6r!Vd>NMe&z~3dCy#f9(W)7 ^>U}xn zkwu!(OarN2jnk7J7W~-O>oFE6`*w1A`g32;%8<1ZJZw`^J!OvX+PHCHYUHHnmG-AM9ku8yZ>+QB zZxL`hTwO0ULEunx!|i+b=1sdTaL8ndyXd?{8X0D@+20*6JoD|F+1s++=bF3&MO0k_ z&vbh%p6CAh<#dg%IPr (*`B zzu%vuag)yDlPN{k1}2+R6GRKDGPI^?bj|Bn^kU!5ees(uTO0yKW=P(vzIOfk^4Gt# zx|$vqbbOZ+Oe` ##XCYv7av+-E7faJ`YJ@D%c;Dq z?8K&=uHT L_)YgBg}&rtk6%`@2v$n{ z*xJ#v`jPou_N=C-tA1@)@s#=SsKVx7ZJ-E0^K^4_b9-f_u#L5HGuCrP9u9Kex_|%q z0*e%*nGAm%LX96xzsl$yT6+DAl<1e8)>HhfWccJ)*;MLuEpp%U{lDl${TVlfuP)fR za8>5&tGifue*OKI-k2RZ&C>WbtJq|f$hC8B@hI}F3i_|PK-8%sYuf|Q?YHN8U%t{R zutkF_Wb2vFf0!H8JTJ-iAJ^~pIBZ#N=6m^Q-1_gcir>YB*6!6g-F+bPffvWa#-&S_ zR zw8DUz1O|H12L-eXu=LRA;$>h^t`Mvhd@Z^K7$@7S=3O%i>V% ze_V0%%od%~lhdv-=dqsaJn{XJMPI}G%J=?V9v|*~cjnk0KI8wx3paz8w`Lg4Y;pdo zx}N8<^VM9N&3nS;_Wh4){j&4*_4V8zq>Y6i6tTXx4L!G>dA9K$ZifHNrj-(9{?}$V RF)%PNc)I$ztaD0e0swn0-L3!t literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/ebwizardry/textures/particle/cloud_2.png b/src/main/resources/assets/ebwizardry/textures/particle/cloud_2.png new file mode 100644 index 0000000000000000000000000000000000000000..7e49bfcc775dc803f8a9f928677013bfe7568c62 GIT binary patch literal 1988 zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4mJh`hT^KKFANL}Y)RhkE(~`;@T(}tTm}XP z&H|6fVg?3oVGw3ym^DX&fq{XM9T6{Rtzlkb;Gd{>y3x2KGQt7srr@!)vGecBHzC z9 C 5-c`-z*A@Kcov*y12xBzGu(C z o>#up4yYIDd-LvH*&>aodlr4kbBehh?EOCZWD55S`6v}9 znd4JZBbyoj@cr0g`0V XM>)>hReg8L7aHsSR>+_$59o$`{9GEjAvZWnD5?8-@^X5yB zVbuJ9(5*VBGpy$B c8~`^xXt@sZO4Bd1+V+SuX55!EOk!hWOVT&?_r zHtD 03%n7Z~52{QPI1&H4Oq_uS9ztg2@< zv1+QRc%OYer`yB6FWJn@%x?GAt*+Z|AFcM^U*93-qbB^xX8FyWNy{`HcD$0T6s$NT zu{l(Dv( FP9 zkw%i$+ (^h-+FEcfu_v-= zT56{uTd1u`+S*hbxyxBwPkf%UNQ2>>_(XM=C#r%!r*GZHFm0Jy%YtjS!g%v~5)C8* zrm0?jIpt)^p$eP0-r`3Vb}Vu28#^v!ZS}Z3#iGx$`kRi@C*23liY<>7ThelCLqp@` z7ie^CE}hfOv8t=XVE%c}NiAi&Yc<68L}zb}`ck#m%6>v> o&)-_?gH3|J$8q?Ca*(oS*5Vw)M5$lfC~X zK2$%*Jdm~dX3v~r-sdsOzL$#+tX5>{G3?-2?l(6nH}|cr`X7NqllWZ&AIwp1`M_{N zeB$+n_Qrg-RkuFeb60F>D}HBwV6D3Uyd{@k#!P>7=6Ug&tsNX+Tdn5y`A>S{CwP;| ztby0`*bR%m;P-z8c7(c|*z{(X>iX-i4Q2SI$E*;#qAFM!7h2C%!}enJ_qf$8hRpNW zJtjRV@?G#cGf?EJ=gP8^s-d>}N@6#d>Q;z)?~fKantkA{Vhguo%dxBzfA{BZj7V4; z+dId z6^75&v$L~zU(7JEE`4=H_r3c|;p2wycbv#o`lK#cdBIXVw9=z?@kNcQz4y*H>@F)W zUoX9fjaTu)%aR>0m(314K7XaffuKHZ$vF09-A9`~R`|?&?z8-IRK&gDlq+fLoeT2w z`5$n7*we8mbFD1%eCC=hN$WD_J Ugu;M4kNXD0BSysZCq1Pf6Ju_uem|JhbQAw{IPfXVmTA&+`4= hB{&Mi(!ME3L zJ!aUwdpA$J^R2gL;p<`?T|6eGXhxjd`LzCQ+UE%cp;HA9T&TXk^4IT%sc+xDb(A@N z+Ud)K2M?YfXm7OMb@$!BPGNPobC%n-ZPPeC>0pAxyystj*FO7fxi+l(V#by))$^Xe zdGkg=DI%LwQD>F6EtkxCoj+e+IhaM&vRAy{djI|X>8UqmuiYw}wM^P`(idkAwU!N4 zuMK9ORq0Y CI@gY~^SH7xz|5v}qaDB+r zpF*Fc#6wQ4xOS_t_+8xdJN-R|_66tevetyS#06ZP-eY(_dux=U@8wI?@(n?u)yMl} zwU0mkcsl*uoS#3W^Y=X5`+e!EI<1z1#fHx!1wW=n>SZ5Vv8v;W#NunWG+Gv{%G!N5 z&uad8d7+8>x8Hu7-Z=fT$zER {F> zx!VRUt&+_)UGV ZAN%D(>oeBkF)Q`Qd&qH*!e`*`l$&oKGr8hE3;Qt@}Wno{j? zmgrhm1Lk|Hei=XLcZfRso5^7PnYv`te=;BDa@CaT@4xiD;lKGFefj$nozLxLU|?YI MboFyt=akR{0CFJD7XSbN literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/ebwizardry/textures/particle/cloud_3.png b/src/main/resources/assets/ebwizardry/textures/particle/cloud_3.png new file mode 100644 index 0000000000000000000000000000000000000000..a53b59f4aab399a283183916afff8c80b9b94092 GIT binary patch literal 2084 zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4mJh`hT^KKFANL}Y)RhkE(~`;@T(}tTm}XP z&H|6fVg?3oVGw3ym^DX&fq{XM9T6{RtzlkfLmz0Z%Oh1N%l#7srr@!*i!suShKw zJ#L@ hHt%GUs`iEp;vCoUL2C zbzgSv_43@v_;~$_vr{h5o?Fz<#P~z!gZ2Yf1$I5QYmJH*n3lba^ge#}i~V+)3!8MF z_euA ^vUJAY#*|sR;8s`N$|WAnCRZf969ap;k)m<4By3a{K_l;A08Si zA9{6vw})(U$%B>-pN6uYk1~RiyMD7Ckk}#kquA-(r27mCuV24DyGdv3#SD!D1r~Q! zubM3Jc D*6ETPtvA^Sgh#f|dQdpU?G6KmPIY@o<+X zg5~znF7G@W|A<*|?NPL}XL!PuF)h_HU`O@liy3=3d|aMb3f>f&_`K2VLraGZ-yH53 z`?-GEf-CRt6`IK1I6G?XwcmIC7Cqo9|IhK^o5-D=N=3fYQg1hM2|SQ(c-pXQcbh;! z=-Ev?3&bX_-L-B%uMFEi7M -UdLQqif<<}}h zO9{r~4XT2YJAPj|b8n83{8F{rwd{9n`wh)pk2EBtSu;+XKK;C0ubX^_p_0;HzvY`_ zLPg*8b$IN*fBw{_C3o|TC3p-r`?xUZo%;Oe&mxU?a=mUVUU8>wOKx yX>xi_g!zsd*42xO0m}S7h_0yzQALQl}%QEnKyE!OGXO1emn7wb!g!laQ8^muDow zqvo)A-E05ZH|s)ct){+bdXTt)`OTc~4zbr|1$Ww?-n6@6zo`^&_V(LXN_#sdJhxmM z*1bvRdC7~i-D}pao%r06J0~eMwN>Y|m*B#6*$v?htMB}kO3*#qEYGk^bMjS*WcApP zgi@=yuZ|sKJDWCn)v6gjYApgBif87oUAJ!11G|%-Y?iOmx_0fF#_3NJR{dk@P%7g1 z;X8{{`oP)B#TPH^TBk2KF*PB-=cDt1Io}UIEQo75>hphksg>**o>1H4ckk;e@iY4~ z{BC$^VyIhQe)jX9l@gEBlX}ectjvv_INsda+MTxf P(;EJ*GR8 zsuJW5M5fOzJ$5d+=kw#cyUUZ)OlJFvPt@P>J3M$&J)>E=Z^nUl!J+5x7JfHAS7rFX z=DcT!Sb4tMyLjF|f;Y^j$A{K3{80a(a)Eips;<24r~hYXYFx}Qlk9byaWh%-b?t$( z##>B}?GUa|JH6?5W4B96>i2hdmoL3OQ)%PQou2Ej&z|~au2PZo2h|5ZO(vae)D4~6 zB5;qt mm({vNsZu z)6SMA7)Th*^^1&+o!c#V;Mp^^(9l4Uqn@>wGfX6S*rufJJh9Ag(ZhoxM Y(78|k9O)FkQtBHyt%F06#ci?R d}XX zht+#Kw`}+(#I%#i(S>hGYoQ%;QqPK4H8TCjA5S)#(;3txZoK&RTO+C77iGJ@{Qm3u zwu77FkIW9UxtnD&R=sM@+r{X^`O_ydDdCA%P*%$D7yw;cv({Ly>i0jlPMd&&E~wB&!qa{ z@0Wjtd^2`Gubjt!_pkN4d9!bBH9Y3MS!cKYu^s*{_q3H}NV*34%sRWwfBEH0cdwpV z@%k3OjD U$2(_{I@%&)7ESF9@_XuNsBs&>~WQzafBJ zJbRsN@}JcmUtaIZ>+;yH!8KP=z)8S3xwQ1_jNSf0&HwB?^YmGZJ%tu)y*$7$V_x3T zi;Fb!%D=B)nKg0S!|Kq|>Uq!4u3GhtN&fxUs;#@tH|Z$1Y~ah8lKOK^#~+K955}Q? zm+t<5`))qNzKK`zmDm0(p8WOe*JqmYb3ex~nmFs`Ii1s+{FZOttkHFvU(UvY 0_WWmH z`S!DC&ng=pd)|;L$hqp4k+I8?=kKb|ya_X|X8DnKtEQdX`q=TH=k~lcazA7Ro|w#k zzU#vUp1Chqrh0w9Gv%MWmsh#Fl)?4o7xOw9H~)6t_3z-9GqeA3*IE2}ZxNHy#K6G7 N;OXk;vd$@?2>`_z|4;w` literal 0 HcmV?d00001