Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Explosion: implemented underwater explosion #6456

Open
wants to merge 10 commits into
base: minor-next
Choose a base branch
from

Conversation

nicholass003
Copy link
Contributor

Introduction

This PR implements underwater explosion for Underwater TNT

Minecraft.2024-09-21.10-12-07.mp4

Relevant issues

Changes

API changes

Behavioural changes

Backwards compatibility

Follow-up

Tests

I tested this PR by doing the following (tick all that apply):

  • Writing PHPUnit tests (commit these in the tests/phpunit folder)
  • Playtesting using a Minecraft client (provide screenshots or a video)
  • Writing a test plugin (provide the code and sample output)
  • Other (provide details)

@jasonw4331 jasonw4331 added Category: Gameplay Related to Minecraft gameplay experience Status: Insufficiently Tested Type: Enhancement Contributes features or other improvements to PocketMine-MP labels Nov 4, 2024
@dktapps
Copy link
Member

dktapps commented Nov 9, 2024

A better approach might be to allow the constructor to accept a list of BlockTypeTags (or type IDs) that it skips over, and then check those tags (or IDs) when looking at blocks to destroy. That would make it more flexible and enable custom use cases.

@nicholass003
Copy link
Contributor Author

Is this the correct approach? I have several options for the variable that stores the list of BlockTypeIds namely :

  • $excludedBlockTypeIds
  • $ignoredBlockTypeIds

However, I think the name BlockTypeIds is too long, would you prefer $excludedBlockIds?

src/world/Explosion.php Outdated Show resolved Hide resolved
@nicholass003
Copy link
Contributor Author

Should $excludedBlockTypeIds be public?

@dries-c
Copy link
Member

dries-c commented Nov 11, 2024

Well if people wanted to change the blocks affected by the explosion they can always cancel the EntityPreExplodeEvent and make their own explosion

src/world/Explosion.php Outdated Show resolved Hide resolved
@@ -118,6 +130,9 @@ public function explodeA() : bool{
}

$state = $subChunk->getBlockStateId($vBlockX & SubChunk::COORD_MASK, $vBlockY & SubChunk::COORD_MASK, $vBlockZ & SubChunk::COORD_MASK);
if(count($this->excludedBlockTypeIds) > 0 && isset($this->excludedBlockTypeIds[$blockFactory->fromStateId($state)->getTypeId()])){
continue;
}
Copy link
Member

Choose a reason for hiding this comment

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

I don't think this is right. It might end up making explosions more powerful in water since the blast force isn't being decreased. I think the previous check by overriding the blast resistance was more correct.

@dktapps dktapps added the Easy task Probably really easy to do, good task for first-time contributors label Dec 1, 2024
Copy link

This PR has been marked as "Waiting on Author", but we haven't seen any activity in 7 days.

If there is no further activity, it will be closed in 28 days.

Note for maintainers: Adding an assignee to the PR will prevent it from being marked as stale.

@github-actions github-actions bot added the Stale label Dec 10, 2024
@dktapps dktapps requested a review from a team as a code owner December 12, 2024 13:22
@github-actions github-actions bot removed the Stale label Dec 14, 2024
@dktapps dktapps changed the base branch from stable to minor-next December 16, 2024 20:22
@dktapps dktapps self-assigned this Dec 16, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Category: Gameplay Related to Minecraft gameplay experience Easy task Probably really easy to do, good task for first-time contributors Status: Insufficiently Tested Status: Waiting on Author Type: Enhancement Contributes features or other improvements to PocketMine-MP
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants