Skip to content

Commit ad7ef40

Browse files
committed
Update and fix Curios API integration
1 parent b4d05f9 commit ad7ef40

File tree

5 files changed

+68
-45
lines changed

5 files changed

+68
-45
lines changed

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,7 @@ dependencies {
162162
compileOnly "dev.emi:emi-neoforge:1.1.15+1.21.1:api"
163163

164164
// Curios Continuation integration
165-
compileOnly "top.theillusivec4.curios:curios-neoforge:11.0.1+1.21.5"
165+
compileOnly "top.theillusivec4.curios:curios-neoforge:14.0.0+1.21.11"
166166

167167
// CCTweaked integration
168168
compileOnly "cc.tweaked:cc-tweaked-1.21.8-core-api:1.116.1"

src/main/java/me/jddev0/ep/block/entity/ChargingStationBlockEntity.java

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,10 @@
2323
import net.minecraft.world.level.levelgen.structure.BoundingBox;
2424
import net.minecraft.world.phys.AABB;
2525
import net.neoforged.neoforge.capabilities.Capabilities;
26+
import net.neoforged.neoforge.transfer.ResourceHandler;
2627
import net.neoforged.neoforge.transfer.access.ItemAccess;
2728
import net.neoforged.neoforge.transfer.energy.EnergyHandler;
29+
import net.neoforged.neoforge.transfer.item.ItemResource;
2830
import net.neoforged.neoforge.transfer.transaction.Transaction;
2931
import org.jetbrains.annotations.Nullable;
3032

@@ -126,17 +128,21 @@ public static void tick(Level level, BlockPos blockPos, BlockState state, Chargi
126128
}
127129
}
128130

129-
/* TODO FIX CURIOS INTEGRATION
130-
List<ItemStack> curiosItemStacks = CuriosCompatUtils.getCuriosItemStacks(inventory);
131-
for(ItemStack itemStack:curiosItemStacks) {
132-
IEnergyStorage energyStorage = itemStack.getCapability(Capabilities.EnergyStorage.ITEM);
133-
if(energyStorage == null || !energyStorage.canInsert())
131+
ResourceHandler<ItemResource> curiosItemResourceHandler = CuriosCompatUtils.getCuriosItemStacks(inventory);
132+
for(int i = 0;i < curiosItemResourceHandler.size();i++) {
133+
ItemStack stack = curiosItemResourceHandler.getResource(i).toStack(curiosItemResourceHandler.getAmountAsInt(i));
134+
135+
EnergyHandler energyStorage = stack.getCapability(Capabilities.Energy.ITEM, ItemAccess.forHandlerIndexStrict(curiosItemResourceHandler, i));
136+
if(energyStorage == null || !CapabilityUtil.canInsert(energyStorage))
134137
continue;
135138

136-
energyPerTickLeft -= energyStorage.receiveEnergy(energyPerTickLeft, false);
137-
if(energyPerTickLeft == 0)
138-
break outer;
139-
}*/
139+
try(Transaction transaction = Transaction.open(null)) {
140+
energyPerTickLeft -= energyStorage.insert(energyPerTickLeft, transaction);
141+
transaction.commit();
142+
if(energyPerTickLeft == 0)
143+
break outer;
144+
}
145+
}
140146
}
141147

142148
if(energyPerTickLeft == energyPerTick) {
Lines changed: 10 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,10 @@
11
package me.jddev0.ep.integration.curios;
22

33
import net.minecraft.world.entity.player.Inventory;
4-
import net.minecraft.world.item.ItemStack;
5-
import net.neoforged.neoforge.items.IItemHandlerModifiable;
6-
import top.theillusivec4.curios.api.CuriosApi;
7-
import top.theillusivec4.curios.api.type.capability.ICuriosItemHandler;
8-
9-
import java.util.ArrayList;
10-
import java.util.List;
11-
import java.util.Optional;
4+
import net.neoforged.neoforge.transfer.EmptyResourceHandler;
5+
import net.neoforged.neoforge.transfer.ResourceHandler;
6+
import net.neoforged.neoforge.transfer.item.ItemResource;
7+
import top.theillusivec4.curios.api.CuriosCapability;
128

139
public final class CuriosCompatUtils {
1410
private CuriosCompatUtils() {}
@@ -23,27 +19,14 @@ public static boolean isCuriosAvailable() {
2319
}
2420
}
2521

26-
//TODO FIX CURIOS INTEGRATION
27-
public static List<ItemStack> getCuriosItemStacks(Inventory inventory) {
28-
List<ItemStack> itemStacks = new ArrayList<>();
29-
22+
public static ResourceHandler<ItemResource> getCuriosItemStacks(Inventory inventory) {
3023
if(!isCuriosAvailable())
31-
return itemStacks;
32-
33-
Optional<IItemHandlerModifiable> itemHandlerModifiableLazyOptional = CuriosApi.getCuriosInventory(inventory.player)
34-
.map(ICuriosItemHandler::getEquippedCurios);
24+
return EmptyResourceHandler.instance();
3525

36-
if(itemHandlerModifiableLazyOptional.isEmpty())
37-
return itemStacks;
38-
39-
IItemHandlerModifiable itemHandlerModifiable = itemHandlerModifiableLazyOptional.orElseGet(null);
40-
for(int i = 0;i < itemHandlerModifiable.getSlots();i++) {
41-
ItemStack itemStack = itemHandlerModifiable.getStackInSlot(i);
42-
43-
if(!itemStack.isEmpty())
44-
itemStacks.add(itemStack);
45-
}
26+
ResourceHandler<ItemResource> handler = inventory.player.getCapability(CuriosCapability.ITEM_HANDLER);
27+
if(handler == null)
28+
return EmptyResourceHandler.instance();
4629

47-
return itemStacks;
30+
return handler;
4831
}
4932
}

src/main/java/me/jddev0/ep/item/InventoryChargerItem.java

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,10 @@
2525
import net.minecraft.world.item.component.TooltipDisplay;
2626
import net.minecraft.world.level.Level;
2727
import net.neoforged.neoforge.capabilities.Capabilities;
28+
import net.neoforged.neoforge.transfer.ResourceHandler;
2829
import net.neoforged.neoforge.transfer.access.ItemAccess;
2930
import net.neoforged.neoforge.transfer.energy.EnergyHandler;
31+
import net.neoforged.neoforge.transfer.item.ItemResource;
3032
import net.neoforged.neoforge.transfer.item.ItemStacksResourceHandler;
3133
import net.neoforged.neoforge.transfer.item.VanillaContainerWrapper;
3234
import net.neoforged.neoforge.transfer.transaction.Transaction;
@@ -145,10 +147,25 @@ private void distributeEnergy(ItemStack itemStack, Level level, Inventory invent
145147
}
146148
}
147149

