Tesla
Tesla is a power API designed for cross mod communication. It allows for Items, Blocks and Entities from various mods to interact with each other over the Tesla power network.
WARNING: Alpha and beta releases are intended for mod authors and testers. Mods that support Tesla should only target full releases! Using an alpha build may crash mods that require it!
This project is sponsored by Nodecraft. Use code Darkhax for 30% off your first month of service!
Getting Started
The best way to use the Tesla API is through Forge's Capability system. The idea is very simple, capabilities are implementations of an interface that handle a certain type of Tesla related logic. These capabilities can then be attached to supported things (Tile Entity, ItemStack and Entity). When a capability is attached, that thing will have access to the provided tesla logic, and it will be visible to other tesla enabled things. You can see a basic capability implementation here and a tile entity example here. There is also an item example here.
Frequently Asked Questions
Where can people go to discuss the Tesla API?
There is a public discord server which can be found here.
What makes Tesla different from other power API?
The Tesla API functions very similarly to other power API, however there are several design choices made the API much more flexible. One of these choices was the decision to use Forge's capability system, which allows for Tesla support to be added to nearly anything. It would be possible for a mod to add Tesla support to a vanilla furnace with this system, without using any dirty hacks. Another decision was using longs over integers. This change allows for mods to easily work with larger power numbers.
Why did you make this API?
The API was originally made as a fun side project, but received a lot of unexpected attention from other developers. It was not created as a crusade to kill other power API or anything like that.
Are there any standards for Tesla?
The API does not enforce any standard, however there are a few things which mod authors are encouraged to follow. One Tesla should equal 1 RF, tile entities should not directly implement capability interfaces, and sided logic should be handled through the capability methods.
Should the Tesa API be bundled with other mods?
While bundling API is frequently done, and supported by Forge, it is a very bad practice. While there is nothing stopping other mods from bundling the API it is highly discouraged and will not be officially supported.
How does soft dependency work if I can't bundle the API?
Forge provides several tools which make soft dependency really simple. The first is the Optional annotation. This annotation can be added to any class that implements an interface, and if a certain mod ID is not detected, the interface can be stripped from the class. This allows for existing container objects to implement Tesla's interfaces without a hard dependency. The CapabilityInject annotation is also extremely useful for soft dependency. You can use this annotation on a field to have it initialized with a specific capability when said capability is initialized. You can also put this annotation on methods to have then called when the capability is initialized. One thing you might notice is that the annotation takes a reference to the capability class from Tesla, which will be missing under soft dependency. Due to the way annotations and the JVM work, it is safe to make this reference in the annotation. It will not give you a Class Definition exception.
Modpack Policy
Yes, you can use this in a mod pack. Please don't send me messages asking for permission to use this in your mod pack. I will not be responding to such messages.
please 1.15.2
tesla
In reply to accraft33:
tesla
1.15.2 please :)
What mod uses tesla api?!? i am using robotic parts mod and i need a tesla mod to power the cyberware charger. PLS TELL ME
In reply to Forge_User_86909708:
i installed it and when i tried to load it in my minecraft it keep crashing..... any way i can fix/stop this from happening?
In reply to mikamikachu123:
I needed a Minecraft version lower than 1.12 for something, so I chose 1.11.2 and downloaded the Tesla API for 1.11. Had a problem of it not loading and finding out that you can make it work by changing the mcmod.info from mcversion 1.11 to 1.11.2
Hope this helps people who want to use the Tesla API with Minecraft 1.11.2
The 1.11.2 version does not show up in the Curse Launcher. I tried downloading a mod which depends on TESLA and it automatically downloaded the 1.12 version. I now downloaded it from the website manually and it works, but is not listed as a "valid version" when I view the details or scroll through the mods.
Is a 1.11.2 version coming?
just wondering if you could make a 1.11.2 version for launcher vs site functioning between one another would be very helpful for us modpack makers to keep everything unified in a sense, my self would be eternally greatful if this is possible i understand you guys have lives and mostly do this as a hobby, but also have full time jobs etc so if you ever get the free time it would be great
thanks in advance sdubzcraft
Is there any point in this now that Forge has its own power system?
Please read this page from Forge's own repo. I also wrote a blog post on the issue when it was first added to forge which you can find here.
Um... Why did you upload AdditionalBanners to this project?
Tesla is switching over to a banner based power system. Instead of having T as a unit of power we will be using stitches.
In all seriousness, I switched over to a new build server a few hours ago, and there seems to be a few kinks in the system. Going to work them all out soon enough though! Thank you for reporting this to me.
No problem. Just thought it to be a little weird.
I wish there was a reddit-like upvote system. This comment is why.
Made a short Review:
You should mention your modid change somewhere obvious. Took quite a while to track my crashes down to that :P