mirror of
https://github.com/pmmp/PocketMine-MP.git
synced 2025-06-07 12:18:46 +00:00
Simplify handling of broken transactions for crafting and friends
this allows stuff like smithing tables to work without needing any extra hacks. Implementing enchanting or anvils would require some extra work, but I don't plan to implement those under the legacy transaction system anyway.
This commit is contained in:
parent
4d6ec66270
commit
e2855aadff
@ -326,15 +326,10 @@ class TypeConverter{
|
||||
|
||||
}
|
||||
case NetworkInventoryAction::SOURCE_TODO:
|
||||
//These types need special handling.
|
||||
switch($action->windowId){
|
||||
case NetworkInventoryAction::SOURCE_TYPE_CRAFTING_RESULT:
|
||||
case NetworkInventoryAction::SOURCE_TYPE_CRAFTING_USE_INGREDIENT:
|
||||
//These are used to balance a transaction that involves special actions, like crafting, enchanting, etc.
|
||||
//The vanilla server just accepted these without verifying them. We don't need to care about them since
|
||||
//we verify crafting by checking for imbalances anyway.
|
||||
return null;
|
||||
}
|
||||
|
||||
//TODO: more stuff
|
||||
throw new TypeConversionException("No open container with window ID $action->windowId");
|
||||
default:
|
||||
throw new TypeConversionException("Unknown inventory source type $action->sourceType");
|
||||
}
|
||||
|
@ -319,12 +319,7 @@ class InGamePacketHandler extends PacketHandler{
|
||||
$converter = TypeConverter::getInstance();
|
||||
foreach($data->getActions() as $networkInventoryAction){
|
||||
if(
|
||||
(
|
||||
$networkInventoryAction->sourceType === NetworkInventoryAction::SOURCE_TODO && (
|
||||
$networkInventoryAction->windowId === NetworkInventoryAction::SOURCE_TYPE_CRAFTING_RESULT ||
|
||||
$networkInventoryAction->windowId === NetworkInventoryAction::SOURCE_TYPE_CRAFTING_USE_INGREDIENT
|
||||
)
|
||||
) || (
|
||||
$networkInventoryAction->sourceType === NetworkInventoryAction::SOURCE_TODO || (
|
||||
$this->craftingTransaction !== null &&
|
||||
!$networkInventoryAction->oldItem->getItemStack()->equals($networkInventoryAction->newItem->getItemStack()) &&
|
||||
$networkInventoryAction->sourceType === NetworkInventoryAction::SOURCE_CONTAINER &&
|
||||
|
Loading…
x
Reference in New Issue
Block a user