@@ -58,15 +58,14 @@ public float getEntityDamageAmount(Explosion explosion, Entity entity) {
5858
5959 public static void explode (ServerLevel level , @ Nullable Entity source , @ Nullable ItemStack stack , Vec3 pos ) {
6060 boolean primodialFireDamage = false ; // stack.getEnchantmentLevel(level.registryAccess().registry(Registries.ENCHANTMENT).get().getHolderOrThrow(SpectrumEnchantments.RESONANCE)) > 0;
61- boolean preservesBlocks = stack .getEnchantmentLevel (level .registryAccess ().registry (Registries .ENCHANTMENT ).get ().getHolderOrThrow (Enchantments .BLAST_PROTECTION )) > 0 ;
62- boolean preserveAllDrops = stack .getEnchantmentLevel (level .registryAccess ().registry (Registries .ENCHANTMENT ).get ().getHolderOrThrow (Enchantments .EFFICIENCY )) > 0 ;
63-
61+ int power = stack .getEnchantmentLevel (level .registryAccess ().registry (Registries .ENCHANTMENT ).get ().getHolderOrThrow (Enchantments .POWER ));
62+
6463 @ Nullable DamageSource damageSource = primodialFireDamage ? SpectrumDamageTypes .incandescence (level , source ) : Explosion .getDefaultDamageSource (level , source );
6564 @ Nullable ExplosionDamageCalculator damageCalculator = new EnhancedExplosionDamageCalculator (level , damageSource , stack , true , true , Optional .empty (), Optional .empty ());
6665
67- float radius = 4 .0F ;
66+ float explosionRadius = 3 .0F + power ;
6867
69- BlockInteraction blockinteraction = preservesBlocks ? BlockInteraction . KEEP : preserveAllDrops ? BlockInteraction .DESTROY : BlockInteraction .DESTROY_WITH_DECAY ;
68+ BlockInteraction blockinteraction = power == 0 ? BlockInteraction .KEEP : BlockInteraction .DESTROY ;
7069 ExplosionWithStack explosion = new ExplosionWithStack (
7170 level ,
7271 source ,
@@ -75,7 +74,7 @@ public static void explode(ServerLevel level, @Nullable Entity source, @Nullable
7574 pos .x ,
7675 pos .y ,
7776 pos .z ,
78- radius ,
77+ explosionRadius ,
7978 false ,
8079 blockinteraction ,
8180 ParticleTypes .EXPLOSION ,
@@ -95,7 +94,7 @@ public static void explode(ServerLevel level, @Nullable Entity source, @Nullable
9594 for (ServerPlayer serverplayer : level .getPlayers (serverPlayer -> serverPlayer .distanceToSqr (pos .x , pos .y , pos .z ) < 4096.0 )) {
9695 serverplayer .connection .send (new ClientboundExplodePacket (
9796 pos .x , pos .y , pos .z ,
98- radius ,
97+ explosionRadius ,
9998 explosion .getToBlow (),
10099 explosion .getHitPlayers ().get (serverplayer ),
101100 explosion .getBlockInteraction (),
0 commit comments