调整Ivehicle
This commit is contained in:
parent
9108bdea0b
commit
8910859785
7 changed files with 53 additions and 6 deletions
|
@ -541,6 +541,11 @@ public class AnnihilatorEntity extends Entity implements GeoEntity, ICannonEntit
|
|||
return (int)MAX_ENERGY;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void vehicleShoot(Player player) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public float getHealth() {
|
||||
return this.entityData.get(HEALTH).intValue();
|
||||
|
@ -565,4 +570,9 @@ public class AnnihilatorEntity extends Entity implements GeoEntity, ICannonEntit
|
|||
public boolean canShoot(Player player) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getAmmoCount() {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package com.atsuishio.superbwarfare.entity;
|
||||
|
||||
import net.minecraft.world.entity.player.Player;
|
||||
|
||||
public interface ICannonEntity extends IVehicleEntity {
|
||||
float getHealth();
|
||||
float getMaxHealth();
|
||||
void cannonShoot(Player player);
|
||||
}
|
||||
|
|
|
@ -3,10 +3,11 @@ package com.atsuishio.superbwarfare.entity;
|
|||
import net.minecraft.world.entity.player.Player;
|
||||
|
||||
public interface IVehicleEntity {
|
||||
void cannonShoot(Player player);
|
||||
void vehicleShoot(Player player);
|
||||
float getHealth();
|
||||
float getMaxHealth();
|
||||
boolean isDriver(Player player);
|
||||
int mainGunRpm();
|
||||
boolean canShoot(Player player);
|
||||
int getAmmoCount();
|
||||
}
|
||||
|
|
|
@ -421,6 +421,11 @@ public class Mk42Entity extends Entity implements GeoEntity, ICannonEntity {
|
|||
return this.cache;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void vehicleShoot(Player player) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public float getHealth() {
|
||||
return this.entityData.get(HEALTH).intValue();
|
||||
|
@ -445,4 +450,9 @@ public class Mk42Entity extends Entity implements GeoEntity, ICannonEntity {
|
|||
public boolean canShoot(Player player) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getAmmoCount() {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -516,6 +516,11 @@ public class Mle1934Entity extends Entity implements GeoEntity, ICannonEntity {
|
|||
return this.cache;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void vehicleShoot(Player player) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public float getHealth() {
|
||||
return this.entityData.get(HEALTH).intValue();
|
||||
|
@ -540,4 +545,9 @@ public class Mle1934Entity extends Entity implements GeoEntity, ICannonEntity {
|
|||
public boolean canShoot(Player player) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getAmmoCount() {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -84,7 +84,6 @@ import java.util.Comparator;
|
|||
import java.util.List;
|
||||
|
||||
public class SpeedboatEntity extends Entity implements GeoEntity, IChargeEntity, IVehicleEntity, HasCustomInventoryScreen, ContainerEntity {
|
||||
|
||||
public static final EntityDataAccessor<Integer> FIRE_ANIM = SynchedEntityData.defineId(SpeedboatEntity.class, EntityDataSerializers.INT);
|
||||
public static final EntityDataAccessor<Float> HEALTH = SynchedEntityData.defineId(SpeedboatEntity.class, EntityDataSerializers.FLOAT);
|
||||
public static final EntityDataAccessor<Float> ENERGY = SynchedEntityData.defineId(SpeedboatEntity.class, EntityDataSerializers.FLOAT);
|
||||
|
@ -94,6 +93,7 @@ public class SpeedboatEntity extends Entity implements GeoEntity, IChargeEntity,
|
|||
public static final EntityDataAccessor<Float> ROTOR = SynchedEntityData.defineId(SpeedboatEntity.class, EntityDataSerializers.FLOAT);
|
||||
public static final EntityDataAccessor<Integer> HEAT = SynchedEntityData.defineId(SpeedboatEntity.class, EntityDataSerializers.INT);
|
||||
protected static final EntityDataAccessor<String> LAST_ATTACKER_UUID = SynchedEntityData.defineId(SpeedboatEntity.class, EntityDataSerializers.STRING);
|
||||
public static final EntityDataAccessor<Integer> AMMO = SynchedEntityData.defineId(SpeedboatEntity.class, EntityDataSerializers.INT);
|
||||
|
||||
public static final float MAX_HEALTH = CannonConfig.SPEEDBOAT_HP.get();
|
||||
public static final float MAX_ENERGY = CannonConfig.SPEEDBOAT_MAX_ENERGY.get().floatValue();
|
||||
|
@ -127,6 +127,7 @@ public class SpeedboatEntity extends Entity implements GeoEntity, IChargeEntity,
|
|||
|
||||
@Override
|
||||
protected void defineSynchedData() {
|
||||
this.entityData.define(AMMO, 0);
|
||||
this.entityData.define(FIRE_ANIM, 0);
|
||||
this.entityData.define(HEALTH, MAX_HEALTH);
|
||||
this.entityData.define(ENERGY, 0f);
|
||||
|
@ -309,6 +310,10 @@ public class SpeedboatEntity extends Entity implements GeoEntity, IChargeEntity,
|
|||
cannotFire = false;
|
||||
}
|
||||
|
||||
// TODO 获取弹药数量
|
||||
|
||||
this.entityData.set(AMMO, this.getItemStacks().stream().filter(stack -> stack.is(ModItems.HEAVY_AMMO.get())).count());
|
||||
|
||||
turretYRotO = this.getTurretYRot();
|
||||
turretXRotO = this.getTurretXRot();
|
||||
|
||||
|
@ -373,7 +378,7 @@ public class SpeedboatEntity extends Entity implements GeoEntity, IChargeEntity,
|
|||
* 机枪塔开火
|
||||
*/
|
||||
@Override
|
||||
public void cannonShoot(Player player) {
|
||||
public void vehicleShoot(Player player) {
|
||||
if (this.cannotFire) return;
|
||||
|
||||
ProjectileEntity projectile = new ProjectileEntity(player.level())
|
||||
|
@ -921,4 +926,9 @@ public class SpeedboatEntity extends Entity implements GeoEntity, IChargeEntity,
|
|||
&& !player.getMainHandItem().is(ModTags.Items.GUN)
|
||||
&& !cannotFire;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getAmmoCount() {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package com.atsuishio.superbwarfare.network.message;
|
||||
|
||||
import com.atsuishio.superbwarfare.entity.ICannonEntity;
|
||||
import com.atsuishio.superbwarfare.entity.IVehicleEntity;
|
||||
import net.minecraft.network.FriendlyByteBuf;
|
||||
import net.minecraft.world.level.Level;
|
||||
|
@ -34,9 +35,13 @@ public class VehicleFireMessage {
|
|||
return;
|
||||
}
|
||||
|
||||
if (player.getVehicle() instanceof IVehicleEntity entity) {
|
||||
if (player.getVehicle() instanceof ICannonEntity entity) {
|
||||
entity.cannonShoot(player);
|
||||
}
|
||||
|
||||
if (player.getVehicle() instanceof IVehicleEntity iVehicle && !(player.getVehicle() instanceof ICannonEntity)) {
|
||||
iVehicle.vehicleShoot(player);
|
||||
}
|
||||
}
|
||||
});
|
||||
context.setPacketHandled(true);
|
||||
|
|
Loading…
Add table
Reference in a new issue