mirror of
https://github.com/pmmp/PocketMine-MP.git
synced 2025-04-22 08:44:01 +00:00
Fixed crafting grid transaction handling, close #2559
This commit is contained in:
parent
178eedb536
commit
dfeb62491a
@ -36,6 +36,7 @@ class NetworkInventoryAction{
|
||||
|
||||
public const SOURCE_WORLD = 2; //drop/pickup item entity
|
||||
public const SOURCE_CREATIVE = 3;
|
||||
public const SOURCE_CRAFTING_GRID = 100;
|
||||
public const SOURCE_TODO = 99999;
|
||||
|
||||
/**
|
||||
@ -47,8 +48,8 @@ class NetworkInventoryAction{
|
||||
*
|
||||
* Expect these to change in the future.
|
||||
*/
|
||||
public const SOURCE_TYPE_CRAFTING_ADD_INGREDIENT = -2;
|
||||
public const SOURCE_TYPE_CRAFTING_REMOVE_INGREDIENT = -3;
|
||||
public const SOURCE_TYPE_CRAFTING_USELESS_MAGIC_NUMBER = -2;
|
||||
|
||||
public const SOURCE_TYPE_CRAFTING_RESULT = -4;
|
||||
public const SOURCE_TYPE_CRAFTING_USE_INGREDIENT = -5;
|
||||
|
||||
@ -107,6 +108,12 @@ class NetworkInventoryAction{
|
||||
break;
|
||||
case self::SOURCE_CREATIVE:
|
||||
break;
|
||||
case self::SOURCE_CRAFTING_GRID:
|
||||
$dummy = $packet->getVarInt();
|
||||
if($dummy !== self::SOURCE_TYPE_CRAFTING_USELESS_MAGIC_NUMBER){
|
||||
throw new \UnexpectedValueException("Useless magic number for crafting-grid type was $dummy, expected " . self::SOURCE_TYPE_CRAFTING_USELESS_MAGIC_NUMBER);
|
||||
}
|
||||
break;
|
||||
case self::SOURCE_TODO:
|
||||
$this->windowId = $packet->getVarInt();
|
||||
switch($this->windowId){
|
||||
@ -144,6 +151,9 @@ class NetworkInventoryAction{
|
||||
break;
|
||||
case self::SOURCE_CREATIVE:
|
||||
break;
|
||||
case self::SOURCE_CRAFTING_GRID:
|
||||
$packet->putVarInt(self::SOURCE_TYPE_CRAFTING_USELESS_MAGIC_NUMBER);
|
||||
break;
|
||||
case self::SOURCE_TODO:
|
||||
$packet->putVarInt($this->windowId);
|
||||
break;
|
||||
@ -190,13 +200,11 @@ class NetworkInventoryAction{
|
||||
}
|
||||
|
||||
return new CreativeInventoryAction($this->oldItem, $this->newItem, $type);
|
||||
case self::SOURCE_CRAFTING_GRID:
|
||||
return new SlotChangeAction($player->getCraftingGrid(), $this->inventorySlot, $this->oldItem, $this->newItem);
|
||||
case self::SOURCE_TODO:
|
||||
//These types need special handling.
|
||||
switch($this->windowId){
|
||||
case self::SOURCE_TYPE_CRAFTING_ADD_INGREDIENT:
|
||||
case self::SOURCE_TYPE_CRAFTING_REMOVE_INGREDIENT:
|
||||
$window = $player->getCraftingGrid();
|
||||
return new SlotChangeAction($window, $this->inventorySlot, $this->oldItem, $this->newItem);
|
||||
case self::SOURCE_TYPE_CRAFTING_RESULT:
|
||||
case self::SOURCE_TYPE_CRAFTING_USE_INGREDIENT:
|
||||
return null;
|
||||
|
Loading…
x
Reference in New Issue
Block a user