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 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(); }); } }