aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSHsuperCM <shsupercm@gmail.com>2021-10-15 12:17:22 +0300
committerSHsuperCM <shsupercm@gmail.com>2021-10-15 12:17:22 +0300
commit102697939684255827620da07266089dc20572a2 (patch)
tree00f0de6821ea83bcd0a076c16331a98ede91c2aa
parentb2d3760c3cceabf4f3a06fea6c35b58bf2a3d394 (diff)
downloadCITResewn-102697939684255827620da07266089dc20572a2.tar.gz
CITResewn-102697939684255827620da07266089dc20572a2.tar.bz2
CITResewn-102697939684255827620da07266089dc20572a2.zip
Restructured to store active effective global properties
-rw-r--r--src/main/java/shcm/shsupercm/fabric/citresewn/ActiveCITs.java15
-rw-r--r--src/main/java/shcm/shsupercm/fabric/citresewn/mixin/core/ModelLoaderMixin.java7
-rw-r--r--src/main/java/shcm/shsupercm/fabric/citresewn/pack/CITPack.java54
-rw-r--r--src/main/java/shcm/shsupercm/fabric/citresewn/pack/CITParser.java3
4 files changed, 56 insertions, 23 deletions
diff --git a/src/main/java/shcm/shsupercm/fabric/citresewn/ActiveCITs.java b/src/main/java/shcm/shsupercm/fabric/citresewn/ActiveCITs.java
index 231c1cd..b7d326b 100644
--- a/src/main/java/shcm/shsupercm/fabric/citresewn/ActiveCITs.java
+++ b/src/main/java/shcm/shsupercm/fabric/citresewn/ActiveCITs.java
@@ -11,6 +11,7 @@ import net.minecraft.util.Identifier;
import net.minecraft.util.registry.Registry;
import net.minecraft.world.World;
import shcm.shsupercm.fabric.citresewn.config.CITResewnConfig;
+import shcm.shsupercm.fabric.citresewn.pack.CITPack;
import shcm.shsupercm.fabric.citresewn.pack.cits.*;
import java.util.*;
@@ -18,16 +19,26 @@ import java.util.function.Supplier;
import java.util.stream.Collectors;
public class ActiveCITs {
- public final Collection<CIT> cits;
+ public final List<CITPack> packs;
+ public final CITPack effectiveGlobalProperties = new CITPack(null);
+
+ public final List<CIT> cits;
+
public final Map<Item, List<CITItem>> citItems = new HashMap<>();
public final Map<ArmorItem, List<CITArmor>> citArmor = new HashMap<>();
public final List<CITElytra> citElytra = new ArrayList<>();
public final List<List<CITEnchantment>> citEnchantments = new ArrayList<>();
- public ActiveCITs(Collection<CIT> cits) {
+ public ActiveCITs(List<CITPack> packs, List<CIT> cits) {
+ this.packs = packs;
this.cits = cits;
+ for (CITPack pack : packs)
+ effectiveGlobalProperties.loadGlobalProperties(pack);
+ for (CITPack pack : packs)
+ pack.loadGlobalProperties(effectiveGlobalProperties);
+
Map<Integer, List<CITEnchantment>> citEnchantmentLayers = new TreeMap<>(); // order citEnchantments by layers
for (CIT cit : cits.stream().sorted(Comparator.<CIT>comparingInt(cit -> cit.weight).reversed().thenComparing(cit -> cit.propertiesIdentifier.toString())).collect(Collectors.toList())) {
diff --git a/src/main/java/shcm/shsupercm/fabric/citresewn/mixin/core/ModelLoaderMixin.java b/src/main/java/shcm/shsupercm/fabric/citresewn/mixin/core/ModelLoaderMixin.java
index 4592167..d65ffb8 100644
--- a/src/main/java/shcm/shsupercm/fabric/citresewn/mixin/core/ModelLoaderMixin.java
+++ b/src/main/java/shcm/shsupercm/fabric/citresewn/mixin/core/ModelLoaderMixin.java
@@ -12,11 +12,13 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import shcm.shsupercm.fabric.citresewn.ActiveCITs;
import shcm.shsupercm.fabric.citresewn.CITResewn;
import shcm.shsupercm.fabric.citresewn.config.CITResewnConfig;
+import shcm.shsupercm.fabric.citresewn.pack.CITPack;
import shcm.shsupercm.fabric.citresewn.pack.CITParser;
import shcm.shsupercm.fabric.citresewn.pack.cits.CIT;
import java.util.ArrayList;
import java.util.Collection;
+import java.util.List;
import java.util.stream.Collectors;
import static shcm.shsupercm.fabric.citresewn.CITResewn.info;
@@ -37,11 +39,12 @@ public abstract class ModelLoaderMixin {
return;
info("Parsing CITs...");
- Collection<CIT> parsed = CITParser.parseCITs(resourceManager.streamResourcePacks().collect(Collectors.toCollection(ArrayList::new)));
+ List<CITPack> parsedPacks = CITParser.parseCITs(resourceManager.streamResourcePacks().collect(Collectors.toCollection(ArrayList::new)));
+ List<CIT> parsed = parsedPacks.stream().flatMap(pack -> pack.cits.stream()).collect(Collectors.toCollection(ArrayList::new));
if (parsed.size() > 0) {
info("Activating CITs...");
- CITResewn.INSTANCE.activeCITs = new ActiveCITs(parsed);
+ CITResewn.INSTANCE.activeCITs = new ActiveCITs(parsedPacks, parsed);
} else
info("No cit packs found.");
}
diff --git a/src/main/java/shcm/shsupercm/fabric/citresewn/pack/CITPack.java b/src/main/java/shcm/shsupercm/fabric/citresewn/pack/CITPack.java
index 92faec0..59f1659 100644
--- a/src/main/java/shcm/shsupercm/fabric/citresewn/pack/CITPack.java
+++ b/src/main/java/shcm/shsupercm/fabric/citresewn/pack/CITPack.java
@@ -9,10 +9,10 @@ public class CITPack {
public final ResourcePack resourcePack;
public final Collection<CIT> cits = new ArrayList<>();
- private EnchantmentMergeMethod method = EnchantmentMergeMethod.AVERAGE;
- private int cap = 8;
- private float fade = 0.5f;
- private boolean useGlint = true;
+ public EnchantmentMergeMethod method = EnchantmentMergeMethod.AVERAGE;
+ public Integer cap = 8;
+ public Float fade = 0.5f;
+ public Boolean useGlint = true;
public CITPack(ResourcePack resourcePack) {
this.resourcePack = resourcePack;
@@ -20,27 +20,47 @@ public class CITPack {
public void loadGlobalProperties(Properties properties) throws Exception {
try {
- this.method = CITPack.EnchantmentMergeMethod.valueOf(properties.getProperty("method", "average").toUpperCase(Locale.ENGLISH));
- this.cap = Integer.parseInt(properties.getProperty("cap", "8"));
- if (this.cap < 0)
- throw new Exception("cap cannot be negative");
- this.fade = Float.parseFloat(properties.getProperty("fade", "0.5"));
- if (this.fade < 0f)
- throw new Exception("fade cannot be negative");
- this.useGlint = switch (properties.getProperty("useGlint", "true").toLowerCase(Locale.ENGLISH)) {
+ this.method = properties.containsKey("method") ? CITPack.EnchantmentMergeMethod.valueOf(properties.getProperty("method").toUpperCase(Locale.ENGLISH)) : null;
+
+ if (properties.containsKey("cap")) {
+ this.cap = Integer.parseInt(properties.getProperty("cap"));
+ if (this.cap < 0)
+ throw new Exception("cap cannot be negative");
+ } else
+ this.cap = null;
+
+ if (properties.containsKey("fade")) {
+ this.fade = Float.parseFloat(properties.getProperty("fade"));
+ if (this.fade < 0f)
+ throw new Exception("fade cannot be negative");
+ } else
+ this.fade = null;
+
+ this.useGlint = properties.containsKey("useGlint") ? switch (properties.getProperty("useGlint").toLowerCase(Locale.ENGLISH)) {
case "true" -> true;
case "false" -> false;
default -> throw new Exception("useGlint is not a boolean");
- };
+ } : null;
} catch (Exception e) {
- this.method = EnchantmentMergeMethod.AVERAGE;
- this.cap = 8;
- this.fade = 0.5f;
- this.useGlint = true;
+ this.method = null;
+ this.cap = null;
+ this.fade = null;
+ this.useGlint = null;
throw e;
}
}
+ public void loadGlobalProperties(CITPack properties) {
+ if (properties.method != null)
+ this.method = properties.method;
+ if (properties.cap != null)
+ this.cap = properties.cap;
+ if (properties.fade != null)
+ this.fade = properties.fade;
+ if (properties.useGlint != null)
+ this.useGlint = properties.useGlint;
+ }
+
public enum EnchantmentMergeMethod {
AVERAGE,
LAYERED,
diff --git a/src/main/java/shcm/shsupercm/fabric/citresewn/pack/CITParser.java b/src/main/java/shcm/shsupercm/fabric/citresewn/pack/CITParser.java
index 03ea512..ee97b25 100644
--- a/src/main/java/shcm/shsupercm/fabric/citresewn/pack/CITParser.java
+++ b/src/main/java/shcm/shsupercm/fabric/citresewn/pack/CITParser.java
@@ -36,11 +36,10 @@ public final class CITParser { private CITParser() {}
* @param packs packs to parse
* @return a collection of parsed CITs
*/
- public static Collection<CIT> parseCITs(Collection<ResourcePack> packs) {
+ public static List<CITPack> parseCITs(Collection<ResourcePack> packs) {
return packs.stream()
.map(CITParser::parse)
.flatMap(Collection::stream)
- .flatMap(pack -> pack.cits.stream())
.collect(Collectors.toList());
}