修改70mm火箭弹和实体注册名

This commit is contained in:
Atsuishio 2025-07-12 13:40:35 +08:00 committed by Light_Quanta
parent 23ce0d352d
commit 987cf8779f
No known key found for this signature in database
GPG key ID: 11A39A1B8C890959
32 changed files with 130 additions and 129 deletions

View file

@ -1,6 +1,6 @@
{
"parent": "minecraft:item/generated",
"textures": {
"layer0": "superbwarfare:item/rocket_70"
"layer0": "superbwarfare:item/small_rocket"
}
}

View file

@ -1,7 +1,7 @@
package com.atsuishio.superbwarfare.client.layer.projectile;
import com.atsuishio.superbwarfare.Mod;
import com.atsuishio.superbwarfare.entity.projectile.HeliRocketEntity;
import com.atsuishio.superbwarfare.entity.projectile.SmallRocketEntity;
import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.blaze3d.vertex.VertexConsumer;
import net.minecraft.client.renderer.MultiBufferSource;
@ -12,15 +12,15 @@ import software.bernie.geckolib.cache.object.BakedGeoModel;
import software.bernie.geckolib.renderer.GeoRenderer;
import software.bernie.geckolib.renderer.layer.GeoRenderLayer;
public class HeliRocketLayer extends GeoRenderLayer<HeliRocketEntity> {
public class SmallRocketLayer extends GeoRenderLayer<SmallRocketEntity> {
private static final ResourceLocation LAYER = Mod.loc("textures/entity/rpg_rocket_e.png");
public HeliRocketLayer(GeoRenderer<HeliRocketEntity> entityRenderer) {
public SmallRocketLayer(GeoRenderer<SmallRocketEntity> entityRenderer) {
super(entityRenderer);
}
@Override
public void render(PoseStack poseStack, HeliRocketEntity animatable, BakedGeoModel bakedModel, RenderType renderType, MultiBufferSource bufferSource, VertexConsumer buffer, float partialTick, int packedLight, int packedOverlay) {
public void render(PoseStack poseStack, SmallRocketEntity animatable, BakedGeoModel bakedModel, RenderType renderType, MultiBufferSource bufferSource, VertexConsumer buffer, float partialTick, int packedLight, int packedOverlay) {
RenderType glowRenderType = RenderType.eyes(LAYER);
getRenderer().reRender(getDefaultBakedModel(animatable), poseStack, bufferSource, animatable, glowRenderType, bufferSource.getBuffer(glowRenderType), partialTick, packedLight, OverlayTexture.NO_OVERLAY, 0xFFFFFFFF);
}

View file

@ -1,24 +0,0 @@
package com.atsuishio.superbwarfare.client.model.entity;
import com.atsuishio.superbwarfare.Mod;
import com.atsuishio.superbwarfare.entity.projectile.HeliRocketEntity;
import net.minecraft.resources.ResourceLocation;
import software.bernie.geckolib.model.GeoModel;
public class HeliRocketModel extends GeoModel<HeliRocketEntity> {
@Override
public ResourceLocation getAnimationResource(HeliRocketEntity entity) {
return Mod.loc("animations/rpg_rocket.animation.json");
}
@Override
public ResourceLocation getModelResource(HeliRocketEntity entity) {
return Mod.loc("geo/heli_rocket.geo.json");
}
@Override
public ResourceLocation getTextureResource(HeliRocketEntity entity) {
return Mod.loc("textures/entity/heli_rocket.png");
}
}

View file

@ -0,0 +1,24 @@
package com.atsuishio.superbwarfare.client.model.entity;
import com.atsuishio.superbwarfare.Mod;
import com.atsuishio.superbwarfare.entity.projectile.SmallRocketEntity;
import net.minecraft.resources.ResourceLocation;
import software.bernie.geckolib.model.GeoModel;
public class SmallRocketModel extends GeoModel<SmallRocketEntity> {
@Override
public ResourceLocation getAnimationResource(SmallRocketEntity entity) {
return Mod.loc("animations/rpg_rocket.animation.json");
}
@Override
public ResourceLocation getModelResource(SmallRocketEntity entity) {
return Mod.loc("geo/small_rocket.geo.json");
}
@Override
public ResourceLocation getTextureResource(SmallRocketEntity entity) {
return Mod.loc("textures/entity/small_rocket.png");
}
}

View file

@ -4,8 +4,8 @@ import com.atsuishio.superbwarfare.Mod;
import com.atsuishio.superbwarfare.config.client.DisplayConfig;
import com.atsuishio.superbwarfare.entity.vehicle.SpeedboatEntity;
import com.atsuishio.superbwarfare.entity.vehicle.base.*;
import com.atsuishio.superbwarfare.entity.vehicle.weapon.HeliRocketWeapon;
import com.atsuishio.superbwarfare.entity.vehicle.weapon.LaserWeapon;
import com.atsuishio.superbwarfare.entity.vehicle.weapon.SmallRocketWeapon;
import com.atsuishio.superbwarfare.entity.vehicle.weapon.SwarmDroneWeapon;
import com.atsuishio.superbwarfare.event.ClientEventHandler;
import com.atsuishio.superbwarfare.init.ModItems;
@ -513,7 +513,7 @@ public class VehicleHudOverlay implements LayeredDraw.Layer {
);
preciseBlit(guiGraphics, SELECTED, w - 95, startY, 100, 0, 0, 8, 8, 8, 8);
if (InventoryTool.hasCreativeAmmoBox(player) && !(weapon instanceof LaserWeapon) && !(weapon instanceof HeliRocketWeapon) && !(weapon instanceof SwarmDroneWeapon)) {
if (InventoryTool.hasCreativeAmmoBox(player) && !(weapon instanceof LaserWeapon) && !(weapon instanceof SmallRocketWeapon) && !(weapon instanceof SwarmDroneWeapon)) {
preciseBlit(guiGraphics, NUMBER, w - 28 + xOffset, h - frameIndex * 18 - 15, 100, 58, 0, 10, 7.5f, 75, 7.5f);
} else {
renderNumber(guiGraphics, weaponVehicle.getAmmoCount(player), weapon instanceof LaserWeapon,

View file

@ -1,8 +1,8 @@
package com.atsuishio.superbwarfare.client.renderer.entity;
import com.atsuishio.superbwarfare.client.layer.projectile.HeliRocketLayer;
import com.atsuishio.superbwarfare.client.model.entity.HeliRocketModel;
import com.atsuishio.superbwarfare.entity.projectile.HeliRocketEntity;
import com.atsuishio.superbwarfare.client.layer.projectile.SmallRocketLayer;
import com.atsuishio.superbwarfare.client.model.entity.SmallRocketModel;
import com.atsuishio.superbwarfare.entity.projectile.SmallRocketEntity;
import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.blaze3d.vertex.VertexConsumer;
import com.mojang.math.Axis;
@ -11,22 +11,23 @@ import net.minecraft.client.renderer.RenderType;
import net.minecraft.client.renderer.entity.EntityRendererProvider;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.util.Mth;
import org.jetbrains.annotations.NotNull;
import software.bernie.geckolib.cache.object.BakedGeoModel;
import software.bernie.geckolib.renderer.GeoEntityRenderer;
public class HeliRocketRenderer extends GeoEntityRenderer<HeliRocketEntity> {
public HeliRocketRenderer(EntityRendererProvider.Context renderManager) {
super(renderManager, new HeliRocketModel());
this.addRenderLayer(new HeliRocketLayer(this));
public class SmallRocketRenderer extends GeoEntityRenderer<SmallRocketEntity> {
public SmallRocketRenderer(EntityRendererProvider.Context renderManager) {
super(renderManager, new SmallRocketModel());
this.addRenderLayer(new SmallRocketLayer(this));
}
@Override
public RenderType getRenderType(HeliRocketEntity animatable, ResourceLocation texture, MultiBufferSource bufferSource, float partialTick) {
public RenderType getRenderType(SmallRocketEntity animatable, ResourceLocation texture, MultiBufferSource bufferSource, float partialTick) {
return RenderType.entityTranslucent(getTextureLocation(animatable));
}
@Override
public void preRender(PoseStack poseStack, HeliRocketEntity entity, BakedGeoModel model, MultiBufferSource bufferSource, VertexConsumer buffer, boolean isReRender, float partialTick, int packedLight, int packedOverlay, int color) {
public void preRender(PoseStack poseStack, SmallRocketEntity entity, BakedGeoModel model, MultiBufferSource bufferSource, VertexConsumer buffer, boolean isReRender, float partialTick, int packedLight, int packedOverlay, int color) {
float scale = 1f;
this.scaleHeight = scale;
this.scaleWidth = scale;
@ -34,7 +35,7 @@ public class HeliRocketRenderer extends GeoEntityRenderer<HeliRocketEntity> {
}
@Override
public void render(HeliRocketEntity entityIn, float entityYaw, float partialTicks, PoseStack poseStack, MultiBufferSource bufferIn, int packedLightIn) {
public void render(SmallRocketEntity entityIn, float entityYaw, float partialTicks, PoseStack poseStack, @NotNull 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())));
@ -43,7 +44,7 @@ public class HeliRocketRenderer extends GeoEntityRenderer<HeliRocketEntity> {
}
@Override
protected float getDeathMaxRotation(HeliRocketEntity entityLivingBaseIn) {
protected float getDeathMaxRotation(SmallRocketEntity entityLivingBaseIn) {
return 0.0F;
}
}

View file

@ -126,7 +126,7 @@ public class ModItemModelProvider extends ItemModelProvider {
simpleItem(ModItems.SNIPER_AMMO);
simpleItem(ModItems.SHOTGUN_AMMO);
simpleItem(ModItems.HEAVY_AMMO);
simpleItem(ModItems.ROCKET_70);
simpleItem(ModItems.SMALL_ROCKET);
simpleItem(ModItems.WIRE_GUIDE_MISSILE);
simpleItem(ModItems.AGM);
simpleItem(ModItems.SMALL_SHELL);

View file

@ -37,27 +37,27 @@ import software.bernie.geckolib.util.GeckoLibUtil;
import javax.annotation.Nullable;
public class HeliRocketEntity extends FastThrowableProjectile implements GeoEntity, ExplosiveProjectile {
public class SmallRocketEntity extends FastThrowableProjectile implements GeoEntity, ExplosiveProjectile {
private final AnimatableInstanceCache cache = GeckoLibUtil.createInstanceCache(this);
private float damage = 140f;
private float explosionDamage = 60f;
private float explosionRadius = 5f;
public HeliRocketEntity(EntityType<? extends HeliRocketEntity> type, Level world) {
public SmallRocketEntity(EntityType<? extends SmallRocketEntity> type, Level world) {
super(type, world);
this.noCulling = true;
}
public HeliRocketEntity(EntityType<? extends ThrowableItemProjectile> pEntityType, double pX, double pY, double pZ, Level pLevel) {
public SmallRocketEntity(EntityType<? extends ThrowableItemProjectile> pEntityType, double pX, double pY, double pZ, Level pLevel) {
super(pEntityType, pX, pY, pZ, pLevel);
this.noCulling = true;
this.durability = 20;
}
public HeliRocketEntity(LivingEntity entity, Level level, float damage, float explosionDamage, float explosionRadius) {
super(ModEntities.HELI_ROCKET.get(), entity, level);
public SmallRocketEntity(LivingEntity entity, Level level, float damage, float explosionDamage, float explosionRadius) {
super(ModEntities.SMALL_ROCKET.get(), entity, level);
this.damage = damage;
this.explosionDamage = explosionDamage;
this.explosionRadius = explosionRadius;
@ -206,7 +206,7 @@ public class HeliRocketEntity extends FastThrowableProjectile implements GeoEnti
projectile.discard();
}
private PlayState movementPredicate(AnimationState<HeliRocketEntity> event) {
private PlayState movementPredicate(AnimationState<SmallRocketEntity> event) {
return event.setAndContinue(RawAnimation.begin().thenLoop("animation.rpg.idle"));
}

View file

@ -127,7 +127,7 @@ public class A10Entity extends ContainerMobileVehicleEntity implements GeoEntity
.explosionRadius(VehicleConfig.A_10_CANNON_EXPLOSION_RADIUS.get().floatValue())
.sound(ModSounds.INTO_CANNON.get())
.icon(Mod.loc("textures/screens/vehicle_weapon/cannon_30mm.png")),
new HeliRocketWeapon()
new SmallRocketWeapon()
.damage(VehicleConfig.A_10_ROCKET_DAMAGE.get())
.explosionDamage(VehicleConfig.A_10_ROCKET_EXPLOSION_DAMAGE.get())
.explosionRadius(VehicleConfig.A_10_ROCKET_EXPLOSION_RADIUS.get().floatValue())
@ -190,7 +190,7 @@ public class A10Entity extends ContainerMobileVehicleEntity implements GeoEntity
@Override
public @NotNull InteractionResult interact(Player player, @NotNull InteractionHand hand) {
ItemStack stack = player.getMainHandItem();
if (stack.getItem() == ModItems.ROCKET_70.get() && this.entityData.get(LOADED_ROCKET) < 28) {
if (stack.getItem() == ModItems.SMALL_ROCKET.get() && this.entityData.get(LOADED_ROCKET) < 28) {
// 装载火箭
this.entityData.set(LOADED_ROCKET, this.entityData.get(LOADED_ROCKET) + 1);
if (!player.isCreative()) {
@ -361,11 +361,11 @@ public class A10Entity extends ContainerMobileVehicleEntity implements GeoEntity
int ammoCount = countItem(ModItems.SMALL_SHELL.get());
if ((hasItem(ModItems.ROCKET_70.get()) || hasCreativeAmmoBox) && reloadCoolDown == 0 && this.getEntityData().get(LOADED_ROCKET) < 28) {
if ((hasItem(ModItems.SMALL_ROCKET.get()) || hasCreativeAmmoBox) && reloadCoolDown == 0 && this.getEntityData().get(LOADED_ROCKET) < 28) {
this.entityData.set(LOADED_ROCKET, this.getEntityData().get(LOADED_ROCKET) + 1);
reloadCoolDown = 15;
if (!hasCreativeAmmoBox) {
this.getItemStacks().stream().filter(stack -> stack.is(ModItems.ROCKET_70.get())).findFirst().ifPresent(stack -> stack.shrink(1));
this.getItemStacks().stream().filter(stack -> stack.is(ModItems.SMALL_ROCKET.get())).findFirst().ifPresent(stack -> stack.shrink(1));
}
this.level().playSound(null, this, ModSounds.MISSILE_RELOAD.get(), this.getSoundSource(), 2, 1);
}
@ -816,7 +816,7 @@ public class A10Entity extends ContainerMobileVehicleEntity implements GeoEntity
this.entityData.set(HEAT, this.entityData.get(HEAT) + 2);
} else if (getWeaponIndex(0) == 1 && this.getEntityData().get(LOADED_ROCKET) > 0) {
var heliRocketEntity = ((HeliRocketWeapon) getWeapon(0)).create(player);
var heliRocketEntity = ((SmallRocketWeapon) getWeapon(0)).create(player);
Vector4f worldPosition;
Vector4f worldPosition2;
@ -847,7 +847,7 @@ public class A10Entity extends ContainerMobileVehicleEntity implements GeoEntity
BlockPos pos = BlockPos.containing(new Vec3(worldPosition.x, worldPosition.y, worldPosition.z));
this.level().playSound(null, pos, ModSounds.HELICOPTER_ROCKET_FIRE_3P.get(), SoundSource.PLAYERS, 4, 1);
this.level().playSound(null, pos, ModSounds.SMALL_ROCKET_FIRE_3P.get(), SoundSource.PLAYERS, 4, 1);
this.entityData.set(LOADED_ROCKET, this.getEntityData().get(LOADED_ROCKET) - 1);

View file

@ -9,8 +9,8 @@ import com.atsuishio.superbwarfare.entity.vehicle.base.HelicopterEntity;
import com.atsuishio.superbwarfare.entity.vehicle.base.ThirdPersonCameraPosition;
import com.atsuishio.superbwarfare.entity.vehicle.base.WeaponVehicleEntity;
import com.atsuishio.superbwarfare.entity.vehicle.damage.DamageModifier;
import com.atsuishio.superbwarfare.entity.vehicle.weapon.HeliRocketWeapon;
import com.atsuishio.superbwarfare.entity.vehicle.weapon.SmallCannonShellWeapon;
import com.atsuishio.superbwarfare.entity.vehicle.weapon.SmallRocketWeapon;
import com.atsuishio.superbwarfare.entity.vehicle.weapon.VehicleWeapon;
import com.atsuishio.superbwarfare.event.ClientMouseHandler;
import com.atsuishio.superbwarfare.init.ModDamageTypes;
@ -44,8 +44,8 @@ import net.neoforged.api.distmarker.OnlyIn;
import net.neoforged.neoforge.event.EventHooks;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.joml.Math;
import org.joml.*;
import org.joml.Math;
import software.bernie.geckolib.animatable.GeoEntity;
import software.bernie.geckolib.animatable.instance.AnimatableInstanceCache;
import software.bernie.geckolib.animation.AnimatableManager;
@ -107,13 +107,13 @@ public class Ah6Entity extends ContainerMobileVehicleEntity implements GeoEntity
.sound3p(ModSounds.HELICOPTER_CANNON_FIRE_3P.get())
.sound3pFar(ModSounds.HELICOPTER_CANNON_FAR.get())
.sound3pVeryFar(ModSounds.HELICOPTER_CANNON_VERYFAR.get()),
new HeliRocketWeapon()
new SmallRocketWeapon()
.damage(VehicleConfig.AH_6_ROCKET_DAMAGE.get().floatValue())
.explosionDamage(VehicleConfig.AH_6_ROCKET_EXPLOSION_DAMAGE.get().floatValue())
.explosionRadius(VehicleConfig.AH_6_ROCKET_EXPLOSION_RADIUS.get().floatValue())
.sound(ModSounds.INTO_MISSILE.get())
.sound1p(ModSounds.HELICOPTER_ROCKET_FIRE_1P.get())
.sound3p(ModSounds.HELICOPTER_ROCKET_FIRE_3P.get()),
.sound1p(ModSounds.SMALL_ROCKET_FIRE_1P.get())
.sound3p(ModSounds.SMALL_ROCKET_FIRE_3P.get()),
}
};
}
@ -160,7 +160,7 @@ public class Ah6Entity extends ContainerMobileVehicleEntity implements GeoEntity
@Override
public @NotNull InteractionResult interact(Player player, @NotNull InteractionHand hand) {
ItemStack stack = player.getMainHandItem();
if (stack.getItem() == ModItems.ROCKET_70.get() && this.entityData.get(LOADED_ROCKET) < 14) {
if (stack.getItem() == ModItems.SMALL_ROCKET.get() && this.entityData.get(LOADED_ROCKET) < 14) {
// 装载火箭
this.entityData.set(LOADED_ROCKET, this.entityData.get(LOADED_ROCKET) + 1);
if (!player.isCreative()) {
@ -215,11 +215,11 @@ public class Ah6Entity extends ContainerMobileVehicleEntity implements GeoEntity
return false;
}).mapToInt(Ammo.HEAVY::get).sum() + countItem(ModItems.SMALL_SHELL.get());
if ((hasItem(ModItems.ROCKET_70.get()) || InventoryTool.hasCreativeAmmoBox(player)) && reloadCoolDown == 0 && this.getEntityData().get(LOADED_ROCKET) < 14) {
if ((hasItem(ModItems.SMALL_ROCKET.get()) || InventoryTool.hasCreativeAmmoBox(player)) && reloadCoolDown == 0 && this.getEntityData().get(LOADED_ROCKET) < 14) {
this.entityData.set(LOADED_ROCKET, this.getEntityData().get(LOADED_ROCKET) + 1);
reloadCoolDown = 25;
if (!InventoryTool.hasCreativeAmmoBox(player)) {
this.getItemStacks().stream().filter(stack -> stack.is(ModItems.ROCKET_70.get())).findFirst().ifPresent(stack -> stack.shrink(1));
this.getItemStacks().stream().filter(stack -> stack.is(ModItems.SMALL_ROCKET.get())).findFirst().ifPresent(stack -> stack.shrink(1));
}
this.level().playSound(null, this, ModSounds.MISSILE_RELOAD.get(), this.getSoundSource(), 1, 1);
}
@ -604,7 +604,7 @@ public class Ah6Entity extends ContainerMobileVehicleEntity implements GeoEntity
} else if (getWeaponIndex(0) == 1 && this.getEntityData().get(LOADED_ROCKET) > 0) {
var heliRocketEntity = ((HeliRocketWeapon) getWeapon(0)).create(player);
var heliRocketEntity = ((SmallRocketWeapon) getWeapon(0)).create(player);
Vector4f worldPosition;
Vector4f worldPosition2;

View file

@ -1,33 +0,0 @@
package com.atsuishio.superbwarfare.entity.vehicle.weapon;
import com.atsuishio.superbwarfare.Mod;
import com.atsuishio.superbwarfare.entity.projectile.HeliRocketEntity;
import net.minecraft.world.entity.LivingEntity;
public class HeliRocketWeapon extends VehicleWeapon {
public float damage = 140, explosionDamage = 60, explosionRadius = 5;
public HeliRocketWeapon() {
this.icon = Mod.loc("textures/screens/vehicle_weapon/rocket_70mm.png");
}
public HeliRocketWeapon damage(float damage) {
this.damage = damage;
return this;
}
public HeliRocketWeapon explosionDamage(float explosionDamage) {
this.explosionDamage = explosionDamage;
return this;
}
public HeliRocketWeapon explosionRadius(float explosionRadius) {
this.explosionRadius = explosionRadius;
return this;
}
public HeliRocketEntity create(LivingEntity entity) {
return new HeliRocketEntity(entity, entity.level(), damage, explosionDamage, explosionRadius);
}
}

View file

@ -0,0 +1,33 @@
package com.atsuishio.superbwarfare.entity.vehicle.weapon;
import com.atsuishio.superbwarfare.Mod;
import com.atsuishio.superbwarfare.entity.projectile.SmallRocketEntity;
import net.minecraft.world.entity.LivingEntity;
public class SmallRocketWeapon extends VehicleWeapon {
public float damage = 140, explosionDamage = 60, explosionRadius = 5;
public SmallRocketWeapon() {
this.icon = Mod.loc("textures/screens/vehicle_weapon/small_rocket.png");
}
public SmallRocketWeapon damage(float damage) {
this.damage = damage;
return this;
}
public SmallRocketWeapon explosionDamage(float explosionDamage) {
this.explosionDamage = explosionDamage;
return this;
}
public SmallRocketWeapon explosionRadius(float explosionRadius) {
this.explosionRadius = explosionRadius;
return this;
}
public SmallRocketEntity create(LivingEntity entity) {
return new SmallRocketEntity(entity, entity.level(), damage, explosionDamage, explosionRadius);
}
}

View file

@ -82,8 +82,8 @@ public class ModEntities {
EntityType.Builder.<JavelinMissileEntity>of(JavelinMissileEntity::new, MobCategory.MISC).setShouldReceiveVelocityUpdates(false).noSave().setTrackingRange(64).setUpdateInterval(1).sized(0.5f, 0.5f));
public static final DeferredHolder<EntityType<?>, EntityType<Agm65Entity>> AGM_65 = register("agm_65",
EntityType.Builder.<Agm65Entity>of(Agm65Entity::new, MobCategory.MISC).setShouldReceiveVelocityUpdates(false).noSave().setTrackingRange(64).setUpdateInterval(1).sized(0.75f, 0.75f));
public static final DeferredHolder<EntityType<?>, EntityType<HeliRocketEntity>> HELI_ROCKET = register("heli_rocket",
EntityType.Builder.<HeliRocketEntity>of(HeliRocketEntity::new, MobCategory.MISC).setShouldReceiveVelocityUpdates(false).noSave().setTrackingRange(64).setUpdateInterval(1).sized(0.5f, 0.5f));
public static final DeferredHolder<EntityType<?>, EntityType<SmallRocketEntity>> SMALL_ROCKET = register("small_rocket",
EntityType.Builder.<SmallRocketEntity>of(SmallRocketEntity::new, MobCategory.MISC).setShouldReceiveVelocityUpdates(false).noSave().setTrackingRange(64).setUpdateInterval(1).sized(0.5f, 0.5f));
public static final DeferredHolder<EntityType<?>, EntityType<WgMissileEntity>> WG_MISSILE = register("wg_missile",
EntityType.Builder.<WgMissileEntity>of(WgMissileEntity::new, MobCategory.MISC).setShouldReceiveVelocityUpdates(false).noSave().setTrackingRange(64).setUpdateInterval(3).fireImmune().sized(0.5f, 0.5f));
public static final DeferredHolder<EntityType<?>, EntityType<SwarmDroneEntity>> SWARM_DRONE = register("swarm_drone",

View file

@ -21,7 +21,7 @@ public class ModEntityRenderers {
event.registerEntityRenderer(ModEntities.TARGET.get(), TargetRenderer::new);
event.registerEntityRenderer(ModEntities.DPS_GENERATOR.get(), DPSGeneratorRenderer::new);
event.registerEntityRenderer(ModEntities.RPG_ROCKET.get(), RpgRocketRenderer::new);
event.registerEntityRenderer(ModEntities.HELI_ROCKET.get(), HeliRocketRenderer::new);
event.registerEntityRenderer(ModEntities.SMALL_ROCKET.get(), SmallRocketRenderer::new);
event.registerEntityRenderer(ModEntities.MORTAR_SHELL.get(), MortarShellRenderer::new);
event.registerEntityRenderer(ModEntities.CANNON_SHELL.get(), CannonShellRenderer::new);
event.registerEntityRenderer(ModEntities.PROJECTILE.get(), ProjectileEntityRenderer::new);

View file

@ -119,7 +119,7 @@ public class ModItems {
public static final DeferredHolder<Item, C4BombItem> C4_BOMB = AMMO.register("c4_bomb", C4BombItem::new);
public static final DeferredHolder<Item, Blu43MineItem> BLU_43_MINE = AMMO.register("blu_43_mine", Blu43MineItem::new);
public static final DeferredHolder<Item, Item> SMALL_SHELL = AMMO.register("small_shell", SmallShellItem::new);
public static final DeferredHolder<Item, Rocket70Item> ROCKET_70 = AMMO.register("rocket_70", Rocket70Item::new);
public static final DeferredHolder<Item, SmallRocketItem> SMALL_ROCKET = AMMO.register("small_rocket", SmallRocketItem::new);
public static final DeferredHolder<Item, WireGuideMissileItem> WIRE_GUIDE_MISSILE = AMMO.register("wire_guide_missile", WireGuideMissileItem::new);
public static final DeferredHolder<Item, AgmItem> AGM = AMMO.register("agm", AgmItem::new);
public static final DeferredHolder<Item, SwarmDroneItem> SWARM_DRONE = AMMO.register("swarm_drone", SwarmDroneItem::new);
@ -348,7 +348,7 @@ public class ModItems {
DispenserBlock.registerBehavior(CLAYMORE_MINE.get(), new ClaymoreMine.ClaymoreDispenseBehavior());
DispenserBlock.registerBehavior(BLU_43_MINE.get(), new Blu43MineItem.Blu43MineDispenseBehavior());
DispenserBlock.registerBehavior(ROCKET.get(), new RocketItem.RocketDispenseBehavior());
DispenserBlock.registerBehavior(ROCKET_70.get(), new Rocket70Item.Rocket70DispenseBehavior());
DispenserBlock.registerBehavior(SMALL_ROCKET.get(), new SmallRocketItem.SmallRocketDispenseBehavior());
DispenserBlock.registerBehavior(MEDIUM_AERIAL_BOMB.get(), new MediumAerialBombItem.MediumAerialBombDispenseBehavior());
DispenserBlock.registerBehavior(RGO_GRENADE.get(), new RgoGrenade.RgoGrenadeDispenserBehavior());
DispenserBlock.registerBehavior(M18_SMOKE_GRENADE.get(), new M18SmokeGrenade.SmokeGrenadeDispenserBehavior());

View file

@ -413,8 +413,8 @@ public class ModSounds {
public static final DeferredHolder<SoundEvent, SoundEvent> HELICOPTER_CANNON_FIRE_3P = REGISTRY.register("heli_cannon_fire_3p", () -> SoundEvent.createVariableRangeEvent(Mod.loc("heli_cannon_fire_3p")));
public static final DeferredHolder<SoundEvent, SoundEvent> HELICOPTER_CANNON_FAR = REGISTRY.register("heli_cannon_far", () -> SoundEvent.createVariableRangeEvent(Mod.loc("heli_cannon_far")));
public static final DeferredHolder<SoundEvent, SoundEvent> HELICOPTER_CANNON_VERYFAR = REGISTRY.register("heli_cannon_veryfar", () -> SoundEvent.createVariableRangeEvent(Mod.loc("heli_cannon_veryfar")));
public static final DeferredHolder<SoundEvent, SoundEvent> HELICOPTER_ROCKET_FIRE_1P = REGISTRY.register("heli_rocket_fire_1p", () -> SoundEvent.createVariableRangeEvent(Mod.loc("heli_rocket_fire_1p")));
public static final DeferredHolder<SoundEvent, SoundEvent> HELICOPTER_ROCKET_FIRE_3P = REGISTRY.register("heli_rocket_fire_3p", () -> SoundEvent.createVariableRangeEvent(Mod.loc("heli_rocket_fire_3p")));
public static final DeferredHolder<SoundEvent, SoundEvent> SMALL_ROCKET_FIRE_1P = REGISTRY.register("small_rocket_fire_1p", () -> SoundEvent.createVariableRangeEvent(Mod.loc("small_rocket_fire_1p")));
public static final DeferredHolder<SoundEvent, SoundEvent> SMALL_ROCKET_FIRE_3P = REGISTRY.register("small_rocket_fire_3p", () -> SoundEvent.createVariableRangeEvent(Mod.loc("small_rocket_fire_3p")));
public static final DeferredHolder<SoundEvent, SoundEvent> INTO_CANNON = REGISTRY.register("into_cannon", () -> SoundEvent.createVariableRangeEvent(Mod.loc("into_cannon")));
public static final DeferredHolder<SoundEvent, SoundEvent> INTO_MISSILE = REGISTRY.register("into_missile", () -> SoundEvent.createVariableRangeEvent(Mod.loc("into_missile")));

View file

@ -1,6 +1,6 @@
package com.atsuishio.superbwarfare.item.common.ammo;
import com.atsuishio.superbwarfare.entity.projectile.HeliRocketEntity;
import com.atsuishio.superbwarfare.entity.projectile.SmallRocketEntity;
import com.atsuishio.superbwarfare.init.ModEntities;
import com.atsuishio.superbwarfare.init.ModItems;
import com.atsuishio.superbwarfare.init.ModSounds;
@ -18,27 +18,27 @@ import org.jetbrains.annotations.NotNull;
import javax.annotation.ParametersAreNonnullByDefault;
public class Rocket70Item extends Item implements ProjectileItem {
public class SmallRocketItem extends Item implements ProjectileItem {
public Rocket70Item() {
public SmallRocketItem() {
super(new Properties());
}
public static class Rocket70DispenseBehavior extends ProjectileDispenseBehavior {
public Rocket70DispenseBehavior() {
super(ModItems.ROCKET_70.get());
public static class SmallRocketDispenseBehavior extends ProjectileDispenseBehavior {
public SmallRocketDispenseBehavior() {
super(ModItems.SMALL_ROCKET.get());
}
@Override
protected void playSound(BlockSource blockSource) {
blockSource.level().playSound(null, blockSource.pos(), ModSounds.HELICOPTER_ROCKET_FIRE_3P.get(), SoundSource.BLOCKS, 2.0F, 1.0F);
blockSource.level().playSound(null, blockSource.pos(), ModSounds.SMALL_ROCKET_FIRE_3P.get(), SoundSource.BLOCKS, 2.0F, 1.0F);
}
}
@Override
@ParametersAreNonnullByDefault
public @NotNull Projectile asProjectile(Level level, Position pos, ItemStack stack, Direction direction) {
return new HeliRocketEntity(ModEntities.HELI_ROCKET.get(), pos.x(), pos.y(), pos.z(), level);
return new SmallRocketEntity(ModEntities.SMALL_ROCKET.get(), pos.x(), pos.y(), pos.z(), level);
}
@Override

View file

@ -176,7 +176,7 @@
"item.superbwarfare.lunge_mine": "Lunge Mine",
"item.superbwarfare.blu_43_mine": "BLU-43B DragonTooth",
"item.superbwarfare.tm_62": "TM-62 Anti-tank Mine",
"item.superbwarfare.rocket_70": "70mm Rocket",
"item.superbwarfare.small_rocket": "Small Caliber Rocket",
"item.superbwarfare.small_shell": "Small Caliber Shells",
"des.superbwarfare.small_shell": "Suitable for 20mm ~ 40mm caliber weapons",
"item.superbwarfare.wire_guide_missile": "Wire Guide Missile",
@ -474,7 +474,7 @@
"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.small_rocket": "Small Caliber Rocket",
"entity.superbwarfare.flare_decoy": "Flare Decoy",
"entity.superbwarfare.mortar": "Mortar",
"entity.superbwarfare.target": "Target",

View file

@ -159,7 +159,7 @@
"item.superbwarfare.ap_5_inches": "oBÚS AP",
"item.superbwarfare.javelin_missile": "Misíl Javelin",
"item.superbwarfare.lunge_mine": "Mina de Estocada",
"item.superbwarfare.rocket_70": "Cohete de 70mm",
"item.superbwarfare.small_rocket": "Cohete de bajo Calibre",
"item.superbwarfare.small_shell": "Munición de bajo Calibre",
"item.superbwarfare.wire_guide_missile": "Misil guiado por Hilos",
@ -410,7 +410,7 @@
"entity.superbwarfare.cannon_shell": "Casquillo de cañón",
"entity.superbwarfare.javelin_missile": "Misil Javelin",
"entity.superbwarfare.small_cannon_shell": "Casquillo de cañón pequeño",
"entity.superbwarfare.heli_rocket": "Cohete Heli",
"entity.superbwarfare.small_rocket": "Cohete de bajo Calibre",
"entity.superbwarfare.flare_decoy": "Señuelo de bengala",
"entity.superbwarfare.mortar": "Morteri",
"entity.superbwarfare.target": "Objetivo",

View file

@ -159,7 +159,7 @@
"item.superbwarfare.ap_5_inches": "Obus AP",
"item.superbwarfare.javelin_missile": "Missile javelin",
"item.superbwarfare.lunge_mine": "Mine à propulsion",
"item.superbwarfare.rocket_70": "Rocket 70mm",
"item.superbwarfare.small_rocket": "Rocket de petit calibre",
"item.superbwarfare.small_shell": "Obus de petit calibre",
"item.superbwarfare.wire_guide_missile": "Missile téléguidé",
@ -404,7 +404,7 @@
"entity.superbwarfare.cannon_shell": "Coquille de canon",
"entity.superbwarfare.javelin_missile": "Missile Javelin",
"entity.superbwarfare.small_cannon_shell": "Petit obus de canon",
"entity.superbwarfare.heli_rocket": "Roquette Heli",
"entity.superbwarfare.small_rocket": "Rocket de petit calibre",
"entity.superbwarfare.flare_decoy": "Leurre de fusée éclairante",
"entity.superbwarfare.mortar": "Mortier",
"entity.superbwarfare.target": "Cible",

View file

@ -160,7 +160,7 @@
"item.superbwarfare.ap_5_inches": "AP砲弾",
"item.superbwarfare.javelin_missile": "ジャベリンミサイル",
"item.superbwarfare.lunge_mine": "突進地雷",
"item.superbwarfare.rocket_70": "70mm ロケット弾",
"item.superbwarfare.small_rocket": "小口径ロケット弾",
"item.superbwarfare.small_shell": "小口径砲弾",
"item.superbwarfare.wire_guide_missile": "ワイヤー誘導ミサイル",
"item.superbwarfare.swarm_drone": "スウォームドローン",
@ -417,7 +417,7 @@
"entity.superbwarfare.cannon_shell": "砲弾",
"entity.superbwarfare.javelin_missile": "ジャベリンミサイル",
"entity.superbwarfare.small_cannon_shell": "小型砲弾",
"entity.superbwarfare.heli_rocket": "ヘリロケット",
"entity.superbwarfare.small_rocket": "小口径ロケット弾",
"entity.superbwarfare.flare_decoy": "フレアデコイ",
"entity.superbwarfare.mortar": "迫撃砲",
"entity.superbwarfare.target": "的",

View file

@ -153,7 +153,7 @@
"item.superbwarfare.ap_5_inches": "Бронебойный снаряд",
"item.superbwarfare.javelin_missile": "Ракета Javelin",
"item.superbwarfare.lunge_mine": "Ударная мина",
"item.superbwarfare.rocket_70": "70мм ракета",
"item.superbwarfare.small_rocket": "Мелкокалиберные ракета",
"item.superbwarfare.small_shell": "Мелкокалиберные снаряды",
"item.superbwarfare.wire_guide_missile": "Управляемая ракета",
"block.superbwarfare.container": "Контейнер",
@ -385,7 +385,7 @@
"entity.superbwarfare.cannon_shell": "Пушечный снаряд",
"entity.superbwarfare.javelin_missile": "Ракета Javelin",
"entity.superbwarfare.small_cannon_shell": "Снаряд маленькой пушки",
"entity.superbwarfare.heli_rocket": "Ракета вертолёта",
"entity.superbwarfare.small_rocket": "Мелкокалиберные ракета",
"entity.superbwarfare.flare_decoy": "Ложная цель",
"entity.superbwarfare.mortar": "Миномёт",
"entity.superbwarfare.target": "Мишень",

View file

@ -176,7 +176,7 @@
"item.superbwarfare.lunge_mine": "突刺爆雷",
"item.superbwarfare.blu_43_mine": "BLU-43蝴蝶雷",
"item.superbwarfare.tm_62": "TM-62反坦克地雷",
"item.superbwarfare.rocket_70": "70mm火箭弹",
"item.superbwarfare.small_rocket": "小口径火箭弹",
"item.superbwarfare.small_shell": "小口径炮弹",
"des.superbwarfare.small_shell": "适配20mm ~ 40mm口径武器",
"item.superbwarfare.wire_guide_missile": "线控导弹",
@ -473,7 +473,7 @@
"entity.superbwarfare.cannon_shell": "炮弹",
"entity.superbwarfare.javelin_missile": "标枪导弹",
"entity.superbwarfare.small_cannon_shell": "小口径炮弹",
"entity.superbwarfare.heli_rocket": "小鸟火箭弹",
"entity.superbwarfare.small_rocket": "小口径火箭弹",
"entity.superbwarfare.flare_decoy": "热诱弹",
"entity.superbwarfare.mortar": "迫击炮",
"entity.superbwarfare.target": "标靶",

View file

@ -2590,18 +2590,18 @@
}
]
},
"heli_rocket_fire_1p": {
"small_rocket_fire_1p": {
"sounds": [
{
"name": "superbwarfare:helicopter/heli_rocket_fire_1p",
"name": "superbwarfare:helicopter/small_rocket_fire_1p",
"stream": false
}
]
},
"heli_rocket_fire_3p": {
"small_rocket_fire_3p": {
"sounds": [
{
"name": "superbwarfare:helicopter/heli_rocket_fire_3p",
"name": "superbwarfare:helicopter/small_rocket_fire_3p",
"stream": false
}
]

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

View file

@ -21,7 +21,7 @@
}
},
"result": {
"id": "superbwarfare:rocket_70",
"id": "superbwarfare:small_rocket",
"count": 4
}
}