# Amethyst - An experimental Minecraft server written in Elixir. # Copyright (C) 2024 KodiCraft # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . defmodule Amethyst.Server.Play do @moduledoc """ This module contains the logic for the Play stage of the server. """ require Logger use Amethyst.Server alias Amethyst.Minecraft.Read alias Amethyst.Minecraft.Write @impl true def init(state) do state end ## DESERIALIZATION @impl true def deserialize(type, _) do raise RuntimeError, "Got unknown packet type #{type}!" end ## SERIALIZATION @impl true def serialize(packet) do raise ArgumentError, "Tried serializing unknown packet #{inspect(packet)}" end ## HANDLING @impl true def handle(tuple, _, state) do Logger.error("Unhandled but known packet #{elem(tuple, 0)}") {:unhandled, state} end end