package io.gitlab.jfronny.translater.transformer; import io.gitlab.jfronny.translater.IMinecraftClientMixin; import io.gitlab.jfronny.translater.Translater; import net.minecraft.client.MinecraftClient; import java.util.Collection; import java.util.Map; import java.util.Set; public class TransformingMap implements Map { private final Map backer; private final ITransformer transformer; public boolean initializing; public int initI; public int initMax; public TransformingMap(Map m, ITransformer t) { backer = m; transformer = t; } public void init() { Collection strings = backer.values(); initI = 0; initMax = strings.size(); initializing = true; for (String value : strings) { if (Translater.Cli()) { initI++; Translater.Log("Transforming " + initI + "/" + initMax); } if (Translater.Gui() && initI % 10 == 0) ((IMinecraftClientMixin) MinecraftClient.getInstance()).forceRender(); transformer.transform(value); } initializing = false; } @Override public int size() { return backer.size(); } @Override public boolean isEmpty() { return backer.isEmpty(); } @Override public boolean containsKey(Object o) { return backer.containsKey(o); } @Override public boolean containsValue(Object o) { return backer.containsValue(o); } @Override public String get(Object o) { return transformer.transform(backer.get(o)); } @Override public String put(String s, String s2) { transformer.transform(s2); return backer.put(s, s2); } @Override public String remove(Object o) { return backer.remove(o); } @Override public void putAll(Map map) { for (String value : map.values()) { transformer.transform(value); } backer.putAll(map); } @Override public void clear() { backer.clear(); } @Override public Set keySet() { return backer.keySet(); } @Override public Collection values() { return backer.values(); } @Override public Set> entrySet() { return backer.entrySet(); } }