修复了火炮会原地乱跳的问题
This commit is contained in:
parent
873fb69eb8
commit
cd4148a1e4
2 changed files with 48 additions and 46 deletions
|
@ -6,7 +6,6 @@ import net.mcreator.superbwarfare.item.common.ammo.CannonShellItem;
|
||||||
import net.mcreator.superbwarfare.tools.CustomExplosion;
|
import net.mcreator.superbwarfare.tools.CustomExplosion;
|
||||||
import net.mcreator.superbwarfare.tools.ParticleTool;
|
import net.mcreator.superbwarfare.tools.ParticleTool;
|
||||||
import net.mcreator.superbwarfare.tools.SoundTool;
|
import net.mcreator.superbwarfare.tools.SoundTool;
|
||||||
import net.minecraft.core.BlockPos;
|
|
||||||
import net.minecraft.core.particles.ParticleTypes;
|
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;
|
||||||
|
@ -28,6 +27,7 @@ import net.minecraft.world.entity.projectile.ThrownPotion;
|
||||||
import net.minecraft.world.item.ItemStack;
|
import net.minecraft.world.item.ItemStack;
|
||||||
import net.minecraft.world.level.Explosion;
|
import net.minecraft.world.level.Explosion;
|
||||||
import net.minecraft.world.level.Level;
|
import net.minecraft.world.level.Level;
|
||||||
|
import net.minecraft.world.phys.Vec3;
|
||||||
import net.minecraftforge.network.NetworkHooks;
|
import net.minecraftforge.network.NetworkHooks;
|
||||||
import net.minecraftforge.network.PlayMessages;
|
import net.minecraftforge.network.PlayMessages;
|
||||||
import software.bernie.geckolib.animatable.GeoEntity;
|
import software.bernie.geckolib.animatable.GeoEntity;
|
||||||
|
@ -81,6 +81,16 @@ public class Mk42Entity extends Entity implements GeoEntity, ICannonEntity {
|
||||||
this.entityData.set(HEALTH, compound.getFloat("Health"));
|
this.entityData.set(HEALTH, compound.getFloat("Health"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean canBeCollidedWith() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean canCollideWith(Entity pEntity) {
|
||||||
|
return (pEntity.canBeCollidedWith() || pEntity.isPushable()) && !this.isPassengerOfSameVehicle(pEntity);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected float getEyeHeight(Pose pPose, EntityDimensions pSize) {
|
protected float getEyeHeight(Pose pPose, EntityDimensions pSize) {
|
||||||
return 2.16F;
|
return 2.16F;
|
||||||
|
@ -151,9 +161,11 @@ public class Mk42Entity extends Entity implements GeoEntity, ICannonEntity {
|
||||||
@Override
|
@Override
|
||||||
public void baseTick() {
|
public void baseTick() {
|
||||||
super.baseTick();
|
super.baseTick();
|
||||||
|
|
||||||
if (this.entityData.get(COOL_DOWN) > 0) {
|
if (this.entityData.get(COOL_DOWN) > 0) {
|
||||||
this.entityData.set(COOL_DOWN, this.entityData.get(COOL_DOWN) - 1);
|
this.entityData.set(COOL_DOWN, this.entityData.get(COOL_DOWN) - 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.entityData.get(COOL_DOWN) > 28) {
|
if (this.entityData.get(COOL_DOWN) > 28) {
|
||||||
if (Math.random() < 0.5) {
|
if (Math.random() < 0.5) {
|
||||||
this.entityData.set(TYPE, -1);
|
this.entityData.set(TYPE, -1);
|
||||||
|
@ -162,22 +174,11 @@ public class Mk42Entity extends Entity implements GeoEntity, ICannonEntity {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
this.setDeltaMovement(this.getDeltaMovement().add(0.0, -0.04, 0.0));
|
|
||||||
|
|
||||||
if (!this.level().noCollision(this.getBoundingBox())) {
|
|
||||||
this.moveTowardsClosestSpace(this.getX(), (this.getBoundingBox().minY + this.getBoundingBox().maxY) / 2.0, this.getZ());
|
|
||||||
}
|
|
||||||
|
|
||||||
this.move(MoverType.SELF, this.getDeltaMovement());
|
this.move(MoverType.SELF, this.getDeltaMovement());
|
||||||
float f = 0.98F;
|
|
||||||
if (this.onGround()) {
|
if (this.onGround()) {
|
||||||
BlockPos pos = this.getBlockPosBelowThatAffectsMyMovement();
|
this.setDeltaMovement(Vec3.ZERO);
|
||||||
f = this.level().getBlockState(pos).getFriction(this.level(), pos, this) * 0.98F;
|
} else {
|
||||||
}
|
this.setDeltaMovement(this.getDeltaMovement().add(0.0, -0.04, 0.0));
|
||||||
|
|
||||||
this.setDeltaMovement(this.getDeltaMovement().multiply(f, 0.98, f));
|
|
||||||
if (this.onGround()) {
|
|
||||||
this.setDeltaMovement(this.getDeltaMovement().multiply(1.0, -0.9, 1.0));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.entityData.get(HEALTH) <= 300) {
|
if (this.entityData.get(HEALTH) <= 300) {
|
||||||
|
@ -213,6 +214,7 @@ public class Mk42Entity extends Entity implements GeoEntity, ICannonEntity {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.entityData.get(HEALTH) <= 0) {
|
if (this.entityData.get(HEALTH) <= 0) {
|
||||||
|
this.ejectPassengers();
|
||||||
destroy();
|
destroy();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -325,12 +327,12 @@ public class Mk42Entity extends Entity implements GeoEntity, ICannonEntity {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void travel() {
|
public void travel() {
|
||||||
Player entity = this.getPassengers().isEmpty() ? null : (Player) this.getPassengers().get(0);
|
Entity passenger = this.getPassengers().isEmpty() ? null : this.getPassengers().get(0);
|
||||||
ItemStack stack = null;
|
|
||||||
if (entity != null) {
|
if (!(passenger instanceof LivingEntity entity)) return;
|
||||||
stack = entity.getMainHandItem();
|
ItemStack stack = entity.getMainHandItem();
|
||||||
}
|
|
||||||
if (stack != null && this.isVehicle() && !stack.is(ModTags.Items.GUN)) {
|
if (!stack.isEmpty() && this.isVehicle() && !stack.is(ModTags.Items.GUN)) {
|
||||||
float diffY = entity.getYHeadRot() - this.getYRot();
|
float diffY = entity.getYHeadRot() - this.getYRot();
|
||||||
float diffX = entity.getXRot() - 1.3f - this.getXRot();
|
float diffX = entity.getXRot() - 1.3f - this.getXRot();
|
||||||
if (diffY > 180.0f) {
|
if (diffY > 180.0f) {
|
||||||
|
|
|
@ -7,7 +7,6 @@ import net.mcreator.superbwarfare.item.common.ammo.CannonShellItem;
|
||||||
import net.mcreator.superbwarfare.tools.CustomExplosion;
|
import net.mcreator.superbwarfare.tools.CustomExplosion;
|
||||||
import net.mcreator.superbwarfare.tools.ParticleTool;
|
import net.mcreator.superbwarfare.tools.ParticleTool;
|
||||||
import net.mcreator.superbwarfare.tools.SoundTool;
|
import net.mcreator.superbwarfare.tools.SoundTool;
|
||||||
import net.minecraft.core.BlockPos;
|
|
||||||
import net.minecraft.core.particles.ParticleTypes;
|
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;
|
||||||
|
@ -29,6 +28,7 @@ import net.minecraft.world.entity.projectile.ThrownPotion;
|
||||||
import net.minecraft.world.item.ItemStack;
|
import net.minecraft.world.item.ItemStack;
|
||||||
import net.minecraft.world.level.Explosion;
|
import net.minecraft.world.level.Explosion;
|
||||||
import net.minecraft.world.level.Level;
|
import net.minecraft.world.level.Level;
|
||||||
|
import net.minecraft.world.phys.Vec3;
|
||||||
import net.minecraftforge.network.NetworkHooks;
|
import net.minecraftforge.network.NetworkHooks;
|
||||||
import net.minecraftforge.network.PlayMessages;
|
import net.minecraftforge.network.PlayMessages;
|
||||||
import org.joml.Vector3d;
|
import org.joml.Vector3d;
|
||||||
|
@ -85,6 +85,16 @@ public class Mle1934Entity extends Entity implements GeoEntity, ICannonEntity {
|
||||||
this.entityData.set(HEALTH, compound.getFloat("Health"));
|
this.entityData.set(HEALTH, compound.getFloat("Health"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean canBeCollidedWith() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean canCollideWith(Entity pEntity) {
|
||||||
|
return (pEntity.canBeCollidedWith() || pEntity.isPushable()) && !this.isPassengerOfSameVehicle(pEntity);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected float getEyeHeight(Pose pPose, EntityDimensions pSize) {
|
protected float getEyeHeight(Pose pPose, EntityDimensions pSize) {
|
||||||
return 2.16F;
|
return 2.16F;
|
||||||
|
@ -160,26 +170,11 @@ public class Mle1934Entity extends Entity implements GeoEntity, ICannonEntity {
|
||||||
this.entityData.set(COOL_DOWN, this.entityData.get(COOL_DOWN) - 1);
|
this.entityData.set(COOL_DOWN, this.entityData.get(COOL_DOWN) - 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
this.setDeltaMovement(this.getDeltaMovement().add(0.0, -0.04, 0.0));
|
|
||||||
|
|
||||||
if (!this.level().noCollision(this.getBoundingBox())) {
|
|
||||||
this.moveTowardsClosestSpace(this.getX(), (this.getBoundingBox().minY + this.getBoundingBox().maxY) / 2.0, this.getZ());
|
|
||||||
}
|
|
||||||
|
|
||||||
this.move(MoverType.SELF, this.getDeltaMovement());
|
this.move(MoverType.SELF, this.getDeltaMovement());
|
||||||
float f = 0.98F;
|
|
||||||
if (this.onGround()) {
|
if (this.onGround()) {
|
||||||
BlockPos pos = this.getBlockPosBelowThatAffectsMyMovement();
|
this.setDeltaMovement(Vec3.ZERO);
|
||||||
f = this.level().getBlockState(pos).getFriction(this.level(), pos, this) * 0.98F;
|
} else {
|
||||||
}
|
this.setDeltaMovement(this.getDeltaMovement().add(0.0, -0.04, 0.0));
|
||||||
|
|
||||||
this.setDeltaMovement(this.getDeltaMovement().multiply(f, 0.98, f));
|
|
||||||
if (this.onGround()) {
|
|
||||||
this.setDeltaMovement(this.getDeltaMovement().multiply(1.0, -0.9, 1.0));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this.entityData.get(HEALTH) <= 0) {
|
|
||||||
destroy();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.entityData.get(HEALTH) <= 300) {
|
if (this.entityData.get(HEALTH) <= 300) {
|
||||||
|
@ -214,6 +209,11 @@ public class Mle1934Entity extends Entity implements GeoEntity, ICannonEntity {
|
||||||
this.entityData.set(HEALTH, this.entityData.get(HEALTH) + 0.05f);
|
this.entityData.set(HEALTH, this.entityData.get(HEALTH) + 0.05f);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (this.entityData.get(HEALTH) <= 0) {
|
||||||
|
this.ejectPassengers();
|
||||||
|
destroy();
|
||||||
|
}
|
||||||
|
|
||||||
travel();
|
travel();
|
||||||
this.refreshDimensions();
|
this.refreshDimensions();
|
||||||
}
|
}
|
||||||
|
@ -401,12 +401,12 @@ public class Mle1934Entity extends Entity implements GeoEntity, ICannonEntity {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void travel() {
|
public void travel() {
|
||||||
Player entity = this.getPassengers().isEmpty() ? null : (Player) this.getPassengers().get(0);
|
Entity passenger = this.getPassengers().isEmpty() ? null : this.getPassengers().get(0);
|
||||||
ItemStack stack = null;
|
|
||||||
if (entity != null) {
|
if (!(passenger instanceof LivingEntity entity)) return;
|
||||||
stack = entity.getMainHandItem();
|
ItemStack stack = entity.getMainHandItem();
|
||||||
}
|
|
||||||
if (stack != null && this.isVehicle() && !stack.is(ModTags.Items.GUN)) {
|
if (!stack.isEmpty() && this.isVehicle() && !stack.is(ModTags.Items.GUN)) {
|
||||||
float diffY = entity.getYHeadRot() - this.getYRot();
|
float diffY = entity.getYHeadRot() - this.getYRot();
|
||||||
float diffX = entity.getXRot() - 1.2f - this.getXRot();
|
float diffX = entity.getXRot() - 1.2f - this.getXRot();
|
||||||
if (diffY > 180.0f) {
|
if (diffY > 180.0f) {
|
||||||
|
|
Loading…
Add table
Reference in a new issue