From f8130fb1eb4fc627a1150c2295b9a776f75207f0 Mon Sep 17 00:00:00 2001 From: Jenny Date: Sun, 26 Jan 2025 06:33:13 +0100 Subject: [PATCH] improved claymore arrow distribution & more damage from claymore arrows --- gradle.properties | 2 +- .../entities/arrows/claymoreArrow.java | 31 +++++++++++++++++++ .../entities/arrows/concussiveArrow.java | 1 - .../entities/client/baseArrowRenderer.java | 21 +++++++++++++ .../enhancedexplosives/entities/entities.java | 9 ++++-- .../entities/tnt/claymorePrimedTNT.java | 16 +++++----- 6 files changed, 68 insertions(+), 12 deletions(-) create mode 100644 src/main/java/com/jenny/enhancedexplosives/entities/arrows/claymoreArrow.java create mode 100644 src/main/java/com/jenny/enhancedexplosives/entities/client/baseArrowRenderer.java diff --git a/gradle.properties b/gradle.properties index 98bd826..b7c3075 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.8.5 +mod_version=0.8.6 # 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/entities/arrows/claymoreArrow.java b/src/main/java/com/jenny/enhancedexplosives/entities/arrows/claymoreArrow.java new file mode 100644 index 0000000..d8015a4 --- /dev/null +++ b/src/main/java/com/jenny/enhancedexplosives/entities/arrows/claymoreArrow.java @@ -0,0 +1,31 @@ +package com.jenny.enhancedexplosives.entities.arrows; + +import com.jenny.enhancedexplosives.entities.entities; +import com.jenny.enhancedexplosives.items.items; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.Level; + +import org.jetbrains.annotations.NotNull; + +public class claymoreArrow extends baseArrow{ + public claymoreArrow(EntityType pEntityType, Level pLevel) { + super(pEntityType, pLevel); + } + + public claymoreArrow(@NotNull Level pLevel, @NotNull LivingEntity pShooter) { + super(pLevel, pShooter, entities.ARROW_CLAYMORE.get()); + } + + @Override + protected void doPostHurtEffects(@NotNull LivingEntity pTarget) { + pTarget.hurt(damageSources().mobProjectile(this, (LivingEntity) getOwner()), 15); + } + + @Override + @NotNull + protected ItemStack getPickupItem() { + return new ItemStack(items.CONCUSSIVE_ARROW.get(), 0); + } +} 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 51e94d8..88014ec 100644 --- a/src/main/java/com/jenny/enhancedexplosives/entities/arrows/concussiveArrow.java +++ b/src/main/java/com/jenny/enhancedexplosives/entities/arrows/concussiveArrow.java @@ -34,7 +34,6 @@ public class concussiveArrow extends baseArrow{ @Override protected void doPostHurtEffects(@NotNull LivingEntity pTarget) { this.level().explode(this, getX(), getY(), getZ(), 8.0f, Level.ExplosionInteraction.NONE); - //this.level().explode(this, null, new NilExplosionCalculator(), this.getX(), this.getY(), this.getZ(), 8, false, Level.ExplosionInteraction.NONE); this.discard(); } diff --git a/src/main/java/com/jenny/enhancedexplosives/entities/client/baseArrowRenderer.java b/src/main/java/com/jenny/enhancedexplosives/entities/client/baseArrowRenderer.java new file mode 100644 index 0000000..f071493 --- /dev/null +++ b/src/main/java/com/jenny/enhancedexplosives/entities/client/baseArrowRenderer.java @@ -0,0 +1,21 @@ +package com.jenny.enhancedexplosives.entities.client; + +import net.minecraft.client.renderer.entity.ArrowRenderer; +import net.minecraft.client.renderer.entity.EntityRendererProvider; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.entity.projectile.AbstractArrow; + +import org.jetbrains.annotations.NotNull; + +import static net.minecraft.client.renderer.entity.TippableArrowRenderer.NORMAL_ARROW_LOCATION; + +public class baseArrowRenderer extends ArrowRenderer { + public baseArrowRenderer(EntityRendererProvider.Context pContext) { + super(pContext); + } + + @NotNull + public ResourceLocation getTextureLocation(@NotNull AbstractArrow pEntity) { + return NORMAL_ARROW_LOCATION; + } +} diff --git a/src/main/java/com/jenny/enhancedexplosives/entities/entities.java b/src/main/java/com/jenny/enhancedexplosives/entities/entities.java index 44f5abd..da1b71f 100644 --- a/src/main/java/com/jenny/enhancedexplosives/entities/entities.java +++ b/src/main/java/com/jenny/enhancedexplosives/entities/entities.java @@ -1,9 +1,7 @@ package com.jenny.enhancedexplosives.entities; import com.jenny.enhancedexplosives.entities.arrows.*; -import com.jenny.enhancedexplosives.entities.client.BaseTNTRenderer; -import com.jenny.enhancedexplosives.entities.client.TNTArrowRenderer; -import com.jenny.enhancedexplosives.entities.client.clusterTNTRenderer; +import com.jenny.enhancedexplosives.entities.client.*; import com.jenny.enhancedexplosives.entities.throwable.dynamite; import com.jenny.enhancedexplosives.entities.tnt.*; @@ -61,6 +59,10 @@ public class entities { ENTITY_TYPES.register("arrow_carpet", () -> EntityType.Builder.of(carpetArrow::new, MobCategory.MISC) .sized(0.48F, 0.48F).clientTrackingRange(64).build("arrow_carpet")); + public static final RegistryObject> ARROW_CLAYMORE = + ENTITY_TYPES.register("arrow_claymore", () -> EntityType.Builder.of(claymoreArrow::new, MobCategory.MISC) + .sized(0.48F, 0.48F).clientTrackingRange(64).build("arrow_claymore")); + public static final RegistryObject> DYNAMITE = ENTITY_TYPES.register("dynamite", () -> EntityType.Builder.of(dynamite::new, MobCategory.MISC) .sized(0.48F, 0.48F).clientTrackingRange(64).build("dynamite")); @@ -83,5 +85,6 @@ public class entities { EntityRenderers.register(ARROW_TNT.get(), TNTArrowRenderer::new); EntityRenderers.register(ARROW_CONCUSSIVE.get(), TNTArrowRenderer::new); EntityRenderers.register(ARROW_CARPET.get(), TNTArrowRenderer::new); + EntityRenderers.register(ARROW_CLAYMORE.get(), baseArrowRenderer::new); } } \ No newline at end of file diff --git a/src/main/java/com/jenny/enhancedexplosives/entities/tnt/claymorePrimedTNT.java b/src/main/java/com/jenny/enhancedexplosives/entities/tnt/claymorePrimedTNT.java index 4a92153..0130b20 100644 --- a/src/main/java/com/jenny/enhancedexplosives/entities/tnt/claymorePrimedTNT.java +++ b/src/main/java/com/jenny/enhancedexplosives/entities/tnt/claymorePrimedTNT.java @@ -1,6 +1,7 @@ package com.jenny.enhancedexplosives.entities.tnt; import com.jenny.enhancedexplosives.blocks.blocks; +import com.jenny.enhancedexplosives.entities.arrows.claymoreArrow; import com.jenny.enhancedexplosives.entities.entities; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.syncher.EntityDataAccessor; @@ -31,20 +32,21 @@ public class claymorePrimedTNT extends basePrimedTNT { public Vec3 targetVector(RandomSource rng) { return new Vec3( - (double) rng.nextInt(-10, 11) / 10, - (double) rng.nextInt( 11) / 10, - (double) rng.nextInt(-10, 11) / 10); + getX() + rng.nextIntBetweenInclusive(-15, 15), + getY() + (float) rng.nextIntBetweenInclusive(-10, 10) / 10, + getZ() + rng.nextIntBetweenInclusive(-15, 15) + ).subtract(position().add(0, 0.5, 0)).normalize().multiply(1.3, 1.3, 1.3); } @Override public void explode() { - super.explode(); RandomSource rng = level().getRandom(); for (int i = 0; i < getPCount(); i++) { Vec3 target = targetVector(rng); - Vec3 pos = position().add(target); - Projectile e = new Arrow(level(),pos.x, pos.y + 1, pos.z); - e.setDeltaMovement(target.multiply(5, 0.1, 5)); + assert this.getOwner() != null; + Projectile e = new claymoreArrow(level(), this.getOwner()); + e.setPos(position().add(0, 0.5, 0)); + e.setDeltaMovement(target); level().addFreshEntity(e); }