From 4567011313dbbad8efa54bfe04c21cc46b68be93 Mon Sep 17 00:00:00 2001 From: dfsek Date: Mon, 26 Jul 2021 21:39:43 -0700 Subject: [PATCH] create OrDistributorTemplate --- .../config/OrDistributorTemplate.java | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/config/OrDistributorTemplate.java diff --git a/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/config/OrDistributorTemplate.java b/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/config/OrDistributorTemplate.java new file mode 100644 index 000000000..240bfeb58 --- /dev/null +++ b/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/config/OrDistributorTemplate.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 OrDistributorTemplate implements ObjectTemplate, ValidatedConfigTemplate { + @Value("distributors") + private List distributors; + + + @Override + public Distributor get() { + Distributor current = distributors.remove(0); + while(!distributors.isEmpty()) { + current = current.or(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; + } +}