u/Biquaternions

The Orbital Strike Cannon works in Paper 26.1.2+ now

The Orbital Strike Cannon works in Paper 26.1.2+ now

Hey guys, around a month ago I accidentally found out that the Orbital Strike Cannon made by cubicmetre now works in Paper 26.1.2.

To be exact, it has been working since 1.21.11 build 116, but since some people are allergic to keeping their software up-to-date, I think saying "it works since 26.1.2" is the safest choice for me.

And I personally think it is important to share with the community since it's a really cool contraption that sadly wasn't within reach of those that wanted to run Paper servers.

For those that are not aware, Paper has a guide on how to restore most of the vanilla parity back to Paper at:

https://docs.papermc.io/paper/vanilla/

However, even after following their guide, the OSC would still either blow itself up, or completely misfire.

This was due to a small bug (yes, it was small, see below) in Moonrise, which Paper gets most of its optimizations from, which caused the collisions to not match vanilla behavior.

This also means that other collision-related issues Paper had in the past had already been fixed by this too:

https://github.com/Tuinity/Moonrise/commit/63803b818fa6943d32418459f57fa85fdc79b415

To enter into more technical details, during the block collision calculation, vanilla has two collision check routes depending if the AABB (Axis-Aligned Bounding Box) in question is colliding with a block or not. If it is colliding with a whole block, it makes the calculation directly instead of using the other algorithm which includes an epsilon check.

For comparison, Moonrise (before this fix) did the exact same calculation, with the tiny difference that it applied the epsilon check to all blocks regardless of their shape.

In other words, collisions had a small margin of error which vanilla doesn't use for whole block shapes, only for non-whole blocks (fences, cakes, etc).

You can see this diverging path in vanilla here:

https://mcsrc.dev/1/26.1.2/net/minecraft/world/level/BlockCollisions#L93

You can see the epsilon check here:

https://mcsrc.dev/1/26.1.2/net/minecraft/world/phys/shapes/Shapes#L164

For those that got interested into watching it work, but don't want to set this up themselves, I have a video showing the cannon firing in a Paper 26.1.2 server:

https://www.youtube.com/watch?v=Mz-gxXeQAyY

And another one showing how I made the setup for that video:

https://www.youtube.com/watch?v=LRAb7SoPEAc

For those that are actually interested into setting this up themselves, I also have a server download, it doesn't contain any executable binaries, so whoever wants to try it out has to download Paper 26.1.2 themselves.

Set the coordinates of the cannon to X=16 Y=112 Z=112 in your fire control spreadsheet, and you can target pretty much anywhere you want.

The control panel is at X=-80 Y=85 Z=-780:

https://www.mediafire.com/file/qfe1zem89p6xifu/osc.zip/file

Another note for admins that might be concerned about their server security or stability. I get that following the entire vanilla-like experience guide in Paper can be concerning, since it reintroduces attack vectors, exploits or performance degradation, in truth you actually only need 3 of those configurations for this cannon to work in your server. Assuming you have the default paper configuration that is:

In paper-global.yml

# This will allow TNT duping
unsupported-settings:
    allow-piston-duplication: true

In paper-world-defaults.yml

# This will allow the fishing rod to fire the cannon remotely
chunks:
    delay-chunk-unloads-by: 0s

In spigot.yml

# This will remove the limit of tnt that can explode per tick, which is important for large payloads
world-settings:
    default:
        max-tnt-per-tick: -1

And there's also one instance already of people actually firing the cannon, completely built in survival, no placing schematics like I did on the videos above.

In this case, the Moonrise fix I've been talking about was released in February 15, around the time their server was already ending, so they didn't have it available at their time and, as such, they just rolled back the collision logic to vanilla (their server was also running 1.21.1 for whatever reason, so they would've gotten this fix anyway).

This is their video where they build the cannon in survival, and fire it:

https://www.youtube.com/watch?v=7EQN6Fve_2A

This is the fork they made, it was originally made for 1.21.1 from what I saw in their video, and they have ported it into 1.21.11 to make it public, which was a bit pointless since 1.21.11 already has the fix, but still cool they open sourced their solution for their community (I left them a PR explaining that this is fixed already):

https://github.com/Kwilver/KwilsOrbitalPaper

Now that is officially fixed, it is available for everyone to use in base Paper, no weird plugins or forks required.

Compared to their fix, which was rolling back the entire collision logic, Moonrise's fix didn't have to sacrifice their collision optimizations by rolling back vanilla and, as such, the cannon has similar (probably better, see below) performance characteristics compared to Fabric+Lithium.

In other words, firing it won't completely freeze the server when sending small payloads like vanilla does. These are some spark reports (8 minutes each) I took of the cannon firing a NUKE of size 30 to X=-2600 Y=68 Z=-2300, basically intentionally trying to get the server to lag or even freeze, since payloads over 16 are heavy for the server, and 31 is the limit for the nuke.

While these are already a good measurement, I do still think that a more detailed benchmark would be required to tell the difference since the tps drop is very small in the three cases.

See the small dent each profiler has around (-2m) in the timeline, and also the MSPT "max" at the top of each profiler.

Using Fabric+Lithium:

https://spark.lucko.me/fPb0bfFdlZ

Using Fabric+Moonrise:

https://spark.lucko.me/l51lyLE0KV

Using Paper:

https://spark.lucko.me/57sOJDXBkW

Another thing I found interesting is that, while this has been broken in Paper for years, it only took around 3 weeks to get fixed after someone actually took the time to properly file an issue with explanations and a small schematic example that made it easier to debug. We can probably get more stuff like this fixed in the future if we start reporting these issues.

This is the issue in Moonrise, opened in January 22, 2026:

https://github.com/Tuinity/Moonrise/issues/162

This is the commit that fixed in the issue in February 15, 2026:

https://github.com/Tuinity/Moonrise/commit/63803b818fa6943d32418459f57fa85fdc79b415

Finally, I want to clarify that I have no idea if the cannon will work in Purpur, Pufferfish or any other software, as I have only tested this in Paper. For the two mentioned above, in theory it should, but I don't want to make promises, if anyone is willing to test it (the download world is above), feel free to leave a comment.

u/Biquaternions — 9 hours ago