调整载具数值平衡

This commit is contained in:
Atsuihsio 2025-01-27 02:11:31 +08:00
parent 18f0817289
commit 2c971fe2c8
23 changed files with 296 additions and 211 deletions

View file

@ -111,6 +111,10 @@ dependencies {
implementation fg.deobf("curse.maven:oculus-581495:6020952") implementation fg.deobf("curse.maven:oculus-581495:6020952")
implementation fg.deobf("curse.maven:embeddium-908741:5681725") implementation fg.deobf("curse.maven:embeddium-908741:5681725")
implementation fg.deobf("curse.maven:timeless-and-classics-zero-1028108:6069384")
implementation fg.deobf("curse.maven:create-328085:5838779")
} }
mixin { mixin {

View file

@ -63,7 +63,7 @@ public class VehicleConfig {
builder.push("mk_42"); builder.push("mk_42");
builder.comment("The HealthPoint of MK-42"); builder.comment("The HealthPoint of MK-42");
MK42_HP = builder.defineInRange("mk_42_hp", 700, 1, 10000000); MK42_HP = builder.defineInRange("mk_42_hp", 200, 1, 10000000);
builder.comment("The AP shell damage of MK-42"); builder.comment("The AP shell damage of MK-42");
MK42_AP_DAMAGE = builder.defineInRange("mk_42_ap_damage", 300, 1, 10000000); MK42_AP_DAMAGE = builder.defineInRange("mk_42_ap_damage", 300, 1, 10000000);
@ -88,7 +88,7 @@ public class VehicleConfig {
builder.push("mle_1934"); builder.push("mle_1934");
builder.comment("The HealthPoint of MLE-1934"); builder.comment("The HealthPoint of MLE-1934");
MLE1934_HP = builder.defineInRange("mle_1934_hp", 800, 1, 10000000); MLE1934_HP = builder.defineInRange("mle_1934_hp", 200, 1, 10000000);
builder.comment("The AP shell damage of MLE-1934"); builder.comment("The AP shell damage of MLE-1934");
MLE1934_AP_DAMAGE = builder.defineInRange("mle_1934_ap_damage", 350, 1, 10000000); MLE1934_AP_DAMAGE = builder.defineInRange("mle_1934_ap_damage", 350, 1, 10000000);
@ -113,7 +113,7 @@ public class VehicleConfig {
builder.push("annihilator"); builder.push("annihilator");
builder.comment("The HealthPoint of Annihilator"); builder.comment("The HealthPoint of Annihilator");
ANNIHILATOR_HP = builder.defineInRange("annihilator_hp", 4000, 1, 10000000); ANNIHILATOR_HP = builder.defineInRange("annihilator_hp", 800, 1, 10000000);
builder.comment("The energy cost of Annihilator per shoot"); builder.comment("The energy cost of Annihilator per shoot");
ANNIHILATOR_SHOOT_COST = builder.defineInRange("annihilator_shoot_cost", 2000000, 0, 2147483647); ANNIHILATOR_SHOOT_COST = builder.defineInRange("annihilator_shoot_cost", 2000000, 0, 2147483647);
@ -126,7 +126,7 @@ public class VehicleConfig {
builder.push("speedboat"); builder.push("speedboat");
builder.comment("The HealthPoint of Speedboat"); builder.comment("The HealthPoint of Speedboat");
SPEEDBOAT_HP = builder.defineInRange("speedboat_hp", 500, 1, 10000000); SPEEDBOAT_HP = builder.defineInRange("speedboat_hp", 200, 1, 10000000);
builder.comment("The energy cost of Speedboat per tick"); builder.comment("The energy cost of Speedboat per tick");
SPEEDBOAT_ENERGY_COST = builder.defineInRange("speedboat_energy_cost", 16, 0, 2147483647); SPEEDBOAT_ENERGY_COST = builder.defineInRange("speedboat_energy_cost", 16, 0, 2147483647);
@ -142,7 +142,7 @@ public class VehicleConfig {
builder.push("ah_6"); builder.push("ah_6");
builder.comment("The HealthPoint of AH-6"); builder.comment("The HealthPoint of AH-6");
AH_6_HP = builder.defineInRange("ah_6_hp", 500, 1, 10000000); AH_6_HP = builder.defineInRange("ah_6_hp", 250, 1, 10000000);
builder.comment("The min energy cost of AH-6 per tick"); builder.comment("The min energy cost of AH-6 per tick");
AH_6_MIN_ENERGY_COST = builder.defineInRange("ah_6_min_energy_cost", 64, 0, 2147483647); AH_6_MIN_ENERGY_COST = builder.defineInRange("ah_6_min_energy_cost", 64, 0, 2147483647);
@ -170,7 +170,7 @@ public class VehicleConfig {
builder.push("lav_150"); builder.push("lav_150");
builder.comment("The HealthPoint of Lav_150"); builder.comment("The HealthPoint of Lav_150");
LAV_150_HP = builder.defineInRange("lav_150_hp", 850, 1, 10000000); LAV_150_HP = builder.defineInRange("lav_150_hp", 250, 1, 10000000);
builder.comment("The energy cost of Lav_150 per tick"); builder.comment("The energy cost of Lav_150 per tick");
LAV_150_ENERGY_COST = builder.defineInRange("lav_150_energy_cost", 64, 0, 2147483647); LAV_150_ENERGY_COST = builder.defineInRange("lav_150_energy_cost", 64, 0, 2147483647);
@ -179,7 +179,7 @@ public class VehicleConfig {
LAV_150_MAX_ENERGY = builder.defineInRange("lav_150_max_energy", 3000000, 0, 2147483647); LAV_150_MAX_ENERGY = builder.defineInRange("lav_150_max_energy", 3000000, 0, 2147483647);
builder.comment("The cannon damage of Lav_150"); builder.comment("The cannon damage of Lav_150");
LAV_150_CANNON_DAMAGE = builder.defineInRange("lav_150_cannon_damage", 40, 1, 10000000); LAV_150_CANNON_DAMAGE = builder.defineInRange("lav_150_cannon_damage", 45, 1, 10000000);
builder.comment("The rocket explosion damage of Lav_150"); builder.comment("The rocket explosion damage of Lav_150");
LAV_150_CANNON_EXPLOSION_DAMAGE = builder.defineInRange("lav_150_cannon_explosion_damage", 12, 1, 10000000); LAV_150_CANNON_EXPLOSION_DAMAGE = builder.defineInRange("lav_150_cannon_explosion_damage", 12, 1, 10000000);
@ -192,7 +192,7 @@ public class VehicleConfig {
builder.push("tom_6"); builder.push("tom_6");
builder.comment("The HealthPoint of Tom_6"); builder.comment("The HealthPoint of Tom_6");
TOM_6_HP = builder.defineInRange("tom_6_hp", 50, 1, 10000000); TOM_6_HP = builder.defineInRange("tom_6_hp", 40, 1, 10000000);
builder.comment("The energy cost of Tom_6 per tick"); builder.comment("The energy cost of Tom_6 per tick");
TOM_6_ENERGY_COST = builder.defineInRange("tom_6_energy_cost", 16, 0, 2147483647); TOM_6_ENERGY_COST = builder.defineInRange("tom_6_energy_cost", 16, 0, 2147483647);
@ -211,7 +211,7 @@ public class VehicleConfig {
builder.push("bmp_2"); builder.push("bmp_2");
builder.comment("The HealthPoint of Bmp_2"); builder.comment("The HealthPoint of Bmp_2");
BMP_2_HP = builder.defineInRange("bmp_2_hp", 1000, 1, 10000000); BMP_2_HP = builder.defineInRange("bmp_2_hp", 300, 1, 10000000);
builder.comment("The energy cost of Bmp_2 per tick"); builder.comment("The energy cost of Bmp_2 per tick");
BMP_2_ENERGY_COST = builder.defineInRange("bmp_2_energy_cost", 64, 0, 2147483647); BMP_2_ENERGY_COST = builder.defineInRange("bmp_2_energy_cost", 64, 0, 2147483647);
@ -226,7 +226,7 @@ public class VehicleConfig {
BMP_2_CANNON_EXPLOSION_DAMAGE = builder.defineInRange("bmp_2_cannon_explosion_damage", 15, 1, 10000000); BMP_2_CANNON_EXPLOSION_DAMAGE = builder.defineInRange("bmp_2_cannon_explosion_damage", 15, 1, 10000000);
builder.comment("The rocket explosion radius of Bmp_2"); builder.comment("The rocket explosion radius of Bmp_2");
BMP_2_CANNON_EXPLOSION_RADIUS = builder.defineInRange("bmp_2_cannon_explosion_radius", 4d, 1d, 10000000d); BMP_2_CANNON_EXPLOSION_RADIUS = builder.defineInRange("bmp_2_cannon_explosion_radius", 3.2d, 1d, 10000000d);
builder.pop(); builder.pop();
} }

View file

@ -197,7 +197,7 @@ public class ClaymoreEntity extends Entity implements GeoEntity, AnimatedEntity,
ModUtils.queueServerWork(1, () -> { ModUtils.queueServerWork(1, () -> {
if (!level.isClientSide()) if (!level.isClientSide())
triggerExplode(target); triggerExplode();
}); });
} }
} }
@ -241,10 +241,10 @@ public class ClaymoreEntity extends Entity implements GeoEntity, AnimatedEntity,
} }
} }
private void triggerExplode(Entity target) { private void triggerExplode() {
CustomExplosion explosion = new CustomExplosion(this.level(), this, CustomExplosion explosion = new CustomExplosion(this.level(), this,
ModDamageTypes.causeMineDamage(this.level().registryAccess(), this.getOwner()), 140f, ModDamageTypes.causeMineDamage(this.level().registryAccess(), this.getOwner()), 140f,
target.getX(), target.getY(), target.getZ(), 4f, ExplosionDestroyConfig.EXPLOSION_DESTROY.get() ? Explosion.BlockInteraction.DESTROY : Explosion.BlockInteraction.KEEP).setDamageMultiplier(1); this.getX(), this.getEyeY(), this.getZ(), 4f, ExplosionDestroyConfig.EXPLOSION_DESTROY.get() ? Explosion.BlockInteraction.DESTROY : Explosion.BlockInteraction.KEEP).setDamageMultiplier(1);
explosion.explode(); explosion.explode();
net.minecraftforge.event.ForgeEventFactory.onExplosionStart(this.level(), explosion); net.minecraftforge.event.ForgeEventFactory.onExplosionStart(this.level(), explosion);
explosion.finalizeExplosion(false); explosion.finalizeExplosion(false);

View file

@ -98,9 +98,9 @@ public class GunGrenadeEntity extends ThrowableItemProjectile implements GeoEnti
} }
if (entity instanceof Monster monster) { if (entity instanceof Monster monster) {
monster.hurt(ModDamageTypes.causeGunFireHeadshotDamage(this.level().registryAccess(), this, this.getOwner()), 1.2f * this.damage * damageMultiplier); monster.hurt(ModDamageTypes.causeCannonFireDamage(this.level().registryAccess(), this, this.getOwner()), 1.2f * this.damage * damageMultiplier);
} else { } else {
entity.hurt(ModDamageTypes.causeGunFireHeadshotDamage(this.level().registryAccess(), this, this.getOwner()), damage); entity.hurt(ModDamageTypes.causeCannonFireDamage(this.level().registryAccess(), this, this.getOwner()), damage);
} }
if (entity instanceof LivingEntity) { if (entity instanceof LivingEntity) {

View file

@ -263,9 +263,9 @@ public class JavelinMissileEntity extends ThrowableItemProjectile implements Geo
this, this,
this.getOwner()), this.getOwner()),
explosion_damage, explosion_damage,
result.getLocation().x, this.getX(),
result.getLocation().y, this.getEyeY(),
result.getLocation().z, this.getZ(),
explosion_radius, explosion_radius,
ExplosionDestroyConfig.EXPLOSION_DESTROY.get() ? Explosion.BlockInteraction.DESTROY : Explosion.BlockInteraction.KEEP). ExplosionDestroyConfig.EXPLOSION_DESTROY.get() ? Explosion.BlockInteraction.DESTROY : Explosion.BlockInteraction.KEEP).
setDamageMultiplier(this.monsterMultiplier); setDamageMultiplier(this.monsterMultiplier);

