aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorSHsuperCM <shsupercm@gmail.com>2022-03-18 11:35:53 +0200
committerSHsuperCM <shsupercm@gmail.com>2022-03-18 11:35:53 +0200
commitb37f3b9f93f7be977ae615cdd12179afb8ed9e53 (patch)
tree414672652720ef445a53c313fc8dd7979ea223c0 /src/main/java
parentbcff029a6135511254ee16f615352d3279020d61 (diff)
parentd93d0cf00dc07d3e8b4534d4f6247afcc85232ef (diff)
downloadCITResewn-b37f3b9f93f7be977ae615cdd12179afb8ed9e53.tar.gz
CITResewn-b37f3b9f93f7be977ae615cdd12179afb8ed9e53.tar.bz2
CITResewn-b37f3b9f93f7be977ae615cdd12179afb8ed9e53.zip
Merge branch 'v1-rewrite'
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/shcm/shsupercm/fabric/citresewn/ActiveCITs.java187
-rw-r--r--src/main/java/shcm/shsupercm/fabric/citresewn/CITResewn.java44
-rw-r--r--src/main/java/shcm/shsupercm/fabric/citresewn/CITResewnCommand.java147
-rw-r--r--src/main/java/shcm/shsupercm/fabric/citresewn/OptionalCompat.java69
-rw-r--r--src/main/java/shcm/shsupercm/fabric/citresewn/api/CITConditionContainer.java42
-rw-r--r--src/main/java/shcm/shsupercm/fabric/citresewn/api/CITDisposable.java18
-rw-r--r--src/main/java/shcm/shsupercm/fabric/citresewn/api/CITGlobalProperties.java26
-rw-r--r--src/main/java/shcm/shsupercm/fabric/citresewn/api/CITTypeContainer.java87
-rw-r--r--src/main/java/shcm/shsupercm/fabric/citresewn/cit/ActiveCITs.java106
-rw-r--r--src/main/java/shcm/shsupercm/fabric/citresewn/cit/CIT.java61
-rw-r--r--src/main/java/shcm/shsupercm/fabric/citresewn/cit/CITCache.java93
-rw-r--r--src/main/java/shcm/shsupercm/fabric/citresewn/cit/CITCondition.java63
-rw-r--r--src/main/java/shcm/shsupercm/fabric/citresewn/cit/CITContext.java76
-rw-r--r--src/main/java/shcm/shsupercm/fabric/citresewn/cit/CITRegistry.java144
-rw-r--r--src/main/java/shcm/shsupercm/fabric/citresewn/cit/CITType.java109
-rw-r--r--src/main/java/shcm/shsupercm/fabric/citresewn/cit/builtin/conditions/BooleanCondition.java41
-rw-r--r--src/main/java/shcm/shsupercm/fabric/citresewn/cit/builtin/conditions/ConstantCondition.java31
-rw-r--r--src/main/java/shcm/shsupercm/fabric/citresewn/cit/builtin/conditions/DoubleCondition.java157
-rw-r--r--src/main/java/shcm/shsupercm/fabric/citresewn/cit/builtin/conditions/EnumCondition.java77
-rw-r--r--src/main/java/shcm/shsupercm/fabric/citresewn/cit/builtin/conditions/FloatCondition.java157
-rw-r--r--src/main/java/shcm/shsupercm/fabric/citresewn/cit/builtin/conditions/IdentifierCondition.java42
-rw-r--r--src/main/java/shcm/shsupercm/fabric/citresewn/cit/builtin/conditions/IntegerCondition.java157
-rw-r--r--src/main/java/shcm/shsupercm/fabric/citresewn/cit/builtin/conditions/ListCondition.java116
-rw-r--r--src/main/java/shcm/shsupercm/fabric/citresewn/cit/builtin/conditions/LongCondition.java157
-rw-r--r--src/main/java/shcm/shsupercm/fabric/citresewn/cit/builtin/conditions/WeightCondition.java32
-rw-r--r--src/main/java/shcm/shsupercm/fabric/citresewn/config/BrokenPaths.java23
-rw-r--r--src/main/java/shcm/shsupercm/fabric/citresewn/config/CITResewnConfig.java47
-rw-r--r--src/main/java/shcm/shsupercm/fabric/citresewn/config/CITResewnConfigScreenFactory.java47
-rw-r--r--src/main/java/shcm/shsupercm/fabric/citresewn/config/CITResewnMixinConfiguration.java32
-rw-r--r--src/main/java/shcm/shsupercm/fabric/citresewn/config/CITResewnModMenu.java14
-rw-r--r--src/main/java/shcm/shsupercm/fabric/citresewn/ex/CITLoadException.java13
-rw-r--r--src/main/java/shcm/shsupercm/fabric/citresewn/ex/CITParseException.java13
-rw-r--r--src/main/java/shcm/shsupercm/fabric/citresewn/ex/CITParsingException.java17
-rw-r--r--src/main/java/shcm/shsupercm/fabric/citresewn/ex/UnknownCITTypeException.java12
-rw-r--r--src/main/java/shcm/shsupercm/fabric/citresewn/mixin/ChatScreenMixin.java38
-rw-r--r--src/main/java/shcm/shsupercm/fabric/citresewn/mixin/ModelLoaderMixin.java29
-rw-r--r--src/main/java/shcm/shsupercm/fabric/citresewn/mixin/broken_paths/AbstractFileResourcePackMixin.java18
-rw-r--r--src/main/java/shcm/shsupercm/fabric/citresewn/mixin/broken_paths/IdentifierMixin.java21
-rw-r--r--src/main/java/shcm/shsupercm/fabric/citresewn/mixin/broken_paths/ReloadableResourceManagerImplMixin.java16
-rw-r--r--src/main/java/shcm/shsupercm/fabric/citresewn/mixin/broken_paths/ResourcePackCompatibilityMixin.java10
-rw-r--r--src/main/java/shcm/shsupercm/fabric/citresewn/mixin/citarmor/ArmorFeatureRendererMixin.java59
-rw-r--r--src/main/java/shcm/shsupercm/fabric/citresewn/mixin/citarmor/ItemStackMixin.java25
-rw-r--r--src/main/java/shcm/shsupercm/fabric/citresewn/mixin/citelytra/ElytraFeatureRendererMixin.java60
-rw-r--r--src/main/java/shcm/shsupercm/fabric/citresewn/mixin/citelytra/ItemStackMixin.java25
-rw-r--r--src/main/java/shcm/shsupercm/fabric/citresewn/mixin/citenchantment/ArmorFeatureRendererMixin.java33
-rw-r--r--src/main/java/shcm/shsupercm/fabric/citresewn/mixin/citenchantment/BufferBuilderStorageAccessor.java15
-rw-r--r--src/main/java/shcm/shsupercm/fabric/citresewn/mixin/citenchantment/ElytraFeatureRendererMixin.java33
-rw-r--r--src/main/java/shcm/shsupercm/fabric/citresewn/mixin/citenchantment/ItemRendererMixin.java86
-rw-r--r--src/main/java/shcm/shsupercm/fabric/citresewn/mixin/citenchantment/ItemStackMixin.java36
-rw-r--r--src/main/java/shcm/shsupercm/fabric/citresewn/mixin/citenchantment/MinecraftClientMixin.java17
-rw-r--r--src/main/java/shcm/shsupercm/fabric/citresewn/mixin/citenchantment/RenderPhaseAccessor.java21
-rw-r--r--src/main/java/shcm/shsupercm/fabric/citresewn/mixin/cititem/ItemRendererMixin.java69
-rw-r--r--src/main/java/shcm/shsupercm/fabric/citresewn/mixin/cititem/ItemStackMixin.java40
-rw-r--r--src/main/java/shcm/shsupercm/fabric/citresewn/mixin/cititem/JsonUnbakedModelAccessor.java22
-rw-r--r--src/main/java/shcm/shsupercm/fabric/citresewn/mixin/cititem/ModelLoaderMixin.java165
-rw-r--r--src/main/java/shcm/shsupercm/fabric/citresewn/mixin/compat/lambdabettergrass/PackParserMixin.java26
-rw-r--r--src/main/java/shcm/shsupercm/fabric/citresewn/mixin/core/ChatScreenMixin.java23
-rw-r--r--src/main/java/shcm/shsupercm/fabric/citresewn/mixin/core/GroupResourcePackAccessor.java14
-rw-r--r--src/main/java/shcm/shsupercm/fabric/citresewn/mixin/core/ModelLoaderMixin.java51
-rw-r--r--src/main/java/shcm/shsupercm/fabric/citresewn/mixin/core/NbtCompoundAccessor.java14
-rw-r--r--src/main/java/shcm/shsupercm/fabric/citresewn/mixin/core/SpriteAtlasTextureMixin.java18
-rw-r--r--src/main/java/shcm/shsupercm/fabric/citresewn/mixin/core/ZipResourcePackMixin.java60
-rw-r--r--src/main/java/shcm/shsupercm/fabric/citresewn/pack/CITPack.java65
-rw-r--r--src/main/java/shcm/shsupercm/fabric/citresewn/pack/CITParser.java119
-rw-r--r--src/main/java/shcm/shsupercm/fabric/citresewn/pack/GlobalProperties.java72
-rw-r--r--src/main/java/shcm/shsupercm/fabric/citresewn/pack/PackParser.java128
-rw-r--r--src/main/java/shcm/shsupercm/fabric/citresewn/pack/ResewnItemModelIdentifier.java18
-rw-r--r--src/main/java/shcm/shsupercm/fabric/citresewn/pack/ResewnTextureIdentifier.java14
-rw-r--r--src/main/java/shcm/shsupercm/fabric/citresewn/pack/cits/CIT.java435
-rw-r--r--src/main/java/shcm/shsupercm/fabric/citresewn/pack/cits/CITArmor.java42
-rw-r--r--src/main/java/shcm/shsupercm/fabric/citresewn/pack/cits/CITElytra.java28
-rw-r--r--src/main/java/shcm/shsupercm/fabric/citresewn/pack/cits/CITEnchantment.java371
-rw-r--r--src/main/java/shcm/shsupercm/fabric/citresewn/pack/cits/CITItem.java463
-rw-r--r--src/main/java/shcm/shsupercm/fabric/citresewn/pack/format/PropertiesGroupAdapter.java101
-rw-r--r--src/main/java/shcm/shsupercm/fabric/citresewn/pack/format/PropertyGroup.java157
-rw-r--r--src/main/java/shcm/shsupercm/fabric/citresewn/pack/format/PropertyKey.java31
-rw-r--r--src/main/java/shcm/shsupercm/fabric/citresewn/pack/format/PropertySeparator.java21
-rw-r--r--src/main/java/shcm/shsupercm/fabric/citresewn/pack/format/PropertyValue.java20
-rw-r--r--src/main/java/shcm/shsupercm/util/logic/Loops.java60
79 files changed, 2802 insertions, 2844 deletions
diff --git a/src/main/java/shcm/shsupercm/fabric/citresewn/ActiveCITs.java b/src/main/java/shcm/shsupercm/fabric/citresewn/ActiveCITs.java
deleted file mode 100644
index 8d56a35..0000000
--- a/src/main/java/shcm/shsupercm/fabric/citresewn/ActiveCITs.java
+++ /dev/null
@@ -1,187 +0,0 @@
-package shcm.shsupercm.fabric.citresewn;
-
-import net.minecraft.client.render.model.BakedModel;
-import net.minecraft.client.world.ClientWorld;
-import net.minecraft.entity.LivingEntity;
-import net.minecraft.item.ArmorItem;
-import net.minecraft.item.Item;
-import net.minecraft.item.ItemStack;
-import net.minecraft.item.Items;
-import net.minecraft.util.Hand;
-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.*;
-import java.util.function.Supplier;
-import java.util.stream.Collectors;
-
-public class ActiveCITs {
- 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(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())) {
- if (cit instanceof CITItem item)
- for (Item type : item.items)
- citItems.computeIfAbsent(type, t -> new ArrayList<>()).add(item);
- else if (cit instanceof CITArmor armor)
- for (Item type : armor.items)
- if (type instanceof ArmorItem armorType)
- citArmor.computeIfAbsent(armorType, t -> new ArrayList<>()).add(armor);
- else
- CITResewn.logErrorLoading("Ignoring item type: " + Registry.ITEM.getId(type) + " is not armor in " + cit.pack.resourcePack.getName() + " -> " + cit.propertiesIdentifier.toString());
- else if (cit instanceof CITElytra elytra)
- citElytra.add(elytra);
- else if (cit instanceof CITEnchantment enchantment)
- citEnchantmentLayers.computeIfAbsent(enchantment.layer, l -> new ArrayList<>()).add(enchantment);
- }
-
- for (List<CITEnchantment> layer : citEnchantmentLayers.values()) {
- for (CITEnchantment enchantment : layer)
- enchantment.activate();
- citEnchantments.add(layer);
- }
- }
-
- public void dispose() {
- for (CIT cit : cits)
- cit.dispose();
- cits.clear();
- citItems.clear();
- citArmor.clear();
- citElytra.clear();
- citEnchantments.clear();
- }
-
- public CITItem getCITItem(ItemStack stack, World world, LivingEntity entity) {
- Hand hand = entity != null && stack == entity.getOffHandStack() ? Hand.OFF_HAND : Hand.MAIN_HAND;
-
- ((CITItem.Cached) (Object) stack).citresewn_setMojankCIT(false);
-
- List<CITItem> citItems = this.citItems.get(stack.getItem());
- if (citItems != null)
- for (CITItem citItem : citItems)
- if (citItem.test(stack, hand, world, entity, true)) {
- if (stack.isOf(Items.TRIDENT) || stack.isOf(Items.SPYGLASS))
- ((CITItem.Cached) (Object) stack).citresewn_setMojankCIT(true);
- return citItem;
- }
- return null;
- }
-
- public CITElytra getCITElytra(ItemStack stack, World world, LivingEntity livingEntity) {
- for (CITElytra citElytra : citElytra)
- if (citElytra.test(stack, Hand.MAIN_HAND, world, livingEntity, true))
- return citElytra;
- return null;
- }
-
- public CITArmor getCITArmor(ItemStack stack, World world, LivingEntity livingEntity) {
- Item item = stack.getItem();
- if (item instanceof ArmorItem) {
- List<CITArmor> citArmor = this.citArmor.get(item);
- if (citArmor != null)
- for (CITArmor armor : citArmor)
- if (armor.test(stack, null, world, livingEntity, true))
- return armor;
- }
- return null;
- }
-
- public List<CITEnchantment> getCITEnchantment(ItemStack stack, World world, LivingEntity livingEntity) {
- Hand hand = livingEntity != null && stack == livingEntity.getOffHandStack() ? Hand.OFF_HAND : Hand.MAIN_HAND;
-
- List<CITEnchantment> applied = new ArrayList<>();
-
- for (List<CITEnchantment> layer : this.citEnchantments)
- for (CITEnchantment cit : layer)
- if (cit.test(stack, hand, world, livingEntity, false)) {
- applied.add(cit);
- break;
- }
-
- return applied;
- }
-
- public BakedModel getItemModelCached(ItemStack stack, World world, LivingEntity entity, int seed) {
- BakedModel bakedModel = null;
-
- Supplier<CITItem> realtime = () -> getCITItem(stack, world, entity);
-
- //noinspection ConstantConditions
- CITItem citItem = CITResewnConfig.INSTANCE().cache_ms == 0 ? realtime.get() : ((CITItem.Cached) (Object) stack).citresewn_getCachedCITItem(realtime);
-
- if (citItem != null)
- bakedModel = citItem.getItemModel(stack, (ClientWorld) world, entity, seed);
-
- return bakedModel;
- }
-
- public Identifier getElytraTextureCached(ItemStack stack, World world, LivingEntity livingEntity) {
- Supplier<CITElytra> realtime = () -> getCITElytra(stack, world, livingEntity);
-
- //noinspection ConstantConditions
- CITElytra citElytra = CITResewnConfig.INSTANCE().cache_ms == 0 ? realtime.get() : ((CITElytra.Cached) (Object) stack).citresewn_getCachedCITElytra(realtime);
-
- if (citElytra != null)
- return citElytra.textureIdentifier;
-
- return null;
- }
-
- public Map<String, Identifier> getArmorTexturesCached(ItemStack stack, World world, LivingEntity livingEntity) {
- Supplier<CITArmor> realtime = () -> getCITArmor(stack, world, livingEntity);
-
- //noinspection ConstantConditions
- CITArmor citArmor = CITResewnConfig.INSTANCE().cache_ms == 0 ? realtime.get() : ((CITArmor.Cached) (Object) stack).citresewn_getCachedCITArmor(realtime);
-
- if (citArmor != null)
- return citArmor.textures;
-
- return null;
- }
-
- public void setEnchantmentAppliedContextCached(ItemStack stack, World world, LivingEntity entity) {
- if (stack == null) {
- CITEnchantment.appliedContext = null;
- return;
- }
-
- Supplier<List<CITEnchantment>> realtime = () -> getCITEnchantment(stack, world, entity);
-
- //noinspection ConstantConditions
- List<CITEnchantment> citEnchantments = CITResewnConfig.INSTANCE().cache_ms == 0 ? realtime.get() : ((CITEnchantment.Cached) (Object) stack).citresewn_getCachedCITEnchantment(realtime);
-
- if (citEnchantments == null || citEnchantments.isEmpty()) {
- CITEnchantment.appliedContext = null;
- return;
- }
-
- if (effectiveGlobalProperties.method != null)
- effectiveGlobalProperties.method.applyMethod(citEnchantments, stack);
-
- CITEnchantment.appliedContext = citEnchantments;
- }
-}
diff --git a/src/main/java/shcm/shsupercm/fabric/citresewn/CITResewn.java b/src/main/java/shcm/shsupercm/fabric/citresewn/CITResewn.java
index e53ba52..7d4be88 100644
--- a/src/main/java/shcm/shsupercm/fabric/citresewn/CITResewn.java
+++ b/src/main/java/shcm/shsupercm/fabric/citresewn/CITResewn.java
@@ -1,45 +1,55 @@
package shcm.shsupercm.fabric.citresewn;
+import io.shcm.shsupercm.fabric.fletchingtable.api.Entrypoint;
import net.fabricmc.api.ClientModInitializer;
-import net.fabricmc.api.EnvType;
-import net.fabricmc.api.Environment;
+import net.fabricmc.loader.api.FabricLoader;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import shcm.shsupercm.fabric.citresewn.config.CITResewnConfig;
+import shcm.shsupercm.fabric.citresewn.cit.CITRegistry;
-@Environment(EnvType.CLIENT)
+/**
+ * Main initializer for CIT Resewn. Contains various internal utilities(just logging for now).
+ */
public class CITResewn implements ClientModInitializer {
public static final Logger LOG = LogManager.getLogger("CITResewn");
- public static CITResewn INSTANCE;
-
- public ActiveCITs activeCITs = null;
-
- public CITResewnConfig config = null;
-
-
- public boolean processingBrokenPaths = false;
+ @Entrypoint(Entrypoint.CLIENT)
+ public static final CITResewn INSTANCE = new CITResewn();
@Override
public void onInitializeClient() {
- INSTANCE = this;
-
- config = CITResewnConfig.read();
+ CITRegistry.registerAll();
- CITResewnCommand.register();
+ if (FabricLoader.getInstance().isModLoaded("fabric-command-api-v1"))
+ CITResewnCommand.register();
}
+ /**
+ * Logs an info line in CIT Resewn's name.
+ * @param message log message
+ */
public static void info(String message) {
LOG.info("[citresewn] " + message);
}
+ /**
+ * Logs a warning line in CIT Resewn's name if enabled in config.
+ * @see CITResewnConfig#mute_warns
+ * @param message warn message
+ */
public static void logWarnLoading(String message) {
- if (CITResewn