Translater/src/main/java/io/gitlab/jfronny/translater/transformer/TransformingMap.java

104 lines
2.4 KiB
Java

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<String, String> {
private final Map<String, String> backer;
private final ITransformer transformer;
public boolean initializing;
public int initI;
public int initMax;
public TransformingMap(Map<String, String> m, ITransformer t) {
backer = m;
transformer = t;
}
public void init() {
Collection<String> 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<? extends String, ? extends String> map) {
for (String value : map.values()) {
transformer.transform(value);
}
backer.putAll(map);
}
@Override
public void clear() {
backer.clear();
}
@Override
public Set<String> keySet() {
return backer.keySet();
}
@Override
public Collection<String> values() {
return backer.values();
}
@Override
public Set<Entry<String, String>> entrySet() {
return backer.entrySet();
}
}