重构投射物和命名

This commit is contained in:
17146 2025-03-19 19:40:54 +08:00
parent a0957f863f
commit 71530a0eb7
14 changed files with 90 additions and 100 deletions

View file

@ -1,24 +1,24 @@
package com.atsuishio.superbwarfare.client.model.entity;
import com.atsuishio.superbwarfare.ModUtils;
import com.atsuishio.superbwarfare.entity.projectile.TaserBulletProjectileEntity;
import com.atsuishio.superbwarfare.entity.projectile.TaserBulletEntity;
import net.minecraft.resources.ResourceLocation;
import software.bernie.geckolib.model.GeoModel;
public class TaserBulletProjectileModel extends GeoModel<TaserBulletProjectileEntity> {
public class TaserBulletProjectileModel extends GeoModel<TaserBulletEntity> {
@Override
public ResourceLocation getAnimationResource(TaserBulletProjectileEntity entity) {
public ResourceLocation getAnimationResource(TaserBulletEntity entity) {
return null;
}
@Override
public ResourceLocation getModelResource(TaserBulletProjectileEntity entity) {
public ResourceLocation getModelResource(TaserBulletEntity entity) {
return ModUtils.loc("geo/taser_rod.geo.json");
}
@Override
public ResourceLocation getTextureResource(TaserBulletProjectileEntity entity) {
public ResourceLocation getTextureResource(TaserBulletEntity entity) {
return ModUtils.loc("textures/entity/taser_rod.png");
}
}

View file

@ -1,7 +1,7 @@
package com.atsuishio.superbwarfare.client.renderer.entity;
import com.atsuishio.superbwarfare.client.model.entity.TaserBulletProjectileModel;
import com.atsuishio.superbwarfare.entity.projectile.TaserBulletProjectileEntity;
import com.atsuishio.superbwarfare.entity.projectile.TaserBulletEntity;
import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.blaze3d.vertex.VertexConsumer;
import com.mojang.math.Axis;
@ -13,18 +13,18 @@ import net.minecraft.util.Mth;
import software.bernie.geckolib.cache.object.BakedGeoModel;
import software.bernie.geckolib.renderer.GeoEntityRenderer;
public class TaserBulletProjectileRenderer extends GeoEntityRenderer<TaserBulletProjectileEntity> {
public class TaserBulletProjectileRenderer extends GeoEntityRenderer<TaserBulletEntity> {
public TaserBulletProjectileRenderer(EntityRendererProvider.Context renderManager) {
super(renderManager, new TaserBulletProjectileModel());
}
@Override
public RenderType getRenderType(TaserBulletProjectileEntity animatable, ResourceLocation texture, MultiBufferSource bufferSource, float partialTick) {
public RenderType getRenderType(TaserBulletEntity animatable, ResourceLocation texture, MultiBufferSource bufferSource, float partialTick) {
return RenderType.entityTranslucent(getTextureLocation(animatable));
}
@Override
public void preRender(PoseStack poseStack, TaserBulletProjectileEntity entity, BakedGeoModel model, MultiBufferSource bufferSource, VertexConsumer buffer, boolean isReRender, float partialTick, int packedLight, int packedOverlay, float red, float green,
public void preRender(PoseStack poseStack, TaserBulletEntity entity, BakedGeoModel model, MultiBufferSource bufferSource, VertexConsumer buffer, boolean isReRender, float partialTick, int packedLight, int packedOverlay, float red, float green,
float blue, float alpha) {
float scale = 1f;
this.scaleHeight = scale;
@ -33,7 +33,7 @@ public class TaserBulletProjectileRenderer extends GeoEntityRenderer<TaserBullet
}
@Override
public void render(TaserBulletProjectileEntity entityIn, float entityYaw, float partialTicks, PoseStack poseStack, MultiBufferSource bufferIn, int packedLightIn) {
public void render(TaserBulletEntity entityIn, float entityYaw, float partialTicks, PoseStack poseStack, MultiBufferSource bufferIn, int packedLightIn) {
poseStack.pushPose();
poseStack.mulPose(Axis.YP.rotationDegrees(Mth.lerp(partialTicks, entityIn.yRotO, entityIn.getYRot()) - 90));
poseStack.mulPose(Axis.ZP.rotationDegrees(90 + Mth.lerp(partialTicks, entityIn.xRotO, entityIn.getXRot())));
@ -42,7 +42,7 @@ public class TaserBulletProjectileRenderer extends GeoEntityRenderer<TaserBullet
}
@Override
protected float getDeathMaxRotation(TaserBulletProjectileEntity entityLivingBaseIn) {
protected float getDeathMaxRotation(TaserBulletEntity entityLivingBaseIn) {
return 0.0F;
}
}

View file

@ -19,7 +19,6 @@ import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.EntityType;
import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.entity.monster.Monster;
import net.minecraft.world.entity.projectile.ThrowableItemProjectile;
import net.minecraft.world.item.Item;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.BellBlock;
@ -34,7 +33,7 @@ import software.bernie.geckolib.core.animatable.instance.AnimatableInstanceCache
import software.bernie.geckolib.core.animation.AnimatableManager;
import software.bernie.geckolib.util.GeckoLibUtil;
public class GunGrenadeEntity extends ThrowableItemProjectile implements GeoEntity {
public class GunGrenadeEntity extends FastThrowableProjectile implements GeoEntity {
private float monsterMultiplier = 0.0f;
private float damage = 40.0f;

View file

@ -20,7 +20,6 @@ import net.minecraft.sounds.SoundSource;
import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.EntityType;
import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.entity.projectile.ThrowableItemProjectile;
import net.minecraft.world.item.Item;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.BellBlock;
@ -36,7 +35,8 @@ import software.bernie.geckolib.core.animatable.instance.AnimatableInstanceCache
import software.bernie.geckolib.core.animation.AnimatableManager;
import software.bernie.geckolib.util.GeckoLibUtil;
public class HandGrenadeEntity extends ThrowableItemProjectile implements GeoEntity {
public class HandGrenadeEntity extends FastThrowableProjectile implements GeoEntity {
private int fuse = 100;
private final AnimatableInstanceCache cache = GeckoLibUtil.createInstanceCache(this);
@ -46,12 +46,12 @@ public class HandGrenadeEntity extends ThrowableItemProjectile implements GeoEnt
}
public HandGrenadeEntity(LivingEntity entity, Level level, int fuse) {
super(ModEntities.HAND_GRENADE_ENTITY.get(), entity, level);
super(ModEntities.HAND_GRENADE.get(), entity, level);
this.fuse = fuse;
}
public HandGrenadeEntity(PlayMessages.SpawnEntity spawnEntity, Level level) {
this(ModEntities.HAND_GRENADE_ENTITY.get(), level);
this(ModEntities.HAND_GRENADE.get(), level);
}
@Override

View file

@ -39,22 +39,23 @@ import software.bernie.geckolib.util.GeckoLibUtil;
import javax.annotation.Nullable;
public class HeliRocketEntity extends ThrowableItemProjectile implements GeoEntity {
public class HeliRocketEntity extends FastThrowableProjectile implements GeoEntity {
private final AnimatableInstanceCache cache = GeckoLibUtil.createInstanceCache(this);
private float damage = 140f;
private float explosion_damage = 60f;
private float explosion_radius = 5f;
private float explosionDamage = 60f;
private float explosionRadius = 5f;
public HeliRocketEntity(EntityType<? extends HeliRocketEntity> type, Level world) {
super(type, world);
this.noCulling = true;
}
public HeliRocketEntity(LivingEntity entity, Level level, float damage, float explosion_damage, float explosion_radius) {
public HeliRocketEntity(LivingEntity entity, Level level, float damage, float explosionDamage, float explosionRadius) {
super(ModEntities.HELI_ROCKET.get(), entity, level);
this.damage = damage;
this.explosion_damage = explosion_damage;
this.explosion_radius = explosion_radius;
this.explosionDamage = explosionDamage;
this.explosionRadius = explosionRadius;
}
public HeliRocketEntity(PlayMessages.SpawnEntity spawnEntity, Level level) {
@ -78,7 +79,6 @@ public class HeliRocketEntity extends ThrowableItemProjectile implements GeoEnti
@Override
protected void onHitEntity(EntityHitResult result) {
Entity entity = result.getEntity();
if (entity == this.getOwner() || entity == this.getVehicle()) return;
if (this.getOwner() instanceof LivingEntity living) {
@ -99,7 +99,7 @@ public class HeliRocketEntity extends ThrowableItemProjectile implements GeoEnti
if (this.level() instanceof ServerLevel) {
causeRocketExplode(this,
ModDamageTypes.causeProjectileBoomDamage(this.level().registryAccess(), this, this.getOwner()),
entity, this.explosion_damage, this.explosion_radius, 1);
entity, this.explosionDamage, this.explosionRadius, 1);
}
}
@ -113,7 +113,7 @@ public class HeliRocketEntity extends ThrowableItemProjectile implements GeoEnti
if (this.level() instanceof ServerLevel) {
causeRocketExplode(this,
ModDamageTypes.causeProjectileBoomDamage(this.level().registryAccess(), this, this.getOwner()),
this, this.explosion_damage, this.explosion_radius, 1);
this, this.explosionDamage, this.explosionRadius, 1);
}
}
@ -141,7 +141,7 @@ public class HeliRocketEntity extends ThrowableItemProjectile implements GeoEnti
if (this.level() instanceof ServerLevel) {
causeRocketExplode(this,
ModDamageTypes.causeProjectileBoomDamage(this.level().registryAccess(), this, this.getOwner()),
this, this.explosion_damage, this.explosion_radius, 1);
this, this.explosionDamage, this.explosionRadius, 1);
}
this.discard();
}
@ -166,13 +166,6 @@ public class HeliRocketEntity extends ThrowableItemProjectile implements GeoEnti
return 0.002f;
}
public String getSyncedAnimation() {
return null;
}
public void setAnimation(String animation) {
}
@Override
public void registerControllers(AnimatableManager.ControllerRegistrar data) {
data.add(new AnimationController<>(this, "movement", 0, this::movementPredicate));

View file

@ -27,7 +27,6 @@ import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.entity.animal.Pig;
import net.minecraft.world.entity.boss.enderdragon.EnderDragon;
import net.minecraft.world.entity.monster.Monster;
import net.minecraft.world.entity.projectile.ThrowableItemProjectile;
import net.minecraft.world.item.Item;
import net.minecraft.world.level.Explosion;
import net.minecraft.world.level.Level;
@ -51,7 +50,8 @@ import software.bernie.geckolib.util.GeckoLibUtil;
import java.util.List;
public class JavelinMissileEntity extends ThrowableItemProjectile implements GeoEntity {
public class JavelinMissileEntity extends FastThrowableProjectile implements GeoEntity {
public static final EntityDataAccessor<String> TARGET_UUID = SynchedEntityData.defineId(JavelinMissileEntity.class, EntityDataSerializers.STRING);
public static final EntityDataAccessor<Boolean> TOP = SynchedEntityData.defineId(JavelinMissileEntity.class, EntityDataSerializers.BOOLEAN);
public static final EntityDataAccessor<Float> TARGET_X = SynchedEntityData.defineId(JavelinMissileEntity.class, EntityDataSerializers.FLOAT);
@ -232,7 +232,6 @@ public class JavelinMissileEntity extends ThrowableItemProjectile implements Geo
}
}
} else if (guide_type == 1) {
double px = this.getX();
double ex = this.entityData.get(TARGET_X);
double pz = this.getZ();

View file

@ -20,7 +20,6 @@ import net.minecraft.util.Mth;
import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.EntityType;
import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.entity.projectile.ThrowableItemProjectile;
import net.minecraft.world.item.Item;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.BellBlock;
@ -37,7 +36,8 @@ import software.bernie.geckolib.core.animatable.instance.AnimatableInstanceCache
import software.bernie.geckolib.core.animation.AnimatableManager;
import software.bernie.geckolib.util.GeckoLibUtil;
public class RgoGrenadeEntity extends ThrowableItemProjectile implements GeoEntity {
public class RgoGrenadeEntity extends FastThrowableProjectile implements GeoEntity {
private int fuse = 80;
private final AnimatableInstanceCache cache = GeckoLibUtil.createInstanceCache(this);

View file

@ -40,7 +40,7 @@ import software.bernie.geckolib.core.animation.AnimatableManager;
import software.bernie.geckolib.util.GeckoLibUtil;
@OnlyIn(value = Dist.CLIENT, _interface = ItemSupplier.class)
public class TaserBulletProjectileEntity extends AbstractArrow implements GeoEntity {
public class TaserBulletEntity extends AbstractArrow implements GeoEntity {
private float damage = 1f;
private int volt = 0;
@ -49,19 +49,19 @@ public class TaserBulletProjectileEntity extends AbstractArrow implements GeoEnt
public static final ItemStack PROJECTILE_ITEM = new ItemStack(Items.AIR);
private final AnimatableInstanceCache cache = GeckoLibUtil.createInstanceCache(this);
public TaserBulletProjectileEntity(PlayMessages.SpawnEntity packet, Level world) {
super(ModEntities.TASER_BULLET_PROJECTILE.get(), world);
public TaserBulletEntity(PlayMessages.SpawnEntity packet, Level world) {
super(ModEntities.TASER_BULLET.get(), world);
this.pickup = AbstractArrow.Pickup.DISALLOWED;
}
public TaserBulletProjectileEntity(LivingEntity entity, Level level, float damage, int volt, int wireLength) {
super(ModEntities.TASER_BULLET_PROJECTILE.get(), entity, level);
public TaserBulletEntity(LivingEntity entity, Level level, float damage, int volt, int wireLength) {
super(ModEntities.TASER_BULLET.get(), entity, level);
this.damage = damage;
this.volt = volt;
this.wireLength = wireLength;
}
public TaserBulletProjectileEntity(EntityType<? extends TaserBulletProjectileEntity> type, Level world) {
public TaserBulletEntity(EntityType<? extends TaserBulletEntity> type, Level world) {
super(type, world);
this.noCulling = true;
}

View file

@ -42,7 +42,7 @@ import software.bernie.geckolib.util.GeckoLibUtil;
import javax.annotation.Nullable;
public class WgMissileEntity extends ThrowableItemProjectile implements GeoEntity {
public class WgMissileEntity extends FastThrowableProjectile implements GeoEntity {
private final AnimatableInstanceCache cache = GeckoLibUtil.createInstanceCache(this);
@ -187,9 +187,6 @@ public class WgMissileEntity extends ThrowableItemProjectile implements GeoEntit
return 0;
}
public void setAnimation(String animation) {
}
@Override
public void registerControllers(AnimatableManager.ControllerRegistrar data) {
data.add(new AnimationController<>(this, "movement", 0, this::movementPredicate));

View file

@ -21,7 +21,7 @@ import net.minecraftforge.registries.RegistryObject;
public class ModEntities {
public static final DeferredRegister<EntityType<?>> REGISTRY = DeferredRegister.create(ForgeRegistries.ENTITY_TYPES, ModUtils.MODID);
// TODO 重构实体命名
// Living Entities
public static final RegistryObject<EntityType<TargetEntity>> TARGET = register("target",
EntityType.Builder.<TargetEntity>of(TargetEntity::new, MobCategory.CREATURE).setTrackingRange(64).setUpdateInterval(3).setCustomClientFactory(TargetEntity::new).fireImmune().sized(0.875f, 2f));
@ -32,47 +32,45 @@ public class ModEntities {
// Misc Entities
public static final RegistryObject<EntityType<MortarEntity>> MORTAR = register("mortar",
EntityType.Builder.<MortarEntity>of(MortarEntity::new, MobCategory.MISC).setTrackingRange(64).setUpdateInterval(3).setCustomClientFactory(MortarEntity::new).fireImmune().sized(0.8f, 1.4f));
public static final RegistryObject<EntityType<LaserEntity>> LASER = register("laser",
EntityType.Builder.<LaserEntity>of(LaserEntity::new, MobCategory.MISC).sized(0.1f, 0.1f).fireImmune().setUpdateInterval(1));
public static final RegistryObject<EntityType<FlareDecoyEntity>> FLARE_DECOY = register("flare_decoy",
EntityType.Builder.<FlareDecoyEntity>of(FlareDecoyEntity::new, MobCategory.MISC).setTrackingRange(64).setUpdateInterval(1).setCustomClientFactory(FlareDecoyEntity::new).sized(0.5f, 0.5f));
// Projectiles
public static final RegistryObject<EntityType<ClaymoreEntity>> CLAYMORE = register("claymore",
EntityType.Builder.<ClaymoreEntity>of(ClaymoreEntity::new, MobCategory.MISC).setTrackingRange(64).setUpdateInterval(1).sized(0.5f, 0.5f));
public static final RegistryObject<EntityType<C4Entity>> C_4 = register("c4",
EntityType.Builder.<C4Entity>of(C4Entity::new, MobCategory.MISC).setTrackingRange(64).setUpdateInterval(1).sized(0.5f, 0.5f));
public static final RegistryObject<EntityType<TaserBulletProjectileEntity>> TASER_BULLET_PROJECTILE = register("projectile_taser_bullet_projectile",
EntityType.Builder.<TaserBulletProjectileEntity>of(TaserBulletProjectileEntity::new, MobCategory.MISC).setCustomClientFactory(TaserBulletProjectileEntity::new).setShouldReceiveVelocityUpdates(true).setTrackingRange(64)
public static final RegistryObject<EntityType<TaserBulletEntity>> TASER_BULLET = register("taser_bullet",
EntityType.Builder.<TaserBulletEntity>of(TaserBulletEntity::new, MobCategory.MISC).setCustomClientFactory(TaserBulletEntity::new).setTrackingRange(64)
.setUpdateInterval(1).sized(0.5f, 0.5f));
public static final RegistryObject<EntityType<GunGrenadeEntity>> GUN_GRENADE = register("projectile_gun_grenade",
EntityType.Builder.<GunGrenadeEntity>of(GunGrenadeEntity::new, MobCategory.MISC).setTrackingRange(64).setUpdateInterval(1).setCustomClientFactory(GunGrenadeEntity::new).sized(0.5f, 0.5f));
// Fast Projectiles
public static final RegistryObject<EntityType<SmallCannonShellEntity>> SMALL_CANNON_SHELL = register("projectile_small_cannon_shell",
public static final RegistryObject<EntityType<SmallCannonShellEntity>> SMALL_CANNON_SHELL = register("small_cannon_shell",
EntityType.Builder.<SmallCannonShellEntity>of(SmallCannonShellEntity::new, MobCategory.MISC).setShouldReceiveVelocityUpdates(false).setTrackingRange(64).setUpdateInterval(1).setCustomClientFactory(SmallCannonShellEntity::new).sized(0.5f, 0.5f));
public static final RegistryObject<EntityType<RpgRocketEntity>> RPG_ROCKET = register("projectile_rpg_rocket",
public static final RegistryObject<EntityType<RpgRocketEntity>> RPG_ROCKET = register("rpg_rocket",
EntityType.Builder.<RpgRocketEntity>of(RpgRocketEntity::new, MobCategory.MISC).setShouldReceiveVelocityUpdates(false).setTrackingRange(64).setUpdateInterval(1).setCustomClientFactory(RpgRocketEntity::new).sized(0.5f, 0.5f));
public static final RegistryObject<EntityType<MortarShellEntity>> MORTAR_SHELL = register("projectile_mortar_shell",
public static final RegistryObject<EntityType<MortarShellEntity>> MORTAR_SHELL = register("mortar_shell",
EntityType.Builder.<MortarShellEntity>of(MortarShellEntity::new, MobCategory.MISC).setShouldReceiveVelocityUpdates(false).setTrackingRange(64).setUpdateInterval(1).setCustomClientFactory(MortarShellEntity::new).sized(0.5f, 0.5f));
public static final RegistryObject<EntityType<ProjectileEntity>> PROJECTILE = register("projectile",
EntityType.Builder.<ProjectileEntity>of(ProjectileEntity::new, MobCategory.MISC).setShouldReceiveVelocityUpdates(false).setCustomClientFactory(ProjectileEntity::new).setTrackingRange(64).noSave().noSummon().sized(0.25f, 0.25f));
public static final RegistryObject<EntityType<CannonShellEntity>> CANNON_SHELL = register("projectile_cannon_shell",
public static final RegistryObject<EntityType<CannonShellEntity>> CANNON_SHELL = register("cannon_shell",
EntityType.Builder.<CannonShellEntity>of(CannonShellEntity::new, MobCategory.MISC).setShouldReceiveVelocityUpdates(false).setTrackingRange(64).setUpdateInterval(1).setCustomClientFactory(CannonShellEntity::new).sized(0.5f, 0.5f));
public static final RegistryObject<EntityType<HandGrenadeEntity>> HAND_GRENADE_ENTITY = register("projectile_hand_grenade_entity",
EntityType.Builder.<HandGrenadeEntity>of(HandGrenadeEntity::new, MobCategory.MISC).setShouldReceiveVelocityUpdates(true).setTrackingRange(64).setUpdateInterval(1).setCustomClientFactory(HandGrenadeEntity::new).sized(0.3f, 0.3f));
public static final RegistryObject<EntityType<RgoGrenadeEntity>> RGO_GRENADE = register("projectile_rgo_grenade",
EntityType.Builder.<RgoGrenadeEntity>of(RgoGrenadeEntity::new, MobCategory.MISC).setShouldReceiveVelocityUpdates(true).setTrackingRange(64).setUpdateInterval(1).setCustomClientFactory(RgoGrenadeEntity::new).sized(0.3f, 0.3f));
public static final RegistryObject<EntityType<JavelinMissileEntity>> JAVELIN_MISSILE = register("projectile_javelin_missile",
EntityType.Builder.<JavelinMissileEntity>of(JavelinMissileEntity::new, MobCategory.MISC).setShouldReceiveVelocityUpdates(true).setTrackingRange(64).setUpdateInterval(1).setCustomClientFactory(JavelinMissileEntity::new).sized(0.5f, 0.5f));
public static final RegistryObject<EntityType<LaserEntity>> LASER = register("laser",
EntityType.Builder.<LaserEntity>of(LaserEntity::new, MobCategory.MISC).sized(0.1f, 0.1f).fireImmune().setUpdateInterval(1));
public static final RegistryObject<EntityType<HeliRocketEntity>> HELI_ROCKET = register("projectile_heli_rocket",
EntityType.Builder.<HeliRocketEntity>of(HeliRocketEntity::new, MobCategory.MISC).setTrackingRange(64).setUpdateInterval(1).setCustomClientFactory(HeliRocketEntity::new).sized(0.5f, 0.5f));
public static final RegistryObject<EntityType<FlareDecoyEntity>> FLARE_DECOY = register("flare_decoy_entity",
EntityType.Builder.<FlareDecoyEntity>of(FlareDecoyEntity::new, MobCategory.MISC).setTrackingRange(64).setUpdateInterval(1).setCustomClientFactory(FlareDecoyEntity::new).sized(0.5f, 0.5f));
public static final RegistryObject<EntityType<GunGrenadeEntity>> GUN_GRENADE = register("gun_grenade",
EntityType.Builder.<GunGrenadeEntity>of(GunGrenadeEntity::new, MobCategory.MISC).setShouldReceiveVelocityUpdates(false).setTrackingRange(64).setUpdateInterval(1).setCustomClientFactory(GunGrenadeEntity::new).sized(0.5f, 0.5f));
public static final RegistryObject<EntityType<MelonBombEntity>> MELON_BOMB = register("melon_bomb",
EntityType.Builder.<MelonBombEntity>of(MelonBombEntity::new, MobCategory.MISC).setTrackingRange(64).setUpdateInterval(1).setCustomClientFactory(MelonBombEntity::new).sized(1f, 1f));
EntityType.Builder.<MelonBombEntity>of(MelonBombEntity::new, MobCategory.MISC).setShouldReceiveVelocityUpdates(false).setTrackingRange(64).setUpdateInterval(1).setCustomClientFactory(MelonBombEntity::new).sized(1f, 1f));
public static final RegistryObject<EntityType<HandGrenadeEntity>> HAND_GRENADE = register("hand_grenade",
EntityType.Builder.<HandGrenadeEntity>of(HandGrenadeEntity::new, MobCategory.MISC).setShouldReceiveVelocityUpdates(false).setTrackingRange(64).setUpdateInterval(1).setCustomClientFactory(HandGrenadeEntity::new).sized(0.3f, 0.3f));
public static final RegistryObject<EntityType<RgoGrenadeEntity>> RGO_GRENADE = register("rgo_grenade",
EntityType.Builder.<RgoGrenadeEntity>of(RgoGrenadeEntity::new, MobCategory.MISC).setShouldReceiveVelocityUpdates(false).setTrackingRange(64).setUpdateInterval(1).setCustomClientFactory(RgoGrenadeEntity::new).sized(0.3f, 0.3f));
public static final RegistryObject<EntityType<JavelinMissileEntity>> JAVELIN_MISSILE = register("javelin_missile",
EntityType.Builder.<JavelinMissileEntity>of(JavelinMissileEntity::new, MobCategory.MISC).setShouldReceiveVelocityUpdates(false).setTrackingRange(64).setUpdateInterval(1).setCustomClientFactory(JavelinMissileEntity::new).sized(0.5f, 0.5f));
public static final RegistryObject<EntityType<HeliRocketEntity>> HELI_ROCKET = register("heli_rocket",
EntityType.Builder.<HeliRocketEntity>of(HeliRocketEntity::new, MobCategory.MISC).setShouldReceiveVelocityUpdates(false).setTrackingRange(64).setUpdateInterval(1).setCustomClientFactory(HeliRocketEntity::new).sized(0.5f, 0.5f));
public static final RegistryObject<EntityType<WgMissileEntity>> WG_MISSILE = register("wg_missile",
EntityType.Builder.<WgMissileEntity>of(WgMissileEntity::new, MobCategory.MISC).setTrackingRange(64).setUpdateInterval(3).setCustomClientFactory(WgMissileEntity::new).fireImmune().sized(0.5f, 0.5f));
EntityType.Builder.<WgMissileEntity>of(WgMissileEntity::new, MobCategory.MISC).setShouldReceiveVelocityUpdates(false).setTrackingRange(64).setUpdateInterval(3).setCustomClientFactory(WgMissileEntity::new).fireImmune().sized(0.5f, 0.5f));
// Vehicles
public static final RegistryObject<EntityType<Mk42Entity>> MK_42 = register("mk_42",
@ -95,12 +93,12 @@ public class ModEntities {
public static final RegistryObject<EntityType<Bmp2Entity>> BMP_2 = register("bmp_2",
EntityType.Builder.<Bmp2Entity>of(Bmp2Entity::new, MobCategory.MISC).setTrackingRange(64).setUpdateInterval(3).setCustomClientFactory(Bmp2Entity::new).fireImmune().sized(4f, 3f));
public static final RegistryObject<EntityType<Yx100Entity>> YX_100 = register("yx_100",
EntityType.Builder.<Yx100Entity>of(Yx100Entity::new, MobCategory.MISC).setShouldReceiveVelocityUpdates(true).setTrackingRange(64).setUpdateInterval(3).setCustomClientFactory(Yx100Entity::new).fireImmune().sized(5.5f, 3.25f));
EntityType.Builder.<Yx100Entity>of(Yx100Entity::new, MobCategory.MISC).setTrackingRange(64).setUpdateInterval(3).setCustomClientFactory(Yx100Entity::new).fireImmune().sized(5.5f, 3.25f));
public static final RegistryObject<EntityType<DroneEntity>> DRONE = register("drone",
EntityType.Builder.<DroneEntity>of(DroneEntity::new, MobCategory.MISC).setTrackingRange(64).setUpdateInterval(3).setCustomClientFactory(DroneEntity::new).sized(0.6f, 0.2f));
public static final RegistryObject<EntityType<LaserTowerEntity>> LASER_TOWER = register("laser_tower",
EntityType.Builder.<LaserTowerEntity>of(LaserTowerEntity::new, MobCategory.MISC).setShouldReceiveVelocityUpdates(true).setTrackingRange(64).setUpdateInterval(3).setCustomClientFactory(LaserTowerEntity::new).fireImmune().sized(0.9f, 1.65f));
EntityType.Builder.<LaserTowerEntity>of(LaserTowerEntity::new, MobCategory.MISC).setTrackingRange(64).setUpdateInterval(3).setCustomClientFactory(LaserTowerEntity::new).fireImmune().sized(0.9f, 1.65f));
private static <T extends Entity> RegistryObject<EntityType<T>> register(String name, EntityType.Builder<T> entityTypeBuilder) {
return REGISTRY.register(name, () -> entityTypeBuilder.build(name));

View file

@ -15,7 +15,7 @@ public class ModEntityRenderers {
event.registerEntityRenderer(ModEntities.SENPAI.get(), SenpaiRenderer::new);
event.registerEntityRenderer(ModEntities.CLAYMORE.get(), ClaymoreRenderer::new);
event.registerEntityRenderer(ModEntities.C_4.get(), C4Renderer::new);
event.registerEntityRenderer(ModEntities.TASER_BULLET_PROJECTILE.get(), TaserBulletProjectileRenderer::new);
event.registerEntityRenderer(ModEntities.TASER_BULLET.get(), TaserBulletProjectileRenderer::new);
event.registerEntityRenderer(ModEntities.GUN_GRENADE.get(), GunGrenadeRenderer::new);
event.registerEntityRenderer(ModEntities.TARGET.get(), TargetRenderer::new);
event.registerEntityRenderer(ModEntities.RPG_ROCKET.get(), RpgRocketRenderer::new);
@ -25,7 +25,7 @@ public class ModEntityRenderers {
event.registerEntityRenderer(ModEntities.PROJECTILE.get(), ProjectileEntityRenderer::new);
event.registerEntityRenderer(ModEntities.MK_42.get(), Mk42Renderer::new);
event.registerEntityRenderer(ModEntities.DRONE.get(), DroneRenderer::new);
event.registerEntityRenderer(ModEntities.HAND_GRENADE_ENTITY.get(), HandGrenadeRenderer::new);
event.registerEntityRenderer(ModEntities.HAND_GRENADE.get(), HandGrenadeRenderer::new);
event.registerEntityRenderer(ModEntities.RGO_GRENADE.get(), RgoGrenadeRenderer::new);
event.registerEntityRenderer(ModEntities.MLE_1934.get(), Mle1934Renderer::new);
event.registerEntityRenderer(ModEntities.JAVELIN_MISSILE.get(), JavelinMissileRenderer::new);

View file

@ -5,7 +5,7 @@ import com.atsuishio.superbwarfare.capability.energy.ItemEnergyProvider;
import com.atsuishio.superbwarfare.client.PoseTool;
import com.atsuishio.superbwarfare.client.renderer.item.TaserItemRenderer;
import com.atsuishio.superbwarfare.client.tooltip.component.EnergyImageComponent;
import com.atsuishio.superbwarfare.entity.projectile.TaserBulletProjectileEntity;
import com.atsuishio.superbwarfare.entity.projectile.TaserBulletEntity;
import com.atsuishio.superbwarfare.event.ClientEventHandler;
import com.atsuishio.superbwarfare.init.ModItems;
import com.atsuishio.superbwarfare.init.ModPerks;
@ -295,7 +295,7 @@ public class TaserItem extends GunItem implements GeoItem, SpecialFireWeapon {
serverPlayer.level().playSound(null, serverPlayer.getOnPos(), ModSounds.TASER_FIRE_3P.get(), SoundSource.PLAYERS, 1, 1);
var level = serverPlayer.level();
TaserBulletProjectileEntity taserBulletProjectile = new TaserBulletProjectileEntity(player, level,
TaserBulletEntity taserBulletProjectile = new TaserBulletEntity(player, level,
(float) GunsTool.getGunDoubleTag(stack, "Damage", 0), volt, wireLength);
taserBulletProjectile.setPos(player.getX(), player.getEyeY() - 0.1, player.getZ());

View file

@ -391,15 +391,17 @@
"death.attack.vehicle_explosion.item": "%1$s's vehicle was destroyed by %2$s using %3$s",
"entity.superbwarfare.projectile": "Bullet",
"entity.superbwarfare.projectile_mortar_shell": "Mortar Shell",
"entity.superbwarfare.projectile_gun_grenade": "Gun Grenade",
"entity.superbwarfare.projectile_rpg_rocket": "RPG Rocket",
"entity.superbwarfare.projectile_taser_bullet_projectile": "Taser Electrode",
"entity.superbwarfare.projectile_hand_grenade_entity": "Exploding M67 Grenade",
"entity.superbwarfare.projectile_rgo_grenade": "Exploding RGO Grenade",
"entity.superbwarfare.projectile_cannon_shell": "Cannon Shell",
"entity.superbwarfare.projectile_javelin_missile": "Javelin Missile",
"entity.superbwarfare.projectile_small_cannon_shell": "Small Cannon Shell",
"entity.superbwarfare.mortar_shell": "Mortar Shell",
"entity.superbwarfare.gun_grenade": "Gun Grenade",
"entity.superbwarfare.rpg_rocket": "RPG Rocket",
"entity.superbwarfare.taser_bullet": "Taser Electrode",
"entity.superbwarfare.hand_grenade": "Exploding M67 Grenade",
"entity.superbwarfare.rgo_grenade": "Exploding RGO Grenade",
"entity.superbwarfare.cannon_shell": "Cannon Shell",
"entity.superbwarfare.javelin_missile": "Javelin Missile",
"entity.superbwarfare.small_cannon_shell": "Small Cannon Shell",
"entity.superbwarfare.heli_rocket": "Heli Rocket",
"entity.superbwarfare.flare_decoy": "Flare Decoy",
"entity.superbwarfare.mortar": "Mortar",
"entity.superbwarfare.target": "Target",
"entity.superbwarfare.claymore": "Claymore",

View file

@ -389,15 +389,17 @@
"death.attack.vehicle_explosion.item": "%1$s的载具被%2$s用%3$s击毁了",
"entity.superbwarfare.projectile": "子弹",
"entity.superbwarfare.projectile_mortar_shell": "迫击炮弹",
"entity.superbwarfare.projectile_gun_grenade": "枪榴弹",
"entity.superbwarfare.projectile_rpg_rocket": "RPG火箭弹",
"entity.superbwarfare.projectile_taser_bullet_projectile": "电极",
"entity.superbwarfare.projectile_hand_grenade_entity": "快爆炸的M67手榴弹",
"entity.superbwarfare.projectile_rgo_grenade": "快爆炸的RGO手榴弹",
"entity.superbwarfare.projectile_cannon_shell": "炮弹",
"entity.superbwarfare.projectile_javelin_missile": "标枪导弹",
"entity.superbwarfare.projectile_small_cannon_shell": "小口径炮弹",
"entity.superbwarfare.mortar_shell": "迫击炮弹",
"entity.superbwarfare.gun_grenade": "枪榴弹",
"entity.superbwarfare.rpg_rocket": "RPG火箭弹",
"entity.superbwarfare.taser_bullet": "泰瑟枪电极",
"entity.superbwarfare.hand_grenade": "快爆炸的M67手榴弹",
"entity.superbwarfare.rgo_grenade": "快爆炸的RGO手榴弹",
"entity.superbwarfare.cannon_shell": "炮弹",
"entity.superbwarfare.javelin_missile": "标枪导弹",
"entity.superbwarfare.small_cannon_shell": "小口径炮弹",
"entity.superbwarfare.heli_rocket": "小鸟火箭弹",
"entity.superbwarfare.flare_decoy": "热诱弹",
"entity.superbwarfare.mortar": "迫击炮",
"entity.superbwarfare.target": "标靶",
"entity.superbwarfare.claymore": "阔剑地雷",