添加穿甲比例显示,添加翻译项,削弱整体穿甲比例

This commit is contained in:
Atsuihsio 2024-08-04 16:39:14 +08:00
parent bc64d6ed78
commit eb2a56d325
28 changed files with 120 additions and 96 deletions

View file

@ -7,6 +7,7 @@ import net.mcreator.superbwarfare.init.ModItems;
import net.mcreator.superbwarfare.tools.TraceTool; import net.mcreator.superbwarfare.tools.TraceTool;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.GameRenderer; import net.minecraft.client.renderer.GameRenderer;
import net.minecraft.network.chat.Component;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.player.Player; import net.minecraft.world.entity.player.Player;
@ -68,22 +69,51 @@ public class DroneUIOverlay {
if (distance > MAX_DISTANCE - 48) { if (distance > MAX_DISTANCE - 48) {
event.getGuiGraphics().drawString(Minecraft.getInstance().font, "WARNING", w / 2 + -18, h / 2 + -47, -65536, false); event.getGuiGraphics().drawString(Minecraft.getInstance().font, Component.translatable("des.superbwarfare.drone.warning")
, w / 2 + -18, h / 2 + -47, -65536, false);
color = -65536; color = -65536;
} }
event.getGuiGraphics().drawString(Minecraft.getInstance().font, "Distance:" + new DecimalFormat("##.#").format(distance) + "M", w / 2 + 10, h / 2 + 33, color, false); event.getGuiGraphics().drawString(Minecraft.getInstance().font, Component.translatable("des.superbwarfare.drone.distance")
event.getGuiGraphics().drawString(Minecraft.getInstance().font, "Health:" + new DecimalFormat("##.#").format(entity.getHealth()) + "/" + new DecimalFormat("##").format(entity.getMaxHealth()), w / 2 - 77, h / 2 + 33, -1, false); .append(Component.literal(new DecimalFormat("##.#").format(distance) + "M"))
, w / 2 + 10, h / 2 + 33, color, false);
event.getGuiGraphics().drawString(Minecraft.getInstance().font, Component.translatable("des.superbwarfare.drone.health")
.append(Component.literal(new DecimalFormat("##.#").format(entity.getHealth()) + "/" + new DecimalFormat("##.#").format(entity.getMaxHealth())))
, w / 2 - 77, h / 2 + 33, -1, false);
if (!entity.getEntityData().get(KAMIKAZE)) { if (!entity.getEntityData().get(KAMIKAZE)) {
event.getGuiGraphics().drawString(Minecraft.getInstance().font, "AMMO:" + new DecimalFormat("##.#").format(entity.getEntityData().get(AMMO)) + " / 6", w / 2 + 12, h / 2 + -37, -1, false);
event.getGuiGraphics().drawString(Minecraft.getInstance().font, Component.translatable("des.superbwarfare.drone.ammo")
.append(Component.literal(new DecimalFormat("##.#").format(entity.getEntityData().get(AMMO)) + " / 6"))
, w / 2 + 12, h / 2 + -37, -1, false);
} else { } else {
event.getGuiGraphics().drawString(Minecraft.getInstance().font, "KAMIKAZE", w / 2 + 12, h / 2 + -37, -65536, false);
event.getGuiGraphics().drawString(Minecraft.getInstance().font, Component.translatable("des.superbwarfare.drone.kamikaze")
, w / 2 + 12, h / 2 + -37, -65536, false);
} }
if (lookAtEntity) { if (lookAtEntity) {
event.getGuiGraphics().drawString(Minecraft.getInstance().font, "Range" + new DecimalFormat("##.#").format(entity_range) + "M " + lookingEntity.getDisplayName().getString(), w / 2 + 12, h / 2 - 28, color, false);
event.getGuiGraphics().drawString(Minecraft.getInstance().font, Component.translatable("des.superbwarfare.drone.range")
.append(Component.literal(new DecimalFormat("##.#").format(entity_range) + "M " + lookingEntity.getDisplayName().getString()))
, w / 2 + 12, h / 2 - 28, color, false);
} else { } else {
event.getGuiGraphics().drawString(Minecraft.getInstance().font, block_range > 512 ? "Range---M" : "Range" + new DecimalFormat("##.#").format(block_range) + "M", w / 2 + 12, h / 2 - 28, color, false); if (block_range > 512) {
event.getGuiGraphics().drawString(Minecraft.getInstance().font, Component.translatable("des.superbwarfare.drone.range")
.append(Component.literal("---M"))
, w / 2 + 12, h / 2 - 28, color, false);
} else {
event.getGuiGraphics().drawString(Minecraft.getInstance().font, Component.translatable("des.superbwarfare.drone.range")
.append(Component.literal(new DecimalFormat("##.#").format(block_range) + "M"))
, w / 2 + 12, h / 2 - 28, color, false);
}
} }
} }
} }

View file

@ -356,6 +356,13 @@ public class DroneEntity extends PathfinderMob implements GeoEntity {
ItemHandlerHelper.giveItemToPlayer(player, new ItemStack(ModItems.MORTAR_SHELLS.get())); ItemHandlerHelper.giveItemToPlayer(player, new ItemStack(ModItems.MORTAR_SHELLS.get()));
} }
player.getInventory().items.stream().filter(stack_ -> stack_.getItem() == ModItems.MONITOR.get())
.forEach(stack_ -> {
if (stack_.getOrCreateTag().getString(Monitor.LINKED_DRONE).equals(this.getStringUUID())) {
Monitor.disLink(stack_);
}
});
if (!this.level().isClientSide()) this.discard(); if (!this.level().isClientSide()) this.discard();
} else if (stack.getItem() == ModItems.RGO_GRENADE.get() && !this.entityData.get(KAMIKAZE)) { } else if (stack.getItem() == ModItems.RGO_GRENADE.get() && !this.entityData.get(KAMIKAZE)) {
if (this.entityData.get(AMMO) < 6) { if (this.entityData.get(AMMO) < 6) {

View file

@ -1,8 +1,6 @@
package net.mcreator.superbwarfare.entity; package net.mcreator.superbwarfare.entity;
import net.mcreator.superbwarfare.ModUtils; import net.mcreator.superbwarfare.ModUtils;
import net.mcreator.superbwarfare.headshot.BoundingBoxManager;
import net.mcreator.superbwarfare.headshot.IHeadshotBox;
import net.mcreator.superbwarfare.init.ModDamageTypes; import net.mcreator.superbwarfare.init.ModDamageTypes;
import net.mcreator.superbwarfare.init.ModEntities; import net.mcreator.superbwarfare.init.ModEntities;
import net.mcreator.superbwarfare.init.ModItems; import net.mcreator.superbwarfare.init.ModItems;
@ -27,7 +25,6 @@ import net.minecraft.world.entity.projectile.ThrowableItemProjectile;
import net.minecraft.world.item.Item; import net.minecraft.world.item.Item;
import net.minecraft.world.level.Explosion; import net.minecraft.world.level.Explosion;
import net.minecraft.world.level.Level; import net.minecraft.world.level.Level;
import net.minecraft.world.phys.AABB;
import net.minecraft.world.phys.BlockHitResult; import net.minecraft.world.phys.BlockHitResult;
import net.minecraft.world.phys.EntityHitResult; import net.minecraft.world.phys.EntityHitResult;
import net.minecraft.world.phys.Vec3; import net.minecraft.world.phys.Vec3;
@ -43,8 +40,6 @@ import software.bernie.geckolib.core.animation.RawAnimation;
import software.bernie.geckolib.core.object.PlayState; import software.bernie.geckolib.core.object.PlayState;
import software.bernie.geckolib.util.GeckoLibUtil; import software.bernie.geckolib.util.GeckoLibUtil;
import java.util.Optional;
public class RpgRocketEntity extends ThrowableItemProjectile implements GeoEntity, AnimatedEntity{ public class RpgRocketEntity extends ThrowableItemProjectile implements GeoEntity, AnimatedEntity{
public static final EntityDataAccessor<String> ANIMATION = SynchedEntityData.defineId(CannonShellEntity.class, EntityDataSerializers.STRING); public static final EntityDataAccessor<String> ANIMATION = SynchedEntityData.defineId(CannonShellEntity.class, EntityDataSerializers.STRING);
@ -99,51 +94,10 @@ public class RpgRocketEntity extends ThrowableItemProjectile implements GeoEntit
entity.invulnerableTime = 0; entity.invulnerableTime = 0;
} }
AABB boundingBox = entity.getBoundingBox(); if (entity instanceof Monster monster) {
Vec3 startVec = this.position(); monster.hurt(ModDamageTypes.causeCannonFireDamage(this.level().registryAccess(), this, this.getOwner()), this.damage * damageMultiplier);
Vec3 endVec = startVec.add(this.getDeltaMovement());
Vec3 hitPos = boundingBox.clip(startVec, endVec).orElse(null);
/* Check for headshot */
boolean headshot = false;
if (entity instanceof LivingEntity) {
IHeadshotBox<LivingEntity> headshotBox = (IHeadshotBox<LivingEntity>) BoundingBoxManager.getHeadshotBoxes(entity.getType());
if (headshotBox != null) {
AABB box = headshotBox.getHeadshotBox((LivingEntity) entity);
if (box != null) {
box = box.move(boundingBox.getCenter().x, boundingBox.minY, boundingBox.getCenter().z);
Optional<Vec3> headshotHitPos = box.clip(startVec, endVec);
if (headshotHitPos.isEmpty()) {
box = box.inflate(0.2, 0.2, 0.2);
headshotHitPos = box.clip(startVec, endVec);
}
if (headshotHitPos.isPresent() && (hitPos == null || headshotHitPos.get().distanceTo(hitPos) < 0.55)) {
headshot = true;
}
if (headshot) {
if (this.getOwner() instanceof LivingEntity living) {
if (!living.level().isClientSide() && living instanceof ServerPlayer player) {
living.playSound(ModSounds.HEADSHOT.get(), 1, 1);
ModUtils.PACKET_HANDLER.send(PacketDistributor.PLAYER.with(() -> player), new ClientIndicatorMessage(1, 5));
}
}
}
}
}
}
if (headshot) {
if (entity instanceof Monster monster) {
monster.hurt(ModDamageTypes.causeGunFireHeadshotDamage(this.level().registryAccess(), this, this.getOwner()), this.damage * 5f * damageMultiplier);
} else {
entity.hurt(ModDamageTypes.causeGunFireHeadshotDamage(this.level().registryAccess(), this, this.getOwner()), this.damage * 5f);
}
} else { } else {
if (entity instanceof Monster monster) { entity.hurt(ModDamageTypes.causeCannonFireDamage(this.level().registryAccess(), this, this.getOwner()), this.damage);
monster.hurt(ModDamageTypes.causeGunFireHeadshotDamage(this.level().registryAccess(), this, this.getOwner()), this.damage * damageMultiplier);
} else {
entity.hurt(ModDamageTypes.causeGunFireHeadshotDamage(this.level().registryAccess(), this, this.getOwner()), this.damage);
}
} }
if (this.tickCount > 1) { if (this.tickCount > 1) {

View file

@ -344,7 +344,7 @@ public class GunEventHandler {
if (!player.level().isClientSide()) { if (!player.level().isClientSide()) {
float headshot = (float) heldItem.getOrCreateTag().getDouble("headshot"); float headshot = (float) heldItem.getOrCreateTag().getDouble("headshot");
int monsterMultiple = EnchantmentHelper.getTagEnchantmentLevel(ModEnchantments.MONSTER_HUNTER.get(), heldItem); int monsterMultiple = EnchantmentHelper.getTagEnchantmentLevel(ModEnchantments.MONSTER_HUNTER.get(), heldItem);
float damage = (float) (heldItem.getOrCreateTag().getDouble("damage") + heldItem.getOrCreateTag().getDouble("add_damage")) * (float) heldItem.getOrCreateTag().getDouble("damageadd"); float damage = (float) (heldItem.getOrCreateTag().getDouble("damage") + heldItem.getOrCreateTag().getDouble("sentinelChargeDamage")) * (float) heldItem.getOrCreateTag().getDouble("levelDamageMultiple");
float bypassArmorRate = (float) heldItem.getOrCreateTag().getDouble("BypassesArmor"); float bypassArmorRate = (float) heldItem.getOrCreateTag().getDouble("BypassesArmor");
boolean zoom = player.getCapability(ModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new ModVariables.PlayerVariables()).zoom; boolean zoom = player.getCapability(ModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new ModVariables.PlayerVariables()).zoom;

View file

@ -232,9 +232,9 @@ public class SentinelItem extends GunItem implements GeoItem, AnimatedItem {
if (energyStored > 0) { if (energyStored > 0) {
energy.extractEnergy(5, false); energy.extractEnergy(5, false);
tag.putDouble("add_damage", 0.2857142857142857 * tag.getDouble("damage") * tag.getDouble("damageadd")); tag.putDouble("sentinelChargeDamage", 0.2857142857142857 * tag.getDouble("damage") * tag.getDouble("levelDamageMultiple"));
} else { } else {
tag.putDouble("add_damage", 0); tag.putDouble("sentinelChargeDamage", 0);
} }
} }
); );

View file

@ -228,7 +228,7 @@ public class FireMessage {
projectile.setPos(player.getX() - 0.1 * player.getLookAngle().x, player.getEyeY() - 0.1 - 0.1 * player.getLookAngle().y, player.getZ() + -0.1 * player.getLookAngle().z); projectile.setPos(player.getX() - 0.1 * player.getLookAngle().x, player.getEyeY() - 0.1 - 0.1 * player.getLookAngle().y, player.getZ() + -0.1 * player.getLookAngle().z);
damage = 0.008333333 * tag.getDouble("damage") * tag.getDouble("speed") * tag.getDouble("damageadd"); damage = 0.008333333 * tag.getDouble("damage") * tag.getDouble("speed") * tag.getDouble("levelDamageMultiple");
projectile.shoot(player.getLookAngle().x, player.getLookAngle().y, player.getLookAngle().z, velocity, 2.5f); projectile.shoot(player.getLookAngle().x, player.getLookAngle().y, player.getLookAngle().z, velocity, 2.5f);
projectile.damage((float) damage); projectile.damage((float) damage);
player.level().addFreshEntity(projectile); player.level().addFreshEntity(projectile);
@ -281,7 +281,7 @@ public class FireMessage {
Level level = player.level(); Level level = player.level();
if (!level.isClientSide()) { if (!level.isClientSide()) {
int monsterMultiple = EnchantmentHelper.getTagEnchantmentLevel(ModEnchantments.MONSTER_HUNTER.get(), stack); int monsterMultiple = EnchantmentHelper.getTagEnchantmentLevel(ModEnchantments.MONSTER_HUNTER.get(), stack);
GunGrenadeEntity gunGrenadeEntity = new GunGrenadeEntity(player, level, (float) stack.getOrCreateTag().getDouble("damage") * (float) stack.getOrCreateTag().getDouble("damageadd"), monsterMultiple); GunGrenadeEntity gunGrenadeEntity = new GunGrenadeEntity(player, level, (float) stack.getOrCreateTag().getDouble("damage") * (float) stack.getOrCreateTag().getDouble("levelDamageMultiple"), monsterMultiple);
gunGrenadeEntity.setPos(player.getX(), player.getEyeY() - 0.1, player.getZ()); gunGrenadeEntity.setPos(player.getX(), player.getEyeY() - 0.1, player.getZ());
gunGrenadeEntity.shoot(player.getLookAngle().x, player.getLookAngle().y, player.getLookAngle().z, (float) stack.getOrCreateTag().getDouble("velocity"), gunGrenadeEntity.shoot(player.getLookAngle().x, player.getLookAngle().y, player.getLookAngle().z, (float) stack.getOrCreateTag().getDouble("velocity"),
@ -323,7 +323,7 @@ public class FireMessage {
if (!level.isClientSide()) { if (!level.isClientSide()) {
int monsterMultiple = EnchantmentHelper.getTagEnchantmentLevel(ModEnchantments.MONSTER_HUNTER.get(), mainHandItem); int monsterMultiple = EnchantmentHelper.getTagEnchantmentLevel(ModEnchantments.MONSTER_HUNTER.get(), mainHandItem);
RpgRocketEntity rocketEntity = new RpgRocketEntity(player, level, (float) tag.getDouble("damage") * (float) tag.getDouble("damageadd"), monsterMultiple); RpgRocketEntity rocketEntity = new RpgRocketEntity(player, level, (float) tag.getDouble("damage") * (float) tag.getDouble("levelDamageMultiple"), monsterMultiple);
rocketEntity.setPos(player.getX(), player.getEyeY() - 0.1, player.getZ()); rocketEntity.setPos(player.getX(), player.getEyeY() - 0.1, player.getZ());
rocketEntity.shoot(player.getLookAngle().x, player.getLookAngle().y, player.getLookAngle().z, (float) tag.getDouble("velocity"), rocketEntity.shoot(player.getLookAngle().x, player.getLookAngle().y, player.getLookAngle().z, (float) tag.getDouble("velocity"),
(float) (mainHandItem.getOrCreateTag().getDouble("dev") * ZoomMessage.zoom_spread)); (float) (mainHandItem.getOrCreateTag().getDouble("dev") * ZoomMessage.zoom_spread));

View file

@ -67,12 +67,12 @@ public class GunsTool {
public static void pvpModeCheck(ItemStack stack, Level level) { public static void pvpModeCheck(ItemStack stack, Level level) {
if (!ModVariables.MapVariables.get(level).pvpMode) { if (!ModVariables.MapVariables.get(level).pvpMode) {
if (stack.getOrCreateTag().getInt("level") >= 10) { if (stack.getOrCreateTag().getInt("level") >= 10) {
stack.getOrCreateTag().putDouble("damageadd", 1 + 0.05 * (stack.getOrCreateTag().getInt("level") - 10)); stack.getOrCreateTag().putDouble("levelDamageMultiple", 1 + 0.05 * (stack.getOrCreateTag().getInt("level") - 10));
} else { } else {
stack.getOrCreateTag().putDouble("damageadd", 1); stack.getOrCreateTag().putDouble("levelDamageMultiple", 1);
} }
} else { } else {
stack.getOrCreateTag().putDouble("damageadd", 1); stack.getOrCreateTag().putDouble("levelDamageMultiple", 1);
} }
} }

View file

@ -24,29 +24,29 @@ public class TooltipTool {
public static void addGunTips(List<Component> tooltip, ItemStack stack) { public static void addGunTips(List<Component> tooltip, ItemStack stack) {
tooltip.add(Component.literal("")); tooltip.add(Component.literal(""));
double damage = (ItemNBTTool.getDouble(stack, "damage", 0) + double damage = ItemNBTTool.getDouble(stack, "damage", 0)
ItemNBTTool.getDouble(stack, "add_damage", 0)) * ItemNBTTool.getDouble(stack, "levelDamageMultiple", 1);
* ItemNBTTool.getDouble(stack, "damageadd", 1);
tooltip.add(Component.translatable("des.superbwarfare.tips.damage").withStyle(ChatFormatting.GRAY) tooltip.add(Component.translatable("des.superbwarfare.tips.damage").withStyle(ChatFormatting.GRAY)
.append(Component.literal("").withStyle(ChatFormatting.RESET)) .append(Component.literal("").withStyle(ChatFormatting.RESET))
.append(Component.literal(new DecimalFormat("##.#").format(damage)).withStyle(ChatFormatting.GREEN))); .append(Component.literal(new DecimalFormat("##.#").format(damage)).withStyle(ChatFormatting.GREEN)));
addLevelTips(tooltip, stack); addLevelTips(tooltip, stack);
addBypassTips(tooltip, stack);
} }
public static void addShotgunTips(List<Component> tooltip, ItemStack stack, int count) { public static void addShotgunTips(List<Component> tooltip, ItemStack stack, int count) {
tooltip.add(Component.literal("")); tooltip.add(Component.literal(""));
double damage = (ItemNBTTool.getDouble(stack, "damage", 0) + double damage = ItemNBTTool.getDouble(stack, "damage", 0)
ItemNBTTool.getDouble(stack, "add_damage", 0)) * ItemNBTTool.getDouble(stack, "levelDamageMultiple", 1);
* ItemNBTTool.getDouble(stack, "damageadd", 1);
tooltip.add(Component.translatable("des.superbwarfare.tips.damage").withStyle(ChatFormatting.GRAY) tooltip.add(Component.translatable("des.superbwarfare.tips.damage").withStyle(ChatFormatting.GRAY)
.append(Component.literal("").withStyle(ChatFormatting.RESET)) .append(Component.literal("").withStyle(ChatFormatting.RESET))
.append(Component.literal(new DecimalFormat("##.#").format(damage) + " * " + count).withStyle(ChatFormatting.GREEN))); .append(Component.literal(new DecimalFormat("##.#").format(damage) + " * " + count).withStyle(ChatFormatting.GREEN)));
addLevelTips(tooltip, stack); addLevelTips(tooltip, stack);
addBypassTips(tooltip, stack);
} }
private static void addLevelTips(List<Component> tooltip, ItemStack stack) { private static void addLevelTips(List<Component> tooltip, ItemStack stack) {
@ -72,10 +72,19 @@ public class TooltipTool {
} }
private static void addBypassTips(List<Component> tooltip, ItemStack stack) {
double byPassRate = ItemNBTTool.getDouble(stack, "BypassesArmor", 0);
tooltip.add(Component.translatable("des.superbwarfare.tips.bypass").withStyle(ChatFormatting.GRAY)
.append(Component.literal("").withStyle(ChatFormatting.RESET))
.append(Component.literal(new DecimalFormat("##.##").format(byPassRate * 100) + "%").withStyle(ChatFormatting.GOLD).withStyle(ChatFormatting.BOLD)));
}
public static void addBocekTips(List<Component> tooltip, ItemStack stack) { public static void addBocekTips(List<Component> tooltip, ItemStack stack) {
tooltip.add(Component.literal("")); tooltip.add(Component.literal(""));
double total = ItemNBTTool.getDouble(stack, "damage", 0) * ItemNBTTool.getDouble(stack, "damageadd", 1); double total = ItemNBTTool.getDouble(stack, "damage", 0) * ItemNBTTool.getDouble(stack, "levelDamageMultiple", 1);
tooltip.add(Component.translatable("des.superbwarfare.tips.damage").withStyle(ChatFormatting.GRAY) tooltip.add(Component.translatable("des.superbwarfare.tips.damage").withStyle(ChatFormatting.GRAY)
.append(Component.literal("").withStyle(ChatFormatting.RESET)) .append(Component.literal("").withStyle(ChatFormatting.RESET))
@ -84,6 +93,7 @@ public class TooltipTool {
.append(Component.literal(new DecimalFormat("##.#").format(total)).withStyle(ChatFormatting.GREEN))); .append(Component.literal(new DecimalFormat("##.#").format(total)).withStyle(ChatFormatting.GREEN)));
addLevelTips(tooltip, stack); addLevelTips(tooltip, stack);
addBypassTips(tooltip, stack);
} }
public static void addSentinelTips(List<Component> tooltip, ItemStack stack) { public static void addSentinelTips(List<Component> tooltip, ItemStack stack) {
@ -97,14 +107,14 @@ public class TooltipTool {
if (flag.get()) { if (flag.get()) {
double damage = (ItemNBTTool.getDouble(stack, "damage", 0) + double damage = (ItemNBTTool.getDouble(stack, "damage", 0) +
ItemNBTTool.getDouble(stack, "add_damage", 0)) ItemNBTTool.getDouble(stack, "sentinelChargeDamage", 0))
* ItemNBTTool.getDouble(stack, "damageadd", 1); * ItemNBTTool.getDouble(stack, "levelDamageMultiple", 1);
tooltip.add(Component.translatable("des.superbwarfare.tips.damage").withStyle(ChatFormatting.GRAY) tooltip.add(Component.translatable("des.superbwarfare.tips.damage").withStyle(ChatFormatting.GRAY)
.append(Component.literal("").withStyle(ChatFormatting.RESET)) .append(Component.literal("").withStyle(ChatFormatting.RESET))
.append(Component.literal(new DecimalFormat("##.#").format(damage)).withStyle(ChatFormatting.AQUA).withStyle(ChatFormatting.BOLD))); .append(Component.literal(new DecimalFormat("##.#").format(damage)).withStyle(ChatFormatting.AQUA).withStyle(ChatFormatting.BOLD)));
} else { } else {
double damage = ItemNBTTool.getDouble(stack, "damage", 0) * ItemNBTTool.getDouble(stack, "damageadd", 1); double damage = ItemNBTTool.getDouble(stack, "damage", 0) * ItemNBTTool.getDouble(stack, "levelDamageMultiple", 1);
tooltip.add(Component.translatable("des.superbwarfare.tips.damage").withStyle(ChatFormatting.GRAY) tooltip.add(Component.translatable("des.superbwarfare.tips.damage").withStyle(ChatFormatting.GRAY)
.append(Component.literal("").withStyle(ChatFormatting.RESET)) .append(Component.literal("").withStyle(ChatFormatting.RESET))
@ -112,6 +122,7 @@ public class TooltipTool {
} }
addLevelTips(tooltip, stack); addLevelTips(tooltip, stack);
addBypassTips(tooltip, stack);
stack.getCapability(ForgeCapabilities.ENERGY).ifPresent( stack.getCapability(ForgeCapabilities.ENERGY).ifPresent(
e -> tooltip.add(Component.literal(e.getEnergyStored() + " / " + e.getMaxEnergyStored() + " FE").withStyle(ChatFormatting.GRAY)) e -> tooltip.add(Component.literal(e.getEnergyStored() + " / " + e.getMaxEnergyStored() + " FE").withStyle(ChatFormatting.GRAY))
@ -129,6 +140,8 @@ public class TooltipTool {
if (entity == null) return; if (entity == null) return;
tooltip.add(Component.literal("Distance:" + new DecimalFormat("##.#").format(player.distanceTo(entity)) + "M").withStyle(ChatFormatting.GRAY)); tooltip.add(Component.translatable("des.superbwarfare.tips.distance").withStyle(ChatFormatting.GRAY)
.append(Component.literal("").withStyle(ChatFormatting.RESET))
.append(Component.literal("Distance:" + new DecimalFormat("##.#").format(player.distanceTo(entity)) + "M").withStyle(ChatFormatting.GRAY)));
} }
} }

View file

@ -41,6 +41,8 @@
"des.superbwarfare.tips.damage": "Damage: ", "des.superbwarfare.tips.damage": "Damage: ",
"des.superbwarfare.tips.level": "Level: ", "des.superbwarfare.tips.level": "Level: ",
"des.superbwarfare.tips.bypass": "Armor Piercing: ",
"des.superbwarfare.tips.distance": "Drone Distance: ",
"item.superbwarfare.vector_blueprint": "VECTOR Blueprint", "item.superbwarfare.vector_blueprint": "VECTOR Blueprint",
"item.superbwarfare.m_60_blueprint": "M60 Blueprint", "item.superbwarfare.m_60_blueprint": "M60 Blueprint",
@ -272,5 +274,12 @@
"des.superbwarfare.monitor.linked": "Connect", "des.superbwarfare.monitor.linked": "Connect",
"des.superbwarfare.monitor.monitor_already_linked": "This monitor has been connected", "des.superbwarfare.monitor.monitor_already_linked": "This monitor has been connected",
"des.superbwarfare.monitor.already_linked": "This device has been connected", "des.superbwarfare.monitor.already_linked": "This device has been connected",
"des.superbwarfare.monitor.unlinked": "Disconnect" "des.superbwarfare.monitor.unlinked": "Disconnect",
"des.superbwarfare.drone.distance": "DISTANCE:",
"des.superbwarfare.drone.health": "HEALTH:",
"des.superbwarfare.drone.ammo": "AMMO:",
"des.superbwarfare.drone.range": "RANGE:",
"des.superbwarfare.drone.kamikaze": "KAMIKAZE",
"des.superbwarfare.drone.warning": "WARNING!"
} }

View file

@ -41,6 +41,8 @@
"des.superbwarfare.tips.damage": "伤害: ", "des.superbwarfare.tips.damage": "伤害: ",
"des.superbwarfare.tips.level": "等级: ", "des.superbwarfare.tips.level": "等级: ",
"des.superbwarfare.tips.bypass": "护甲穿透: ",
"des.superbwarfare.tips.distance": "无人机距离你: ",
"item.superbwarfare.vector_blueprint": "短剑冲锋枪蓝图", "item.superbwarfare.vector_blueprint": "短剑冲锋枪蓝图",
"item.superbwarfare.m_60_blueprint": "M60通用机枪蓝图", "item.superbwarfare.m_60_blueprint": "M60通用机枪蓝图",
@ -272,5 +274,12 @@
"des.superbwarfare.monitor.linked": "连接成功!", "des.superbwarfare.monitor.linked": "连接成功!",
"des.superbwarfare.monitor.monitor_already_linked": "这个遥控器已连接到一个设备!", "des.superbwarfare.monitor.monitor_already_linked": "这个遥控器已连接到一个设备!",
"des.superbwarfare.monitor.already_linked": "这个设备已被连接!", "des.superbwarfare.monitor.already_linked": "这个设备已被连接!",
"des.superbwarfare.monitor.unlinked": "断开连接!" "des.superbwarfare.monitor.unlinked": "断开连接!",
"des.superbwarfare.drone.distance": "飞手距离:",
"des.superbwarfare.drone.health": "耐久值:",
"des.superbwarfare.drone.ammo": "弹药:",
"des.superbwarfare.drone.range": "测距:",
"des.superbwarfare.drone.kamikaze": "自爆模式",
"des.superbwarfare.drone.warning": "警告!"
} }

View file

@ -5,6 +5,7 @@
"superbwarfare:gunfire_headshot_absolute", "superbwarfare:gunfire_headshot_absolute",
"superbwarfare:arrow_in_knee_absolute", "superbwarfare:arrow_in_knee_absolute",
"superbwarfare:arrow_in_brain_absolute", "superbwarfare:arrow_in_brain_absolute",
"superbwarfare:shock" "superbwarfare:shock",
"superbwarfare:cannon_fire"
] ]
} }

View file

@ -18,5 +18,5 @@
"burst_size": 1, "burst_size": 1,
"normal_reload_time": 64, "normal_reload_time": 64,
"empty_reload_time": 85, "empty_reload_time": 85,
"BypassesArmor": 0.1 "BypassesArmor": 0.05
} }

View file

@ -18,5 +18,5 @@
"burst_size": 1, "burst_size": 1,
"normal_reload_time": 66, "normal_reload_time": 66,
"empty_reload_time": 83, "empty_reload_time": 83,
"BypassesArmor": 0 "BypassesArmor": 0.01
} }

View file

@ -18,5 +18,5 @@
"burst_size": 1, "burst_size": 1,
"normal_reload_time": 54, "normal_reload_time": 54,
"empty_reload_time": 69, "empty_reload_time": 69,
"BypassesArmor": 0.3 "BypassesArmor": 0.2
} }

View file

@ -19,5 +19,5 @@
"burst_size": 1, "burst_size": 1,
"normal_reload_time": 73, "normal_reload_time": 73,
"empty_reload_time": 95, "empty_reload_time": 95,
"BypassesArmor": 0.4 "BypassesArmor": 0.25
} }

View file

@ -18,5 +18,5 @@
"burst_size": 1, "burst_size": 1,
"normal_reload_time": 56, "normal_reload_time": 56,
"empty_reload_time": 64, "empty_reload_time": 64,
"BypassesArmor": 0.4 "BypassesArmor": 0.25
} }

View file

@ -16,5 +16,5 @@
"auto": 0, "auto": 0,
"burst_size": 1, "burst_size": 1,
"empty_reload_time": 64, "empty_reload_time": 64,
"BypassesArmor": 0.5 "BypassesArmor": 0.7
} }

View file

@ -18,5 +18,5 @@
"burst_size": 1, "burst_size": 1,
"normal_reload_time": 56, "normal_reload_time": 56,
"empty_reload_time": 64, "empty_reload_time": 64,
"BypassesArmor": 0.4 "BypassesArmor": 0.25
} }

View file

@ -19,5 +19,5 @@
"burst_size": 1, "burst_size": 1,
"normal_reload_time": 114, "normal_reload_time": 114,
"empty_reload_time": 133, "empty_reload_time": 133,
"BypassesArmor": 0.4 "BypassesArmor": 0.25
} }

