From db66c68d4c8f0c02649e44414911934e8e08ac03 Mon Sep 17 00:00:00 2001 From: Jenny Date: Sat, 25 Jan 2025 08:00:25 +0100 Subject: [PATCH] more particles & config --- gradle.properties | 2 +- .../EnhancedExplosives.java | 6 +++-- .../config/ConfigClient.java | 27 +++++++++++++++++++ .../entities/arrows/baseArrow.java | 4 +++ .../entities/arrows/concussiveArrow.java | 10 +++++++ .../entities/arrows/tntArrow.java | 12 ++++++++- .../entities/client/TNTArrowRenderer.java | 6 +++++ 7 files changed, 63 insertions(+), 4 deletions(-) create mode 100644 src/main/java/com/jenny/enhancedexplosives/config/ConfigClient.java diff --git a/gradle.properties b/gradle.properties index f0219d6..c338f8a 100644 --- a/gradle.properties +++ b/gradle.properties @@ -38,7 +38,7 @@ mod_name=Enhanced Explosives # The license of the mod. Review your options at https://choosealicense.com/. All Rights Reserved is the default. mod_license=All Rights Reserved # The mod version. See https://semver.org/ -mod_version=0.7.0 +mod_version=0.7.1 # The group ID for the mod. It is only important when publishing as an artifact to a Maven repository. # This should match the base package used for the mod sources. # See https://maven.apache.org/guides/mini/guide-naming-conventions.html diff --git a/src/main/java/com/jenny/enhancedexplosives/EnhancedExplosives.java b/src/main/java/com/jenny/enhancedexplosives/EnhancedExplosives.java index a8350a1..3a5b9ae 100644 --- a/src/main/java/com/jenny/enhancedexplosives/EnhancedExplosives.java +++ b/src/main/java/com/jenny/enhancedexplosives/EnhancedExplosives.java @@ -1,6 +1,7 @@ package com.jenny.enhancedexplosives; import com.jenny.enhancedexplosives.blocks.blocks; +import com.jenny.enhancedexplosives.config.ConfigClient; import com.jenny.enhancedexplosives.entities.entities; import com.jenny.enhancedexplosives.items.items; import com.mojang.logging.LogUtils; @@ -9,7 +10,9 @@ import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.event.server.ServerStartingEvent; import net.minecraftforge.eventbus.api.IEventBus; import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.fml.ModLoadingContext; import net.minecraftforge.fml.common.Mod; +import net.minecraftforge.fml.config.ModConfig; import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent; import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent; import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; @@ -19,9 +22,7 @@ import org.slf4j.Logger; @Mod(EnhancedExplosives.MODID) public class EnhancedExplosives { - // Define mod id in a common place for everything to reference public static final String MODID = "enhancedexplosives"; - // Directly reference a slf4j logger private static final Logger LOGGER = LogUtils.getLogger(); public EnhancedExplosives() { @@ -36,6 +37,7 @@ public class EnhancedExplosives { // Register ourselves for server and other game events we are interested in MinecraftForge.EVENT_BUS.register(this); + ModLoadingContext.get().registerConfig(ModConfig.Type.CLIENT, ConfigClient.SPEC); } private void commonSetup(final FMLCommonSetupEvent event) { diff --git a/src/main/java/com/jenny/enhancedexplosives/config/ConfigClient.java b/src/main/java/com/jenny/enhancedexplosives/config/ConfigClient.java new file mode 100644 index 0000000..3b6578f --- /dev/null +++ b/src/main/java/com/jenny/enhancedexplosives/config/ConfigClient.java @@ -0,0 +1,27 @@ +package com.jenny.enhancedexplosives.config; + +import net.minecraftforge.common.ForgeConfigSpec; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.fml.common.Mod; +import net.minecraftforge.fml.event.config.ModConfigEvent; + +import static com.jenny.enhancedexplosives.EnhancedExplosives.MODID; + +@Mod.EventBusSubscriber(modid = MODID, bus = Mod.EventBusSubscriber.Bus.MOD) +public class ConfigClient { + private static final ForgeConfigSpec.Builder BUILDER = new ForgeConfigSpec.Builder(); + + private static final ForgeConfigSpec.ConfigValue C_ARROW_PARTICLES = + BUILDER.comment("weather to spawn client-side particles for arrows") + .define("arrowParticles", true); + + public static final ForgeConfigSpec SPEC = BUILDER.build(); + + public static boolean ARROW_PARTICLES; + + @SubscribeEvent + static void onLoad(final ModConfigEvent event) + { + ARROW_PARTICLES = C_ARROW_PARTICLES.get(); + } +} diff --git a/src/main/java/com/jenny/enhancedexplosives/entities/arrows/baseArrow.java b/src/main/java/com/jenny/enhancedexplosives/entities/arrows/baseArrow.java index 6b56e2a..0f0ec5e 100644 --- a/src/main/java/com/jenny/enhancedexplosives/entities/arrows/baseArrow.java +++ b/src/main/java/com/jenny/enhancedexplosives/entities/arrows/baseArrow.java @@ -228,4 +228,8 @@ public class baseArrow extends AbstractArrow { } } + + public void spawnParticles() { + + } } 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 aeb0fd0..ef114a9 100644 --- a/src/main/java/com/jenny/enhancedexplosives/entities/arrows/concussiveArrow.java +++ b/src/main/java/com/jenny/enhancedexplosives/entities/arrows/concussiveArrow.java @@ -42,4 +42,14 @@ public class concussiveArrow extends baseArrow{ protected ItemStack getPickupItem() { return new ItemStack(items.CONCUSSIVE_ARROW.get()); } + + @Override + public void spawnParticles() { + for (int i = 0; i < 2; i++) { + double x = getX() + (double) level().getRandom().nextInt(-10, 11) / 10; + double y = getY() + (double) level().getRandom().nextInt(-10, 11) / 10; + double z = getZ() + (double) level().getRandom().nextInt(-10, 11) / 10; + level().addParticle(ParticleTypes.WAX_ON, x, y, z, this.getDeltaMovement().x, this.getDeltaMovement().y, this.getDeltaMovement().z); + } + } } 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 6e9a22f..2cf98d9 100644 --- a/src/main/java/com/jenny/enhancedexplosives/entities/arrows/tntArrow.java +++ b/src/main/java/com/jenny/enhancedexplosives/entities/arrows/tntArrow.java @@ -23,7 +23,7 @@ public class tntArrow extends baseArrow { public void tick() { super.tick(); if (level().isClientSide()) { - level().addParticle(ParticleTypes.SMOKE, this.getX(), this.getY(), this.getZ(), 0.0D, 0.0D, 0.0D); + //spawnParticles(); } if (this.inGround) { this.level().explode(this, this.getX(), this.getY(), this.getZ(), 2, Level.ExplosionInteraction.TNT); @@ -31,6 +31,16 @@ public class tntArrow extends baseArrow { } } + @Override + public void spawnParticles() { + for (int i = 0; i < 2; i++) { + double x = getX() + (double) level().getRandom().nextInt(-10, 11) / 10; + double y = getY() + (double) level().getRandom().nextInt(-10, 11) / 10; + double z = getZ() + (double) level().getRandom().nextInt(-10, 11) / 10; + level().addParticle(ParticleTypes.WAX_ON, x, y, z, this.getDeltaMovement().x, this.getDeltaMovement().y, this.getDeltaMovement().z); + } + } + @Override protected void doPostHurtEffects(@NotNull LivingEntity pTarget) { this.level().explode(this, this.getX(), this.getY(), this.getZ(), 2, Level.ExplosionInteraction.TNT); diff --git a/src/main/java/com/jenny/enhancedexplosives/entities/client/TNTArrowRenderer.java b/src/main/java/com/jenny/enhancedexplosives/entities/client/TNTArrowRenderer.java index eba020b..bc1740e 100644 --- a/src/main/java/com/jenny/enhancedexplosives/entities/client/TNTArrowRenderer.java +++ b/src/main/java/com/jenny/enhancedexplosives/entities/client/TNTArrowRenderer.java @@ -1,6 +1,8 @@ package com.jenny.enhancedexplosives.entities.client; import com.jenny.enhancedexplosives.entities.arrows.baseArrow; +import com.jenny.enhancedexplosives.config.*; + import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.math.Axis; import net.minecraft.client.renderer.MultiBufferSource; @@ -15,6 +17,7 @@ import net.minecraft.world.level.block.Blocks; import org.jetbrains.annotations.NotNull; public class TNTArrowRenderer extends EntityRenderer { + private final boolean renderParticles = ConfigClient.ARROW_PARTICLES; private final BlockRenderDispatcher blockRenderer; private float i = 0; @@ -32,6 +35,9 @@ public class TNTArrowRenderer extends EntityRenderer { pPoseStack.mulPose(Axis.YP.rotationDegrees(-90.0F)); pPoseStack.translate(-0.5F, -0.5F, 0.5F); pPoseStack.mulPose(Axis.YP.rotationDegrees(90.0F)); + if (renderParticles) { + pEntity.spawnParticles(); + } TntMinecartRenderer.renderWhiteSolidBlock(this.blockRenderer, Blocks.TNT.defaultBlockState(), pPoseStack, pBuffer, pPackedLight, Math.round(Math.sin(i)) == 0); pPoseStack.popPose(); super.render(pEntity, pEntityYaw, pPartialTicks, pPoseStack, pBuffer, pPackedLight);