From 0961e9654d4c14003a9d7a9d174e11219114a79b Mon Sep 17 00:00:00 2001 From: Jenny Date: Sun, 26 Jan 2025 02:05:57 +0100 Subject: [PATCH] particles for homing tnt & toggle for tnt particles --- .../enhancedexplosives/blocks/enderTNTBlock.java | 12 +++++++----- .../enhancedexplosives/config/ConfigClient.java | 7 ++++++- .../entities/client/BaseTNTRenderer.java | 7 +++++-- .../entities/tnt/basePrimedTNT.java | 2 ++ .../entities/tnt/homingPrimedTNT.java | 12 ++++++++++-- 5 files changed, 30 insertions(+), 10 deletions(-) diff --git a/src/main/java/com/jenny/enhancedexplosives/blocks/enderTNTBlock.java b/src/main/java/com/jenny/enhancedexplosives/blocks/enderTNTBlock.java index af690b8..5a8f9ef 100644 --- a/src/main/java/com/jenny/enhancedexplosives/blocks/enderTNTBlock.java +++ b/src/main/java/com/jenny/enhancedexplosives/blocks/enderTNTBlock.java @@ -95,11 +95,13 @@ public class enderTNTBlock extends TntBlock { } 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); + if (ConfigClient.tntParticles) { + 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 eb55f3e..bafef92 100644 --- a/src/main/java/com/jenny/enhancedexplosives/config/ConfigClient.java +++ b/src/main/java/com/jenny/enhancedexplosives/config/ConfigClient.java @@ -15,19 +15,24 @@ public class ConfigClient { BUILDER.comment("weather to spawn client-side particles for arrows") .define("arrowParticles", true); + private static final ForgeConfigSpec.ConfigValue C_TNT_PARTICLES = + BUILDER.comment("weather to spawn client-side particles for tnt") + .define("tntParticles", true); + 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 boolean arrowParticles, tntParticles; public static float particlePercent; @SubscribeEvent static void onLoad(final ModConfigEvent event) { arrowParticles = C_ARROW_PARTICLES.get(); + tntParticles = C_TNT_PARTICLES.get(); particlePercent = C_PARTICLE_PERCENT.get(); } diff --git a/src/main/java/com/jenny/enhancedexplosives/entities/client/BaseTNTRenderer.java b/src/main/java/com/jenny/enhancedexplosives/entities/client/BaseTNTRenderer.java index 31662a9..d7fc905 100644 --- a/src/main/java/com/jenny/enhancedexplosives/entities/client/BaseTNTRenderer.java +++ b/src/main/java/com/jenny/enhancedexplosives/entities/client/BaseTNTRenderer.java @@ -1,6 +1,6 @@ package com.jenny.enhancedexplosives.entities.client; -import com.jenny.enhancedexplosives.blocks.blocks; +import com.jenny.enhancedexplosives.config.ConfigClient; import com.jenny.enhancedexplosives.entities.tnt.basePrimedTNT; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.math.Axis; @@ -35,7 +35,10 @@ public class BaseTNTRenderer extends EntityRenderer float f1 = 1.0F + f * 0.3F; pPoseStack.scale(f1, f1, f1); } - + if (ConfigClient.tntParticles) { + pEntity.spawnParticles(pPartialTicks); + } + pEntity.spawnParticles(pPartialTicks); pPoseStack.mulPose(Axis.YP.rotationDegrees(-90.0F)); pPoseStack.translate(-0.5F, -0.5F, 0.5F); pPoseStack.mulPose(Axis.YP.rotationDegrees(90.0F)); diff --git a/src/main/java/com/jenny/enhancedexplosives/entities/tnt/basePrimedTNT.java b/src/main/java/com/jenny/enhancedexplosives/entities/tnt/basePrimedTNT.java index 9d3a80c..a83a0b3 100644 --- a/src/main/java/com/jenny/enhancedexplosives/entities/tnt/basePrimedTNT.java +++ b/src/main/java/com/jenny/enhancedexplosives/entities/tnt/basePrimedTNT.java @@ -134,4 +134,6 @@ public abstract class basePrimedTNT extends Entity implements TraceableEntity { public int defaultFuse() { return this.fuse; } + + public void spawnParticles(float partialTicks) {} } diff --git a/src/main/java/com/jenny/enhancedexplosives/entities/tnt/homingPrimedTNT.java b/src/main/java/com/jenny/enhancedexplosives/entities/tnt/homingPrimedTNT.java index 992362f..61d018d 100644 --- a/src/main/java/com/jenny/enhancedexplosives/entities/tnt/homingPrimedTNT.java +++ b/src/main/java/com/jenny/enhancedexplosives/entities/tnt/homingPrimedTNT.java @@ -1,6 +1,9 @@ package com.jenny.enhancedexplosives.entities.tnt; import com.jenny.enhancedexplosives.entities.entities; +import com.jenny.enhancedexplosives.config.ConfigClient; + +import net.minecraft.core.particles.ParticleTypes; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.syncher.EntityDataAccessor; import net.minecraft.network.syncher.EntityDataSerializers; @@ -8,8 +11,6 @@ import net.minecraft.network.syncher.SynchedEntityData; import net.minecraft.world.entity.*; import net.minecraft.world.entity.ai.targeting.TargetingConditions; import net.minecraft.world.level.Level; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.Blocks; import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.Vec3; @@ -90,4 +91,11 @@ public class homingPrimedTNT extends basePrimedTNT { this.entityData.define(DATA_SPEED_ID, 4.0f); super.defineSynchedData(); } + + @Override + public void spawnParticles(float partialTicks) { + for (int i = 1; i <= ConfigClient.calcPCount(30); i++) { + level().addParticle(ParticleTypes.FALLING_OBSIDIAN_TEAR, getX(), getY(), getZ(), this.getDeltaMovement().x, this.getDeltaMovement().y, this.getDeltaMovement().z); + } + } }