Fixes#2649. Explanation:
* Other mods can integrate with us by implementing the SimpleComponent
interface. They annotate its methods with @Optional to avoid a hard
dependency on us.
* Our mod ID changed from "OpenComputers" in 1.10 to "opencomputers" in 1.11.
* Some mods (like RFTools) can't refer to our mod by the right-case mod ID,
because the same .jar works on both 1.10 and 1.11.
* In most cases, using the wrong-case mod ID would just mean that integration
wouldn't work, but for us, it causes a crash.
* The crash is because we use ASM to inject some extra methods and make the
class implement a different interface. This means that if the @Optional mod
ID is wrong, our new interface will still be there but some of the original
methods won't, which leads to AbstractMethodErrors like McJty/RFTools#1466.
* Forge looks for the @Optional annotations before our coremod can do
anything, so we can't just remove them from the class. Instead, we need to
remove them from Forge's internal list.
I think it quite a reasonable drone design to allow a tier 2 drone to have
1. navigation upgrade (waypoints)
2. chunk loader (for traveling safely)
3. inventory upgrade (to cary and drop items)
closes#2043
thanks to @Pwootage, who explained this change as such:
Previously, checkHandle was not "language safe" (or at least, not JSON-safe):
open() returns a HandleValue (which is a type not exposed by the oc-api jar)
checkHandle() checks for either a integer, or a HandleValue object
When calling through a custom architecture, HandleValue may or may not be preserved, as the underlying language, unless it can attach the original Java object, may not be able to represent the HandleValue class, and so convert it to a table, which checkHandle() did not check for.
move all vt100 code to vt100 library
delay load event rare code
fix shell parse for %d>&%d not followed by whitespace
remove weird tty blink code and use vt100 codes
bump openos patch version
* Parse Lua REPL inputs with an implicit "return "
If an input does not start with a leading "=", this will parse the input
with "return " appended and, if that fails, will parse as a normal
statement.
This allows for normal expressions to be entered into the repl (such as
`2 + 2`) but does mean the parse errors for malformed inputs are
confusing. For instance, `3 + ` will error at '3' rather than '<eof>'.
* Do not insert into history if a duplicate
This mimics the behaviour of shells such as bash or zsh, where
whitespace-only lines are not entered into history, nor are ones equal
to the previous input. This makes history navigation slightly easier.