From f76ef93fe64912f527aa24a24e14c2a98a2cbae3 Mon Sep 17 00:00:00 2001 From: dfsek Date: Mon, 26 Jul 2021 21:37:52 -0700 Subject: [PATCH] create AndDistributorTemplate --- .../config/AndDistributorTemplate.java | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/config/AndDistributorTemplate.java diff --git a/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/config/AndDistributorTemplate.java b/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/config/AndDistributorTemplate.java new file mode 100644 index 000000000..a4c71d62b --- /dev/null +++ b/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/config/AndDistributorTemplate.java @@ -0,0 +1,30 @@ +package com.dfsek.terra.addons.feature.distributor.config; + +import com.dfsek.tectonic.annotations.Value; +import com.dfsek.tectonic.config.ValidatedConfigTemplate; +import com.dfsek.tectonic.exception.ValidationException; +import com.dfsek.tectonic.loading.object.ObjectTemplate; +import com.dfsek.terra.api.structure.feature.Distributor; + +import java.util.List; + +public class AndDistributorTemplate implements ObjectTemplate, ValidatedConfigTemplate { + @Value("distributors") + private List distributors; + + + @Override + public Distributor get() { + Distributor current = distributors.remove(0); + while(!distributors.isEmpty()) { + current = current.and(distributors.remove(0)); + } + return current; + } + + @Override + public boolean validate() throws ValidationException { + if(distributors.isEmpty()) throw new ValidationException("AND Distributor must specify at least 1 distributor."); + return true; + } +}