Commit Graph
362 Commits
Author SHA1 Message Date
Jonathan Coates a4d172bcbe Gradle cleanup/overhaul.
- Fix a whole bunch of ErrorProne warnings. It's still quite noisy, but
   most of the remaining ones now come from Java.

 - Move some config from java-conventions to a new base-conventions,
   which can be used for non-Java projects. As part of this, we now kill
   the CCTweaked plugin, and just install the cct extension in
   base-conventions instead.

 - Kill inlineProject/externalSources. We now:
    - Add an embeddedProject configuration which is used to define
      projects that are embedded within the final jar. We do some fun
      variant resolution in ExternalProjectArtifacts to extract the
      class/resource/source directories from the configuration.
    - Add a new verifyClassesMatch task which recompiles the game and
      ensures compiling everything against the loader's version of
      Minecraft gives us the same result.
2026-09-11 20:10:58 +01:00
Jonathan Coates d449cbc3e7 Some basic datapack documentation 2026-09-09 10:07:36 +01:00
Jonathan Coates 358a6e6263 Relax supported HTTP verbs
There's some really awkward duplication in the HTTP API right now, where
the Lua code reimplements the validation the Java implementation
provides, in order to throw errors at the right level.

In this particular case, our Lua validation was stricter than the Java,
only permitting a known set of verbs. This commit:

 - Makes the Java-side validation a little stricter, to only allow verbs
   matching [A-Z_-]{1,32}. This is strictly much stricter than what the
   HTTP spec allows, but I think makes sense as a restriction.

 - Update the Lua wrapper to match this logic, rather than being
   stricter.

Fixes #2501.
2026-08-28 20:36:19 +01:00
Jonathan Coates 3469060b6b Update Gradle and dependencies
- Fix *some* cross-project isolation issues. This appears to be the
   bare minimum to make the configuration cache happy. There is
   obviously a lot more work to do here.

 - Enable Configuration cache.

 - Fix some new checkstyle/errorprone/nullaway warnings.
2026-08-27 16:33:36 +01:00
Jonathan Coates 99e9c72686 Fix a whole bunch of spelling mistakes
Using typos[^1]. I wrote a config for this years ago, but never checked
it in. All things considered, there's fewer than I expected.

Fun fact: the CCPL contains the text "if added to to the main
repository", and I can't/shouldn't fix it, because it's an external
license!

[^1]: https://github.com/crate-ci/typos/
2026-08-26 14:40:04 +01:00
Jonathan Coates 8bdea64474 Fix multishell not culling after changing focus
When we resume a process, the code looks like:

  resumeProcess(nCurrentProcess, ...)
  if cullProcess(nCurrentProcess, ...) then ... end

However, if the focused tab changes while resuming (via
multishell.setFocus), then we don't cull the correct process!

