diff --git a/src/main/scala/li/cil/oc/integration/forestry/DriverAnalyzer.scala b/src/main/scala/li/cil/oc/integration/forestry/DriverAnalyzer.scala new file mode 100644 index 000000000..7454de712 --- /dev/null +++ b/src/main/scala/li/cil/oc/integration/forestry/DriverAnalyzer.scala @@ -0,0 +1,34 @@ +package li.cil.oc.integration.forestry + +import forestry.api.genetics.AlleleManager +import forestry.core.gadgets.TileAnalyzer +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.prefab.DriverTileEntity +import li.cil.oc.integration.ManagedTileEntityEnvironment +import li.cil.oc.util.ResultWrapper._ +import net.minecraft.world.World + +class DriverAnalyzer extends DriverTileEntity { + override def getTileEntityClass = classOf[TileAnalyzer] + + override def createEnvironment(world: World, x: Int, y: Int, z: Int) = new Environment(world.getTileEntity(x, y, z).asInstanceOf[TileAnalyzer]) + + class Environment(tileEntity: TileAnalyzer) extends ManagedTileEntityEnvironment[TileAnalyzer](tileEntity, "forestry_analyzer") with NamedBlock { + override def preferredName = "forestry_analyzer" + + override def priority = 0 + + @Callback(doc = "function():boolean -- Can the bees breed?") + def isWorking(context: Context, args: Arguments): Array[AnyRef] = result(tileEntity.isWorking) + + @Callback(doc = "function():boolean -- Can the bees breed?") + def getProgress(context: Context, args: Arguments): Array[AnyRef] = result(1.0 - tileEntity.getProgressScaled(100) / 100.0) + + @Callback(doc = "function():boolean -- Can the bees breed?") + def getIndividualOnDisplay(context: Context, args: Arguments): Array[AnyRef] = result(AlleleManager.alleleRegistry.getIndividual(tileEntity.getIndividualOnDisplay)) + } + +} diff --git a/src/main/scala/li/cil/oc/integration/forestry/DriverBeeHouse.java b/src/main/scala/li/cil/oc/integration/forestry/DriverBeeHouse.java index 08f8e9498..2f258bab5 100644 --- a/src/main/scala/li/cil/oc/integration/forestry/DriverBeeHouse.java +++ b/src/main/scala/li/cil/oc/integration/forestry/DriverBeeHouse.java @@ -1,7 +1,6 @@ package li.cil.oc.integration.forestry; -import com.google.common.collect.Lists; -import com.google.common.collect.Maps; +import com.google.common.collect.Sets; import forestry.api.apiculture.IBeeHousing; import forestry.api.genetics.*; import li.cil.oc.api.machine.Arguments; @@ -14,8 +13,8 @@ import net.minecraft.item.ItemStack; import net.minecraft.world.World; import java.util.HashMap; -import java.util.List; import java.util.Map; +import java.util.Set; public class DriverBeeHouse extends DriverTileEntity { @Override @@ -63,8 +62,7 @@ public class DriverBeeHouse extends DriverTileEntity { return null; } - final Map> result = Maps.newHashMap(); - int j = 1; + final Set> result = Sets.newHashSet(); for (IMutation mutation : beeRoot.getMutations(false)) { HashMap mutationMap = new HashMap(); @@ -86,7 +84,7 @@ public class DriverBeeHouse extends DriverTileEntity { if (template != null && template.length > 0) { mutationMap.put("result", template[0].getName()); } - result.put(j++, mutationMap); + result.add(mutationMap); } return new Object[]{result}; } @@ -98,7 +96,7 @@ public class DriverBeeHouse extends DriverTileEntity { return null; } - final List result = Lists.newArrayList(); + final Set result = Sets.newHashSet(); for (IMutation mutation : beeRoot.getMutations(false)) { final IAllele[] template = mutation.getTemplate(); if (template == null || template.length <= 0) { @@ -112,7 +110,7 @@ public class DriverBeeHouse extends DriverTileEntity { result.add((IAlleleSpecies) allele); } - return new Object[]{result.toArray(new IAlleleSpecies[result.size()])}; + return new Object[]{result}; } @Callback(doc = "function(beeName:string):table -- Get the parents for a particular mutation") @@ -122,7 +120,7 @@ public class DriverBeeHouse extends DriverTileEntity { return null; } - List result = Lists.newArrayList(); + final Set result = Sets.newHashSet(); final String childType = args.checkString(0).toLowerCase(); for (IMutation mutation : beeRoot.getMutations(false)) { final IAllele[] template = mutation.getTemplate(); @@ -142,7 +140,7 @@ public class DriverBeeHouse extends DriverTileEntity { result.add(mutation); } } - return new Object[]{result.toArray(new IMutation[result.size()])}; + return new Object[]{result}; } } } \ No newline at end of file diff --git a/src/main/scala/li/cil/oc/integration/forestry/ModForestry.scala b/src/main/scala/li/cil/oc/integration/forestry/ModForestry.scala index a654b2faf..bc22e9c92 100644 --- a/src/main/scala/li/cil/oc/integration/forestry/ModForestry.scala +++ b/src/main/scala/li/cil/oc/integration/forestry/ModForestry.scala @@ -10,6 +10,7 @@ object ModForestry extends ModProxy { override def initialize() { Driver.add(new ConverterIAlleles) Driver.add(new ConverterIIndividual) + Driver.add(new DriverAnalyzer) Driver.add(new DriverBeeHouse) } } \ No newline at end of file