Back to CustomEnergyStorage

This commit is contained in:
Mrbysco 2024-03-07 01:56:39 +01:00
parent e22b1615a7
commit 555b1ddffb
3 changed files with 8 additions and 5 deletions

View file

@ -3,6 +3,7 @@ package de.ellpeck.actuallyadditions.mod;
import de.ellpeck.actuallyadditions.mod.attachments.ActuallyAttachments;
import de.ellpeck.actuallyadditions.mod.items.ActuallyItems;
import de.ellpeck.actuallyadditions.mod.items.base.ItemEnergy;
import de.ellpeck.actuallyadditions.mod.tile.CustomEnergyStorage;
import net.minecraft.core.registries.Registries;
import net.minecraft.network.chat.Component;
import net.minecraft.world.item.CreativeModeTab;
@ -34,7 +35,8 @@ public class ActuallyTabs {
.filter(stack -> stack.getItem() instanceof ItemEnergy).toList();
charged.forEach(stack -> {
if(stack.getItem() instanceof ItemEnergy itemEnergy) {
EnergyStorage storage = new EnergyStorage(itemEnergy.maxPower, itemEnergy.transfer, itemEnergy.transfer, itemEnergy.maxPower);
CustomEnergyStorage storage = new CustomEnergyStorage(itemEnergy.maxPower, itemEnergy.transfer, itemEnergy.transfer);
storage.setEnergyStored(itemEnergy.maxPower);
stack.setData(ActuallyAttachments.ENERGY_STORAGE.get(), storage);
}
});

View file

@ -15,14 +15,14 @@ import java.util.function.Supplier;
public class ActuallyAttachments {
private static final DeferredRegister<AttachmentType<?>> ATTACHMENT_TYPES = DeferredRegister.create(NeoForgeRegistries.Keys.ATTACHMENT_TYPES, ActuallyAdditions.MODID);
public static final Supplier<AttachmentType<EnergyStorage>> ENERGY_STORAGE = ATTACHMENT_TYPES.register(
public static final Supplier<AttachmentType<CustomEnergyStorage>> ENERGY_STORAGE = ATTACHMENT_TYPES.register(
"energy", ActuallyAttachments.itemEnergyStorageAttachment());
/*
* This is a supplier for an attachment type that can be used to attach an energy storage to an item.
* Implementation is based on EnderIO's https://github.com/Team-EnderIO/EnderIO/blob/e1f022df745131ed5fea718bd860880a5785d4c7/src/core/java/com/enderio/core/common/attachment/AttachmentUtil.java#L47-L60
*/
public static Supplier<AttachmentType<EnergyStorage>> itemEnergyStorageAttachment() {
public static Supplier<AttachmentType<CustomEnergyStorage>> itemEnergyStorageAttachment() {
return () -> AttachmentType.serializable(holder -> {
if (holder instanceof ItemStack itemStack) {
int capacity = 1000;
@ -33,7 +33,7 @@ public class ActuallyAttachments {
}
return new EnergyStorage(capacity, maxTransfer, maxTransfer);
return new CustomEnergyStorage(capacity, maxTransfer, maxTransfer);
} else {
throw new IllegalStateException("Cannot attach energy handler item to a non-item.");
}

View file

@ -24,6 +24,7 @@ import net.neoforged.api.distmarker.Dist;
import net.neoforged.api.distmarker.OnlyIn;
import net.neoforged.fml.loading.FMLEnvironment;
import net.neoforged.neoforge.capabilities.Capabilities;
import net.neoforged.neoforge.energy.EnergyStorage;
import net.neoforged.neoforge.energy.IEnergyStorage;
import javax.annotation.Nullable;
@ -119,7 +120,7 @@ public abstract class ItemEnergy extends ItemBase {
public int extractEnergyInternal(ItemStack stack, int maxExtract, boolean simulate) {
return Optional.ofNullable(stack.getCapability(Capabilities.EnergyStorage.ITEM))
.map(cap -> cap instanceof CustomEnergyStorage
.map(cap -> cap instanceof EnergyStorage
? ((CustomEnergyStorage) cap).extractEnergyInternal(maxExtract, simulate)
: 0)
.orElse(0);