优化特殊武器的tooltip

This commit is contained in:
17146 2024-11-22 20:01:35 +08:00
parent 47dfc2692a
commit 78698441e9
13 changed files with 108 additions and 208 deletions

View file

@ -1,5 +1,6 @@
package net.mcreator.superbwarfare.client.tooltip; package net.mcreator.superbwarfare.client.tooltip;
import net.mcreator.superbwarfare.init.ModItems;
import net.mcreator.superbwarfare.init.ModKeyMappings; import net.mcreator.superbwarfare.init.ModKeyMappings;
import net.mcreator.superbwarfare.init.ModPerks; import net.mcreator.superbwarfare.init.ModPerks;
import net.mcreator.superbwarfare.init.ModTags; import net.mcreator.superbwarfare.init.ModTags;
@ -21,6 +22,7 @@ import org.jetbrains.annotations.NotNull;
import java.text.DecimalFormat; import java.text.DecimalFormat;
// TODO 等nbt重置后修改nbt位置
public class ClientImageTooltip implements ClientTooltipComponent { public class ClientImageTooltip implements ClientTooltipComponent {
private final int width; private final int width;
@ -73,8 +75,6 @@ public class ClientImageTooltip implements ClientTooltipComponent {
return PerkHelper.getPerkByType(stack, Perk.Type.AMMO) != null || PerkHelper.getPerkByType(stack, Perk.Type.DAMAGE) != null || PerkHelper.getPerkByType(stack, Perk.Type.FUNCTIONAL) != null; return PerkHelper.getPerkByType(stack, Perk.Type.AMMO) != null || PerkHelper.getPerkByType(stack, Perk.Type.DAMAGE) != null || PerkHelper.getPerkByType(stack, Perk.Type.FUNCTIONAL) != null;
} }
// TODO 等nbt重置后修改nbt位置
/** /**
* 渲染武器伤害和射速 * 渲染武器伤害和射速
*/ */
@ -88,6 +88,13 @@ public class ClientImageTooltip implements ClientTooltipComponent {
* 获取武器伤害的文本组件 * 获取武器伤害的文本组件
*/ */
private Component getDamageComponent() { private Component getDamageComponent() {
if (stack.is(ModItems.BOCEK.get())) {
return getBocekDamageComponent();
}
if (stack.is(ModTags.Items.SHOTGUN)) {
return getShotgunDamageComponent();
}
double damage = ItemNBTTool.getDouble(stack, "damage", 0) * TooltipTool.perkDamage(stack); double damage = ItemNBTTool.getDouble(stack, "damage", 0) * TooltipTool.perkDamage(stack);
return Component.translatable("des.superbwarfare.tips.damage").withStyle(ChatFormatting.GRAY) return Component.translatable("des.superbwarfare.tips.damage").withStyle(ChatFormatting.GRAY)
.append(Component.literal("").withStyle(ChatFormatting.RESET)) .append(Component.literal("").withStyle(ChatFormatting.RESET))
@ -95,6 +102,52 @@ public class ClientImageTooltip implements ClientTooltipComponent {
+ new DecimalFormat("##.#").format(0.8 * damage * (1 + 0.1 * TooltipTool.heBulletLevel(stack))) : "")).withStyle(ChatFormatting.GREEN)); + new DecimalFormat("##.#").format(0.8 * damage * (1 + 0.1 * TooltipTool.heBulletLevel(stack))) : "")).withStyle(ChatFormatting.GREEN));
} }
private Component getShotgunDamageComponent() {
boolean slug = false;
var perk = PerkHelper.getPerkByType(stack, Perk.Type.AMMO);
if (perk instanceof AmmoPerk ammoPerk && ammoPerk.slug) {
slug = true;
}
if (slug) {
double damage = ItemNBTTool.getDouble(stack, "damage", 0) * ItemNBTTool.getDouble(stack, "projectile_amount", 0) * TooltipTool.perkDamage(stack);
return Component.translatable("des.superbwarfare.tips.damage").withStyle(ChatFormatting.GRAY)
.append(Component.literal("").withStyle(ChatFormatting.RESET))
.append(Component.literal(new DecimalFormat("##.#").format(damage) + (TooltipTool.heBullet(stack) ? " + " + new DecimalFormat("##.#")
.format(0.8 * damage * (1 + 0.1 * TooltipTool.heBulletLevel(stack))) : "")).withStyle(ChatFormatting.GREEN));
} else {
double damage = ItemNBTTool.getDouble(stack, "damage", 0) * TooltipTool.perkDamage(stack);
return Component.translatable("des.superbwarfare.tips.damage").withStyle(ChatFormatting.GRAY)
.append(Component.literal("").withStyle(ChatFormatting.RESET))
.append(Component.literal(new DecimalFormat("##.#").format(damage) + " * " + new DecimalFormat("##").format(ItemNBTTool.getDouble(stack, "projectile_amount", 0))).withStyle(ChatFormatting.GREEN));
}
}
private Component getBocekDamageComponent() {
boolean slug = false;
var perk = PerkHelper.getPerkByType(stack, Perk.Type.AMMO);
if (perk instanceof AmmoPerk ammoPerk && ammoPerk.slug) {
slug = true;
}
double total = ItemNBTTool.getDouble(stack, "damage", 0) * TooltipTool.perkDamage(stack);
if (slug) {
return Component.translatable("des.superbwarfare.tips.damage").withStyle(ChatFormatting.GRAY)
.append(Component.literal("").withStyle(ChatFormatting.RESET))
.append(Component.literal(new DecimalFormat("##.#").format(total) + (TooltipTool.heBullet(stack) ? " + " + new DecimalFormat("##.#")
.format(0.8 * total * (1 + 0.1 * TooltipTool.heBulletLevel(stack))) : "")).withStyle(ChatFormatting.GREEN));
} else {
return Component.translatable("des.superbwarfare.tips.damage").withStyle(ChatFormatting.GRAY)
.append(Component.literal("").withStyle(ChatFormatting.RESET))
.append(Component.literal(new DecimalFormat("##.#").format(total * 0.1) + " * 10").withStyle(ChatFormatting.GREEN))
.append(Component.literal(" / ").withStyle(ChatFormatting.RESET))
.append(Component.literal(new DecimalFormat("##.#").format(total)).withStyle(ChatFormatting.GREEN));
}
}
/** /**
* 获取武器射速的文本组件 * 获取武器射速的文本组件
*/ */
@ -152,7 +205,7 @@ public class ClientImageTooltip implements ClientTooltipComponent {
int upgradePoint = Mth.floor(ItemNBTTool.getDouble(stack, "UpgradePoint", 0)); int upgradePoint = Mth.floor(ItemNBTTool.getDouble(stack, "UpgradePoint", 0));
return Component.translatable("des.superbwarfare.tips.upgrade_point").withStyle(ChatFormatting.GRAY) return Component.translatable("des.superbwarfare.tips.upgrade_point").withStyle(ChatFormatting.GRAY)
.append(Component.literal("").withStyle(ChatFormatting.RESET)) .append(Component.literal("").withStyle(ChatFormatting.RESET))
.append(Component.literal(String.valueOf(upgradePoint)).withStyle(ChatFormatting.GRAY).withStyle(ChatFormatting.BOLD)); .append(Component.literal(String.valueOf(upgradePoint)).withStyle(ChatFormatting.WHITE).withStyle(ChatFormatting.BOLD));
} }
/** /**
@ -276,11 +329,11 @@ public class ClientImageTooltip implements ClientTooltipComponent {
guiGraphics.drawString(font, Component.translatable("perk.superbwarfare.tips").withStyle(ChatFormatting.GOLD).withStyle(ChatFormatting.UNDERLINE), x, y + 10, 0xFFFFFF); guiGraphics.drawString(font, Component.translatable("perk.superbwarfare.tips").withStyle(ChatFormatting.GOLD).withStyle(ChatFormatting.UNDERLINE), x, y + 10, 0xFFFFFF);
int yOffset = -10; int yOffset = -5;
Perk ammoPerk = PerkHelper.getPerkByType(stack, Perk.Type.AMMO); Perk ammoPerk = PerkHelper.getPerkByType(stack, Perk.Type.AMMO);
if (ammoPerk != null && PerkHelper.getPerkItem(ammoPerk).isPresent()) { if (ammoPerk != null && PerkHelper.getPerkItem(ammoPerk).isPresent()) {
yOffset += 30; yOffset += 25;
var ammoItem = PerkHelper.getPerkItem(ammoPerk).get().get(); var ammoItem = PerkHelper.getPerkItem(ammoPerk).get().get();
guiGraphics.renderItem(ammoItem.getDefaultInstance(), x, y + 4 + yOffset); guiGraphics.renderItem(ammoItem.getDefaultInstance(), x, y + 4 + yOffset);
@ -302,7 +355,7 @@ public class ClientImageTooltip implements ClientTooltipComponent {
Perk funcPerk = PerkHelper.getPerkByType(stack, Perk.Type.FUNCTIONAL); Perk funcPerk = PerkHelper.getPerkByType(stack, Perk.Type.FUNCTIONAL);
if (funcPerk != null && PerkHelper.getPerkItem(funcPerk).isPresent()) { if (funcPerk != null && PerkHelper.getPerkItem(funcPerk).isPresent()) {
yOffset += 30; yOffset += 25;
var funcItem = PerkHelper.getPerkItem(funcPerk).get().get(); var funcItem = PerkHelper.getPerkItem(funcPerk).get().get();
guiGraphics.renderItem(funcItem.getDefaultInstance(), x, y + 4 + yOffset); guiGraphics.renderItem(funcItem.getDefaultInstance(), x, y + 4 + yOffset);
@ -324,7 +377,7 @@ public class ClientImageTooltip implements ClientTooltipComponent {
Perk damagePerk = PerkHelper.getPerkByType(stack, Perk.Type.DAMAGE); Perk damagePerk = PerkHelper.getPerkByType(stack, Perk.Type.DAMAGE);
if (damagePerk != null && PerkHelper.getPerkItem(damagePerk).isPresent()) { if (damagePerk != null && PerkHelper.getPerkItem(damagePerk).isPresent()) {
yOffset += 30; yOffset += 25;
var damageItem = PerkHelper.getPerkItem(damagePerk).get().get(); var damageItem = PerkHelper.getPerkItem(damagePerk).get().get();
guiGraphics.renderItem(damageItem.getDefaultInstance(), x, y + 4 + yOffset); guiGraphics.renderItem(damageItem.getDefaultInstance(), x, y + 4 + yOffset);
@ -410,13 +463,13 @@ public class ClientImageTooltip implements ClientTooltipComponent {
} else { } else {
height += 20; height += 20;
if (PerkHelper.getPerkByType(stack, Perk.Type.AMMO) != null) { if (PerkHelper.getPerkByType(stack, Perk.Type.AMMO) != null) {
height += 30; height += 25;
} }
if (PerkHelper.getPerkByType(stack, Perk.Type.FUNCTIONAL) != null) { if (PerkHelper.getPerkByType(stack, Perk.Type.FUNCTIONAL) != null) {
height += 30; height += 25;
} }
if (PerkHelper.getPerkByType(stack, Perk.Type.DAMAGE) != null) { if (PerkHelper.getPerkByType(stack, Perk.Type.DAMAGE) != null) {
height += 30; height += 25;
} }
} }
} }

View file

@ -11,10 +11,8 @@ import net.mcreator.superbwarfare.perk.Perk;
import net.mcreator.superbwarfare.perk.PerkHelper; import net.mcreator.superbwarfare.perk.PerkHelper;
import net.mcreator.superbwarfare.tools.GunsTool; import net.mcreator.superbwarfare.tools.GunsTool;
import net.mcreator.superbwarfare.tools.ItemNBTTool; import net.mcreator.superbwarfare.tools.ItemNBTTool;
import net.mcreator.superbwarfare.tools.TooltipTool;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.CompoundTag;
import net.minecraft.network.chat.Component;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
import net.minecraft.sounds.SoundEvent; import net.minecraft.sounds.SoundEvent;
import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.Entity;
@ -27,7 +25,6 @@ import net.minecraft.world.entity.player.Player;
import net.minecraft.world.inventory.tooltip.TooltipComponent; import net.minecraft.world.inventory.tooltip.TooltipComponent;
import net.minecraft.world.item.Item; import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.TooltipFlag;
import net.minecraft.world.item.enchantment.Enchantment; import net.minecraft.world.item.enchantment.Enchantment;
import net.minecraft.world.level.Level; import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.BlockState;
@ -36,7 +33,6 @@ import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.Mod;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import java.util.List;
import java.util.Optional; import java.util.Optional;
import java.util.Set; import java.util.Set;
import java.util.UUID; import java.util.UUID;
@ -119,11 +115,6 @@ public abstract class GunItem extends Item {
return map; return map;
} }
// @Override
// public void appendHoverText(ItemStack stack, Level world, List<Component> list, TooltipFlag flag) {
// TooltipTool.addGunTips(list, stack);
// }
@Override @Override
public @NotNull Optional<TooltipComponent> getTooltipImage(@NotNull ItemStack pStack) { public @NotNull Optional<TooltipComponent> getTooltipImage(@NotNull ItemStack pStack) {
return Optional.of(new ImageTooltip(pStack)); return Optional.of(new ImageTooltip(pStack));

View file

@ -44,6 +44,7 @@ import java.util.Set;
import java.util.function.Consumer; import java.util.function.Consumer;
public class Trachelium extends GunItem implements GeoItem, AnimatedItem { public class Trachelium extends GunItem implements GeoItem, AnimatedItem {
private final AnimatableInstanceCache cache = GeckoLibUtil.createInstanceCache(this); private final AnimatableInstanceCache cache = GeckoLibUtil.createInstanceCache(this);
public static ItemDisplayContext transformType; public static ItemDisplayContext transformType;
@ -131,14 +132,13 @@ public class Trachelium extends GunItem implements GeoItem, AnimatedItem {
@Override @Override
public void appendHoverText(ItemStack stack, @Nullable Level level, List<Component> list, TooltipFlag flag) { public void appendHoverText(ItemStack stack, @Nullable Level level, List<Component> list, TooltipFlag flag) {
list.add(Component.literal(""));
list.add(Component.translatable("des.superbwarfare.trachelium_1").withStyle(ChatFormatting.GRAY).withStyle(ChatFormatting.ITALIC)); list.add(Component.translatable("des.superbwarfare.trachelium_1").withStyle(ChatFormatting.GRAY).withStyle(ChatFormatting.ITALIC));
list.add(Component.translatable("des.superbwarfare.trachelium_2").withStyle(ChatFormatting.GRAY)); list.add(Component.translatable("des.superbwarfare.trachelium_2").withStyle(ChatFormatting.GRAY));
TooltipTool.addHideText(list, Component.literal("")); TooltipTool.addHideText(list, Component.literal(""));
TooltipTool.addHideText(list, Component.translatable("des.superbwarfare.trachelium_3").withStyle(ChatFormatting.WHITE)); TooltipTool.addHideText(list, Component.translatable("des.superbwarfare.trachelium_3").withStyle(ChatFormatting.WHITE));
TooltipTool.addHideText(list, Component.translatable("des.superbwarfare.trachelium_4").withStyle(Style.EMPTY.withColor(0xF4F0FF))); TooltipTool.addHideText(list, Component.translatable("des.superbwarfare.trachelium_4").withStyle(Style.EMPTY.withColor(0xF4F0FF)));
TooltipTool.addGunTips(list, stack);
} }
public static ItemStack getGunInstance() { public static ItemStack getGunInstance() {
@ -160,7 +160,7 @@ public class Trachelium extends GunItem implements GeoItem, AnimatedItem {
@Override @Override
public ResourceLocation getGunIcon() { public ResourceLocation getGunIcon() {
return new ResourceLocation(ModUtils.MODID, "textures/gun_icon/trachelium_icon.png"); return ModUtils.loc("textures/gun_icon/trachelium_icon.png");
} }
@Override @Override
@ -172,4 +172,5 @@ public class Trachelium extends GunItem implements GeoItem, AnimatedItem {
public boolean canApplyPerk(Perk perk) { public boolean canApplyPerk(Perk perk) {
return PerkHelper.HANDGUN_PERKS.test(perk); return PerkHelper.HANDGUN_PERKS.test(perk);
} }
} }

View file

@ -16,7 +16,6 @@ import net.minecraft.client.Minecraft;
import net.minecraft.client.model.HumanoidModel; import net.minecraft.client.model.HumanoidModel;
import net.minecraft.client.player.LocalPlayer; import net.minecraft.client.player.LocalPlayer;
import net.minecraft.client.renderer.BlockEntityWithoutLevelRenderer; import net.minecraft.client.renderer.BlockEntityWithoutLevelRenderer;
import net.minecraft.network.chat.Component;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
import net.minecraft.server.level.ServerPlayer; import net.minecraft.server.level.ServerPlayer;
import net.minecraft.sounds.SoundEvent; import net.minecraft.sounds.SoundEvent;
@ -28,7 +27,6 @@ import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.entity.player.Player; import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.ItemDisplayContext; import net.minecraft.world.item.ItemDisplayContext;
import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.TooltipFlag;
import net.minecraft.world.level.Level; import net.minecraft.world.level.Level;
import net.minecraftforge.client.extensions.common.IClientItemExtensions; import net.minecraftforge.client.extensions.common.IClientItemExtensions;
import software.bernie.geckolib.animatable.GeoItem; import software.bernie.geckolib.animatable.GeoItem;
@ -40,11 +38,11 @@ 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.List;
import java.util.Set; import java.util.Set;
import java.util.function.Consumer; import java.util.function.Consumer;
public class JavelinItem extends GunItem implements GeoItem, AnimatedItem { public class JavelinItem extends GunItem implements GeoItem, AnimatedItem {
private final AnimatableInstanceCache cache = GeckoLibUtil.createInstanceCache(this); private final AnimatableInstanceCache cache = GeckoLibUtil.createInstanceCache(this);
public static ItemDisplayContext transformType; public static ItemDisplayContext transformType;
@ -181,7 +179,7 @@ public class JavelinItem extends GunItem implements GeoItem, AnimatedItem {
@Override @Override
public ResourceLocation getGunIcon() { public ResourceLocation getGunIcon() {
return new ResourceLocation(ModUtils.MODID, "textures/gun_icon/javelin_icon.png"); return ModUtils.loc("textures/gun_icon/javelin_icon.png");
} }
@Override @Override
@ -189,13 +187,9 @@ public class JavelinItem extends GunItem implements GeoItem, AnimatedItem {
return "FGM-148"; return "FGM-148";
} }
@Override
public void appendHoverText(ItemStack stack, Level world, List<Component> list, TooltipFlag flag) {
TooltipTool.addLauncherTips(list, stack);
}
@Override @Override
public boolean canApplyPerk(Perk perk) { public boolean canApplyPerk(Perk perk) {
return PerkHelper.LAUNCHER_PERKS.test(perk); return PerkHelper.LAUNCHER_PERKS.test(perk);
} }
} }

View file

@ -12,12 +12,10 @@ import net.mcreator.superbwarfare.item.gun.GunItem;
import net.mcreator.superbwarfare.perk.Perk; import net.mcreator.superbwarfare.perk.Perk;
import net.mcreator.superbwarfare.perk.PerkHelper; import net.mcreator.superbwarfare.perk.PerkHelper;
import net.mcreator.superbwarfare.tools.GunsTool; import net.mcreator.superbwarfare.tools.GunsTool;
import net.mcreator.superbwarfare.tools.TooltipTool;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraft.client.model.HumanoidModel; import net.minecraft.client.model.HumanoidModel;
import net.minecraft.client.player.LocalPlayer; import net.minecraft.client.player.LocalPlayer;
import net.minecraft.client.renderer.BlockEntityWithoutLevelRenderer; import net.minecraft.client.renderer.BlockEntityWithoutLevelRenderer;
import net.minecraft.network.chat.Component;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
import net.minecraft.sounds.SoundEvent; import net.minecraft.sounds.SoundEvent;
import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionHand;
@ -25,7 +23,10 @@ import net.minecraft.world.effect.MobEffects;
import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.entity.player.Player; import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.*; import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemDisplayContext;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.Rarity;
import net.minecraft.world.level.Level; import net.minecraft.world.level.Level;
import net.minecraftforge.client.extensions.common.IClientItemExtensions; import net.minecraftforge.client.extensions.common.IClientItemExtensions;
import software.bernie.geckolib.animatable.GeoItem; import software.bernie.geckolib.animatable.GeoItem;
@ -37,11 +38,11 @@ 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.List;
import java.util.Set; import java.util.Set;
import java.util.function.Consumer; import java.util.function.Consumer;
public class M79Item extends GunItem implements GeoItem, AnimatedItem { public class M79Item extends GunItem implements GeoItem, AnimatedItem {
private final AnimatableInstanceCache cache = GeckoLibUtil.createInstanceCache(this); private final AnimatableInstanceCache cache = GeckoLibUtil.createInstanceCache(this);
public static ItemDisplayContext transformType; public static ItemDisplayContext transformType;
@ -153,7 +154,7 @@ public class M79Item extends GunItem implements GeoItem, AnimatedItem {
@Override @Override
public ResourceLocation getGunIcon() { public ResourceLocation getGunIcon() {
return new ResourceLocation(ModUtils.MODID, "textures/gun_icon/m79_icon.png"); return ModUtils.loc("textures/gun_icon/m79_icon.png");
} }
@Override @Override
@ -161,13 +162,9 @@ public class M79Item extends GunItem implements GeoItem, AnimatedItem {
return "M79 LAUNCHER"; return "M79 LAUNCHER";
} }
@Override
public void appendHoverText(ItemStack stack, Level world, List<Component> list, TooltipFlag flag) {
TooltipTool.addLauncherTips(list, stack);
}
@Override @Override
public boolean canApplyPerk(Perk perk) { public boolean canApplyPerk(Perk perk) {
return PerkHelper.LAUNCHER_PERKS.test(perk); return PerkHelper.LAUNCHER_PERKS.test(perk);
} }
} }

View file

@ -12,12 +12,10 @@ import net.mcreator.superbwarfare.item.gun.GunItem;
import net.mcreator.superbwarfare.perk.Perk; import net.mcreator.superbwarfare.perk.Perk;
import net.mcreator.superbwarfare.perk.PerkHelper; import net.mcreator.superbwarfare.perk.PerkHelper;
import net.mcreator.superbwarfare.tools.GunsTool; import net.mcreator.superbwarfare.tools.GunsTool;
import net.mcreator.superbwarfare.tools.TooltipTool;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraft.client.model.HumanoidModel; import net.minecraft.client.model.HumanoidModel;
import net.minecraft.client.player.LocalPlayer; import net.minecraft.client.player.LocalPlayer;
import net.minecraft.client.renderer.BlockEntityWithoutLevelRenderer; import net.minecraft.client.renderer.BlockEntityWithoutLevelRenderer;
import net.minecraft.network.chat.Component;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
import net.minecraft.sounds.SoundEvent; import net.minecraft.sounds.SoundEvent;
import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionHand;
@ -25,7 +23,10 @@ import net.minecraft.world.effect.MobEffects;
import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.entity.player.Player; import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.*; import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemDisplayContext;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.Rarity;
import net.minecraft.world.level.Level; import net.minecraft.world.level.Level;
import net.minecraftforge.client.extensions.common.IClientItemExtensions; import net.minecraftforge.client.extensions.common.IClientItemExtensions;
import software.bernie.geckolib.animatable.GeoItem; import software.bernie.geckolib.animatable.GeoItem;
@ -37,11 +38,11 @@ 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.List;
import java.util.Set; import java.util.Set;
import java.util.function.Consumer; import java.util.function.Consumer;
public class RpgItem extends GunItem implements GeoItem, AnimatedItem { public class RpgItem extends GunItem implements GeoItem, AnimatedItem {
private final AnimatableInstanceCache cache = GeckoLibUtil.createInstanceCache(this); private final AnimatableInstanceCache cache = GeckoLibUtil.createInstanceCache(this);
public static ItemDisplayContext transformType; public static ItemDisplayContext transformType;
@ -76,11 +77,7 @@ public class RpgItem extends GunItem implements GeoItem, AnimatedItem {
if (player == null) return PlayState.STOP; if (player == null) return PlayState.STOP;
ItemStack stack = player.getMainHandItem(); ItemStack stack = player.getMainHandItem();
if (!stack.is(ModTags.Items.GUN)) return PlayState.STOP; if (!stack.is(ModTags.Items.GUN)) return PlayState.STOP;
var tag = stack.getOrCreateTag();
if (stack.getOrCreateTag().getBoolean("is_empty_reloading")) { if (stack.getOrCreateTag().getBoolean("is_empty_reloading")) {
return event.setAndContinue(RawAnimation.begin().thenPlay("animation.rpg.reload")); return event.setAndContinue(RawAnimation.begin().thenPlay("animation.rpg.reload"));
} }
@ -167,7 +164,7 @@ public class RpgItem extends GunItem implements GeoItem, AnimatedItem {
@Override @Override
public ResourceLocation getGunIcon() { public ResourceLocation getGunIcon() {
return new ResourceLocation(ModUtils.MODID, "textures/gun_icon/rpg_icon.png"); return ModUtils.loc("textures/gun_icon/rpg_icon.png");
} }
@Override @Override
@ -175,13 +172,9 @@ public class RpgItem extends GunItem implements GeoItem, AnimatedItem {
return " RPG-7"; return " RPG-7";
} }
@Override
public void appendHoverText(ItemStack stack, Level world, List<Component> list, TooltipFlag flag) {
TooltipTool.addLauncherTips(list, stack);
}
@Override @Override
public boolean canApplyPerk(Perk perk) { public boolean canApplyPerk(Perk perk) {
return PerkHelper.LAUNCHER_PERKS.test(perk); return PerkHelper.LAUNCHER_PERKS.test(perk);
} }
} }

View file

@ -14,12 +14,10 @@ import net.mcreator.superbwarfare.perk.Perk;
import net.mcreator.superbwarfare.perk.PerkHelper; import net.mcreator.superbwarfare.perk.PerkHelper;
import net.mcreator.superbwarfare.tools.GunsTool; import net.mcreator.superbwarfare.tools.GunsTool;
import net.mcreator.superbwarfare.tools.RarityTool; import net.mcreator.superbwarfare.tools.RarityTool;
import net.mcreator.superbwarfare.tools.TooltipTool;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraft.client.model.HumanoidModel; import net.minecraft.client.model.HumanoidModel;
import net.minecraft.client.player.LocalPlayer; import net.minecraft.client.player.LocalPlayer;
import net.minecraft.client.renderer.BlockEntityWithoutLevelRenderer; import net.minecraft.client.renderer.BlockEntityWithoutLevelRenderer;
import net.minecraft.network.chat.Component;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
import net.minecraft.sounds.SoundEvent; import net.minecraft.sounds.SoundEvent;
import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionHand;
@ -28,10 +26,7 @@ import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.item.Item; import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemDisplayContext; import net.minecraft.world.item.ItemDisplayContext;
import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.TooltipFlag;
import net.minecraft.world.level.Level;
import net.minecraftforge.client.extensions.common.IClientItemExtensions; import net.minecraftforge.client.extensions.common.IClientItemExtensions;
import org.jetbrains.annotations.Nullable;
import software.bernie.geckolib.animatable.GeoItem; import software.bernie.geckolib.animatable.GeoItem;
import software.bernie.geckolib.core.animatable.instance.AnimatableInstanceCache; import software.bernie.geckolib.core.animatable.instance.AnimatableInstanceCache;
import software.bernie.geckolib.core.animation.AnimatableManager; import software.bernie.geckolib.core.animation.AnimatableManager;
@ -41,11 +36,11 @@ 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.List;
import java.util.Set; import java.util.Set;
import java.util.function.Consumer; import java.util.function.Consumer;
public class Aa12Item extends GunItem implements GeoItem, AnimatedItem { public class Aa12Item extends GunItem implements GeoItem, AnimatedItem {
private final AnimatableInstanceCache cache = GeckoLibUtil.createInstanceCache(this); private final AnimatableInstanceCache cache = GeckoLibUtil.createInstanceCache(this);
public String animationProcedure = "empty"; public String animationProcedure = "empty";
public static ItemDisplayContext transformType; public static ItemDisplayContext transformType;
@ -133,11 +128,6 @@ public class Aa12Item extends GunItem implements GeoItem, AnimatedItem {
return this.cache; return this.cache;
} }
@Override
public void appendHoverText(ItemStack stack, @Nullable Level level, List<Component> list, TooltipFlag flag) {
TooltipTool.addShotgunTips(list, stack);
}
@Override @Override
public Set<SoundEvent> getReloadSound() { public Set<SoundEvent> getReloadSound() {
return Set.of(ModSounds.AA_12_RELOAD_EMPTY.get(), ModSounds.AA_12_RELOAD_NORMAL.get()); return Set.of(ModSounds.AA_12_RELOAD_EMPTY.get(), ModSounds.AA_12_RELOAD_NORMAL.get());
@ -156,7 +146,7 @@ public class Aa12Item extends GunItem implements GeoItem, AnimatedItem {
@Override @Override
public ResourceLocation getGunIcon() { public ResourceLocation getGunIcon() {
return new ResourceLocation(ModUtils.MODID, "textures/gun_icon/aa_12_icon.png"); return ModUtils.loc("textures/gun_icon/aa_12_icon.png");
} }
@Override @Override
@ -168,4 +158,5 @@ public class Aa12Item extends GunItem implements GeoItem, AnimatedItem {
public boolean canApplyPerk(Perk perk) { public boolean canApplyPerk(Perk perk) {
return PerkHelper.SHOTGUN_PERKS.test(perk) || PerkHelper.MAGAZINE_PERKS.test(perk) || perk == ModPerks.DESPERADO.get(); return PerkHelper.SHOTGUN_PERKS.test(perk) || PerkHelper.MAGAZINE_PERKS.test(perk) || perk == ModPerks.DESPERADO.get();
} }
} }

View file

@ -1,6 +1,7 @@
package net.mcreator.superbwarfare.item.gun.shotgun; package net.mcreator.superbwarfare.item.gun.shotgun;
import net.mcreator.superbwarfare.ModUtils; import net.mcreator.superbwarfare.ModUtils;
import net.mcreator.superbwarfare.client.PoseTool;
import net.mcreator.superbwarfare.client.renderer.item.AbekiriItemRenderer; import net.mcreator.superbwarfare.client.renderer.item.AbekiriItemRenderer;
import net.mcreator.superbwarfare.event.ClientEventHandler; import net.mcreator.superbwarfare.event.ClientEventHandler;
import net.mcreator.superbwarfare.init.ModItems; import net.mcreator.superbwarfare.init.ModItems;
@ -11,22 +12,20 @@ import net.mcreator.superbwarfare.item.gun.GunItem;
import net.mcreator.superbwarfare.perk.Perk; import net.mcreator.superbwarfare.perk.Perk;
import net.mcreator.superbwarfare.perk.PerkHelper; import net.mcreator.superbwarfare.perk.PerkHelper;
import net.mcreator.superbwarfare.tools.GunsTool; import net.mcreator.superbwarfare.tools.GunsTool;
import net.mcreator.superbwarfare.client.PoseTool;
import net.mcreator.superbwarfare.tools.TooltipTool;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraft.client.model.HumanoidModel; import net.minecraft.client.model.HumanoidModel;
import net.minecraft.client.player.LocalPlayer; import net.minecraft.client.player.LocalPlayer;
import net.minecraft.client.renderer.BlockEntityWithoutLevelRenderer; import net.minecraft.client.renderer.BlockEntityWithoutLevelRenderer;
import net.minecraft.network.chat.Component;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
import net.minecraft.sounds.SoundEvent; import net.minecraft.sounds.SoundEvent;
import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionHand;
import net.minecraft.world.effect.MobEffects; import net.minecraft.world.effect.MobEffects;
import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.item.*; import net.minecraft.world.item.Item;
import net.minecraft.world.level.Level; import net.minecraft.world.item.ItemDisplayContext;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.Rarity;
import net.minecraftforge.client.extensions.common.IClientItemExtensions; import net.minecraftforge.client.extensions.common.IClientItemExtensions;
import org.jetbrains.annotations.Nullable;
import software.bernie.geckolib.animatable.GeoItem; import software.bernie.geckolib.animatable.GeoItem;
import software.bernie.geckolib.core.animatable.instance.AnimatableInstanceCache; import software.bernie.geckolib.core.animatable.instance.AnimatableInstanceCache;
import software.bernie.geckolib.core.animation.AnimatableManager; import software.bernie.geckolib.core.animation.AnimatableManager;
@ -36,11 +35,11 @@ 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.List;
import java.util.Set; import java.util.Set;
import java.util.function.Consumer; import java.util.function.Consumer;
public class AbekiriItem extends GunItem implements GeoItem, AnimatedItem { public class AbekiriItem extends GunItem implements GeoItem, AnimatedItem {
private final AnimatableInstanceCache cache = GeckoLibUtil.createInstanceCache(this); private final AnimatableInstanceCache cache = GeckoLibUtil.createInstanceCache(this);
public static ItemDisplayContext transformType; public static ItemDisplayContext transformType;
@ -111,11 +110,6 @@ public class AbekiriItem extends GunItem implements GeoItem, AnimatedItem {
return this.cache; return this.cache;
} }
@Override
public void appendHoverText(ItemStack stack, @Nullable Level level, List<Component> list, TooltipFlag flag) {
TooltipTool.addShotgunTips(list, stack);
}
public static ItemStack getGunInstance() { public static ItemStack getGunInstance() {
ItemStack stack = new ItemStack(ModItems.ABEKIRI.get()); ItemStack stack = new ItemStack(ModItems.ABEKIRI.get());
GunsTool.initCreativeGun(stack, ModItems.ABEKIRI.getId().getPath()); GunsTool.initCreativeGun(stack, ModItems.ABEKIRI.getId().getPath());
@ -128,7 +122,7 @@ public class AbekiriItem extends GunItem implements GeoItem, AnimatedItem {
@Override @Override
public ResourceLocation getGunIcon() { public ResourceLocation getGunIcon() {
return new ResourceLocation(ModUtils.MODID, "textures/gun_icon/abekiri_icon.png"); return ModUtils.loc("textures/gun_icon/abekiri_icon.png");
} }
@Override @Override
@ -140,4 +134,5 @@ public class AbekiriItem extends GunItem implements GeoItem, AnimatedItem {
public boolean canApplyPerk(Perk perk) { public boolean canApplyPerk(Perk perk) {
return PerkHelper.SHOTGUN_PERKS.test(perk); return PerkHelper.SHOTGUN_PERKS.test(perk);
} }
} }

View file

@ -12,21 +12,20 @@ import net.mcreator.superbwarfare.item.gun.GunItem;
import net.mcreator.superbwarfare.perk.Perk; import net.mcreator.superbwarfare.perk.Perk;
import net.mcreator.superbwarfare.perk.PerkHelper; import net.mcreator.superbwarfare.perk.PerkHelper;
import net.mcreator.superbwarfare.tools.GunsTool; import net.mcreator.superbwarfare.tools.GunsTool;
import net.mcreator.superbwarfare.tools.TooltipTool;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraft.client.model.HumanoidModel; import net.minecraft.client.model.HumanoidModel;
import net.minecraft.client.player.LocalPlayer; import net.minecraft.client.player.LocalPlayer;
import net.minecraft.client.renderer.BlockEntityWithoutLevelRenderer; import net.minecraft.client.renderer.BlockEntityWithoutLevelRenderer;
import net.minecraft.network.chat.Component;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
import net.minecraft.sounds.SoundEvent; import net.minecraft.sounds.SoundEvent;
import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionHand;
import net.minecraft.world.effect.MobEffects; import net.minecraft.world.effect.MobEffects;
import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.item.*; import net.minecraft.world.item.Item;
import net.minecraft.world.level.Level; import net.minecraft.world.item.ItemDisplayContext;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.Rarity;
import net.minecraftforge.client.extensions.common.IClientItemExtensions; import net.minecraftforge.client.extensions.common.IClientItemExtensions;
import org.jetbrains.annotations.Nullable;
import software.bernie.geckolib.animatable.GeoItem; import software.bernie.geckolib.animatable.GeoItem;
import software.bernie.geckolib.core.animatable.instance.AnimatableInstanceCache; import software.bernie.geckolib.core.animatable.instance.AnimatableInstanceCache;
import software.bernie.geckolib.core.animation.AnimatableManager; import software.bernie.geckolib.core.animation.AnimatableManager;
@ -36,11 +35,11 @@ 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.List;
import java.util.Set; import java.util.Set;
import java.util.function.Consumer; import java.util.function.Consumer;
public class M870Item extends GunItem implements GeoItem, AnimatedItem { public class M870Item extends GunItem implements GeoItem, AnimatedItem {
private final AnimatableInstanceCache cache = GeckoLibUtil.createInstanceCache(this); private final AnimatableInstanceCache cache = GeckoLibUtil.createInstanceCache(this);
public static ItemDisplayContext transformType; public static ItemDisplayContext transformType;
@ -138,11 +137,6 @@ public class M870Item extends GunItem implements GeoItem, AnimatedItem {
return this.cache; return this.cache;
} }
@Override
public void appendHoverText(ItemStack stack, @Nullable Level level, List<Component> list, TooltipFlag flag) {
TooltipTool.addShotgunTips(list, stack);
}
@Override @Override
public Set<SoundEvent> getReloadSound() { public Set<SoundEvent> getReloadSound() {
return Set.of(ModSounds.M_870_PREPARE_LOAD.get(), return Set.of(ModSounds.M_870_PREPARE_LOAD.get(),
@ -162,7 +156,7 @@ public class M870Item extends GunItem implements GeoItem, AnimatedItem {
@Override @Override
public ResourceLocation getGunIcon() { public ResourceLocation getGunIcon() {
return new ResourceLocation(ModUtils.MODID, "textures/gun_icon/m870_icon.png"); return ModUtils.loc("textures/gun_icon/m870_icon.png");
} }
@Override @Override
@ -174,4 +168,5 @@ public class M870Item extends GunItem implements GeoItem, AnimatedItem {
public boolean canApplyPerk(Perk perk) { public boolean canApplyPerk(Perk perk) {
return PerkHelper.SHOTGUN_PERKS.test(perk) || PerkHelper.MAGAZINE_PERKS.test(perk); return PerkHelper.SHOTGUN_PERKS.test(perk) || PerkHelper.MAGAZINE_PERKS.test(perk);
} }
} }

View file

@ -10,13 +10,11 @@ import net.mcreator.superbwarfare.item.AnimatedItem;
import net.mcreator.superbwarfare.item.gun.GunItem; import net.mcreator.superbwarfare.item.gun.GunItem;
import net.mcreator.superbwarfare.perk.Perk; import net.mcreator.superbwarfare.perk.Perk;
import net.mcreator.superbwarfare.tools.GunsTool; import net.mcreator.superbwarfare.tools.GunsTool;
import net.mcreator.superbwarfare.tools.TooltipTool;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraft.client.model.HumanoidModel; import net.minecraft.client.model.HumanoidModel;
import net.minecraft.client.player.LocalPlayer; import net.minecraft.client.player.LocalPlayer;
import net.minecraft.client.renderer.BlockEntityWithoutLevelRenderer; import net.minecraft.client.renderer.BlockEntityWithoutLevelRenderer;
import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.CompoundTag;
import net.minecraft.network.chat.Component;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionHand;
import net.minecraft.world.effect.MobEffects; import net.minecraft.world.effect.MobEffects;
@ -35,10 +33,10 @@ 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.List;
import java.util.function.Consumer; import java.util.function.Consumer;
public class BocekItem extends GunItem implements GeoItem, AnimatedItem { public class BocekItem extends GunItem implements GeoItem, AnimatedItem {
private final AnimatableInstanceCache cache = GeckoLibUtil.createInstanceCache(this); private final AnimatableInstanceCache cache = GeckoLibUtil.createInstanceCache(this);
public static ItemDisplayContext transformType; public static ItemDisplayContext transformType;
@ -96,11 +94,6 @@ public class BocekItem extends GunItem implements GeoItem, AnimatedItem {
return this.cache; return this.cache;
} }
@Override
public void appendHoverText(ItemStack stack, Level world, List<Component> list, TooltipFlag flag) {
TooltipTool.addBocekTips(list, stack);
}
public static int getAmmoCount(Player player) { public static int getAmmoCount(Player player) {
int count = 0; int count = 0;
for (var inv : player.getInventory().items) { for (var inv : player.getInventory().items) {
@ -151,7 +144,7 @@ public class BocekItem extends GunItem implements GeoItem, AnimatedItem {
@Override @Override
public ResourceLocation getGunIcon() { public ResourceLocation getGunIcon() {
return new ResourceLocation(ModUtils.MODID, "textures/gun_icon/bocek_icon.png"); return ModUtils.loc("textures/gun_icon/bocek_icon.png");
} }
@Override @Override
@ -167,4 +160,5 @@ public class BocekItem extends GunItem implements GeoItem, AnimatedItem {
case DAMAGE -> perk == ModPerks.MONSTER_HUNTER.get() || perk == ModPerks.KILLING_TALLY.get(); case DAMAGE -> perk == ModPerks.MONSTER_HUNTER.get() || perk == ModPerks.KILLING_TALLY.get();
}; };
} }
} }

View file

@ -1,6 +1,5 @@
package net.mcreator.superbwarfare.tools; package net.mcreator.superbwarfare.tools;
import net.mcreator.superbwarfare.init.ModKeyMappings;
import net.mcreator.superbwarfare.init.ModPerks; import net.mcreator.superbwarfare.init.ModPerks;
import net.mcreator.superbwarfare.init.ModTags; import net.mcreator.superbwarfare.init.ModTags;
import net.mcreator.superbwarfare.perk.AmmoPerk; import net.mcreator.superbwarfare.perk.AmmoPerk;
@ -47,71 +46,12 @@ public class TooltipTool {
return 0; return 0;
} }
public static void addGunTips(List<Component> tooltip, ItemStack stack) {
tooltip.add(Component.literal(""));
double damage = ItemNBTTool.getDouble(stack, "damage", 0) * perkDamage(stack);
tooltip.add(Component.translatable("des.superbwarfare.tips.damage").withStyle(ChatFormatting.GRAY)
.append(Component.literal("").withStyle(ChatFormatting.RESET))
.append(Component.literal(new DecimalFormat("##.#").format(damage) + (heBullet(stack) ? " + " + new DecimalFormat("##.#").format(0.8 * damage * (1 + 0.1 * heBulletLevel(stack))) : "")).withStyle(ChatFormatting.GREEN)));
if (stack.is(ModTags.Items.IS_AUTO_WEAPON)) {
addRpmTips(tooltip, stack);
}
addLevelTips(tooltip, stack);
addBypassTips(tooltip, stack);
addPerkTips(tooltip, stack);
if (stack.is(ModTags.Items.CAN_CUSTOM_GUN)) {
addEditTips(tooltip);
}
}
public static void addShotgunTips(List<Component> tooltip, ItemStack stack) {
tooltip.add(Component.literal(""));
boolean slug = false;
var perk = PerkHelper.getPerkByType(stack, Perk.Type.AMMO);
if (perk instanceof AmmoPerk ammoPerk && ammoPerk.slug) {
slug = true;
}
if (slug) {
double damage = ItemNBTTool.getDouble(stack, "damage", 0) * ItemNBTTool.getDouble(stack, "projectile_amount", 0) * perkDamage(stack);
tooltip.add(Component.translatable("des.superbwarfare.tips.damage").withStyle(ChatFormatting.GRAY)
.append(Component.literal("").withStyle(ChatFormatting.RESET))
.append(Component.literal(new DecimalFormat("##.#").format(damage) + (heBullet(stack) ? " + " + new DecimalFormat("##.#").format(0.8 * damage * (1 + 0.1 * heBulletLevel(stack))) : "")).withStyle(ChatFormatting.GREEN)));
} else {
double damage = ItemNBTTool.getDouble(stack, "damage", 0) * perkDamage(stack);
tooltip.add(Component.translatable("des.superbwarfare.tips.damage").withStyle(ChatFormatting.GRAY)
.append(Component.literal("").withStyle(ChatFormatting.RESET))
.append(Component.literal(new DecimalFormat("##.#").format(damage) + " * " + new DecimalFormat("##").format(ItemNBTTool.getDouble(stack, "projectile_amount", 0))).withStyle(ChatFormatting.GREEN)));
}
if (stack.is(ModTags.Items.IS_AUTO_WEAPON)) {
addRpmTips(tooltip, stack);
}
addLevelTips(tooltip, stack);
addBypassTips(tooltip, stack);
addPerkTips(tooltip, stack);
}
private static void addRpmTips(List<Component> tooltip, ItemStack stack) { private static void addRpmTips(List<Component> tooltip, ItemStack stack) {
tooltip.add(Component.translatable("des.superbwarfare.tips.rpm").withStyle(ChatFormatting.GRAY) tooltip.add(Component.translatable("des.superbwarfare.tips.rpm").withStyle(ChatFormatting.GRAY)
.append(Component.literal("").withStyle(ChatFormatting.RESET)) .append(Component.literal("").withStyle(ChatFormatting.RESET))
.append(Component.literal(new DecimalFormat("##").format(ItemNBTTool.getDouble(stack, "rpm", 0) + ItemNBTTool.getDouble(stack, "customRpm", 0))).withStyle(ChatFormatting.GREEN))); .append(Component.literal(new DecimalFormat("##").format(ItemNBTTool.getDouble(stack, "rpm", 0) + ItemNBTTool.getDouble(stack, "customRpm", 0))).withStyle(ChatFormatting.GREEN)));
} }
private static void addEditTips(List<Component> tooltip) {
tooltip.add(Component.literal(" ").withStyle(ChatFormatting.GRAY));
tooltip.add(Component.translatable("des.superbwarfare.tips.edit", "[" + ModKeyMappings.EDIT_MODE.getKey().getDisplayName().getString() + "]").withStyle(ChatFormatting.LIGHT_PURPLE));
}
private static void addLevelTips(List<Component> tooltip, ItemStack stack) { private static void addLevelTips(List<Component> tooltip, ItemStack stack) {
int level = ItemNBTTool.getInt(stack, "Level", 0); int level = ItemNBTTool.getInt(stack, "Level", 0);
double rate = ItemNBTTool.getDouble(stack, "Exp", 0) / (20 * Math.pow(level, 2) + 160 * level + 20); double rate = ItemNBTTool.getDouble(stack, "Exp", 0) / (20 * Math.pow(level, 2) + 160 * level + 20);
@ -221,34 +161,6 @@ public class TooltipTool {
} }
} }
public static void addBocekTips(List<Component> tooltip, ItemStack stack) {
tooltip.add(Component.literal(""));
boolean slug = false;
var perk = PerkHelper.getPerkByType(stack, Perk.Type.AMMO);
if (perk instanceof AmmoPerk ammoPerk && ammoPerk.slug) {
slug = true;
}
double total = ItemNBTTool.getDouble(stack, "damage", 0) * perkDamage(stack);
if (slug) {
tooltip.add(Component.translatable("des.superbwarfare.tips.damage").withStyle(ChatFormatting.GRAY)
.append(Component.literal("").withStyle(ChatFormatting.RESET))
.append(Component.literal(new DecimalFormat("##.#").format(total) + (heBullet(stack) ? " + " + new DecimalFormat("##.#").format(0.8 * total * (1 + 0.1 * heBulletLevel(stack))) : "")).withStyle(ChatFormatting.GREEN)));
} else {
tooltip.add(Component.translatable("des.superbwarfare.tips.damage").withStyle(ChatFormatting.GRAY)
.append(Component.literal("").withStyle(ChatFormatting.RESET))
.append(Component.literal(new DecimalFormat("##.#").format(total * 0.1) + " * 10").withStyle(ChatFormatting.GREEN))
.append(Component.literal(" / ").withStyle(ChatFormatting.RESET))
.append(Component.literal(new DecimalFormat("##.#").format(total)).withStyle(ChatFormatting.GREEN)));
}
addLevelTips(tooltip, stack);
addBypassTips(tooltip, stack);
addPerkTips(tooltip, stack);
}
public static void addSentinelTips(List<Component> tooltip, ItemStack stack) { public static void addSentinelTips(List<Component> tooltip, ItemStack stack) {
tooltip.add(Component.literal("")); tooltip.add(Component.literal(""));
@ -308,18 +220,4 @@ public class TooltipTool {
); );
} }
public static void addLauncherTips(List<Component> tooltip, ItemStack stack) {
tooltip.add(Component.literal(""));
double damage = ItemNBTTool.getDouble(stack, "damage", 0);
tooltip.add(Component.translatable("des.superbwarfare.tips.damage").withStyle(ChatFormatting.GRAY)
.append(Component.literal("").withStyle(ChatFormatting.RESET))
.append(Component.literal(new DecimalFormat("##.#").format(damage)).withStyle(ChatFormatting.GREEN)));
addLevelTips(tooltip, stack);
addPerkTips(tooltip, stack);
}
} }

View file

@ -5,6 +5,5 @@
"mag": 1, "mag": 1,
"weight": 10, "weight": 10,
"EmptyReloadTime": 78, "EmptyReloadTime": 78,
"damage": 700, "damage": 700
"BypassesArmor": 1
} }

View file

@ -6,6 +6,5 @@
"velocity": 4, "velocity": 4,
"mag": 1, "mag": 1,
"weight": 7, "weight": 7,
"EmptyReloadTime": 103, "EmptyReloadTime": 103
"BypassesArmor": 1
} }