ender tnt particles + more control over particle count
This commit is contained in:
		
							parent
							
								
									31306bb116
								
							
						
					
					
						commit
						129c27ba47
					
				| @ -1,8 +1,11 @@ | |||||||
| package com.jenny.enhancedexplosives.blocks; | package com.jenny.enhancedexplosives.blocks; | ||||||
| 
 | 
 | ||||||
| import com.jenny.enhancedexplosives.entities.tnt.enderPrimedTNT; | import com.jenny.enhancedexplosives.entities.tnt.enderPrimedTNT; | ||||||
|  | import com.jenny.enhancedexplosives.config.ConfigClient; | ||||||
|  | 
 | ||||||
| import net.minecraft.core.BlockPos; | import net.minecraft.core.BlockPos; | ||||||
| import net.minecraft.core.Direction; | import net.minecraft.core.Direction; | ||||||
|  | import net.minecraft.core.particles.ParticleTypes; | ||||||
| import net.minecraft.sounds.SoundEvents; | import net.minecraft.sounds.SoundEvents; | ||||||
| import net.minecraft.sounds.SoundSource; | import net.minecraft.sounds.SoundSource; | ||||||
| import net.minecraft.world.entity.LivingEntity; | 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.block.state.BlockState; | ||||||
| import net.minecraft.world.level.gameevent.GameEvent; | import net.minecraft.world.level.gameevent.GameEvent; | ||||||
| import net.minecraft.world.level.levelgen.Heightmap; | import net.minecraft.world.level.levelgen.Heightmap; | ||||||
|  | 
 | ||||||
| import org.jetbrains.annotations.NotNull; | import org.jetbrains.annotations.NotNull; | ||||||
| 
 | 
 | ||||||
| import javax.annotation.Nullable; | import javax.annotation.Nullable; | ||||||
| @ -47,6 +51,9 @@ public class enderTNTBlock extends TntBlock { | |||||||
|                 level.gameEvent(entity, GameEvent.PRIME_FUSE, blockPos); |                 level.gameEvent(entity, GameEvent.PRIME_FUSE, blockPos); | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|  |         else { | ||||||
|  |             spawnParticles(level, blockPos); | ||||||
|  |         } | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     private static BlockPos getSpawnPos(Level level, BlockPos blockPos) { |     private static BlockPos getSpawnPos(Level level, BlockPos blockPos) { | ||||||
| @ -82,5 +89,17 @@ public class enderTNTBlock extends TntBlock { | |||||||
|                 level.addFreshEntity(primedtnt); |                 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); | ||||||
|  |         } | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  | |||||||
| @ -15,19 +15,23 @@ public class ConfigClient { | |||||||
|             BUILDER.comment("weather to spawn client-side particles for arrows") |             BUILDER.comment("weather to spawn client-side particles for arrows") | ||||||
|                     .define("arrowParticles", true); |                     .define("arrowParticles", true); | ||||||
| 
 | 
 | ||||||
|     private static final ForgeConfigSpec.ConfigValue<Integer> C_ARROW_PARTICLE_COUNT = |     private static final ForgeConfigSpec.ConfigValue<Float> C_PARTICLE_PERCENT = | ||||||
|             BUILDER.comment("amount of particles to spawn per arrow per tick") |             BUILDER.comment("amount of particles to spawn (0.0 = None, 1.0 = normal, values higher are valid too)") | ||||||
|                     .define("arrowParticleCount", 3); |                     .define("arrowParticleCount", 1.0f); | ||||||
| 
 | 
 | ||||||
|     public static final ForgeConfigSpec SPEC = BUILDER.build(); |     public static final ForgeConfigSpec SPEC = BUILDER.build(); | ||||||
| 
 | 
 | ||||||
|     public static boolean arrowParticles; |     public static boolean arrowParticles; | ||||||
|     public static int arrowParticleCount; |     public static float particlePercent; | ||||||
| 
 | 
 | ||||||
|     @SubscribeEvent |     @SubscribeEvent | ||||||
|     static void onLoad(final ModConfigEvent event) |     static void onLoad(final ModConfigEvent event) | ||||||
|     { |     { | ||||||
|         arrowParticles = C_ARROW_PARTICLES.get(); |         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); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  | |||||||
| @ -45,7 +45,7 @@ public class concussiveArrow extends baseArrow{ | |||||||
| 
 | 
 | ||||||
|     @Override |     @Override | ||||||
|     public void spawnParticles(float partialTicks) { |     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); |             Vec3 pos = getPosition(partialTicks); | ||||||
|             double x = pos.x + (double) level().getRandom().nextInt(-5, 6) / 10; |             double x = pos.x + (double) level().getRandom().nextInt(-5, 6) / 10; | ||||||
|             double y = pos.y + (double) level().getRandom().nextInt(-5, 6) / 10; |             double y = pos.y + (double) level().getRandom().nextInt(-5, 6) / 10; | ||||||
|  | |||||||
| @ -46,7 +46,7 @@ public class tntArrow extends baseArrow { | |||||||
| 
 | 
 | ||||||
|     @Override |     @Override | ||||||
|     public void spawnParticles(float partialTicks) { |     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); |             Vec3 pos = getPosition(partialTicks); | ||||||
|             double x = pos.x + (double) level().getRandom().nextInt(-5, 6) / 10; |             double x = pos.x + (double) level().getRandom().nextInt(-5, 6) / 10; | ||||||
|             double y = pos.y + (double) level().getRandom().nextInt(-5, 6) / 10; |             double y = pos.y + (double) level().getRandom().nextInt(-5, 6) / 10; | ||||||
|  | |||||||
| @ -1,7 +1,7 @@ | |||||||
| package com.jenny.enhancedexplosives; | package com.jenny.enhancedexplosives; | ||||||
| 
 | 
 | ||||||
|  | import com.jenny.enhancedexplosives.particles.ArrowParticle; | ||||||
| import com.jenny.enhancedexplosives.particles.particles; | import com.jenny.enhancedexplosives.particles.particles; | ||||||
| import com.jenny.enhancedexplosives.particles.arrow.*; |  | ||||||
| import net.minecraft.client.Minecraft; | import net.minecraft.client.Minecraft; | ||||||
| import net.minecraftforge.client.event.RegisterParticleProvidersEvent; | import net.minecraftforge.client.event.RegisterParticleProvidersEvent; | ||||||
| import net.minecraftforge.eventbus.api.SubscribeEvent; | import net.minecraftforge.eventbus.api.SubscribeEvent; | ||||||
|  | |||||||
| @ -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.multiplayer.ClientLevel; | ||||||
| import net.minecraft.client.particle.*; | import net.minecraft.client.particle.*; | ||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user