improved claymore arrow distribution & more damage from claymore arrows
This commit is contained in:
parent
5e314c2256
commit
f8130fb1eb
@ -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
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
@ -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();
|
||||
}
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
@ -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);
|
||||
}
|
||||
}
|
@ -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);
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user