45 lines
1.9 KiB
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();
|
|
});
|
|
}
|
|
}
|