View file

@ -21,5 +21,5 @@
"prepare_load_time": 36, "prepare_load_time": 36,
"iterative_time": 16, "iterative_time": 16,
"finish_time": 12, "finish_time": 12,
"BypassesArmor": 0.1 "BypassesArmor": 0.05
} }

View file

@ -10,5 +10,5 @@
"weight": 2, "weight": 2,
"fire_mode": 2, "fire_mode": 2,
"projectile_amount": 1, "projectile_amount": 1,
"BypassesArmor": 0.35 "BypassesArmor": 0.3
} }

View file

@ -21,5 +21,5 @@
"burst_size": 1, "burst_size": 1,
"normal_reload_time": 58, "normal_reload_time": 58,
"empty_reload_time": 81, "empty_reload_time": 81,
"BypassesArmor": 0.55 "BypassesArmor": 0.4
} }

View file

@ -13,5 +13,6 @@
"burst": 0, "burst": 0,
"auto": 0, "auto": 0,
"burst_size": 1, "burst_size": 1,
"empty_reload_time": 100 "empty_reload_time": 100,
"BypassesArmor": 1
} }

View file

@ -19,5 +19,5 @@
"burst_size": 1, "burst_size": 1,
"normal_reload_time": 73, "normal_reload_time": 73,
"empty_reload_time": 95, "empty_reload_time": 95,
"BypassesArmor": 0.35 "BypassesArmor": 0.23
} }

View file

@ -19,5 +19,5 @@
"burst_size": 1, "burst_size": 1,
"normal_reload_time": 59, "normal_reload_time": 59,
"empty_reload_time": 89, "empty_reload_time": 89,
"BypassesArmor": 0.7 "BypassesArmor": 0.8
} }

View file

@ -18,5 +18,5 @@
"burst_size": 1, "burst_size": 1,
"normal_reload_time": 54, "normal_reload_time": 54,
"empty_reload_time": 75, "empty_reload_time": 75,
"BypassesArmor": 0.35 "BypassesArmor": 0.23
} }

View file

@ -18,5 +18,5 @@
"burst_size": 1, "burst_size": 1,
"normal_reload_time": 56, "normal_reload_time": 56,
"empty_reload_time": 70, "empty_reload_time": 70,
"BypassesArmor": 0.6 "BypassesArmor": 0.45
} }

View file

@ -17,5 +17,5 @@
"auto": 0, "auto": 0,
"burst_size": 1, "burst_size": 1,
"empty_reload_time": 65, "empty_reload_time": 65,
"BypassesArmor": 0.25 "BypassesArmor": 0.2
} }