Skip to content

feat: Add Vanilla-compatible destructive explosions and TNT - #428

Open
kdcokenny wants to merge 24 commits into
Steel-Foundation:masterfrom
kdcokenny:kdcokenny/finish-explosions
Open

kdcokenny wants to merge 24 commits into
Steel-Foundation:masterfrom
kdcokenny:kdcokenny/finish-explosions

Conversation

@kdcokenny

@kdcokenny kdcokenny commented Aug 22, 2026 •

Copy link
Copy Markdown
Contributor

Type of change

  • Block implementation
  • Entity implementation
  • New feature
  • Refactor / code cleanup
  • Performance improvement

Description

Adds server explosions, TNT blocks, Primed TNT, explosion packets, damage attribution, and block/entity effects.

Optimized paths preserve Vanilla ray order, RNG use, callbacks, exposure, drops, knockback, and ownership. Dynamic and plugin behavior falls back to live queries.

How this was tested

  • cargo test -p steel-core --lib: 2,514 passed, 1 ignored
  • cargo clippy -r --all-targets --all-features -- -D warnings
  • cargo fmt --all --check
  • typos
  • Minecraft 26.2 Fabric client GameTest: all 9 explosion scenarios passed
  • 10,000-TNT chain: Steel 3.38 ms/tick, Vanilla 9.44 ms/tick

Screenshots / logs

Real-client coverage includes ignition, chain reactions, water, damage, creative/spectator behavior, and the TNT gamerule.

Checklist

  • Code builds w/o errors or warnings
  • Self-reviewed the diff
  • Docs updated (not applicable)
  • No leftover debug code / comments

Additional notes

Steel retains Vanilla's air processing and does not use the Lithium/Paper skip-air shortcut.

HotSpot's identity-based ordering cannot be reproduced for rare, unusually large custom explosions. Affected blocks remain the same, but callback order may differ.

Closes #575

@kdcokenny
kdcokenny marked this pull request as ready for review August 22, 2026 02:43
@ezraclintoc

Copy link
Copy Markdown
Contributor

Do you know if it works with https://www.youtube.com/watch?v=Ay9ZnCVZhVc
Although this might also rely on other systems as well

@kdcokenny

kdcokenny commented Aug 22, 2026 •

Copy link
Copy Markdown
Contributor Author

Do you know if it works with https://www.youtube.com/watch?v=Ay9ZnCVZhVc Although this might also rely on other systems as well

the goal is full parity with vanilla, so if it doesn't work let us know

@ezraclintoc

Copy link
Copy Markdown
Contributor

Do you know if it works with https://www.youtube.com/watch?v=Ay9ZnCVZhVc Although this might also rely on other systems as well

the goal is full parity with vanilla, so if it doesn't work let us know

I'll have to wait until powered snow get implemented

@github-actions

Copy link
Copy Markdown

This pull request has conflicts with the base branch "master". Please resolve those so we can test out your changes.

@github-actions

Copy link
Copy Markdown

Conflicts have been resolved! 🎉

@github-actions github-actions Bot added Block Request/implementation/Bug of a block Enhancement New feature or request Entity Request/implementation/Bug of an entity which isn't a mob. like arrow, enderperl, etc Performance Refactor labels Aug 24, 2026
@kdcokenny

Copy link
Copy Markdown
Contributor Author

now faster than paper while maintaining full parity with vanilla!!!

@victorialondynn

Copy link
Copy Markdown

@kdcokenny

Copy link
Copy Markdown
Contributor Author

@github-actions

Copy link
Copy Markdown

This pull request has conflicts with the base branch "master". Please resolve those so we can test out your changes.

@github-actions

Copy link
Copy Markdown

Conflicts have been resolved! 🎉

@coco875 coco875 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

didn't finish read all

Comment thread steel-protocol/src/packets/game/c_explode.rs
Comment thread steel-core/src/behavior/block/mod.rs
Comment thread steel-core/src/behavior/block/mod.rs Outdated
Comment thread steel-core/src/behavior/blocks/redstone/tnt_block.rs Outdated
Comment thread steel-core/src/chunk/section.rs
Comment thread steel-core/src/chunk/section.rs
@github-actions

Copy link
Copy Markdown

This pull request has conflicts with the base branch "master". Please resolve those so we can test out your changes.

@github-actions

Copy link
Copy Markdown

Conflicts have been resolved! 🎉

@github-actions

Copy link
Copy Markdown

This pull request has conflicts with the base branch "master". Please resolve those so we can test out your changes.

@kdcokenny
kdcokenny requested a review from coco875 August 29, 2026 12:57
@coco875

coco875 commented Oct 14, 2026

Copy link
Copy Markdown
Contributor

Just as a reminder master also have the new java collection so there is that to dedup when you fix conflict with master

@coco875

coco875 commented Oct 14, 2026 •

Copy link
Copy Markdown
Contributor

not a new collection my bad, but his steel-core/src/world/explosion/server/block_rays/java_block_pos_set.rs now correspond to steel-core/src/worldgen/feature/vanilla_collections.rs so not really a new collection but the representation of a set of java_block_pos have change

@Joniii11 Joniii11 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

these only 3 things they came up cuz of the 26.3 update if you fix them lgtm frommme kenny

Comment thread steel-protocol/src/packets/game/c_explode.rs
Comment thread steel-core/src/world/explosion/server/block_rays/tests/gameplay.rs Outdated
Comment thread steel-core/src/behavior/blocks/redstone/tnt_block.rs Outdated
@github-actions

Copy link
Copy Markdown

Conflicts have been resolved! 🎉

@github-actions

Copy link
Copy Markdown

This pull request has conflicts with the base branch "master". Please resolve those so we can test out your changes.

@github-actions

Copy link
Copy Markdown

Conflicts have been resolved! 🎉

Comment thread steel-core/src/entity/entities/objects/explosives/primed_tnt.rs
Comment thread steel-core/src/entity/entities/objects/explosives/primed_tnt.rs Outdated
Comment thread steel-core/src/entity/entity/mod.rs Outdated
Comment thread steel-core/src/entity/block_effects.rs
Comment thread steel-core/src/entity/block_effects.rs Outdated
Comment thread steel-core/src/java_block_pos_set/tests/openjdk25-sequential-identity.txt Outdated
Comment thread steel-core/src/java_block_pos_set/tests/openjdk25.txt Outdated
Comment thread steel-core/src/world/explosion/server/block_rays/java_block_pos_set/tree.rs Outdated
Comment thread steel-core/src/world/explosion/server/block_rays/tests/vanilla-tnt-order.txt Outdated
Comment thread steel-core/src/java_block_pos_set/mod.rs
# Conflicts:
#	steel-core/src/entity/entity/mod.rs
#	steel-core/src/worldgen/region.rs
@coco875

coco875 commented Oct 26, 2026

Copy link
Copy Markdown
Contributor

I have make a pr for extractor for json Steel-Foundation/SteelExtractor#32 totally don't know if it's done correctly

@github-actions

Copy link
Copy Markdown

This pull request has conflicts with the base branch "master". Please resolve those so we can test out your changes.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Block Request/implementation/Bug of a block Enhancement New feature or request Entity Request/implementation/Bug of an entity which isn't a mob. like arrow, enderperl, etc Merge Conflicts Performance Refactor

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Finish vanilla compatible explosions and TNT

10 participants