diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/ActuallyTabs.java b/src/main/java/de/ellpeck/actuallyadditions/mod/ActuallyTabs.java index f822a2904..526f059a8 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/ActuallyTabs.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/ActuallyTabs.java @@ -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); } }); diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/attachments/ActuallyAttachments.java b/src/main/java/de/ellpeck/actuallyadditions/mod/attachments/ActuallyAttachments.java index 6381853ac..ffd3adcdf 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/attachments/ActuallyAttachments.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/attachments/ActuallyAttachments.java @@ -15,14 +15,14 @@ import java.util.function.Supplier; public class ActuallyAttachments { private static final DeferredRegister> ATTACHMENT_TYPES = DeferredRegister.create(NeoForgeRegistries.Keys.ATTACHMENT_TYPES, ActuallyAdditions.MODID); - public static final Supplier> ENERGY_STORAGE = ATTACHMENT_TYPES.register( + public static final Supplier> 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> itemEnergyStorageAttachment() { + public static Supplier> 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."); } diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/items/base/ItemEnergy.java b/src/main/java/de/ellpeck/actuallyadditions/mod/items/base/ItemEnergy.java index f31db5c7a..6c31455f5 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/items/base/ItemEnergy.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/items/base/ItemEnergy.java @@ -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);