View file

@ -113,7 +113,7 @@ public class RgoGrenadeEntity extends ThrowableItemProjectile implements GeoEnti
public static void causeRgoExplode(ThrowableItemProjectile projectile, @Nullable DamageSource source, Entity entity, float damage, float radius, float damageMultiplier) { public static void causeRgoExplode(ThrowableItemProjectile projectile, @Nullable DamageSource source, Entity entity, float damage, float radius, float damageMultiplier) {
CustomExplosion explosion = new CustomExplosion(projectile.level(), projectile, source, damage, CustomExplosion explosion = new CustomExplosion(projectile.level(), projectile, source, damage,
entity.getX(), entity.getY(), entity.getZ(), radius, ExplosionDestroyConfig.EXPLOSION_DESTROY.get() ? Explosion.BlockInteraction.DESTROY : Explosion.BlockInteraction.KEEP).setDamageMultiplier(damageMultiplier); projectile.getX(), projectile.getY(), projectile.getZ(), radius, ExplosionDestroyConfig.EXPLOSION_DESTROY.get() ? Explosion.BlockInteraction.DESTROY : Explosion.BlockInteraction.KEEP).setDamageMultiplier(damageMultiplier);
explosion.explode(); explosion.explode();
net.minecraftforge.event.ForgeEventFactory.onExplosionStart(projectile.level(), explosion); net.minecraftforge.event.ForgeEventFactory.onExplosionStart(projectile.level(), explosion);
explosion.finalizeExplosion(false); explosion.finalizeExplosion(false);

View file

@ -178,7 +178,7 @@ public class RpgRocketEntity extends ThrowableItemProjectile implements GeoEntit
public static void causeRpgExplode(ThrowableItemProjectile projectile, @Nullable DamageSource source, Entity target, float damage, float radius, float damageMultiplier) { public static void causeRpgExplode(ThrowableItemProjectile projectile, @Nullable DamageSource source, Entity target, float damage, float radius, float damageMultiplier) {
CustomExplosion explosion = new CustomExplosion(projectile.level(), projectile, source, damage, CustomExplosion explosion = new CustomExplosion(projectile.level(), projectile, source, damage,
target.getX(), target.getY(), target.getZ(), radius, ExplosionDestroyConfig.EXPLOSION_DESTROY.get() ? Explosion.BlockInteraction.DESTROY : Explosion.BlockInteraction.KEEP).setDamageMultiplier(damageMultiplier); projectile.getX(), projectile.getY(), projectile.getZ(), radius, ExplosionDestroyConfig.EXPLOSION_DESTROY.get() ? Explosion.BlockInteraction.DESTROY : Explosion.BlockInteraction.KEEP).setDamageMultiplier(damageMultiplier);
explosion.explode(); explosion.explode();
net.minecraftforge.event.ForgeEventFactory.onExplosionStart(projectile.level(), explosion); net.minecraftforge.event.ForgeEventFactory.onExplosionStart(projectile.level(), explosion);
explosion.finalizeExplosion(false); explosion.finalizeExplosion(false);

View file

@ -118,9 +118,9 @@ public class SmallCannonShellEntity extends ThrowableItemProjectile implements G
this, this,
this.getOwner()), this.getOwner()),
explosionDamage, explosionDamage,
result.getLocation().x, this.getX(),
result.getLocation().y, this.getEyeY(),
result.getLocation().z, this.getZ(),
explosionRadius, explosionRadius,
ExplosionDestroyConfig.EXPLOSION_DESTROY.get() ? Explosion.BlockInteraction.DESTROY : Explosion.BlockInteraction.KEEP). ExplosionDestroyConfig.EXPLOSION_DESTROY.get() ? Explosion.BlockInteraction.DESTROY : Explosion.BlockInteraction.KEEP).
setDamageMultiplier(1.25f); setDamageMultiplier(1.25f);

