From 129c27ba47dc3e6f2dc99c17ef1a81fcb4dc1883 Mon Sep 17 00:00:00 2001 From: Jenny Date: Sun, 26 Jan 2025 01:30:32 +0100 Subject: [PATCH] ender tnt particles + more control over particle count --- .../blocks/enderTNTBlock.java | 19 +++++++++++++++++++ .../config/ConfigClient.java | 14 +++++++++----- .../entities/arrows/concussiveArrow.java | 2 +- .../entities/arrows/tntArrow.java | 2 +- .../enhancedexplosives/eventBusEvents.java | 2 +- .../particles/{arrow => }/ArrowParticle.java | 2 +- 6 files changed, 32 insertions(+), 9 deletions(-) rename src/main/java/com/jenny/enhancedexplosives/particles/{arrow => }/ArrowParticle.java (97%) diff --git a/src/main/java/com/jenny/enhancedexplosives/blocks/enderTNTBlock.java b/src/main/java/com/jenny/enhancedexplosives/blocks/enderTNTBlock.java index ded58bb..af690b8 100644 --- a/src/main/java/com/jenny/enhancedexplosives/blocks/enderTNTBlock.java +++ b/src/main/java/com/jenny/enhancedexplosives/blocks/enderTNTBlock.java @@ -1,8 +1,11 @@ package com.jenny.enhancedexplosives.blocks; import com.jenny.enhancedexplosives.entities.tnt.enderPrimedTNT; +import com.jenny.enhancedexplosives.config.ConfigClient; + import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; +import net.minecraft.core.particles.ParticleTypes; import net.minecraft.sounds.SoundEvents; import net.minecraft.sounds.SoundSource; import net.minecraft.world.entity.LivingEntity; @@ -12,6 +15,7 @@ import net.minecraft.world.level.block.TntBlock; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.gameevent.GameEvent; import net.minecraft.world.level.levelgen.Heightmap; + import org.jetbrains.annotations.NotNull; import javax.annotation.Nullable; @@ -47,6 +51,9 @@ public class enderTNTBlock extends TntBlock { level.gameEvent(entity, GameEvent.PRIME_FUSE, blockPos); } } + else { + spawnParticles(level, blockPos); + } } private static BlockPos getSpawnPos(Level level, BlockPos blockPos) { @@ -82,5 +89,17 @@ public class enderTNTBlock extends TntBlock { level.addFreshEntity(primedtnt); } } + else { + spawnParticles(level, blockPos); + } + } + + public static void spawnParticles(Level level, BlockPos blockPos) { + for (int i = 1; i<=ConfigClient.calcPCount(30); i++) { + float x = blockPos.getX() + (float) level.getRandom().nextIntBetweenInclusive(-10, 10) / 10 + 0.5F; + float y = blockPos.getY() + (float) level.getRandom().nextIntBetweenInclusive(-10, 10) / 10; + float z = blockPos.getZ() + (float) level.getRandom().nextIntBetweenInclusive(-10, 10) / 10 + 0.5F; + level.addParticle(ParticleTypes.GLOW, x, y, z, 0, 0, 0); + } } } diff --git a/src/main/java/com/jenny/enhancedexplosives/config/ConfigClient.java b/src/main/java/com/jenny/enhancedexplosives/config/ConfigClient.java index c041c6f..eb55f3e 100644 --- a/src/main/java/com/jenny/enhancedexplosives/config/ConfigClient.java +++ b/src/main/java/com/jenny/enhancedexplosives/config/ConfigClient.java @@ -15,19 +15,23 @@ public class ConfigClient { BUILDER.comment("weather to spawn client-side particles for arrows") .define("arrowParticles", true); - private static final ForgeConfigSpec.ConfigValue C_ARROW_PARTICLE_COUNT = - BUILDER.comment("amount of particles to spawn per arrow per tick") - .define("arrowParticleCount", 3); + private static final ForgeConfigSpec.ConfigValue C_PARTICLE_PERCENT = + BUILDER.comment("amount of particles to spawn (0.0 = None, 1.0 = normal, values higher are valid too)") + .define("arrowParticleCount", 1.0f); public static final ForgeConfigSpec SPEC = BUILDER.build(); public static boolean arrowParticles; - public static int arrowParticleCount; + public static float particlePercent; @SubscribeEvent static void onLoad(final ModConfigEvent event) { arrowParticles = C_ARROW_PARTICLES.get(); - arrowParticleCount = C_ARROW_PARTICLE_COUNT.get(); + particlePercent = C_PARTICLE_PERCENT.get(); + } + + public static int calcPCount(int pCount) { + return Math.round(pCount * particlePercent); } } diff --git a/src/main/java/com/jenny/enhancedexplosives/entities/arrows/concussiveArrow.java b/src/main/java/com/jenny/enhancedexplosives/entities/arrows/concussiveArrow.java index fb85ae3..51e94d8 100644 --- a/src/main/java/com/jenny/enhancedexplosives/entities/arrows/concussiveArrow.java +++ b/src/main/java/com/jenny/enhancedexplosives/entities/arrows/concussiveArrow.java @@ -45,7 +45,7 @@ public class concussiveArrow extends baseArrow{ @Override public void spawnParticles(float partialTicks) { - for (int i = 1; i <= ConfigClient.arrowParticleCount; i++) { + for (int i = 1; i <= ConfigClient.calcPCount(3); i++) { Vec3 pos = getPosition(partialTicks); double x = pos.x + (double) level().getRandom().nextInt(-5, 6) / 10; double y = pos.y + (double) level().getRandom().nextInt(-5, 6) / 10; diff --git a/src/main/java/com/jenny/enhancedexplosives/entities/arrows/tntArrow.java b/src/main/java/com/jenny/enhancedexplosives/entities/arrows/tntArrow.java index 6b2e8b4..50e8ce2 100644 --- a/src/main/java/com/jenny/enhancedexplosives/entities/arrows/tntArrow.java +++ b/src/main/java/com/jenny/enhancedexplosives/entities/arrows/tntArrow.java @@ -46,7 +46,7 @@ public class tntArrow extends baseArrow { @Override public void spawnParticles(float partialTicks) { - for (int i = 1; i <= ConfigClient.arrowParticleCount; i++) { + for (int i = 1; i <= ConfigClient.calcPCount(3); i++) { Vec3 pos = getPosition(partialTicks); double x = pos.x + (double) level().getRandom().nextInt(-5, 6) / 10; double y = pos.y + (double) level().getRandom().nextInt(-5, 6) / 10; diff --git a/src/main/java/com/jenny/enhancedexplosives/eventBusEvents.java b/src/main/java/com/jenny/enhancedexplosives/eventBusEvents.java index 9502de2..7588b89 100644 --- a/src/main/java/com/jenny/enhancedexplosives/eventBusEvents.java +++ b/src/main/java/com/jenny/enhancedexplosives/eventBusEvents.java @@ -1,7 +1,7 @@ package com.jenny.enhancedexplosives; +import com.jenny.enhancedexplosives.particles.ArrowParticle; import com.jenny.enhancedexplosives.particles.particles; -import com.jenny.enhancedexplosives.particles.arrow.*; import net.minecraft.client.Minecraft; import net.minecraftforge.client.event.RegisterParticleProvidersEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; diff --git a/src/main/java/com/jenny/enhancedexplosives/particles/arrow/ArrowParticle.java b/src/main/java/com/jenny/enhancedexplosives/particles/ArrowParticle.java similarity index 97% rename from src/main/java/com/jenny/enhancedexplosives/particles/arrow/ArrowParticle.java rename to src/main/java/com/jenny/enhancedexplosives/particles/ArrowParticle.java index 386892a..024c6ce 100644 --- a/src/main/java/com/jenny/enhancedexplosives/particles/arrow/ArrowParticle.java +++ b/src/main/java/com/jenny/enhancedexplosives/particles/ArrowParticle.java @@ -1,4 +1,4 @@ -package com.jenny.enhancedexplosives.particles.arrow; +package com.jenny.enhancedexplosives.particles; import net.minecraft.client.multiplayer.ClientLevel; import net.minecraft.client.particle.*;