From 16f42f799e4ed926836c6f5285ff46d6a0a82a72 Mon Sep 17 00:00:00 2001 From: Atsuihsio <842960157@qq.com> Date: Wed, 15 Jan 2025 19:00:55 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0lav=E5=BC=95=E6=93=8E?= =?UTF-8?q?=E9=9F=B3=E6=95=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../entity/vehicle/Lav150Entity.java | 25 ++++++++++++++---- .../event/ClientSoundHandler.java | 13 ++++++++- .../superbwarfare/init/ModSounds.java | 2 ++ .../assets/superbwarfare/sounds.json | 14 ++++++++++ .../superbwarfare/sounds/lav/lav_engine.ogg | Bin 0 -> 6280 bytes .../sounds/lav/lav_engine_1p.ogg | Bin 0 -> 6678 bytes 6 files changed, 48 insertions(+), 6 deletions(-) create mode 100644 src/main/resources/assets/superbwarfare/sounds/lav/lav_engine.ogg create mode 100644 src/main/resources/assets/superbwarfare/sounds/lav/lav_engine_1p.ogg diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Lav150Entity.java b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Lav150Entity.java index f36557476..921751347 100644 --- a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Lav150Entity.java +++ b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Lav150Entity.java @@ -26,6 +26,7 @@ import net.minecraft.sounds.SoundEvent; import net.minecraft.sounds.SoundSource; import net.minecraft.util.Mth; import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.world.damagesource.DamageTypes; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.LivingEntity; @@ -138,6 +139,24 @@ public class Lav150Entity extends ContainerMobileEntity implements GeoEntity, IC if (source.is(ModDamageTypes.VEHICLE_STRIKE)) { amount *= 0.7f; } + if (source.is(DamageTypes.PLAYER_ATTACK)) { + amount *= 0.05f; + } + if (source.is(DamageTypes.MOB_ATTACK)) { + amount *= 0.05f; + } + if (source.is(DamageTypes.MOB_ATTACK_NO_AGGRO)) { + amount *= 0.05f; + } + if (source.is(DamageTypes.MOB_PROJECTILE)) { + amount *= 0.05f; + } + if (source.is(DamageTypes.ARROW)) { + amount *= 0.05f; + } + if (source.is(DamageTypes.TRIDENT)) { + amount *= 0.05f; + } this.level().playSound(null, this.getOnPos(), ModSounds.HIT.get(), SoundSource.PLAYERS, 1, 1); this.hurt(0.5f * Math.max(amount - 15, 0)); @@ -365,10 +384,6 @@ public class Lav150Entity extends ContainerMobileEntity implements GeoEntity, IC this.extraEnergy(VehicleConfig.SPEEDBOAT_ENERGY_COST.get()); } - if (level().isClientSide) { - level().playLocalSound(this.getX(), this.getY() + this.getBbHeight() * 0.5, this.getZ(), this.getEngineSound(), this.getSoundSource(), Math.min((this.forwardInputDown || this.backInputDown ? 7.5f : 5f) * 2 * Mth.abs(this.entityData.get(POWER)), 0.25f), (random.nextFloat() * 0.1f + 1f), false); - } - this.entityData.set(POWER, this.entityData.get(POWER) * 0.97f); this.entityData.set(DELTA_ROT, this.entityData.get(DELTA_ROT) * (float)Math.max(0.7f - 0.1f * this.getDeltaMovement().horizontalDistance(), 0.3)); @@ -451,7 +466,7 @@ public class Lav150Entity extends ContainerMobileEntity implements GeoEntity, IC @Override public SoundEvent getEngineSound() { - return ModSounds.BOAT_ENGINE.get(); + return ModSounds.LAV_ENGINE.get(); } @Override diff --git a/src/main/java/com/atsuishio/superbwarfare/event/ClientSoundHandler.java b/src/main/java/com/atsuishio/superbwarfare/event/ClientSoundHandler.java index 9f2a75e6d..fa6ee1484 100644 --- a/src/main/java/com/atsuishio/superbwarfare/event/ClientSoundHandler.java +++ b/src/main/java/com/atsuishio/superbwarfare/event/ClientSoundHandler.java @@ -1,6 +1,7 @@ package com.atsuishio.superbwarfare.event; import com.atsuishio.superbwarfare.entity.vehicle.Ah6Entity; +import com.atsuishio.superbwarfare.entity.vehicle.Lav150Entity; import com.atsuishio.superbwarfare.entity.vehicle.MobileVehicleEntity; import com.atsuishio.superbwarfare.init.ModSounds; import com.atsuishio.superbwarfare.tools.SeekTool; @@ -8,6 +9,7 @@ import net.minecraft.client.Minecraft; import net.minecraft.client.player.LocalPlayer; import net.minecraft.core.BlockPos; import net.minecraft.sounds.SoundEvent; +import net.minecraft.util.Mth; import net.minecraft.world.entity.Entity; import net.minecraft.world.phys.Vec3; import net.minecraftforge.api.distmarker.Dist; @@ -19,6 +21,7 @@ import org.joml.Math; import java.util.List; import static com.atsuishio.superbwarfare.entity.vehicle.Ah6Entity.PROPELLER_ROT; +import static com.atsuishio.superbwarfare.entity.vehicle.MobileVehicleEntity.POWER; @Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.FORGE, value = Dist.CLIENT) public class ClientSoundHandler { @@ -49,7 +52,15 @@ public class ClientSoundHandler { if (player.getVehicle() == ah6Entity) { player.playSound(ModSounds.HELICOPTER_ENGINE_1P.get(), 2 * (mobileVehicle.getEntityData().get(PROPELLER_ROT) - 0.012f), (float) ((2 * Math.random() - 1) * 0.1f + 1.0f)); } else { - player.level().playLocalSound(BlockPos.containing(engineSoundPos), engineSound, mobileVehicle.getSoundSource(), 5 * (mobileVehicle.getEntityData().get(PROPELLER_ROT) - 0.012f) * distanceReduce * distanceReduce, (float) ((2 * Math.random() - 1) * 0.1f + 1.0f), false); + player.level().playLocalSound(BlockPos.containing(engineSoundPos), engineSound, mobileVehicle.getSoundSource(), 5 * (mobileVehicle.getEntityData().get(PROPELLER_ROT) - 0.012f) * distanceReduce * distanceReduce, (float) ((2 * Math.random() - 1) * 0.1f + 1), false); + } + } + if (e instanceof Lav150Entity lav150) { + distanceReduce = (float) Math.max((1 - distance / 64), 0); + if (player.getVehicle() == lav150) { + player.playSound(ModSounds.LAV_ENGINE_1P.get(), 2 * (Mth.abs(mobileVehicle.getEntityData().get(POWER)) - 0.006f), (float) ((2 * Math.random() - 1) * 0.1f + 0.95f)); + } else { + player.level().playLocalSound(BlockPos.containing(engineSoundPos), engineSound, mobileVehicle.getSoundSource(), 5 * (Mth.abs(mobileVehicle.getEntityData().get(POWER)) - 0.006f) * distanceReduce * distanceReduce, (float) ((2 * Math.random() - 1) * 0.1f + 1), false); } } } diff --git a/src/main/java/com/atsuishio/superbwarfare/init/ModSounds.java b/src/main/java/com/atsuishio/superbwarfare/init/ModSounds.java index 7f7db48a7..6aeddb245 100644 --- a/src/main/java/com/atsuishio/superbwarfare/init/ModSounds.java +++ b/src/main/java/com/atsuishio/superbwarfare/init/ModSounds.java @@ -400,5 +400,7 @@ public class ModSounds { public static final RegistryObject LAV_CANNON_FIRE_3P = REGISTRY.register("lav_cannon_fire_3p", () -> SoundEvent.createVariableRangeEvent(ModUtils.loc("lav_fire_3p"))); public static final RegistryObject LAV_CANNON_FAR = REGISTRY.register("lav_cannon_far", () -> SoundEvent.createVariableRangeEvent(ModUtils.loc("lav_far"))); public static final RegistryObject LAV_CANNON_VERYFAR = REGISTRY.register("lav_cannon_veryfar", () -> SoundEvent.createVariableRangeEvent(ModUtils.loc("lav_veryfar"))); + public static final RegistryObject LAV_ENGINE = REGISTRY.register("lav_engine", () -> SoundEvent.createVariableRangeEvent(ModUtils.loc("lav_engine"))); + public static final RegistryObject LAV_ENGINE_1P = REGISTRY.register("lav_engine_1p", () -> SoundEvent.createVariableRangeEvent(ModUtils.loc("lav_engine_1p"))); } diff --git a/src/main/resources/assets/superbwarfare/sounds.json b/src/main/resources/assets/superbwarfare/sounds.json index 7578df4fc..692afd5dd 100644 --- a/src/main/resources/assets/superbwarfare/sounds.json +++ b/src/main/resources/assets/superbwarfare/sounds.json @@ -2736,5 +2736,19 @@ "stream": false } ] + }, + "lav_engine": { + "sounds": [ + { + "name": "superbwarfare:lav/lav_engine" + } + ] + }, + "lav_engine_1p": { + "sounds": [ + { + "name": "superbwarfare:lav/lav_engine_1p" + } + ] } } \ No newline at end of file diff --git a/src/main/resources/assets/superbwarfare/sounds/lav/lav_engine.ogg b/src/main/resources/assets/superbwarfare/sounds/lav/lav_engine.ogg new file mode 100644 index 0000000000000000000000000000000000000000..5cbc0c66b62859cb934f4d8bde3bb10cb0559b36 GIT binary patch literal 6280 zcmai1dpy(s_kYhlNv?&Yt&&ahF}V$iA(vcd!?5HsWek}~N|d`;5z1V0oy?_7DN`zi zqEHJVgjgBr;!;$8@2T(YuixwO+H2>W*Lgo*=bYDho%ieQcjd&A;uL;2#teIEi*K zg4+3n_z}b5E-sb`sHe7;mL3v`)FMFPzCIM9KQuH1>Jy5kxktt9Wgx{Y-G(MeDY-Zy zg!3>oOrWCQB|ar}*hV!%#!#)$Ps-EgQUBGT3ucYV37hB`JH(T0Od48D(Ip+xmW{DR zi>gLQ8cr*_&}`vmcMB-hw{vs-E>uNi*>ZRL+o7!yiCMOy6)p~FYu(&_3}QP4gCUuH z0GC8JLK8Nf@4bZM+xgH`N{J;7I01lET8ToMKtfWD0H6&3Ld9^}1e~@DmE~u%WnBf_ z2q^$~7$#?vDfg^?_u*F>hdCC`xR^dY9Bzq97~prPj=ww~)zrE&uR;mhD&emnwh1o` zK*10lg11Tu{wq9yFC3M!=hpNY3N1bWbzHq|IwEXm-?UAL`t)=Gr5mM|PiZ&c7Esc{ z1CYl-y#k6%d;sDPRrF-qEQraMwWBKIPaIMJ_2{>z%}9Fvplr)628yKF22wkxrftZY zeIV710#()r=GIC|m;)cVbZOcn1iclcOcX0mQ_y_bfAs!@2lUrWK`-epK(n#!Hi*JMo{IqhEI|%q4NLqxq`;CCe4ipJ3(kwH zSCyBhX?JQgJlF2x54@WV-G;MTPo&HxYH!ILw!huy?pNEyEeMi)ew=Mav;$MpG*9o{>OFDlQ=1~*dIqK6#Skexy6^A(EoB1 z3NHB2S-I`RZmaO!&$2XZF6$g_Fn+-?wqLMtmb2$zE!`q4M{ZdTX4?-$*bheF@V5#0 zM)F`k**lj!wjA?cow|M9MQiYQTGPs{)5@)BlLlG4AtkVC08r#-6FjZVfHrBJwc94Q z+@@#>Um8GS9E)aN7g$#@<*V=;oIZhIOdv`pP^G(UONkz(3{o9DpT%R>{eN9^J;5&l zKyRkK$5*?Soqz5zpuaAxkU_c2kh5vg406=T^V~mCsMaL!^ zd-yii{x+;B_}f_0dr2N*S^&hEWf?nu)p5?& zag?)ki6A)Z5C*;)_bu4D;10aR;#_d#K`aiRYuuxAfP=;L=-~Q57OWk)mbgALhe{oe zz>VaRhnESSTOyrtOF(!S_@Bz8d2e?Kso}oCsncmF!6+5SHy+a_t9l zh#V?;IEP3$NgQ0(Dc87ppis4Wb$8w0?ZbZC7Bw;zxb0B9bf-vGn zbklbQXFUfJ$NQ;1dB%=75Sh@ULvW)Kyxj-`{koiNKJp-zfR6-`32yz=9vwdNupYrJ zmyhh0OC5;-m5KQ8IJYG#ejsPOpFFNl7+A*PmlDBQK5`S4pkRVqjB$xf9FHK54J3}? zLkI@BFR3v;IplG7A|7>i+&y<>Ifn>BxswMKT=83yyuTMtEyYYmQ3;A6Bi!fgd5Mns z^3_gGAK5Q2W&|JLeUdh=VEEwkWEJy9e%)S)N{x*V=6LN5t1YbbI^HT1WYvdT>v=8T zezx4yD4ShrC3Usl9BM?qZ3)qM5T@J}#Op-zTAUlHXS}1tAAgIW5>5pWI+myrlU4?2 zJHf4m@V8dB)3gM(S0K&+0$kjkTI!E4h2wMKX^ao-(&Oy9@<2vaU{Rn4{TQ7Q$Ydet zbsB;6K#!sTI=wQFahzTkL}%2bF%Vr0QYR~r&YESj$jx=Z!=-`iY%ran(afqIuA7}< zm*W{#r-}keMIh9=a$WVQB2skGab^*m$s{qEwM?dlCpb(0P{mM710{@FI#a!i!5m@* zG8==LOmZ`Gc7;Xeu|Z47Ovb)^CW(*C(imp{16svLrgQTcpc%n*=3dXDN;)5TI+X!} zYvePSow?jRCWt(fS`@U7Od4Va()q~y@)_z~b>!6+UMDMr$qWXOd3+;-yISTunV;4j zTsMQYZbLK^MaJineHw}5pz&WV%<7fKPphqAyt>cg z0H6>C0AgAt5^_o`86X9$3h6%SNU;n|H%hd`xf8{O`gfa&!E&CX#9-N3pe#FEn+wg( z!ia&C$3|FoHYP|I0OSn7y7i_QQE$M{7DyZx0OBXz!FZOEhFE?!MPO8`n2mGRx!ly! zKyar#K?$RZS;yni|44Wd zI4u!aycAjlmT(DU3#-VM0n7C}@U?mrtqAAWUMWG4f$&wtVBj6;Kf}N81si}j7sG%{ z(OO7kVq#K_5P$)zuOE0PLvo=O>8N&v2pQWnuuLLFE6TAbQCI@jqpLPt5-oq z|Gkz#0E11EK(XlmxFrw7nI1xbDw2i?a(>{x!4j-td=@Px&u6zMNU66g^I4ex`m7ZC zX+gZCA?RJN8K^9UhF4J5ot3fum&bhNe+Qr>TZYd%q2a1>0N}nJu*WlEYL)HE#F8THPnO_QjZ5J=);t;{OdU?pMP0nA^Laopu$-}Af%5yNkpkiRYL4-ua z#9O2Ud?f%=sh#^R&_41STJU(0p@myi@{oi>Q;S zfTY9S@l<`|aS^o-ayf?J1qEz^KokHNz~fRFpOXqSWSyj4?CRbEw7 zU0!~@s)|u`tu(vfdGDzh{Ps&x4QpJO=Gw_jZ;wD*m6P`c?tH9$c5Q8+$dl*aY6zm% zCGy2ap`CbZLD6lB2ad!_Cf!0njuwru?_mHX{9=rfd91tF4{MCy2QUpH2mqI{0FQTk{8j5PA*haN<-*8(;_4Z2WerBy&!Oi1l>h3=(Z4L&AFi!C)3mIYd( z?QbWaGTYQ)Xz=mc0449k(V{EY%koqWt_d3RF2Usbjh_|NRy1^YMDG3l^!G zG+7$(PJy3KDUYvE(%=#(N4#QE`uUlCUtV>NlZb~rhmE(2N?4{AD7V{eBuzyw zXPBp@nC?TFO!aGor4-bNnl#%}H_QPic2)Nvv|*>oGQ&HA<8j||-}q{=hhv<*R|7`r z8Qo*^DqK>atwr&DFuTgh_^Q010a-@29_x8n~a|dx8W4BKk zVHc<1Ytv>)(VHjg(HlEjjxt`kGqaDB9=j%*KPS=@ux7dQsh?VM6j1VgHmN^rvrFo! z2A8tBHm@Bt`6k8&6BEx!sE>VIC&`8@Rk-M}^h46q?fJvpi+iNG{y)3~uVEKYG#i*g zOe8cpO8pR&ivL{SDs@9}gjIXgGpJI{b2oWQjPrG?hDL<|hlDQ&EMvR3%^K}fkR3ZH zO|Df*w|g}cdrlV_c};ujtRiG|*L>By`Yo(Ns8v2d%wFzy|*FDm)sY{!| z!xd6QJh}a}A+P1p@4lq%6OxqPJG$=zrfu=ZpP%tvo``Jze1hcoc2i|#Q^QQVKRqeG z<95vJ3vb(PA@)jLJ~1I>EBOY^iaTC6YoCV0leljev^$KiJML=xBuDMtXsz!s)_w;5 z%snYY@xsK5&?<#Xrjob4ldjSZVr_!_$1R^3W%(5>2pzH0oWk6+O^CkYuNal)1}R~f z*T^+O-c0Wm)p;sLmAqUKGu)Rp*qY*Lhj*k{ZMpHgQ)%qRKd^#>%Sj&>^s2ST%3nRm z4Zb?2BQ+ZR(4*&@VbiUH6i8U}< zqtZdHbd~Q$Nx)3YZP+XUc_)L@TH|6Dt~9ts{w$Yi42f=GdKM18?>RpLXS}N4@}P7l;%B$6 z_>hfY5iD2&I1*gPQK4*kAN6^64B7CF&cY{|dNXAiHIh3(?Gu+6zv<-N6RDy(8TUK~{tSDU~xtT{YK z#bx#^!Cn}=@JgIe_ab6XJv_Ab{e=OwZRoGgj^`3B>SGT}Mf!i#hWy^Ea;4#! zukJ>MN7Smdw6s>c3~C$*bI0G-KH)CZ9azn~rh9yqTC&jCvF9*`_o2$EKJ3WQ_R?dS z{q2GDW^Vk-^ev8+yJo0X0zG-8C9M>wY~SL5y1odk$Od*wrGo zT_Qs%3zZ`je3nO^R2iT;IqK;aI9VfF#k!ab6o$k6hc$(AZm2Q=8ihfU3^K@^c z*Mt3&-D9rP4J!K7cYf!S1x7cW-$aDYi}PJSt$lYv6C zCoY)3SHkbdj@Zqud<`}aeZxt;FL}qXUxvKauwi!2S4Og=zsV;(06oy^WSsR~@xw%A z+t6!R@4{a1pl86RbmAMhkvRXQ$9AtZ$2SD>iQ)nHJKa-qajPHq?r}$KnAS3{cOrj(Wm=(8kidrjwFwjU&CEH zc?OY){hZVwuhWHFD}RLSoe?JChT8&Ey!-s)Uo{7^u_Xz@?WVHv%iGf#U&x_9+3E() zeU}}R71}SBka4BF_$ zU8~x60My6Sc{k;_uNMuFOB3N{XS@5og-qDeYp?1dkC!XYk<+Bz4C-`NC&RBS`3{r* zIXAm_!h1Jt{ORM~G0ZAj%v`{1-sY2!AaKN^kg@-k2qC8QYoq42Cq>^b*|$e-EPQh% zN0_l`Zpu-_nl1!XLdAudi8iMAO(yr zZtI(OTM2o4^Jcgw_@Z=fa2MS9@aT3%31z}FsqDzok>ITk;X2m)H?mXrY#T&!J4}UU z+hz-CWZ&@u@i&iD?%vTj%90As{gM0NrvO9AZ04T zlO6ZsGmC?O4`E(S!2Mu{siCAam;T7m(dd%y*V}ZsJ5p|b8EI;SYx9;$)r5~EUdH^4 h9=*4?=ms&JTTnmhq%{QjtbUUbXV$de6k=Km`9Cp1WO4ui literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/superbwarfare/sounds/lav/lav_engine_1p.ogg b/src/main/resources/assets/superbwarfare/sounds/lav/lav_engine_1p.ogg new file mode 100644 index 0000000000000000000000000000000000000000..41424def26ca8dea55dafe0a291096ef7b4a3007 GIT binary patch literal 6678 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