View file

@ -27,6 +27,7 @@ import net.minecraft.sounds.SoundEvent;
import net.minecraft.sounds.SoundSource; import net.minecraft.sounds.SoundSource;
import net.minecraft.util.Mth; import net.minecraft.util.Mth;
import net.minecraft.world.damagesource.DamageSource; import net.minecraft.world.damagesource.DamageSource;
import net.minecraft.world.damagesource.DamageTypes;
import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.EntityType;
import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.LivingEntity;
@ -130,23 +131,62 @@ public class Ah6Entity extends ContainerMobileEntity implements GeoEntity, IHeli
if (this.level() instanceof ServerLevel serverLevel) { if (this.level() instanceof ServerLevel serverLevel) {
sendParticle(serverLevel, ModParticleTypes.FIRE_STAR.get(), this.getX(), this.getY() + 2.5, this.getZ(), 4, 0.2, 0.2, 0.2, 0.2, false); sendParticle(serverLevel, ModParticleTypes.FIRE_STAR.get(), this.getX(), this.getY() + 2.5, this.getZ(), 4, 0.2, 0.2, 0.2, 0.2, false);
} }
if (source.is(DamageTypes.ARROW)) {
amount *= 0.1f;
}
if (source.is(DamageTypes.TRIDENT)) {
amount *= 0.2f;
}
if (source.is(DamageTypes.MOB_ATTACK)) {
amount *= 0.2f;
}
if (source.is(DamageTypes.MOB_ATTACK_NO_AGGRO)) {
amount *= 0.2f;
}
if (source.is(DamageTypes.MOB_PROJECTILE)) {
amount *= 0.2f;
}
if (source.is(DamageTypes.PLAYER_ATTACK)) {
amount *= 0.2f;
}
if (source.is(DamageTypes.LAVA)) {
amount *= 2f;
}
if (source.is(DamageTypes.EXPLOSION)) {
amount *= 3.5f;
}
if (source.is(DamageTypes.PLAYER_EXPLOSION)) {
amount *= 3.5f;
}
if (source.is(ModDamageTypes.CUSTOM_EXPLOSION)) {
amount *= 0.5f;
}
if (source.is(ModDamageTypes.PROJECTILE_BOOM)) { if (source.is(ModDamageTypes.PROJECTILE_BOOM)) {
amount *= 1f; amount *= 0.5f;
}
if (source.is(ModDamageTypes.MINE)) {
amount *= 0.5f;
}
if (source.is(ModDamageTypes.LUNGE_MINE)) {
amount *= 0.5f;
} }
if (source.is(ModDamageTypes.CANNON_FIRE)) { if (source.is(ModDamageTypes.CANNON_FIRE)) {
amount *= 1.5f; amount *= 0.6f;
} }
if (source.is(ModDamageTypes.GUN_FIRE)) { if (source.is(ModTags.DamageTypes.PROJECTILE)) {
amount *= 0.3f; amount *= 0.08f;
} }
if (source.is(ModDamageTypes.GUN_FIRE_ABSOLUTE)) { if (source.is(ModTags.DamageTypes.PROJECTILE_ABSOLUTE)) {
amount *= 0.7f; amount *= 0.5f;
} }
if (source.is(ModDamageTypes.VEHICLE_STRIKE)) { if (source.is(ModDamageTypes.VEHICLE_STRIKE)) {
amount *= 4f; amount *= 5f;
} }
this.level().playSound(null, this.getOnPos(), ModSounds.HIT.get(), SoundSource.PLAYERS, 1, 1); this.level().playSound(null, this.getOnPos(), ModSounds.HIT.get(), SoundSource.PLAYERS, 1, 1);
this.hurt(0.75f * Math.max(amount - 5, 0)); this.hurt(Math.max(amount - 2, 0));
return true; return true;
} }
@ -651,16 +691,6 @@ public class Ah6Entity extends ContainerMobileEntity implements GeoEntity, IHeli
return super.getDismountLocationForPassenger(passenger); return super.getDismountLocationForPassenger(passenger);
} }
@Override
public float ignoreExplosionHorizontalKnockBack() {
return -0.5f;
}
@Override
public float ignoreExplosionVerticalKnockBack() {
return -0.9f;
}
@Override @Override
public boolean isDriver(Player player) { public boolean isDriver(Player player) {
return player == this.getFirstPassenger(); return player == this.getFirstPassenger();

View file

@ -27,6 +27,7 @@ import net.minecraft.sounds.SoundEvent;
import net.minecraft.sounds.SoundSource; import net.minecraft.sounds.SoundSource;
import net.minecraft.util.Mth; import net.minecraft.util.Mth;
import net.minecraft.world.damagesource.DamageSource; import net.minecraft.world.damagesource.DamageSource;
import net.minecraft.world.damagesource.DamageTypes;
import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.EntityType;
import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.LivingEntity;
@ -135,25 +136,64 @@ public class Bmp2Entity extends ContainerMobileEntity implements GeoEntity, ICha
if (this.level() instanceof ServerLevel serverLevel) { if (this.level() instanceof ServerLevel serverLevel) {
sendParticle(serverLevel, ModParticleTypes.FIRE_STAR.get(), this.getX(), this.getY() + 2.5, this.getZ(), 4, 0.2, 0.2, 0.2, 0.2, false); sendParticle(serverLevel, ModParticleTypes.FIRE_STAR.get(), this.getX(), this.getY() + 2.5, this.getZ(), 4, 0.2, 0.2, 0.2, 0.2, false);
} }
if (source.is(ModDamageTypes.PROJECTILE_BOOM)) {
amount *= 1.2f; if (source.is(DamageTypes.ARROW)) {
amount *= 0.1f;
} }
if (source.is(ModDamageTypes.CANNON_FIRE)) { if (source.is(DamageTypes.TRIDENT)) {
amount *= 2f; amount *= 0.1f;
} }
if (source.is(ModDamageTypes.GUN_FIRE)) { if (source.is(DamageTypes.MOB_ATTACK)) {
amount *= 0.2f;
}
if (source.is(ModDamageTypes.GUN_FIRE_ABSOLUTE)) {
amount *= 0.3f; amount *= 0.3f;
} }
if (source.is(ModDamageTypes.VEHICLE_STRIKE)) { if (source.is(DamageTypes.MOB_ATTACK_NO_AGGRO)) {
amount *= 0.15f;
}
if (source.is(DamageTypes.MOB_PROJECTILE)) {
amount *= 0.15f;
}
if (source.is(DamageTypes.PLAYER_ATTACK)) {
amount *= 0.1f;
}
if (source.is(DamageTypes.LAVA)) {
amount *= 2.5f;
}
if (source.is(DamageTypes.EXPLOSION)) {
amount *= 2f;
}
if (source.is(DamageTypes.PLAYER_EXPLOSION)) {
amount *= 2f;
}
if (source.is(ModDamageTypes.CUSTOM_EXPLOSION)) {
amount *= 0.4f; amount *= 0.4f;
} }
if (source.is(ModDamageTypes.PROJECTILE_BOOM)) {
amount *= 0.4f;
}
if (source.is(ModDamageTypes.MINE)) {
amount *= 0.14f;
}
if (source.is(ModDamageTypes.LUNGE_MINE)) {
amount *= 0.14f;
}
if (source.is(ModDamageTypes.CANNON_FIRE)) {
amount *= 0.3f;
}
if (source.is(ModTags.DamageTypes.PROJECTILE)) {
amount *= 0.02f;
}
if (source.is(ModTags.DamageTypes.PROJECTILE_ABSOLUTE)) {
amount *= 0.14f;
}
if (source.is(ModDamageTypes.VEHICLE_STRIKE)) {
amount *= 1.7f;
}
this.level().playSound(null, this.getOnPos(), ModSounds.HIT.get(), SoundSource.PLAYERS, 1, 1); this.level().playSound(null, this.getOnPos(), ModSounds.HIT.get(), SoundSource.PLAYERS, 1, 1);
this.hurt(0.5f * Math.max(amount - 13, 0)); this.hurt(Math.max(amount - 8, 0));
return true; return true;
} }
@ -434,13 +474,18 @@ public class Bmp2Entity extends ContainerMobileEntity implements GeoEntity, ICha
if (backInputDown) { if (backInputDown) {
this.entityData.set(POWER, Math.max(this.entityData.get(POWER) - (this.entityData.get(POWER) > 0 ? 0.016f : 0.0024f), -0.16f)); this.entityData.set(POWER, Math.max(this.entityData.get(POWER) - (this.entityData.get(POWER) > 0 ? 0.016f : 0.0024f), -0.16f));
if (rightInputDown) {
this.entityData.set(DELTA_ROT, this.entityData.get(DELTA_ROT) + 0.1f);
} else if (this.leftInputDown) {
this.entityData.set(DELTA_ROT, this.entityData.get(DELTA_ROT) - 0.1f);
} }
} else {
if (rightInputDown) { if (rightInputDown) {
this.entityData.set(DELTA_ROT, this.entityData.get(DELTA_ROT) - 0.1f); this.entityData.set(DELTA_ROT, this.entityData.get(DELTA_ROT) - 0.1f);
} else if (this.leftInputDown) { } else if (this.leftInputDown) {
this.entityData.set(DELTA_ROT, this.entityData.get(DELTA_ROT) + 0.1f); this.entityData.set(DELTA_ROT, this.entityData.get(DELTA_ROT) + 0.1f);
} }
}
if (this.forwardInputDown || this.backInputDown) { if (this.forwardInputDown || this.backInputDown) {
this.consumeEnergy(VehicleConfig.BMP_2_ENERGY_COST.get()); this.consumeEnergy(VehicleConfig.BMP_2_ENERGY_COST.get());
@ -461,8 +506,8 @@ public class Bmp2Entity extends ContainerMobileEntity implements GeoEntity, ICha
this.setLeftWheelRot((float) ((this.getLeftWheelRot() - 1.25 * s0) + Mth.clamp(0.75f * this.entityData.get(DELTA_ROT), -5f, 5f))); this.setLeftWheelRot((float) ((this.getLeftWheelRot() - 1.25 * s0) + Mth.clamp(0.75f * this.entityData.get(DELTA_ROT), -5f, 5f)));
this.setRightWheelRot((float) ((this.getRightWheelRot() - 1.25 * s0) - Mth.clamp(0.75f * this.entityData.get(DELTA_ROT), -5f, 5f))); this.setRightWheelRot((float) ((this.getRightWheelRot() - 1.25 * s0) - Mth.clamp(0.75f * this.entityData.get(DELTA_ROT), -5f, 5f)));
this.entityData.set(TRACK_L, (float) ((entityData.get(TRACK_L) - 1.7 * Math.PI * s0) + Mth.clamp(0.75f * Math.PI * this.entityData.get(DELTA_ROT), -5f, 5f))); this.entityData.set(TRACK_L, (float) ((entityData.get(TRACK_L) - 1.9 * Math.PI * s0) + Mth.clamp(0.4f * Math.PI * this.entityData.get(DELTA_ROT), -5f, 5f)));
this.entityData.set(TRACK_R, (float) ((entityData.get(TRACK_R) - 1.7 * Math.PI * s0) - Mth.clamp(0.75f * Math.PI * this.entityData.get(DELTA_ROT), -5f, 5f))); this.entityData.set(TRACK_R, (float) ((entityData.get(TRACK_R) - 1.9 * Math.PI * s0) - Mth.clamp(0.4f * Math.PI * this.entityData.get(DELTA_ROT), -5f, 5f)));
if (this.isInWater() || onGround()) { if (this.isInWater() || onGround()) {
@ -662,16 +707,6 @@ public class Bmp2Entity extends ContainerMobileEntity implements GeoEntity, ICha
return this.cache; return this.cache;
} }
@Override
public float ignoreExplosionHorizontalKnockBack() {
return -0.9f;
}
@Override
public float ignoreExplosionVerticalKnockBack() {
return -0.9f;
}
@Override @Override
public int getMaxEnergy() { public int getMaxEnergy() {
return MAX_ENERGY; return MAX_ENERGY;

View file

@ -598,16 +598,6 @@ public class DroneEntity extends MobileVehicleEntity implements GeoEntity {
return this.cache; return this.cache;
} }
@Override
public float ignoreExplosionHorizontalKnockBack() {
return 0;
}
@Override
public float ignoreExplosionVerticalKnockBack() {
return 0;
}
@Override @Override
public void onRemovedFromWorld() { public void onRemovedFromWorld() {
if (this.level() instanceof ServerLevel serverLevel) { if (this.level() instanceof ServerLevel serverLevel) {

View file

@ -27,6 +27,7 @@ import net.minecraft.sounds.SoundEvent;
import net.minecraft.sounds.SoundSource; import net.minecraft.sounds.SoundSource;
import net.minecraft.util.Mth; import net.minecraft.util.Mth;
import net.minecraft.world.damagesource.DamageSource; import net.minecraft.world.damagesource.DamageSource;
import net.minecraft.world.damagesource.DamageTypes;
import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.EntityType;
import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.LivingEntity;
@ -133,25 +134,62 @@ public class Lav150Entity extends ContainerMobileEntity implements GeoEntity, IC
if (this.level() instanceof ServerLevel serverLevel) { if (this.level() instanceof ServerLevel serverLevel) {
sendParticle(serverLevel, ModParticleTypes.FIRE_STAR.get(), this.getX(), this.getY() + 2.5, this.getZ(), 4, 0.2, 0.2, 0.2, 0.2, false); sendParticle(serverLevel, ModParticleTypes.FIRE_STAR.get(), this.getX(), this.getY() + 2.5, this.getZ(), 4, 0.2, 0.2, 0.2, 0.2, false);
} }
if (source.is(ModDamageTypes.PROJECTILE_BOOM)) {
amount *= 1.5f; if (source.is(DamageTypes.ARROW)) {
amount *= 0.1f;
} }
if (source.is(ModDamageTypes.CANNON_FIRE)) { if (source.is(DamageTypes.TRIDENT)) {
amount *= 0.2f;
}
if (source.is(DamageTypes.MOB_ATTACK)) {
amount *= 0.2f;
}
if (source.is(DamageTypes.MOB_ATTACK_NO_AGGRO)) {
amount *= 0.2f;
}
if (source.is(DamageTypes.MOB_PROJECTILE)) {
amount *= 0.2f;
}
if (source.is(DamageTypes.PLAYER_ATTACK)) {
amount *= 0.2f;
}
if (source.is(DamageTypes.LAVA)) {
amount *= 2.5f; amount *= 2.5f;
} }
if (source.is(ModDamageTypes.GUN_FIRE)) { if (source.is(DamageTypes.EXPLOSION)) {
amount *= 2f;
}
if (source.is(DamageTypes.PLAYER_EXPLOSION)) {
amount *= 2f;
}
if (source.is(ModDamageTypes.CUSTOM_EXPLOSION)) {
amount *= 0.4f; amount *= 0.4f;
} }
if (source.is(ModDamageTypes.GUN_FIRE_ABSOLUTE)) { if (source.is(ModDamageTypes.PROJECTILE_BOOM)) {
amount *= 0.6f; amount *= 0.4f;
}
if (source.is(ModDamageTypes.MINE)) {
amount *= 0.15f;
}
if (source.is(ModDamageTypes.LUNGE_MINE)) {
amount *= 0.15f;
}
if (source.is(ModDamageTypes.CANNON_FIRE)) {
amount *= 0.3f;
}
if (source.is(ModTags.DamageTypes.PROJECTILE)) {
amount *= 0.05f;
}
if (source.is(ModTags.DamageTypes.PROJECTILE_ABSOLUTE)) {
amount *= 0.17f;
} }
if (source.is(ModDamageTypes.VEHICLE_STRIKE)) { if (source.is(ModDamageTypes.VEHICLE_STRIKE)) {
amount *= 0.7f; amount *= 2f;
} }
this.level().playSound(null, this.getOnPos(), ModSounds.HIT.get(), SoundSource.PLAYERS, 1, 1); this.level().playSound(null, this.getOnPos(), ModSounds.HIT.get(), SoundSource.PLAYERS, 1, 1);
this.hurt(0.5f * Math.max(amount - 10, 0)); this.hurt(Math.max(amount - 7, 0));
return true; return true;
} }
@ -679,16 +717,6 @@ public class Lav150Entity extends ContainerMobileEntity implements GeoEntity, IC
return this.cache; return this.cache;
} }
@Override
public float ignoreExplosionHorizontalKnockBack() {
return -0.9f;
}
@Override
public float ignoreExplosionVerticalKnockBack() {
return -0.9f;
}
@Override @Override
public int getMaxEnergy() { public int getMaxEnergy() {
return MAX_ENERGY; return MAX_ENERGY;

View file

@ -86,10 +86,10 @@ public class MobileVehicleEntity extends EnergyVehicleEntity {
if ((verticalCollision)) { if ((verticalCollision)) {
if (this instanceof IHelicopterEntity) { if (this instanceof IHelicopterEntity) {
this.hurt(ModDamageTypes.causeVehicleStrikeDamage(this.level().registryAccess(), this, this.getFirstPassenger() == null ? this : this.getFirstPassenger()), (float) (100 * ((lastTickSpeed - 0.3) * (lastTickSpeed - 0.3)))); this.hurt(ModDamageTypes.causeVehicleStrikeDamage(this.level().registryAccess(), this, this.getFirstPassenger() == null ? this : this.getFirstPassenger()), (float) (20 * ((lastTickSpeed - 0.3) * (lastTickSpeed - 0.3))));
this.bounceVertical(Direction.getNearest(this.getDeltaMovement().x(), this.getDeltaMovement().y(), this.getDeltaMovement().z()).getOpposite()); this.bounceVertical(Direction.getNearest(this.getDeltaMovement().x(), this.getDeltaMovement().y(), this.getDeltaMovement().z()).getOpposite());
} else if (Mth.abs((float) lastTickVerticalSpeed) > 0.6) { } else if (Mth.abs((float) lastTickVerticalSpeed) > 0.6) {
this.hurt(ModDamageTypes.causeVehicleStrikeDamage(this.level().registryAccess(), this, this.getFirstPassenger() == null ? this : this.getFirstPassenger()), (float) (240 * ((Mth.abs((float) lastTickVerticalSpeed) - 0.6) * (lastTickSpeed - 0.4) * (lastTickSpeed - 0.4)))); this.hurt(ModDamageTypes.causeVehicleStrikeDamage(this.level().registryAccess(), this, this.getFirstPassenger() == null ? this : this.getFirstPassenger()), (float) (48 * ((Mth.abs((float) lastTickVerticalSpeed) - 0.6) * (lastTickSpeed - 0.4) * (lastTickSpeed - 0.4))));
if (!this.level().isClientSide) { if (!this.level().isClientSide) {
this.level().playSound(null, this, ModSounds.VEHICLE_STRIKE.get(), this.getSoundSource(), 1, 1); this.level().playSound(null, this, ModSounds.VEHICLE_STRIKE.get(), this.getSoundSource(), 1, 1);
} }
@ -98,7 +98,7 @@ public class MobileVehicleEntity extends EnergyVehicleEntity {
} }
if (this.horizontalCollision) { if (this.horizontalCollision) {
this.hurt(ModDamageTypes.causeVehicleStrikeDamage(this.level().registryAccess(), this, this.getFirstPassenger() == null ? this : this.getFirstPassenger()), (float) (180 * ((lastTickSpeed - 0.4) * (lastTickSpeed - 0.4)))); this.hurt(ModDamageTypes.causeVehicleStrikeDamage(this.level().registryAccess(), this, this.getFirstPassenger() == null ? this : this.getFirstPassenger()), (float) (36 * ((lastTickSpeed - 0.4) * (lastTickSpeed - 0.4))));
this.bounceHorizontal(Direction.getNearest(this.getDeltaMovement().x(), this.getDeltaMovement().y(), this.getDeltaMovement().z()).getOpposite()); this.bounceHorizontal(Direction.getNearest(this.getDeltaMovement().x(), this.getDeltaMovement().y(), this.getDeltaMovement().z()).getOpposite());
if (!this.level().isClientSide) { if (!this.level().isClientSide) {
this.level().playSound(null, this, ModSounds.VEHICLE_STRIKE.get(), this.getSoundSource(), 1, 1); this.level().playSound(null, this, ModSounds.VEHICLE_STRIKE.get(), this.getSoundSource(), 1, 1);

View file

@ -25,6 +25,7 @@ import net.minecraft.sounds.SoundEvent;
import net.minecraft.sounds.SoundSource; import net.minecraft.sounds.SoundSource;
import net.minecraft.util.Mth; import net.minecraft.util.Mth;
import net.minecraft.world.damagesource.DamageSource; import net.minecraft.world.damagesource.DamageSource;
import net.minecraft.world.damagesource.DamageTypes;
import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.EntityType;
import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.LivingEntity;
@ -121,21 +122,62 @@ public class SpeedboatEntity extends ContainerMobileEntity implements GeoEntity,
if (this.level() instanceof ServerLevel serverLevel) { if (this.level() instanceof ServerLevel serverLevel) {
sendParticle(serverLevel, ModParticleTypes.FIRE_STAR.get(), this.getX(), this.getY() + 2.5, this.getZ(), 4, 0.2, 0.2, 0.2, 0.2, false); sendParticle(serverLevel, ModParticleTypes.FIRE_STAR.get(), this.getX(), this.getY() + 2.5, this.getZ(), 4, 0.2, 0.2, 0.2, 0.2, false);
} }
if (source.is(ModDamageTypes.PROJECTILE_BOOM)) {
if (source.is(DamageTypes.ARROW)) {
amount *= 0.1f;
}
if (source.is(DamageTypes.TRIDENT)) {
amount *= 0.2f;
}
if (source.is(DamageTypes.MOB_ATTACK)) {
amount *= 0.2f;
}
if (source.is(DamageTypes.MOB_ATTACK_NO_AGGRO)) {
amount *= 0.2f;
}
if (source.is(DamageTypes.MOB_PROJECTILE)) {
amount *= 0.2f;
}
if (source.is(DamageTypes.PLAYER_ATTACK)) {
amount *= 0.2f;
}
if (source.is(DamageTypes.LAVA)) {
amount *= 2f; amount *= 2f;
} }
if (source.is(ModDamageTypes.CANNON_FIRE)) { if (source.is(DamageTypes.EXPLOSION)) {
amount *= 3f; amount *= 3.5f;
} }
if (source.is(ModDamageTypes.GUN_FIRE)) { if (source.is(DamageTypes.PLAYER_EXPLOSION)) {
amount *= 0.3f; amount *= 3.5f;
} }
if (source.is(ModDamageTypes.GUN_FIRE_ABSOLUTE)) {
amount *= 0.7f;
}
this.level().playSound(null, this.getOnPos(), ModSounds.HIT.get(), SoundSource.PLAYERS, 1, 1);
this.hurt(0.5f * Math.max(amount - 3, 0));
if (source.is(ModDamageTypes.CUSTOM_EXPLOSION)) {
amount *= 0.5f;
}
if (source.is(ModDamageTypes.PROJECTILE_BOOM)) {
amount *= 0.5f;
}
if (source.is(ModDamageTypes.MINE)) {
amount *= 0.5f;
}
if (source.is(ModDamageTypes.LUNGE_MINE)) {
amount *= 0.5f;
}
if (source.is(ModDamageTypes.CANNON_FIRE)) {
amount *= 0.6f;
}
if (source.is(ModTags.DamageTypes.PROJECTILE)) {
amount *= 0.08f;
}
if (source.is(ModTags.DamageTypes.PROJECTILE_ABSOLUTE)) {
amount *= 0.5f;
}
if (source.is(ModDamageTypes.VEHICLE_STRIKE)) {
amount *= 5f;
}
this.level().playSound(null, this.getOnPos(), ModSounds.HIT.get(), SoundSource.PLAYERS, 1, 1);
this.hurt(Math.max(amount - 2, 0));
return true; return true;
} }
@ -230,7 +272,7 @@ public class SpeedboatEntity extends ContainerMobileEntity implements GeoEntity,
.headShot(2f) .headShot(2f)
.zoom(false); .zoom(false);
projectile.bypassArmorRate(0.9f); projectile.bypassArmorRate(1f);
projectile.setPos(this.xo - this.getViewVector(1).scale(0.54).x - this.getDeltaMovement().x, this.yo + 3.0, this.zo - this.getViewVector(1).scale(0.54).z - this.getDeltaMovement().z); projectile.setPos(this.xo - this.getViewVector(1).scale(0.54).x - this.getDeltaMovement().x, this.yo + 3.0, this.zo - this.getViewVector(1).scale(0.54).z - this.getDeltaMovement().z);
projectile.shoot(player, player.getLookAngle().x, player.getLookAngle().y + (zooming() ? 0.002f : -0.009f), player.getLookAngle().z, 20, projectile.shoot(player, player.getLookAngle().x, player.getLookAngle().y + (zooming() ? 0.002f : -0.009f), player.getLookAngle().z, 20,
(float) 0.4); (float) 0.4);
@ -475,16 +517,6 @@ public class SpeedboatEntity extends ContainerMobileEntity implements GeoEntity,
return this.cache; return this.cache;
} }
@Override
public float ignoreExplosionHorizontalKnockBack() {
return -0.5f;
}
@Override
public float ignoreExplosionVerticalKnockBack() {
return -0.9f;
}
@Override @Override
public int getMaxPassengers() { public int getMaxPassengers() {
return 5; return 5;

View file

@ -331,16 +331,6 @@ public class Tom6Entity extends MobileVehicleEntity implements GeoEntity {
this.discard(); this.discard();
} }
@Override
public float ignoreExplosionHorizontalKnockBack() {
return -0.2f;
}
@Override
public float ignoreExplosionVerticalKnockBack() {
return -0.3f;
}
@Override @Override
public void registerControllers(AnimatableManager.ControllerRegistrar data) { public void registerControllers(AnimatableManager.ControllerRegistrar data) {
} }

View file

@ -147,27 +147,18 @@ public class VehicleEntity extends Entity {
return false; return false;
if (source.is(DamageTypes.DROWN)) if (source.is(DamageTypes.DROWN))
return false; return false;
if (source.is(DamageTypes.LIGHTNING_BOLT))
return false;
if (source.is(DamageTypes.FALLING_ANVIL))
return false;
if (source.is(DamageTypes.DRAGON_BREATH)) if (source.is(DamageTypes.DRAGON_BREATH))
return false; return false;
if (source.is(DamageTypes.WITHER)) if (source.is(DamageTypes.WITHER))
return false; return false;
if (source.is(DamageTypes.WITHER_SKULL)) if (source.is(DamageTypes.WITHER_SKULL))
return false; return false;
if (source.is(DamageTypes.ON_FIRE))
return false;
if (source.is(DamageTypes.IN_FIRE))
return false;
if (source.is(ModDamageTypes.VEHICLE_STRIKE)) { if (source.is(ModDamageTypes.VEHICLE_STRIKE)) {
amount -= 20; amount -= 20;
crash = true; crash = true;
} else { } else {
crash = false; crash = false;
} }
if (source.getEntity() != null) { if (source.getEntity() != null) {
this.entityData.set(LAST_ATTACKER_UUID, source.getEntity().getStringUUID()); this.entityData.set(LAST_ATTACKER_UUID, source.getEntity().getStringUUID());
} }
@ -323,14 +314,6 @@ public class VehicleEntity extends Entity {
public void travel() { public void travel() {
} }
public float ignoreExplosionHorizontalKnockBack() {
return -1f;
}
public float ignoreExplosionVerticalKnockBack() {
return -1f;
}
// From Immersive_Aircraft // From Immersive_Aircraft
public Matrix4f getVehicleTransform() { public Matrix4f getVehicleTransform() {
Matrix4f transform = new Matrix4f(); Matrix4f transform = new Matrix4f();

View file

@ -277,16 +277,6 @@ public class WheelChairEntity extends MobileVehicleEntity implements GeoEntity {
this.discard(); this.discard();
} }
@Override
public float ignoreExplosionHorizontalKnockBack() {
return -0.2f;
}
@Override
public float ignoreExplosionVerticalKnockBack() {
return -0.3f;
}
@Override @Override
public void registerControllers(AnimatableManager.ControllerRegistrar data) { public void registerControllers(AnimatableManager.ControllerRegistrar data) {
} }

View file

@ -200,12 +200,10 @@ public class CustomExplosion extends Explosion {
d11 = damagePercent; d11 = damagePercent;
} }
xDistance *= d11;
yDistance *= d11; yDistance *= d11;
zDistance *= d11;
if (entity instanceof VehicleEntity vehicle && !bullet) { if (entity instanceof VehicleEntity vehicle && !bullet) {
Vec3 knockbackVec = new Vec3(vehicle.ignoreExplosionHorizontalKnockBack() * xDistance, vehicle.ignoreExplosionVerticalKnockBack() * yDistance, vehicle.ignoreExplosionHorizontalKnockBack() * zDistance); Vec3 knockbackVec = new Vec3(0, -0.2 * yDistance, 0);
vehicle.setDeltaMovement(vehicle.getDeltaMovement().add(knockbackVec)); vehicle.setDeltaMovement(vehicle.getDeltaMovement().add(knockbackVec));
} }
} }

View file

@ -13,7 +13,7 @@ public class ProjectileTool {
public static void causeCustomExplode(ThrowableItemProjectile projectile, @Nullable DamageSource source, Entity target, float damage, float radius, float damageMultiplier) { public static void causeCustomExplode(ThrowableItemProjectile projectile, @Nullable DamageSource source, Entity target, float damage, float radius, float damageMultiplier) {
CustomExplosion explosion = new CustomExplosion(projectile.level(), projectile, source, damage, CustomExplosion explosion = new CustomExplosion(projectile.level(), projectile, source, damage,
target.getX(), target.getY(), target.getZ(), radius, ExplosionDestroyConfig.EXPLOSION_DESTROY.get() ? Explosion.BlockInteraction.DESTROY : Explosion.BlockInteraction.KEEP).setDamageMultiplier(damageMultiplier); projectile.getX(), projectile.getEyeY(), projectile.getZ(), radius, ExplosionDestroyConfig.EXPLOSION_DESTROY.get() ? Explosion.BlockInteraction.DESTROY : Explosion.BlockInteraction.KEEP).setDamageMultiplier(damageMultiplier);
explosion.explode(); explosion.explode();
net.minecraftforge.event.ForgeEventFactory.onExplosionStart(projectile.level(), explosion); net.minecraftforge.event.ForgeEventFactory.onExplosionStart(projectile.level(), explosion);
explosion.finalizeExplosion(false); explosion.finalizeExplosion(false);

View file

@ -8909,8 +8909,25 @@
{ {
"name": "trackL", "name": "trackL",
"parent": "root", "parent": "root",
"pivot": [30, 24.43117, 54.91481], "pivot": [30, 24.43117, 54.91481]
},
{
"name": "bone21",
"parent": "trackL",
"pivot": [30, 20.09532, -60.28029],
"cubes": [ "cubes": [
{
"origin": [26.9, 20.70298, -61.02558],
"size": [6.2, 1.1, 6.4],
"pivot": [30, 20.27286, -60.10428],
"rotation": [45.25, 0, 0],
"uv": {
"east": {"uv": [93, 61], "uv_size": [-1, 1]},
"west": {"uv": [63, 92], "uv_size": [-1, 1]},
"up": {"uv": [84, 65], "uv_size": [2, -1]},
"down": {"uv": [84, 65], "uv_size": [2, 1]}
}
},
{ {
"origin": [26.9, 24.13117, -57.33519], "origin": [26.9, 24.13117, -57.33519],
"size": [6.2, 1.1, 114.5], "size": [6.2, 1.1, 114.5],
@ -8948,9 +8965,9 @@
} }
}, },
{ {
"origin": [26.9, 11.49318, 55.14941], "origin": [26.9, 11.49316, 53.24941],
"size": [6.2, 1.1, 17.75], "size": [6.2, 1.1, 19.15],
"pivot": [30, 11.03655, 55.75669], "pivot": [30, 11.03653, 55.25669],
"rotation": [-147.75, 0, 0], "rotation": [-147.75, 0, 0],
"uv": { "uv": {
"east": {"uv": [92, 61], "uv_size": [1, 1]}, "east": {"uv": [92, 61], "uv_size": [1, 1]},
@ -8960,8 +8977,8 @@
} }
}, },
{ {
"origin": [26.9, 2.58572, 40.8747], "origin": [26.9, 2.58572, 41.3747],
"size": [6.2, 1.1, 83.25], "size": [6.2, 1.1, 82.75],
"pivot": [30, 2.12908, 41.48198], "pivot": [30, 2.12908, 41.48198],
"rotation": [180, 0, 0], "rotation": [180, 0, 0],
"uv": { "uv": {
@ -8973,7 +8990,7 @@
}, },
{ {
"origin": [26.9, 12.03349, 51.02174], "origin": [26.9, 12.03349, 51.02174],
"size": [6.2, 1.1, 6.15], "size": [6.2, 1.1, 5.15],
"pivot": [30, 11.60338, 56.50044], "pivot": [30, 11.60338, 56.50044],
"rotation": [-135.25, 0, 0], "rotation": [-135.25, 0, 0],
"uv": { "uv": {
@ -9018,18 +9035,6 @@
"up": {"uv": [84, 65], "uv_size": [2, -1]}, "up": {"uv": [84, 65], "uv_size": [2, -1]},
"down": {"uv": [84, 65], "uv_size": [2, 1]} "down": {"uv": [84, 65], "uv_size": [2, 1]}
} }
},
{
"origin": [26.9, 20.70298, -61.02558],
"size": [6.2, 1.1, 6.4],
"pivot": [30, 20.27286, -60.10428],
"rotation": [45.25, 0, 0],
"uv": {
"east": {"uv": [93, 61], "uv_size": [-1, 1]},
"west": {"uv": [63, 92], "uv_size": [-1, 1]},
"up": {"uv": [84, 65], "uv_size": [2, -1]},
"down": {"uv": [84, 65], "uv_size": [2, 1]}
}
} }
] ]
}, },
@ -10339,10 +10344,22 @@
"pivot": [-30, 24.43117, 54.91481] "pivot": [-30, 24.43117, 54.91481]
}, },
{ {
"name": "bone21", "name": "bone45",
"parent": "trackR", "parent": "trackR",
"pivot": [-30, 20.27286, -60.10428], "pivot": [-30, 20.09532, -60.28029],
"cubes": [ "cubes": [
{
"origin": [-33.1, 20.70298, -61.02558],
"size": [6.2, 1.1, 6.4],
"pivot": [-30, 20.27286, -60.10428],
"rotation": [45.25, 0, 0],
"uv": {
"east": {"uv": [62, 92], "uv_size": [1, 1]},
"west": {"uv": [92, 61], "uv_size": [1, 1]},
"up": {"uv": [86, 65], "uv_size": [-2, -1]},
"down": {"uv": [86, 65], "uv_size": [-2, 1]}
}
},
{ {
"origin": [-33.1, 24.13117, -57.33519], "origin": [-33.1, 24.13117, -57.33519],
"size": [6.2, 1.1, 114.5], "size": [6.2, 1.1, 114.5],
@ -10380,9 +10397,9 @@
} }
}, },
{ {
"origin": [-33.1, 11.49318, 55.14941], "origin": [-33.1, 11.49316, 53.24941],
"size": [6.2, 1.1, 17.75], "size": [6.2, 1.1, 19.15],
"pivot": [-30, 11.03655, 55.75669], "pivot": [-30, 11.03653, 55.25669],
"rotation": [-147.75, 0, 0], "rotation": [-147.75, 0, 0],
"uv": { "uv": {
"east": {"uv": [63, 92], "uv_size": [-1, 1]}, "east": {"uv": [63, 92], "uv_size": [-1, 1]},
@ -10392,8 +10409,8 @@
} }
}, },
{ {
"origin": [-33.1, 2.58572, 40.8747], "origin": [-33.1, 2.58572, 41.3747],
"size": [6.2, 1.1, 83.25], "size": [6.2, 1.1, 82.75],
"pivot": [-30, 2.12908, 41.48198], "pivot": [-30, 2.12908, 41.48198],
"rotation": [180, 0, 0], "rotation": [180, 0, 0],
"uv": { "uv": {
@ -10405,7 +10422,7 @@
}, },
{ {
"origin": [-33.1, 12.03349, 51.02174], "origin": [-33.1, 12.03349, 51.02174],
"size": [6.2, 1.1, 6.15], "size": [6.2, 1.1, 5.15],
"pivot": [-30, 11.60338, 56.50044], "pivot": [-30, 11.60338, 56.50044],
"rotation": [-135.25, 0, 0], "rotation": [-135.25, 0, 0],
"uv": { "uv": {
@ -10450,18 +10467,6 @@
"up": {"uv": [86, 65], "uv_size": [-2, -1]}, "up": {"uv": [86, 65], "uv_size": [-2, -1]},
"down": {"uv": [86, 65], "uv_size": [-2, 1]} "down": {"uv": [86, 65], "uv_size": [-2, 1]}
} }
},
{
"origin": [-33.1, 20.70298, -61.02558],
"size": [6.2, 1.1, 6.4],
"pivot": [-30, 20.27286, -60.10428],
"rotation": [45.25, 0, 0],
"uv": {
"east": {"uv": [62, 92], "uv_size": [1, 1]},
"west": {"uv": [92, 61], "uv_size": [1, 1]},
"up": {"uv": [86, 65], "uv_size": [-2, -1]},
"down": {"uv": [86, 65], "uv_size": [-2, 1]}
}
} }
] ]
}, },

View file

@ -4,7 +4,7 @@
"Magazine": 1, "Magazine": 1,
"Weight": 10, "Weight": 10,
"EmptyReloadTime": 78, "EmptyReloadTime": 78,
"Damage": 300, "Damage": 450,
"ExplosionDamage": 100, "ExplosionDamage": 50,
"ExplosionRadius": 6 "ExplosionRadius": 4
} }

View file

@ -2,9 +2,9 @@
"Spread": 5, "Spread": 5,
"RecoilX": 0.008, "RecoilX": 0.008,
"RecoilY": 0.018, "RecoilY": 0.018,
"Damage": 200, "Damage": 250,
"ExplosionDamage": 150, "ExplosionDamage": 130,
"ExplosionRadius": 10, "ExplosionRadius": 7,
"Velocity": 4, "Velocity": 4,
"Magazine": 1, "Magazine": 1,
"Weight": 7, "Weight": 7,

View file

@ -2,9 +2,9 @@
"Spread": 1.5, "Spread": 1.5,
"RecoilX": 0.004, "RecoilX": 0.004,
"RecoilY": 0.023, "RecoilY": 0.023,
"Damage": 50, "Damage": 30,
"ExplosionDamage": 50, "ExplosionDamage": 50,
"ExplosionRadius": 7, "ExplosionRadius": 5,
"Velocity": 3.75, "Velocity": 3.75,
"Magazine": 8, "Magazine": 8,
"Weight": 9, "Weight": 9,