diff --git a/src/main/scala/li/cil/oc/common/tileentity/RobotAssembler.scala b/src/main/scala/li/cil/oc/common/tileentity/RobotAssembler.scala index a06ceb068..e319d203b 100644 --- a/src/main/scala/li/cil/oc/common/tileentity/RobotAssembler.scala +++ b/src/main/scala/li/cil/oc/common/tileentity/RobotAssembler.scala @@ -55,7 +55,7 @@ class RobotAssembler extends traits.Environment with traits.PowerAcceptor with t if (caseTier >= 0) Settings.robotComplexityByTier(caseTier) else 0 } - def start() { + def start(finishImmediately: Boolean) { if (!isAssembling && robot.isEmpty && complexity <= maxComplexity) { for (slot <- 0 until getSizeInventory) { val stack = getStackInSlot(slot) @@ -75,7 +75,7 @@ class RobotAssembler extends traits.Environment with traits.PowerAcceptor with t val stack = api.Items.get("robot").createItemStack(1) data.save(stack) robot = Some(stack) - if (data.tier == Tier.Four) { + if (finishImmediately || data.tier == Tier.Four) { // Creative tier, finish instantly. totalRequiredEnergy = 0 } @@ -98,7 +98,7 @@ class RobotAssembler extends traits.Environment with traits.PowerAcceptor with t super.updateEntity() if (robot.isDefined && world.getTotalWorldTime % Settings.get.tickFrequency == 0) { val want = math.max(1, math.min(requiredEnergy, Settings.get.assemblerTickAmount * Settings.get.tickFrequency)) - val success = node.tryChangeBuffer(-want) + val success = Settings.get.ignorePower || node.tryChangeBuffer(-want) if (success) { requiredEnergy -= want } diff --git a/src/main/scala/li/cil/oc/server/PacketHandler.scala b/src/main/scala/li/cil/oc/server/PacketHandler.scala index bc75ce19e..424c383b0 100644 --- a/src/main/scala/li/cil/oc/server/PacketHandler.scala +++ b/src/main/scala/li/cil/oc/server/PacketHandler.scala @@ -10,6 +10,7 @@ import li.cil.oc.common.{PacketType, PacketHandler => CommonPacketHandler} import li.cil.oc.{Settings, api} import net.minecraft.entity.player.{EntityPlayer, EntityPlayerMP} import net.minecraft.nbt.NBTTagCompound +import net.minecraft.server.MinecraftServer import net.minecraft.util.ChatMessageComponent import net.minecraftforge.common.{DimensionManager, ForgeDirection} @@ -141,7 +142,10 @@ class PacketHandler extends CommonPacketHandler { def onRobotAssemblerStart(p: PacketParser) = p.readTileEntity[RobotAssembler]() match { - case Some(assembler) => assembler.start() + case Some(assembler) => assembler.start(p.player match { + case player: EntityPlayerMP => player.theItemInWorldManager.isCreative + case _ => false + }) case _ => // Invalid packet. }