To fix this, we just add a helper function which resumes+culls, meaning
we only read the mutable global once.
2026-08-14 16:45:46 +01:00
ItsVingtdeux 9c1a9a6319 Fix random indentation of two lines in bios.lua (#2495)
The "type" field definitions for the "edit.autocomplete" and
"lua.autocomplete" settings were both randomly indented, compared to the
rest of the setting definitions.
2026-08-14 09:54:16 +01:00
Jonathan Coates c3cfb206de Bump CC:T to 1.120.2 2026-08-08 10:13:48 +01:00
Tomodachi94 2b0adaea5c Document sleep()'s optional parameter (#2488) 2026-07-26 07:40:00 +00:00
Jonathan Coates 1cf0ff299e Fix shell crashing if read() doesn't yield
This never happens normally, but can happen if read() is overridden.
2026-07-07 14:03:27 +01:00
Jonathan Coates 3404dcbbd8 Lower size/time-taken in base64 test
This sometimes fails in CI, as the GHA machines are slower than my own.
2026-07-05 11:23:20 +01:00
Jonathan Coates 1fa227d573 Link to write/print in term.write docs 2026-07-03 09:03:53 +01:00
Jonathan Coates 0e8600b10c Clarify text mode changes in 1.109
Fixes #2470.
2026-06-28 22:35:23 +01:00
Jonathan Coates 143a5b2918 Replace 26.1 with 26.2 in issue template 2026-06-16 17:38:20 +01:00
Jonathan Coates 715d2e01db Bump CC:T to 1.120.0 2026-06-15 22:30:32 +01:00
Jonathan Coates a76220b395 Revert redundant indexOf
I'd considered moving this into the HostRange in
27137c67f7, but eventually decided against
it. Just didn't fully revert the commit!
2026-06-15 18:39:49 +01:00
Jonathan Coates 27137c67f7 Refactor host rule code a little
Now we just use builtin INetAddress predicates or HostRange, rather than
a mix of custom predicates, sets and HostRange.

Also add some other ranges from the reserved list, and link to that list
to make it a bit easier to find stuff in the future.
2026-06-08 13:47:29 +01:00
Jonathan Coates 57ea451d60 Fix a few small typos
Well, mostly my inability to spell.
2026-06-06 11:39:29 +01:00
Jonathan Coates d1bfb2571d Block RFC 8215-style addresses too.
I don't konw if this actually matters, but better safe than sorry.
Everything here confuses me — my understanding of RFC 6052 was that
private IP addresses cannot be used with NAT64, but AWS apparently
allows it? Not sure if I or Amazon is wrong (or both!).
2026-06-05 09:42:41 +01:00
Ruby H 15a5e776cb Support spawning new parallel functions (#2263)
- Split implementation of `parallel.waitFor{All,Any}` up. Their
   implementations are now sufficiently complicated it doesn't make
   sense to share the core.

 - Support spawning new functions from within `parallel.waitForAll`.

 - Flesh out the `parallel.waitForAll` docs a little.
2026-05-26 14:13:07 +00:00
Jonathan Coates 432214f70a Bump CC:T to 1.119.0 2026-05-16 14:57:17 +01:00
Jonathan Coates 585b6d4d39 Block NAT64 addresses 2026-05-16 14:41:37 +01:00
Jonathan Coates 87916cf342 Prohibit specifying interface in IPv6 addresses 2026-05-16 14:37:21 +01:00
Jonathan Coates 39aab8c384 Add cc.base64 module
Don't love the API here, but really trying to overthink *everything*.

Closes #1960.
2026-05-15 14:30:48 +01:00
sircfenner b23ac67702 Fix min & sec field defaults in os.time (#2436)
These defaults are wrongly set to 12. They should be 0 for parity with
stock Lua.
2026-05-09 10:55:07 +01:00
Jonathan Coates 39a12893e3 Fix handling of integer indexes in CobaltLuaTable
- Add a new LuaTable.get(int) overload to handle getting an integer key
   instead.
 - Update CobaltLuaMachine for more sensible Java->LuaValue conversion
   for looking up keys.
 - Add some tests for our two LuaTable implementations.
 - Randomly reformat two files because spotless is ???

Fixes #2430
2026-05-02 13:50:58 +01:00
Jonathan Coates abe3d3410f Remove pathWithExtension
This doesn't actually do anything: paths will never have a trailing
slash, so it's just equivalent to `x..".lua"`.
2026-04-29 11:42:56 +01:00
Jonathan Coates 2c58040ae6 Bump CC:T to 1.118.0 2026-04-26 17:39:17 +01:00
Jonathan Coates c526e9a40c Add commands.getEntity
- Add (very basic) details provider for entities.
 - Add commands.getEntity(selector) function, which gets details for all
   matching entities.

Fixes #2383
2026-04-25 18:22:06 +01:00
Jonathan Coates 813d1151c7 Add timeout to rednet.lookup
Fixes #2364
2026-04-25 17:39:07 +01:00
Jonathan Coates a624f88200 Clear terminal in edit program on resize event (#2401) 2026-04-21 18:26:07 +01:00
ItsVingtdeux db32ddfec5 Add documentation for the setting_changed event (#2405) 2026-04-07 21:35:42 +00:00
Wojbie 888186bac3 Clear terminal in edit program on resize event 2026-03-22 00:05:25 +01:00
Pink 19b8433653 Fix shebang absolute path handling (#2398)
The shebang/interpreter program is run with the *resolved* path of the
original program. However, this path was not marked with a leading `/`,
meaning interpreters may try to resolve it again.

We now add an explicit leading `/`, to ensure the path is treated as
absolute.
2026-03-19 18:59:51 +00:00
ItsVingtdeux e62dd6df5e Replace references to resource packs with data packs (#2396) 2026-03-19 18:58:28 +00:00
Jonathan Coates 57a6add81a Bump CC:T to 1.117.1 2026-02-22 13:00:32 +00:00
Jonathan Coates a0571e444c Fix getResponseHeaders @since version
Closes #2378
2026-01-28 23:56:53 +00:00
Meme Tech 7292e3298f Fix discrepancy in type help (#2374) 2026-01-28 10:38:26 +00:00
Jonathan Coates 4a6ec54813 Remove "CC may be installed incorrectly" message
It /technically/ may be the case, but in the days of modern mod loaders,
much less likely. Normally this is user error.

Closes #2372.
2026-01-25 09:39:13 +00:00
Jonathan Coates d5e0b0ad2a Bump CC:T to 1.117.0
A day early, but my commitment to the bit is waning.
2025-12-24 09:07:02 +00:00
Jonathan Coates 24fd27d2a3 Add test for potion durations 2025-12-24 08:51:15 +00:00
Jonathan Coates 90e7307fb4 Fix websocket_closed not always being queued on failure
- Reorganise the HTTP test code to make it a bit more extensible. Add
   support for sending messages to connected websockets.
 - Provide a friendlier message for too-large-payload errors.
 - Return failure reason from Websocket.receive

Fixes #2149.
2025-12-19 21:12:37 +00:00
Jonathan Coates 1520bebb6c Simplify event code in LuaTaskContext
We remove support for multiple event listeners, and now just use a
simple event queue again. This makes the code a little simpler, and
removes the risk of race conditions where we do do something, and it
queues the event before we call pullEvent().
2025-12-19 21:12:31 +00:00
Jonathan Coates f820cd8b43 Rewrite the GPS setup guide
Mostly trying to avoid the number of asides, to make it a bit more
straightforward. I'm not entirely sure I succeeded.

Fixes #1681, closes #1542.
2025-12-18 13:30:12 +00:00
Jonathan Coates 4b1541154b Add Websocket.getResponseHeaders method
Closes #1387
2025-12-17 23:11:12 +00:00
Jonathan Coates 7659c608a6 Dynamically pick the port in HTTP tests 2025-12-17 14:03:38 +00:00
Jonathan Coates f31d8febbf Handle more of Windows's weird paths
AFAICT, any sequence of ".[ .]*" (except from "") is equivalent to "."
on Windows. Let's handle that in our path sanitisation code.

Fixes #2151.
2025-12-15 23:48:54 +00:00
Jonathan Coates ff9f038275 Another build tooling bump
- Update to latest MDG, to avoid decompiling Minecraft in CI.
 - Fix several Gradle warnings.
 - Bump ErrorProne, and fix a few more nits.
2025-12-15 12:42:38 +00:00
Jonathan Coates 28682aa468 Rewrite computer input handling (again)
Hey, it lasted almost a year!

Computer input is somewhat stateful, as we need to track things like
which key(s) are currently held, and what the last mouse button/position
was. This code is currently duplicated in several places (specifically
TerminalWidget, ServerInputState and the standalone emulator).

In order to implement lectern pocket computer mouse interactions, we'd
have to duplicate this logic once again. Instead, we move this code into
a common class.

 - Replace the InputHandler interface with a simpler ComputerInput one
   (this no longer has computer actions, like reboot or terminate). This
   interface never made much sense (aside from hiding implementation
   details), as code only ever consumed a single implementation of it.

   On the client, this requires a new "ClientComputerActions" class.
   This feels a bit clunky to me, but it's simple and it works.

 - Replace ComputerEvents with a EventComputerInput class (terrible
   name, I know!), which queues events on a computer.

 - Move common input state tracking and validation into a single
   UserComputerInput class, which wraps an existing ComputerInput. This
   is used by both the terminal widget, and the server-side input state.
2025-12-14 16:53:18 +00:00
Jonathan Coates 2a35d17906 Clarify behaviour around drawImage cursor 2025-12-09 23:15:45 +00:00