替换泰瑟木仓能量为FE
This commit is contained in:
parent
9669ea45fe
commit
5712ab0894
4 changed files with 92 additions and 19 deletions
|
@ -1,18 +1,22 @@
|
|||
package net.mcreator.superbwarfare.client.model.item;
|
||||
|
||||
import net.mcreator.superbwarfare.ModUtils;
|
||||
import net.mcreator.superbwarfare.init.ModPerks;
|
||||
import net.mcreator.superbwarfare.init.ModTags;
|
||||
import net.mcreator.superbwarfare.item.gun.special.TaserItem;
|
||||
import net.mcreator.superbwarfare.tools.ItemNBTTool;
|
||||
import net.mcreator.superbwarfare.perk.PerkHelper;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.util.Mth;
|
||||
import net.minecraft.world.entity.player.Player;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraftforge.common.capabilities.ForgeCapabilities;
|
||||
import software.bernie.geckolib.core.animatable.model.CoreGeoBone;
|
||||
import software.bernie.geckolib.core.animation.AnimationState;
|
||||
import software.bernie.geckolib.model.GeoModel;
|
||||
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
|
||||
public class TaserItemModel extends GeoModel<TaserItem> {
|
||||
|
||||
public static final String TAG_POWER = "Power";
|
||||
|
@ -45,9 +49,16 @@ public class TaserItemModel extends GeoModel<TaserItem> {
|
|||
ItemStack stack = player.getMainHandItem();
|
||||
if (!stack.is(ModTags.Items.GUN)) return;
|
||||
|
||||
bar.setScaleX((float) ItemNBTTool.getInt(stack, TAG_POWER, 1200) / 1200);
|
||||
AtomicInteger energy = new AtomicInteger(0);
|
||||
stack.getCapability(ForgeCapabilities.ENERGY).ifPresent(
|
||||
e -> energy.set(e.getEnergyStored())
|
||||
);
|
||||
|
||||
if (ItemNBTTool.getInt(stack, TAG_POWER, 1200) >= 400) {
|
||||
int perkLevel = PerkHelper.getItemPerkLevel(ModPerks.VOLT_OVERLOAD.get(), stack);
|
||||
|
||||
bar.setScaleX((float) energy.get() / 12000);
|
||||
|
||||
if (energy.get() >= 2000 + 200 * perkLevel) {
|
||||
bluecover.setScaleX(1);
|
||||
bluecover.setScaleY(1);
|
||||
bluecover.setScaleZ(1);
|
||||
|
|
|
@ -4,6 +4,7 @@ import com.google.common.collect.HashMultimap;
|
|||
import com.google.common.collect.Multimap;
|
||||
import net.mcreator.superbwarfare.ModUtils;
|
||||
import net.mcreator.superbwarfare.client.renderer.item.TaserItemRenderer;
|
||||
import net.mcreator.superbwarfare.energy.ItemEnergyProvider;
|
||||
import net.mcreator.superbwarfare.init.ModItems;
|
||||
import net.mcreator.superbwarfare.init.ModPerks;
|
||||
import net.mcreator.superbwarfare.init.ModSounds;
|
||||
|
@ -13,15 +14,16 @@ 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.ItemNBTTool;
|
||||
import net.mcreator.superbwarfare.tools.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.nbt.CompoundTag;
|
||||
import net.minecraft.network.chat.Component;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.sounds.SoundEvent;
|
||||
import net.minecraft.util.Mth;
|
||||
import net.minecraft.world.InteractionHand;
|
||||
import net.minecraft.world.effect.MobEffects;
|
||||
import net.minecraft.world.entity.Entity;
|
||||
|
@ -31,12 +33,11 @@ import net.minecraft.world.entity.ai.attributes.Attribute;
|
|||
import net.minecraft.world.entity.ai.attributes.AttributeModifier;
|
||||
import net.minecraft.world.entity.ai.attributes.Attributes;
|
||||
import net.minecraft.world.entity.player.Player;
|
||||
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.item.*;
|
||||
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 software.bernie.geckolib.animatable.GeoItem;
|
||||
import software.bernie.geckolib.core.animatable.instance.AnimatableInstanceCache;
|
||||
import software.bernie.geckolib.core.animation.AnimatableManager;
|
||||
|
@ -46,29 +47,50 @@ 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.UUID;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
import java.util.function.Consumer;
|
||||
import java.util.function.Supplier;
|
||||
|
||||
public class TaserItem extends GunItem implements GeoItem, AnimatedItem {
|
||||
private final AnimatableInstanceCache cache = GeckoLibUtil.createInstanceCache(this);
|
||||
public String animationProcedure = "empty";
|
||||
public static ItemDisplayContext transformType;
|
||||
public static final String TAG_POWER = "Power";
|
||||
public static final int MAX_POWER_SIZE = 1200;
|
||||
private final Supplier<Integer> energyCapacity;
|
||||
|
||||
public TaserItem() {
|
||||
super(new Item.Properties().stacksTo(1).rarity(Rarity.COMMON));
|
||||
this.energyCapacity = () -> 12000;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isBarVisible(ItemStack pStack) {
|
||||
return ItemNBTTool.getInt(pStack, TAG_POWER, 1200) != 1200;
|
||||
if (!pStack.getCapability(ForgeCapabilities.ENERGY).isPresent()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
AtomicInteger energy = new AtomicInteger(0);
|
||||
pStack.getCapability(ForgeCapabilities.ENERGY).ifPresent(
|
||||
e -> energy.set(e.getEnergyStored())
|
||||
);
|
||||
return energy.get() != 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getBarWidth(ItemStack pStack) {
|
||||
return Math.round((float) ItemNBTTool.getInt(pStack, TAG_POWER, 1200) * 13.0F / 1200F);
|
||||
AtomicInteger energy = new AtomicInteger(0);
|
||||
pStack.getCapability(ForgeCapabilities.ENERGY).ifPresent(
|
||||
e -> energy.set(e.getEnergyStored())
|
||||
);
|
||||
|
||||
return Math.round((float) energy.get() * 13.0F / 12000F);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ICapabilityProvider initCapabilities(ItemStack stack, CompoundTag tag) {
|
||||
return new ItemEnergyProvider(stack, energyCapacity.get());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -193,9 +215,16 @@ public class TaserItem extends GunItem implements GeoItem, AnimatedItem {
|
|||
}
|
||||
|
||||
int perkLevel = PerkHelper.getItemPerkLevel(ModPerks.SUPER_RECHARGE.get(), stack);
|
||||
if (ItemNBTTool.getInt(stack, TAG_POWER, 1200) < MAX_POWER_SIZE) {
|
||||
ItemNBTTool.setInt(stack, TAG_POWER, Mth.clamp(ItemNBTTool.getInt(stack, TAG_POWER, 1200) + 1 + perkLevel, 0, MAX_POWER_SIZE));
|
||||
// var tag = stack.getOrCreateTag();
|
||||
stack.getCapability(ForgeCapabilities.ENERGY).ifPresent(
|
||||
energy -> {
|
||||
energy.receiveEnergy(10 + 10 * perkLevel, false);
|
||||
// int energyStored = energy.getEnergyStored();
|
||||
// if (energyStored > 0) {
|
||||
// energy.receiveEnergy(10, false);
|
||||
// }
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
protected static boolean check(ItemStack stack) {
|
||||
|
@ -223,6 +252,11 @@ 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) {
|
||||
|
|
|
@ -11,7 +11,6 @@ import net.mcreator.superbwarfare.network.ModVariables;
|
|||
import net.mcreator.superbwarfare.perk.AmmoPerk;
|
||||
import net.mcreator.superbwarfare.perk.Perk;
|
||||
import net.mcreator.superbwarfare.perk.PerkHelper;
|
||||
import net.mcreator.superbwarfare.tools.ItemNBTTool;
|
||||
import net.mcreator.superbwarfare.tools.ParticleTool;
|
||||
import net.mcreator.superbwarfare.tools.SeekTool;
|
||||
import net.mcreator.superbwarfare.tools.SoundTool;
|
||||
|
@ -31,9 +30,11 @@ import net.minecraft.world.entity.projectile.AbstractArrow;
|
|||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraft.world.item.Items;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraftforge.common.capabilities.ForgeCapabilities;
|
||||
import net.minecraftforge.network.NetworkEvent;
|
||||
import org.joml.Vector3d;
|
||||
|
||||
import java.util.concurrent.atomic.AtomicBoolean;
|
||||
import java.util.function.Supplier;
|
||||
|
||||
public class FireMessage {
|
||||
|
@ -344,8 +345,14 @@ public class FireMessage {
|
|||
|
||||
ItemStack stack = player.getMainHandItem();
|
||||
if (!stack.getOrCreateTag().getBoolean("reloading")) {
|
||||
int perkLevel = PerkHelper.getItemPerkLevel(ModPerks.VOLT_OVERLOAD.get(), stack);
|
||||
AtomicBoolean flag = new AtomicBoolean(false);
|
||||
stack.getCapability(ForgeCapabilities.ENERGY).ifPresent(
|
||||
iEnergyStorage -> flag.set(iEnergyStorage.getEnergyStored() > 2000 + 200 * perkLevel)
|
||||
);
|
||||
|
||||
if (!player.getCooldowns().isOnCooldown(stack.getItem()) && stack.getOrCreateTag().getInt("ammo") > 0
|
||||
&& ItemNBTTool.getInt(stack, "Power", 1200) > 400) {
|
||||
&& flag.get()) {
|
||||
|
||||
player.getCooldowns().addCooldown(stack.getItem(), 5);
|
||||
|
||||
|
@ -375,7 +382,11 @@ public class FireMessage {
|
|||
|
||||
stack.getOrCreateTag().putInt("fire_animation", 4);
|
||||
stack.getOrCreateTag().putInt("ammo", (stack.getOrCreateTag().getInt("ammo") - 1));
|
||||
ItemNBTTool.setInt(stack, "Power", ItemNBTTool.getInt(stack, "Power", 1200) - 400);
|
||||
|
||||
stack.getCapability(ForgeCapabilities.ENERGY).ifPresent(
|
||||
energy -> energy.extractEnergy(2000 + 200 * perkLevel, false)
|
||||
);
|
||||
// ItemNBTTool.setInt(stack, "Power", ItemNBTTool.getInt(stack, "Power", 1200) - 400);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -192,6 +192,23 @@ public class TooltipTool {
|
|||
);
|
||||
}
|
||||
|
||||
public static void addTaserTips(List<Component> tooltip, ItemStack stack) {
|
||||
tooltip.add(Component.literal(""));
|
||||
|
||||
double damage = ItemNBTTool.getDouble(stack, "damage", 0)
|
||||
* ItemNBTTool.getDouble(stack, "levelDamageMultiple", 1);
|
||||
|
||||
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)));
|
||||
|
||||
addPerkTips(tooltip, stack);
|
||||
|
||||
stack.getCapability(ForgeCapabilities.ENERGY).ifPresent(
|
||||
e -> tooltip.add(Component.literal(e.getEnergyStored() + " / " + e.getMaxEnergyStored() + " FE").withStyle(ChatFormatting.GRAY))
|
||||
);
|
||||
}
|
||||
|
||||
public static void addMonitorTips(List<Component> tooltip, String id) {
|
||||
if (id.equals("none")) return;
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue