diff --git a/lib/portingtools/mappings/agent.ex b/lib/portingtools/mappings/agent.ex index 6487143..ed53e51 100644 --- a/lib/portingtools/mappings/agent.ex +++ b/lib/portingtools/mappings/agent.ex @@ -1,4 +1,9 @@ defmodule PortingTools.Mappings.Agent do + @moduledoc """ + This module manages and loads the mappings + and renames. + """ + use Agent, restart: :transient require Logger @@ -6,22 +11,64 @@ defmodule PortingTools.Mappings.Agent do Agent.start_link(&init/0, name: __MODULE__) end + defmodule PortingTools.Mappings.Agent.State do + defstruct [:mappings, :renames] + end + def init() do - Logger.info("Reading mappings") + %PortingTools.Mappings.Agent.State{ + mappings: load_mappings(), + renames: load_renames() + } + end + + def load_mappings() do + Logger.info("reading mappings") mappings = File.ls!("mappings") |> Stream.flat_map(&File.stream!("mappings/#{&1}")) |> Stream.map(&String.split(&1, ",")) |> Enum.reduce(%{}, fn [remapped, orig | _], map -> - Map.put(map, remapped, orig) + Map.put(map, String.trim(remapped), String.trim(orig)) end) - Logger.info("Done reading mappings") + Logger.info("read #{map_size(mappings)} mappings") mappings end + def load_renames() do + Logger.info("reading renames") + + renames = + File.stream!("renames.csv") + |> Stream.map(&String.split(&1, ",")) + |> Enum.reduce(%{}, fn [old, new | _], map -> + Map.put(map, String.trim(old), String.trim(new)) + end) + + Logger.info("read #{map_size(renames)} renames") + + renames + end + def map(key) do - Agent.get(__MODULE__, &Map.get(&1, key)) + mapping = Agent.get(__MODULE__, &Map.get(&1.mappings, key)) + + case mapping do + nil -> + Logger.warn("tried to map unknown symbol") + nil + + m -> + case Agent.get(__MODULE__, &Map.get(&1.renames, m)) do + nil -> + m + + r -> + Logger.info("found rename for #{m} -> #{r}") + r + end + end end end diff --git a/lib/portingtools/resourceloc.ex b/lib/portingtools/resourceloc.ex index d4113ed..3a8f4f2 100644 --- a/lib/portingtools/resourceloc.ex +++ b/lib/portingtools/resourceloc.ex @@ -7,7 +7,7 @@ defmodule PortingTools.ResourceLoc do end def init(_init_arg) do - Logger.info("Initializing Resourceloc server @ #{__MODULE__}") + Logger.info("initializing Resourceloc server @ #{__MODULE__}") {:ok, nil} end @@ -16,7 +16,7 @@ defmodule PortingTools.ResourceLoc do end def handle_call({:resolve, str}, _from, state) do - Logger.info("Got resolve request") + Logger.info("got ResourceLoc resolve request") try do ["mods", mod | rest] = diff --git a/renames.csv b/renames.csv new file mode 100644 index 0000000..0429398 --- /dev/null +++ b/renames.csv @@ -0,0 +1,9 @@ +getBlockTileEntity,getTileEntity +fontRenderer,fontRendererObj +getInvName,getInventoryName +tagAt,getCompoundTagAt +isInvNameLocalized,hasCustomInventoryName +getTexture,bindTexture +bindTextureByName,bindTexture +username,getDisplayName() +getLastAttackingEntity,getLastAttacker