diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Mk42Entity.java b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Mk42Entity.java index 8982d4499..4ca431953 100644 --- a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Mk42Entity.java +++ b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Mk42Entity.java @@ -5,6 +5,7 @@ import com.atsuishio.superbwarfare.component.ModDataComponents; import com.atsuishio.superbwarfare.config.server.ExplosionConfig; import com.atsuishio.superbwarfare.config.server.VehicleConfig; import com.atsuishio.superbwarfare.entity.vehicle.base.CannonEntity; +import com.atsuishio.superbwarfare.entity.vehicle.base.LockTargetEntity; import com.atsuishio.superbwarfare.entity.vehicle.base.ThirdPersonCameraPosition; import com.atsuishio.superbwarfare.entity.vehicle.base.VehicleEntity; import com.atsuishio.superbwarfare.entity.vehicle.damage.DamageModifier; @@ -60,7 +61,7 @@ import software.bernie.geckolib.util.GeckoLibUtil; import static com.atsuishio.superbwarfare.tools.RangeTool.calculateLaunchVector; -public class Mk42Entity extends VehicleEntity implements GeoEntity, CannonEntity, Container { +public class Mk42Entity extends VehicleEntity implements GeoEntity, CannonEntity, Container, LockTargetEntity { public static final EntityDataAccessor COOL_DOWN = SynchedEntityData.defineId(Mk42Entity.class, EntityDataSerializers.INT); private final AnimatableInstanceCache cache = GeckoLibUtil.createInstanceCache(this); @@ -220,6 +221,7 @@ public class Mk42Entity extends VehicleEntity implements GeoEntity, CannonEntity return super.interact(player, hand); } + @Override public boolean setTarget(ItemStack stack) { var parameters = stack.get(ModDataComponents.FIRING_PARAMETERS); if (parameters == null) return false; @@ -258,6 +260,7 @@ public class Mk42Entity extends VehicleEntity implements GeoEntity, CannonEntity return true; } + @Override public void resetTarget() { Vec3 randomPos = VectorTool.randomPos(new Vec3(entityData.get(TARGET_POS)), entityData.get(RADIUS)); Vec3 launchVector = calculateLaunchVector(getEyePosition(), randomPos, 15, -shellGravity, entityData.get(DEPRESSED)); @@ -272,7 +275,8 @@ public class Mk42Entity extends VehicleEntity implements GeoEntity, CannonEntity } } - private void look(Vec3 pTarget) { + @Override + public void look(Vec3 pTarget) { Matrix4f transform = getVehicleFlatTransform(1); Vector4f worldPosition = transformPosition(transform, 0f, 2.16f, 0.5175f); Vec3 shootPos = new Vec3(worldPosition.x, worldPosition.y, worldPosition.z); @@ -445,7 +449,6 @@ public class Mk42Entity extends VehicleEntity implements GeoEntity, CannonEntity } } - @Override public void travel() { Entity passenger = this.getFirstPassenger(); diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Mle1934Entity.java b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Mle1934Entity.java index fa0ad0cf4..14ffdb83f 100644 --- a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Mle1934Entity.java +++ b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Mle1934Entity.java @@ -5,6 +5,7 @@ import com.atsuishio.superbwarfare.component.ModDataComponents; import com.atsuishio.superbwarfare.config.server.ExplosionConfig; import com.atsuishio.superbwarfare.config.server.VehicleConfig; import com.atsuishio.superbwarfare.entity.vehicle.base.CannonEntity; +import com.atsuishio.superbwarfare.entity.vehicle.base.LockTargetEntity; import com.atsuishio.superbwarfare.entity.vehicle.base.ThirdPersonCameraPosition; import com.atsuishio.superbwarfare.entity.vehicle.base.VehicleEntity; import com.atsuishio.superbwarfare.entity.vehicle.damage.DamageModifier; @@ -61,7 +62,7 @@ import software.bernie.geckolib.util.GeckoLibUtil; import static com.atsuishio.superbwarfare.tools.RangeTool.calculateLaunchVector; -public class Mle1934Entity extends VehicleEntity implements GeoEntity, CannonEntity, Container { +public class Mle1934Entity extends VehicleEntity implements GeoEntity, CannonEntity, Container, LockTargetEntity { public static final EntityDataAccessor COOL_DOWN = SynchedEntityData.defineId(Mle1934Entity.class, EntityDataSerializers.INT); public static final EntityDataAccessor TYPE = SynchedEntityData.defineId(Mle1934Entity.class, EntityDataSerializers.INT); @@ -228,6 +229,7 @@ public class Mle1934Entity extends VehicleEntity implements GeoEntity, CannonEnt } //这个炮仰角太低只能用低伸弹道 + @Override public boolean setTarget(ItemStack stack) { var parameters = stack.get(ModDataComponents.FIRING_PARAMETERS); if (parameters == null) return false; @@ -266,6 +268,7 @@ public class Mle1934Entity extends VehicleEntity implements GeoEntity, CannonEnt return true; } + @Override public void resetTarget() { Vec3 randomPos = VectorTool.randomPos(new Vec3(entityData.get(TARGET_POS)), entityData.get(RADIUS)); Vec3 launchVector = calculateLaunchVector(getEyePosition(), randomPos, 15, -shellGravity, entityData.get(DEPRESSED)); @@ -280,7 +283,8 @@ public class Mle1934Entity extends VehicleEntity implements GeoEntity, CannonEnt } } - private void look(Vec3 pTarget) { + @Override + public void look(Vec3 pTarget) { Matrix4f transform = getVehicleFlatTransform(1); Vector4f worldPosition = transformPosition(transform, 0, 1.4992625f, 1.52065f); Vec3 shootPos = new Vec3(worldPosition.x, worldPosition.y, worldPosition.z); @@ -291,10 +295,6 @@ public class Mle1934Entity extends VehicleEntity implements GeoEntity, CannonEnt } @Override - public double getEyeY() { - return 2.16F; - } - public void positionRider(@NotNull Entity passenger, @NotNull MoveFunction callback) { if (!this.hasPassenger(passenger)) { return; @@ -354,7 +354,6 @@ public class Mle1934Entity extends VehicleEntity implements GeoEntity, CannonEnt setYRot(getYRot() + (float) interpolatedYaw / (float) interpolationSteps); setXRot(getXRot() + (float) (serverXRot - (double) getXRot()) / (float) interpolationSteps); setRot(getYRot(), getXRot()); - } @Override @@ -449,7 +448,6 @@ public class Mle1934Entity extends VehicleEntity implements GeoEntity, CannonEnt Mth.clamp(count--, 1, 5), 0.15, 0.15, 0.15, 0.0025); } - // 右炮管 if (salvoShoot) { var entityToSpawnRight = ((CannonShellWeapon) getWeapon(0)).create(player); diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/MortarEntity.java b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/MortarEntity.java index 9fb03ee4a..0afed07b5 100644 --- a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/MortarEntity.java +++ b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/MortarEntity.java @@ -2,6 +2,7 @@ package com.atsuishio.superbwarfare.entity.vehicle; import com.atsuishio.superbwarfare.component.ModDataComponents; import com.atsuishio.superbwarfare.entity.projectile.MortarShellEntity; +import com.atsuishio.superbwarfare.entity.vehicle.base.LockTargetEntity; import com.atsuishio.superbwarfare.entity.vehicle.base.VehicleEntity; import com.atsuishio.superbwarfare.init.ModEntities; import com.atsuishio.superbwarfare.init.ModItems; @@ -47,7 +48,8 @@ import software.bernie.geckolib.util.GeckoLibUtil; import static com.atsuishio.superbwarfare.tools.RangeTool.calculateLaunchVector; -public class MortarEntity extends VehicleEntity implements GeoEntity, Container { +public class MortarEntity extends VehicleEntity implements GeoEntity, Container, LockTargetEntity { + public static final EntityDataAccessor FIRE_TIME = SynchedEntityData.defineId(MortarEntity.class, EntityDataSerializers.INT); public static final EntityDataAccessor PITCH = SynchedEntityData.defineId(MortarEntity.class, EntityDataSerializers.FLOAT); public static final EntityDataAccessor YAW = SynchedEntityData.defineId(MortarEntity.class, EntityDataSerializers.FLOAT); @@ -230,6 +232,7 @@ public class MortarEntity extends VehicleEntity implements GeoEntity, Container return InteractionResult.FAIL; } + @Override public boolean setTarget(ItemStack stack) { var parameters = stack.get(ModDataComponents.FIRING_PARAMETERS); if (parameters == null) return false; @@ -263,6 +266,7 @@ public class MortarEntity extends VehicleEntity implements GeoEntity, Container return true; } + @Override public void resetTarget() { Vec3 randomPos = VectorTool.randomPos(new Vec3(entityData.get(TARGET_POS)), entityData.get(RADIUS)); Vec3 launchVector = calculateLaunchVector(getEyePosition(), randomPos, 13, -0.11, entityData.get(DEPRESSED)); @@ -277,8 +281,8 @@ public class MortarEntity extends VehicleEntity implements GeoEntity, Container } } - - private void look(Vec3 pTarget) { + @Override + public void look(Vec3 pTarget) { Vec3 vec3 = EntityAnchorArgument.Anchor.EYES.apply(this); double d0 = (pTarget.x - vec3.x) * 0.2; double d2 = (pTarget.z - vec3.z) * 0.2; diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/base/LockTargetEntity.java b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/base/LockTargetEntity.java new file mode 100644 index 000000000..312c3a325 --- /dev/null +++ b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/base/LockTargetEntity.java @@ -0,0 +1,13 @@ +package com.atsuishio.superbwarfare.entity.vehicle.base; + +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.phys.Vec3; + +public interface LockTargetEntity { + + boolean setTarget(ItemStack stack); + + void resetTarget(); + + void look(Vec3 pTarget); +} diff --git a/src/main/java/com/atsuishio/superbwarfare/item/ArtilleryIndicator.java b/src/main/java/com/atsuishio/superbwarfare/item/ArtilleryIndicator.java index 53691fce1..1ce2a9844 100644 --- a/src/main/java/com/atsuishio/superbwarfare/item/ArtilleryIndicator.java +++ b/src/main/java/com/atsuishio/superbwarfare/item/ArtilleryIndicator.java @@ -2,6 +2,8 @@ package com.atsuishio.superbwarfare.item; import com.atsuishio.superbwarfare.client.TooltipTool; import com.atsuishio.superbwarfare.client.screens.ArtilleryIndicatorScreen; +import com.atsuishio.superbwarfare.entity.vehicle.base.LockTargetEntity; +import com.atsuishio.superbwarfare.tools.EntityFindUtil; import com.atsuishio.superbwarfare.tools.NBTTool; import net.minecraft.ChatFormatting; import net.minecraft.client.gui.screens.Screen; @@ -12,6 +14,7 @@ import net.minecraft.network.chat.Component; import net.minecraft.sounds.SoundEvents; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResultHolder; +import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.*; @@ -132,4 +135,18 @@ public class ArtilleryIndicator extends Item implements ItemScreenProvider { public @Nullable Screen getItemScreen(ItemStack stack, Player player, InteractionHand hand) { return new ArtilleryIndicatorScreen(stack, hand); } + + public void setTarget(ItemStack stack, Player player) { + ListTag tags = NBTTool.getTag(stack).getList(TAG_CANNON, Tag.TAG_COMPOUND); + for (int i = 0; i < tags.size(); i++) { + var tag = tags.getCompound(i); + Entity entity = EntityFindUtil.findEntity(player.level(), tag.getString("UUID")); + if (entity instanceof LockTargetEntity lockTargetEntity) { + if (!lockTargetEntity.setTarget(stack)) { + player.displayClientMessage(Component.translatable("tips.superbwarfare.mortar.warn", entity.getDisplayName()) + .withStyle(ChatFormatting.RED), true); + } + } + } + } } diff --git a/src/main/java/com/atsuishio/superbwarfare/network/message/send/DroneFireMessage.java b/src/main/java/com/atsuishio/superbwarfare/network/message/send/DroneFireMessage.java index b7a88c451..4df0f6cbe 100644 --- a/src/main/java/com/atsuishio/superbwarfare/network/message/send/DroneFireMessage.java +++ b/src/main/java/com/atsuishio/superbwarfare/network/message/send/DroneFireMessage.java @@ -3,11 +3,9 @@ package com.atsuishio.superbwarfare.network.message.send; import com.atsuishio.superbwarfare.Mod; import com.atsuishio.superbwarfare.component.ModDataComponents; import com.atsuishio.superbwarfare.entity.vehicle.DroneEntity; -import com.atsuishio.superbwarfare.entity.vehicle.Mk42Entity; -import com.atsuishio.superbwarfare.entity.vehicle.Mle1934Entity; -import com.atsuishio.superbwarfare.entity.vehicle.MortarEntity; import com.atsuishio.superbwarfare.init.ModItems; import com.atsuishio.superbwarfare.init.ModSounds; +import com.atsuishio.superbwarfare.item.ArtilleryIndicator; import com.atsuishio.superbwarfare.item.FiringParameters; import com.atsuishio.superbwarfare.tools.EntityFindUtil; import com.atsuishio.superbwarfare.tools.NBTTool; @@ -15,21 +13,16 @@ import com.atsuishio.superbwarfare.tools.SoundTool; import io.netty.buffer.ByteBuf; import net.minecraft.ChatFormatting; import net.minecraft.core.BlockPos; -import net.minecraft.nbt.ListTag; -import net.minecraft.nbt.Tag; import net.minecraft.network.chat.Component; import net.minecraft.network.codec.ByteBufCodecs; import net.minecraft.network.codec.StreamCodec; import net.minecraft.network.protocol.common.custom.CustomPacketPayload; -import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; import net.neoforged.neoforge.network.handling.IPayloadContext; import org.jetbrains.annotations.NotNull; import org.joml.Vector3f; -import static com.atsuishio.superbwarfare.item.ArtilleryIndicator.TAG_CANNON; - public record DroneFireMessage(Vector3f pos) implements CustomPacketPayload { public static final Type TYPE = new Type<>(Mod.loc("drone_fire")); @@ -66,28 +59,8 @@ public record DroneFireMessage(Vector3f pos) implements CustomPacketPayload { SoundTool.playLocalSound(player, ModSounds.CANNON_ZOOM_IN.get(), 2, 1); - if (offStack.is(ModItems.ARTILLERY_INDICATOR.get())) { - - ListTag tags = NBTTool.getTag(offStack).getList(TAG_CANNON, Tag.TAG_COMPOUND); - for (int i = 0; i < tags.size(); i++) { - var tag = tags.getCompound(i); - Entity entity = EntityFindUtil.findEntity(player.level(), tag.getString("UUID")); - if (entity instanceof MortarEntity mortarEntity) { - if (!mortarEntity.setTarget(offStack)) { - player.displayClientMessage(Component.translatable("tips.superbwarfare.mortar.warn").withStyle(ChatFormatting.RED), true); - } - } - if (entity instanceof Mk42Entity mk42Entity) { - if (!mk42Entity.setTarget(offStack)) { - player.displayClientMessage(Component.translatable("tips.superbwarfare.mk_42.warn").withStyle(ChatFormatting.RED), true); - } - } - if (entity instanceof Mle1934Entity mle1934Entity) { - if (!mle1934Entity.setTarget(offStack)) { - player.displayClientMessage(Component.translatable("tips.superbwarfare.mle_1934.warn").withStyle(ChatFormatting.RED), true); - } - } - } + if (offStack.getItem() instanceof ArtilleryIndicator indicator) { + indicator.setTarget(offStack, player); } } else { drone.fire = true; diff --git a/src/main/java/com/atsuishio/superbwarfare/network/message/send/FiringParametersEditMessage.java b/src/main/java/com/atsuishio/superbwarfare/network/message/send/FiringParametersEditMessage.java index 1b9785fac..37b5bfd80 100644 --- a/src/main/java/com/atsuishio/superbwarfare/network/message/send/FiringParametersEditMessage.java +++ b/src/main/java/com/atsuishio/superbwarfare/network/message/send/FiringParametersEditMessage.java @@ -2,29 +2,18 @@ package com.atsuishio.superbwarfare.network.message.send; import com.atsuishio.superbwarfare.Mod; import com.atsuishio.superbwarfare.component.ModDataComponents; -import com.atsuishio.superbwarfare.entity.vehicle.Mk42Entity; -import com.atsuishio.superbwarfare.entity.vehicle.Mle1934Entity; -import com.atsuishio.superbwarfare.entity.vehicle.MortarEntity; import com.atsuishio.superbwarfare.init.ModItems; +import com.atsuishio.superbwarfare.item.ArtilleryIndicator; import com.atsuishio.superbwarfare.item.FiringParameters; -import com.atsuishio.superbwarfare.tools.EntityFindUtil; -import com.atsuishio.superbwarfare.tools.NBTTool; import io.netty.buffer.ByteBuf; -import net.minecraft.ChatFormatting; import net.minecraft.core.BlockPos; -import net.minecraft.nbt.ListTag; -import net.minecraft.nbt.Tag; -import net.minecraft.network.chat.Component; import net.minecraft.network.codec.ByteBufCodecs; import net.minecraft.network.codec.StreamCodec; import net.minecraft.network.protocol.common.custom.CustomPacketPayload; -import net.minecraft.world.entity.Entity; import net.minecraft.world.item.ItemStack; import net.neoforged.neoforge.network.handling.IPayloadContext; import org.jetbrains.annotations.NotNull; -import static com.atsuishio.superbwarfare.item.ArtilleryIndicator.TAG_CANNON; - public record FiringParametersEditMessage( int x, int y, int z, int radius, boolean isDepressed, boolean mainHand @@ -50,25 +39,8 @@ public record FiringParametersEditMessage( var parameters = new FiringParameters.Parameters(new BlockPos(message.x, message.y, message.z), message.radius, message.isDepressed); stack.set(ModDataComponents.FIRING_PARAMETERS, parameters); - ListTag tags = NBTTool.getTag(stack).getList(TAG_CANNON, Tag.TAG_COMPOUND); - for (int i = 0; i < tags.size(); i++) { - var tag = tags.getCompound(i); - Entity entity = EntityFindUtil.findEntity(player.level(), tag.getString("UUID")); - if (entity instanceof MortarEntity mortarEntity) { - if (!mortarEntity.setTarget(stack)) { - player.displayClientMessage(Component.translatable("tips.superbwarfare.mortar.warn").withStyle(ChatFormatting.RED), true); - } - } - if (entity instanceof Mk42Entity mk42Entity) { - if (!mk42Entity.setTarget(stack)) { - player.displayClientMessage(Component.translatable("tips.superbwarfare.mk_42.warn").withStyle(ChatFormatting.RED), true); - } - } - if (entity instanceof Mle1934Entity mle1934Entity) { - if (!mle1934Entity.setTarget(stack)) { - player.displayClientMessage(Component.translatable("tips.superbwarfare.mle_1934.warn").withStyle(ChatFormatting.RED), true); - } - } + if (stack.getItem() instanceof ArtilleryIndicator indicator) { + indicator.setTarget(stack, player); } } diff --git a/src/main/java/com/atsuishio/superbwarfare/network/message/send/SetFiringParametersMessage.java b/src/main/java/com/atsuishio/superbwarfare/network/message/send/SetFiringParametersMessage.java index 65d3f56b1..a23bbc659 100644 --- a/src/main/java/com/atsuishio/superbwarfare/network/message/send/SetFiringParametersMessage.java +++ b/src/main/java/com/atsuishio/superbwarfare/network/message/send/SetFiringParametersMessage.java @@ -2,21 +2,15 @@ package com.atsuishio.superbwarfare.network.message.send; import com.atsuishio.superbwarfare.Mod; import com.atsuishio.superbwarfare.component.ModDataComponents; -import com.atsuishio.superbwarfare.entity.vehicle.Mk42Entity; -import com.atsuishio.superbwarfare.entity.vehicle.Mle1934Entity; -import com.atsuishio.superbwarfare.entity.vehicle.MortarEntity; import com.atsuishio.superbwarfare.init.ModItems; import com.atsuishio.superbwarfare.init.ModSounds; +import com.atsuishio.superbwarfare.item.ArtilleryIndicator; import com.atsuishio.superbwarfare.item.FiringParameters; -import com.atsuishio.superbwarfare.tools.EntityFindUtil; -import com.atsuishio.superbwarfare.tools.NBTTool; import com.atsuishio.superbwarfare.tools.SoundTool; import com.atsuishio.superbwarfare.tools.TraceTool; import io.netty.buffer.ByteBuf; import net.minecraft.ChatFormatting; import net.minecraft.core.BlockPos; -import net.minecraft.nbt.ListTag; -import net.minecraft.nbt.Tag; import net.minecraft.network.chat.Component; import net.minecraft.network.codec.StreamCodec; import net.minecraft.network.protocol.common.custom.CustomPacketPayload; @@ -31,8 +25,6 @@ import org.jetbrains.annotations.NotNull; import java.util.Objects; -import static com.atsuishio.superbwarfare.item.ArtilleryIndicator.TAG_CANNON; - public enum SetFiringParametersMessage implements CustomPacketPayload { INSTANCE; public static final Type TYPE = new Type<>(Mod.loc("set_firing_parameters")); @@ -74,7 +66,7 @@ public enum SetFiringParametersMessage implements CustomPacketPayload { + "]")), true); } - if (mainStack.is(ModItems.ARTILLERY_INDICATOR.get())) { + if (mainStack.getItem() instanceof ArtilleryIndicator indicator) { BlockPos pos; if (lookAtEntity) { pos = lookingEntity.blockPosition(); @@ -91,26 +83,7 @@ public enum SetFiringParametersMessage implements CustomPacketPayload { + "]")), true); SoundTool.playLocalSound(player, ModSounds.CANNON_ZOOM_IN.get(), 2, 1); - ListTag tags = NBTTool.getTag(mainStack).getList(TAG_CANNON, Tag.TAG_COMPOUND); - for (int i = 0; i < tags.size(); i++) { - var tag = tags.getCompound(i); - Entity entity = EntityFindUtil.findEntity(player.level(), tag.getString("UUID")); - if (entity instanceof MortarEntity mortarEntity) { - if (!mortarEntity.setTarget(mainStack)) { - player.displayClientMessage(Component.translatable("tips.superbwarfare.mortar.warn").withStyle(ChatFormatting.RED), true); - } - } - if (entity instanceof Mk42Entity mk42Entity) { - if (!mk42Entity.setTarget(mainStack)) { - player.displayClientMessage(Component.translatable("tips.superbwarfare.mk_42.warn").withStyle(ChatFormatting.RED), true); - } - } - if (entity instanceof Mle1934Entity mle1934Entity) { - if (!mle1934Entity.setTarget(mainStack)) { - player.displayClientMessage(Component.translatable("tips.superbwarfare.mle_1934.warn").withStyle(ChatFormatting.RED), true); - } - } - } + indicator.setTarget(mainStack, player); } } diff --git a/src/main/resources/assets/superbwarfare/lang/en_us.json b/src/main/resources/assets/superbwarfare/lang/en_us.json index 395457fd1..cb951f2f0 100644 --- a/src/main/resources/assets/superbwarfare/lang/en_us.json +++ b/src/main/resources/assets/superbwarfare/lang/en_us.json @@ -584,9 +584,7 @@ "tips.superbwarfare.mortar.target_pos.radius": "Hit Radius: %1$s", "tips.superbwarfare.mortar.target_pos.depressed_trajectory": "Depressed Trajectory", "tips.superbwarfare.mortar.target_pos.lofted_trajectory": "Lofted Trajectory", - "tips.superbwarfare.mortar.warn": "This mortar cannot aim at this position", - "tips.superbwarfare.mk_42.warn": "MK_42 cannot aim at this position", - "tips.superbwarfare.mle_1934.warn": "Mle_1934 cannot aim at this position", + "tips.superbwarfare.mortar.warn": "%1$s cannot aim at this position", "container.superbwarfare.reforging_table": "Gun Reforge Table", "container.superbwarfare.charging_station": "Charging Station", diff --git a/src/main/resources/assets/superbwarfare/lang/zh_cn.json b/src/main/resources/assets/superbwarfare/lang/zh_cn.json index 612f47d55..da7064df0 100644 --- a/src/main/resources/assets/superbwarfare/lang/zh_cn.json +++ b/src/main/resources/assets/superbwarfare/lang/zh_cn.json @@ -311,6 +311,7 @@ "des.superbwarfare.vehicle_deployer.fail": "请使用集装箱点击!", "block.superbwarfare.aircraft_catapult": "飞行器弹射装置", "block.superbwarfare.superb_item_interface": "卓越物品接口", + "des.superbwarfare.superb_item_interface": "可快速给指向实体传输物品的全方向漏斗", "item.superbwarfare.high_energy_explosives": "高能炸药", "item.superbwarfare.grain": "推进药柱", @@ -583,16 +584,13 @@ "tips.superbwarfare.mortar.target_pos.radius": "打击半径:%1$s", "tips.superbwarfare.mortar.target_pos.depressed_trajectory": "低伸弹道", "tips.superbwarfare.mortar.target_pos.lofted_trajectory": "传统弹道", - "tips.superbwarfare.mortar.warn": "迫击炮无法瞄准该位置", - "tips.superbwarfare.mk_42.warn": "MK-42无法瞄准该位置", - "tips.superbwarfare.mle_1934.warn": "MLE-1934无法瞄准该位置", + "tips.superbwarfare.mortar.warn": "%1$s无法瞄准该位置", "container.superbwarfare.reforging_table": "枪械重铸台", "container.superbwarfare.charging_station": "充电站", "container.superbwarfare.charging_station.show_range": "显示范围", "container.superbwarfare.charging_station.hide_range": "隐藏范围", "container.superbwarfare.superb_item_interface": "卓越物品接口", - "des.superbwarfare.superb_item_interface": "可快速给指向实体传输物品的全方向漏斗", "config.superbwarfare.title": "卓越前线", "config.superbwarfare.client.reload": "换弹配置",