generated from MrSphay/codex-agent-repository-kit
643 lines
76 KiB
Java
643 lines
76 KiB
Java
/*
|
|
* Decompiled with CFR 0.152.
|
|
*/
|
|
package com.vinlanx.explosionoverhaul;
|
|
|
|
import com.vinlanx.explosionoverhaul.AsyncCraterManager;
|
|
import com.vinlanx.explosionoverhaul.CameraShakePacket;
|
|
import com.vinlanx.explosionoverhaul.Config;
|
|
import com.vinlanx.explosionoverhaul.CraterDeformer;
|
|
import com.vinlanx.explosionoverhaul.DripstoneEffects;
|
|
import com.vinlanx.explosionoverhaul.ExplosionClusterHandler;
|
|
import com.vinlanx.explosionoverhaul.ExplosionOverhaul;
|
|
import com.vinlanx.explosionoverhaul.ExplosionVisualsPacket;
|
|
import com.vinlanx.explosionoverhaul.FlashEffectPacket;
|
|
import com.vinlanx.explosionoverhaul.GlassBreakingEffects;
|
|
import com.vinlanx.explosionoverhaul.ModSounds;
|
|
import com.vinlanx.explosionoverhaul.PacketHandler;
|
|
import com.vinlanx.explosionoverhaul.PlayTrackedSoundPacket;
|
|
import com.vinlanx.explosionoverhaul.RedstoneLampEffects;
|
|
import com.vinlanx.explosionoverhaul.SpawnDustCloudPacket;
|
|
import com.vinlanx.explosionoverhaul.SpawnLineSparksPacket;
|
|
import com.vinlanx.explosionoverhaul.SpawnMistCloudPacket;
|
|
import com.vinlanx.explosionoverhaul.SpawnShockwavePacket;
|
|
import com.vinlanx.explosionoverhaul.StartConcussionPacket;
|
|
import com.vinlanx.explosionoverhaul.SuppressExplosionSoundPacket;
|
|
import com.vinlanx.explosionoverhaul.api.IExplosionPower;
|
|
import com.vinlanx.explosionoverhaul.mixinhelper.ExplosionAccessor;
|
|
import java.util.Arrays;
|
|
import java.util.HashSet;
|
|
import java.util.Iterator;
|
|
import java.util.List;
|
|
import java.util.Random;
|
|
import java.util.Set;
|
|
import net.minecraft.core.BlockPos;
|
|
import net.minecraft.core.Position;
|
|
import net.minecraft.resources.ResourceLocation;
|
|
import net.minecraft.server.level.ServerLevel;
|
|
import net.minecraft.server.level.ServerPlayer;
|
|
import net.minecraft.sounds.SoundEvent;
|
|
import net.minecraft.sounds.SoundSource;
|
|
import net.minecraft.tags.BlockTags;
|
|
import net.minecraft.util.Mth;
|
|
import net.minecraft.world.entity.Entity;
|
|
import net.minecraft.world.level.BlockGetter;
|
|
import net.minecraft.world.level.ClipContext;
|
|
import net.minecraft.world.level.Explosion;
|
|
import net.minecraft.world.level.Level;
|
|
import net.minecraft.world.level.block.Block;
|
|
import net.minecraft.world.level.block.Blocks;
|
|
import net.minecraft.world.level.block.state.BlockState;
|
|
import net.minecraft.world.phys.BlockHitResult;
|
|
import net.minecraft.world.phys.HitResult;
|
|
import net.minecraft.world.phys.Vec3;
|
|
import net.neoforged.neoforge.network.PacketDistributor;
|
|
import net.neoforged.neoforge.registries.ForgeRegistries;
|
|
|
|
public class ServerExplosionHandler {
|
|
private static final ServerExplosionHandler INSTANCE = new ServerExplosionHandler();
|
|
private final Random random = new Random();
|
|
|
|
public static void handleExplosion(ServerLevel level, Explosion explosion, List<BlockPos> affectedBlocks) {
|
|
INSTANCE.onExplosion(level, explosion, affectedBlocks);
|
|
}
|
|
|
|
public static void register() {
|
|
}
|
|
|
|
private void onExplosion(ServerLevel level, Explosion explosion, List<BlockPos> affectedBlocks) {
|
|
boolean shouldBreakGlass;
|
|
boolean shouldDestroyBlocks;
|
|
float power;
|
|
Vec3 explosionPos;
|
|
ExplosionOverhaul.ExplosionSourceMode mode;
|
|
Entity exploder;
|
|
String sourceId = "generic";
|
|
if (explosion instanceof ExplosionAccessor) {
|
|
ExplosionAccessor accessor = (ExplosionAccessor)explosion;
|
|
v0 = accessor.explosionoverhaul$getSource();
|
|
} else {
|
|
v0 = exploder = null;
|
|
}
|
|
if (exploder != null) {
|
|
IExplosionPower pw;
|
|
ResourceLocation exploderId = ForgeRegistries.ENTITY_TYPES.getKey((Object)exploder.m_6095_());
|
|
if (exploderId != null) {
|
|
sourceId = exploderId.toString();
|
|
}
|
|
if (exploderId != null && "createbigcannons".equals(exploderId.m_135827_()) && explosion instanceof IExplosionPower && (pw = (IExplosionPower)explosion).getPower() <= 2.0f) {
|
|
return;
|
|
}
|
|
}
|
|
if ((mode = ExplosionOverhaul.getSourceMode(sourceId)) == ExplosionOverhaul.ExplosionSourceMode.VANILLA) {
|
|
return;
|
|
}
|
|
if (explosion instanceof ExplosionAccessor) {
|
|
ExplosionAccessor accessor = (ExplosionAccessor)explosion;
|
|
v1 = accessor.explosionoverhaul$getCenter();
|
|
} else {
|
|
v1 = explosionPos = Vec3.f_82478_;
|
|
}
|
|
if (explosion instanceof IExplosionPower) {
|
|
IExplosionPower powerHolder = (IExplosionPower)explosion;
|
|
power = powerHolder.getPower();
|
|
if (power >= 1.0f) {
|
|
for (ServerPlayer player : level.m_6907_()) {
|
|
if (player.f_8906_ == null) continue;
|
|
PacketHandler.INSTANCE.send(PacketDistributor.PLAYER.with(() -> player), (Object)new SuppressExplosionSoundPacket(power));
|
|
}
|
|
}
|
|
} else {
|
|
System.err.println("[explosionoverhaul] WARNING: Explosion is not IExplosionPower \u2014 Mixin did not work. Explosion processing canceled.");
|
|
return;
|
|
}
|
|
power = ExplosionClusterHandler.calculateClusteredPower((Level)level, explosionPos, power);
|
|
boolean bl = shouldDestroyBlocks = (Boolean)Config.COMMON.enableCraterDestruction.get() != false && mode != ExplosionOverhaul.ExplosionSourceMode.NO_DESTRUCTION && mode != ExplosionOverhaul.ExplosionSourceMode.NO_DESTRUCTION_GLASSWORKS;
|
|
if (shouldDestroyBlocks) {
|
|
boolean useAsync = (Boolean)Config.COMMON.enableAsyncCrater.get();
|
|
if (useAsync) {
|
|
affectedBlocks.clear();
|
|
AsyncCraterManager.submit(level, explosionPos, power);
|
|
} else {
|
|
HashSet<BlockPos> originalAffectedBlocks = new HashSet<BlockPos>(affectedBlocks);
|
|
affectedBlocks.clear();
|
|
Iterator iterator = originalAffectedBlocks.iterator();
|
|
while (iterator.hasNext()) {
|
|
BlockPos pos = (BlockPos)iterator.next();
|
|
BlockState state = level.m_8055_(pos);
|
|
Block block = state.m_60734_();
|
|
if (ExplosionOverhaul.isBlockBlacklisted(block)) continue;
|
|
affectedBlocks.add(pos);
|
|
}
|
|
Set<BlockPos> craterBlocks = CraterDeformer.getCraterBlocks(level, explosionPos, power);
|
|
for (BlockPos pos : craterBlocks) {
|
|
if (affectedBlocks.contains(pos)) continue;
|
|
BlockState state = level.m_8055_(pos);
|
|
Block block = state.m_60734_();
|
|
if (state.m_60795_() || !(state.m_60800_((BlockGetter)level, pos) >= 0.0f) || block.m_204297_().m_203656_(BlockTags.f_13070_) || block == Blocks.f_50722_ || ExplosionOverhaul.isBlockBlacklisted(block)) continue;
|
|
affectedBlocks.add(pos);
|
|
}
|
|
}
|
|
} else {
|
|
affectedBlocks.clear();
|
|
}
|
|
boolean bl2 = shouldBreakGlass = (Boolean)Config.COMMON.enableGlassBreaking.get() != false && mode != ExplosionOverhaul.ExplosionSourceMode.NO_DESTRUCTION;
|
|
if (shouldBreakGlass) {
|
|
GlassBreakingEffects.trigger(level, explosionPos, power);
|
|
}
|
|
for (ServerPlayer player : level.m_6907_()) {
|
|
long delayTicksEffect;
|
|
double speedOfSound;
|
|
if (player.f_8906_ == null) continue;
|
|
double distance = player.m_20182_().m_82554_(explosionPos);
|
|
BlockPos playerBlockPos = player.m_20183_();
|
|
boolean playerInCave = ServerExplosionHandler.isInNaturalCave(level, playerBlockPos);
|
|
boolean playerInHouse = ServerExplosionHandler.isInHouse(level, playerBlockPos, player.m_146892_().f_82480_);
|
|
BlockPos explosionOrigin = BlockPos.m_274446_((Position)explosionPos);
|
|
BlockPos nearestSolidAbove = ServerExplosionHandler.findNearestSolidUp(level, explosionOrigin, 50);
|
|
boolean explosionIsInCaveLocation = nearestSolidAbove != null ? ServerExplosionHandler.isInNaturalCave(level, nearestSolidAbove) : ServerExplosionHandler.isInNaturalCave(level, explosionOrigin);
|
|
boolean hasDirectLineOfSight = false;
|
|
if (distance > 0.1 && distance <= 200.0) {
|
|
Vec3 playerEyePos = player.m_146892_();
|
|
hasDirectLineOfSight = ServerExplosionHandler.hasLineOfSight(level, playerEyePos, explosionPos, (Entity)player);
|
|
}
|
|
if (distance <= 200.0) {
|
|
PacketHandler.INSTANCE.send(PacketDistributor.PLAYER.with(() -> player), (Object)new StartConcussionPacket(power, distance, hasDirectLineOfSight, explosionIsInCaveLocation));
|
|
}
|
|
int dripstoneThreshold = 0;
|
|
if (distance >= 500.0 && distance < 1000.0) {
|
|
dripstoneThreshold = 10;
|
|
} else if (distance >= 1000.0 && distance < 5000.0) {
|
|
dripstoneThreshold = 25;
|
|
} else if (distance >= 5000.0) {
|
|
dripstoneThreshold = 50;
|
|
}
|
|
if (dripstoneThreshold > 0 && power >= (float)dripstoneThreshold) {
|
|
DripstoneEffects.handleDripstoneFall(level, playerBlockPos, (int)Math.ceil(power), player.m_217043_());
|
|
}
|
|
List<SoundEvent> soundPool = null;
|
|
int closeSoundDistanceThreshold = level.m_46472_() == Level.f_46429_ ? 100 : (level.m_46472_() == Level.f_46430_ ? 150 : 50);
|
|
if (distance <= (double)closeSoundDistanceThreshold) {
|
|
soundPool = power <= 3.0f ? List.of((SoundEvent)ModSounds.EXPLODE_CLOSE_POWER_1_1.get(), (SoundEvent)ModSounds.EXPLODE_CLOSE_POWER_1_2.get(), (SoundEvent)ModSounds.EXPLODE_CLOSE_POWER_1_3.get()) : (power <= 6.0f ? List.of((SoundEvent)ModSounds.EXPLODE_CLOSE_POWER_2_1.get(), (SoundEvent)ModSounds.EXPLODE_CLOSE_POWER_2_2.get(), (SoundEvent)ModSounds.EXPLODE_CLOSE_POWER_2_3.get()) : (power <= 14.0f ? List.of((SoundEvent)ModSounds.EXPLODE_CLOSE_POWER_3_1.get(), (SoundEvent)ModSounds.EXPLODE_CLOSE_POWER_3_2.get(), (SoundEvent)ModSounds.EXPLODE_CLOSE_POWER_3_3.get()) : (power <= 30.0f ? List.of((SoundEvent)ModSounds.EXPLODE_CLOSE_POWER_4_1.get(), (SoundEvent)ModSounds.EXPLODE_CLOSE_POWER_4_2.get(), (SoundEvent)ModSounds.EXPLODE_CLOSE_POWER_4_3.get()) : (power <= 60.0f ? List.of((SoundEvent)ModSounds.EXPLODE_CLOSE_POWER_5_1.get(), (SoundEvent)ModSounds.EXPLODE_CLOSE_POWER_5_2.get(), (SoundEvent)ModSounds.EXPLODE_CLOSE_POWER_5_3.get()) : (power <= 99.0f ? List.of((SoundEvent)ModSounds.EXPLODE_CLOSE_POWER_6_1.get(), (SoundEvent)ModSounds.EXPLODE_CLOSE_POWER_6_2.get(), (SoundEvent)ModSounds.EXPLODE_CLOSE_POWER_6_3.get()) : List.of((SoundEvent)ModSounds.EXPLODE_CLOSE_POWER_7_1.get(), (SoundEvent)ModSounds.EXPLODE_CLOSE_POWER_7_2.get(), (SoundEvent)ModSounds.EXPLODE_CLOSE_POWER_7_3.get()))))));
|
|
} else {
|
|
if (hasDirectLineOfSight) {
|
|
if (playerInHouse) {
|
|
if (distance <= 500.0) {
|
|
soundPool = ServerExplosionHandler.getSoundPoolForPower(power, (SoundEvent)ModSounds.EXPLODE_MEDIUM_TO_HOUSE_POWER_1_1.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_TO_HOUSE_POWER_1_2.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_TO_HOUSE_POWER_1_3.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_TO_HOUSE_POWER_2_1.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_TO_HOUSE_POWER_2_2.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_TO_HOUSE_POWER_2_3.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_TO_HOUSE_POWER_3_1.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_TO_HOUSE_POWER_3_2.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_TO_HOUSE_POWER_3_3.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_TO_HOUSE_POWER_4_1.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_TO_HOUSE_POWER_4_2.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_TO_HOUSE_POWER_4_3.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_TO_HOUSE_POWER_5_1.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_TO_HOUSE_POWER_5_2.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_TO_HOUSE_POWER_5_3.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_TO_HOUSE_POWER_6_1.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_TO_HOUSE_POWER_6_2.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_TO_HOUSE_POWER_6_3.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_TO_HOUSE_POWER_7_1.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_TO_HOUSE_POWER_7_2.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_TO_HOUSE_POWER_7_3.get());
|
|
} else if (distance <= 1000.0) {
|
|
soundPool = ServerExplosionHandler.getSoundPoolForPower(power, (SoundEvent)ModSounds.EXPLODE_FAR_TO_HOUSE_POWER_1_1.get(), (SoundEvent)ModSounds.EXPLODE_FAR_TO_HOUSE_POWER_1_2.get(), (SoundEvent)ModSounds.EXPLODE_FAR_TO_HOUSE_POWER_1_3.get(), (SoundEvent)ModSounds.EXPLODE_FAR_TO_HOUSE_POWER_2_1.get(), (SoundEvent)ModSounds.EXPLODE_FAR_TO_HOUSE_POWER_2_2.get(), (SoundEvent)ModSounds.EXPLODE_FAR_TO_HOUSE_POWER_2_3.get(), (SoundEvent)ModSounds.EXPLODE_FAR_TO_HOUSE_POWER_3_1.get(), (SoundEvent)ModSounds.EXPLODE_FAR_TO_HOUSE_POWER_3_2.get(), (SoundEvent)ModSounds.EXPLODE_FAR_TO_HOUSE_POWER_3_3.get(), (SoundEvent)ModSounds.EXPLODE_FAR_TO_HOUSE_POWER_4_1.get(), (SoundEvent)ModSounds.EXPLODE_FAR_TO_HOUSE_POWER_4_2.get(), (SoundEvent)ModSounds.EXPLODE_FAR_TO_HOUSE_POWER_4_3.get(), (SoundEvent)ModSounds.EXPLODE_FAR_TO_HOUSE_POWER_5_1.get(), (SoundEvent)ModSounds.EXPLODE_FAR_TO_HOUSE_POWER_5_2.get(), (SoundEvent)ModSounds.EXPLODE_FAR_TO_HOUSE_POWER_5_3.get(), (SoundEvent)ModSounds.EXPLODE_FAR_TO_HOUSE_POWER_6_1.get(), (SoundEvent)ModSounds.EXPLODE_FAR_TO_HOUSE_POWER_6_2.get(), (SoundEvent)ModSounds.EXPLODE_FAR_TO_HOUSE_POWER_6_3.get(), (SoundEvent)ModSounds.EXPLODE_FAR_TO_HOUSE_POWER_7_1.get(), (SoundEvent)ModSounds.EXPLODE_FAR_TO_HOUSE_POWER_7_2.get(), (SoundEvent)ModSounds.EXPLODE_FAR_TO_HOUSE_POWER_7_3.get());
|
|
} else if (distance <= 5000.0) {
|
|
soundPool = ServerExplosionHandler.getSoundPoolForPower(power, (SoundEvent)ModSounds.EXPLODE_SUPERFAR_TO_HOUSE_POWER_1_1.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_TO_HOUSE_POWER_1_2.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_TO_HOUSE_POWER_1_3.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_TO_HOUSE_POWER_2_1.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_TO_HOUSE_POWER_2_2.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_TO_HOUSE_POWER_2_3.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_TO_HOUSE_POWER_3_1.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_TO_HOUSE_POWER_3_2.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_TO_HOUSE_POWER_3_3.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_TO_HOUSE_POWER_4_1.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_TO_HOUSE_POWER_4_2.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_TO_HOUSE_POWER_4_3.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_TO_HOUSE_POWER_5_1.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_TO_HOUSE_POWER_5_2.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_TO_HOUSE_POWER_5_3.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_TO_HOUSE_POWER_6_1.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_TO_HOUSE_POWER_6_2.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_TO_HOUSE_POWER_6_3.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_TO_HOUSE_POWER_7_1.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_TO_HOUSE_POWER_7_2.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_TO_HOUSE_POWER_7_3.get());
|
|
}
|
|
} else if (distance <= 500.0) {
|
|
soundPool = ServerExplosionHandler.getSoundPoolForPower(power, (SoundEvent)ModSounds.EXPLODE_MEDIUM_POWER_1_1.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_POWER_1_2.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_POWER_1_3.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_POWER_2_1.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_POWER_2_2.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_POWER_2_3.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_POWER_3_1.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_POWER_3_2.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_POWER_3_3.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_POWER_4_1.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_POWER_4_2.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_POWER_4_3.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_POWER_5_1.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_POWER_5_2.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_POWER_5_3.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_POWER_6_1.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_POWER_6_2.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_POWER_6_3.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_POWER_7_1.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_POWER_7_2.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_POWER_7_3.get());
|
|
} else if (distance <= 1000.0) {
|
|
soundPool = ServerExplosionHandler.getSoundPoolForPower(power, (SoundEvent)ModSounds.EXPLODE_FAR_POWER_1_1.get(), (SoundEvent)ModSounds.EXPLODE_FAR_POWER_1_2.get(), (SoundEvent)ModSounds.EXPLODE_FAR_POWER_1_3.get(), (SoundEvent)ModSounds.EXPLODE_FAR_POWER_2_1.get(), (SoundEvent)ModSounds.EXPLODE_FAR_POWER_2_2.get(), (SoundEvent)ModSounds.EXPLODE_FAR_POWER_2_3.get(), (SoundEvent)ModSounds.EXPLODE_FAR_POWER_3_1.get(), (SoundEvent)ModSounds.EXPLODE_FAR_POWER_3_2.get(), (SoundEvent)ModSounds.EXPLODE_FAR_POWER_3_3.get(), (SoundEvent)ModSounds.EXPLODE_FAR_POWER_4_1.get(), (SoundEvent)ModSounds.EXPLODE_FAR_POWER_4_2.get(), (SoundEvent)ModSounds.EXPLODE_FAR_POWER_4_3.get(), (SoundEvent)ModSounds.EXPLODE_FAR_POWER_5_1.get(), (SoundEvent)ModSounds.EXPLODE_FAR_POWER_5_2.get(), (SoundEvent)ModSounds.EXPLODE_FAR_POWER_5_3.get(), (SoundEvent)ModSounds.EXPLODE_FAR_POWER_6_1.get(), (SoundEvent)ModSounds.EXPLODE_FAR_POWER_6_2.get(), (SoundEvent)ModSounds.EXPLODE_FAR_POWER_6_3.get(), (SoundEvent)ModSounds.EXPLODE_FAR_POWER_7_1.get(), (SoundEvent)ModSounds.EXPLODE_FAR_POWER_7_2.get(), (SoundEvent)ModSounds.EXPLODE_FAR_POWER_7_3.get());
|
|
} else if (distance <= 5000.0) {
|
|
soundPool = ServerExplosionHandler.getSoundPoolForPower(power, (SoundEvent)ModSounds.EXPLODE_SUPERFAR_POWER_1_1.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_POWER_1_2.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_POWER_1_3.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_POWER_2_1.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_POWER_2_2.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_POWER_2_3.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_POWER_3_1.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_POWER_3_2.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_POWER_3_3.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_POWER_4_1.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_POWER_4_2.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_POWER_4_3.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_POWER_5_1.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_POWER_5_2.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_POWER_5_3.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_POWER_6_1.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_POWER_6_2.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_POWER_6_3.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_POWER_7_1.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_POWER_7_2.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_POWER_7_3.get());
|
|
}
|
|
} else if (distance <= 500.0) {
|
|
soundPool = playerInHouse && explosionIsInCaveLocation ? ServerExplosionHandler.getSoundPoolForPower(power, (SoundEvent)ModSounds.EXPLODE_MEDIUM_CAVE_TO_HOUSE_POWER_1_1.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_CAVE_TO_HOUSE_POWER_1_2.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_CAVE_TO_HOUSE_POWER_1_3.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_CAVE_TO_HOUSE_POWER_2_1.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_CAVE_TO_HOUSE_POWER_2_2.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_CAVE_TO_HOUSE_POWER_2_3.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_CAVE_TO_HOUSE_POWER_3_1.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_CAVE_TO_HOUSE_POWER_3_2.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_CAVE_TO_HOUSE_POWER_3_3.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_CAVE_TO_HOUSE_POWER_4_1.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_CAVE_TO_HOUSE_POWER_4_2.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_CAVE_TO_HOUSE_POWER_4_3.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_CAVE_TO_HOUSE_POWER_5_1.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_CAVE_TO_HOUSE_POWER_5_2.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_CAVE_TO_HOUSE_POWER_5_3.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_CAVE_TO_HOUSE_POWER_6_1.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_CAVE_TO_HOUSE_POWER_6_2.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_CAVE_TO_HOUSE_POWER_6_3.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_CAVE_TO_HOUSE_POWER_7_1.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_CAVE_TO_HOUSE_POWER_7_2.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_CAVE_TO_HOUSE_POWER_7_3.get()) : (playerInHouse ? ServerExplosionHandler.getSoundPoolForPower(power, (SoundEvent)ModSounds.EXPLODE_MEDIUM_TO_HOUSE_POWER_1_1.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_TO_HOUSE_POWER_1_2.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_TO_HOUSE_POWER_1_3.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_TO_HOUSE_POWER_2_1.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_TO_HOUSE_POWER_2_2.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_TO_HOUSE_POWER_2_3.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_TO_HOUSE_POWER_3_1.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_TO_HOUSE_POWER_3_2.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_TO_HOUSE_POWER_3_3.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_TO_HOUSE_POWER_4_1.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_TO_HOUSE_POWER_4_2.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_TO_HOUSE_POWER_4_3.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_TO_HOUSE_POWER_5_1.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_TO_HOUSE_POWER_5_2.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_TO_HOUSE_POWER_5_3.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_TO_HOUSE_POWER_6_1.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_TO_HOUSE_POWER_6_2.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_TO_HOUSE_POWER_6_3.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_TO_HOUSE_POWER_7_1.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_TO_HOUSE_POWER_7_2.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_TO_HOUSE_POWER_7_3.get()) : (explosionIsInCaveLocation && !playerInCave ? ServerExplosionHandler.getSoundPoolForPower(power, (SoundEvent)ModSounds.EXPLODE_MEDIUM_UNDERGROUND_POWER_1_1.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_UNDERGROUND_POWER_1_2.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_UNDERGROUND_POWER_1_3.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_UNDERGROUND_POWER_2_1.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_UNDERGROUND_POWER_2_2.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_UNDERGROUND_POWER_2_3.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_UNDERGROUND_POWER_3_1.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_UNDERGROUND_POWER_3_2.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_UNDERGROUND_POWER_3_3.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_UNDERGROUND_POWER_4_1.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_UNDERGROUND_POWER_4_2.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_UNDERGROUND_POWER_4_3.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_UNDERGROUND_POWER_5_1.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_UNDERGROUND_POWER_5_2.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_UNDERGROUND_POWER_5_3.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_UNDERGROUND_POWER_6_1.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_UNDERGROUND_POWER_6_2.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_UNDERGROUND_POWER_6_3.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_UNDERGROUND_POWER_7_1.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_UNDERGROUND_POWER_7_2.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_UNDERGROUND_POWER_7_3.get()) : (playerInCave ? ServerExplosionHandler.getSoundPoolForPower(power, (SoundEvent)ModSounds.EXPLODE_MEDIUM_CAVE_POWER_1_1.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_CAVE_POWER_1_2.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_CAVE_POWER_1_3.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_CAVE_POWER_2_1.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_CAVE_POWER_2_2.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_CAVE_POWER_2_3.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_CAVE_POWER_3_1.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_CAVE_POWER_3_2.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_CAVE_POWER_3_3.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_CAVE_POWER_4_1.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_CAVE_POWER_4_2.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_CAVE_POWER_4_3.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_CAVE_POWER_5_1.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_CAVE_POWER_5_2.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_CAVE_POWER_5_3.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_CAVE_POWER_6_1.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_CAVE_POWER_6_2.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_CAVE_POWER_6_3.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_CAVE_POWER_7_1.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_CAVE_POWER_7_2.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_CAVE_POWER_7_3.get()) : ServerExplosionHandler.getSoundPoolForPower(power, (SoundEvent)ModSounds.EXPLODE_MEDIUM_POWER_1_1.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_POWER_1_2.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_POWER_1_3.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_POWER_2_1.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_POWER_2_2.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_POWER_2_3.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_POWER_3_1.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_POWER_3_2.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_POWER_3_3.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_POWER_4_1.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_POWER_4_2.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_POWER_4_3.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_POWER_5_1.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_POWER_5_2.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_POWER_5_3.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_POWER_6_1.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_POWER_6_2.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_POWER_6_3.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_POWER_7_1.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_POWER_7_2.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_POWER_7_3.get()))));
|
|
} else if (distance <= 1000.0) {
|
|
soundPool = playerInHouse && explosionIsInCaveLocation ? ServerExplosionHandler.getSoundPoolForPower(power, (SoundEvent)ModSounds.EXPLODE_FAR_CAVE_TO_HOUSE_POWER_1_1.get(), (SoundEvent)ModSounds.EXPLODE_FAR_CAVE_TO_HOUSE_POWER_1_2.get(), (SoundEvent)ModSounds.EXPLODE_FAR_CAVE_TO_HOUSE_POWER_1_3.get(), (SoundEvent)ModSounds.EXPLODE_FAR_CAVE_TO_HOUSE_POWER_2_1.get(), (SoundEvent)ModSounds.EXPLODE_FAR_CAVE_TO_HOUSE_POWER_2_2.get(), (SoundEvent)ModSounds.EXPLODE_FAR_CAVE_TO_HOUSE_POWER_2_3.get(), (SoundEvent)ModSounds.EXPLODE_FAR_CAVE_TO_HOUSE_POWER_3_1.get(), (SoundEvent)ModSounds.EXPLODE_FAR_CAVE_TO_HOUSE_POWER_3_2.get(), (SoundEvent)ModSounds.EXPLODE_FAR_CAVE_TO_HOUSE_POWER_3_3.get(), (SoundEvent)ModSounds.EXPLODE_FAR_CAVE_TO_HOUSE_POWER_4_1.get(), (SoundEvent)ModSounds.EXPLODE_FAR_CAVE_TO_HOUSE_POWER_4_2.get(), (SoundEvent)ModSounds.EXPLODE_FAR_CAVE_TO_HOUSE_POWER_4_3.get(), (SoundEvent)ModSounds.EXPLODE_FAR_CAVE_TO_HOUSE_POWER_5_1.get(), (SoundEvent)ModSounds.EXPLODE_FAR_CAVE_TO_HOUSE_POWER_5_2.get(), (SoundEvent)ModSounds.EXPLODE_FAR_CAVE_TO_HOUSE_POWER_5_3.get(), (SoundEvent)ModSounds.EXPLODE_FAR_CAVE_TO_HOUSE_POWER_6_1.get(), (SoundEvent)ModSounds.EXPLODE_FAR_CAVE_TO_HOUSE_POWER_6_2.get(), (SoundEvent)ModSounds.EXPLODE_FAR_CAVE_TO_HOUSE_POWER_6_3.get(), (SoundEvent)ModSounds.EXPLODE_FAR_CAVE_TO_HOUSE_POWER_7_1.get(), (SoundEvent)ModSounds.EXPLODE_FAR_CAVE_TO_HOUSE_POWER_7_2.get(), (SoundEvent)ModSounds.EXPLODE_FAR_CAVE_TO_HOUSE_POWER_7_3.get()) : (playerInHouse ? ServerExplosionHandler.getSoundPoolForPower(power, (SoundEvent)ModSounds.EXPLODE_FAR_TO_HOUSE_POWER_1_1.get(), (SoundEvent)ModSounds.EXPLODE_FAR_TO_HOUSE_POWER_1_2.get(), (SoundEvent)ModSounds.EXPLODE_FAR_TO_HOUSE_POWER_1_3.get(), (SoundEvent)ModSounds.EXPLODE_FAR_TO_HOUSE_POWER_2_1.get(), (SoundEvent)ModSounds.EXPLODE_FAR_TO_HOUSE_POWER_2_2.get(), (SoundEvent)ModSounds.EXPLODE_FAR_TO_HOUSE_POWER_2_3.get(), (SoundEvent)ModSounds.EXPLODE_FAR_TO_HOUSE_POWER_3_1.get(), (SoundEvent)ModSounds.EXPLODE_FAR_TO_HOUSE_POWER_3_2.get(), (SoundEvent)ModSounds.EXPLODE_FAR_TO_HOUSE_POWER_3_3.get(), (SoundEvent)ModSounds.EXPLODE_FAR_TO_HOUSE_POWER_4_1.get(), (SoundEvent)ModSounds.EXPLODE_FAR_TO_HOUSE_POWER_4_2.get(), (SoundEvent)ModSounds.EXPLODE_FAR_TO_HOUSE_POWER_4_3.get(), (SoundEvent)ModSounds.EXPLODE_FAR_TO_HOUSE_POWER_5_1.get(), (SoundEvent)ModSounds.EXPLODE_FAR_TO_HOUSE_POWER_5_2.get(), (SoundEvent)ModSounds.EXPLODE_FAR_TO_HOUSE_POWER_5_3.get(), (SoundEvent)ModSounds.EXPLODE_FAR_TO_HOUSE_POWER_6_1.get(), (SoundEvent)ModSounds.EXPLODE_FAR_TO_HOUSE_POWER_6_2.get(), (SoundEvent)ModSounds.EXPLODE_FAR_TO_HOUSE_POWER_6_3.get(), (SoundEvent)ModSounds.EXPLODE_FAR_TO_HOUSE_POWER_7_1.get(), (SoundEvent)ModSounds.EXPLODE_FAR_TO_HOUSE_POWER_7_2.get(), (SoundEvent)ModSounds.EXPLODE_FAR_TO_HOUSE_POWER_7_3.get()) : (explosionIsInCaveLocation && !playerInCave ? ServerExplosionHandler.getSoundPoolForPower(power, (SoundEvent)ModSounds.EXPLODE_FAR_UNDERGROUND_POWER_1_1.get(), (SoundEvent)ModSounds.EXPLODE_FAR_UNDERGROUND_POWER_1_2.get(), (SoundEvent)ModSounds.EXPLODE_FAR_UNDERGROUND_POWER_1_3.get(), (SoundEvent)ModSounds.EXPLODE_FAR_UNDERGROUND_POWER_2_1.get(), (SoundEvent)ModSounds.EXPLODE_FAR_UNDERGROUND_POWER_2_2.get(), (SoundEvent)ModSounds.EXPLODE_FAR_UNDERGROUND_POWER_2_3.get(), (SoundEvent)ModSounds.EXPLODE_FAR_UNDERGROUND_POWER_3_1.get(), (SoundEvent)ModSounds.EXPLODE_FAR_UNDERGROUND_POWER_3_2.get(), (SoundEvent)ModSounds.EXPLODE_FAR_UNDERGROUND_POWER_3_3.get(), (SoundEvent)ModSounds.EXPLODE_FAR_UNDERGROUND_POWER_4_1.get(), (SoundEvent)ModSounds.EXPLODE_FAR_UNDERGROUND_POWER_4_2.get(), (SoundEvent)ModSounds.EXPLODE_FAR_UNDERGROUND_POWER_4_3.get(), (SoundEvent)ModSounds.EXPLODE_FAR_UNDERGROUND_POWER_5_1.get(), (SoundEvent)ModSounds.EXPLODE_FAR_UNDERGROUND_POWER_5_2.get(), (SoundEvent)ModSounds.EXPLODE_FAR_UNDERGROUND_POWER_5_3.get(), (SoundEvent)ModSounds.EXPLODE_FAR_UNDERGROUND_POWER_6_1.get(), (SoundEvent)ModSounds.EXPLODE_FAR_UNDERGROUND_POWER_6_2.get(), (SoundEvent)ModSounds.EXPLODE_FAR_UNDERGROUND_POWER_6_3.get(), (SoundEvent)ModSounds.EXPLODE_FAR_UNDERGROUND_POWER_7_1.get(), (SoundEvent)ModSounds.EXPLODE_FAR_UNDERGROUND_POWER_7_2.get(), (SoundEvent)ModSounds.EXPLODE_FAR_UNDERGROUND_POWER_7_3.get()) : (playerInCave ? ServerExplosionHandler.getSoundPoolForPower(power, (SoundEvent)ModSounds.EXPLODE_FAR_CAVE_POWER_1_1.get(), (SoundEvent)ModSounds.EXPLODE_FAR_CAVE_POWER_1_2.get(), (SoundEvent)ModSounds.EXPLODE_FAR_CAVE_POWER_1_3.get(), (SoundEvent)ModSounds.EXPLODE_FAR_CAVE_POWER_2_1.get(), (SoundEvent)ModSounds.EXPLODE_FAR_CAVE_POWER_2_2.get(), (SoundEvent)ModSounds.EXPLODE_FAR_CAVE_POWER_2_3.get(), (SoundEvent)ModSounds.EXPLODE_FAR_CAVE_POWER_3_1.get(), (SoundEvent)ModSounds.EXPLODE_FAR_CAVE_POWER_3_2.get(), (SoundEvent)ModSounds.EXPLODE_FAR_CAVE_POWER_3_3.get(), (SoundEvent)ModSounds.EXPLODE_FAR_CAVE_POWER_4_1.get(), (SoundEvent)ModSounds.EXPLODE_FAR_CAVE_POWER_4_2.get(), (SoundEvent)ModSounds.EXPLODE_FAR_CAVE_POWER_4_3.get(), (SoundEvent)ModSounds.EXPLODE_FAR_CAVE_POWER_5_1.get(), (SoundEvent)ModSounds.EXPLODE_FAR_CAVE_POWER_5_2.get(), (SoundEvent)ModSounds.EXPLODE_FAR_CAVE_POWER_5_3.get(), (SoundEvent)ModSounds.EXPLODE_FAR_CAVE_POWER_6_1.get(), (SoundEvent)ModSounds.EXPLODE_FAR_CAVE_POWER_6_2.get(), (SoundEvent)ModSounds.EXPLODE_FAR_CAVE_POWER_6_3.get(), (SoundEvent)ModSounds.EXPLODE_FAR_CAVE_POWER_7_1.get(), (SoundEvent)ModSounds.EXPLODE_FAR_CAVE_POWER_7_2.get(), (SoundEvent)ModSounds.EXPLODE_FAR_CAVE_POWER_7_3.get()) : ServerExplosionHandler.getSoundPoolForPower(power, (SoundEvent)ModSounds.EXPLODE_FAR_POWER_1_1.get(), (SoundEvent)ModSounds.EXPLODE_FAR_POWER_1_2.get(), (SoundEvent)ModSounds.EXPLODE_FAR_POWER_1_3.get(), (SoundEvent)ModSounds.EXPLODE_FAR_POWER_2_1.get(), (SoundEvent)ModSounds.EXPLODE_FAR_POWER_2_2.get(), (SoundEvent)ModSounds.EXPLODE_FAR_POWER_2_3.get(), (SoundEvent)ModSounds.EXPLODE_FAR_POWER_3_1.get(), (SoundEvent)ModSounds.EXPLODE_FAR_POWER_3_2.get(), (SoundEvent)ModSounds.EXPLODE_FAR_POWER_3_3.get(), (SoundEvent)ModSounds.EXPLODE_FAR_POWER_4_1.get(), (SoundEvent)ModSounds.EXPLODE_FAR_POWER_4_2.get(), (SoundEvent)ModSounds.EXPLODE_FAR_POWER_4_3.get(), (SoundEvent)ModSounds.EXPLODE_FAR_POWER_5_1.get(), (SoundEvent)ModSounds.EXPLODE_FAR_POWER_5_2.get(), (SoundEvent)ModSounds.EXPLODE_FAR_POWER_5_3.get(), (SoundEvent)ModSounds.EXPLODE_FAR_POWER_6_1.get(), (SoundEvent)ModSounds.EXPLODE_FAR_POWER_6_2.get(), (SoundEvent)ModSounds.EXPLODE_FAR_POWER_6_3.get(), (SoundEvent)ModSounds.EXPLODE_FAR_POWER_7_1.get(), (SoundEvent)ModSounds.EXPLODE_FAR_POWER_7_2.get(), (SoundEvent)ModSounds.EXPLODE_FAR_POWER_7_3.get()))));
|
|
} else if (distance <= 5000.0) {
|
|
soundPool = playerInHouse && explosionIsInCaveLocation ? ServerExplosionHandler.getSoundPoolForPower(power, (SoundEvent)ModSounds.EXPLODE_SUPERFAR_CAVE_TO_HOUSE_POWER_1_1.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_CAVE_TO_HOUSE_POWER_1_2.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_CAVE_TO_HOUSE_POWER_1_3.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_CAVE_TO_HOUSE_POWER_2_1.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_CAVE_TO_HOUSE_POWER_2_2.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_CAVE_TO_HOUSE_POWER_2_3.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_CAVE_TO_HOUSE_POWER_3_1.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_CAVE_TO_HOUSE_POWER_3_2.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_CAVE_TO_HOUSE_POWER_3_3.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_CAVE_TO_HOUSE_POWER_4_1.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_CAVE_TO_HOUSE_POWER_4_2.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_CAVE_TO_HOUSE_POWER_4_3.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_CAVE_TO_HOUSE_POWER_5_1.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_CAVE_TO_HOUSE_POWER_5_2.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_CAVE_TO_HOUSE_POWER_5_3.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_CAVE_TO_HOUSE_POWER_6_1.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_CAVE_TO_HOUSE_POWER_6_2.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_CAVE_TO_HOUSE_POWER_6_3.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_CAVE_TO_HOUSE_POWER_7_1.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_CAVE_TO_HOUSE_POWER_7_2.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_CAVE_TO_HOUSE_POWER_7_3.get()) : (playerInHouse ? ServerExplosionHandler.getSoundPoolForPower(power, (SoundEvent)ModSounds.EXPLODE_SUPERFAR_TO_HOUSE_POWER_1_1.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_TO_HOUSE_POWER_1_2.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_TO_HOUSE_POWER_1_3.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_TO_HOUSE_POWER_2_1.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_TO_HOUSE_POWER_2_2.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_TO_HOUSE_POWER_2_3.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_TO_HOUSE_POWER_3_1.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_TO_HOUSE_POWER_3_2.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_TO_HOUSE_POWER_3_3.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_TO_HOUSE_POWER_4_1.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_TO_HOUSE_POWER_4_2.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_TO_HOUSE_POWER_4_3.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_TO_HOUSE_POWER_5_1.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_TO_HOUSE_POWER_5_2.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_TO_HOUSE_POWER_5_3.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_TO_HOUSE_POWER_6_1.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_TO_HOUSE_POWER_6_2.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_TO_HOUSE_POWER_6_3.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_TO_HOUSE_POWER_7_1.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_TO_HOUSE_POWER_7_2.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_TO_HOUSE_POWER_7_3.get()) : (explosionIsInCaveLocation && !playerInCave ? ServerExplosionHandler.getSoundPoolForPower(power, (SoundEvent)ModSounds.EXPLODE_SUPERFAR_UNDERGROUND_POWER_1_1.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_UNDERGROUND_POWER_1_2.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_UNDERGROUND_POWER_1_3.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_UNDERGROUND_POWER_2_1.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_UNDERGROUND_POWER_2_2.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_UNDERGROUND_POWER_2_3.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_UNDERGROUND_POWER_3_1.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_UNDERGROUND_POWER_3_2.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_UNDERGROUND_POWER_3_3.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_UNDERGROUND_POWER_4_1.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_UNDERGROUND_POWER_4_2.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_UNDERGROUND_POWER_4_3.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_UNDERGROUND_POWER_5_1.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_UNDERGROUND_POWER_5_2.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_UNDERGROUND_POWER_5_3.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_UNDERGROUND_POWER_6_1.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_UNDERGROUND_POWER_6_2.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_UNDERGROUND_POWER_6_3.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_UNDERGROUND_POWER_7_1.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_UNDERGROUND_POWER_7_2.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_UNDERGROUND_POWER_7_3.get()) : (playerInCave ? ServerExplosionHandler.getSoundPoolForPower(power, (SoundEvent)ModSounds.EXPLODE_SUPERFAR_CAVE_POWER_1_1.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_CAVE_POWER_1_2.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_CAVE_POWER_1_3.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_CAVE_POWER_2_1.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_CAVE_POWER_2_2.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_CAVE_POWER_2_3.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_CAVE_POWER_3_1.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_CAVE_POWER_3_2.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_CAVE_POWER_3_3.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_CAVE_POWER_4_1.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_CAVE_POWER_4_2.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_CAVE_POWER_4_3.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_CAVE_POWER_5_1.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_CAVE_POWER_5_2.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_CAVE_POWER_5_3.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_CAVE_POWER_6_1.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_CAVE_POWER_6_2.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_CAVE_POWER_6_3.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_CAVE_POWER_7_1.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_CAVE_POWER_7_2.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_CAVE_POWER_7_3.get()) : ServerExplosionHandler.getSoundPoolForPower(power, (SoundEvent)ModSounds.EXPLODE_SUPERFAR_POWER_1_1.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_POWER_1_2.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_POWER_1_3.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_POWER_2_1.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_POWER_2_2.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_POWER_2_3.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_POWER_3_1.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_POWER_3_2.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_POWER_3_3.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_POWER_4_1.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_POWER_4_2.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_POWER_4_3.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_POWER_5_1.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_POWER_5_2.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_POWER_5_3.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_POWER_6_1.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_POWER_6_2.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_POWER_6_3.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_POWER_7_1.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_POWER_7_2.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_POWER_7_3.get()))));
|
|
}
|
|
if (!(soundPool != null || distance > 5000.0 && distance <= 6000.0 && power > 60.0f) && distance > 5000.0) continue;
|
|
}
|
|
if (!((Boolean)Config.COMMON.enableAdvancedSoundSpeed.get()).booleanValue()) {
|
|
speedOfSound = 343.0;
|
|
delayTicksEffect = (long)(distance / (speedOfSound / 20.0));
|
|
} else {
|
|
speedOfSound = distance <= 20.0 ? 40.0 : (distance <= 40.0 ? 40.0 : (distance <= 80.0 ? 80.0 : (distance <= 160.0 ? 66.7 : (distance <= 240.0 ? 266.7 : 343.0))));
|
|
double speedPerTick = speedOfSound / 20.0;
|
|
delayTicksEffect = distance <= 240.0 ? (long)(distance / speedPerTick) : (long)(distance / 17.15);
|
|
}
|
|
if (soundPool != null && !soundPool.isEmpty()) {
|
|
boolean useAmbientSound;
|
|
SoundEvent sound = soundPool.get(this.random.nextInt(soundPool.size()));
|
|
float pitch = 0.95f + this.random.nextFloat() * 0.1f;
|
|
float volume = Math.min(power * 10.0f, 90.0f);
|
|
boolean bl3 = useAmbientSound = !hasDirectLineOfSight && (playerInCave || explosionIsInCaveLocation);
|
|
if (distance <= (double)closeSoundDistanceThreshold) {
|
|
ExplosionOverhaul.addDelayedSound(player, sound, SoundSource.BLOCKS, (float)explosionPos.f_82479_, (float)explosionPos.f_82480_, (float)explosionPos.f_82481_, volume, pitch, player.m_217043_().m_188505_(), delayTicksEffect);
|
|
} else if (useAmbientSound) {
|
|
ExplosionOverhaul.addDelayedSound(player, sound, SoundSource.AMBIENT, (float)player.m_20185_(), (float)player.m_20186_(), (float)player.m_20189_(), volume, pitch, player.m_217043_().m_188505_(), delayTicksEffect);
|
|
} else {
|
|
ResourceLocation soundId = ForgeRegistries.SOUND_EVENTS.getKey((Object)sound);
|
|
if (soundId != null) {
|
|
PacketHandler.INSTANCE.send(PacketDistributor.PLAYER.with(() -> player), (Object)new PlayTrackedSoundPacket(explosionPos, soundId, volume, pitch, delayTicksEffect, playerInHouse));
|
|
}
|
|
}
|
|
}
|
|
float fireballPowerFraction = Mth.m_14036_((float)power, (float)1.0f, (float)100.0f) / 100.0f;
|
|
float fireballRadius = Mth.m_14179_((float)fireballPowerFraction, (float)3.0f, (float)40.0f);
|
|
float normalizedPowerSqrt = Mth.m_184655_((float)((float)Math.sqrt(power)), (float)((float)Math.sqrt(5.0)), (float)((float)Math.sqrt(100.0)));
|
|
float shockwaveMultiplier = Mth.m_14179_((float)normalizedPowerSqrt, (float)2.0f, (float)8.0f);
|
|
float maxShockwaveRadius = fireballRadius * shockwaveMultiplier * 3.0f;
|
|
if (distance <= (double)(maxShockwaveRadius *= 4.0f)) {
|
|
float sendIntensity;
|
|
CameraShakeProfile closeProfile = this.determineCameraShakeProfile(power, 0.0, playerInCave, closeSoundDistanceThreshold, level);
|
|
float baseIntensity = closeProfile.intensity;
|
|
int durationTicks = closeProfile.durationTicks;
|
|
float basePush = closeProfile.pushIntensity;
|
|
if (distance <= 10.0) {
|
|
sendIntensity = baseIntensity;
|
|
} else {
|
|
float t = 1.0f - Mth.m_14036_((float)((float)(distance / (double)maxShockwaveRadius)), (float)0.0f, (float)1.0f);
|
|
float atten = t * t;
|
|
sendIntensity = baseIntensity * atten;
|
|
}
|
|
if (sendIntensity > 0.01f && durationTicks > 0) {
|
|
int delayTicks = (int)Math.max(0L, Math.round(distance / speedOfSound));
|
|
PacketHandler.INSTANCE.send(PacketDistributor.PLAYER.with(() -> player), (Object)new CameraShakePacket(sendIntensity, durationTicks, basePush, delayTicks));
|
|
}
|
|
}
|
|
float lampFlickerPowerThreshold = distance > 1000.0 && distance <= 5000.0 ? 31.0f : (distance > 500.0 && distance <= 1000.0 ? 20.0f : (distance > (double)closeSoundDistanceThreshold && distance <= 500.0 ? 10.0f : (distance <= (double)closeSoundDistanceThreshold ? 4.0f : Float.MAX_VALUE)));
|
|
PacketHandler.INSTANCE.send(PacketDistributor.PLAYER.with(() -> player), (Object)new ExplosionVisualsPacket(explosionPos, power));
|
|
PacketHandler.INSTANCE.send(PacketDistributor.PLAYER.with(() -> player), (Object)new FlashEffectPacket(explosionPos, power));
|
|
if (power >= lampFlickerPowerThreshold) {
|
|
RedstoneLampEffects.triggerLampFlicker(level, player, power, delayTicksEffect, distance);
|
|
if (((Boolean)Config.COMMON.enableDripstoneFalling.get()).booleanValue()) {
|
|
DripstoneEffects.handleDripstoneFall(level, player.m_20183_(), (int)power, level.f_46441_);
|
|
}
|
|
}
|
|
if (power >= 5.0f) {
|
|
PacketHandler.INSTANCE.send(PacketDistributor.PLAYER.with(() -> player), (Object)new SpawnShockwavePacket(explosionPos, power));
|
|
}
|
|
if (power >= 5.0f) {
|
|
PacketHandler.INSTANCE.send(PacketDistributor.PLAYER.with(() -> player), (Object)new SpawnDustCloudPacket(explosionPos, power));
|
|
}
|
|
if (power >= 5.0f) {
|
|
PacketHandler.INSTANCE.send(PacketDistributor.PLAYER.with(() -> player), (Object)new SpawnMistCloudPacket(explosionPos, power));
|
|
}
|
|
if (!playerInCave) continue;
|
|
ExplosionOverhaul.CaveEffects.spawnFallingBlocksAndDust(level, explosionPos, player, power, delayTicksEffect);
|
|
}
|
|
if (power >= 2.0f) {
|
|
SpawnLineSparksPacket packet = new SpawnLineSparksPacket(explosionPos, power);
|
|
PacketDistributor.TargetPoint targetPoint = new PacketDistributor.TargetPoint(explosionPos.m_7096_(), explosionPos.m_7098_(), explosionPos.m_7094_(), 700.0, level.m_46472_());
|
|
PacketHandler.INSTANCE.send(PacketDistributor.NEAR.with(() -> targetPoint), (Object)packet);
|
|
}
|
|
}
|
|
|
|
private CameraShakeProfile determineCameraShakeProfile(float power, double distance, boolean playerInCave, int actualCloseDistance, ServerLevel level) {
|
|
float intensity = 0.0f;
|
|
int baseDuration = 20;
|
|
float pushIntensity = 0.0f;
|
|
int baseMediumDistance = 500;
|
|
int baseFarDistance = 1000;
|
|
int baseSuperFarDistance = 5000;
|
|
int mediumDistance = Math.round(2000.0f);
|
|
int farDistance = Math.round(4000.0f);
|
|
int superFarDistance = Math.round(20000.0f);
|
|
int scaledCloseDistance = Math.round((float)actualCloseDistance * 4.0f);
|
|
int powerCategory = power <= 3.0f ? 1 : (power <= 6.0f ? 2 : (power <= 14.0f ? 3 : (power <= 30.0f ? 4 : (power <= 60.0f ? 5 : (power <= 99.0f ? 6 : 7)))));
|
|
int shakeLevel = 0;
|
|
if (distance <= (double)scaledCloseDistance) {
|
|
if (powerCategory == 1) {
|
|
shakeLevel = 2;
|
|
baseDuration = 15;
|
|
} else if (powerCategory == 2) {
|
|
shakeLevel = 3;
|
|
baseDuration = 20;
|
|
} else if (powerCategory == 3) {
|
|
shakeLevel = 3;
|
|
baseDuration = 25;
|
|
} else if (powerCategory == 4) {
|
|
shakeLevel = 4;
|
|
baseDuration = 30;
|
|
} else if (powerCategory == 5) {
|
|
shakeLevel = 4;
|
|
baseDuration = 35;
|
|
} else if (powerCategory == 6) {
|
|
shakeLevel = 5;
|
|
baseDuration = 40;
|
|
} else if (powerCategory >= 7) {
|
|
shakeLevel = 5;
|
|
baseDuration = 50;
|
|
}
|
|
} else if (distance <= (double)mediumDistance) {
|
|
if (powerCategory == 1) {
|
|
shakeLevel = 2;
|
|
baseDuration = 10;
|
|
} else if (powerCategory == 2) {
|
|
shakeLevel = 2;
|
|
baseDuration = 15;
|
|
} else if (powerCategory == 3) {
|
|
shakeLevel = 2;
|
|
baseDuration = 20;
|
|
} else if (powerCategory == 4) {
|
|
shakeLevel = 3;
|
|
baseDuration = 20;
|
|
} else if (powerCategory == 5) {
|
|
shakeLevel = 3;
|
|
baseDuration = 25;
|
|
} else if (powerCategory == 6) {
|
|
shakeLevel = 4;
|
|
baseDuration = 30;
|
|
} else if (powerCategory >= 7) {
|
|
shakeLevel = 4;
|
|
baseDuration = 35;
|
|
}
|
|
} else if (distance <= (double)farDistance) {
|
|
if (powerCategory == 4) {
|
|
shakeLevel = 2;
|
|
baseDuration = 10;
|
|
} else if (powerCategory == 5) {
|
|
shakeLevel = 2;
|
|
baseDuration = 15;
|
|
} else if (powerCategory == 6) {
|
|
shakeLevel = 3;
|
|
baseDuration = 20;
|
|
} else if (powerCategory >= 7) {
|
|
shakeLevel = 3;
|
|
baseDuration = 25;
|
|
}
|
|
} else if (distance <= (double)superFarDistance) {
|
|
if (powerCategory == 5) {
|
|
shakeLevel = 1;
|
|
baseDuration = 10;
|
|
} else if (powerCategory == 6) {
|
|
shakeLevel = 2;
|
|
baseDuration = 15;
|
|
} else if (powerCategory >= 7) {
|
|
shakeLevel = 3;
|
|
baseDuration = 20;
|
|
}
|
|
}
|
|
switch (shakeLevel) {
|
|
case 1: {
|
|
intensity = 0.3f;
|
|
break;
|
|
}
|
|
case 2: {
|
|
intensity = 0.9f;
|
|
break;
|
|
}
|
|
case 3: {
|
|
intensity = 2.0f;
|
|
break;
|
|
}
|
|
case 4: {
|
|
intensity = 3.25f;
|
|
break;
|
|
}
|
|
case 5: {
|
|
intensity = 4.5f;
|
|
break;
|
|
}
|
|
default: {
|
|
intensity = 0.0f;
|
|
baseDuration = 0;
|
|
}
|
|
}
|
|
if (playerInCave && intensity > 0.0f) {
|
|
if (shakeLevel >= 2) {
|
|
float basePush = 0.06f + (float)shakeLevel * 0.03f;
|
|
pushIntensity = Math.min(basePush * (power / 6.0f), 0.45f);
|
|
pushIntensity = Math.max(0.06f, pushIntensity);
|
|
}
|
|
if (distance > 10.0) {
|
|
float attenMax = superFarDistance;
|
|
if (attenMax <= 0.0f) {
|
|
attenMax = 1.0f;
|
|
}
|
|
float atten = 1.0f - Mth.m_14036_((float)((float)distance / attenMax), (float)0.0f, (float)1.0f);
|
|
intensity *= atten;
|
|
pushIntensity *= atten;
|
|
}
|
|
}
|
|
if (intensity > 0.01f && baseDuration < 5) {
|
|
baseDuration = 5;
|
|
}
|
|
if (intensity < 0.01f) {
|
|
intensity = 0.0f;
|
|
baseDuration = 0;
|
|
pushIntensity = 0.0f;
|
|
}
|
|
return new CameraShakeProfile(intensity, baseDuration, pushIntensity);
|
|
}
|
|
|
|
public static List<SoundEvent> getSoundPoolForPower(float power, SoundEvent ... sounds) {
|
|
if (sounds.length != 21) {
|
|
ExplosionOverhaul.LOGGER.error("Expected 21 sounds for power-based selection, but got " + sounds.length + ". Returning fallback.");
|
|
return sounds.length >= 3 ? List.of(sounds[0], sounds[1], sounds[2]) : List.of();
|
|
}
|
|
if (power <= 3.0f) {
|
|
return List.of(sounds[0], sounds[1], sounds[2]);
|
|
}
|
|
if (power <= 6.0f) {
|
|
return List.of(sounds[3], sounds[4], sounds[5]);
|
|
}
|
|
if (power <= 14.0f) {
|
|
return List.of(sounds[6], sounds[7], sounds[8]);
|
|
}
|
|
if (power <= 30.0f) {
|
|
return List.of(sounds[9], sounds[10], sounds[11]);
|
|
}
|
|
if (power <= 60.0f) {
|
|
return List.of(sounds[12], sounds[13], sounds[14]);
|
|
}
|
|
if (power <= 99.0f) {
|
|
return List.of(sounds[15], sounds[16], sounds[17]);
|
|
}
|
|
return List.of(sounds[18], sounds[19], sounds[20]);
|
|
}
|
|
|
|
public static boolean isInNaturalCave(ServerLevel level, BlockPos origin) {
|
|
BlockPos[] corners;
|
|
boolean isBelowY60;
|
|
boolean isBedrockLevel;
|
|
if (level.m_46472_() == Level.f_46430_) {
|
|
return false;
|
|
}
|
|
boolean bl = isBedrockLevel = origin.m_123342_() < level.m_141937_() + 5;
|
|
if (isBedrockLevel && !level.m_45527_(origin)) {
|
|
return true;
|
|
}
|
|
boolean bl2 = isBelowY60 = origin.m_123342_() < 60;
|
|
if (isBelowY60 && !level.m_45527_(origin)) {
|
|
return true;
|
|
}
|
|
int radius = 4;
|
|
for (int dy = 0; dy <= 55; ++dy) {
|
|
BlockPos[] upPos = origin.m_6630_(dy);
|
|
if (!level.m_46749_((BlockPos)upPos) || !level.m_45527_((BlockPos)upPos)) continue;
|
|
return false;
|
|
}
|
|
for (BlockPos corner : corners = new BlockPos[]{origin.m_7918_(radius, 0, radius), origin.m_7918_(radius, 0, -radius), origin.m_7918_(-radius, 0, radius), origin.m_7918_(-radius, 0, -radius)}) {
|
|
for (int dy = 0; dy <= 55; ++dy) {
|
|
BlockPos p = corner.m_6630_(dy);
|
|
if (!level.m_46749_(p) || !level.m_45527_(p)) continue;
|
|
return false;
|
|
}
|
|
}
|
|
int stoneCount = 0;
|
|
int solidCount = 0;
|
|
boolean skySeenInVicinity = false;
|
|
int checkedBlocks = 0;
|
|
List<Block> caveStoneBlocks = List.of(Blocks.f_50069_, Blocks.f_50652_, Blocks.f_50079_, Blocks.f_152550_, Blocks.f_152551_, Blocks.f_50334_, Blocks.f_50228_, Blocks.f_50122_, Blocks.f_152496_, Blocks.f_50134_, Blocks.f_50730_, Blocks.f_50137_, Blocks.f_50135_, Blocks.f_50136_);
|
|
for (int dx = -radius; dx <= radius; ++dx) {
|
|
for (int dy = -radius; dy <= radius; ++dy) {
|
|
for (int dz = -radius; dz <= radius; ++dz) {
|
|
BlockPos checkPos = origin.m_7918_(dx, dy, dz);
|
|
if (!level.m_46749_(checkPos)) continue;
|
|
++checkedBlocks;
|
|
BlockState state = level.m_8055_(checkPos);
|
|
if (state.m_280296_()) {
|
|
++solidCount;
|
|
if (!caveStoneBlocks.contains(state.m_60734_())) continue;
|
|
++stoneCount;
|
|
continue;
|
|
}
|
|
if (!level.m_45527_(checkPos)) continue;
|
|
return false;
|
|
}
|
|
}
|
|
}
|
|
if (checkedBlocks == 0) {
|
|
return false;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
public static boolean isInHouse(ServerLevel level, BlockPos origin, double playerEyeY) {
|
|
if (level.m_46472_() == Level.f_46430_) {
|
|
return false;
|
|
}
|
|
if (level.m_45527_(origin)) {
|
|
return false;
|
|
}
|
|
if (origin.m_123342_() < level.m_5736_() - 10 && level.m_46472_() == Level.f_46428_) {
|
|
return false;
|
|
}
|
|
int artificialBlockCount = 0;
|
|
int functionalBlockCount = 0;
|
|
boolean hasSolidRoofDirectlyAbove = false;
|
|
int radius = 2;
|
|
int checkedBlocks = 0;
|
|
List<String> artificialKeywords = Arrays.asList("planks", "log", "wood", "brick", "stone_brick", "glass", "wool", "terracotta", "concrete", "door", "fence", "stairs", "slab", "wall", "iron_block", "gold_block", "diamond_block", "emerald_block", "quartz_block", "purpur_block");
|
|
List<Block> specificArtificialBlocks = Arrays.asList(Blocks.f_50652_, Blocks.f_50079_);
|
|
List<Block> functionalBlocks = Arrays.asList(Blocks.f_50091_, Blocks.f_50094_, Blocks.f_50620_, Blocks.f_50619_, Blocks.f_50087_, Blocks.f_50325_, Blocks.f_50265_, Blocks.f_50618_, Blocks.f_50322_, Blocks.f_50323_, Blocks.f_50324_, Blocks.f_50624_, Blocks.f_50621_, Blocks.f_50617_, Blocks.f_50625_, Blocks.f_50623_, Blocks.f_50679_, Blocks.f_50680_, Blocks.f_50131_, Blocks.f_50255_);
|
|
BlockPos headPos = BlockPos.m_274561_((double)origin.m_123341_(), (double)playerEyeY, (double)origin.m_123343_());
|
|
if (level.m_8055_(headPos.m_6630_(1)).m_280296_() && level.m_8055_(headPos.m_6630_(2)).m_280296_()) {
|
|
hasSolidRoofDirectlyAbove = true;
|
|
}
|
|
for (int dx = -radius; dx <= radius; ++dx) {
|
|
for (int dy = -radius; dy <= radius; ++dy) {
|
|
for (int dz = -radius; dz <= radius; ++dz) {
|
|
BlockPos checkPos = origin.m_7918_(dx, dy, dz);
|
|
if (!level.m_46749_(checkPos)) continue;
|
|
++checkedBlocks;
|
|
BlockState state = level.m_8055_(checkPos);
|
|
Block block = state.m_60734_();
|
|
ResourceLocation registryName = ForgeRegistries.BLOCKS.getKey((Object)block);
|
|
String name = registryName != null ? registryName.m_135815_() : "";
|
|
boolean isKeywordArtificial = artificialKeywords.stream().anyMatch(name::contains);
|
|
if (state.m_280296_() && (isKeywordArtificial || specificArtificialBlocks.contains(block))) {
|
|
++artificialBlockCount;
|
|
}
|
|
if (!state.m_204336_(BlockTags.f_13038_) && !functionalBlocks.contains(block)) continue;
|
|
++functionalBlockCount;
|
|
}
|
|
}
|
|
}
|
|
if (checkedBlocks == 0) {
|
|
return false;
|
|
}
|
|
double artificialRatio = (double)artificialBlockCount / (double)checkedBlocks;
|
|
if (hasSolidRoofDirectlyAbove && (artificialBlockCount > 3 || functionalBlockCount > 0)) {
|
|
return true;
|
|
}
|
|
if (artificialBlockCount > 7 && (functionalBlockCount > 0 || artificialRatio > 0.35)) {
|
|
return true;
|
|
}
|
|
return artificialRatio > 0.2 && artificialBlockCount > 5;
|
|
}
|
|
|
|
public static boolean hasLineOfSight(ServerLevel level, Vec3 startPos, Vec3 endPos, Entity entityContext) {
|
|
if (startPos.equals((Object)endPos)) {
|
|
return true;
|
|
}
|
|
ClipContext clipContext = new ClipContext(startPos, endPos, ClipContext.Block.COLLIDER, ClipContext.Fluid.NONE, entityContext);
|
|
BlockHitResult hitResult = level.m_45547_(clipContext);
|
|
return hitResult.m_6662_() == HitResult.Type.MISS;
|
|
}
|
|
|
|
public static BlockPos findNearestSolidUp(ServerLevel level, BlockPos origin, int maxUp) {
|
|
for (int dy = 0; dy <= maxUp; ++dy) {
|
|
BlockState s;
|
|
BlockPos p = origin.m_6630_(dy);
|
|
if (!level.m_46749_(p) || !(s = level.m_8055_(p)).m_280296_()) continue;
|
|
return p;
|
|
}
|
|
return null;
|
|
}
|
|
|
|
public static List<SoundEvent> getSoundPool(Level level, float power, double distance, boolean playerInHouse, boolean explosionIsInCaveLocation) {
|
|
int closeSoundDistanceThreshold = level.m_46472_() == Level.f_46429_ ? 100 : (level.m_46472_() == Level.f_46430_ ? 150 : 50);
|
|
if (distance <= (double)closeSoundDistanceThreshold) {
|
|
if (power <= 3.0f) {
|
|
return List.of((SoundEvent)ModSounds.EXPLODE_CLOSE_POWER_1_1.get(), (SoundEvent)ModSounds.EXPLODE_CLOSE_POWER_1_2.get(), (SoundEvent)ModSounds.EXPLODE_CLOSE_POWER_1_3.get());
|
|
}
|
|
if (power <= 6.0f) {
|
|
return List.of((SoundEvent)ModSounds.EXPLODE_CLOSE_POWER_2_1.get(), (SoundEvent)ModSounds.EXPLODE_CLOSE_POWER_2_2.get(), (SoundEvent)ModSounds.EXPLODE_CLOSE_POWER_2_3.get());
|
|
}
|
|
if (power <= 14.0f) {
|
|
return List.of((SoundEvent)ModSounds.EXPLODE_CLOSE_POWER_3_1.get(), (SoundEvent)ModSounds.EXPLODE_CLOSE_POWER_3_2.get(), (SoundEvent)ModSounds.EXPLODE_CLOSE_POWER_3_3.get());
|
|
}
|
|
if (power <= 30.0f) {
|
|
return List.of((SoundEvent)ModSounds.EXPLODE_CLOSE_POWER_4_1.get(), (SoundEvent)ModSounds.EXPLODE_CLOSE_POWER_4_2.get(), (SoundEvent)ModSounds.EXPLODE_CLOSE_POWER_4_3.get());
|
|
}
|
|
if (power <= 60.0f) {
|
|
return List.of((SoundEvent)ModSounds.EXPLODE_CLOSE_POWER_5_1.get(), (SoundEvent)ModSounds.EXPLODE_CLOSE_POWER_5_2.get(), (SoundEvent)ModSounds.EXPLODE_CLOSE_POWER_5_3.get());
|
|
}
|
|
if (power <= 99.0f) {
|
|
return List.of((SoundEvent)ModSounds.EXPLODE_CLOSE_POWER_6_1.get(), (SoundEvent)ModSounds.EXPLODE_CLOSE_POWER_6_2.get(), (SoundEvent)ModSounds.EXPLODE_CLOSE_POWER_6_3.get());
|
|
}
|
|
return List.of((SoundEvent)ModSounds.EXPLODE_CLOSE_POWER_7_1.get(), (SoundEvent)ModSounds.EXPLODE_CLOSE_POWER_7_2.get(), (SoundEvent)ModSounds.EXPLODE_CLOSE_POWER_7_3.get());
|
|
}
|
|
if (distance <= 500.0) {
|
|
if (playerInHouse && explosionIsInCaveLocation) {
|
|
return ServerExplosionHandler.getSoundPoolForPower(power, (SoundEvent)ModSounds.EXPLODE_MEDIUM_CAVE_TO_HOUSE_POWER_1_1.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_CAVE_TO_HOUSE_POWER_1_2.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_CAVE_TO_HOUSE_POWER_1_3.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_CAVE_TO_HOUSE_POWER_2_1.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_CAVE_TO_HOUSE_POWER_2_2.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_CAVE_TO_HOUSE_POWER_2_3.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_CAVE_TO_HOUSE_POWER_3_1.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_CAVE_TO_HOUSE_POWER_3_2.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_CAVE_TO_HOUSE_POWER_3_3.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_CAVE_TO_HOUSE_POWER_4_1.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_CAVE_TO_HOUSE_POWER_4_2.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_CAVE_TO_HOUSE_POWER_4_3.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_CAVE_TO_HOUSE_POWER_5_1.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_CAVE_TO_HOUSE_POWER_5_2.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_CAVE_TO_HOUSE_POWER_5_3.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_CAVE_TO_HOUSE_POWER_6_1.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_CAVE_TO_HOUSE_POWER_6_2.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_CAVE_TO_HOUSE_POWER_6_3.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_CAVE_TO_HOUSE_POWER_7_1.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_CAVE_TO_HOUSE_POWER_7_2.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_CAVE_TO_HOUSE_POWER_7_3.get());
|
|
}
|
|
if (playerInHouse) {
|
|
return ServerExplosionHandler.getSoundPoolForPower(power, (SoundEvent)ModSounds.EXPLODE_MEDIUM_TO_HOUSE_POWER_1_1.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_TO_HOUSE_POWER_1_2.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_TO_HOUSE_POWER_1_3.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_TO_HOUSE_POWER_2_1.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_TO_HOUSE_POWER_2_2.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_TO_HOUSE_POWER_2_3.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_TO_HOUSE_POWER_3_1.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_TO_HOUSE_POWER_3_2.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_TO_HOUSE_POWER_3_3.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_TO_HOUSE_POWER_4_1.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_TO_HOUSE_POWER_4_2.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_TO_HOUSE_POWER_4_3.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_TO_HOUSE_POWER_5_1.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_TO_HOUSE_POWER_5_2.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_TO_HOUSE_POWER_5_3.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_TO_HOUSE_POWER_6_1.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_TO_HOUSE_POWER_6_2.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_TO_HOUSE_POWER_6_3.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_TO_HOUSE_POWER_7_1.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_TO_HOUSE_POWER_7_2.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_TO_HOUSE_POWER_7_3.get());
|
|
}
|
|
if (explosionIsInCaveLocation) {
|
|
return ServerExplosionHandler.getSoundPoolForPower(power, (SoundEvent)ModSounds.EXPLODE_MEDIUM_CAVE_POWER_1_1.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_CAVE_POWER_1_2.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_CAVE_POWER_1_3.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_CAVE_POWER_2_1.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_CAVE_POWER_2_2.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_CAVE_POWER_2_3.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_CAVE_POWER_3_1.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_CAVE_POWER_3_2.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_CAVE_POWER_3_3.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_CAVE_POWER_4_1.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_CAVE_POWER_4_2.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_CAVE_POWER_4_3.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_CAVE_POWER_5_1.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_CAVE_POWER_5_2.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_CAVE_POWER_5_3.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_CAVE_POWER_6_1.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_CAVE_POWER_6_2.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_CAVE_POWER_6_3.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_CAVE_POWER_7_1.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_CAVE_POWER_7_2.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_CAVE_POWER_7_3.get());
|
|
}
|
|
return ServerExplosionHandler.getSoundPoolForPower(power, (SoundEvent)ModSounds.EXPLODE_MEDIUM_POWER_1_1.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_POWER_1_2.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_POWER_1_3.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_POWER_2_1.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_POWER_2_2.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_POWER_2_3.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_POWER_3_1.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_POWER_3_2.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_POWER_3_3.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_POWER_4_1.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_POWER_4_2.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_POWER_4_3.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_POWER_5_1.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_POWER_5_2.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_POWER_5_3.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_POWER_6_1.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_POWER_6_2.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_POWER_6_3.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_POWER_7_1.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_POWER_7_2.get(), (SoundEvent)ModSounds.EXPLODE_MEDIUM_POWER_7_3.get());
|
|
}
|
|
if (distance <= 1000.0) {
|
|
if (playerInHouse && explosionIsInCaveLocation) {
|
|
return ServerExplosionHandler.getSoundPoolForPower(power, (SoundEvent)ModSounds.EXPLODE_FAR_CAVE_TO_HOUSE_POWER_1_1.get(), (SoundEvent)ModSounds.EXPLODE_FAR_CAVE_TO_HOUSE_POWER_1_2.get(), (SoundEvent)ModSounds.EXPLODE_FAR_CAVE_TO_HOUSE_POWER_1_3.get(), (SoundEvent)ModSounds.EXPLODE_FAR_CAVE_TO_HOUSE_POWER_2_1.get(), (SoundEvent)ModSounds.EXPLODE_FAR_CAVE_TO_HOUSE_POWER_2_2.get(), (SoundEvent)ModSounds.EXPLODE_FAR_CAVE_TO_HOUSE_POWER_2_3.get(), (SoundEvent)ModSounds.EXPLODE_FAR_CAVE_TO_HOUSE_POWER_3_1.get(), (SoundEvent)ModSounds.EXPLODE_FAR_CAVE_TO_HOUSE_POWER_3_2.get(), (SoundEvent)ModSounds.EXPLODE_FAR_CAVE_TO_HOUSE_POWER_3_3.get(), (SoundEvent)ModSounds.EXPLODE_FAR_CAVE_TO_HOUSE_POWER_4_1.get(), (SoundEvent)ModSounds.EXPLODE_FAR_CAVE_TO_HOUSE_POWER_4_2.get(), (SoundEvent)ModSounds.EXPLODE_FAR_CAVE_TO_HOUSE_POWER_4_3.get(), (SoundEvent)ModSounds.EXPLODE_FAR_CAVE_TO_HOUSE_POWER_5_1.get(), (SoundEvent)ModSounds.EXPLODE_FAR_CAVE_TO_HOUSE_POWER_5_2.get(), (SoundEvent)ModSounds.EXPLODE_FAR_CAVE_TO_HOUSE_POWER_5_3.get(), (SoundEvent)ModSounds.EXPLODE_FAR_CAVE_TO_HOUSE_POWER_6_1.get(), (SoundEvent)ModSounds.EXPLODE_FAR_CAVE_TO_HOUSE_POWER_6_2.get(), (SoundEvent)ModSounds.EXPLODE_FAR_CAVE_TO_HOUSE_POWER_6_3.get(), (SoundEvent)ModSounds.EXPLODE_FAR_CAVE_TO_HOUSE_POWER_7_1.get(), (SoundEvent)ModSounds.EXPLODE_FAR_CAVE_TO_HOUSE_POWER_7_2.get(), (SoundEvent)ModSounds.EXPLODE_FAR_CAVE_TO_HOUSE_POWER_7_3.get());
|
|
}
|
|
if (playerInHouse) {
|
|
return ServerExplosionHandler.getSoundPoolForPower(power, (SoundEvent)ModSounds.EXPLODE_FAR_TO_HOUSE_POWER_1_1.get(), (SoundEvent)ModSounds.EXPLODE_FAR_TO_HOUSE_POWER_1_2.get(), (SoundEvent)ModSounds.EXPLODE_FAR_TO_HOUSE_POWER_1_3.get(), (SoundEvent)ModSounds.EXPLODE_FAR_TO_HOUSE_POWER_2_1.get(), (SoundEvent)ModSounds.EXPLODE_FAR_TO_HOUSE_POWER_2_2.get(), (SoundEvent)ModSounds.EXPLODE_FAR_TO_HOUSE_POWER_2_3.get(), (SoundEvent)ModSounds.EXPLODE_FAR_TO_HOUSE_POWER_3_1.get(), (SoundEvent)ModSounds.EXPLODE_FAR_TO_HOUSE_POWER_3_2.get(), (SoundEvent)ModSounds.EXPLODE_FAR_TO_HOUSE_POWER_3_3.get(), (SoundEvent)ModSounds.EXPLODE_FAR_TO_HOUSE_POWER_4_1.get(), (SoundEvent)ModSounds.EXPLODE_FAR_TO_HOUSE_POWER_4_2.get(), (SoundEvent)ModSounds.EXPLODE_FAR_TO_HOUSE_POWER_4_3.get(), (SoundEvent)ModSounds.EXPLODE_FAR_TO_HOUSE_POWER_5_1.get(), (SoundEvent)ModSounds.EXPLODE_FAR_TO_HOUSE_POWER_5_2.get(), (SoundEvent)ModSounds.EXPLODE_FAR_TO_HOUSE_POWER_5_3.get(), (SoundEvent)ModSounds.EXPLODE_FAR_TO_HOUSE_POWER_6_1.get(), (SoundEvent)ModSounds.EXPLODE_FAR_TO_HOUSE_POWER_6_2.get(), (SoundEvent)ModSounds.EXPLODE_FAR_TO_HOUSE_POWER_6_3.get(), (SoundEvent)ModSounds.EXPLODE_FAR_TO_HOUSE_POWER_7_1.get(), (SoundEvent)ModSounds.EXPLODE_FAR_TO_HOUSE_POWER_7_2.get(), (SoundEvent)ModSounds.EXPLODE_FAR_TO_HOUSE_POWER_7_3.get());
|
|
}
|
|
if (explosionIsInCaveLocation) {
|
|
return ServerExplosionHandler.getSoundPoolForPower(power, (SoundEvent)ModSounds.EXPLODE_FAR_CAVE_POWER_1_1.get(), (SoundEvent)ModSounds.EXPLODE_FAR_CAVE_POWER_1_2.get(), (SoundEvent)ModSounds.EXPLODE_FAR_CAVE_POWER_1_3.get(), (SoundEvent)ModSounds.EXPLODE_FAR_CAVE_POWER_2_1.get(), (SoundEvent)ModSounds.EXPLODE_FAR_CAVE_POWER_2_2.get(), (SoundEvent)ModSounds.EXPLODE_FAR_CAVE_POWER_2_3.get(), (SoundEvent)ModSounds.EXPLODE_FAR_CAVE_POWER_3_1.get(), (SoundEvent)ModSounds.EXPLODE_FAR_CAVE_POWER_3_2.get(), (SoundEvent)ModSounds.EXPLODE_FAR_CAVE_POWER_3_3.get(), (SoundEvent)ModSounds.EXPLODE_FAR_CAVE_POWER_4_1.get(), (SoundEvent)ModSounds.EXPLODE_FAR_CAVE_POWER_4_2.get(), (SoundEvent)ModSounds.EXPLODE_FAR_CAVE_POWER_4_3.get(), (SoundEvent)ModSounds.EXPLODE_FAR_CAVE_POWER_5_1.get(), (SoundEvent)ModSounds.EXPLODE_FAR_CAVE_POWER_5_2.get(), (SoundEvent)ModSounds.EXPLODE_FAR_CAVE_POWER_5_3.get(), (SoundEvent)ModSounds.EXPLODE_FAR_CAVE_POWER_6_1.get(), (SoundEvent)ModSounds.EXPLODE_FAR_CAVE_POWER_6_2.get(), (SoundEvent)ModSounds.EXPLODE_FAR_CAVE_POWER_6_3.get(), (SoundEvent)ModSounds.EXPLODE_FAR_CAVE_POWER_7_1.get(), (SoundEvent)ModSounds.EXPLODE_FAR_CAVE_POWER_7_2.get(), (SoundEvent)ModSounds.EXPLODE_FAR_CAVE_POWER_7_3.get());
|
|
}
|
|
return ServerExplosionHandler.getSoundPoolForPower(power, (SoundEvent)ModSounds.EXPLODE_FAR_POWER_1_1.get(), (SoundEvent)ModSounds.EXPLODE_FAR_POWER_1_2.get(), (SoundEvent)ModSounds.EXPLODE_FAR_POWER_1_3.get(), (SoundEvent)ModSounds.EXPLODE_FAR_POWER_2_1.get(), (SoundEvent)ModSounds.EXPLODE_FAR_POWER_2_2.get(), (SoundEvent)ModSounds.EXPLODE_FAR_POWER_2_3.get(), (SoundEvent)ModSounds.EXPLODE_FAR_POWER_3_1.get(), (SoundEvent)ModSounds.EXPLODE_FAR_POWER_3_2.get(), (SoundEvent)ModSounds.EXPLODE_FAR_POWER_3_3.get(), (SoundEvent)ModSounds.EXPLODE_FAR_POWER_4_1.get(), (SoundEvent)ModSounds.EXPLODE_FAR_POWER_4_2.get(), (SoundEvent)ModSounds.EXPLODE_FAR_POWER_4_3.get(), (SoundEvent)ModSounds.EXPLODE_FAR_POWER_5_1.get(), (SoundEvent)ModSounds.EXPLODE_FAR_POWER_5_2.get(), (SoundEvent)ModSounds.EXPLODE_FAR_POWER_5_3.get(), (SoundEvent)ModSounds.EXPLODE_FAR_POWER_6_1.get(), (SoundEvent)ModSounds.EXPLODE_FAR_POWER_6_2.get(), (SoundEvent)ModSounds.EXPLODE_FAR_POWER_6_3.get(), (SoundEvent)ModSounds.EXPLODE_FAR_POWER_7_1.get(), (SoundEvent)ModSounds.EXPLODE_FAR_POWER_7_2.get(), (SoundEvent)ModSounds.EXPLODE_FAR_POWER_7_3.get());
|
|
}
|
|
if (distance <= 5001.0) {
|
|
if (playerInHouse && explosionIsInCaveLocation) {
|
|
return ServerExplosionHandler.getSoundPoolForPower(power, (SoundEvent)ModSounds.EXPLODE_SUPERFAR_CAVE_TO_HOUSE_POWER_1_1.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_CAVE_TO_HOUSE_POWER_1_2.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_CAVE_TO_HOUSE_POWER_1_3.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_CAVE_TO_HOUSE_POWER_2_1.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_CAVE_TO_HOUSE_POWER_2_2.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_CAVE_TO_HOUSE_POWER_2_3.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_CAVE_TO_HOUSE_POWER_3_1.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_CAVE_TO_HOUSE_POWER_3_2.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_CAVE_TO_HOUSE_POWER_3_3.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_CAVE_TO_HOUSE_POWER_4_1.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_CAVE_TO_HOUSE_POWER_4_2.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_CAVE_TO_HOUSE_POWER_4_3.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_CAVE_TO_HOUSE_POWER_5_1.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_CAVE_TO_HOUSE_POWER_5_2.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_CAVE_TO_HOUSE_POWER_5_3.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_CAVE_TO_HOUSE_POWER_6_1.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_CAVE_TO_HOUSE_POWER_6_2.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_CAVE_TO_HOUSE_POWER_6_3.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_CAVE_TO_HOUSE_POWER_7_1.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_CAVE_TO_HOUSE_POWER_7_2.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_CAVE_TO_HOUSE_POWER_7_3.get());
|
|
}
|
|
if (playerInHouse) {
|
|
return ServerExplosionHandler.getSoundPoolForPower(power, (SoundEvent)ModSounds.EXPLODE_SUPERFAR_TO_HOUSE_POWER_1_1.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_TO_HOUSE_POWER_1_2.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_TO_HOUSE_POWER_1_3.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_TO_HOUSE_POWER_2_1.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_TO_HOUSE_POWER_2_2.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_TO_HOUSE_POWER_2_3.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_TO_HOUSE_POWER_3_1.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_TO_HOUSE_POWER_3_2.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_TO_HOUSE_POWER_3_3.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_TO_HOUSE_POWER_4_1.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_TO_HOUSE_POWER_4_2.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_TO_HOUSE_POWER_4_3.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_TO_HOUSE_POWER_5_1.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_TO_HOUSE_POWER_5_2.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_TO_HOUSE_POWER_5_3.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_TO_HOUSE_POWER_6_1.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_TO_HOUSE_POWER_6_2.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_TO_HOUSE_POWER_6_3.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_TO_HOUSE_POWER_7_1.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_TO_HOUSE_POWER_7_2.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_TO_HOUSE_POWER_7_3.get());
|
|
}
|
|
if (explosionIsInCaveLocation) {
|
|
return ServerExplosionHandler.getSoundPoolForPower(power, (SoundEvent)ModSounds.EXPLODE_SUPERFAR_CAVE_POWER_1_1.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_CAVE_POWER_1_2.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_CAVE_POWER_1_3.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_CAVE_POWER_2_1.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_CAVE_POWER_2_2.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_CAVE_POWER_2_3.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_CAVE_POWER_3_1.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_CAVE_POWER_3_2.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_CAVE_POWER_3_3.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_CAVE_POWER_4_1.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_CAVE_POWER_4_2.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_CAVE_POWER_4_3.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_CAVE_POWER_5_1.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_CAVE_POWER_5_2.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_CAVE_POWER_5_3.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_CAVE_POWER_6_1.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_CAVE_POWER_6_2.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_CAVE_POWER_6_3.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_CAVE_POWER_7_1.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_CAVE_POWER_7_2.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_CAVE_POWER_7_3.get());
|
|
}
|
|
return ServerExplosionHandler.getSoundPoolForPower(power, (SoundEvent)ModSounds.EXPLODE_SUPERFAR_POWER_1_1.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_POWER_1_2.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_POWER_1_3.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_POWER_2_1.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_POWER_2_2.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_POWER_2_3.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_POWER_3_1.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_POWER_3_2.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_POWER_3_3.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_POWER_4_1.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_POWER_4_2.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_POWER_4_3.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_POWER_5_1.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_POWER_5_2.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_POWER_5_3.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_POWER_6_1.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_POWER_6_2.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_POWER_6_3.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_POWER_7_1.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_POWER_7_2.get(), (SoundEvent)ModSounds.EXPLODE_SUPERFAR_POWER_7_3.get());
|
|
}
|
|
return null;
|
|
}
|
|
|
|
public record CameraShakeProfile(float intensity, int durationTicks, float pushIntensity) {
|
|
}
|
|
}
|