148-
/* TODO FIX CURIOS INTEGRATION
149-
List<ItemStack> curiosItemStacks = CuriosCompatUtils.getCuriosItemStacks(inventory);
150-
for(ItemStack testItemStack:curiosItemStacks)
151-
consumptionSum += addConsumerEnergyItem(consumerItems, consumerEnergyValues, itemStack, testItemStack, inventoryChargerInventory);*/
150+
ResourceHandler<ItemResource> curiosItemResourceHandler = CuriosCompatUtils.getCuriosItemStacks(inventory);
151+
for(int i = 0;i < curiosItemResourceHandler.size();i++) {
152+
ItemStack stack = curiosItemResourceHandler.getResource(i).toStack(curiosItemResourceHandler.getAmountAsInt(i));
153+
154+
EnergyHandler energyStorage = stack.getCapability(Capabilities.Energy.ITEM, ItemAccess.forHandlerIndexStrict(curiosItemResourceHandler, i));
155+
if(energyStorage == null || !CapabilityUtil.canInsert(energyStorage))
156+
continue;
157+
158+
try(Transaction transaction = Transaction.open(null)) {
159+
int received = energyStorage.insert(getMaxTransfer(inventoryChargerInventory, transaction), transaction);
160+
161+
if(received <= 0)
162+
continue;
163+
164+
consumptionSum += received;
165+
consumerItems.add(energyStorage);
166+
consumerEnergyValues.add(received);
167+
}
168+
}
152169

153170
List<Integer> consumerEnergyDistributed = new ArrayList<>();
154171
for(int i = 0;i < consumerItems.size();i++)

src/main/java/me/jddev0/ep/item/InventoryCoalEngineItem.java

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,10 @@
2222
import net.minecraft.world.item.component.TooltipDisplay;
2323
import net.minecraft.world.level.Level;
2424
import net.neoforged.neoforge.capabilities.Capabilities;
25+
import net.neoforged.neoforge.transfer.ResourceHandler;
2526
import net.neoforged.neoforge.transfer.access.ItemAccess;
2627
import net.neoforged.neoforge.transfer.energy.EnergyHandler;
28+
import net.neoforged.neoforge.transfer.item.ItemResource;
2729
import net.neoforged.neoforge.transfer.transaction.Transaction;
2830
import org.jetbrains.annotations.Nullable;
2931

@@ -98,10 +100,25 @@ private void distributeEnergy(ItemStack itemStack, Level level, Inventory invent
98100
}
99101
}
100102

101-
/* TODO FIX CURIOS INTEGRATION
102-
List<ItemStack> curiosItemStacks = CuriosCompatUtils.getCuriosItemStacks(inventory);
103-
for(ItemStack testItemStack:curiosItemStacks)
104-
consumptionSum += addConsumerEnergyItem(consumerItems, consumerEnergyValues, itemStack, testItemStack);*/
103+
ResourceHandler<ItemResource> curiosItemResourceHandler = CuriosCompatUtils.getCuriosItemStacks(inventory);
104+
for(int i = 0;i < curiosItemResourceHandler.size();i++) {
105+
ItemStack stack = curiosItemResourceHandler.getResource(i).toStack(curiosItemResourceHandler.getAmountAsInt(i));
106+
107+
EnergyHandler energyStorage = stack.getCapability(Capabilities.Energy.ITEM, ItemAccess.forHandlerIndexStrict(curiosItemResourceHandler, i));
108+
if(energyStorage == null || !CapabilityUtil.canInsert(energyStorage))
109+
continue;
110+
111+
try(Transaction transaction = Transaction.open(null)) {
112+
int received = energyStorage.insert(MAX_EXTRACT, transaction);
113+
114+
if(received <= 0)
115+
continue;
116+
117+
consumptionSum += received;
118+
consumerItems.add(energyStorage);
119+
consumerEnergyValues.add(received);
120+
}
121+
}
105122

106123
List<Integer> consumerEnergyDistributed = new ArrayList<>();
107124
for(int i = 0;i < consumerItems.size();i++)

0 commit comments

Comments
 (0)