improved claymore arrow distribution & more damage from claymore arrows

This commit is contained in:
Jenny 2025-01-26 06:33:13 +01:00
parent 5e314c2256
commit f8130fb1eb
Signed by: Jenny
GPG Key ID: 4A98012FB1C39311
6 changed files with 68 additions and 12 deletions

View File

@ -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

View File

@ -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<claymoreArrow> 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);
}
}

View File

@ -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();
}

View File

@ -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<AbstractArrow> {
public baseArrowRenderer(EntityRendererProvider.Context pContext) {
super(pContext);
}
@NotNull
public ResourceLocation getTextureLocation(@NotNull AbstractArrow pEntity) {
return NORMAL_ARROW_LOCATION;
}
}

View File

@ -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.<carpetArrow>of(carpetArrow::new, MobCategory.MISC)
.sized(0.48F, 0.48F).clientTrackingRange(64).build("arrow_carpet"));
public static final RegistryObject<EntityType<claymoreArrow>> ARROW_CLAYMORE =
ENTITY_TYPES.register("arrow_claymore", () -> EntityType.Builder.<claymoreArrow>of(claymoreArrow::new, MobCategory.MISC)
.sized(0.48F, 0.48F).clientTrackingRange(64).build("arrow_claymore"));
public static final RegistryObject<EntityType<dynamite>> DYNAMITE =
ENTITY_TYPES.register("dynamite", () -> EntityType.Builder.<dynamite>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);
}
}

View File

@ -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);
}