Respackopts/src/main/java/io/gitlab/jfronny/respackopts/LibCDCompat.java

45 lines
1.9 KiB
Java

package io.gitlab.jfronny.respackopts;
import io.github.cottonmc.libcd.api.CDSyntaxError;
import io.github.cottonmc.libcd.api.condition.ConditionManager;
import io.github.cottonmc.libcd.api.init.ConditionInitializer;
import net.minecraft.util.Identifier;
import java.util.HashMap;
import java.util.Objects;
import java.util.concurrent.atomic.AtomicBoolean;
public class LibCDCompat implements ConditionInitializer {
@Override
public void initConditions(ConditionManager conditionManager) {
conditionManager.registerCondition(new Identifier(Respackopts.ID, "cfg"), q -> {
if (!(q instanceof String)) {
throw new CDSyntaxError("Expected string");
}
String s = (String) q;
System.out.println(s);
if (!s.contains(":")) {
throw new CDSyntaxError("You must include you resource pack ID in conditions (format: pack:some.key)");
}
AtomicBoolean found = new AtomicBoolean(false);
AtomicBoolean output = new AtomicBoolean(false);
Respackopts.resPackMetas.forEach((r, v) -> {
if (Objects.equals(v.meta.id, s.split(":")[0])) {
found.set(true);
String name = s.substring(s.indexOf(':') + 1);
output.set(v.conf.get(name).getAsBoolean());
if (!Respackopts.boolVals.containsKey(s.split(":")[0]))
Respackopts.boolVals.put(s.split(":")[0], new HashMap<>());
HashMap<String, Boolean> a = Respackopts.boolVals.get(s.split(":")[0]);
if (a.containsKey(name))
output.set(a.get(name));
}
});
if (!found.get()) {
throw new CDSyntaxError("Could not find pack with specified ID");
}
return output.get();
});
}
}