Conversation
dktapps
left a comment
There was a problem hiding this comment.
My gut reaction to this is: I don't like the code.
I don't think we should be using custom actions for this since the actions are only usable with specific types of transactions. By the way other stuff has been done, different AnvilTransaction classes should be implemented.
I'm also not liking the logic of some of the item comparisons being limited to checking type IDs. Plugins will likely want to implement more complex logic, like using tags or NBT checking.
There was a problem hiding this comment.
I think it would also probably be preferable to have more events, e.g. PlayerItemRenameEvent, PlayerItemRepairEvent, PlayerItemCombineEvent (not sure about this last one). (That being said, if there were transaction types for this instead of actions, it would be a good amount nicer).
Doesn't make much sense to make plugins do complex logic to figure out the action type when we can just tell them directly.
|
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. |
| }else{ | ||
| $newBlock = $anvilBlock->setDamage($newDamage); | ||
| } | ||
| $world->setBlock($inventory->getHolder(), $newBlock); |
There was a problem hiding this comment.
It would be nice to be able to cancel this
There was a problem hiding this comment.
Pull Request Overview
This PR implements anvil functionality by adding new API methods for repair material validation, XP cost calculation, and enhanced anvil behavior. Key changes include new tests for anvil crafting, extended item repair cost handling, and integration of anvil recipes into the crafting manager.
Reviewed Changes
Copilot reviewed 19 out of 19 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| tests/phpunit/crafting/* | Added tests covering material repair and item self-combination recipes for anvils |
| src/network/mcpe/handler/ItemStackRequestExecutor.php | Integrated AnvilTransaction support and optional anvil crafting action handling |
| src/item/Item.php | Introduced anvil repair cost management with appropriate tag serialization |
| src/inventory/transaction/AnvilTransaction.php | Added a new transaction type to validate, execute, and trigger anvil events |
| src/crafting/* | Added new recipe types (MaterialRepairRecipe, ItemSelfCombineRecipe, etc.) and updated the crafting manager for anvil recipes |
| src/block/utils/AnvilHelper.php | Encapsulated anvil result calculation logic with XP cost filtering |
|
Here is a TODO list to complete this PR for me:
|
How about an event for canceling or changing an item’s name? Possible uses: the server doesn’t allow colored names, censorship, etc. |
|
You already have |
I have tested this fork and with the changes you have made I think that the combinations of items with books still do not work. |
|
Thank you @JkqzDev. |
Good question @ShockedPlot7560 |
|
Makes sense to me, though it might be worth checking if there are any primary vs secondary restrictions |
|
@ShockedPlot7560 I remember that I sent you a message about a problem that happened with Anvil: the xp cost that appeared in the UI was not always the real cost. |
|
It was part of the unit tests which currently failed a lot |
|
I have made changes to this PR. I'm not sure it has been solved because unit tests continue to fail but within the game (from what I have tested) it works fine. |
Introduction
As the title suggests, this PR implements the anvils
Relevant issues
Changes
API changes
Durable::isValidRepairMaterialenabling everyone to implement their own verification logicrepairMaterialstoArmorMaterialandToolTierItemBehavioural changes
Tests
I tested this PR by doing the following (tick all that apply):
tests/phpunitfolder)https://youtu.be/d3vcwi_45DY