defmodule Example.Game do require Logger @behaviour Amethyst.Game @impl true def instantiate(supervisor) do Logger.info("The supervisor for this game is at #{inspect(supervisor)}") {:ok, %{}} end @impl true def login(from, cfg, refs) do Logger.info("Player logged in from #{inspect(from)}: #{inspect(cfg)}") Logger.info("The refs for this game are #{inspect(refs)}") {:accept, {0.0, 270.0, 0.0}, {0.0, 0.0}} end @impl true @spec player_position(any(), {any(), any(), any()}, any()) :: :ok def player_position(from, {x, y, z}, _refs) do # Logger.info("Player at #{inspect(from)} moved to #{x}, #{y}, #{z}") send(from, {:set_position, {x, y, z}}) :ok end @impl true def player_rotation(_from, {_yaw, _pitch}, _refs) do # Logger.info("Player at #{inspect(from)} rotated to #{yaw}, #{pitch}") :ok end @impl true def accept_teleport(from, id, _state_refs) do Logger.info("Player at #{inspect(from)} accepted teleport #{inspect(id)}") :ok end @impl true def joinable?(_refs) do true end @impl true def chunk(_from, {_cx, _cz}, _state_refs) do # Logger.info("Player at #{inspect(from)} wants to know chunk #{cx}, #{cz}") (0..255) |> Enum.map(fn y -> (0..15) |> Enum.map(fn z -> (0..15) |> Enum.map(fn x -> if y <= x + z do 3 else 0 end end) end) end) end end