Merge pull request #131 from Engineer12798/feat/more-reactor-utils

Updated redstone port to allow for getting slot info.
This commit is contained in:
Martin Robertz 2024-08-31 05:19:15 +02:00 committed by GitHub
commit 806ceb4c46
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -2,6 +2,7 @@ package li.cil.oc.integration.ic2;
import ic2.api.reactor.IReactor;
import ic2.api.reactor.IReactorChamber;
import ic2.api.reactor.IReactorComponent;
import ic2.core.block.TileEntityBlock;
import ic2.core.block.reactor.tileentity.TileEntityNuclearReactorElectric;
import ic2.core.block.reactor.tileentity.TileEntityReactorChamberElectric;
@ -13,10 +14,14 @@ import li.cil.oc.api.machine.Context;
import li.cil.oc.api.network.ManagedEnvironment;
import li.cil.oc.api.prefab.DriverSidedTileEntity;
import li.cil.oc.integration.ManagedTileEntityEnvironment;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
import java.util.HashMap;
public final class DriverReactorRedstonePort extends DriverSidedTileEntity {
@Override
public Class<?> getTileEntityClass() {
@ -122,5 +127,40 @@ public final class DriverReactorRedstonePort extends DriverSidedTileEntity {
return new Object[] {0};
}
}
@Callback(doc = "function(x:int,y:int):table -- Get information about the item stored in the given reactor slot.")
public Object[] getSlotInfo(final Context context, final Arguments args) {
final IReactor reactor = getReactor();
if (reactor == null) {
return null;
}
final int x = args.optInteger(0, -1);
final int y = args.optInteger(1, -1);
final ItemStack stack = reactor.getItemAt(x, y);
if (stack == null) {
return null;
}
final Item item = stack.getItem();
final HashMap<String, Object> outputMap = new HashMap<String, Object> ();
outputMap.put("item", stack);
if (item instanceof IReactorComponent) {
final IReactorComponent component = (IReactorComponent) item;
outputMap.put("canStoreHeat", component.canStoreHeat(reactor, stack, x, y));
outputMap.put("heat", component.getCurrentHeat(reactor, stack, x, y));
outputMap.put("maxHeat", component.getMaxHeat(reactor, stack, x, y));
}
return new Object[] {
outputMap
};
}
}
}