添加FE component
This commit is contained in:
parent
221eed727f
commit
f0e6e4f100
4 changed files with 144 additions and 10 deletions
|
@ -4,6 +4,7 @@ import net.mcreator.superbwarfare.client.tooltip.*;
|
|||
import net.mcreator.superbwarfare.client.tooltip.component.BocekImageComponent;
|
||||
import net.mcreator.superbwarfare.client.tooltip.component.GunImageComponent;
|
||||
import net.mcreator.superbwarfare.client.tooltip.component.ShotgunImageComponent;
|
||||
import net.mcreator.superbwarfare.client.tooltip.component.EnergyImageComponent;
|
||||
import net.minecraftforge.api.distmarker.Dist;
|
||||
import net.minecraftforge.client.event.RegisterClientTooltipComponentFactoriesEvent;
|
||||
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
||||
|
@ -17,6 +18,7 @@ public class ClientRenderHandler {
|
|||
event.register(GunImageComponent.class, ClientGunImageTooltip::new);
|
||||
event.register(ShotgunImageComponent.class, ClientShotgunImageTooltip::new);
|
||||
event.register(BocekImageComponent.class, ClientBocekImageTooltip::new);
|
||||
event.register(EnergyImageComponent.class, ClientEnergyImageTooltip::new);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -0,0 +1,107 @@
|
|||
package net.mcreator.superbwarfare.client.tooltip;
|
||||
|
||||
import net.mcreator.superbwarfare.client.tooltip.component.GunImageComponent;
|
||||
import net.minecraft.ChatFormatting;
|
||||
import net.minecraft.client.gui.Font;
|
||||
import net.minecraft.client.gui.GuiGraphics;
|
||||
import net.minecraft.client.gui.screens.Screen;
|
||||
import net.minecraft.network.chat.Component;
|
||||
import net.minecraft.network.chat.MutableComponent;
|
||||
import net.minecraft.util.Mth;
|
||||
import net.minecraftforge.common.capabilities.ForgeCapabilities;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class ClientEnergyImageTooltip extends ClientGunImageTooltip {
|
||||
|
||||
public ClientEnergyImageTooltip(GunImageComponent tooltip) {
|
||||
super(tooltip);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void renderImage(@NotNull Font font, int x, int y, GuiGraphics guiGraphics) {
|
||||
guiGraphics.pose().pushPose();
|
||||
|
||||
renderDamageAndRpmTooltip(font, guiGraphics, x, y);
|
||||
renderLevelAndUpgradePointTooltip(font, guiGraphics, x, y + 10);
|
||||
|
||||
int yo = 20;
|
||||
if (shouldRenderBypassAndHeadshotTooltip()) {
|
||||
renderBypassAndHeadshotTooltip(font, guiGraphics, x, y + yo);
|
||||
yo += 10;
|
||||
}
|
||||
|
||||
if (shouldRenderEnergyTooltip()) {
|
||||
yo += 10;
|
||||
renderEnergyTooltip(font, guiGraphics, x, y + yo);
|
||||
}
|
||||
|
||||
if (shouldRenderEditTooltip()) {
|
||||
renderWeaponEditTooltip(font, guiGraphics, x, y + yo);
|
||||
yo += 20;
|
||||
}
|
||||
|
||||
if (shouldRenderPerks()) {
|
||||
if (!Screen.hasShiftDown()) {
|
||||
renderPerksShortcut(font, guiGraphics, x, y + yo);
|
||||
} else {
|
||||
renderPerks(font, guiGraphics, x, y + yo);
|
||||
}
|
||||
}
|
||||
|
||||
guiGraphics.pose().popPose();
|
||||
}
|
||||
|
||||
protected boolean shouldRenderEnergyTooltip() {
|
||||
return stack.getCapability(ForgeCapabilities.ENERGY).isPresent() && stack.getCapability(ForgeCapabilities.ENERGY).resolve().isPresent();
|
||||
}
|
||||
|
||||
protected void renderEnergyTooltip(Font font, GuiGraphics guiGraphics, int x, int y) {
|
||||
guiGraphics.drawString(font, getEnergyComponent(), x, y, 0xFFFFFF);
|
||||
}
|
||||
|
||||
protected Component getEnergyComponent() {
|
||||
assert stack.getCapability(ForgeCapabilities.ENERGY).resolve().isPresent();
|
||||
var storage = stack.getCapability(ForgeCapabilities.ENERGY).resolve().get();
|
||||
int energy = storage.getEnergyStored();
|
||||
int maxEnergy = storage.getMaxEnergyStored();
|
||||
float percentage = Mth.clamp((float) energy / maxEnergy, 0, 1);
|
||||
MutableComponent component = Component.literal("");
|
||||
|
||||
ChatFormatting format;
|
||||
if (percentage <= .2f) {
|
||||
format = ChatFormatting.RED;
|
||||
} else if (percentage <= .6f) {
|
||||
format = ChatFormatting.YELLOW;
|
||||
} else {
|
||||
format = ChatFormatting.GREEN;
|
||||
}
|
||||
|
||||
int count = (int) (percentage * 50);
|
||||
for (int i = 0; i < count; i++) {
|
||||
component.append(Component.literal("|").withStyle(format));
|
||||
}
|
||||
component.append(Component.literal("").withStyle(ChatFormatting.RESET));
|
||||
for (int i = 0; i < 50 - count; i++) {
|
||||
component.append(Component.literal("|").withStyle(ChatFormatting.GRAY));
|
||||
}
|
||||
|
||||
component.append(Component.literal(" " + energy + "/" + maxEnergy + " FE").withStyle(ChatFormatting.GRAY));
|
||||
|
||||
return component;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getHeight() {
|
||||
int height = super.getHeight();
|
||||
if (shouldRenderEnergyTooltip()) height += 20;
|
||||
return height;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getWidth(@NotNull Font font) {
|
||||
int width = super.getWidth(font);
|
||||
if (shouldRenderEnergyTooltip())
|
||||
width = Math.max(width, font.width(getEnergyComponent().getVisualOrderText()) + 10);
|
||||
return width;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,19 @@
|
|||
package net.mcreator.superbwarfare.client.tooltip.component;
|
||||
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
|
||||
public class EnergyImageComponent extends GunImageComponent {
|
||||
|
||||
public int width;
|
||||
public int height;
|
||||
public ItemStack stack;
|
||||
|
||||
public EnergyImageComponent(int width, int height, ItemStack stack) {
|
||||
super(width, height, stack);
|
||||
}
|
||||
|
||||
public EnergyImageComponent(ItemStack stack) {
|
||||
this(32, 16, stack);
|
||||
}
|
||||
|
||||
}
|
|
@ -3,6 +3,7 @@ package net.mcreator.superbwarfare.item.gun.special;
|
|||
import net.mcreator.superbwarfare.ModUtils;
|
||||
import net.mcreator.superbwarfare.client.PoseTool;
|
||||
import net.mcreator.superbwarfare.client.renderer.item.TaserItemRenderer;
|
||||
import net.mcreator.superbwarfare.client.tooltip.component.EnergyImageComponent;
|
||||
import net.mcreator.superbwarfare.energy.ItemEnergyProvider;
|
||||
import net.mcreator.superbwarfare.event.ClientEventHandler;
|
||||
import net.mcreator.superbwarfare.init.ModItems;
|
||||
|
@ -14,13 +15,11 @@ 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.nbt.CompoundTag;
|
||||
import net.minecraft.network.chat.Component;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.sounds.SoundEvent;
|
||||
import net.minecraft.world.InteractionHand;
|
||||
|
@ -28,11 +27,16 @@ 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.inventory.tooltip.TooltipComponent;
|
||||
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 net.minecraftforge.common.capabilities.ForgeCapabilities;
|
||||
import net.minecraftforge.common.capabilities.ICapabilityProvider;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import software.bernie.geckolib.animatable.GeoItem;
|
||||
import software.bernie.geckolib.core.animatable.instance.AnimatableInstanceCache;
|
||||
import software.bernie.geckolib.core.animation.AnimatableManager;
|
||||
|
@ -42,13 +46,14 @@ 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.Optional;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
import java.util.function.Consumer;
|
||||
import java.util.function.Supplier;
|
||||
|
||||
public class TaserItem extends GunItem implements GeoItem, AnimatedItem {
|
||||
|
||||
public static final int MAX_ENERGY = 12000;
|
||||
|
||||
private final AnimatableInstanceCache cache = GeckoLibUtil.createInstanceCache(this);
|
||||
|
@ -206,7 +211,7 @@ public class TaserItem extends GunItem implements GeoItem, AnimatedItem {
|
|||
|
||||
@Override
|
||||
public ResourceLocation getGunIcon() {
|
||||
return new ResourceLocation(ModUtils.MODID, "textures/gun_icon/taser_icon.png");
|
||||
return ModUtils.loc("textures/gun_icon/taser_icon.png");
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -214,11 +219,6 @@ public class TaserItem extends GunItem implements GeoItem, AnimatedItem {
|
|||
return "TASER";
|
||||
}
|
||||
|
||||
@Override
|
||||
public void appendHoverText(ItemStack stack, Level world, List<Component> list, TooltipFlag flag) {
|
||||
TooltipTool.addTaserTips(list, stack);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canApplyPerk(Perk perk) {
|
||||
return switch (perk.type) {
|
||||
|
@ -227,4 +227,10 @@ public class TaserItem extends GunItem implements GeoItem, AnimatedItem {
|
|||
case DAMAGE -> perk == ModPerks.VOLT_OVERLOAD.get();
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NotNull Optional<TooltipComponent> getTooltipImage(@NotNull ItemStack pStack) {
|
||||
return Optional.of(new EnergyImageComponent(pStack));
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue