The mod accepts EU, RF, Mekanism Joules, Factorization Charge, Applied Energistics 2 energy, as well as power from Electrical Age (it has it's own converter). If none of these mods is present, power use is disabled.

Please report any bugs over on the issue tracker on Github. Note that the mod is open source, a critical eye (in particular regarding security issues) is always appreciated, as are patches.

If you have questions check out the documentation and if you can't find an answer there, ask here. There's also a forum which you can find over at http://oc.cil.li/. I'm usually on #oc on esper.net, so feel free to drop by if you want. Even if I'm not there, someone else is likely to help you.

Getting started / Tutorials

Version 1.3 Update
Some explanation of the changes and additions to the 1.3 version of OpenComputers.

As mentioned above, this mod adds programmable computers, i.e. blocks that can be used to write and run Lua programs. It also adds robots, which are basically mobile mini-computers that can interact with the world much like the player can: they can use items, break and place blocks, activate blocks and so on.

Here are a few key concepts of the mod:

Computers persist: they will resume where they were interrupted when loaded again after the chunk they're in was unloaded (e.g. when you quit the game and load the world again or go to the nether and come back).

Computers are modular: you can configure your computers as you like by installing different expansion cards (redstone, network) and different tiers of memory (RAM) and hard drives.

Computers need power: you'll want to use this mod alongside some other mod that allows generating power, such as BuildCraft, IndustrialCraft2, Thermal Expansion or a mod that generates Universal Electricity. This can be disabled in the config, though.

Limited Resources
You'll notice is that computers are not cheap. There are several recipe sets, included are, aside from the default one, a hardmode set, which makes the recipes more complex and expensive, and a GregTech set which builds upon the hardmode set but uses GT specific items in a couple of recipes.

Aside from the crafting prices, there are two more resources, memory (RAM) and disk space (Floppy Disks and Hard Disk Drives). You'll need at least one memory module in you computer to get it running. Having more means you can run more complex programs (by the way, this is the actual amount of memory used by the Lua VM, excluding kernel overhead). If your computer runs out of memory, best case is the currently running program will crash, worst case the whole computer will stop.

HDDs on the other hand are semi-optional: each computer has a built-in /tmp file system, that provides a small amount of writable space. All data in the temporary file system will be wiped on reboot, though, so if you want to store something longer than one session, you'll want a floppy or hard disk.

Interactions with other Mods

OpenComputers accepts power from a lot of mods, can interact with many mods' bundled redstone systems and provides a lot of options for interaction with other mods in general. A more or less updated list can be found on the wiki.

Native Library

This mod uses a native library (included in the ZIP, you don't have to do anything). If you're running Minecraft on something exotic (read: Windows XP or older, PowerPC Mac or Solaris), the mod will enter a 'fallback mode' using LuaJ. In this mode computers will not persist, and memory use will not be limited. But as mentioned above, it is enough for the host to run on a supported platform.

Why a native library, when Java is such a beautifully cross-platform (as if) programming language? It's for the Lua state persistence. All Java implementations of Lua I'm aware of use Java threads to implement Lua's coroutines. Meaning there's no just way they could be persisted. But that's very much a core feature of this mod, so I saw no other way than going deep. It's just one little shared library, containing Lua plus Eris (the persistence library), and the JNLua wrapper. All of those are open source, too. Feel free to inspect the sources.

For Modders / Extending the Mod

If you're a modder yourself and would like to extend the mod, there is an API that allows defining new block and item components. Don't worry: while the mod itself is written in Scala, the API is pure Java. If you need any help with API, please do not hesitate to ask! We're more than happy to help!

License / Modpacks

This mod is licensed under the MIT License, which basically means you can do whatever you want: use it in modpacks, fork it, copy parts of it, as long as you include the license file with it. If you use it in modpacks: the file is in the ZIP, so you don't have to worry about that. Giving credit would be appreciated but isn't obligatory.If you do make code changes, please make it abundantly clear to anyone using that modified version that they should come to you for support, first, though.

since computers will user power and have limited RAM and Disk space, can we have something like multi-user mainframes being accessed by stupid terminals at a distance? I would totally love you for it...

Well, this is quite interesting.
After having a look on git, i saw its in Scala... more interesting.
Gonna have a play around with it =3

But i have one main question, what is your reasoning for 'recreating' Computercraft in a sense?

Thanks! Let me know what you think

Why a ComputerCraft clone? There were a couple of things that came together. I tried to explain the decision a bit in the last spoiler, but in some more detail:
One thing was that while I really like what ComputerCraft is doing, it doesn't fit all that well with the other mods I'm usually playing with (frankly: it costs too little, in particular turtles).
There's also technical... inconsistencies that had me worried about how well they'll be able to pull of persistence, once they get it done (i.e. computers continuing to run across chunk unloads, versus rebooting). It's been promised for a while, but at the same time they have repeatedly said they'd stick with Lua 5.1, which does make sense, don't get me wrong. Lua 5.2 is a huge compatibility issue when porting from 5.1. But at the same time, Lua 5.1 is hard to persist transparently, because there are a lot of contexts in which one cannot "yield" (which is enforced to avoid programs using CPU time excessively).
Last but not least I wanted a project to sink some Scala time into

@cloudeh: well, it may not be the "reason" it is closed source. It still is, though, and that makes it harder for others to help fix issues. I submitted a couple of bug reports, mostly security related, but never got any feedback nor did I check recently whether they have been fixed.
As for features: yes, there are a lot of similarities. There's no point denying that. I do however feel there are a lot of ideas in the mod that make it a lot more than just a "reimplementation". Let's ignore power for a bit: computers are modular, they are built from parts. Depending on what cards you have in a computer you can use it for different things. Robots are a lot different to use, since they can be reconfigured and become better the longer you use them (they gain experience). The way screens are actually controlled is quite different (if you look beyond the abstracted 'print'). Computers actually have limited RAM. I just hope you'll give it a shot anyway to get a better idea, before stating it's the same, which I deeply feel it isn't

since computers will user power and have limited RAM and Disk space, can we have something like multi-user mainframes being accessed by stupid terminals at a distance? I would totally love you for it...

Thanks It's an interesting idea, there are many approaches to it. If it's purely wired and with stationary screens this could, in a limited fashion, already be possible just by writing the appropriate Lua mainframe code. If it's wireless (smartphone like) this could be achieved via an expansion card that does the "server" part and some client handheld items, I suppose. Either way, it's something for a little further down the road, there's still a couple of more basic things that need ironing out.

Made my day
Thanks alot.
I can definetly see the difference between this one and CC.
It just fits better in "hardcore" modpacks and makes somehow more sense with
those expensive and complex recipes plus the modular computers.
And the fact that computers are persistent speaks for itself

Just wondering. Do your computers work with CC peripherals or Open peripherals etc. ?
Anyway keep it up

Made my day
Thanks alot.
I can definetly see the difference between this one and CC.
It just fits better in "hardcore" modpacks and makes somehow more sense with
those expensive and complex recipes plus the modular computers.
And the fact that computers are persistent speaks for itself

Just wondering. Do your computers work with CC peripherals or Open peripherals etc. ?
Anyway keep it up

Thanks, that's exactly what the mod is trying to be

I'm afraid the mod doesn't natively support CC peripherals. I actually played around with that for a bit, but there are a couple of issues, mostly in the way the underlying architecture of the mods is just way too different, that made it unsatisfying.
Also, I really didn't want to unnecessarily add fuel to the fire that the mod may cause, by using their API to implement things that were not intended to be implemented by others (fire: I'm sure some people will not see it like you do, and will sadly consider it a rip-off).

Yea I see your point.
People just have to accept that EVERY idea is somehow a rip-off xD
And to be fair. CC is so popular for a good reason and will always have his fans,
so others definetly deserve a chance to come up with similar ideas without getting hated

Edit: I guess since its OPEN computers we will maybe see some own peripherals in the future

Edit2: Yay its back up.
I played a bit around with the mod and I have a few ideas(suggestions)

Robot Upgrades:
-Tank Upgrade(Maybe let it also work as an liquid Generator Upgrade)
-Compass Upgrade(Gives functions to get current x,y,z Coords)
-speed Upgrade(Faster Robots maybe for item transport??)
-solar Energy Upgrade(With a very slow charging rate of course )

General Tweaks/Ideas:
-I have a few problems with the controls when Im on a terminal.
For example I cant write ~, [ or } without changing my keyboard settings to englisch
because it wont accept str(ctrl) or alt gr since these buttons are used to save.

-Remote Control! Maybe an item wich can be activated with right click in your hotbar.Once its activated
all keyboard input gets send via Wifi to a specified computer.(Just a rough idea though)
Or something similar to the Terminal Glasse from Open Peripherals :/

-a electrical lock with numberic input wich you can put on a wall

I have just a few questions to the end.
How exactly do robots benefit from exp besides more energy storage(which is good dont get me wrong )
Not sure if this is the right place to ask but I have a few problems with event.pull(). How do I get my event return true when, for example "w ", is pressed and false if not? And what signals do exist btw?

Absolutely. And to be clear as can be, this is not intended as a general replacement for ComputerCraft - it couldn't possibly be, nor should it be. After all, CC had a long time to evolve into where it is now, and this mod simply targets a different audience. Or at least that's what I'd like to think.

And yes, other people implementing addons for this would be absolutely fantastic! I'm definitely hoping for that

Looks awesome !
I hope you fokus on robotics in the future because
cc turtles are cute but only blocks with some player-like functions.
Your robots hopefully gonna be some kind of thing that
is more specialized but can be more efficient then a player!

Edit2: Yay its back up.
I played a bit around with the mod and I have a few ideas(suggestions)

Robot Upgrades:
-Tank Upgrade(Maybe let it also work as an liquid Generator Upgrade)
-Compass Upgrade(Gives functions to get current x,y,z Coords)
-speed Upgrade(Faster Robots maybe for item transport??)
-solar Energy Upgrade(With a very slow charging rate of course )

General Tweaks/Ideas:
-I have a few problems with the controls when Im on a terminal.
For example I cant write ~, [ or } without changing my keyboard settings to englisch
because it wont accept str(ctrl) or alt gr since these buttons are used to save.

-Remote Control! Maybe an item wich can be activated with right click in your hotbar.Once its activated
all keyboard input gets send via Wifi to a specified computer.(Just a rough idea though)
Or something similar to the Terminal Glasse from Open Peripherals :/

-a electrical lock with numberic input wich you can put on a wall

I have just a few questions to the end.
How exactly do robots benefit from exp besides more energy storage(which is good dont get me wrong )
Not sure if this is the right place to ask but I have a few problems with event.pull(). How do I get my event return true when, for example "w ", is pressed and false if not? And what signals do exist btw?

Looks awesome !
I hope you fokus on robotics in the future because
cc turtles are cute but only blocks with some player-like functions.
Youre robots hopefully gonna be some kind of thing that
is more specialized but can be more efficient then a player!

Thanks! I've been thinking about how to implement the robots a lot. For now they're also bound to block-by-block movements, but with a little more fine-grained control over where they "click" than turtles. Making the move to real entities, i.e. having them move around freely is something I would love to do. It'd also make a bunch of things easier, since there'd be a real entity things interacted with could respond to. I just haven't come up with a satisfying solution on how to program these from Lua without it being really difficult or just giving the robot its real-world coordinates. The big problem: entities can be shoved around, so the robot can easily loose track of where it is.

Hm I was so long typing that my second Edit may be unseen so I quote mysself

btw are u German?

Yeah, sorry for the thread going into stealth mode there. Thanks for the suggestions! A couple of these were already on my list (which I should probably post somewhere...)

I'll look into the keyboard issue, that can probably be considered a bug. And yeah, I'm German so that'll be easy enough to test I just use the English layout most of the time since it's more comfortable for coding.

I'll have to write a wiki-page on robots, but in short: they get more efficient in their tool usage, tools lose durability less quickly and they harvest blocks faster.

You can't directly get a true or false out of event.pull(). You can either pull it with a filter that only accepts 'w's, in which case it'll only return after 'w' was pressed, or you have to manually check if the pressed key was a 'w' after it returned.

A list of all signals (unless I forgot something) can be found here on the wiki.

Thanks It's an interesting idea, there are many approaches to it. If it's purely wired and with stationary screens this could, in a limited fashion, already be possible just by writing the appropriate Lua mainframe code. If it's wireless (smartphone like) this could be achieved via an expansion card that does the "server" part and some client handheld items, I suppose. Either way, it's something for a little further down the road, there's still a couple of more basic things that need ironing out.

The idea I had were wired screens (yet another set of wires to run beneath my walls / ceilings / floors, like I didn't have enough already :P), but wireless are just as good...
I'll go straight to business, this interests me a lot, especially mainframes, and no matter how much people talk you down and say it's a rip off you shouldn't let go of it. To be honest, I think it's better than CC in MANY ways. Starting with computers not being dirt cheap, and going through using power, several blocks, persistence, modularity, and it goes on...

Now, I'm a mod developer too, and the feature after the one I'm working on will be some sort of network solution... It means cables laying around connecting machines running a weird cousin of TCP/IP, making a whole base controllable from computers. Problem is, there's no computers planned in my mod, so I need to interface with external solutions to enable the most powerful features my network can offer... I originally intended to write a CC plugin (and I still do, but this is better for what I intend), until I found your mod and realized it fills the HUGE gap my mod has (I'm not going to implement computers at all, that's too much work and out of focus).

So, I thought about writing a plugin for OpenComputers. Then I realized how damn complex your API is... still somehow, it MUST be done (although I believe it would be easier for you to implement my small and simple API [hasn't been re-written yet] than for me to even begin to understand yours. I'll still do it if I have to, but I had to expose this).

I really think OpenComputers is a great companion mod for StargateTech 2, which is my poor way to say we should get along and discuss things... What do you think? (feel free to drop me a PM instead, if you prefer to keep it private, which is what I should have done in the first place, but meh).

Now, I really believe this is great work (I'm a Computer Sciences / Engineering {not sure how to translate} student, so I couldn't be happier about this coming to Minecraft). Keep up the great work!

Ok this looks quite good, will there be compatability with Project:Red Cables?

Thanks! Yeah, I'll look into implementing their interface for the next version. I remembered reading somewhere that it was related to immibis' ones, so I just assumed it'd work. Seems it doesn't. Oh well, another API into the mix

Edit: after having a closer look I'll probably have to implement Forge multipart for this. I'll still try to get this done as soon as possible, will retract my promise regarding getting this in next release, though. May still make it, but it's closer to 50/50 now. Getting confused with all the APIs here, needs further testing, will update later.

Thanks! Yeah, I'll look into implementing their interface for the next version. I remembered reading somewhere that it was related to immibis' ones, so I just assumed it'd work. Seems it doesn't. Oh well, another API into the mix

Edit: after having a closer look I'll probably have to implement Forge multipart for this. I'll still try to get this done as soon as possible, will retract my promise regarding getting this in next release, though. May still make it, but it's closer to 50/50 now. Getting confused with all the APIs here, needs further testing, will update later.

That would be awesome. I really like your way of implementing computers to minecraft. This is a lot different from computercraft, so keep it going.

Your mod working together with Project: Red .. yeeeah I am really looking forward to it.

Hi, I just wanted to say that in principle, I think your mod is really cool. However, your decision to use native libraries makes it a pretty much total non start for modpacks. Just so you know. Even if we could get OSX compiled for you, it's unlikely 3rd party hosts will ever set that up and it complicates our distribution.

I'd strongly suggest looking for another path to resumable lua instances. I'd also strongly suggest not looking at threads with a late 90's mindset, but that's another conversation.