From 78698441e933d249844e73d240c4378e4b08ccb0 Mon Sep 17 00:00:00 2001 From: 17146 <1714673995@qq.com> Date: Fri, 22 Nov 2024 20:01:35 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E7=89=B9=E6=AE=8A=E6=AD=A6?= =?UTF-8?q?=E5=99=A8=E7=9A=84tooltip?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../client/tooltip/ClientImageTooltip.java | 73 +++++++++++-- .../superbwarfare/item/gun/GunItem.java | 9 -- .../item/gun/handgun/Trachelium.java | 7 +- .../item/gun/launcher/JavelinItem.java | 12 +-- .../item/gun/launcher/M79Item.java | 17 ++- .../item/gun/launcher/RpgItem.java | 23 ++-- .../item/gun/shotgun/Aa12Item.java | 15 +-- .../item/gun/shotgun/AbekiriItem.java | 21 ++-- .../item/gun/shotgun/M870Item.java | 19 ++-- .../item/gun/special/BocekItem.java | 12 +-- .../superbwarfare/tools/TooltipTool.java | 102 ------------------ .../data/superbwarfare/guns/javelin.json | 3 +- .../data/superbwarfare/guns/rpg.json | 3 +- 13 files changed, 108 insertions(+), 208 deletions(-) diff --git a/src/main/java/net/mcreator/superbwarfare/client/tooltip/ClientImageTooltip.java b/src/main/java/net/mcreator/superbwarfare/client/tooltip/ClientImageTooltip.java index 38391125e..d0c1aadc6 100644 --- a/src/main/java/net/mcreator/superbwarfare/client/tooltip/ClientImageTooltip.java +++ b/src/main/java/net/mcreator/superbwarfare/client/tooltip/ClientImageTooltip.java @@ -1,5 +1,6 @@ package net.mcreator.superbwarfare.client.tooltip; +import net.mcreator.superbwarfare.init.ModItems; import net.mcreator.superbwarfare.init.ModKeyMappings; import net.mcreator.superbwarfare.init.ModPerks; import net.mcreator.superbwarfare.init.ModTags; @@ -21,6 +22,7 @@ import org.jetbrains.annotations.NotNull; import java.text.DecimalFormat; +// TODO 等nbt重置后,修改nbt位置 public class ClientImageTooltip implements ClientTooltipComponent { 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; } - // TODO 等nbt重置后,修改nbt位置 - /** * 渲染武器伤害和射速 */ @@ -88,6 +88,13 @@ public class ClientImageTooltip implements ClientTooltipComponent { * 获取武器伤害的文本组件 */ 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); return Component.translatable("des.superbwarfare.tips.damage").withStyle(ChatFormatting.GRAY) .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)); } + 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)); return Component.translatable("des.superbwarfare.tips.upgrade_point").withStyle(ChatFormatting.GRAY) .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); - int yOffset = -10; + int yOffset = -5; Perk ammoPerk = PerkHelper.getPerkByType(stack, Perk.Type.AMMO); if (ammoPerk != null && PerkHelper.getPerkItem(ammoPerk).isPresent()) { - yOffset += 30; + yOffset += 25; var ammoItem = PerkHelper.getPerkItem(ammoPerk).get().get(); 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); if (funcPerk != null && PerkHelper.getPerkItem(funcPerk).isPresent()) { - yOffset += 30; + yOffset += 25; var funcItem = PerkHelper.getPerkItem(funcPerk).get().get(); 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); if (damagePerk != null && PerkHelper.getPerkItem(damagePerk).isPresent()) { - yOffset += 30; + yOffset += 25; var damageItem = PerkHelper.getPerkItem(damagePerk).get().get(); guiGraphics.renderItem(damageItem.getDefaultInstance(), x, y + 4 + yOffset); @@ -410,13 +463,13 @@ public class ClientImageTooltip implements ClientTooltipComponent { } else { height += 20; if (PerkHelper.getPerkByType(stack, Perk.Type.AMMO) != null) { - height += 30; + height += 25; } if (PerkHelper.getPerkByType(stack, Perk.Type.FUNCTIONAL) != null) { - height += 30; + height += 25; } if (PerkHelper.getPerkByType(stack, Perk.Type.DAMAGE) != null) { - height += 30; + height += 25; } } } diff --git a/src/main/java/net/mcreator/superbwarfare/item/gun/GunItem.java b/src/main/java/net/mcreator/superbwarfare/item/gun/GunItem.java index 5c797d5bd..c7dd1d8f6 100644 --- a/src/main/java/net/mcreator/superbwarfare/item/gun/GunItem.java +++ b/src/main/java/net/mcreator/superbwarfare/item/gun/GunItem.java @@ -11,10 +11,8 @@ import net.mcreator.superbwarfare.perk.Perk; import net.mcreator.superbwarfare.perk.PerkHelper; import net.mcreator.superbwarfare.tools.GunsTool; import net.mcreator.superbwarfare.tools.ItemNBTTool; -import net.mcreator.superbwarfare.tools.TooltipTool; import net.minecraft.core.BlockPos; import net.minecraft.nbt.CompoundTag; -import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; import net.minecraft.sounds.SoundEvent; 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.item.Item; import net.minecraft.world.item.ItemStack; -import net.minecraft.world.item.TooltipFlag; import net.minecraft.world.item.enchantment.Enchantment; import net.minecraft.world.level.Level; 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 org.jetbrains.annotations.NotNull; -import java.util.List; import java.util.Optional; import java.util.Set; import java.util.UUID; @@ -119,11 +115,6 @@ public abstract class GunItem extends Item { return map; } -// @Override -// public void appendHoverText(ItemStack stack, Level world, List list, TooltipFlag flag) { -// TooltipTool.addGunTips(list, stack); -// } - @Override public @NotNull Optional getTooltipImage(@NotNull ItemStack pStack) { return Optional.of(new ImageTooltip(pStack)); diff --git a/src/main/java/net/mcreator/superbwarfare/item/gun/handgun/Trachelium.java b/src/main/java/net/mcreator/superbwarfare/item/gun/handgun/Trachelium.java index f453f5c9d..b95a07fc8 100644 --- a/src/main/java/net/mcreator/superbwarfare/item/gun/handgun/Trachelium.java +++ b/src/main/java/net/mcreator/superbwarfare/item/gun/handgun/Trachelium.java @@ -44,6 +44,7 @@ import java.util.Set; import java.util.function.Consumer; public class Trachelium extends GunItem implements GeoItem, AnimatedItem { + private final AnimatableInstanceCache cache = GeckoLibUtil.createInstanceCache(this); public static ItemDisplayContext transformType; @@ -131,14 +132,13 @@ public class Trachelium extends GunItem implements GeoItem, AnimatedItem { @Override public void appendHoverText(ItemStack stack, @Nullable Level level, List 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_2").withStyle(ChatFormatting.GRAY)); 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_4").withStyle(Style.EMPTY.withColor(0xF4F0FF))); - - TooltipTool.addGunTips(list, stack); } public static ItemStack getGunInstance() { @@ -160,7 +160,7 @@ public class Trachelium extends GunItem implements GeoItem, AnimatedItem { @Override public ResourceLocation getGunIcon() { - return new ResourceLocation(ModUtils.MODID, "textures/gun_icon/trachelium_icon.png"); + return ModUtils.loc("textures/gun_icon/trachelium_icon.png"); } @Override @@ -172,4 +172,5 @@ public class Trachelium extends GunItem implements GeoItem, AnimatedItem { public boolean canApplyPerk(Perk perk) { return PerkHelper.HANDGUN_PERKS.test(perk); } + } \ No newline at end of file diff --git a/src/main/java/net/mcreator/superbwarfare/item/gun/launcher/JavelinItem.java b/src/main/java/net/mcreator/superbwarfare/item/gun/launcher/JavelinItem.java index f3c235248..130ad8bbb 100644 --- a/src/main/java/net/mcreator/superbwarfare/item/gun/launcher/JavelinItem.java +++ b/src/main/java/net/mcreator/superbwarfare/item/gun/launcher/JavelinItem.java @@ -16,7 +16,6 @@ import net.minecraft.client.Minecraft; import net.minecraft.client.model.HumanoidModel; import net.minecraft.client.player.LocalPlayer; import net.minecraft.client.renderer.BlockEntityWithoutLevelRenderer; -import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerPlayer; 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.item.ItemDisplayContext; 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 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.util.GeckoLibUtil; -import java.util.List; import java.util.Set; import java.util.function.Consumer; public class JavelinItem extends GunItem implements GeoItem, AnimatedItem { + private final AnimatableInstanceCache cache = GeckoLibUtil.createInstanceCache(this); public static ItemDisplayContext transformType; @@ -181,7 +179,7 @@ public class JavelinItem extends GunItem implements GeoItem, AnimatedItem { @Override public ResourceLocation getGunIcon() { - return new ResourceLocation(ModUtils.MODID, "textures/gun_icon/javelin_icon.png"); + return ModUtils.loc("textures/gun_icon/javelin_icon.png"); } @Override @@ -189,13 +187,9 @@ public class JavelinItem extends GunItem implements GeoItem, AnimatedItem { return "FGM-148"; } - @Override - public void appendHoverText(ItemStack stack, Level world, List list, TooltipFlag flag) { - TooltipTool.addLauncherTips(list, stack); - } - @Override public boolean canApplyPerk(Perk perk) { return PerkHelper.LAUNCHER_PERKS.test(perk); } + } \ No newline at end of file diff --git a/src/main/java/net/mcreator/superbwarfare/item/gun/launcher/M79Item.java b/src/main/java/net/mcreator/superbwarfare/item/gun/launcher/M79Item.java index 95a26df83..12ae62448 100644 --- a/src/main/java/net/mcreator/superbwarfare/item/gun/launcher/M79Item.java +++ b/src/main/java/net/mcreator/superbwarfare/item/gun/launcher/M79Item.java @@ -12,12 +12,10 @@ import net.mcreator.superbwarfare.item.gun.GunItem; import net.mcreator.superbwarfare.perk.Perk; import net.mcreator.superbwarfare.perk.PerkHelper; import net.mcreator.superbwarfare.tools.GunsTool; -import net.mcreator.superbwarfare.tools.TooltipTool; import net.minecraft.client.Minecraft; import net.minecraft.client.model.HumanoidModel; import net.minecraft.client.player.LocalPlayer; import net.minecraft.client.renderer.BlockEntityWithoutLevelRenderer; -import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; import net.minecraft.sounds.SoundEvent; 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.LivingEntity; 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.minecraftforge.client.extensions.common.IClientItemExtensions; 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.util.GeckoLibUtil; -import java.util.List; import java.util.Set; import java.util.function.Consumer; public class M79Item extends GunItem implements GeoItem, AnimatedItem { + private final AnimatableInstanceCache cache = GeckoLibUtil.createInstanceCache(this); public static ItemDisplayContext transformType; @@ -153,7 +154,7 @@ public class M79Item extends GunItem implements GeoItem, AnimatedItem { @Override public ResourceLocation getGunIcon() { - return new ResourceLocation(ModUtils.MODID, "textures/gun_icon/m79_icon.png"); + return ModUtils.loc("textures/gun_icon/m79_icon.png"); } @Override @@ -161,13 +162,9 @@ public class M79Item extends GunItem implements GeoItem, AnimatedItem { return "M79 LAUNCHER"; } - @Override - public void appendHoverText(ItemStack stack, Level world, List list, TooltipFlag flag) { - TooltipTool.addLauncherTips(list, stack); - } - @Override public boolean canApplyPerk(Perk perk) { return PerkHelper.LAUNCHER_PERKS.test(perk); } + } \ No newline at end of file diff --git a/src/main/java/net/mcreator/superbwarfare/item/gun/launcher/RpgItem.java b/src/main/java/net/mcreator/superbwarfare/item/gun/launcher/RpgItem.java index 9aa20baa4..7181825a6 100644 --- a/src/main/java/net/mcreator/superbwarfare/item/gun/launcher/RpgItem.java +++ b/src/main/java/net/mcreator/superbwarfare/item/gun/launcher/RpgItem.java @@ -12,12 +12,10 @@ import net.mcreator.superbwarfare.item.gun.GunItem; import net.mcreator.superbwarfare.perk.Perk; import net.mcreator.superbwarfare.perk.PerkHelper; import net.mcreator.superbwarfare.tools.GunsTool; -import net.mcreator.superbwarfare.tools.TooltipTool; import net.minecraft.client.Minecraft; import net.minecraft.client.model.HumanoidModel; import net.minecraft.client.player.LocalPlayer; import net.minecraft.client.renderer.BlockEntityWithoutLevelRenderer; -import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; import net.minecraft.sounds.SoundEvent; 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.LivingEntity; 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.minecraftforge.client.extensions.common.IClientItemExtensions; 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.util.GeckoLibUtil; -import java.util.List; import java.util.Set; import java.util.function.Consumer; public class RpgItem extends GunItem implements GeoItem, AnimatedItem { + private final AnimatableInstanceCache cache = GeckoLibUtil.createInstanceCache(this); public static ItemDisplayContext transformType; @@ -76,11 +77,7 @@ public class RpgItem extends GunItem implements GeoItem, AnimatedItem { if (player == null) return PlayState.STOP; ItemStack stack = player.getMainHandItem(); if (!stack.is(ModTags.Items.GUN)) return PlayState.STOP; - - var tag = stack.getOrCreateTag(); - - - + if (stack.getOrCreateTag().getBoolean("is_empty_reloading")) { return event.setAndContinue(RawAnimation.begin().thenPlay("animation.rpg.reload")); } @@ -167,7 +164,7 @@ public class RpgItem extends GunItem implements GeoItem, AnimatedItem { @Override public ResourceLocation getGunIcon() { - return new ResourceLocation(ModUtils.MODID, "textures/gun_icon/rpg_icon.png"); + return ModUtils.loc("textures/gun_icon/rpg_icon.png"); } @Override @@ -175,13 +172,9 @@ public class RpgItem extends GunItem implements GeoItem, AnimatedItem { return " RPG-7"; } - @Override - public void appendHoverText(ItemStack stack, Level world, List list, TooltipFlag flag) { - TooltipTool.addLauncherTips(list, stack); - } - @Override public boolean canApplyPerk(Perk perk) { return PerkHelper.LAUNCHER_PERKS.test(perk); } + } \ No newline at end of file diff --git a/src/main/java/net/mcreator/superbwarfare/item/gun/shotgun/Aa12Item.java b/src/main/java/net/mcreator/superbwarfare/item/gun/shotgun/Aa12Item.java index 716868aae..c6d3188f5 100644 --- a/src/main/java/net/mcreator/superbwarfare/item/gun/shotgun/Aa12Item.java +++ b/src/main/java/net/mcreator/superbwarfare/item/gun/shotgun/Aa12Item.java @@ -14,12 +14,10 @@ import net.mcreator.superbwarfare.perk.Perk; import net.mcreator.superbwarfare.perk.PerkHelper; import net.mcreator.superbwarfare.tools.GunsTool; import net.mcreator.superbwarfare.tools.RarityTool; -import net.mcreator.superbwarfare.tools.TooltipTool; import net.minecraft.client.Minecraft; import net.minecraft.client.model.HumanoidModel; import net.minecraft.client.player.LocalPlayer; import net.minecraft.client.renderer.BlockEntityWithoutLevelRenderer; -import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; import net.minecraft.sounds.SoundEvent; 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.ItemDisplayContext; 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 org.jetbrains.annotations.Nullable; import software.bernie.geckolib.animatable.GeoItem; import software.bernie.geckolib.core.animatable.instance.AnimatableInstanceCache; 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.util.GeckoLibUtil; -import java.util.List; import java.util.Set; import java.util.function.Consumer; public class Aa12Item extends GunItem implements GeoItem, AnimatedItem { + private final AnimatableInstanceCache cache = GeckoLibUtil.createInstanceCache(this); public String animationProcedure = "empty"; public static ItemDisplayContext transformType; @@ -133,11 +128,6 @@ public class Aa12Item extends GunItem implements GeoItem, AnimatedItem { return this.cache; } - @Override - public void appendHoverText(ItemStack stack, @Nullable Level level, List list, TooltipFlag flag) { - TooltipTool.addShotgunTips(list, stack); - } - @Override public Set getReloadSound() { 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 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 @@ -168,4 +158,5 @@ public class Aa12Item extends GunItem implements GeoItem, AnimatedItem { public boolean canApplyPerk(Perk perk) { return PerkHelper.SHOTGUN_PERKS.test(perk) || PerkHelper.MAGAZINE_PERKS.test(perk) || perk == ModPerks.DESPERADO.get(); } + } \ No newline at end of file diff --git a/src/main/java/net/mcreator/superbwarfare/item/gun/shotgun/AbekiriItem.java b/src/main/java/net/mcreator/superbwarfare/item/gun/shotgun/AbekiriItem.java index 2f9da831f..d19cc69ca 100644 --- a/src/main/java/net/mcreator/superbwarfare/item/gun/shotgun/AbekiriItem.java +++ b/src/main/java/net/mcreator/superbwarfare/item/gun/shotgun/AbekiriItem.java @@ -1,6 +1,7 @@ package net.mcreator.superbwarfare.item.gun.shotgun; import net.mcreator.superbwarfare.ModUtils; +import net.mcreator.superbwarfare.client.PoseTool; import net.mcreator.superbwarfare.client.renderer.item.AbekiriItemRenderer; import net.mcreator.superbwarfare.event.ClientEventHandler; 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.PerkHelper; 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.model.HumanoidModel; import net.minecraft.client.player.LocalPlayer; import net.minecraft.client.renderer.BlockEntityWithoutLevelRenderer; -import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; import net.minecraft.sounds.SoundEvent; import net.minecraft.world.InteractionHand; import net.minecraft.world.effect.MobEffects; import net.minecraft.world.entity.LivingEntity; -import net.minecraft.world.item.*; -import net.minecraft.world.level.Level; +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.minecraftforge.client.extensions.common.IClientItemExtensions; -import org.jetbrains.annotations.Nullable; import software.bernie.geckolib.animatable.GeoItem; import software.bernie.geckolib.core.animatable.instance.AnimatableInstanceCache; 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.util.GeckoLibUtil; -import java.util.List; import java.util.Set; import java.util.function.Consumer; public class AbekiriItem extends GunItem implements GeoItem, AnimatedItem { + private final AnimatableInstanceCache cache = GeckoLibUtil.createInstanceCache(this); public static ItemDisplayContext transformType; @@ -111,11 +110,6 @@ public class AbekiriItem extends GunItem implements GeoItem, AnimatedItem { return this.cache; } - @Override - public void appendHoverText(ItemStack stack, @Nullable Level level, List list, TooltipFlag flag) { - TooltipTool.addShotgunTips(list, stack); - } - public static ItemStack getGunInstance() { ItemStack stack = new ItemStack(ModItems.ABEKIRI.get()); GunsTool.initCreativeGun(stack, ModItems.ABEKIRI.getId().getPath()); @@ -128,7 +122,7 @@ public class AbekiriItem extends GunItem implements GeoItem, AnimatedItem { @Override public ResourceLocation getGunIcon() { - return new ResourceLocation(ModUtils.MODID, "textures/gun_icon/abekiri_icon.png"); + return ModUtils.loc("textures/gun_icon/abekiri_icon.png"); } @Override @@ -140,4 +134,5 @@ public class AbekiriItem extends GunItem implements GeoItem, AnimatedItem { public boolean canApplyPerk(Perk perk) { return PerkHelper.SHOTGUN_PERKS.test(perk); } + } diff --git a/src/main/java/net/mcreator/superbwarfare/item/gun/shotgun/M870Item.java b/src/main/java/net/mcreator/superbwarfare/item/gun/shotgun/M870Item.java index 7111707b2..373f222ad 100644 --- a/src/main/java/net/mcreator/superbwarfare/item/gun/shotgun/M870Item.java +++ b/src/main/java/net/mcreator/superbwarfare/item/gun/shotgun/M870Item.java @@ -12,21 +12,20 @@ import net.mcreator.superbwarfare.item.gun.GunItem; import net.mcreator.superbwarfare.perk.Perk; import net.mcreator.superbwarfare.perk.PerkHelper; import net.mcreator.superbwarfare.tools.GunsTool; -import net.mcreator.superbwarfare.tools.TooltipTool; import net.minecraft.client.Minecraft; import net.minecraft.client.model.HumanoidModel; import net.minecraft.client.player.LocalPlayer; import net.minecraft.client.renderer.BlockEntityWithoutLevelRenderer; -import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; import net.minecraft.sounds.SoundEvent; import net.minecraft.world.InteractionHand; import net.minecraft.world.effect.MobEffects; import net.minecraft.world.entity.LivingEntity; -import net.minecraft.world.item.*; -import net.minecraft.world.level.Level; +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.minecraftforge.client.extensions.common.IClientItemExtensions; -import org.jetbrains.annotations.Nullable; import software.bernie.geckolib.animatable.GeoItem; import software.bernie.geckolib.core.animatable.instance.AnimatableInstanceCache; 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.util.GeckoLibUtil; -import java.util.List; import java.util.Set; import java.util.function.Consumer; public class M870Item extends GunItem implements GeoItem, AnimatedItem { + private final AnimatableInstanceCache cache = GeckoLibUtil.createInstanceCache(this); public static ItemDisplayContext transformType; @@ -138,11 +137,6 @@ public class M870Item extends GunItem implements GeoItem, AnimatedItem { return this.cache; } - @Override - public void appendHoverText(ItemStack stack, @Nullable Level level, List list, TooltipFlag flag) { - TooltipTool.addShotgunTips(list, stack); - } - @Override public Set getReloadSound() { return Set.of(ModSounds.M_870_PREPARE_LOAD.get(), @@ -162,7 +156,7 @@ public class M870Item extends GunItem implements GeoItem, AnimatedItem { @Override public ResourceLocation getGunIcon() { - return new ResourceLocation(ModUtils.MODID, "textures/gun_icon/m870_icon.png"); + return ModUtils.loc("textures/gun_icon/m870_icon.png"); } @Override @@ -174,4 +168,5 @@ public class M870Item extends GunItem implements GeoItem, AnimatedItem { public boolean canApplyPerk(Perk perk) { return PerkHelper.SHOTGUN_PERKS.test(perk) || PerkHelper.MAGAZINE_PERKS.test(perk); } + } \ No newline at end of file diff --git a/src/main/java/net/mcreator/superbwarfare/item/gun/special/BocekItem.java b/src/main/java/net/mcreator/superbwarfare/item/gun/special/BocekItem.java index 3c4e5c71f..3a60bb8c8 100644 --- a/src/main/java/net/mcreator/superbwarfare/item/gun/special/BocekItem.java +++ b/src/main/java/net/mcreator/superbwarfare/item/gun/special/BocekItem.java @@ -10,13 +10,11 @@ import net.mcreator.superbwarfare.item.AnimatedItem; import net.mcreator.superbwarfare.item.gun.GunItem; import net.mcreator.superbwarfare.perk.Perk; import net.mcreator.superbwarfare.tools.GunsTool; -import net.mcreator.superbwarfare.tools.TooltipTool; import net.minecraft.client.Minecraft; import net.minecraft.client.model.HumanoidModel; import net.minecraft.client.player.LocalPlayer; import net.minecraft.client.renderer.BlockEntityWithoutLevelRenderer; import net.minecraft.nbt.CompoundTag; -import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.InteractionHand; 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.util.GeckoLibUtil; -import java.util.List; import java.util.function.Consumer; public class BocekItem extends GunItem implements GeoItem, AnimatedItem { + private final AnimatableInstanceCache cache = GeckoLibUtil.createInstanceCache(this); public static ItemDisplayContext transformType; @@ -96,11 +94,6 @@ public class BocekItem extends GunItem implements GeoItem, AnimatedItem { return this.cache; } - @Override - public void appendHoverText(ItemStack stack, Level world, List list, TooltipFlag flag) { - TooltipTool.addBocekTips(list, stack); - } - public static int getAmmoCount(Player player) { int count = 0; for (var inv : player.getInventory().items) { @@ -151,7 +144,7 @@ public class BocekItem extends GunItem implements GeoItem, AnimatedItem { @Override public ResourceLocation getGunIcon() { - return new ResourceLocation(ModUtils.MODID, "textures/gun_icon/bocek_icon.png"); + return ModUtils.loc("textures/gun_icon/bocek_icon.png"); } @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(); }; } + } \ No newline at end of file diff --git a/src/main/java/net/mcreator/superbwarfare/tools/TooltipTool.java b/src/main/java/net/mcreator/superbwarfare/tools/TooltipTool.java index 30b166c17..a6e21d103 100644 --- a/src/main/java/net/mcreator/superbwarfare/tools/TooltipTool.java +++ b/src/main/java/net/mcreator/superbwarfare/tools/TooltipTool.java @@ -1,6 +1,5 @@ package net.mcreator.superbwarfare.tools; -import net.mcreator.superbwarfare.init.ModKeyMappings; import net.mcreator.superbwarfare.init.ModPerks; import net.mcreator.superbwarfare.init.ModTags; import net.mcreator.superbwarfare.perk.AmmoPerk; @@ -47,71 +46,12 @@ public class TooltipTool { return 0; } - public static void addGunTips(List 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 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 tooltip, ItemStack stack) { tooltip.add(Component.translatable("des.superbwarfare.tips.rpm").withStyle(ChatFormatting.GRAY) .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))); } - private static void addEditTips(List 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 tooltip, ItemStack stack) { int level = ItemNBTTool.getInt(stack, "Level", 0); 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 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 tooltip, ItemStack stack) { tooltip.add(Component.literal("")); @@ -308,18 +220,4 @@ public class TooltipTool { ); } - public static void addLauncherTips(List 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); - - } - } diff --git a/src/main/resources/data/superbwarfare/guns/javelin.json b/src/main/resources/data/superbwarfare/guns/javelin.json index f8c180239..041b6eba0 100644 --- a/src/main/resources/data/superbwarfare/guns/javelin.json +++ b/src/main/resources/data/superbwarfare/guns/javelin.json @@ -5,6 +5,5 @@ "mag": 1, "weight": 10, "EmptyReloadTime": 78, - "damage": 700, - "BypassesArmor": 1 + "damage": 700 } \ No newline at end of file diff --git a/src/main/resources/data/superbwarfare/guns/rpg.json b/src/main/resources/data/superbwarfare/guns/rpg.json index d254fd9f5..a786cc02d 100644 --- a/src/main/resources/data/superbwarfare/guns/rpg.json +++ b/src/main/resources/data/superbwarfare/guns/rpg.json @@ -6,6 +6,5 @@ "velocity": 4, "mag": 1, "weight": 7, - "EmptyReloadTime": 103, - "BypassesArmor": 1 + "EmptyReloadTime": 103 } \ No newline at end of file