Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -14,30 +14,16 @@ object ConverterAspectItem extends Converter {
var aspects = new AspectList()
aspects.readFromNBT(stack.getTagCompound)
if (aspects.size() > 0)
output += "aspects" -> aspects
output += "aspects" -> TCUtils.convert_aspects(aspects)
stack.getItem match {
case wand : ItemWandCasting =>
aspects = wand.getAllVis(stack)
if (aspects.size() > 0) {
output += "aspects" -> aspects
output += "aspects" -> TCUtils.convert_aspects(aspects)
}
case _ =>
}

case container : IAspectContainer =>
output += "aspects" -> container.getAspects

case aspects : AspectList =>
var i = 1
for (aspect <- aspects.getAspects) {
if (aspect != null) {
val aspectMap = new util.HashMap[AnyRef, AnyRef]()
aspectMap += "name" -> aspect.getName
aspectMap += "amount" -> aspects.getAmount(aspect).asInstanceOf[AnyRef]
output += i.asInstanceOf[AnyRef] -> aspectMap
i += 1;
}
}
case _ =>
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ public Environment(final IAspectContainer tileEntity) {

@Callback(doc = "function():table -- Get the Aspects stored in the block")
public Object[] getAspects(final Context context, final Arguments args) {
return new Object[] {tileEntity};
return new Object[] {TCUtils.convert_aspects(tileEntity.getAspects())};
}

@Callback(doc = "function(aspect:string):number -- Get amount of specific aspect stored in this block")
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
package li.cil.oc.integration.thaumcraft;

import com.google.common.base.Preconditions;
import li.cil.oc.api.driver.NamedBlock;
import li.cil.oc.api.machine.Arguments;
import li.cil.oc.api.machine.Callback;
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.world.World;
import net.minecraftforge.common.util.ForgeDirection;
import thaumcraft.common.tiles.TileInfusionMatrix;

public class DriverInfusionMatrix extends DriverSidedTileEntity {
@Override
public ManagedEnvironment createEnvironment(
final World world, final int x, final int y, final int z, final ForgeDirection side) {
return new Environment((TileInfusionMatrix) world.getTileEntity(x, y, z));
}

@Override
public Class<?> getTileEntityClass() {
return TileInfusionMatrix.class;
}

public static final class Environment extends ManagedTileEntityEnvironment<TileInfusionMatrix> implements NamedBlock {
public Environment(final TileInfusionMatrix tileEntity) {
super(tileEntity, "infusion_matrix");
}

@Override
public String preferredName() {
return "infusion_matrix";
}

@Override
public int priority() {
return 1;
}

@Callback(doc = "function():bool -- Return whether the matrix is active")
public Object[] isActive(final Context context, final Arguments args) {
return new Object[]{tileEntity.active};
}

@Callback(doc = "function():bool -- Return whether the matrix is crafting")
public Object[] isCrafting(final Context context, final Arguments args) {
return new Object[]{tileEntity.crafting};
}

@Callback(doc = "function():number -- Get the instability.")
public Object[] getInstability(final Context context, final Arguments args) {
return new Object[]{tileEntity.instability};
}

@Callback(doc = "function():number -- Get the symmetry.")
public Object[] getSymmetry(final Context context, final Arguments args) {
return new Object[]{tileEntity.symmetry};
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@ object ModThaumcraft extends ModProxy {

override def initialize() {
Driver.add(new DriverAspectContainer)
Driver.add(new DriverInfusionMatrix)

Driver.add(ConverterAspectItem)
}
}
15 changes: 15 additions & 0 deletions src/main/scala/li/cil/oc/integration/thaumcraft/TCUtils.scala
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package li.cil.oc.integration.thaumcraft

import thaumcraft.api.aspects.AspectList

object TCUtils {
def convert_aspects(aspects: AspectList): Array[Map[String, Any]] =
aspects.getAspects.filter(_ != null)
.map { aspect =>
Map(
"name" -> aspect.getName,
"amount" -> aspects.getAmount(aspect)
)
}
.toArray
}