合并重复代码
This commit is contained in:
parent
fd555460dd
commit
314ba3056a
12 changed files with 302 additions and 695 deletions
|
@ -8,9 +8,6 @@ import software.bernie.geckolib.core.animatable.model.CoreGeoBone;
|
||||||
import software.bernie.geckolib.core.animation.AnimationState;
|
import software.bernie.geckolib.core.animation.AnimationState;
|
||||||
import software.bernie.geckolib.model.GeoModel;
|
import software.bernie.geckolib.model.GeoModel;
|
||||||
|
|
||||||
import static com.atsuishio.superbwarfare.entity.vehicle.Bmp2Entity.TRACK_L;
|
|
||||||
import static com.atsuishio.superbwarfare.entity.vehicle.Bmp2Entity.TRACK_R;
|
|
||||||
|
|
||||||
public class Bmp2Model extends GeoModel<Bmp2Entity> {
|
public class Bmp2Model extends GeoModel<Bmp2Entity> {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -49,7 +46,7 @@ public class Bmp2Model extends GeoModel<Bmp2Entity> {
|
||||||
CoreGeoBone trackR = getAnimationProcessor().getBone("trackR" + i);
|
CoreGeoBone trackR = getAnimationProcessor().getBone("trackR" + i);
|
||||||
CoreGeoBone trackRRot = getAnimationProcessor().getBone("trackRRot" + i);
|
CoreGeoBone trackRRot = getAnimationProcessor().getBone("trackRRot" + i);
|
||||||
|
|
||||||
float t = animatable.getEntityData().get(TRACK_L) + 2 * i;
|
float t = animatable.getLeftTrack() + 2 * i;
|
||||||
|
|
||||||
if (t >= 100) {
|
if (t >= 100) {
|
||||||
t -= 100;
|
t -= 100;
|
||||||
|
@ -57,7 +54,7 @@ public class Bmp2Model extends GeoModel<Bmp2Entity> {
|
||||||
|
|
||||||
trackAnimation(trackL, trackLRot, t);
|
trackAnimation(trackL, trackLRot, t);
|
||||||
|
|
||||||
float t2 = animatable.getEntityData().get(TRACK_R) + 2 * i;
|
float t2 = animatable.getRightTrack() + 2 * i;
|
||||||
|
|
||||||
if (t2 >= 100) {
|
if (t2 >= 100) {
|
||||||
t2 -= 100;
|
t2 -= 100;
|
||||||
|
|
|
@ -8,9 +8,6 @@ import software.bernie.geckolib.core.animatable.model.CoreGeoBone;
|
||||||
import software.bernie.geckolib.core.animation.AnimationState;
|
import software.bernie.geckolib.core.animation.AnimationState;
|
||||||
import software.bernie.geckolib.model.GeoModel;
|
import software.bernie.geckolib.model.GeoModel;
|
||||||
|
|
||||||
import static com.atsuishio.superbwarfare.entity.vehicle.Yx100Entity.TRACK_L;
|
|
||||||
import static com.atsuishio.superbwarfare.entity.vehicle.Yx100Entity.TRACK_R;
|
|
||||||
|
|
||||||
public class Yx100Model extends GeoModel<Yx100Entity> {
|
public class Yx100Model extends GeoModel<Yx100Entity> {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -49,7 +46,7 @@ public class Yx100Model extends GeoModel<Yx100Entity> {
|
||||||
CoreGeoBone trackR = getAnimationProcessor().getBone("trackR" + i);
|
CoreGeoBone trackR = getAnimationProcessor().getBone("trackR" + i);
|
||||||
CoreGeoBone trackRRot = getAnimationProcessor().getBone("trackRRot" + i);
|
CoreGeoBone trackRRot = getAnimationProcessor().getBone("trackRRot" + i);
|
||||||
|
|
||||||
float t = animatable.getEntityData().get(TRACK_L) + 2 * i;
|
float t = animatable.getLeftTrack() + 2 * i;
|
||||||
|
|
||||||
if (t >= 80) {
|
if (t >= 80) {
|
||||||
t -= 80;
|
t -= 80;
|
||||||
|
@ -57,7 +54,7 @@ public class Yx100Model extends GeoModel<Yx100Entity> {
|
||||||
|
|
||||||
trackAnimation(trackL, trackLRot, t);
|
trackAnimation(trackL, trackLRot, t);
|
||||||
|
|
||||||
float t2 = animatable.getEntityData().get(TRACK_R) + 2 * i;
|
float t2 = animatable.getRightTrack() + 2 * i;
|
||||||
|
|
||||||
if (t2 >= 80) {
|
if (t2 >= 80) {
|
||||||
t2 -= 80;
|
t2 -= 80;
|
||||||
|
|
|
@ -66,25 +66,17 @@ public class Ah6Entity extends ContainerMobileVehicleEntity implements GeoEntity
|
||||||
private final AnimatableInstanceCache cache = GeckoLibUtil.createInstanceCache(this);
|
private final AnimatableInstanceCache cache = GeckoLibUtil.createInstanceCache(this);
|
||||||
public static final float MAX_HEALTH = VehicleConfig.AH_6_HP.get();
|
public static final float MAX_HEALTH = VehicleConfig.AH_6_HP.get();
|
||||||
public static final int MAX_ENERGY = VehicleConfig.AH_6_MAX_ENERGY.get();
|
public static final int MAX_ENERGY = VehicleConfig.AH_6_MAX_ENERGY.get();
|
||||||
|
|
||||||
public static final EntityDataAccessor<Float> DELTA_ROT = SynchedEntityData.defineId(Ah6Entity.class, EntityDataSerializers.FLOAT);
|
|
||||||
public static final EntityDataAccessor<Float> PROPELLER_ROT = SynchedEntityData.defineId(Ah6Entity.class, EntityDataSerializers.FLOAT);
|
public static final EntityDataAccessor<Float> PROPELLER_ROT = SynchedEntityData.defineId(Ah6Entity.class, EntityDataSerializers.FLOAT);
|
||||||
public static final EntityDataAccessor<Integer> AMMO = SynchedEntityData.defineId(Ah6Entity.class, EntityDataSerializers.INT);
|
|
||||||
public static final EntityDataAccessor<Integer> DECOY_COUNT = SynchedEntityData.defineId(Ah6Entity.class, EntityDataSerializers.INT);
|
public static final EntityDataAccessor<Integer> DECOY_COUNT = SynchedEntityData.defineId(Ah6Entity.class, EntityDataSerializers.INT);
|
||||||
public static final EntityDataAccessor<Integer> LOADED_ROCKET = SynchedEntityData.defineId(Ah6Entity.class, EntityDataSerializers.INT);
|
public static final EntityDataAccessor<Integer> LOADED_ROCKET = SynchedEntityData.defineId(Ah6Entity.class, EntityDataSerializers.INT);
|
||||||
|
|
||||||
public boolean engineStart;
|
public boolean engineStart;
|
||||||
public boolean engineStartOver;
|
public boolean engineStartOver;
|
||||||
public float propellerRot;
|
|
||||||
public float propellerRotO;
|
|
||||||
|
|
||||||
public double velocity;
|
public double velocity;
|
||||||
public int reloadCoolDown;
|
|
||||||
public int decoyReloadCoolDown;
|
public int decoyReloadCoolDown;
|
||||||
public int fireIndex;
|
public int fireIndex;
|
||||||
public boolean cannotFire;
|
|
||||||
public int heat;
|
|
||||||
|
|
||||||
|
public int heat;
|
||||||
public int holdTick;
|
public int holdTick;
|
||||||
public int holdPowerTick;
|
public int holdPowerTick;
|
||||||
|
|
||||||
|
@ -121,9 +113,7 @@ public class Ah6Entity extends ContainerMobileVehicleEntity implements GeoEntity
|
||||||
@Override
|
@Override
|
||||||
protected void defineSynchedData() {
|
protected void defineSynchedData() {
|
||||||
super.defineSynchedData();
|
super.defineSynchedData();
|
||||||
this.entityData.define(AMMO, 0);
|
|
||||||
this.entityData.define(LOADED_ROCKET, 0);
|
this.entityData.define(LOADED_ROCKET, 0);
|
||||||
this.entityData.define(DELTA_ROT, 0f);
|
|
||||||
this.entityData.define(PROPELLER_ROT, 0f);
|
this.entityData.define(PROPELLER_ROT, 0f);
|
||||||
this.entityData.define(DECOY_COUNT, 6);
|
this.entityData.define(DECOY_COUNT, 6);
|
||||||
}
|
}
|
||||||
|
@ -172,7 +162,6 @@ public class Ah6Entity extends ContainerMobileVehicleEntity implements GeoEntity
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void baseTick() {
|
public void baseTick() {
|
||||||
propellerRotO = this.getPropellerRot();
|
|
||||||
super.baseTick();
|
super.baseTick();
|
||||||
|
|
||||||
setZRot(getRoll() * (backInputDown ? 0.9f : 0.99f));
|
setZRot(getRoll() * (backInputDown ? 0.9f : 0.99f));
|
||||||
|
@ -403,14 +392,6 @@ public class Ah6Entity extends ContainerMobileVehicleEntity implements GeoEntity
|
||||||
return ModSounds.HELICOPTER_ENGINE.get();
|
return ModSounds.HELICOPTER_ENGINE.get();
|
||||||
}
|
}
|
||||||
|
|
||||||
public float getPropellerRot() {
|
|
||||||
return this.propellerRot;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setPropellerRot(float pPropellerRot) {
|
|
||||||
this.propellerRot = pPropellerRot;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected void clampRotation(Entity entity) {
|
protected void clampRotation(Entity entity) {
|
||||||
if (entity == getNthEntity(0) || entity == getNthEntity(1)) {
|
if (entity == getNthEntity(0) || entity == getNthEntity(1)) {
|
||||||
float f = Mth.wrapDegrees(entity.getXRot());
|
float f = Mth.wrapDegrees(entity.getXRot());
|
||||||
|
|
|
@ -59,31 +59,12 @@ import java.util.Comparator;
|
||||||
import static com.atsuishio.superbwarfare.tools.ParticleTool.sendParticle;
|
import static com.atsuishio.superbwarfare.tools.ParticleTool.sendParticle;
|
||||||
|
|
||||||
public class Bmp2Entity extends ContainerMobileVehicleEntity implements GeoEntity, LandArmorEntity, WeaponVehicleEntity {
|
public class Bmp2Entity extends ContainerMobileVehicleEntity implements GeoEntity, LandArmorEntity, WeaponVehicleEntity {
|
||||||
|
|
||||||
public static final EntityDataAccessor<Integer> FIRE_ANIM = SynchedEntityData.defineId(Bmp2Entity.class, EntityDataSerializers.INT);
|
|
||||||
public static final EntityDataAccessor<Float> DELTA_ROT = SynchedEntityData.defineId(Bmp2Entity.class, EntityDataSerializers.FLOAT);
|
|
||||||
public static final EntityDataAccessor<Integer> HEAT = SynchedEntityData.defineId(Bmp2Entity.class, EntityDataSerializers.INT);
|
|
||||||
public static final EntityDataAccessor<Integer> COAX_HEAT = SynchedEntityData.defineId(Bmp2Entity.class, EntityDataSerializers.INT);
|
|
||||||
public static final EntityDataAccessor<Integer> AMMO = SynchedEntityData.defineId(Bmp2Entity.class, EntityDataSerializers.INT);
|
|
||||||
public static final EntityDataAccessor<Integer> LOADED_MISSILE = SynchedEntityData.defineId(Bmp2Entity.class, EntityDataSerializers.INT);
|
public static final EntityDataAccessor<Integer> LOADED_MISSILE = SynchedEntityData.defineId(Bmp2Entity.class, EntityDataSerializers.INT);
|
||||||
public static final EntityDataAccessor<Integer> MISSILE_COUNT = SynchedEntityData.defineId(Bmp2Entity.class, EntityDataSerializers.INT);
|
public static final EntityDataAccessor<Integer> MISSILE_COUNT = SynchedEntityData.defineId(Bmp2Entity.class, EntityDataSerializers.INT);
|
||||||
public static final EntityDataAccessor<Float> TRACK_L = SynchedEntityData.defineId(Bmp2Entity.class, EntityDataSerializers.FLOAT);
|
|
||||||
public static final EntityDataAccessor<Float> TRACK_R = SynchedEntityData.defineId(Bmp2Entity.class, EntityDataSerializers.FLOAT);
|
|
||||||
|
|
||||||
public static final float MAX_HEALTH = VehicleConfig.BMP_2_HP.get();
|
public static final float MAX_HEALTH = VehicleConfig.BMP_2_HP.get();
|
||||||
public static final int MAX_ENERGY = VehicleConfig.BMP_2_MAX_ENERGY.get();
|
public static final int MAX_ENERGY = VehicleConfig.BMP_2_MAX_ENERGY.get();
|
||||||
|
|
||||||
private final AnimatableInstanceCache cache = GeckoLibUtil.createInstanceCache(this);
|
private final AnimatableInstanceCache cache = GeckoLibUtil.createInstanceCache(this);
|
||||||
public float turretYRot;
|
|
||||||
public float turretXRot;
|
|
||||||
public float turretYRotO;
|
|
||||||
public float turretXRotO;
|
|
||||||
public float leftWheelRot;
|
|
||||||
public float rightWheelRot;
|
|
||||||
public float leftWheelRotO;
|
|
||||||
public float rightWheelRotO;
|
|
||||||
public boolean cannotFire;
|
|
||||||
public boolean cannotFireCoax;
|
|
||||||
public int reloadCoolDown;
|
public int reloadCoolDown;
|
||||||
|
|
||||||
public Bmp2Entity(PlayMessages.SpawnEntity packet, Level world) {
|
public Bmp2Entity(PlayMessages.SpawnEntity packet, Level world) {
|
||||||
|
@ -123,15 +104,8 @@ public class Bmp2Entity extends ContainerMobileVehicleEntity implements GeoEntit
|
||||||
@Override
|
@Override
|
||||||
protected void defineSynchedData() {
|
protected void defineSynchedData() {
|
||||||
super.defineSynchedData();
|
super.defineSynchedData();
|
||||||
this.entityData.define(AMMO, 0);
|
|
||||||
this.entityData.define(FIRE_ANIM, 0);
|
|
||||||
this.entityData.define(DELTA_ROT, 0f);
|
|
||||||
this.entityData.define(HEAT, 0);
|
|
||||||
this.entityData.define(COAX_HEAT, 0);
|
|
||||||
this.entityData.define(LOADED_MISSILE, 0);
|
this.entityData.define(LOADED_MISSILE, 0);
|
||||||
this.entityData.define(MISSILE_COUNT, 0);
|
this.entityData.define(MISSILE_COUNT, 0);
|
||||||
this.entityData.define(TRACK_L, 0f);
|
|
||||||
this.entityData.define(TRACK_R, 0f);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -186,27 +160,22 @@ public class Bmp2Entity extends ContainerMobileVehicleEntity implements GeoEntit
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void baseTick() {
|
public void baseTick() {
|
||||||
turretYRotO = this.getTurretYRot();
|
|
||||||
turretXRotO = this.getTurretXRot();
|
|
||||||
leftWheelRotO = this.getLeftWheelRot();
|
|
||||||
rightWheelRotO = this.getRightWheelRot();
|
|
||||||
|
|
||||||
super.baseTick();
|
super.baseTick();
|
||||||
|
|
||||||
if (this.entityData.get(TRACK_R) < 0) {
|
if (getLeftTrack() < 0) {
|
||||||
this.entityData.set(TRACK_R, 100f);
|
setLeftTrack(100);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.entityData.get(TRACK_R) > 100) {
|
if (getLeftTrack() > 100) {
|
||||||
this.entityData.set(TRACK_R, 0f);
|
setLeftTrack(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.entityData.get(TRACK_L) < 0) {
|
if (getRightTrack() < 0) {
|
||||||
this.entityData.set(TRACK_L, 100f);
|
setRightTrack(100);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.entityData.get(TRACK_L) > 100) {
|
if (getRightTrack() > 100) {
|
||||||
this.entityData.set(TRACK_L, 0f);
|
setRightTrack(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.entityData.get(HEAT) > 0) {
|
if (this.entityData.get(HEAT) > 0) {
|
||||||
|
@ -273,22 +242,12 @@ public class Bmp2Entity extends ContainerMobileVehicleEntity implements GeoEntit
|
||||||
sendParticle(serverLevel, ParticleTypes.BUBBLE_COLUMN_UP, this.getX() + 0.5 * this.getDeltaMovement().x, this.getY() + getSubmergedHeight(this) - 0.2, this.getZ() + 0.5 * this.getDeltaMovement().z, (int) (2 + 10 * this.getDeltaMovement().length()), 0.65, 0, 0.65, 0, true);
|
sendParticle(serverLevel, ParticleTypes.BUBBLE_COLUMN_UP, this.getX() + 0.5 * this.getDeltaMovement().x, this.getY() + getSubmergedHeight(this) - 0.2, this.getZ() + 0.5 * this.getDeltaMovement().z, (int) (2 + 10 * this.getDeltaMovement().length()), 0.65, 0, 0.65, 0, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
float deltaT = Math.abs(getTurretYRot() - turretYRotO);
|
|
||||||
while (getTurretYRot() > 180F) {
|
|
||||||
setTurretYRot(getTurretYRot() - 360F);
|
|
||||||
turretYRotO = getTurretYRot() - deltaT;
|
|
||||||
}
|
|
||||||
while (getTurretYRot() <= -180F) {
|
|
||||||
setTurretYRot(getTurretYRot() + 360F);
|
|
||||||
turretYRotO = deltaT + getTurretYRot();
|
|
||||||
}
|
|
||||||
|
|
||||||
collideBlock();
|
collideBlock();
|
||||||
if (this.getDeltaMovement().length() > 0.15) {
|
if (this.getDeltaMovement().length() > 0.15) {
|
||||||
collideHardBlock();
|
collideHardBlock();
|
||||||
}
|
}
|
||||||
|
|
||||||
gunnerAngle();
|
turretAngle(15, 10);
|
||||||
lowHealthWarning();
|
lowHealthWarning();
|
||||||
this.refreshDimensions();
|
this.refreshDimensions();
|
||||||
}
|
}
|
||||||
|
@ -448,18 +407,6 @@ public class Bmp2Entity extends ContainerMobileVehicleEntity implements GeoEntit
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public final Vec3 getBarrelVector(float pPartialTicks) {
|
|
||||||
return this.calculateViewVector(this.getBarrelXRot(pPartialTicks), this.getBarrelYRot(pPartialTicks));
|
|
||||||
}
|
|
||||||
|
|
||||||
public float getBarrelXRot(float pPartialTicks) {
|
|
||||||
return Mth.lerp(pPartialTicks, turretXRotO - this.xRotO, getTurretXRot() - this.getXRot());
|
|
||||||
}
|
|
||||||
|
|
||||||
public float getBarrelYRot(float pPartialTick) {
|
|
||||||
return -Mth.lerp(pPartialTick, turretYRotO - this.yRotO, getTurretYRot() - this.getYRot());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void travel() {
|
public void travel() {
|
||||||
Entity passenger0 = this.getFirstPassenger();
|
Entity passenger0 = this.getFirstPassenger();
|
||||||
|
@ -512,8 +459,8 @@ public class Bmp2Entity extends ContainerMobileVehicleEntity implements GeoEntit
|
||||||
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.9 * Math.PI * s0) + Mth.clamp(0.4f * Math.PI * this.entityData.get(DELTA_ROT), -5f, 5f)));
|
setLeftTrack((float) ((getLeftTrack() - 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.9 * Math.PI * s0) - Mth.clamp(0.4f * Math.PI * this.entityData.get(DELTA_ROT), -5f, 5f)));
|
setRightTrack((float) ((getRightTrack() - 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()) {
|
||||||
this.setYRot((float) (this.getYRot() - (isInWater() && !onGround() ? 2.5 : 6) * entityData.get(DELTA_ROT)));
|
this.setYRot((float) (this.getYRot() - (isInWater() && !onGround() ? 2.5 : 6) * entityData.get(DELTA_ROT)));
|
||||||
|
@ -521,86 +468,6 @@ public class Bmp2Entity extends ContainerMobileVehicleEntity implements GeoEntit
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void gunnerAngle() {
|
|
||||||
Entity driver = this.getFirstPassenger();
|
|
||||||
if (driver == null) return;
|
|
||||||
|
|
||||||
float gunAngle = -Mth.wrapDegrees(driver.getYHeadRot() - this.getYRot());
|
|
||||||
|
|
||||||
float diffY;
|
|
||||||
float diffX;
|
|
||||||
|
|
||||||
diffY = Mth.wrapDegrees(gunAngle - getTurretYRot() + 0.05f);
|
|
||||||
diffX = Mth.wrapDegrees(driver.getXRot() - this.getTurretXRot());
|
|
||||||
|
|
||||||
turretTurnSound(diffX, diffY, 0.95f);
|
|
||||||
|
|
||||||
this.setTurretXRot(Mth.clamp(this.getTurretXRot() + Mth.clamp(0.95f * diffX, -5, 5), -74f, 7.5f));
|
|
||||||
this.setTurretYRot(this.getTurretYRot() + Mth.clamp(0.95f * diffY, -15, 15));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public float turretYRotO() {
|
|
||||||
return turretYRotO;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public float turretYRot() {
|
|
||||||
return turretYRot;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public float turretXRotO() {
|
|
||||||
return turretXRotO;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public float turretXRot() {
|
|
||||||
return turretXRot;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Vec3 getBarrelVec(float ticks) {
|
|
||||||
return getBarrelVector(ticks);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Vec3 getGunVec(float ticks) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public float getTurretYRot() {
|
|
||||||
return this.turretYRot;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setTurretYRot(float pTurretYRot) {
|
|
||||||
this.turretYRot = pTurretYRot;
|
|
||||||
}
|
|
||||||
|
|
||||||
public float getTurretXRot() {
|
|
||||||
return this.turretXRot;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setTurretXRot(float pTurretXRot) {
|
|
||||||
this.turretXRot = pTurretXRot;
|
|
||||||
}
|
|
||||||
|
|
||||||
public float getLeftWheelRot() {
|
|
||||||
return this.leftWheelRot;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setLeftWheelRot(float pLeftWheelRot) {
|
|
||||||
this.leftWheelRot = pLeftWheelRot;
|
|
||||||
}
|
|
||||||
|
|
||||||
public float getRightWheelRot() {
|
|
||||||
return this.rightWheelRot;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setRightWheelRot(float pRightWheelRot) {
|
|
||||||
this.rightWheelRot = pRightWheelRot;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public SoundEvent getEngineSound() {
|
public SoundEvent getEngineSound() {
|
||||||
return ModSounds.BMP_ENGINE.get();
|
return ModSounds.BMP_ENGINE.get();
|
||||||
|
|
|
@ -72,9 +72,7 @@ public class DroneEntity extends MobileVehicleEntity implements GeoEntity {
|
||||||
|
|
||||||
public static final EntityDataAccessor<Boolean> LINKED = SynchedEntityData.defineId(DroneEntity.class, EntityDataSerializers.BOOLEAN);
|
public static final EntityDataAccessor<Boolean> LINKED = SynchedEntityData.defineId(DroneEntity.class, EntityDataSerializers.BOOLEAN);
|
||||||
public static final EntityDataAccessor<String> CONTROLLER = SynchedEntityData.defineId(DroneEntity.class, EntityDataSerializers.STRING);
|
public static final EntityDataAccessor<String> CONTROLLER = SynchedEntityData.defineId(DroneEntity.class, EntityDataSerializers.STRING);
|
||||||
public static final EntityDataAccessor<Integer> AMMO = SynchedEntityData.defineId(DroneEntity.class, EntityDataSerializers.INT);
|
|
||||||
public static final EntityDataAccessor<Integer> KAMIKAZE_MODE = SynchedEntityData.defineId(DroneEntity.class, EntityDataSerializers.INT);
|
public static final EntityDataAccessor<Integer> KAMIKAZE_MODE = SynchedEntityData.defineId(DroneEntity.class, EntityDataSerializers.INT);
|
||||||
public static final EntityDataAccessor<Float> DELTA_ROT = SynchedEntityData.defineId(DroneEntity.class, EntityDataSerializers.FLOAT);
|
|
||||||
public static final EntityDataAccessor<Float> DELTA_X_ROT = SynchedEntityData.defineId(DroneEntity.class, EntityDataSerializers.FLOAT);
|
public static final EntityDataAccessor<Float> DELTA_X_ROT = SynchedEntityData.defineId(DroneEntity.class, EntityDataSerializers.FLOAT);
|
||||||
|
|
||||||
private final AnimatableInstanceCache cache = GeckoLibUtil.createInstanceCache(this);
|
private final AnimatableInstanceCache cache = GeckoLibUtil.createInstanceCache(this);
|
||||||
|
@ -136,11 +134,9 @@ public class DroneEntity extends MobileVehicleEntity implements GeoEntity {
|
||||||
@Override
|
@Override
|
||||||
protected void defineSynchedData() {
|
protected void defineSynchedData() {
|
||||||
super.defineSynchedData();
|
super.defineSynchedData();
|
||||||
this.entityData.define(DELTA_ROT, 0f);
|
|
||||||
this.entityData.define(DELTA_X_ROT, 0f);
|
this.entityData.define(DELTA_X_ROT, 0f);
|
||||||
this.entityData.define(CONTROLLER, "undefined");
|
this.entityData.define(CONTROLLER, "undefined");
|
||||||
this.entityData.define(LINKED, false);
|
this.entityData.define(LINKED, false);
|
||||||
this.entityData.define(AMMO, 0);
|
|
||||||
this.entityData.define(KAMIKAZE_MODE, 0);
|
this.entityData.define(KAMIKAZE_MODE, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -19,9 +19,6 @@ import net.minecraft.core.particles.ParticleTypes;
|
||||||
import net.minecraft.nbt.CompoundTag;
|
import net.minecraft.nbt.CompoundTag;
|
||||||
import net.minecraft.network.protocol.Packet;
|
import net.minecraft.network.protocol.Packet;
|
||||||
import net.minecraft.network.protocol.game.ClientGamePacketListener;
|
import net.minecraft.network.protocol.game.ClientGamePacketListener;
|
||||||
import net.minecraft.network.syncher.EntityDataAccessor;
|
|
||||||
import net.minecraft.network.syncher.EntityDataSerializers;
|
|
||||||
import net.minecraft.network.syncher.SynchedEntityData;
|
|
||||||
import net.minecraft.resources.ResourceLocation;
|
import net.minecraft.resources.ResourceLocation;
|
||||||
import net.minecraft.server.level.ServerLevel;
|
import net.minecraft.server.level.ServerLevel;
|
||||||
import net.minecraft.server.level.ServerPlayer;
|
import net.minecraft.server.level.ServerPlayer;
|
||||||
|
@ -61,29 +58,9 @@ import java.util.Comparator;
|
||||||
import static com.atsuishio.superbwarfare.tools.ParticleTool.sendParticle;
|
import static com.atsuishio.superbwarfare.tools.ParticleTool.sendParticle;
|
||||||
|
|
||||||
public class Lav150Entity extends ContainerMobileVehicleEntity implements GeoEntity, LandArmorEntity, WeaponVehicleEntity {
|
public class Lav150Entity extends ContainerMobileVehicleEntity implements GeoEntity, LandArmorEntity, WeaponVehicleEntity {
|
||||||
|
|
||||||
public static final EntityDataAccessor<Integer> FIRE_ANIM = SynchedEntityData.defineId(Lav150Entity.class, EntityDataSerializers.INT);
|
|
||||||
public static final EntityDataAccessor<Float> DELTA_ROT = SynchedEntityData.defineId(Lav150Entity.class, EntityDataSerializers.FLOAT);
|
|
||||||
public static final EntityDataAccessor<Integer> HEAT = SynchedEntityData.defineId(Lav150Entity.class, EntityDataSerializers.INT);
|
|
||||||
public static final EntityDataAccessor<Integer> COAX_HEAT = SynchedEntityData.defineId(Lav150Entity.class, EntityDataSerializers.INT);
|
|
||||||
public static final EntityDataAccessor<Integer> AMMO = SynchedEntityData.defineId(Lav150Entity.class, EntityDataSerializers.INT);
|
|
||||||
public static final float MAX_HEALTH = VehicleConfig.LAV_150_HP.get();
|
public static final float MAX_HEALTH = VehicleConfig.LAV_150_HP.get();
|
||||||
public static final int MAX_ENERGY = VehicleConfig.LAV_150_MAX_ENERGY.get();
|
public static final int MAX_ENERGY = VehicleConfig.LAV_150_MAX_ENERGY.get();
|
||||||
|
|
||||||
private final AnimatableInstanceCache cache = GeckoLibUtil.createInstanceCache(this);
|
private final AnimatableInstanceCache cache = GeckoLibUtil.createInstanceCache(this);
|
||||||
public float turretYRot;
|
|
||||||
public float turretXRot;
|
|
||||||
public float turretYRotO;
|
|
||||||
public float turretXRotO;
|
|
||||||
public float rudderRot;
|
|
||||||
public float rudderRotO;
|
|
||||||
public float leftWheelRot;
|
|
||||||
public float rightWheelRot;
|
|
||||||
public float leftWheelRotO;
|
|
||||||
public float rightWheelRotO;
|
|
||||||
public boolean cannotFire;
|
|
||||||
public boolean cannotFireCoax;
|
|
||||||
|
|
||||||
public Lav150Entity(PlayMessages.SpawnEntity packet, Level world) {
|
public Lav150Entity(PlayMessages.SpawnEntity packet, Level world) {
|
||||||
this(ModEntities.LAV_150.get(), world);
|
this(ModEntities.LAV_150.get(), world);
|
||||||
}
|
}
|
||||||
|
@ -116,11 +93,6 @@ public class Lav150Entity extends ContainerMobileVehicleEntity implements GeoEnt
|
||||||
@Override
|
@Override
|
||||||
protected void defineSynchedData() {
|
protected void defineSynchedData() {
|
||||||
super.defineSynchedData();
|
super.defineSynchedData();
|
||||||
this.entityData.define(AMMO, 0);
|
|
||||||
this.entityData.define(FIRE_ANIM, 0);
|
|
||||||
this.entityData.define(DELTA_ROT, 0f);
|
|
||||||
this.entityData.define(HEAT, 0);
|
|
||||||
this.entityData.define(COAX_HEAT, 0);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -246,22 +218,12 @@ public class Lav150Entity extends ContainerMobileVehicleEntity implements GeoEnt
|
||||||
sendParticle(serverLevel, ParticleTypes.BUBBLE_COLUMN_UP, this.getX() + 0.5 * this.getDeltaMovement().x, this.getY() + getSubmergedHeight(this) - 0.2, this.getZ() + 0.5 * this.getDeltaMovement().z, (int) (2 + 10 * this.getDeltaMovement().length()), 0.65, 0, 0.65, 0, true);
|
sendParticle(serverLevel, ParticleTypes.BUBBLE_COLUMN_UP, this.getX() + 0.5 * this.getDeltaMovement().x, this.getY() + getSubmergedHeight(this) - 0.2, this.getZ() + 0.5 * this.getDeltaMovement().z, (int) (2 + 10 * this.getDeltaMovement().length()), 0.65, 0, 0.65, 0, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
float deltaT = Math.abs(getTurretYRot() - turretYRotO);
|
|
||||||
while (getTurretYRot() > 180F) {
|
|
||||||
setTurretYRot(getTurretYRot() - 360F);
|
|
||||||
turretYRotO = getTurretYRot() - deltaT;
|
|
||||||
}
|
|
||||||
while (getTurretYRot() <= -180F) {
|
|
||||||
setTurretYRot(getTurretYRot() + 360F);
|
|
||||||
turretYRotO = deltaT + getTurretYRot();
|
|
||||||
}
|
|
||||||
|
|
||||||
collideBlock();
|
collideBlock();
|
||||||
if (this.getDeltaMovement().length() > 0.2) {
|
if (this.getDeltaMovement().length() > 0.2) {
|
||||||
collideHardBlock();
|
collideHardBlock();
|
||||||
}
|
}
|
||||||
|
|
||||||
gunnerAngle();
|
turretAngle(15, 12.5f);
|
||||||
lowHealthWarning();
|
lowHealthWarning();
|
||||||
|
|
||||||
this.refreshDimensions();
|
this.refreshDimensions();
|
||||||
|
@ -390,18 +352,6 @@ public class Lav150Entity extends ContainerMobileVehicleEntity implements GeoEnt
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public final Vec3 getBarrelVector(float pPartialTicks) {
|
|
||||||
return this.calculateViewVector(this.getBarrelXRot(pPartialTicks), this.getBarrelYRot(pPartialTicks));
|
|
||||||
}
|
|
||||||
|
|
||||||
public float getBarrelXRot(float pPartialTicks) {
|
|
||||||
return Mth.lerp(pPartialTicks, turretXRotO - this.xRotO, getTurretXRot() - this.getXRot());
|
|
||||||
}
|
|
||||||
|
|
||||||
public float getBarrelYRot(float pPartialTick) {
|
|
||||||
return -Mth.lerp(pPartialTick, turretYRotO - this.yRotO, getTurretYRot() - this.getYRot());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void travel() {
|
public void travel() {
|
||||||
Entity passenger0 = this.getFirstPassenger();
|
Entity passenger0 = this.getFirstPassenger();
|
||||||
|
@ -457,94 +407,6 @@ public class Lav150Entity extends ContainerMobileVehicleEntity implements GeoEnt
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void gunnerAngle() {
|
|
||||||
Entity driver = this.getFirstPassenger();
|
|
||||||
if (driver == null) return;
|
|
||||||
|
|
||||||
float gunAngle = -Mth.wrapDegrees(driver.getYHeadRot() - this.getYRot());
|
|
||||||
|
|
||||||
float diffY;
|
|
||||||
float diffX;
|
|
||||||
|
|
||||||
diffY = Mth.wrapDegrees(gunAngle - getTurretYRot() + 0.05f);
|
|
||||||
diffX = Mth.wrapDegrees(driver.getXRot() - this.getTurretXRot());
|
|
||||||
|
|
||||||
turretTurnSound(diffX, diffY, 0.95f);
|
|
||||||
|
|
||||||
this.setTurretXRot(Mth.clamp(this.getTurretXRot() + Mth.clamp(0.95f * diffX, -5, 5), -32.5f, 15));
|
|
||||||
this.setTurretYRot(this.getTurretYRot() + Mth.clamp(0.95f * diffY, -20, 20));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public float turretYRotO() {
|
|
||||||
return turretYRotO;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public float turretYRot() {
|
|
||||||
return turretYRot;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public float turretXRotO() {
|
|
||||||
return turretXRotO;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public float turretXRot() {
|
|
||||||
return turretXRot;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Vec3 getBarrelVec(float ticks) {
|
|
||||||
return getBarrelVector(ticks);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Vec3 getGunVec(float ticks) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public float getTurretYRot() {
|
|
||||||
return this.turretYRot;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setTurretYRot(float pTurretYRot) {
|
|
||||||
this.turretYRot = pTurretYRot;
|
|
||||||
}
|
|
||||||
|
|
||||||
public float getTurretXRot() {
|
|
||||||
return this.turretXRot;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setTurretXRot(float pTurretXRot) {
|
|
||||||
this.turretXRot = pTurretXRot;
|
|
||||||
}
|
|
||||||
|
|
||||||
public float getRudderRot() {
|
|
||||||
return this.rudderRot;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setRudderRot(float pRudderRot) {
|
|
||||||
this.rudderRot = pRudderRot;
|
|
||||||
}
|
|
||||||
|
|
||||||
public float getLeftWheelRot() {
|
|
||||||
return this.leftWheelRot;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setLeftWheelRot(float pLeftWheelRot) {
|
|
||||||
this.leftWheelRot = pLeftWheelRot;
|
|
||||||
}
|
|
||||||
|
|
||||||
public float getRightWheelRot() {
|
|
||||||
return this.rightWheelRot;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setRightWheelRot(float pRightWheelRot) {
|
|
||||||
this.rightWheelRot = pRightWheelRot;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public SoundEvent getEngineSound() {
|
public SoundEvent getEngineSound() {
|
||||||
return ModSounds.LAV_ENGINE.get();
|
return ModSounds.LAV_ENGINE.get();
|
||||||
|
|
|
@ -19,9 +19,6 @@ import net.minecraft.core.particles.ParticleTypes;
|
||||||
import net.minecraft.nbt.CompoundTag;
|
import net.minecraft.nbt.CompoundTag;
|
||||||
import net.minecraft.network.protocol.Packet;
|
import net.minecraft.network.protocol.Packet;
|
||||||
import net.minecraft.network.protocol.game.ClientGamePacketListener;
|
import net.minecraft.network.protocol.game.ClientGamePacketListener;
|
||||||
import net.minecraft.network.syncher.EntityDataAccessor;
|
|
||||||
import net.minecraft.network.syncher.EntityDataSerializers;
|
|
||||||
import net.minecraft.network.syncher.SynchedEntityData;
|
|
||||||
import net.minecraft.resources.ResourceLocation;
|
import net.minecraft.resources.ResourceLocation;
|
||||||
import net.minecraft.server.level.ServerLevel;
|
import net.minecraft.server.level.ServerLevel;
|
||||||
import net.minecraft.server.level.ServerPlayer;
|
import net.minecraft.server.level.ServerPlayer;
|
||||||
|
@ -56,26 +53,9 @@ import java.util.Comparator;
|
||||||
import static com.atsuishio.superbwarfare.tools.ParticleTool.sendParticle;
|
import static com.atsuishio.superbwarfare.tools.ParticleTool.sendParticle;
|
||||||
|
|
||||||
public class SpeedboatEntity extends ContainerMobileVehicleEntity implements GeoEntity, ArmedVehicleEntity, WeaponVehicleEntity, LandArmorEntity {
|
public class SpeedboatEntity extends ContainerMobileVehicleEntity implements GeoEntity, ArmedVehicleEntity, WeaponVehicleEntity, LandArmorEntity {
|
||||||
|
|
||||||
public static final EntityDataAccessor<Integer> FIRE_ANIM = SynchedEntityData.defineId(SpeedboatEntity.class, EntityDataSerializers.INT);
|
|
||||||
public static final EntityDataAccessor<Float> DELTA_ROT = SynchedEntityData.defineId(SpeedboatEntity.class, EntityDataSerializers.FLOAT);
|
|
||||||
public static final EntityDataAccessor<Integer> HEAT = SynchedEntityData.defineId(SpeedboatEntity.class, EntityDataSerializers.INT);
|
|
||||||
public static final EntityDataAccessor<Integer> AMMO = SynchedEntityData.defineId(SpeedboatEntity.class, EntityDataSerializers.INT);
|
|
||||||
|
|
||||||
public static final float MAX_HEALTH = VehicleConfig.SPEEDBOAT_HP.get();
|
public static final float MAX_HEALTH = VehicleConfig.SPEEDBOAT_HP.get();
|
||||||
public static final int MAX_ENERGY = VehicleConfig.SPEEDBOAT_MAX_ENERGY.get();
|
public static final int MAX_ENERGY = VehicleConfig.SPEEDBOAT_MAX_ENERGY.get();
|
||||||
|
|
||||||
private final AnimatableInstanceCache cache = GeckoLibUtil.createInstanceCache(this);
|
private final AnimatableInstanceCache cache = GeckoLibUtil.createInstanceCache(this);
|
||||||
public float turretYRot;
|
|
||||||
public float turretXRot;
|
|
||||||
public float turretYRotO;
|
|
||||||
public float turretXRotO;
|
|
||||||
public float rotorRot;
|
|
||||||
public float rudderRot;
|
|
||||||
public float rotorRotO;
|
|
||||||
public float rudderRotO;
|
|
||||||
|
|
||||||
public boolean cannotFire;
|
|
||||||
|
|
||||||
public SpeedboatEntity(PlayMessages.SpawnEntity packet, Level world) {
|
public SpeedboatEntity(PlayMessages.SpawnEntity packet, Level world) {
|
||||||
this(ModEntities.SPEEDBOAT.get(), world);
|
this(ModEntities.SPEEDBOAT.get(), world);
|
||||||
|
@ -101,10 +81,6 @@ public class SpeedboatEntity extends ContainerMobileVehicleEntity implements Geo
|
||||||
@Override
|
@Override
|
||||||
protected void defineSynchedData() {
|
protected void defineSynchedData() {
|
||||||
super.defineSynchedData();
|
super.defineSynchedData();
|
||||||
this.entityData.define(AMMO, 0);
|
|
||||||
this.entityData.define(FIRE_ANIM, 0);
|
|
||||||
this.entityData.define(DELTA_ROT, 0f);
|
|
||||||
this.entityData.define(HEAT, 0);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -152,11 +128,6 @@ public class SpeedboatEntity extends ContainerMobileVehicleEntity implements Geo
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void baseTick() {
|
public void baseTick() {
|
||||||
turretYRotO = this.getTurretYRot();
|
|
||||||
turretXRotO = this.getTurretXRot();
|
|
||||||
rotorRotO = this.getRotorRot();
|
|
||||||
rudderRotO = this.getRudderRot();
|
|
||||||
|
|
||||||
super.baseTick();
|
super.baseTick();
|
||||||
|
|
||||||
if (this.entityData.get(HEAT) > 0) {
|
if (this.entityData.get(HEAT) > 0) {
|
||||||
|
@ -204,7 +175,7 @@ public class SpeedboatEntity extends ContainerMobileVehicleEntity implements Geo
|
||||||
sendParticle(serverLevel, ParticleTypes.BUBBLE_COLUMN_UP, this.getX() - 4.5 * this.getLookAngle().x, this.getY() - 0.25, this.getZ() - 4.5 * this.getLookAngle().z, (int) (40 * Mth.abs(this.entityData.get(POWER))), 0.15, 0.15, 0.15, 0.02, true);
|
sendParticle(serverLevel, ParticleTypes.BUBBLE_COLUMN_UP, this.getX() - 4.5 * this.getLookAngle().x, this.getY() - 0.25, this.getZ() - 4.5 * this.getLookAngle().z, (int) (40 * Mth.abs(this.entityData.get(POWER))), 0.15, 0.15, 0.15, 0.02, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
gunnerAngle();
|
turretAngle(40, 40);
|
||||||
lowHealthWarning();
|
lowHealthWarning();
|
||||||
collideBlock();
|
collideBlock();
|
||||||
if (this.getDeltaMovement().length() > 0.15) {
|
if (this.getDeltaMovement().length() > 0.15) {
|
||||||
|
@ -357,24 +328,6 @@ public class SpeedboatEntity extends ContainerMobileVehicleEntity implements Geo
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void gunnerAngle() {
|
|
||||||
Entity driver = this.getFirstPassenger();
|
|
||||||
if (driver == null) return;
|
|
||||||
|
|
||||||
float gunAngle = -Mth.wrapDegrees(driver.getYHeadRot() - this.getYRot());
|
|
||||||
|
|
||||||
float diffY;
|
|
||||||
float diffX;
|
|
||||||
|
|
||||||
diffY = Mth.wrapDegrees(gunAngle - getTurretYRot() + 0.05f);
|
|
||||||
diffX = Mth.wrapDegrees(driver.getXRot() - this.getTurretXRot());
|
|
||||||
|
|
||||||
turretTurnSound(diffX, diffY, 0.95f);
|
|
||||||
|
|
||||||
this.setTurretXRot(this.getTurretXRot() + Mth.clamp(0.95f * diffX, -40, 40));
|
|
||||||
this.setTurretYRot(Mth.clamp(this.getTurretYRot() + Mth.clamp(0.95f * diffY, -40, 40), -140, 140));
|
|
||||||
}
|
|
||||||
|
|
||||||
public Matrix4f getBarrelTransform() {
|
public Matrix4f getBarrelTransform() {
|
||||||
Matrix4f transformT = getTurretTransform();
|
Matrix4f transformT = getTurretTransform();
|
||||||
float x = 0f;
|
float x = 0f;
|
||||||
|
@ -404,39 +357,6 @@ public class SpeedboatEntity extends ContainerMobileVehicleEntity implements Geo
|
||||||
transform.rotate(Axis.ZP.rotationDegrees(getRoll()));
|
transform.rotate(Axis.ZP.rotationDegrees(getRoll()));
|
||||||
return transform;
|
return transform;
|
||||||
}
|
}
|
||||||
|
|
||||||
public float getTurretYRot() {
|
|
||||||
return this.turretYRot;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setTurretYRot(float pTurretYRot) {
|
|
||||||
this.turretYRot = pTurretYRot;
|
|
||||||
}
|
|
||||||
|
|
||||||
public float getTurretXRot() {
|
|
||||||
return this.turretXRot;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setTurretXRot(float pTurretXRot) {
|
|
||||||
this.turretXRot = pTurretXRot;
|
|
||||||
}
|
|
||||||
|
|
||||||
public float getRotorRot() {
|
|
||||||
return this.rotorRot;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setRotorRot(float pRotorRot) {
|
|
||||||
this.rotorRot = pRotorRot;
|
|
||||||
}
|
|
||||||
|
|
||||||
public float getRudderRot() {
|
|
||||||
return this.rudderRot;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setRudderRot(float pRudderRot) {
|
|
||||||
this.rudderRot = pRudderRot;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public SoundEvent getEngineSound() {
|
public SoundEvent getEngineSound() {
|
||||||
return ModSounds.BOAT_ENGINE.get();
|
return ModSounds.BOAT_ENGINE.get();
|
||||||
|
@ -572,43 +492,6 @@ public class SpeedboatEntity extends ContainerMobileVehicleEntity implements Geo
|
||||||
return ModUtils.loc("textures/vehicle_icon/speedboat_icon.png");
|
return ModUtils.loc("textures/vehicle_icon/speedboat_icon.png");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public float turretYRotO() {
|
|
||||||
return turretYRotO;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public float turretYRot() {
|
|
||||||
return turretYRot;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public float turretXRotO() {
|
|
||||||
return turretXRotO;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public float turretXRot() {
|
|
||||||
return turretXRot;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Vec3 getBarrelVec(float ticks) {
|
|
||||||
return getBarrelVector(ticks);
|
|
||||||
}
|
|
||||||
|
|
||||||
public final Vec3 getBarrelVector(float pPartialTicks) {
|
|
||||||
return this.calculateViewVector(this.getBarrelXRot(pPartialTicks), this.getBarrelYRot(pPartialTicks));
|
|
||||||
}
|
|
||||||
|
|
||||||
public float getBarrelXRot(float pPartialTicks) {
|
|
||||||
return Mth.lerp(pPartialTicks, turretXRotO - this.xRotO, getTurretXRot() - this.getXRot());
|
|
||||||
}
|
|
||||||
|
|
||||||
public float getBarrelYRot(float pPartialTick) {
|
|
||||||
return -Mth.lerp(pPartialTick, turretYRotO - this.yRotO, getTurretYRot() - this.getYRot());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Vec3 getGunVec(float ticks) {
|
public Vec3 getGunVec(float ticks) {
|
||||||
return getBarrelVector(ticks);
|
return getBarrelVector(ticks);
|
||||||
|
|
|
@ -47,8 +47,6 @@ import software.bernie.geckolib.core.animation.AnimatableManager;
|
||||||
import software.bernie.geckolib.util.GeckoLibUtil;
|
import software.bernie.geckolib.util.GeckoLibUtil;
|
||||||
|
|
||||||
public class Tom6Entity extends MobileVehicleEntity implements GeoEntity {
|
public class Tom6Entity extends MobileVehicleEntity implements GeoEntity {
|
||||||
|
|
||||||
public static final EntityDataAccessor<Float> DELTA_ROT = SynchedEntityData.defineId(Tom6Entity.class, EntityDataSerializers.FLOAT);
|
|
||||||
public static final EntityDataAccessor<Boolean> MELON = SynchedEntityData.defineId(Tom6Entity.class, EntityDataSerializers.BOOLEAN);
|
public static final EntityDataAccessor<Boolean> MELON = SynchedEntityData.defineId(Tom6Entity.class, EntityDataSerializers.BOOLEAN);
|
||||||
private final AnimatableInstanceCache cache = GeckoLibUtil.createInstanceCache(this);
|
private final AnimatableInstanceCache cache = GeckoLibUtil.createInstanceCache(this);
|
||||||
public static final float MAX_HEALTH = VehicleConfig.TOM_6_HP.get();
|
public static final float MAX_HEALTH = VehicleConfig.TOM_6_HP.get();
|
||||||
|
@ -66,7 +64,6 @@ public class Tom6Entity extends MobileVehicleEntity implements GeoEntity {
|
||||||
@Override
|
@Override
|
||||||
protected void defineSynchedData() {
|
protected void defineSynchedData() {
|
||||||
super.defineSynchedData();
|
super.defineSynchedData();
|
||||||
this.entityData.define(DELTA_ROT, 0f);
|
|
||||||
this.entityData.define(MELON, false);
|
this.entityData.define(MELON, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -43,10 +43,6 @@ public class WheelChairEntity extends MobileVehicleEntity implements GeoEntity {
|
||||||
private final AnimatableInstanceCache cache = GeckoLibUtil.createInstanceCache(this);
|
private final AnimatableInstanceCache cache = GeckoLibUtil.createInstanceCache(this);
|
||||||
public static final float MAX_HEALTH = 30;
|
public static final float MAX_HEALTH = 30;
|
||||||
public static final int MAX_ENERGY = 24000;
|
public static final int MAX_ENERGY = 24000;
|
||||||
public float leftWheelRot;
|
|
||||||
public float rightWheelRot;
|
|
||||||
public float leftWheelRotO;
|
|
||||||
public float rightWheelRotO;
|
|
||||||
public int jumpCoolDown;
|
public int jumpCoolDown;
|
||||||
public int handBusyTime;
|
public int handBusyTime;
|
||||||
|
|
||||||
|
@ -108,9 +104,6 @@ public class WheelChairEntity extends MobileVehicleEntity implements GeoEntity {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void baseTick() {
|
public void baseTick() {
|
||||||
leftWheelRotO = this.getLeftWheelRot();
|
|
||||||
rightWheelRotO = this.getRightWheelRot();
|
|
||||||
|
|
||||||
if (jumpCoolDown > 0 && onGround()) {
|
if (jumpCoolDown > 0 && onGround()) {
|
||||||
jumpCoolDown--;
|
jumpCoolDown--;
|
||||||
}
|
}
|
||||||
|
@ -235,22 +228,6 @@ public class WheelChairEntity extends MobileVehicleEntity implements GeoEntity {
|
||||||
return ModSounds.WHEEL_CHAIR_ENGINE.get();
|
return ModSounds.WHEEL_CHAIR_ENGINE.get();
|
||||||
}
|
}
|
||||||
|
|
||||||
public float getLeftWheelRot() {
|
|
||||||
return this.leftWheelRot;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setLeftWheelRot(float pLeftWheelRot) {
|
|
||||||
this.leftWheelRot = pLeftWheelRot;
|
|
||||||
}
|
|
||||||
|
|
||||||
public float getRightWheelRot() {
|
|
||||||
return this.rightWheelRot;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setRightWheelRot(float pRightWheelRot) {
|
|
||||||
this.rightWheelRot = pRightWheelRot;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected void clampRotation(Entity entity) {
|
protected void clampRotation(Entity entity) {
|
||||||
entity.setYBodyRot(this.getYRot());
|
entity.setYBodyRot(this.getYRot());
|
||||||
float f2 = Mth.wrapDegrees(entity.getYRot() - this.getYRot());
|
float f2 = Mth.wrapDegrees(entity.getYRot() - this.getYRot());
|
||||||
|
|
|
@ -65,42 +65,16 @@ import java.util.Comparator;
|
||||||
import static com.atsuishio.superbwarfare.tools.ParticleTool.sendParticle;
|
import static com.atsuishio.superbwarfare.tools.ParticleTool.sendParticle;
|
||||||
|
|
||||||
public class Yx100Entity extends ContainerMobileVehicleEntity implements GeoEntity, LandArmorEntity, WeaponVehicleEntity {
|
public class Yx100Entity extends ContainerMobileVehicleEntity implements GeoEntity, LandArmorEntity, WeaponVehicleEntity {
|
||||||
|
|
||||||
public static final EntityDataAccessor<Integer> CANNON_FIRE_TIME = SynchedEntityData.defineId(Yx100Entity.class, EntityDataSerializers.INT);
|
public static final EntityDataAccessor<Integer> CANNON_FIRE_TIME = SynchedEntityData.defineId(Yx100Entity.class, EntityDataSerializers.INT);
|
||||||
public static final EntityDataAccessor<Float> DELTA_ROT = SynchedEntityData.defineId(Yx100Entity.class, EntityDataSerializers.FLOAT);
|
|
||||||
public static final EntityDataAccessor<Integer> AMMO = SynchedEntityData.defineId(Yx100Entity.class, EntityDataSerializers.INT);
|
|
||||||
public static final EntityDataAccessor<Integer> MG_AMMO = SynchedEntityData.defineId(Yx100Entity.class, EntityDataSerializers.INT);
|
public static final EntityDataAccessor<Integer> MG_AMMO = SynchedEntityData.defineId(Yx100Entity.class, EntityDataSerializers.INT);
|
||||||
public static final EntityDataAccessor<Integer> LOADED_AMMO = SynchedEntityData.defineId(Yx100Entity.class, EntityDataSerializers.INT);
|
public static final EntityDataAccessor<Integer> LOADED_AMMO = SynchedEntityData.defineId(Yx100Entity.class, EntityDataSerializers.INT);
|
||||||
public static final EntityDataAccessor<Float> TRACK_L = SynchedEntityData.defineId(Yx100Entity.class, EntityDataSerializers.FLOAT);
|
|
||||||
public static final EntityDataAccessor<Float> TRACK_R = SynchedEntityData.defineId(Yx100Entity.class, EntityDataSerializers.FLOAT);
|
|
||||||
public static final EntityDataAccessor<Float> YAW = SynchedEntityData.defineId(Yx100Entity.class, EntityDataSerializers.FLOAT);
|
|
||||||
public static final EntityDataAccessor<Integer> GUN_FIRE_TIME = SynchedEntityData.defineId(Yx100Entity.class, EntityDataSerializers.INT);
|
public static final EntityDataAccessor<Integer> GUN_FIRE_TIME = SynchedEntityData.defineId(Yx100Entity.class, EntityDataSerializers.INT);
|
||||||
public static final EntityDataAccessor<Integer> MACHINE_GUN_HEAT = SynchedEntityData.defineId(Yx100Entity.class, EntityDataSerializers.INT);
|
public static final EntityDataAccessor<Integer> MACHINE_GUN_HEAT = SynchedEntityData.defineId(Yx100Entity.class, EntityDataSerializers.INT);
|
||||||
|
|
||||||
public static final float MAX_HEALTH = VehicleConfig.YX_100_HP.get();
|
public static final float MAX_HEALTH = VehicleConfig.YX_100_HP.get();
|
||||||
public static final int MAX_ENERGY = VehicleConfig.YX_100_MAX_ENERGY.get();
|
public static final int MAX_ENERGY = VehicleConfig.YX_100_MAX_ENERGY.get();
|
||||||
public static final int SHOOT_COST = VehicleConfig.YX_100_SHOOT_COST.get();
|
public static final int SHOOT_COST = VehicleConfig.YX_100_SHOOT_COST.get();
|
||||||
|
|
||||||
private final AnimatableInstanceCache cache = GeckoLibUtil.createInstanceCache(this);
|
private final AnimatableInstanceCache cache = GeckoLibUtil.createInstanceCache(this);
|
||||||
public float turretYRot;
|
|
||||||
public float turretXRot;
|
|
||||||
public float turretYRotO;
|
|
||||||
public float turretXRotO;
|
|
||||||
public float turretRot;
|
|
||||||
public float gunYRot;
|
|
||||||
public float gunXRot;
|
|
||||||
public float gunYRotO;
|
|
||||||
public float gunXRotO;
|
|
||||||
public float leftWheelRot;
|
|
||||||
public float rightWheelRot;
|
|
||||||
public float leftWheelRotO;
|
|
||||||
public float rightWheelRotO;
|
|
||||||
|
|
||||||
public double recoilShake;
|
|
||||||
public double recoilShakeO;
|
|
||||||
public int reloadCoolDown;
|
|
||||||
|
|
||||||
public boolean cannotFire;
|
|
||||||
|
|
||||||
public Yx100Entity(PlayMessages.SpawnEntity packet, Level world) {
|
public Yx100Entity(PlayMessages.SpawnEntity packet, Level world) {
|
||||||
this(ModEntities.YX_100.get(), world);
|
this(ModEntities.YX_100.get(), world);
|
||||||
|
@ -156,14 +130,9 @@ public class Yx100Entity extends ContainerMobileVehicleEntity implements GeoEnti
|
||||||
@Override
|
@Override
|
||||||
protected void defineSynchedData() {
|
protected void defineSynchedData() {
|
||||||
super.defineSynchedData();
|
super.defineSynchedData();
|
||||||
this.entityData.define(AMMO, 0);
|
|
||||||
this.entityData.define(MG_AMMO, 0);
|
this.entityData.define(MG_AMMO, 0);
|
||||||
this.entityData.define(LOADED_AMMO, 0);
|
this.entityData.define(LOADED_AMMO, 0);
|
||||||
this.entityData.define(CANNON_FIRE_TIME, 0);
|
this.entityData.define(CANNON_FIRE_TIME, 0);
|
||||||
this.entityData.define(DELTA_ROT, 0f);
|
|
||||||
this.entityData.define(TRACK_L, 0f);
|
|
||||||
this.entityData.define(TRACK_R, 0f);
|
|
||||||
this.entityData.define(YAW, 0f);
|
|
||||||
this.entityData.define(GUN_FIRE_TIME, 0);
|
this.entityData.define(GUN_FIRE_TIME, 0);
|
||||||
this.entityData.define(MACHINE_GUN_HEAT, 0);
|
this.entityData.define(MACHINE_GUN_HEAT, 0);
|
||||||
}
|
}
|
||||||
|
@ -217,32 +186,22 @@ public class Yx100Entity extends ContainerMobileVehicleEntity implements GeoEnti
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void baseTick() {
|
public void baseTick() {
|
||||||
turretYRotO = this.getTurretYRot();
|
|
||||||
turretXRotO = this.getTurretXRot();
|
|
||||||
gunYRotO = this.getGunYRot();
|
|
||||||
gunXRotO = this.getGunXRot();
|
|
||||||
leftWheelRotO = this.getLeftWheelRot();
|
|
||||||
rightWheelRotO = this.getRightWheelRot();
|
|
||||||
recoilShakeO = this.getRecoilShake();
|
|
||||||
|
|
||||||
this.setRecoilShake(Math.pow(entityData.get(CANNON_FIRE_TIME), 4) * 0.0000007 * Math.sin(0.2 * Math.PI * (entityData.get(CANNON_FIRE_TIME) - 2.5)));
|
|
||||||
|
|
||||||
super.baseTick();
|
super.baseTick();
|
||||||
|
|
||||||
if (this.entityData.get(TRACK_R) < 0) {
|
if (getLeftTrack() < 0) {
|
||||||
this.entityData.set(TRACK_R, 80f);
|
setLeftTrack(80);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.entityData.get(TRACK_R) > 80) {
|
if (getLeftTrack() > 80) {
|
||||||
this.entityData.set(TRACK_R, 0f);
|
setLeftTrack(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.entityData.get(TRACK_L) < 0) {
|
if (getRightTrack() < 0) {
|
||||||
this.entityData.set(TRACK_L, 80f);
|
setRightTrack(80);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.entityData.get(TRACK_L) > 80) {
|
if (getRightTrack() > 80) {
|
||||||
this.entityData.set(TRACK_L, 0f);
|
setRightTrack(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.entityData.get(CANNON_FIRE_TIME) > 0) {
|
if (this.entityData.get(CANNON_FIRE_TIME) > 0) {
|
||||||
|
@ -299,23 +258,15 @@ public class Yx100Entity extends ContainerMobileVehicleEntity implements GeoEnti
|
||||||
sendParticle(serverLevel, ParticleTypes.BUBBLE_COLUMN_UP, this.getX() + 0.5 * this.getDeltaMovement().x, this.getY() + getSubmergedHeight(this) - 0.2, this.getZ() + 0.5 * this.getDeltaMovement().z, (int) (2 + 10 * this.getDeltaMovement().length()), 0.65, 0, 0.65, 0, true);
|
sendParticle(serverLevel, ParticleTypes.BUBBLE_COLUMN_UP, this.getX() + 0.5 * this.getDeltaMovement().x, this.getY() + getSubmergedHeight(this) - 0.2, this.getZ() + 0.5 * this.getDeltaMovement().z, (int) (2 + 10 * this.getDeltaMovement().length()), 0.65, 0, 0.65, 0, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
float deltaT = Math.abs(getTurretYRot() - turretYRotO);
|
|
||||||
while (getTurretYRot() > 180F) {
|
|
||||||
setTurretYRot(getTurretYRot() - 360F);
|
|
||||||
turretYRotO = getTurretYRot() - deltaT;
|
|
||||||
}
|
|
||||||
while (getTurretYRot() <= -180F) {
|
|
||||||
setTurretYRot(getTurretYRot() + 360F);
|
|
||||||
turretYRotO = deltaT + getTurretYRot();
|
|
||||||
}
|
|
||||||
|
|
||||||
collideBlock();
|
collideBlock();
|
||||||
if (this.getDeltaMovement().length() > 0.15) {
|
if (this.getDeltaMovement().length() > 0.15) {
|
||||||
collideHardBlock();
|
collideHardBlock();
|
||||||
}
|
}
|
||||||
|
|
||||||
turretAngle();
|
this.setRecoilShake(Math.pow(entityData.get(CANNON_FIRE_TIME), 4) * 0.0000007 * Math.sin(0.2 * Math.PI * (entityData.get(CANNON_FIRE_TIME) - 2.5)));
|
||||||
gunnerAngle();
|
|
||||||
|
turretAngle(7, 7);
|
||||||
|
gunnerAngle(15, 15);
|
||||||
lowHealthWarning();
|
lowHealthWarning();
|
||||||
this.refreshDimensions();
|
this.refreshDimensions();
|
||||||
}
|
}
|
||||||
|
@ -501,30 +452,6 @@ public class Yx100Entity extends ContainerMobileVehicleEntity implements GeoEnti
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public Vec3 getBarrelVector(float pPartialTicks) {
|
|
||||||
return this.calculateViewVector(this.getBarrelXRot(pPartialTicks), this.getBarrelYRot(pPartialTicks));
|
|
||||||
}
|
|
||||||
|
|
||||||
public float getBarrelXRot(float pPartialTicks) {
|
|
||||||
return Mth.lerp(pPartialTicks, turretXRotO - this.xRotO, getTurretXRot() - this.getXRot());
|
|
||||||
}
|
|
||||||
|
|
||||||
public float getBarrelYRot(float pPartialTick) {
|
|
||||||
return -Mth.lerp(pPartialTick, turretYRotO - this.yRotO, getTurretYRot() - this.getYRot());
|
|
||||||
}
|
|
||||||
|
|
||||||
public Vec3 getGunVector(float pPartialTicks) {
|
|
||||||
return this.calculateViewVector(this.getGunXRot(pPartialTicks), this.getGunYRot(pPartialTicks));
|
|
||||||
}
|
|
||||||
|
|
||||||
public float getGunXRot(float pPartialTicks) {
|
|
||||||
return Mth.lerp(pPartialTicks, gunXRotO - this.xRotO, getGunXRot() - this.getXRot());
|
|
||||||
}
|
|
||||||
|
|
||||||
public float getGunYRot(float pPartialTick) {
|
|
||||||
return -Mth.lerp(pPartialTick, gunYRotO - this.yRotO, getGunYRot() - this.getYRot());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void travel() {
|
public void travel() {
|
||||||
Entity passenger0 = this.getFirstPassenger();
|
Entity passenger0 = this.getFirstPassenger();
|
||||||
|
@ -577,8 +504,8 @@ public class Yx100Entity extends ContainerMobileVehicleEntity implements GeoEnti
|
||||||
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.9 * Math.PI * s0) + Mth.clamp(0.4f * Math.PI * this.entityData.get(DELTA_ROT), -5f, 5f)));
|
setLeftTrack((float) ((getLeftTrack() - 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.9 * Math.PI * s0) - Mth.clamp(0.4f * Math.PI * this.entityData.get(DELTA_ROT), -5f, 5f)));
|
setRightTrack((float) ((getRightTrack() - 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()) {
|
||||||
this.setYRot((float) (this.getYRot() - (isInWater() && !onGround() ? 2.5 : 6) * entityData.get(DELTA_ROT)));
|
this.setYRot((float) (this.getYRot() - (isInWater() && !onGround() ? 2.5 : 6) * entityData.get(DELTA_ROT)));
|
||||||
|
@ -586,151 +513,6 @@ public class Yx100Entity extends ContainerMobileVehicleEntity implements GeoEnti
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void turretAngle() {
|
|
||||||
Entity driver = this.getFirstPassenger();
|
|
||||||
if (driver != null) {
|
|
||||||
float turretAngle = -Mth.wrapDegrees(driver.getYHeadRot() - this.getYRot());
|
|
||||||
|
|
||||||
float diffY;
|
|
||||||
float diffX;
|
|
||||||
|
|
||||||
diffY = Mth.wrapDegrees(turretAngle - getTurretYRot() + 0.05f);
|
|
||||||
diffX = Mth.wrapDegrees(driver.getXRot() - this.getTurretXRot());
|
|
||||||
|
|
||||||
turretTurnSound(diffX, diffY, 0.95f);
|
|
||||||
|
|
||||||
float min = -5 + (float) (isInWater() && !onGround() ? 2.5 : 6) * entityData.get(DELTA_ROT);
|
|
||||||
float max = 5 + (float) (isInWater() && !onGround() ? 2.5 : 6) * entityData.get(DELTA_ROT);
|
|
||||||
|
|
||||||
this.setTurretXRot(Mth.clamp(this.getTurretXRot() + Mth.clamp(0.95f * diffX, -5, 5), -30f, 4f));
|
|
||||||
this.setTurretYRot(this.getTurretYRot() + Mth.clamp(0.9f * diffY, min, max));
|
|
||||||
turretRot = Mth.clamp(0.9f * diffY, min, max);
|
|
||||||
} else {
|
|
||||||
turretRot = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void gunnerAngle() {
|
|
||||||
Entity gunner = this.getNthEntity(1);
|
|
||||||
|
|
||||||
float diffY = 0;
|
|
||||||
float diffX = 0;
|
|
||||||
float speed = 1;
|
|
||||||
|
|
||||||
if (gunner instanceof Player) {
|
|
||||||
float gunAngle = -Mth.wrapDegrees(gunner.getYHeadRot() - this.getYRot());
|
|
||||||
diffY = Mth.wrapDegrees(gunAngle - getGunYRot());
|
|
||||||
diffX = Mth.wrapDegrees(gunner.getXRot() - this.getGunXRot());
|
|
||||||
turretTurnSound(diffX, diffY, 0.95f);
|
|
||||||
speed = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
this.setGunXRot(Mth.clamp(this.getGunXRot() + Mth.clamp(0.95f * diffX, -10, 10), -60f, 12.5f));
|
|
||||||
this.setGunYRot(this.getGunYRot() + Mth.clamp(0.9f * diffY, -15, 15) + speed * turretRot);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public float turretYRotO() {
|
|
||||||
return turretYRotO;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public float turretYRot() {
|
|
||||||
return turretYRot;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public float turretXRotO() {
|
|
||||||
return turretXRotO;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public float turretXRot() {
|
|
||||||
return turretXRot;
|
|
||||||
}
|
|
||||||
|
|
||||||
public float gunYRotO() {
|
|
||||||
return gunYRotO;
|
|
||||||
}
|
|
||||||
|
|
||||||
public float gunYRot() {
|
|
||||||
return gunYRot;
|
|
||||||
}
|
|
||||||
|
|
||||||
public float gunXRotO() {
|
|
||||||
return gunXRotO;
|
|
||||||
}
|
|
||||||
|
|
||||||
public float gunXRot() {
|
|
||||||
return gunXRot;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Vec3 getBarrelVec(float ticks) {
|
|
||||||
return getBarrelVector(ticks);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Vec3 getGunVec(float ticks) {
|
|
||||||
return getGunVector(ticks);
|
|
||||||
}
|
|
||||||
|
|
||||||
public float getTurretYRot() {
|
|
||||||
return this.turretYRot;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setTurretYRot(float pTurretYRot) {
|
|
||||||
this.turretYRot = pTurretYRot;
|
|
||||||
}
|
|
||||||
|
|
||||||
public float getTurretXRot() {
|
|
||||||
return this.turretXRot;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setTurretXRot(float pTurretXRot) {
|
|
||||||
this.turretXRot = pTurretXRot;
|
|
||||||
}
|
|
||||||
|
|
||||||
public float getGunYRot() {
|
|
||||||
return this.gunYRot;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setGunYRot(float pGunYRot) {
|
|
||||||
this.gunYRot = pGunYRot;
|
|
||||||
}
|
|
||||||
|
|
||||||
public float getGunXRot() {
|
|
||||||
return this.gunXRot;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setGunXRot(float pGunXRot) {
|
|
||||||
this.gunXRot = pGunXRot;
|
|
||||||
}
|
|
||||||
|
|
||||||
public float getLeftWheelRot() {
|
|
||||||
return this.leftWheelRot;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setLeftWheelRot(float pLeftWheelRot) {
|
|
||||||
this.leftWheelRot = pLeftWheelRot;
|
|
||||||
}
|
|
||||||
|
|
||||||
public float getRightWheelRot() {
|
|
||||||
return this.rightWheelRot;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setRightWheelRot(float pRightWheelRot) {
|
|
||||||
this.rightWheelRot = pRightWheelRot;
|
|
||||||
}
|
|
||||||
|
|
||||||
public double getRecoilShake() {
|
|
||||||
return this.recoilShake;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setRecoilShake(double pRecoilShake) {
|
|
||||||
this.recoilShake = pRecoilShake;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public SoundEvent getEngineSound() {
|
public SoundEvent getEngineSound() {
|
||||||
return ModSounds.BMP_ENGINE.get();
|
return ModSounds.BMP_ENGINE.get();
|
||||||
|
|
|
@ -40,8 +40,14 @@ import org.joml.Math;
|
||||||
import org.joml.Vector3f;
|
import org.joml.Vector3f;
|
||||||
|
|
||||||
public abstract class MobileVehicleEntity extends EnergyVehicleEntity {
|
public abstract class MobileVehicleEntity extends EnergyVehicleEntity {
|
||||||
|
|
||||||
public static final EntityDataAccessor<Float> POWER = SynchedEntityData.defineId(MobileVehicleEntity.class, EntityDataSerializers.FLOAT);
|
public static final EntityDataAccessor<Float> POWER = SynchedEntityData.defineId(MobileVehicleEntity.class, EntityDataSerializers.FLOAT);
|
||||||
|
public static final EntityDataAccessor<Float> YAW = SynchedEntityData.defineId(MobileVehicleEntity.class, EntityDataSerializers.FLOAT);
|
||||||
|
|
||||||
|
public static final EntityDataAccessor<Integer> FIRE_ANIM = SynchedEntityData.defineId(MobileVehicleEntity.class, EntityDataSerializers.INT);
|
||||||
|
public static final EntityDataAccessor<Integer> HEAT = SynchedEntityData.defineId(MobileVehicleEntity.class, EntityDataSerializers.INT);
|
||||||
|
public static final EntityDataAccessor<Integer> COAX_HEAT = SynchedEntityData.defineId(MobileVehicleEntity.class, EntityDataSerializers.INT);
|
||||||
|
|
||||||
|
public static final EntityDataAccessor<Integer> AMMO = SynchedEntityData.defineId(MobileVehicleEntity.class, EntityDataSerializers.INT);
|
||||||
|
|
||||||
public boolean leftInputDown;
|
public boolean leftInputDown;
|
||||||
public boolean rightInputDown;
|
public boolean rightInputDown;
|
||||||
|
@ -54,6 +60,32 @@ public abstract class MobileVehicleEntity extends EnergyVehicleEntity {
|
||||||
public double lastTickVerticalSpeed;
|
public double lastTickVerticalSpeed;
|
||||||
public int collisionCoolDown;
|
public int collisionCoolDown;
|
||||||
|
|
||||||
|
public float rudderRot;
|
||||||
|
public float rudderRotO;
|
||||||
|
|
||||||
|
public float leftWheelRot;
|
||||||
|
public float rightWheelRot;
|
||||||
|
public float leftWheelRotO;
|
||||||
|
public float rightWheelRotO;
|
||||||
|
|
||||||
|
public float leftTrackO;
|
||||||
|
public float rightTrackO;
|
||||||
|
public float leftTrack;
|
||||||
|
public float rightTrack;
|
||||||
|
|
||||||
|
public float rotorRot;
|
||||||
|
public float rotorRotO;
|
||||||
|
|
||||||
|
public float propellerRot;
|
||||||
|
public float propellerRotO;
|
||||||
|
|
||||||
|
public double recoilShake;
|
||||||
|
public double recoilShakeO;
|
||||||
|
|
||||||
|
public boolean cannotFire;
|
||||||
|
public boolean cannotFireCoax;
|
||||||
|
public int reloadCoolDown;
|
||||||
|
|
||||||
public MobileVehicleEntity(EntityType<?> pEntityType, Level pLevel) {
|
public MobileVehicleEntity(EntityType<?> pEntityType, Level pLevel) {
|
||||||
super(pEntityType, pLevel);
|
super(pEntityType, pLevel);
|
||||||
}
|
}
|
||||||
|
@ -72,12 +104,43 @@ public abstract class MobileVehicleEntity extends EnergyVehicleEntity {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void baseTick() {
|
public void baseTick() {
|
||||||
|
turretYRotO = this.getTurretYRot();
|
||||||
|
turretXRotO = this.getTurretXRot();
|
||||||
|
|
||||||
|
gunYRotO = this.getGunYRot();
|
||||||
|
gunXRotO = this.getGunXRot();
|
||||||
|
|
||||||
|
leftWheelRotO = this.getLeftWheelRot();
|
||||||
|
rightWheelRotO = this.getRightWheelRot();
|
||||||
|
|
||||||
|
leftTrackO = this.getLeftTrack();
|
||||||
|
rightTrackO = this.getRightTrack();
|
||||||
|
|
||||||
|
rotorRotO = this.getRotorRot();
|
||||||
|
|
||||||
|
rudderRotO = this.getRudderRot();
|
||||||
|
|
||||||
|
propellerRotO = this.getPropellerRot();
|
||||||
|
|
||||||
|
recoilShakeO = this.getRecoilShake();
|
||||||
|
|
||||||
lastTickSpeed = new Vec3(this.getDeltaMovement().x, this.getDeltaMovement().y + 0.06, this.getDeltaMovement().z).length();
|
lastTickSpeed = new Vec3(this.getDeltaMovement().x, this.getDeltaMovement().y + 0.06, this.getDeltaMovement().z).length();
|
||||||
lastTickVerticalSpeed = this.getDeltaMovement().y + 0.06;
|
lastTickVerticalSpeed = this.getDeltaMovement().y + 0.06;
|
||||||
if (collisionCoolDown > 0) {
|
if (collisionCoolDown > 0) {
|
||||||
collisionCoolDown--;
|
collisionCoolDown--;
|
||||||
}
|
}
|
||||||
super.baseTick();
|
super.baseTick();
|
||||||
|
|
||||||
|
float deltaT = java.lang.Math.abs(getTurretYRot() - turretYRotO);
|
||||||
|
while (getTurretYRot() > 180F) {
|
||||||
|
setTurretYRot(getTurretYRot() - 360F);
|
||||||
|
turretYRotO = getTurretYRot() - deltaT;
|
||||||
|
}
|
||||||
|
while (getTurretYRot() <= -180F) {
|
||||||
|
setTurretYRot(getTurretYRot() + 360F);
|
||||||
|
turretYRotO = deltaT + getTurretYRot();
|
||||||
|
}
|
||||||
|
|
||||||
preventStacking();
|
preventStacking();
|
||||||
crushEntities(this.getDeltaMovement());
|
crushEntities(this.getDeltaMovement());
|
||||||
if (!(this instanceof DroneEntity)) {
|
if (!(this instanceof DroneEntity)) {
|
||||||
|
@ -285,10 +348,80 @@ public abstract class MobileVehicleEntity extends EnergyVehicleEntity {
|
||||||
return SoundEvents.EMPTY;
|
return SoundEvents.EMPTY;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public float getRudderRot() {
|
||||||
|
return this.rudderRot;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setRudderRot(float pRudderRot) {
|
||||||
|
this.rudderRot = pRudderRot;
|
||||||
|
}
|
||||||
|
|
||||||
|
public float getLeftWheelRot() {
|
||||||
|
return this.leftWheelRot;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setLeftWheelRot(float pLeftWheelRot) {
|
||||||
|
this.leftWheelRot = pLeftWheelRot;
|
||||||
|
}
|
||||||
|
|
||||||
|
public float getRightWheelRot() {
|
||||||
|
return this.rightWheelRot;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setRightWheelRot(float pRightWheelRot) {
|
||||||
|
this.rightWheelRot = pRightWheelRot;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public float getLeftTrack() {
|
||||||
|
return this.leftTrack;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setLeftTrack(float pLeftTrack) {
|
||||||
|
this.leftTrack = pLeftTrack;
|
||||||
|
}
|
||||||
|
|
||||||
|
public float getRightTrack() {
|
||||||
|
return this.rightTrack;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setRightTrack(float pRightTrack) {
|
||||||
|
this.rightTrack = pRightTrack;
|
||||||
|
}
|
||||||
|
|
||||||
|
public float getRotorRot() {
|
||||||
|
return this.rotorRot;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setRotorRot(float pRotorRot) {
|
||||||
|
this.rotorRot = pRotorRot;
|
||||||
|
}
|
||||||
|
|
||||||
|
public float getPropellerRot() {
|
||||||
|
return this.propellerRot;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPropellerRot(float pPropellerRot) {
|
||||||
|
this.propellerRot = pPropellerRot;
|
||||||
|
}
|
||||||
|
|
||||||
|
public double getRecoilShake() {
|
||||||
|
return this.recoilShake;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setRecoilShake(double pRecoilShake) {
|
||||||
|
this.recoilShake = pRecoilShake;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void defineSynchedData() {
|
protected void defineSynchedData() {
|
||||||
super.defineSynchedData();
|
super.defineSynchedData();
|
||||||
this.entityData.define(POWER, 0f);
|
this.entityData.define(POWER, 0f);
|
||||||
|
this.entityData.define(YAW, 0f);
|
||||||
|
this.entityData.define(AMMO, 0);
|
||||||
|
this.entityData.define(FIRE_ANIM, 0);
|
||||||
|
this.entityData.define(HEAT, 0);
|
||||||
|
this.entityData.define(COAX_HEAT, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -61,11 +61,11 @@ import java.util.function.Function;
|
||||||
import static com.atsuishio.superbwarfare.tools.ParticleTool.sendParticle;
|
import static com.atsuishio.superbwarfare.tools.ParticleTool.sendParticle;
|
||||||
|
|
||||||
public abstract class VehicleEntity extends Entity {
|
public abstract class VehicleEntity extends Entity {
|
||||||
|
|
||||||
public static final EntityDataAccessor<Float> HEALTH = SynchedEntityData.defineId(VehicleEntity.class, EntityDataSerializers.FLOAT);
|
public static final EntityDataAccessor<Float> HEALTH = SynchedEntityData.defineId(VehicleEntity.class, EntityDataSerializers.FLOAT);
|
||||||
protected static final EntityDataAccessor<String> LAST_ATTACKER_UUID = SynchedEntityData.defineId(VehicleEntity.class, EntityDataSerializers.STRING);
|
protected static final EntityDataAccessor<String> LAST_ATTACKER_UUID = SynchedEntityData.defineId(VehicleEntity.class, EntityDataSerializers.STRING);
|
||||||
protected static final EntityDataAccessor<String> LAST_DRIVER_UUID = SynchedEntityData.defineId(VehicleEntity.class, EntityDataSerializers.STRING);
|
protected static final EntityDataAccessor<String> LAST_DRIVER_UUID = SynchedEntityData.defineId(VehicleEntity.class, EntityDataSerializers.STRING);
|
||||||
|
|
||||||
|
public static final EntityDataAccessor<Float> DELTA_ROT = SynchedEntityData.defineId(VehicleEntity.class, EntityDataSerializers.FLOAT);
|
||||||
protected static final EntityDataAccessor<IntList> SELECTED_WEAPON = SynchedEntityData.defineId(VehicleEntity.class, ModSerializers.INT_LIST_SERIALIZER.get());
|
protected static final EntityDataAccessor<IntList> SELECTED_WEAPON = SynchedEntityData.defineId(VehicleEntity.class, ModSerializers.INT_LIST_SERIALIZER.get());
|
||||||
|
|
||||||
public VehicleWeapon[][] availableWeapons;
|
public VehicleWeapon[][] availableWeapons;
|
||||||
|
@ -83,6 +83,17 @@ public abstract class VehicleEntity extends Entity {
|
||||||
public int repairCoolDown = maxRepairCoolDown();
|
public int repairCoolDown = maxRepairCoolDown();
|
||||||
public boolean crash;
|
public boolean crash;
|
||||||
|
|
||||||
|
|
||||||
|
public float turretYRot;
|
||||||
|
public float turretXRot;
|
||||||
|
public float turretYRotO;
|
||||||
|
public float turretXRotO;
|
||||||
|
public float turretRot;
|
||||||
|
public float gunYRot;
|
||||||
|
public float gunXRot;
|
||||||
|
public float gunYRotO;
|
||||||
|
public float gunXRotO;
|
||||||
|
|
||||||
// 自定义骑乘
|
// 自定义骑乘
|
||||||
private final List<Entity> orderedPassengers = generatePassengersList();
|
private final List<Entity> orderedPassengers = generatePassengersList();
|
||||||
|
|
||||||
|
@ -233,6 +244,7 @@ public abstract class VehicleEntity extends Entity {
|
||||||
this.entityData.define(HEALTH, this.getMaxHealth());
|
this.entityData.define(HEALTH, this.getMaxHealth());
|
||||||
this.entityData.define(LAST_ATTACKER_UUID, "undefined");
|
this.entityData.define(LAST_ATTACKER_UUID, "undefined");
|
||||||
this.entityData.define(LAST_DRIVER_UUID, "undefined");
|
this.entityData.define(LAST_DRIVER_UUID, "undefined");
|
||||||
|
this.entityData.define(DELTA_ROT, 0f);
|
||||||
|
|
||||||
if (this instanceof WeaponVehicleEntity weaponVehicle && weaponVehicle.getAllWeapons().length > 0) {
|
if (this instanceof WeaponVehicleEntity weaponVehicle && weaponVehicle.getAllWeapons().length > 0) {
|
||||||
this.entityData.define(SELECTED_WEAPON, IntList.of(initSelectedWeaponArray(weaponVehicle)));
|
this.entityData.define(SELECTED_WEAPON, IntList.of(initSelectedWeaponArray(weaponVehicle)));
|
||||||
|
@ -605,6 +617,49 @@ public abstract class VehicleEntity extends Entity {
|
||||||
ParticleTool.sendParticle(serverLevel, ParticleTypes.CAMPFIRE_COSY_SMOKE, this.getX(), this.getY() + 0.7f * getBbHeight(), this.getZ(), 1, 0.35 * this.getBbWidth(), 0.15 * this.getBbHeight(), 0.35 * this.getBbWidth(), 0.01, true);
|
ParticleTool.sendParticle(serverLevel, ParticleTypes.CAMPFIRE_COSY_SMOKE, this.getX(), this.getY() + 0.7f * getBbHeight(), this.getZ(), 1, 0.35 * this.getBbWidth(), 0.15 * this.getBbHeight(), 0.35 * this.getBbWidth(), 0.01, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void turretAngle(float ySpeed, float xSpeed) {
|
||||||
|
Entity driver = this.getFirstPassenger();
|
||||||
|
if (driver != null) {
|
||||||
|
float turretAngle = -Mth.wrapDegrees(driver.getYHeadRot() - this.getYRot());
|
||||||
|
|
||||||
|
float diffY;
|
||||||
|
float diffX;
|
||||||
|
|
||||||
|
diffY = Mth.wrapDegrees(turretAngle - getTurretYRot() + 0.05f);
|
||||||
|
diffX = Mth.wrapDegrees(driver.getXRot() - this.getTurretXRot());
|
||||||
|
|
||||||
|
turretTurnSound(diffX, diffY, 0.95f);
|
||||||
|
|
||||||
|
float min = -ySpeed + (float) (isInWater() && !onGround() ? 2.5 : 6) * entityData.get(DELTA_ROT);
|
||||||
|
float max = ySpeed + (float) (isInWater() && !onGround() ? 2.5 : 6) * entityData.get(DELTA_ROT);
|
||||||
|
|
||||||
|
this.setTurretXRot(this.getTurretXRot() + Mth.clamp(0.95f * diffX, -xSpeed, xSpeed));
|
||||||
|
this.setTurretYRot(this.getTurretYRot() + Mth.clamp(0.9f * diffY, min, max));
|
||||||
|
turretRot = Mth.clamp(0.9f * diffY, min, max);
|
||||||
|
} else {
|
||||||
|
turretRot = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void gunnerAngle(float ySpeed, float xSpeed) {
|
||||||
|
Entity gunner = this.getNthEntity(1);
|
||||||
|
|
||||||
|
float diffY = 0;
|
||||||
|
float diffX = 0;
|
||||||
|
float speed = 1;
|
||||||
|
|
||||||
|
if (gunner instanceof Player) {
|
||||||
|
float gunAngle = -Mth.wrapDegrees(gunner.getYHeadRot() - this.getYRot());
|
||||||
|
diffY = Mth.wrapDegrees(gunAngle - getGunYRot());
|
||||||
|
diffX = Mth.wrapDegrees(gunner.getXRot() - this.getGunXRot());
|
||||||
|
turretTurnSound(diffX, diffY, 0.95f);
|
||||||
|
speed = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.setGunXRot(this.getGunXRot() + Mth.clamp(0.95f * diffX, -xSpeed, xSpeed));
|
||||||
|
this.setGunYRot(this.getGunYRot() + Mth.clamp(0.9f * diffY, -ySpeed, ySpeed) + speed * turretRot);
|
||||||
|
}
|
||||||
|
|
||||||
public void destroy() {
|
public void destroy() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -753,4 +808,84 @@ public abstract class VehicleEntity extends Entity {
|
||||||
@Override
|
@Override
|
||||||
public void push(double pX, double pY, double pZ) {
|
public void push(double pX, double pY, double pZ) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Vec3 getBarrelVector(float pPartialTicks) {
|
||||||
|
return this.calculateViewVector(this.getBarrelXRot(pPartialTicks), this.getBarrelYRot(pPartialTicks));
|
||||||
|
}
|
||||||
|
|
||||||
|
public float getBarrelXRot(float pPartialTicks) {
|
||||||
|
return Mth.lerp(pPartialTicks, turretXRotO - this.xRotO, getTurretXRot() - this.getXRot());
|
||||||
|
}
|
||||||
|
|
||||||
|
public float getBarrelYRot(float pPartialTick) {
|
||||||
|
return -Mth.lerp(pPartialTick, turretYRotO - this.yRotO, getTurretYRot() - this.getYRot());
|
||||||
|
}
|
||||||
|
|
||||||
|
public Vec3 getGunVector(float pPartialTicks) {
|
||||||
|
return this.calculateViewVector(this.getGunXRot(pPartialTicks), this.getGunYRot(pPartialTicks));
|
||||||
|
}
|
||||||
|
|
||||||
|
public float getGunXRot(float pPartialTicks) {
|
||||||
|
return Mth.lerp(pPartialTicks, gunXRotO - this.xRotO, getGunXRot() - this.getXRot());
|
||||||
|
}
|
||||||
|
|
||||||
|
public float getGunYRot(float pPartialTick) {
|
||||||
|
return -Mth.lerp(pPartialTick, gunYRotO - this.yRotO, getGunYRot() - this.getYRot());
|
||||||
|
}
|
||||||
|
|
||||||
|
public float turretYRotO() {
|
||||||
|
return turretYRotO;
|
||||||
|
}
|
||||||
|
|
||||||
|
public float turretYRot() {
|
||||||
|
return turretYRot;
|
||||||
|
}
|
||||||
|
|
||||||
|
public float turretXRotO() {
|
||||||
|
return turretXRotO;
|
||||||
|
}
|
||||||
|
|
||||||
|
public float turretXRot() {
|
||||||
|
return turretXRot;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Vec3 getBarrelVec(float ticks) {
|
||||||
|
return getBarrelVector(ticks);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Vec3 getGunVec(float ticks) {
|
||||||
|
return getGunVector(ticks);
|
||||||
|
}
|
||||||
|
|
||||||
|
public float getTurretYRot() {
|
||||||
|
return this.turretYRot;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTurretYRot(float pTurretYRot) {
|
||||||
|
this.turretYRot = pTurretYRot;
|
||||||
|
}
|
||||||
|
|
||||||
|
public float getTurretXRot() {
|
||||||
|
return this.turretXRot;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTurretXRot(float pTurretXRot) {
|
||||||
|
this.turretXRot = pTurretXRot;
|
||||||
|
}
|
||||||
|
|
||||||
|
public float getGunYRot() {
|
||||||
|
return this.gunYRot;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setGunYRot(float pGunYRot) {
|
||||||
|
this.gunYRot = pGunYRot;
|
||||||
|
}
|
||||||
|
|
||||||
|
public float getGunXRot() {
|
||||||
|
return this.gunXRot;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setGunXRot(float pGunXRot) {
|
||||||
|
this.gunXRot = pGunXRot;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue