正确注册物品能量能力
This commit is contained in:
parent
78d98e08f6
commit
5df7a14afb
7 changed files with 32 additions and 66 deletions
|
@ -1,21 +0,0 @@
|
|||
package com.atsuishio.superbwarfare.capability.energy;
|
||||
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.neoforged.neoforge.capabilities.ICapabilityProvider;
|
||||
import net.neoforged.neoforge.energy.EnergyStorage;
|
||||
import net.neoforged.neoforge.energy.IEnergyStorage;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
public class ItemEnergyProvider implements ICapabilityProvider<ItemStack, Void, IEnergyStorage> {
|
||||
private final EnergyStorage energyStorage;
|
||||
|
||||
public ItemEnergyProvider(int energyCapacity) {
|
||||
this.energyStorage = new EnergyStorage(energyCapacity);
|
||||
}
|
||||
|
||||
@Override
|
||||
public @Nullable IEnergyStorage getCapability(@NotNull ItemStack object, Void context) {
|
||||
return energyStorage;
|
||||
}
|
||||
}
|
|
@ -5,26 +5,17 @@ import net.minecraft.world.inventory.tooltip.TooltipComponent;
|
|||
import net.minecraft.world.item.Item;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.neoforged.neoforge.capabilities.Capabilities;
|
||||
import net.neoforged.neoforge.energy.EnergyStorage;
|
||||
import net.neoforged.neoforge.energy.IEnergyStorage;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.Optional;
|
||||
|
||||
public class BatteryItem extends Item {
|
||||
public class BatteryItem extends Item implements EnergyStorageItem {
|
||||
|
||||
public int maxEnergy;
|
||||
|
||||
public IEnergyStorage getEnergyStorage() {
|
||||
return energy;
|
||||
}
|
||||
|
||||
private final IEnergyStorage energy;
|
||||
|
||||
public BatteryItem(int maxEnergy, Properties properties) {
|
||||
super(properties.stacksTo(1));
|
||||
this.maxEnergy = maxEnergy;
|
||||
this.energy = new EnergyStorage(maxEnergy);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -64,4 +55,8 @@ public class BatteryItem extends Item {
|
|||
return stack;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMaxEnergy() {
|
||||
return maxEnergy;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
package com.atsuishio.superbwarfare.item;
|
||||
|
||||
public interface EnergyStorageItem {
|
||||
int getMaxEnergy();
|
||||
}
|
|
@ -7,6 +7,7 @@ import com.atsuishio.superbwarfare.client.tooltip.component.SecondaryCataclysmIm
|
|||
import com.atsuishio.superbwarfare.entity.projectile.GunGrenadeEntity;
|
||||
import com.atsuishio.superbwarfare.event.ClientEventHandler;
|
||||
import com.atsuishio.superbwarfare.init.*;
|
||||
import com.atsuishio.superbwarfare.item.EnergyStorageItem;
|
||||
import com.atsuishio.superbwarfare.item.gun.GunItem;
|
||||
import com.atsuishio.superbwarfare.item.gun.SpecialFireWeapon;
|
||||
import com.atsuishio.superbwarfare.network.message.receive.ShootClientMessage;
|
||||
|
@ -32,8 +33,6 @@ import net.minecraft.world.item.ItemDisplayContext;
|
|||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.neoforged.neoforge.capabilities.Capabilities;
|
||||
import net.neoforged.neoforge.energy.EnergyStorage;
|
||||
import net.neoforged.neoforge.energy.IEnergyStorage;
|
||||
import net.neoforged.neoforge.network.PacketDistributor;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import software.bernie.geckolib.animatable.GeoItem;
|
||||
|
@ -45,13 +44,7 @@ import software.bernie.geckolib.util.GeckoLibUtil;
|
|||
import javax.annotation.ParametersAreNonnullByDefault;
|
||||
import java.util.Optional;
|
||||
|
||||
public class SecondaryCataclysm extends GunItem implements GeoItem, SpecialFireWeapon {
|
||||
private final IEnergyStorage energyStorage = new EnergyStorage(24000);
|
||||
|
||||
public IEnergyStorage getEnergyStorage() {
|
||||
return energyStorage;
|
||||
}
|
||||
|
||||
public class SecondaryCataclysm extends GunItem implements GeoItem, SpecialFireWeapon, EnergyStorageItem {
|
||||
private final AnimatableInstanceCache cache = GeckoLibUtil.createInstanceCache(this);
|
||||
public static ItemDisplayContext transformType;
|
||||
|
||||
|
@ -71,12 +64,6 @@ public class SecondaryCataclysm extends GunItem implements GeoItem, SpecialFireW
|
|||
return Math.round((float) (cap != null ? cap.getEnergyStored() : 0) * 13.0F / 24000F);
|
||||
}
|
||||
|
||||
// TODO register cap
|
||||
// @Override
|
||||
// public ICapabilityProvider initCapabilities(ItemStack stack, CompoundTag tag) {
|
||||
// return new ItemEnergyProvider(stack, energyCapacity.get());
|
||||
// }
|
||||
|
||||
@Override
|
||||
public int getBarColor(@NotNull ItemStack pStack) {
|
||||
return 0x95E9FF;
|
||||
|
@ -347,4 +334,9 @@ public class SecondaryCataclysm extends GunItem implements GeoItem, SpecialFireW
|
|||
GunsTool.setGunIntTag(tag, "Ammo", GunsTool.getGunIntTag(tag, "Ammo", 0) - 1);
|
||||
player.getCooldowns().addCooldown(stack.getItem(), 6);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMaxEnergy() {
|
||||
return 24000;
|
||||
}
|
||||
}
|
|
@ -8,6 +8,7 @@ import com.atsuishio.superbwarfare.init.ModItems;
|
|||
import com.atsuishio.superbwarfare.init.ModRarity;
|
||||
import com.atsuishio.superbwarfare.init.ModSounds;
|
||||
import com.atsuishio.superbwarfare.init.ModTags;
|
||||
import com.atsuishio.superbwarfare.item.EnergyStorageItem;
|
||||
import com.atsuishio.superbwarfare.item.gun.GunItem;
|
||||
import com.atsuishio.superbwarfare.perk.Perk;
|
||||
import com.atsuishio.superbwarfare.perk.PerkHelper;
|
||||
|
@ -24,8 +25,6 @@ import net.minecraft.world.item.ItemDisplayContext;
|
|||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.neoforged.neoforge.capabilities.Capabilities;
|
||||
import net.neoforged.neoforge.energy.EnergyStorage;
|
||||
import net.neoforged.neoforge.energy.IEnergyStorage;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import software.bernie.geckolib.animatable.GeoItem;
|
||||
import software.bernie.geckolib.animatable.instance.AnimatableInstanceCache;
|
||||
|
@ -37,21 +36,13 @@ import javax.annotation.ParametersAreNonnullByDefault;
|
|||
import java.util.Optional;
|
||||
import java.util.Set;
|
||||
|
||||
public class SentinelItem extends GunItem implements GeoItem {
|
||||
|
||||
public IEnergyStorage getEnergyStorage() {
|
||||
return energyStorage;
|
||||
}
|
||||
|
||||
private final IEnergyStorage energyStorage;
|
||||
public class SentinelItem extends GunItem implements GeoItem, EnergyStorageItem {
|
||||
|
||||
private final AnimatableInstanceCache cache = GeckoLibUtil.createInstanceCache(this);
|
||||
public static ItemDisplayContext transformType;
|
||||
|
||||
public SentinelItem() {
|
||||
super(new Properties().stacksTo(1).rarity(ModRarity.getLegendary()));
|
||||
|
||||
this.energyStorage = new EnergyStorage(24000);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -213,4 +204,9 @@ public class SentinelItem extends GunItem implements GeoItem {
|
|||
public int getAvailableFireModes() {
|
||||
return FireMode.SEMI.flag;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMaxEnergy() {
|
||||
return 24000;
|
||||
}
|
||||
}
|
|
@ -10,6 +10,7 @@ import com.atsuishio.superbwarfare.init.ModItems;
|
|||
import com.atsuishio.superbwarfare.init.ModPerks;
|
||||
import com.atsuishio.superbwarfare.init.ModSounds;
|
||||
import com.atsuishio.superbwarfare.init.ModTags;
|
||||
import com.atsuishio.superbwarfare.item.EnergyStorageItem;
|
||||
import com.atsuishio.superbwarfare.item.gun.GunItem;
|
||||
import com.atsuishio.superbwarfare.item.gun.SpecialFireWeapon;
|
||||
import com.atsuishio.superbwarfare.network.message.receive.ShootClientMessage;
|
||||
|
@ -34,8 +35,6 @@ import net.minecraft.world.item.ItemStack;
|
|||
import net.minecraft.world.item.Rarity;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.neoforged.neoforge.capabilities.Capabilities;
|
||||
import net.neoforged.neoforge.energy.EnergyStorage;
|
||||
import net.neoforged.neoforge.energy.IEnergyStorage;
|
||||
import net.neoforged.neoforge.network.PacketDistributor;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import software.bernie.geckolib.animatable.GeoItem;
|
||||
|
@ -48,22 +47,16 @@ import javax.annotation.ParametersAreNonnullByDefault;
|
|||
import java.util.Optional;
|
||||
import java.util.Set;
|
||||
|
||||
public class TaserItem extends GunItem implements GeoItem, SpecialFireWeapon {
|
||||
public class TaserItem extends GunItem implements GeoItem, SpecialFireWeapon, EnergyStorageItem {
|
||||
|
||||
public static final int MAX_ENERGY = 6000;
|
||||
|
||||
private final AnimatableInstanceCache cache = GeckoLibUtil.createInstanceCache(this);
|
||||
public static ItemDisplayContext transformType;
|
||||
|
||||
public IEnergyStorage getEnergyStorage() {
|
||||
return energyStorage;
|
||||
}
|
||||
|
||||
private final IEnergyStorage energyStorage;
|
||||
|
||||
public TaserItem() {
|
||||
super(new Properties().stacksTo(1).rarity(Rarity.COMMON));
|
||||
this.energyStorage = new EnergyStorage(MAX_ENERGY);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -284,4 +277,9 @@ public class TaserItem extends GunItem implements GeoItem, SpecialFireWeapon {
|
|||
energyStorage.extractEnergy(400 + 100 * perkLevel, false);
|
||||
tag.putBoolean("shoot", true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMaxEnergy() {
|
||||
return MAX_ENERGY;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -53,5 +53,6 @@ public class NetworkRegistry {
|
|||
registrar.playToServer(InteractMessage.TYPE, InteractMessage.STREAM_CODEC, InteractMessage::handler);
|
||||
registrar.playToServer(AdjustMortarAngleMessage.TYPE, AdjustMortarAngleMessage.STREAM_CODEC, AdjustMortarAngleMessage::handler);
|
||||
registrar.playToServer(ChangeVehicleSeatMessage.TYPE, ChangeVehicleSeatMessage.STREAM_CODEC, ChangeVehicleSeatMessage::handler);
|
||||
registrar.playToServer(ShowChargingRangeMessage.TYPE, ShowChargingRangeMessage.STREAM_CODEC, ShowChargingRangeMessage::handler);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue