From dc3525587fcd02b4a65860467ddc098f5fd498d6 Mon Sep 17 00:00:00 2001 From: Liz Date: Wed, 21 Oct 2026 10:42:17 -0700 Subject: [PATCH 1/5] Add blood orb support --- .../bloodmagic/DriverBloodAltar.java | 68 +++++++++++++++++++ 1 file changed, 68 insertions(+) diff --git a/src/main/scala/li/cil/oc/integration/bloodmagic/DriverBloodAltar.java b/src/main/scala/li/cil/oc/integration/bloodmagic/DriverBloodAltar.java index 150aa4405e..bd63f17377 100644 --- a/src/main/scala/li/cil/oc/integration/bloodmagic/DriverBloodAltar.java +++ b/src/main/scala/li/cil/oc/integration/bloodmagic/DriverBloodAltar.java @@ -10,6 +10,8 @@ import li.cil.oc.integration.ManagedTileEntityEnvironment; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; +import net.minecraft.inventory.IInventory; +import net.minecraft.item.ItemStack; public class DriverBloodAltar extends DriverSidedTileEntity { @Override @@ -82,5 +84,71 @@ public Object[] getDislocationMultiplier(final Context context, final Arguments public Object[] getBufferCapacity(final Context context, final Arguments arguments) { return new Object[] {tileEntity.getBufferCapacity()}; } + + @Callback(doc = "function():string -- Returns the owner name of the blood orb.") + public Object[] getOwnerName(final Context context, final Arguments args) { + ItemStack orb; + try { + orb = getBloodOrb(); + } catch (Exception e) { + return new Object[] { null, e.getMessage() }; + }; + var owner = SoulNetworkHandler.getOwnerName(orb); + return new Object[] { owner }; + } + + @Callback(doc = "function():number -- Returns the current LP in the owner's soul network.") + public Object[] getLP(final Context context, final Arguments args) { + ItemStack orb; + try { + orb = getBloodOrb(); + } catch (Exception e) { + return new Object[] { null, e.getMessage() }; + }; + var owner = SoulNetworkHandler.getOwnerName(orb); + if (owner == null || owner.isEmpty()) { + return new Object[] { 0, "Orb has no bound owner" }; + } + int currentLP = SoulNetworkHandler.getCurrentEssence(owner); + return new Object[] { currentLP }; + } + + @Callback(doc = "function():number -- Returns the maximum LP capacity for this orb's tier.") + public Object[] getMaxLP(final Context context, final Arguments args) { + ItemStack orb; + try { + orb = getBloodOrb(); + } catch (Exception e) { + return new Object[] { null, e.getMessage() }; + }; + int maxLP = ((IBloodOrb) orb.getItem()).getMaxEssence(); + return new Object[] { maxLP }; + } + + @Callback(doc = "function():number -- Returns the orb's tier level.") + public Object[] getOrbLevel(final Context context, final Arguments args) { + ItemStack orb; + try { + orb = getBloodOrb(); + } catch (Exception e) { + return new Object[] { null, e.getMessage() }; + }; + int level = ((IBloodOrb) orb.getItem()).getOrbLevel(); + return new Object[] { level }; + } + + private ItemStack getBloodOrb() throws Exception { + if(!(tileEntity instanceof IInventory)) { + throw new Exception("Blood Altar does not contain a blood orb"); + } + var inventory = (IInventory)tileEntity; + for (int slot = 0; slot < inventory.getSizeInventory(); slot++) { + ItemStack stackInSlot = inventory.getStackInSlot(slot); + if (stackInSlot != null && stackInSlot.getItem() instanceof IBloodOrb) { + return stackInSlot; + } + } + throw new Exception("Blood Altar does not contain a blood orb"); + } } } From 895fe4a7deb7955a92aeb9da8db54cb085122daa Mon Sep 17 00:00:00 2001 From: Liz Date: Wed, 21 Oct 2026 10:49:14 -0700 Subject: [PATCH 2/5] chore: trigger build From 5a1299d2f0a8c9c56fe1100c863c0cf3ad797563 Mon Sep 17 00:00:00 2001 From: Liz Date: Wed, 21 Oct 2026 14:39:12 -0700 Subject: [PATCH 3/5] replaced var with explicit types --- .../li/cil/oc/integration/bloodmagic/DriverBloodAltar.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/scala/li/cil/oc/integration/bloodmagic/DriverBloodAltar.java b/src/main/scala/li/cil/oc/integration/bloodmagic/DriverBloodAltar.java index bd63f17377..1974c93c41 100644 --- a/src/main/scala/li/cil/oc/integration/bloodmagic/DriverBloodAltar.java +++ b/src/main/scala/li/cil/oc/integration/bloodmagic/DriverBloodAltar.java @@ -93,7 +93,7 @@ public Object[] getOwnerName(final Context context, final Arguments args) { } catch (Exception e) { return new Object[] { null, e.getMessage() }; }; - var owner = SoulNetworkHandler.getOwnerName(orb); + String owner = SoulNetworkHandler.getOwnerName(orb); return new Object[] { owner }; } @@ -105,7 +105,7 @@ public Object[] getLP(final Context context, final Arguments args) { } catch (Exception e) { return new Object[] { null, e.getMessage() }; }; - var owner = SoulNetworkHandler.getOwnerName(orb); + String owner = SoulNetworkHandler.getOwnerName(orb); if (owner == null || owner.isEmpty()) { return new Object[] { 0, "Orb has no bound owner" }; } @@ -141,7 +141,7 @@ private ItemStack getBloodOrb() throws Exception { if(!(tileEntity instanceof IInventory)) { throw new Exception("Blood Altar does not contain a blood orb"); } - var inventory = (IInventory)tileEntity; + IInventory inventory = (IInventory)tileEntity; for (int slot = 0; slot < inventory.getSizeInventory(); slot++) { ItemStack stackInSlot = inventory.getStackInSlot(slot); if (stackInSlot != null && stackInSlot.getItem() instanceof IBloodOrb) { From 4ebc306348292145f6bc82598bec5389c955182d Mon Sep 17 00:00:00 2001 From: Liz Date: Wed, 21 Oct 2026 14:55:17 -0700 Subject: [PATCH 4/5] add missing imports --- .../bloodmagic/DriverBloodAltar.java | 36 +++++++++++-------- 1 file changed, 21 insertions(+), 15 deletions(-) diff --git a/src/main/scala/li/cil/oc/integration/bloodmagic/DriverBloodAltar.java b/src/main/scala/li/cil/oc/integration/bloodmagic/DriverBloodAltar.java index 1974c93c41..94d6528b48 100644 --- a/src/main/scala/li/cil/oc/integration/bloodmagic/DriverBloodAltar.java +++ b/src/main/scala/li/cil/oc/integration/bloodmagic/DriverBloodAltar.java @@ -12,6 +12,8 @@ import net.minecraftforge.common.util.ForgeDirection; import net.minecraft.inventory.IInventory; import net.minecraft.item.ItemStack; +import WayofTime.alchemicalWizardry.api.soulNetwork.SoulNetworkHandler; +import WayofTime.alchemicalWizardry.api.items.interfaces.IBloodOrb; public class DriverBloodAltar extends DriverSidedTileEntity { @Override @@ -42,47 +44,47 @@ public int priority() { @Callback(doc = "function():number -- Get the capacity.") public Object[] getCapacity(final Context context, final Arguments arguments) { - return new Object[] {tileEntity.getCapacity()}; + return new Object[] { tileEntity.getCapacity() }; } @Callback(doc = "function():number -- Get the amount of blood currently contained by this altar.") public Object[] getCurrentBlood(final Context context, final Arguments arguments) { - return new Object[] {tileEntity.getCurrentBlood()}; + return new Object[] { tileEntity.getCurrentBlood() }; } @Callback(doc = "function():number -- Get the current tier.") public Object[] getTier(final Context context, final Arguments arguments) { - return new Object[] {tileEntity.getTier()}; + return new Object[] { tileEntity.getTier() }; } @Callback(doc = "function():number -- Get the progress.") public Object[] getProgress(final Context context, final Arguments arguments) { - return new Object[] {tileEntity.getProgress()}; + return new Object[] { tileEntity.getProgress() }; } @Callback(doc = "function():number -- Get the sacrifice multiplier.") public Object[] getSacrificeMultiplier(final Context context, final Arguments arguments) { - return new Object[] {tileEntity.getSacrificeMultiplier()}; + return new Object[] { tileEntity.getSacrificeMultiplier() }; } @Callback(doc = "function():number -- Get the self sacrifice multiplier.") public Object[] getSelfSacrificeMultiplier(final Context context, final Arguments arguments) { - return new Object[] {tileEntity.getSelfSacrificeMultiplier()}; + return new Object[] { tileEntity.getSelfSacrificeMultiplier() }; } @Callback(doc = "function():number -- Get the orb multiplier.") public Object[] getOrbMultiplier(final Context context, final Arguments arguments) { - return new Object[] {tileEntity.getOrbMultiplier()}; + return new Object[] { tileEntity.getOrbMultiplier() }; } @Callback(doc = "function():number -- Get the dislocation multiplier.") public Object[] getDislocationMultiplier(final Context context, final Arguments arguments) { - return new Object[] {tileEntity.getDislocationMultiplier()}; + return new Object[] { tileEntity.getDislocationMultiplier() }; } @Callback(doc = "function():number -- Get IO buffer capacity.") public Object[] getBufferCapacity(final Context context, final Arguments arguments) { - return new Object[] {tileEntity.getBufferCapacity()}; + return new Object[] { tileEntity.getBufferCapacity() }; } @Callback(doc = "function():string -- Returns the owner name of the blood orb.") @@ -92,7 +94,8 @@ public Object[] getOwnerName(final Context context, final Arguments args) { orb = getBloodOrb(); } catch (Exception e) { return new Object[] { null, e.getMessage() }; - }; + } + ; String owner = SoulNetworkHandler.getOwnerName(orb); return new Object[] { owner }; } @@ -104,7 +107,8 @@ public Object[] getLP(final Context context, final Arguments args) { orb = getBloodOrb(); } catch (Exception e) { return new Object[] { null, e.getMessage() }; - }; + } + ; String owner = SoulNetworkHandler.getOwnerName(orb); if (owner == null || owner.isEmpty()) { return new Object[] { 0, "Orb has no bound owner" }; @@ -120,7 +124,8 @@ public Object[] getMaxLP(final Context context, final Arguments args) { orb = getBloodOrb(); } catch (Exception e) { return new Object[] { null, e.getMessage() }; - }; + } + ; int maxLP = ((IBloodOrb) orb.getItem()).getMaxEssence(); return new Object[] { maxLP }; } @@ -132,16 +137,17 @@ public Object[] getOrbLevel(final Context context, final Arguments args) { orb = getBloodOrb(); } catch (Exception e) { return new Object[] { null, e.getMessage() }; - }; + } + ; int level = ((IBloodOrb) orb.getItem()).getOrbLevel(); return new Object[] { level }; } private ItemStack getBloodOrb() throws Exception { - if(!(tileEntity instanceof IInventory)) { + if (!(tileEntity instanceof IInventory)) { throw new Exception("Blood Altar does not contain a blood orb"); } - IInventory inventory = (IInventory)tileEntity; + IInventory inventory = (IInventory) tileEntity; for (int slot = 0; slot < inventory.getSizeInventory(); slot++) { ItemStack stackInSlot = inventory.getStackInSlot(slot); if (stackInSlot != null && stackInSlot.getItem() instanceof IBloodOrb) { From 09ca12be91e49b1bd8a01f76560f63cbf83a7269 Mon Sep 17 00:00:00 2001 From: Liz Date: Wed, 21 Oct 2026 15:08:39 -0700 Subject: [PATCH 5/5] remove redundant semicolons --- .../li/cil/oc/integration/bloodmagic/DriverBloodAltar.java | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/main/scala/li/cil/oc/integration/bloodmagic/DriverBloodAltar.java b/src/main/scala/li/cil/oc/integration/bloodmagic/DriverBloodAltar.java index 94d6528b48..f4a0c0ea8b 100644 --- a/src/main/scala/li/cil/oc/integration/bloodmagic/DriverBloodAltar.java +++ b/src/main/scala/li/cil/oc/integration/bloodmagic/DriverBloodAltar.java @@ -95,7 +95,6 @@ public Object[] getOwnerName(final Context context, final Arguments args) { } catch (Exception e) { return new Object[] { null, e.getMessage() }; } - ; String owner = SoulNetworkHandler.getOwnerName(orb); return new Object[] { owner }; } @@ -108,7 +107,6 @@ public Object[] getLP(final Context context, final Arguments args) { } catch (Exception e) { return new Object[] { null, e.getMessage() }; } - ; String owner = SoulNetworkHandler.getOwnerName(orb); if (owner == null || owner.isEmpty()) { return new Object[] { 0, "Orb has no bound owner" }; @@ -125,7 +123,6 @@ public Object[] getMaxLP(final Context context, final Arguments args) { } catch (Exception e) { return new Object[] { null, e.getMessage() }; } - ; int maxLP = ((IBloodOrb) orb.getItem()).getMaxEssence(); return new Object[] { maxLP }; } @@ -138,7 +135,6 @@ public Object[] getOrbLevel(final Context context, final Arguments args) { } catch (Exception e) { return new Object[] { null, e.getMessage() }; } - ; int level = ((IBloodOrb) orb.getItem()).getOrbLevel(); return new Object[] { level }; }