private static function writeShapedRecipe(ShapedRecipe $recipe, BinaryStream $stream) { $stream->putInt($recipe->getWidth()); $stream->putInt($recipe->getHeight()); for ($z = 0; $z < $recipe->getHeight(); ++$z) { for ($x = 0; $x < $recipe->getWidth(); ++$x) { $stream->putSlot($recipe->getIngredient($x, $z)); } } $stream->putInt(1); $stream->putSlot($recipe->getResult()); $stream->putUUID($recipe->getId()); return CraftingDataPacket::ENTRY_SHAPED; }
/** * @param ShapedRecipe $recipe */ public function registerShapedRecipe(ShapedRecipe $recipe) { $result = $recipe->getResult(); $this->recipes[$recipe->getId()->toBinary()] = $recipe; $ingredients = $recipe->getIngredientMap(); $hash = ""; foreach ($ingredients as $v) { foreach ($v as $item) { if ($item !== null) { /** @var Item $item */ $hash .= $item->getId() . ":" . ($item->getDamage() === null ? "?" : $item->getDamage()) . "x" . $item->getCount() . ","; } } $hash .= ";"; } $this->recipeLookup[$result->getId() . ":" . $result->getDamage()][$hash] = $recipe; }