diff --git a/buildSrc/src/main/groovy/consumer.conventions.gradle b/buildSrc/src/main/groovy/consumer.conventions.gradle index 0cf1ac41..7a705f06 100644 --- a/buildSrc/src/main/groovy/consumer.conventions.gradle +++ b/buildSrc/src/main/groovy/consumer.conventions.gradle @@ -12,7 +12,11 @@ configurations { } dependencies { - compileOnly project(":common") + compileOnly(project(":common")) { + capabilities { + requireCapability("dev.dhyces.trimmed:common:api") + } + } commonJava project(path: ":common", configuration: "commonJava") commonResources project(path: ":common", configuration: "commonResources") } diff --git a/common/build.gradle b/common/build.gradle index f0ce6798..f6f436c8 100644 --- a/common/build.gradle +++ b/common/build.gradle @@ -25,6 +25,17 @@ modsDotGroovy { } } +sourceSets { + api { + compileClasspath += main.compileClasspath + } + main { + compileClasspath += api.compileClasspath + api.output + runtimeClasspath += api.runtimeClasspath + api.output + resources.srcDir 'src/generated/resources' + } +} + configurations { commonJava { canBeResolved = false @@ -51,6 +62,12 @@ neoForge { } } +java { + registerFeature("api") { + usingSourceSet(sourceSets.api) + } +} + dependencies { compileOnly libs.mixin annotationProcessor libs.mixinextras.common @@ -59,15 +76,8 @@ dependencies { artifacts { commonJava sourceSets.main.java.sourceDirectories.singleFile + commonJava sourceSets.api.java.sourceDirectories.singleFile sourceSets.main.resources.sourceDirectories.forEach { commonResources it } -} - -sourceSets.main.resources.srcDir 'src/generated/resources' - -idea { - module { - inheritOutputDirs = false - } } \ No newline at end of file diff --git a/common/src/main/java/dev/dhyces/trimmed/api/KeyResolver.java b/common/src/api/java/dev/dhyces/trimmed/api/KeyResolver.java similarity index 100% rename from common/src/main/java/dev/dhyces/trimmed/api/KeyResolver.java rename to common/src/api/java/dev/dhyces/trimmed/api/KeyResolver.java diff --git a/common/src/api/java/dev/dhyces/trimmed/api/TrimmedReference.java b/common/src/api/java/dev/dhyces/trimmed/api/TrimmedReference.java new file mode 100644 index 00000000..7c465083 --- /dev/null +++ b/common/src/api/java/dev/dhyces/trimmed/api/TrimmedReference.java @@ -0,0 +1,14 @@ +package dev.dhyces.trimmed.api; + +import net.minecraft.resources.ResourceLocation; + +public final class TrimmedReference { + private TrimmedReference() {} + + public static final String MODID = "trimmed"; + public static ResourceLocation id(String id) { + return ResourceLocation.fromNamespaceAndPath(MODID, id); + } + + public static final String OVERRIDES_DIRECTORY = "trimmed/item_model_overrides"; +} diff --git a/common/src/main/java/dev/dhyces/trimmed/api/client/ClientKeyResolver.java b/common/src/api/java/dev/dhyces/trimmed/api/client/ClientKeyResolver.java similarity index 100% rename from common/src/main/java/dev/dhyces/trimmed/api/client/ClientKeyResolver.java rename to common/src/api/java/dev/dhyces/trimmed/api/client/ClientKeyResolver.java diff --git a/common/src/main/java/dev/dhyces/trimmed/api/client/ClientKeyResolvers.java b/common/src/api/java/dev/dhyces/trimmed/api/client/ClientKeyResolvers.java similarity index 100% rename from common/src/main/java/dev/dhyces/trimmed/api/client/ClientKeyResolvers.java rename to common/src/api/java/dev/dhyces/trimmed/api/client/ClientKeyResolvers.java diff --git a/common/src/main/java/dev/dhyces/trimmed/api/client/TrimmedClientApi.java b/common/src/api/java/dev/dhyces/trimmed/api/client/TrimmedClientApi.java similarity index 85% rename from common/src/main/java/dev/dhyces/trimmed/api/client/TrimmedClientApi.java rename to common/src/api/java/dev/dhyces/trimmed/api/client/TrimmedClientApi.java index d4a3d43f..0145ed44 100644 --- a/common/src/main/java/dev/dhyces/trimmed/api/client/TrimmedClientApi.java +++ b/common/src/api/java/dev/dhyces/trimmed/api/client/TrimmedClientApi.java @@ -1,7 +1,6 @@ package dev.dhyces.trimmed.api.client; import dev.dhyces.trimmed.api.KeyResolver; -import dev.dhyces.trimmed.impl.client.TrimmedClientApiImpl; import net.minecraft.core.Registry; import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceLocation; @@ -9,7 +8,7 @@ public interface TrimmedClientApi { static TrimmedClientApi getInstance() { - return TrimmedClientApiImpl.INSTANCE; + throw new AssertionError("Implemented with Mixin"); } @Nullable diff --git a/common/src/main/java/dev/dhyces/trimmed/api/client/TrimmedClientApiEntrypoint.java b/common/src/api/java/dev/dhyces/trimmed/api/client/TrimmedClientApiEntrypoint.java similarity index 85% rename from common/src/main/java/dev/dhyces/trimmed/api/client/TrimmedClientApiEntrypoint.java rename to common/src/api/java/dev/dhyces/trimmed/api/client/TrimmedClientApiEntrypoint.java index b3fa040e..4a32cfe9 100644 --- a/common/src/main/java/dev/dhyces/trimmed/api/client/TrimmedClientApiEntrypoint.java +++ b/common/src/api/java/dev/dhyces/trimmed/api/client/TrimmedClientApiEntrypoint.java @@ -1,7 +1,7 @@ package dev.dhyces.trimmed.api.client; +import com.mojang.serialization.MapCodec; import dev.dhyces.trimmed.api.client.override.provider.ItemOverrideProvider; -import dev.dhyces.trimmed.api.client.override.provider.ItemOverrideProviderType; import dev.dhyces.trimmed.api.maps.MapKey; import dev.dhyces.trimmed.api.KeyResolver; import net.minecraft.resources.ResourceLocation; @@ -21,7 +21,7 @@ interface TrimmedClientRegistration { * @param id Id for this override type, ie "trimmed:nbt" * @param providerType Your item override provider type, ie () -> MyItemOverrideProvider.CODEC */ - ItemOverrideProviderType registerItemOverrideType(ResourceLocation id, ItemOverrideProviderType providerType); + MapCodec registerItemOverrideType(ResourceLocation id, MapCodec providerType); /** * If this already diff --git a/common/src/main/java/dev/dhyces/trimmed/api/client/TrimmedClientMapApi.java b/common/src/api/java/dev/dhyces/trimmed/api/client/TrimmedClientMapApi.java similarity index 90% rename from common/src/main/java/dev/dhyces/trimmed/api/client/TrimmedClientMapApi.java rename to common/src/api/java/dev/dhyces/trimmed/api/client/TrimmedClientMapApi.java index fd1e8b46..0ac44ded 100644 --- a/common/src/main/java/dev/dhyces/trimmed/api/client/TrimmedClientMapApi.java +++ b/common/src/api/java/dev/dhyces/trimmed/api/client/TrimmedClientMapApi.java @@ -5,7 +5,6 @@ import dev.dhyces.trimmed.api.KeyResolver; import dev.dhyces.trimmed.api.maps.types.AdvancedMapType; import dev.dhyces.trimmed.api.maps.types.MapType; -import dev.dhyces.trimmed.impl.client.TrimmedClientMapApiImpl; import dev.dhyces.trimmed.api.maps.MapKey; import net.minecraft.core.Registry; import net.minecraft.resources.ResourceKey; @@ -15,7 +14,7 @@ public interface TrimmedClientMapApi { static TrimmedClientMapApi getInstance() { - return TrimmedClientMapApiImpl.INSTANCE; + throw new AssertionError("Implemented with Mixin"); } MapHolder getSimpleMap(MapKey key); diff --git a/common/src/main/java/dev/dhyces/trimmed/api/client/TrimmedClientTagApi.java b/common/src/api/java/dev/dhyces/trimmed/api/client/TrimmedClientTagApi.java similarity index 80% rename from common/src/main/java/dev/dhyces/trimmed/api/client/TrimmedClientTagApi.java rename to common/src/api/java/dev/dhyces/trimmed/api/client/TrimmedClientTagApi.java index de313ee3..4a504978 100644 --- a/common/src/main/java/dev/dhyces/trimmed/api/client/TrimmedClientTagApi.java +++ b/common/src/api/java/dev/dhyces/trimmed/api/client/TrimmedClientTagApi.java @@ -3,12 +3,11 @@ import com.mojang.serialization.Codec; import dev.dhyces.trimmed.api.client.tag.TagHolder; import dev.dhyces.trimmed.api.KeyResolver; -import dev.dhyces.trimmed.impl.client.TrimmedClientTagApiImpl; import dev.dhyces.trimmed.api.client.tag.ClientTagKey; public interface TrimmedClientTagApi { static TrimmedClientTagApi getInstance() { - return TrimmedClientTagApiImpl.INSTANCE; + throw new AssertionError("Implemented with Mixin"); } TagHolder getTag(ClientTagKey clientTagKey); diff --git a/common/src/main/java/dev/dhyces/trimmed/api/client/map/ClientMapKeys.java b/common/src/api/java/dev/dhyces/trimmed/api/client/map/ClientMapKeys.java similarity index 60% rename from common/src/main/java/dev/dhyces/trimmed/api/client/map/ClientMapKeys.java rename to common/src/api/java/dev/dhyces/trimmed/api/client/map/ClientMapKeys.java index 0e886989..c72e6dd6 100644 --- a/common/src/main/java/dev/dhyces/trimmed/api/client/map/ClientMapKeys.java +++ b/common/src/api/java/dev/dhyces/trimmed/api/client/map/ClientMapKeys.java @@ -1,25 +1,25 @@ package dev.dhyces.trimmed.api.client.map; -import dev.dhyces.trimmed.Trimmed; +import dev.dhyces.trimmed.api.TrimmedReference; import dev.dhyces.trimmed.api.maps.MapKey; import net.minecraft.resources.ResourceLocation; public class ClientMapKeys { - public static final MapKey MATERIAL_SUFFIXES = MapKey.baseKeyOf(ClientMapTypes.TEXTURE_SUFFIX, Trimmed.id("material_suffixes")); - public static final MapKey DARKER_MATERIAL_SUFFIXES = MATERIAL_SUFFIXES.makeSubKey(Trimmed.id("darker_material_suffixes")); + public static final MapKey MATERIAL_SUFFIXES = MapKey.baseKeyOf(ClientMapTypes.TEXTURE_SUFFIX, TrimmedReference.id("material_suffixes")); + public static final MapKey DARKER_MATERIAL_SUFFIXES = MATERIAL_SUFFIXES.makeSubKey(TrimmedReference.id("darker_material_suffixes")); - public static final MapKey TRIM_MATERIAL_OVERRIDES = MapKey.baseKeyOf(ClientMapTypes.TEXTURE_MAPPING, Trimmed.id("trim_material_overrides")); - public static final MapKey IRON_MATERIAL_OVERRIDES = TRIM_MATERIAL_OVERRIDES.makeSubKey(Trimmed.id("iron")); - public static final MapKey GOLD_MATERIAL_OVERRIDES = TRIM_MATERIAL_OVERRIDES.makeSubKey(Trimmed.id("gold")); - public static final MapKey DIAMOND_MATERIAL_OVERRIDES = TRIM_MATERIAL_OVERRIDES.makeSubKey(Trimmed.id("diamond")); - public static final MapKey NETHERITE_MATERIAL_OVERRIDES = TRIM_MATERIAL_OVERRIDES.makeSubKey(Trimmed.id("netherite")); + public static final MapKey TRIM_MATERIAL_OVERRIDES = MapKey.baseKeyOf(ClientMapTypes.TEXTURE_MAPPING, TrimmedReference.id("trim_material_overrides")); + public static final MapKey IRON_MATERIAL_OVERRIDES = TRIM_MATERIAL_OVERRIDES.makeSubKey(TrimmedReference.id("iron")); + public static final MapKey GOLD_MATERIAL_OVERRIDES = TRIM_MATERIAL_OVERRIDES.makeSubKey(TrimmedReference.id("gold")); + public static final MapKey DIAMOND_MATERIAL_OVERRIDES = TRIM_MATERIAL_OVERRIDES.makeSubKey(TrimmedReference.id("diamond")); + public static final MapKey NETHERITE_MATERIAL_OVERRIDES = TRIM_MATERIAL_OVERRIDES.makeSubKey(TrimmedReference.id("netherite")); - public static final MapKey TRIM_OVERLAYS = MapKey.baseKeyOf(ClientMapTypes.TEXTURE_MAPPING, Trimmed.id("trim_overlays")); - public static final MapKey IRON_ARMOR_OVERLAYS = TRIM_OVERLAYS.makeSubKey(Trimmed.id("iron")); - public static final MapKey GOLD_ARMOR_OVERLAYS = TRIM_OVERLAYS.makeSubKey(Trimmed.id("gold")); - public static final MapKey DIAMOND_ARMOR_OVERLAYS = TRIM_OVERLAYS.makeSubKey(Trimmed.id("diamond")); - public static final MapKey NETHERITE_ARMOR_OVERLAYS = TRIM_OVERLAYS.makeSubKey(Trimmed.id("netherite")); - public static final MapKey LEATHER_ARMOR_OVERLAYS = TRIM_OVERLAYS.makeSubKey(Trimmed.id("leather")); - public static final MapKey CHAINMAIL_ARMOR_OVERLAYS = TRIM_OVERLAYS.makeSubKey(Trimmed.id("chainmail")); - public static final MapKey TURTLE_ARMOR_OVERLAYS = TRIM_OVERLAYS.makeSubKey(Trimmed.id("turtle")); + public static final MapKey TRIM_OVERLAYS = MapKey.baseKeyOf(ClientMapTypes.TEXTURE_MAPPING, TrimmedReference.id("trim_overlays")); + public static final MapKey IRON_ARMOR_OVERLAYS = TRIM_OVERLAYS.makeSubKey(TrimmedReference.id("iron")); + public static final MapKey GOLD_ARMOR_OVERLAYS = TRIM_OVERLAYS.makeSubKey(TrimmedReference.id("gold")); + public static final MapKey DIAMOND_ARMOR_OVERLAYS = TRIM_OVERLAYS.makeSubKey(TrimmedReference.id("diamond")); + public static final MapKey NETHERITE_ARMOR_OVERLAYS = TRIM_OVERLAYS.makeSubKey(TrimmedReference.id("netherite")); + public static final MapKey LEATHER_ARMOR_OVERLAYS = TRIM_OVERLAYS.makeSubKey(TrimmedReference.id("leather")); + public static final MapKey CHAINMAIL_ARMOR_OVERLAYS = TRIM_OVERLAYS.makeSubKey(TrimmedReference.id("chainmail")); + public static final MapKey TURTLE_ARMOR_OVERLAYS = TRIM_OVERLAYS.makeSubKey(TrimmedReference.id("turtle")); } diff --git a/common/src/main/java/dev/dhyces/trimmed/api/client/map/ClientMapTypes.java b/common/src/api/java/dev/dhyces/trimmed/api/client/map/ClientMapTypes.java similarity index 79% rename from common/src/main/java/dev/dhyces/trimmed/api/client/map/ClientMapTypes.java rename to common/src/api/java/dev/dhyces/trimmed/api/client/map/ClientMapTypes.java index 464d3cce..fe253394 100644 --- a/common/src/main/java/dev/dhyces/trimmed/api/client/map/ClientMapTypes.java +++ b/common/src/api/java/dev/dhyces/trimmed/api/client/map/ClientMapTypes.java @@ -3,7 +3,7 @@ import com.google.common.collect.BiMap; import com.google.common.collect.HashBiMap; import com.mojang.serialization.Codec; -import dev.dhyces.trimmed.Trimmed; +import dev.dhyces.trimmed.api.TrimmedReference; import dev.dhyces.trimmed.api.client.ClientKeyResolvers; import dev.dhyces.trimmed.api.maps.types.MapType; import dev.dhyces.trimmed.api.util.CodecUtil; @@ -27,6 +27,6 @@ public static MapType registerType(ResourceLocation id, MapType TEXTURE_SUFFIX = registerType(Trimmed.id("texture_suffix"), MapType.simpleBuilder(ClientKeyResolvers.TEXTURE, Codec.STRING).build()); - public static final MapType TEXTURE_MAPPING = registerType(Trimmed.id("texture_mapping"), MapType.simpleBuilder(ClientKeyResolvers.TEXTURE, ResourceLocation.CODEC).build()); + public static final MapType TEXTURE_SUFFIX = registerType(TrimmedReference.id("texture_suffix"), MapType.simpleBuilder(ClientKeyResolvers.TEXTURE, Codec.STRING).build()); + public static final MapType TEXTURE_MAPPING = registerType(TrimmedReference.id("texture_mapping"), MapType.simpleBuilder(ClientKeyResolvers.TEXTURE, ResourceLocation.CODEC).build()); } diff --git a/common/src/main/java/dev/dhyces/trimmed/impl/client/models/template/StringTemplate.java b/common/src/api/java/dev/dhyces/trimmed/api/client/models/template/StringTemplate.java similarity index 96% rename from common/src/main/java/dev/dhyces/trimmed/impl/client/models/template/StringTemplate.java rename to common/src/api/java/dev/dhyces/trimmed/api/client/models/template/StringTemplate.java index 57ea370e..b7644c72 100644 --- a/common/src/main/java/dev/dhyces/trimmed/impl/client/models/template/StringTemplate.java +++ b/common/src/api/java/dev/dhyces/trimmed/api/client/models/template/StringTemplate.java @@ -1,4 +1,4 @@ -package dev.dhyces.trimmed.impl.client.models.template; +package dev.dhyces.trimmed.api.client.models.template; import com.mojang.serialization.Codec; import it.unimi.dsi.fastutil.ints.Int2ObjectArrayMap; @@ -11,7 +11,6 @@ import java.util.concurrent.atomic.AtomicInteger; import java.util.function.Function; import java.util.regex.Pattern; -import java.util.stream.Collectors; public class StringTemplate { public static final Codec CODEC = Codec.STRING.xmap(StringTemplate::of, StringTemplate::asOriginalString); diff --git a/common/src/main/java/dev/dhyces/trimmed/api/client/override/provider/ItemOverrideProvider.java b/common/src/api/java/dev/dhyces/trimmed/api/client/override/provider/ItemOverrideProvider.java similarity index 69% rename from common/src/main/java/dev/dhyces/trimmed/api/client/override/provider/ItemOverrideProvider.java rename to common/src/api/java/dev/dhyces/trimmed/api/client/override/provider/ItemOverrideProvider.java index 5646c29e..c6b6af02 100644 --- a/common/src/main/java/dev/dhyces/trimmed/api/client/override/provider/ItemOverrideProvider.java +++ b/common/src/api/java/dev/dhyces/trimmed/api/client/override/provider/ItemOverrideProvider.java @@ -3,7 +3,6 @@ import com.mojang.serialization.Codec; import com.mojang.serialization.MapCodec; import dev.dhyces.trimmed.api.util.CodecUtil; -import dev.dhyces.trimmed.impl.client.models.override.provider.ItemOverrideProviderRegistry; import net.minecraft.client.multiplayer.ClientLevel; import net.minecraft.client.resources.model.BakedModel; import net.minecraft.world.entity.LivingEntity; @@ -12,13 +11,17 @@ import java.util.Optional; import java.util.Set; +import java.util.function.Function; public interface ItemOverrideProvider { - Codec CODEC = ItemOverrideProviderRegistry.CODEC.dispatch(ItemOverrideProvider::getType, ItemOverrideProviderType::getCodec); + static Codec> getRegistryCodec() { + throw new AssertionError("Implemented via Mixin"); + } + Codec CODEC = getRegistryCodec().dispatch(ItemOverrideProvider::getCodec, Function.identity()); MapCodec> SET_MAP_CODEC = CodecUtil.setOf(CODEC).fieldOf("values"); Codec> SET_MAP_CODEC_CODEC = SET_MAP_CODEC.codec(); Optional getModel(ItemStack itemStack, @Nullable ClientLevel world, @Nullable LivingEntity entity, int seed); - ItemOverrideProviderType getType(); + MapCodec getCodec(); } diff --git a/common/src/main/java/dev/dhyces/trimmed/api/client/override/provider/SimpleItemOverrideProvider.java b/common/src/api/java/dev/dhyces/trimmed/api/client/override/provider/SimpleItemOverrideProvider.java similarity index 91% rename from common/src/main/java/dev/dhyces/trimmed/api/client/override/provider/SimpleItemOverrideProvider.java rename to common/src/api/java/dev/dhyces/trimmed/api/client/override/provider/SimpleItemOverrideProvider.java index d917afc8..dd08565f 100644 --- a/common/src/main/java/dev/dhyces/trimmed/api/client/override/provider/SimpleItemOverrideProvider.java +++ b/common/src/api/java/dev/dhyces/trimmed/api/client/override/provider/SimpleItemOverrideProvider.java @@ -1,6 +1,6 @@ package dev.dhyces.trimmed.api.client.override.provider; -import dev.dhyces.trimmed.modhelper.services.Services; +import dev.dhyces.trimmed.api.services.ApiServices; import net.minecraft.client.Minecraft; import net.minecraft.client.multiplayer.ClientLevel; import net.minecraft.client.resources.model.BakedModel; @@ -18,7 +18,7 @@ public Optional getModel(ItemStack itemStack, @Nullable ClientLevel ModelPair pair = getModelLocation(itemStack, world, entity, seed); return pair.getTopLevelModelId().map(Minecraft.getInstance().getModelManager()::getModel) .filter(model -> model != Minecraft.getInstance().getModelManager().getMissingModel()) - .or(() -> pair.getResourceId().map(Services.CLIENT_HELPER::getModel)); + .or(() -> pair.getResourceId().map(ApiServices.MODEL_HELPER::getModel)); } public abstract ModelPair getModelLocation(ItemStack itemStack, @Nullable ClientLevel world, @Nullable LivingEntity entity, int seed); diff --git a/common/src/main/java/dev/dhyces/trimmed/api/client/override/provider/providers/AnyTrimItemOverrideProvider.java b/common/src/api/java/dev/dhyces/trimmed/api/client/override/provider/providers/AnyTrimItemOverrideProvider.java similarity index 92% rename from common/src/main/java/dev/dhyces/trimmed/api/client/override/provider/providers/AnyTrimItemOverrideProvider.java rename to common/src/api/java/dev/dhyces/trimmed/api/client/override/provider/providers/AnyTrimItemOverrideProvider.java index b78a1252..76d44d6d 100644 --- a/common/src/main/java/dev/dhyces/trimmed/api/client/override/provider/providers/AnyTrimItemOverrideProvider.java +++ b/common/src/api/java/dev/dhyces/trimmed/api/client/override/provider/providers/AnyTrimItemOverrideProvider.java @@ -2,9 +2,8 @@ import com.mojang.serialization.MapCodec; import com.mojang.serialization.codecs.RecordCodecBuilder; -import dev.dhyces.trimmed.api.client.override.provider.ItemOverrideProviderType; import dev.dhyces.trimmed.api.client.override.provider.SimpleItemOverrideProvider; -import dev.dhyces.trimmed.impl.client.models.template.StringTemplate; +import dev.dhyces.trimmed.api.client.models.template.StringTemplate; import net.minecraft.client.Minecraft; import net.minecraft.client.multiplayer.ClientLevel; import net.minecraft.client.resources.model.BakedModel; @@ -12,7 +11,6 @@ import net.minecraft.core.component.DataComponents; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.LivingEntity; -import net.minecraft.world.item.ArmorItem; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.equipment.trim.ArmorTrim; import org.jetbrains.annotations.Nullable; @@ -63,8 +61,8 @@ public ModelPair getModelLocation(ItemStack itemStack, @Nullable ClientLevel wor } @Override - public ItemOverrideProviderType getType() { - return ItemOverrideProviderType.ANY_TRIM; + public MapCodec getCodec() { + return CODEC; } @Override diff --git a/common/src/main/java/dev/dhyces/trimmed/api/client/override/provider/providers/ComponentItemOverrideProvider.java b/common/src/api/java/dev/dhyces/trimmed/api/client/override/provider/providers/ComponentItemOverrideProvider.java similarity index 94% rename from common/src/main/java/dev/dhyces/trimmed/api/client/override/provider/providers/ComponentItemOverrideProvider.java rename to common/src/api/java/dev/dhyces/trimmed/api/client/override/provider/providers/ComponentItemOverrideProvider.java index cefbade4..0af36b60 100644 --- a/common/src/main/java/dev/dhyces/trimmed/api/client/override/provider/providers/ComponentItemOverrideProvider.java +++ b/common/src/api/java/dev/dhyces/trimmed/api/client/override/provider/providers/ComponentItemOverrideProvider.java @@ -2,7 +2,6 @@ import com.mojang.serialization.MapCodec; import com.mojang.serialization.codecs.RecordCodecBuilder; -import dev.dhyces.trimmed.api.client.override.provider.ItemOverrideProviderType; import dev.dhyces.trimmed.api.client.override.provider.SimpleItemOverrideProvider; import dev.dhyces.trimmed.api.util.CodecUtil; import net.minecraft.client.multiplayer.ClientLevel; @@ -56,8 +55,8 @@ public ModelPair getModelLocation(ItemStack itemStack, @Nullable ClientLevel wor } @Override - public ItemOverrideProviderType getType() { - return ItemOverrideProviderType.COMPONENT; + public MapCodec getCodec() { + return CODEC; } @Override diff --git a/common/src/main/java/dev/dhyces/trimmed/api/client/tag/ClientTagKey.java b/common/src/api/java/dev/dhyces/trimmed/api/client/tag/ClientTagKey.java similarity index 100% rename from common/src/main/java/dev/dhyces/trimmed/api/client/tag/ClientTagKey.java rename to common/src/api/java/dev/dhyces/trimmed/api/client/tag/ClientTagKey.java diff --git a/common/src/main/java/dev/dhyces/trimmed/api/client/tag/ClientTags.java b/common/src/api/java/dev/dhyces/trimmed/api/client/tag/ClientTags.java similarity index 100% rename from common/src/main/java/dev/dhyces/trimmed/api/client/tag/ClientTags.java rename to common/src/api/java/dev/dhyces/trimmed/api/client/tag/ClientTags.java diff --git a/common/src/main/java/dev/dhyces/trimmed/api/client/tag/TagHolder.java b/common/src/api/java/dev/dhyces/trimmed/api/client/tag/TagHolder.java similarity index 100% rename from common/src/main/java/dev/dhyces/trimmed/api/client/tag/TagHolder.java rename to common/src/api/java/dev/dhyces/trimmed/api/client/tag/TagHolder.java diff --git a/common/src/main/java/dev/dhyces/trimmed/api/client/util/ClientUtil.java b/common/src/api/java/dev/dhyces/trimmed/api/client/util/ClientUtil.java similarity index 100% rename from common/src/main/java/dev/dhyces/trimmed/api/client/util/ClientUtil.java rename to common/src/api/java/dev/dhyces/trimmed/api/client/util/ClientUtil.java diff --git a/common/src/main/java/dev/dhyces/trimmed/api/codec/SetCodec.java b/common/src/api/java/dev/dhyces/trimmed/api/codec/SetCodec.java similarity index 100% rename from common/src/main/java/dev/dhyces/trimmed/api/codec/SetCodec.java rename to common/src/api/java/dev/dhyces/trimmed/api/codec/SetCodec.java diff --git a/common/src/main/java/dev/dhyces/trimmed/api/data/BaseTrimDatagenSuite.java b/common/src/api/java/dev/dhyces/trimmed/api/data/BaseTrimDatagenSuite.java similarity index 100% rename from common/src/main/java/dev/dhyces/trimmed/api/data/BaseTrimDatagenSuite.java rename to common/src/api/java/dev/dhyces/trimmed/api/data/BaseTrimDatagenSuite.java diff --git a/common/src/main/java/dev/dhyces/trimmed/api/data/ItemOverrideDataProvider.java b/common/src/api/java/dev/dhyces/trimmed/api/data/ItemOverrideDataProvider.java similarity index 96% rename from common/src/main/java/dev/dhyces/trimmed/api/data/ItemOverrideDataProvider.java rename to common/src/api/java/dev/dhyces/trimmed/api/data/ItemOverrideDataProvider.java index f8ca1b41..4b39ed86 100644 --- a/common/src/main/java/dev/dhyces/trimmed/api/data/ItemOverrideDataProvider.java +++ b/common/src/api/java/dev/dhyces/trimmed/api/data/ItemOverrideDataProvider.java @@ -3,12 +3,12 @@ import com.google.gson.JsonElement; import com.mojang.serialization.DataResult; import com.mojang.serialization.JsonOps; +import dev.dhyces.trimmed.api.TrimmedReference; +import dev.dhyces.trimmed.api.client.models.template.StringTemplate; import dev.dhyces.trimmed.api.client.override.provider.ItemOverrideProvider; import dev.dhyces.trimmed.api.client.override.provider.providers.AnyTrimItemOverrideProvider; import dev.dhyces.trimmed.api.client.override.provider.providers.ComponentItemOverrideProvider; import dev.dhyces.trimmed.api.data.model.override.ItemOverrideFile; -import dev.dhyces.trimmed.impl.client.models.override.ItemOverrideReloadListener; -import dev.dhyces.trimmed.impl.client.models.template.StringTemplate; import it.unimi.dsi.fastutil.objects.Object2ObjectLinkedOpenHashMap; import it.unimi.dsi.fastutil.objects.ObjectLinkedOpenHashSet; import net.minecraft.client.resources.model.ModelResourceLocation; @@ -20,7 +20,8 @@ import net.minecraft.resources.ResourceLocation; import net.minecraft.world.level.ItemLike; -import java.util.*; +import java.util.Map; +import java.util.Objects; import java.util.concurrent.CompletableFuture; import java.util.function.UnaryOperator; @@ -32,7 +33,7 @@ public abstract class ItemOverrideDataProvider implements DataProvider { public ItemOverrideDataProvider(PackOutput output, String modid) { this.dataOutput = output; - this.pathResolver = output.createPathProvider(PackOutput.Target.RESOURCE_PACK, ItemOverrideReloadListener.OVERRIDES_DIRECTORY); + this.pathResolver = output.createPathProvider(PackOutput.Target.RESOURCE_PACK, TrimmedReference.OVERRIDES_DIRECTORY); this.modid = modid; } diff --git a/common/src/main/java/dev/dhyces/trimmed/api/data/client/tag/BaseClientTagDataProvider.java b/common/src/api/java/dev/dhyces/trimmed/api/data/client/tag/BaseClientTagDataProvider.java similarity index 100% rename from common/src/main/java/dev/dhyces/trimmed/api/data/client/tag/BaseClientTagDataProvider.java rename to common/src/api/java/dev/dhyces/trimmed/api/data/client/tag/BaseClientTagDataProvider.java diff --git a/common/src/main/java/dev/dhyces/trimmed/api/data/client/tag/ClientTagBuilder.java b/common/src/api/java/dev/dhyces/trimmed/api/data/client/tag/ClientTagBuilder.java similarity index 100% rename from common/src/main/java/dev/dhyces/trimmed/api/data/client/tag/ClientTagBuilder.java rename to common/src/api/java/dev/dhyces/trimmed/api/data/client/tag/ClientTagBuilder.java diff --git a/common/src/main/java/dev/dhyces/trimmed/api/data/client/tag/ClientTagEntry.java b/common/src/api/java/dev/dhyces/trimmed/api/data/client/tag/ClientTagEntry.java similarity index 100% rename from common/src/main/java/dev/dhyces/trimmed/api/data/client/tag/ClientTagEntry.java rename to common/src/api/java/dev/dhyces/trimmed/api/data/client/tag/ClientTagEntry.java diff --git a/common/src/main/java/dev/dhyces/trimmed/api/data/client/tag/ClientTagFile.java b/common/src/api/java/dev/dhyces/trimmed/api/data/client/tag/ClientTagFile.java similarity index 94% rename from common/src/main/java/dev/dhyces/trimmed/api/data/client/tag/ClientTagFile.java rename to common/src/api/java/dev/dhyces/trimmed/api/data/client/tag/ClientTagFile.java index a38b6107..ec81c6f5 100644 --- a/common/src/main/java/dev/dhyces/trimmed/api/data/client/tag/ClientTagFile.java +++ b/common/src/api/java/dev/dhyces/trimmed/api/data/client/tag/ClientTagFile.java @@ -2,7 +2,6 @@ import com.mojang.serialization.Codec; import com.mojang.serialization.codecs.RecordCodecBuilder; -import dev.dhyces.trimmed.api.KeyResolver; import dev.dhyces.trimmed.api.util.CodecUtil; import java.util.Set; diff --git a/common/src/main/java/dev/dhyces/trimmed/api/data/client/tag/appenders/ClientRegistryTagAppender.java b/common/src/api/java/dev/dhyces/trimmed/api/data/client/tag/appenders/ClientRegistryTagAppender.java similarity index 100% rename from common/src/main/java/dev/dhyces/trimmed/api/data/client/tag/appenders/ClientRegistryTagAppender.java rename to common/src/api/java/dev/dhyces/trimmed/api/data/client/tag/appenders/ClientRegistryTagAppender.java diff --git a/common/src/main/java/dev/dhyces/trimmed/api/data/client/tag/appenders/ClientTagAppender.java b/common/src/api/java/dev/dhyces/trimmed/api/data/client/tag/appenders/ClientTagAppender.java similarity index 100% rename from common/src/main/java/dev/dhyces/trimmed/api/data/client/tag/appenders/ClientTagAppender.java rename to common/src/api/java/dev/dhyces/trimmed/api/data/client/tag/appenders/ClientTagAppender.java diff --git a/common/src/main/java/dev/dhyces/trimmed/api/data/client/tag/appenders/MappedTagExtension.java b/common/src/api/java/dev/dhyces/trimmed/api/data/client/tag/appenders/MappedTagExtension.java similarity index 100% rename from common/src/main/java/dev/dhyces/trimmed/api/data/client/tag/appenders/MappedTagExtension.java rename to common/src/api/java/dev/dhyces/trimmed/api/data/client/tag/appenders/MappedTagExtension.java diff --git a/common/src/main/java/dev/dhyces/trimmed/api/data/map/BaseMapDataProvider.java b/common/src/api/java/dev/dhyces/trimmed/api/data/map/BaseMapDataProvider.java similarity index 97% rename from common/src/main/java/dev/dhyces/trimmed/api/data/map/BaseMapDataProvider.java rename to common/src/api/java/dev/dhyces/trimmed/api/data/map/BaseMapDataProvider.java index 567d7b17..78dc4590 100644 --- a/common/src/main/java/dev/dhyces/trimmed/api/data/map/BaseMapDataProvider.java +++ b/common/src/api/java/dev/dhyces/trimmed/api/data/map/BaseMapDataProvider.java @@ -1,6 +1,5 @@ package dev.dhyces.trimmed.api.data.map; -import dev.dhyces.trimmed.api.KeyResolver; import dev.dhyces.trimmed.api.maps.MapKey; import it.unimi.dsi.fastutil.objects.Reference2ObjectOpenHashMap; import net.minecraft.data.DataProvider; diff --git a/common/src/main/java/dev/dhyces/trimmed/api/data/map/MapAppendElement.java b/common/src/api/java/dev/dhyces/trimmed/api/data/map/MapAppendElement.java similarity index 100% rename from common/src/main/java/dev/dhyces/trimmed/api/data/map/MapAppendElement.java rename to common/src/api/java/dev/dhyces/trimmed/api/data/map/MapAppendElement.java diff --git a/common/src/main/java/dev/dhyces/trimmed/api/data/map/MapBuilder.java b/common/src/api/java/dev/dhyces/trimmed/api/data/map/MapBuilder.java similarity index 100% rename from common/src/main/java/dev/dhyces/trimmed/api/data/map/MapBuilder.java rename to common/src/api/java/dev/dhyces/trimmed/api/data/map/MapBuilder.java diff --git a/common/src/main/java/dev/dhyces/trimmed/api/data/map/MapFile.java b/common/src/api/java/dev/dhyces/trimmed/api/data/map/MapFile.java similarity index 95% rename from common/src/main/java/dev/dhyces/trimmed/api/data/map/MapFile.java rename to common/src/api/java/dev/dhyces/trimmed/api/data/map/MapFile.java index 0f404790..40d28047 100644 --- a/common/src/main/java/dev/dhyces/trimmed/api/data/map/MapFile.java +++ b/common/src/api/java/dev/dhyces/trimmed/api/data/map/MapFile.java @@ -2,7 +2,6 @@ import com.mojang.serialization.Codec; import com.mojang.serialization.codecs.RecordCodecBuilder; -import dev.dhyces.trimmed.api.util.CodecUtil; import net.minecraft.resources.ResourceLocation; import java.util.List; diff --git a/common/src/main/java/dev/dhyces/trimmed/api/data/map/MapValue.java b/common/src/api/java/dev/dhyces/trimmed/api/data/map/MapValue.java similarity index 100% rename from common/src/main/java/dev/dhyces/trimmed/api/data/map/MapValue.java rename to common/src/api/java/dev/dhyces/trimmed/api/data/map/MapValue.java diff --git a/common/src/main/java/dev/dhyces/trimmed/api/data/map/appenders/MapAppender.java b/common/src/api/java/dev/dhyces/trimmed/api/data/map/appenders/MapAppender.java similarity index 100% rename from common/src/main/java/dev/dhyces/trimmed/api/data/map/appenders/MapAppender.java rename to common/src/api/java/dev/dhyces/trimmed/api/data/map/appenders/MapAppender.java diff --git a/common/src/main/java/dev/dhyces/trimmed/api/data/map/appenders/MappedMapAppender.java b/common/src/api/java/dev/dhyces/trimmed/api/data/map/appenders/MappedMapAppender.java similarity index 100% rename from common/src/main/java/dev/dhyces/trimmed/api/data/map/appenders/MappedMapAppender.java rename to common/src/api/java/dev/dhyces/trimmed/api/data/map/appenders/MappedMapAppender.java diff --git a/common/src/main/java/dev/dhyces/trimmed/api/data/map/appenders/RegistryMapAppender.java b/common/src/api/java/dev/dhyces/trimmed/api/data/map/appenders/RegistryMapAppender.java similarity index 100% rename from common/src/main/java/dev/dhyces/trimmed/api/data/map/appenders/RegistryMapAppender.java rename to common/src/api/java/dev/dhyces/trimmed/api/data/map/appenders/RegistryMapAppender.java diff --git a/common/src/main/java/dev/dhyces/trimmed/api/data/model/override/ItemOverrideFile.java b/common/src/api/java/dev/dhyces/trimmed/api/data/model/override/ItemOverrideFile.java similarity index 100% rename from common/src/main/java/dev/dhyces/trimmed/api/data/model/override/ItemOverrideFile.java rename to common/src/api/java/dev/dhyces/trimmed/api/data/model/override/ItemOverrideFile.java diff --git a/common/src/main/java/dev/dhyces/trimmed/api/data/model/source/BaseModelSourceDataProvider.java b/common/src/api/java/dev/dhyces/trimmed/api/data/model/source/BaseModelSourceDataProvider.java similarity index 100% rename from common/src/main/java/dev/dhyces/trimmed/api/data/model/source/BaseModelSourceDataProvider.java rename to common/src/api/java/dev/dhyces/trimmed/api/data/model/source/BaseModelSourceDataProvider.java diff --git a/common/src/main/java/dev/dhyces/trimmed/impl/client/maps/KeyResolvers.java b/common/src/api/java/dev/dhyces/trimmed/api/maps/KeyResolvers.java similarity index 99% rename from common/src/main/java/dev/dhyces/trimmed/impl/client/maps/KeyResolvers.java rename to common/src/api/java/dev/dhyces/trimmed/api/maps/KeyResolvers.java index b0df272f..877c88bd 100644 --- a/common/src/main/java/dev/dhyces/trimmed/impl/client/maps/KeyResolvers.java +++ b/common/src/api/java/dev/dhyces/trimmed/api/maps/KeyResolvers.java @@ -1,4 +1,4 @@ -package dev.dhyces.trimmed.impl.client.maps; +package dev.dhyces.trimmed.api.maps; import com.google.common.collect.BiMap; import com.google.common.collect.HashBiMap; diff --git a/common/src/main/java/dev/dhyces/trimmed/api/maps/MapHolder.java b/common/src/api/java/dev/dhyces/trimmed/api/maps/MapHolder.java similarity index 100% rename from common/src/main/java/dev/dhyces/trimmed/api/maps/MapHolder.java rename to common/src/api/java/dev/dhyces/trimmed/api/maps/MapHolder.java diff --git a/common/src/main/java/dev/dhyces/trimmed/api/maps/MapKey.java b/common/src/api/java/dev/dhyces/trimmed/api/maps/MapKey.java similarity index 96% rename from common/src/main/java/dev/dhyces/trimmed/api/maps/MapKey.java rename to common/src/api/java/dev/dhyces/trimmed/api/maps/MapKey.java index 681d7fdc..f81e12d3 100644 --- a/common/src/main/java/dev/dhyces/trimmed/api/maps/MapKey.java +++ b/common/src/api/java/dev/dhyces/trimmed/api/maps/MapKey.java @@ -6,7 +6,7 @@ import com.mojang.serialization.Codec; import com.mojang.serialization.MapCodec; import com.mojang.serialization.codecs.RecordCodecBuilder; -import dev.dhyces.trimmed.Trimmed; +import dev.dhyces.trimmed.api.TrimmedReference; import dev.dhyces.trimmed.api.client.map.ClientMapTypes; import dev.dhyces.trimmed.api.maps.types.MapType; import dev.dhyces.trimmed.api.util.CodecUtil; @@ -56,7 +56,7 @@ public static MapKey of(MapType mapType, ResourceLocation id) ResourceLocation baseKey; ResourceLocation subKey; if (secondSlashIndex == -1) { - baseKey = Trimmed.id(id.getPath().substring(0, firstSlashIndex)); + baseKey = TrimmedReference.id(id.getPath().substring(0, firstSlashIndex)); subKey = id.withPath(s -> s.substring(firstSlashIndex+1)); } else { baseKey = ResourceLocation.fromNamespaceAndPath(id.getPath().substring(0, firstSlashIndex), id.getPath().substring(firstSlashIndex+1, secondSlashIndex)); diff --git a/common/src/main/java/dev/dhyces/trimmed/api/maps/types/AdvancedMapType.java b/common/src/api/java/dev/dhyces/trimmed/api/maps/types/AdvancedMapType.java similarity index 98% rename from common/src/main/java/dev/dhyces/trimmed/api/maps/types/AdvancedMapType.java rename to common/src/api/java/dev/dhyces/trimmed/api/maps/types/AdvancedMapType.java index 8c3fc021..0a6c7992 100644 --- a/common/src/main/java/dev/dhyces/trimmed/api/maps/types/AdvancedMapType.java +++ b/common/src/api/java/dev/dhyces/trimmed/api/maps/types/AdvancedMapType.java @@ -2,7 +2,7 @@ import com.mojang.serialization.Codec; import dev.dhyces.trimmed.api.KeyResolver; -import dev.dhyces.trimmed.impl.client.maps.KeyResolvers; +import dev.dhyces.trimmed.api.maps.KeyResolvers; import net.minecraft.network.RegistryFriendlyByteBuf; import net.minecraft.network.codec.StreamCodec; import net.minecraft.resources.ResourceLocation; diff --git a/common/src/main/java/dev/dhyces/trimmed/api/maps/types/MapType.java b/common/src/api/java/dev/dhyces/trimmed/api/maps/types/MapType.java similarity index 100% rename from common/src/main/java/dev/dhyces/trimmed/api/maps/types/MapType.java rename to common/src/api/java/dev/dhyces/trimmed/api/maps/types/MapType.java diff --git a/common/src/main/java/dev/dhyces/trimmed/api/maps/types/SimpleMapType.java b/common/src/api/java/dev/dhyces/trimmed/api/maps/types/SimpleMapType.java similarity index 97% rename from common/src/main/java/dev/dhyces/trimmed/api/maps/types/SimpleMapType.java rename to common/src/api/java/dev/dhyces/trimmed/api/maps/types/SimpleMapType.java index 45676530..b1e3ddc3 100644 --- a/common/src/main/java/dev/dhyces/trimmed/api/maps/types/SimpleMapType.java +++ b/common/src/api/java/dev/dhyces/trimmed/api/maps/types/SimpleMapType.java @@ -2,7 +2,7 @@ import com.mojang.serialization.Codec; import dev.dhyces.trimmed.api.KeyResolver; -import dev.dhyces.trimmed.impl.client.maps.KeyResolvers; +import dev.dhyces.trimmed.api.maps.KeyResolvers; import net.minecraft.network.RegistryFriendlyByteBuf; import net.minecraft.network.codec.StreamCodec; import net.minecraft.resources.ResourceLocation; diff --git a/common/src/api/java/dev/dhyces/trimmed/api/services/ApiServices.java b/common/src/api/java/dev/dhyces/trimmed/api/services/ApiServices.java new file mode 100644 index 00000000..308e405c --- /dev/null +++ b/common/src/api/java/dev/dhyces/trimmed/api/services/ApiServices.java @@ -0,0 +1,13 @@ +package dev.dhyces.trimmed.api.services; + +import java.util.ServiceLoader; + +public final class ApiServices { + private ApiServices() {} + + public static final ModelHelper MODEL_HELPER = loadService(ModelHelper.class); + + static T loadService(Class t) { + return ServiceLoader.load(t).findFirst().orElseThrow(() -> new RuntimeException("Must have mod dependency enabled. Api cannot work without an implementation.")); + } +} diff --git a/common/src/api/java/dev/dhyces/trimmed/api/services/ModelHelper.java b/common/src/api/java/dev/dhyces/trimmed/api/services/ModelHelper.java new file mode 100644 index 00000000..c00fd00a --- /dev/null +++ b/common/src/api/java/dev/dhyces/trimmed/api/services/ModelHelper.java @@ -0,0 +1,8 @@ +package dev.dhyces.trimmed.api.services; + +import net.minecraft.client.resources.model.BakedModel; +import net.minecraft.resources.ResourceLocation; + +public interface ModelHelper { + BakedModel getModel(ResourceLocation resourceId); +} diff --git a/common/src/main/java/dev/dhyces/trimmed/api/util/CodecUtil.java b/common/src/api/java/dev/dhyces/trimmed/api/util/CodecUtil.java similarity index 68% rename from common/src/main/java/dev/dhyces/trimmed/api/util/CodecUtil.java rename to common/src/api/java/dev/dhyces/trimmed/api/util/CodecUtil.java index 125f24f5..00d9cddf 100644 --- a/common/src/main/java/dev/dhyces/trimmed/api/util/CodecUtil.java +++ b/common/src/api/java/dev/dhyces/trimmed/api/util/CodecUtil.java @@ -1,18 +1,15 @@ package dev.dhyces.trimmed.api.util; -import com.mojang.serialization.*; -import dev.dhyces.trimmed.Trimmed; +import com.mojang.serialization.Codec; +import com.mojang.serialization.DataResult; +import dev.dhyces.trimmed.api.TrimmedReference; import dev.dhyces.trimmed.api.codec.SetCodec; -import net.minecraft.ResourceLocationException; import net.minecraft.client.resources.model.ModelResourceLocation; import net.minecraft.resources.ResourceLocation; -import org.jetbrains.annotations.ApiStatus; - -import java.util.function.BiPredicate; public final class CodecUtil { public static final Codec TRIMMED_IDENTIFIER = Codec.STRING.xmap( - s -> ResourceLocation.tryParse(s.contains(":") ? s : Trimmed.MODID + ":" + s), + s -> ResourceLocation.tryParse(s.contains(":") ? s : TrimmedReference.MODID + ":" + s), ResourceLocation::toString ); @@ -32,15 +29,6 @@ public final class CodecUtil { modelId -> modelId.getVariant().equals("inventory") ? modelId.id().getNamespace() + ":" + modelId.id().getPath() : modelId.toString() ); - public static LenientUnboundedMapCodec lenientMapCodec(Codec keyCodec, Codec valueCodec, BiPredicate, V> skipFunction) { - return new LenientUnboundedMapCodec<>(keyCodec, valueCodec) { - @Override - public boolean shouldSkipKey(DataResult keyParse, V value) { - return skipFunction.test(keyParse, value); - } - }; - } - public static SetCodec setOf(Codec elementCodec) { return new SetCodec<>(elementCodec); } diff --git a/common/src/main/java/dev/dhyces/trimmed/api/util/LenientUnboundedMapCodec.java b/common/src/api/java/dev/dhyces/trimmed/api/util/LenientUnboundedMapCodec.java similarity index 100% rename from common/src/main/java/dev/dhyces/trimmed/api/util/LenientUnboundedMapCodec.java rename to common/src/api/java/dev/dhyces/trimmed/api/util/LenientUnboundedMapCodec.java diff --git a/common/src/main/java/dev/dhyces/trimmed/api/util/Utils.java b/common/src/api/java/dev/dhyces/trimmed/api/util/Utils.java similarity index 92% rename from common/src/main/java/dev/dhyces/trimmed/api/util/Utils.java rename to common/src/api/java/dev/dhyces/trimmed/api/util/Utils.java index 54185942..919aded6 100644 --- a/common/src/main/java/dev/dhyces/trimmed/api/util/Utils.java +++ b/common/src/api/java/dev/dhyces/trimmed/api/util/Utils.java @@ -1,7 +1,5 @@ package dev.dhyces.trimmed.api.util; -import com.google.gson.JsonElement; -import com.mojang.serialization.DynamicOps; import net.minecraft.core.Registry; import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceLocation; diff --git a/common/src/main/java/dev/dhyces/trimmed/Trimmed.java b/common/src/main/java/dev/dhyces/trimmed/Trimmed.java index 81fa599a..a43bf67e 100644 --- a/common/src/main/java/dev/dhyces/trimmed/Trimmed.java +++ b/common/src/main/java/dev/dhyces/trimmed/Trimmed.java @@ -1,16 +1,10 @@ package dev.dhyces.trimmed; import dev.dhyces.trimmed.modhelper.services.Services; -import net.minecraft.resources.ResourceLocation; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class Trimmed { - public static final String MODID = "trimmed"; - public static ResourceLocation id(String id) { - return ResourceLocation.fromNamespaceAndPath(MODID, id); - } - public static final Logger LOGGER = LoggerFactory.getLogger("Trimmed"); public static void init() {} diff --git a/common/src/main/java/dev/dhyces/trimmed/TrimmedClient.java b/common/src/main/java/dev/dhyces/trimmed/TrimmedClient.java index bdd2147f..b48ef390 100644 --- a/common/src/main/java/dev/dhyces/trimmed/TrimmedClient.java +++ b/common/src/main/java/dev/dhyces/trimmed/TrimmedClient.java @@ -1,5 +1,6 @@ package dev.dhyces.trimmed; +import dev.dhyces.trimmed.api.TrimmedReference; import dev.dhyces.trimmed.api.client.TrimmedClientApiEntrypoint; import dev.dhyces.trimmed.api.client.ClientKeyResolvers; import dev.dhyces.trimmed.api.client.map.ClientMapKeys; @@ -8,7 +9,7 @@ import dev.dhyces.trimmed.impl.client.GameRegistryHolder; import dev.dhyces.trimmed.impl.client.TrimmedClientRegistrationImpl; import dev.dhyces.trimmed.impl.client.atlas.TrimmedSpriteSourceTypes; -import dev.dhyces.trimmed.impl.client.maps.KeyResolvers; +import dev.dhyces.trimmed.api.maps.KeyResolvers; import dev.dhyces.trimmed.impl.client.models.override.ItemOverrideReloadListener; import dev.dhyces.trimmed.impl.client.models.override.provider.ItemOverrideProviderRegistry; import dev.dhyces.trimmed.impl.client.models.source.ModelSourceLoader; @@ -45,8 +46,8 @@ public static GameRegistryHolder getStaticHolder() { static Set additionalGeneratedModels; - public static void init() { - KeyResolvers.register(Trimmed.id("texture"), ClientKeyResolvers.TEXTURE); + static void init() { + KeyResolvers.register(TrimmedReference.id("texture"), ClientKeyResolvers.TEXTURE); ClientMapTypes.init(); ClientMapManager.registerBaseKey(ClientMapKeys.MATERIAL_SUFFIXES); ClientMapManager.registerBaseKey(ClientMapKeys.TRIM_MATERIAL_OVERRIDES); @@ -55,18 +56,18 @@ public static void init() { ItemOverrideProviderRegistry.init(); } - public static void initApi() { + static void initApi() { TrimmedClientApiEntrypoint.TrimmedClientRegistration registration = new TrimmedClientRegistrationImpl(); for (ModApiConsumer consumer : Services.CLIENT_HELPER.getClientApiConsumers()) { consumer.entrypoint().registration(registration); } } - public static void registerSpriteSourceTypes(BiConsumer registrar) { + static void registerSpriteSourceTypes(BiConsumer registrar) { TrimmedSpriteSourceTypes.bootstrap(registrar); } - public static void registerClientReloadListener(BiConsumer eventConsumer) { + static void registerClientReloadListener(BiConsumer eventConsumer) { eventConsumer.accept("item_model_overrides", new ItemOverrideReloadListener()); } @@ -75,7 +76,7 @@ public static void injectListenersAtBeginning() { ((ReloadableResourceManagerAccessor)Minecraft.getInstance().getResourceManager()).getListeners().add(0, new ClientTagManager()); } - public static void onTagsSynced(HolderLookup.Provider lookupProvider, boolean shouldUpdateStatic) { + static void onTagsSynced(HolderLookup.Provider lookupProvider, boolean shouldUpdateStatic) { staticAccess = new GameRegistryHolder(lookupProvider, true); if (shouldUpdateStatic) { //TODO: Disabled the toast for now. Use toast later when a datapack registry queued // if (Minecraft.getInstance().player != null) { @@ -86,7 +87,7 @@ public static void onTagsSynced(HolderLookup.Provider lookupProvider, boolean sh } } - public static void resetSyncedStatus() { + static void resetSyncedStatus() { staticAccess = null; } diff --git a/common/src/main/java/dev/dhyces/trimmed/api/client/override/provider/ItemOverrideProviderType.java b/common/src/main/java/dev/dhyces/trimmed/api/client/override/provider/ItemOverrideProviderType.java deleted file mode 100644 index c608146d..00000000 --- a/common/src/main/java/dev/dhyces/trimmed/api/client/override/provider/ItemOverrideProviderType.java +++ /dev/null @@ -1,22 +0,0 @@ -package dev.dhyces.trimmed.api.client.override.provider; - -import com.mojang.serialization.MapCodec; -import dev.dhyces.trimmed.Trimmed; -import dev.dhyces.trimmed.api.client.override.provider.providers.AnyTrimItemOverrideProvider; -import dev.dhyces.trimmed.api.client.override.provider.providers.ComponentItemOverrideProvider; -import dev.dhyces.trimmed.impl.client.models.override.provider.ItemOverrideProviderRegistry; - -public interface ItemOverrideProviderType { - ItemOverrideProviderType COMPONENT = register("component", ComponentItemOverrideProvider.CODEC); - ItemOverrideProviderType ANY_TRIM = register("any_trim", AnyTrimItemOverrideProvider.CODEC); - - MapCodec getCodec(); - - static void bootstrap() {} - - private static ItemOverrideProviderType register(String id, MapCodec codec) { - ItemOverrideProviderType type = () -> codec; - ItemOverrideProviderRegistry.register(Trimmed.id(id), type); - return type; - } -} diff --git a/common/src/main/java/dev/dhyces/trimmed/impl/client/TrimmedClientApiImpl.java b/common/src/main/java/dev/dhyces/trimmed/impl/client/TrimmedClientApiImpl.java index c0177da2..2b258735 100644 --- a/common/src/main/java/dev/dhyces/trimmed/impl/client/TrimmedClientApiImpl.java +++ b/common/src/main/java/dev/dhyces/trimmed/impl/client/TrimmedClientApiImpl.java @@ -2,7 +2,7 @@ import dev.dhyces.trimmed.api.KeyResolver; import dev.dhyces.trimmed.api.client.TrimmedClientApi; -import dev.dhyces.trimmed.impl.client.maps.KeyResolvers; +import dev.dhyces.trimmed.api.maps.KeyResolvers; import net.minecraft.core.Registry; import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceLocation; diff --git a/common/src/main/java/dev/dhyces/trimmed/impl/client/TrimmedClientMapApiImpl.java b/common/src/main/java/dev/dhyces/trimmed/impl/client/TrimmedClientMapApiImpl.java index a4e7f01a..52711c42 100644 --- a/common/src/main/java/dev/dhyces/trimmed/impl/client/TrimmedClientMapApiImpl.java +++ b/common/src/main/java/dev/dhyces/trimmed/impl/client/TrimmedClientMapApiImpl.java @@ -8,7 +8,7 @@ import dev.dhyces.trimmed.api.maps.types.AdvancedMapType; import dev.dhyces.trimmed.api.maps.types.MapType; import dev.dhyces.trimmed.api.maps.MapKey; -import dev.dhyces.trimmed.impl.client.maps.KeyResolvers; +import dev.dhyces.trimmed.api.maps.KeyResolvers; import dev.dhyces.trimmed.impl.client.maps.manager.ClientMapManager; import net.minecraft.core.Registry; import net.minecraft.resources.ResourceKey; diff --git a/common/src/main/java/dev/dhyces/trimmed/impl/client/TrimmedClientRegistrationImpl.java b/common/src/main/java/dev/dhyces/trimmed/impl/client/TrimmedClientRegistrationImpl.java index c4857915..69550bef 100644 --- a/common/src/main/java/dev/dhyces/trimmed/impl/client/TrimmedClientRegistrationImpl.java +++ b/common/src/main/java/dev/dhyces/trimmed/impl/client/TrimmedClientRegistrationImpl.java @@ -1,11 +1,11 @@ package dev.dhyces.trimmed.impl.client; +import com.mojang.serialization.MapCodec; import dev.dhyces.trimmed.api.client.TrimmedClientApiEntrypoint; import dev.dhyces.trimmed.api.client.override.provider.ItemOverrideProvider; -import dev.dhyces.trimmed.api.client.override.provider.ItemOverrideProviderType; import dev.dhyces.trimmed.api.maps.MapKey; import dev.dhyces.trimmed.api.KeyResolver; -import dev.dhyces.trimmed.impl.client.maps.KeyResolvers; +import dev.dhyces.trimmed.api.maps.KeyResolvers; import dev.dhyces.trimmed.impl.client.maps.manager.ClientMapManager; import dev.dhyces.trimmed.impl.client.models.override.provider.ItemOverrideProviderRegistry; import net.minecraft.resources.ResourceLocation; @@ -14,7 +14,7 @@ public final class TrimmedClientRegistrationImpl implements TrimmedClientApiEntrypoint.TrimmedClientRegistration { @Override - public ItemOverrideProviderType registerItemOverrideType(ResourceLocation id, ItemOverrideProviderType providerType) { + public MapCodec registerItemOverrideType(ResourceLocation id, MapCodec providerType) { ItemOverrideProviderRegistry.register(id, providerType); return providerType; } diff --git a/common/src/main/java/dev/dhyces/trimmed/impl/client/atlas/TrimmedSpriteSourceTypes.java b/common/src/main/java/dev/dhyces/trimmed/impl/client/atlas/TrimmedSpriteSourceTypes.java index 687d2591..e3f77654 100644 --- a/common/src/main/java/dev/dhyces/trimmed/impl/client/atlas/TrimmedSpriteSourceTypes.java +++ b/common/src/main/java/dev/dhyces/trimmed/impl/client/atlas/TrimmedSpriteSourceTypes.java @@ -1,6 +1,6 @@ package dev.dhyces.trimmed.impl.client.atlas; -import dev.dhyces.trimmed.Trimmed; +import dev.dhyces.trimmed.api.TrimmedReference; import net.minecraft.client.renderer.texture.atlas.SpriteSourceType; import net.minecraft.resources.ResourceLocation; @@ -10,6 +10,6 @@ public class TrimmedSpriteSourceTypes { public static final SpriteSourceType OPEN_PALETTED_PERMUTATIONS = new SpriteSourceType(OpenPalettedPermutations.CODEC); public static void bootstrap(BiConsumer registrar) { - registrar.accept(Trimmed.id("open_paletted_permutations"), OPEN_PALETTED_PERMUTATIONS); + registrar.accept(TrimmedReference.id("open_paletted_permutations"), OPEN_PALETTED_PERMUTATIONS); } } diff --git a/common/src/main/java/dev/dhyces/trimmed/impl/client/maps/manager/ClientMapManager.java b/common/src/main/java/dev/dhyces/trimmed/impl/client/maps/manager/ClientMapManager.java index da388a88..76ead0ef 100644 --- a/common/src/main/java/dev/dhyces/trimmed/impl/client/maps/manager/ClientMapManager.java +++ b/common/src/main/java/dev/dhyces/trimmed/impl/client/maps/manager/ClientMapManager.java @@ -7,23 +7,18 @@ import dev.dhyces.trimmed.api.util.Utils; import dev.dhyces.trimmed.api.maps.MapKey; import dev.dhyces.trimmed.impl.client.GameRegistryHolder; -import dev.dhyces.trimmed.impl.client.maps.KeyResolvers; -import it.unimi.dsi.fastutil.objects.ObjectArrayList; +import dev.dhyces.trimmed.api.maps.KeyResolvers; import it.unimi.dsi.fastutil.objects.Reference2ObjectOpenHashMap; import net.minecraft.client.Minecraft; -import net.minecraft.core.RegistryAccess; import net.minecraft.resources.FileToIdConverter; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.packs.resources.PreparableReloadListener; import net.minecraft.server.packs.resources.ResourceManager; import net.minecraft.util.Unit; -import net.minecraft.util.profiling.ProfilerFiller; -import java.util.List; import java.util.Map; import java.util.concurrent.CompletableFuture; import java.util.concurrent.Executor; -import java.util.function.Consumer; // Maps have types, which determine key and value. Then there can be many of those maps which can be accessed via key. // Getting a map from a key before maps have been loaded should return the MapAccess which is then later filled when diff --git a/common/src/main/java/dev/dhyces/trimmed/impl/client/maps/manager/MapHandler.java b/common/src/main/java/dev/dhyces/trimmed/impl/client/maps/manager/MapHandler.java index d059ee59..d8efddb2 100644 --- a/common/src/main/java/dev/dhyces/trimmed/impl/client/maps/manager/MapHandler.java +++ b/common/src/main/java/dev/dhyces/trimmed/impl/client/maps/manager/MapHandler.java @@ -3,7 +3,6 @@ import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.JsonParseException; -import com.mojang.datafixers.util.Pair; import com.mojang.serialization.DynamicOps; import dev.dhyces.trimmed.Trimmed; import dev.dhyces.trimmed.api.data.map.MapAppendElement; @@ -28,7 +27,6 @@ import java.io.IOException; import java.util.*; import java.util.function.Consumer; -import java.util.stream.Collectors; public final class MapHandler { private final MapKey baseKey; diff --git a/common/src/main/java/dev/dhyces/trimmed/impl/client/models/override/ItemOverrideReloadListener.java b/common/src/main/java/dev/dhyces/trimmed/impl/client/models/override/ItemOverrideReloadListener.java index 1d6e3839..24fe18ce 100644 --- a/common/src/main/java/dev/dhyces/trimmed/impl/client/models/override/ItemOverrideReloadListener.java +++ b/common/src/main/java/dev/dhyces/trimmed/impl/client/models/override/ItemOverrideReloadListener.java @@ -3,6 +3,7 @@ import com.google.gson.JsonObject; import com.google.gson.JsonParseException; import com.mojang.serialization.JsonOps; +import dev.dhyces.trimmed.api.TrimmedReference; import dev.dhyces.trimmed.api.data.model.override.ItemOverrideFile; import dev.dhyces.trimmed.modhelper.services.Services; import dev.dhyces.trimmed.api.client.override.provider.ItemOverrideProvider; @@ -24,8 +25,7 @@ public class ItemOverrideReloadListener extends SimplePreparableReloadListener>> { private static final Logger LOGGER = LoggerFactory.getLogger("Trimmed/Item Model Overrides"); - public static final String OVERRIDES_DIRECTORY = "trimmed/item_model_overrides"; - private static final FileToIdConverter OVERRIDES_FINDER = FileToIdConverter.json(OVERRIDES_DIRECTORY); + private static final FileToIdConverter OVERRIDES_FINDER = FileToIdConverter.json(TrimmedReference.OVERRIDES_DIRECTORY); @Override protected Map> prepare(ResourceManager resourceManager, ProfilerFiller profiler) { diff --git a/common/src/main/java/dev/dhyces/trimmed/impl/client/models/override/provider/ItemOverrideProviderRegistry.java b/common/src/main/java/dev/dhyces/trimmed/impl/client/models/override/provider/ItemOverrideProviderRegistry.java index cbee1903..257d7c59 100644 --- a/common/src/main/java/dev/dhyces/trimmed/impl/client/models/override/provider/ItemOverrideProviderRegistry.java +++ b/common/src/main/java/dev/dhyces/trimmed/impl/client/models/override/provider/ItemOverrideProviderRegistry.java @@ -4,33 +4,34 @@ import com.google.common.collect.HashBiMap; import com.mojang.serialization.Codec; import com.mojang.serialization.DataResult; -import dev.dhyces.trimmed.api.client.override.provider.ItemOverrideProviderType; +import com.mojang.serialization.MapCodec; +import dev.dhyces.trimmed.api.client.override.provider.ItemOverrideProvider; import dev.dhyces.trimmed.api.util.CodecUtil; import net.minecraft.resources.ResourceLocation; public class ItemOverrideProviderRegistry { - private static final BiMap> PROVIDER_TYPE_MAP = HashBiMap.create(); - public static final Codec> CODEC = CodecUtil.TRIMMED_IDENTIFIER.flatXmap( + private static final BiMap> PROVIDER_TYPE_MAP = HashBiMap.create(); + public static final Codec> CODEC = CodecUtil.TRIMMED_IDENTIFIER.flatXmap( id -> { if (!PROVIDER_TYPE_MAP.containsKey(id)) { return DataResult.error(() -> "Item override provider type %s does not exist!".formatted(id)); } return DataResult.success(PROVIDER_TYPE_MAP.get(id)); }, - type -> { - if (!PROVIDER_TYPE_MAP.inverse().containsKey(type)) { - return DataResult.error(() -> "Item override provider type is not registered! " + type.getCodec()); + codec -> { + if (!PROVIDER_TYPE_MAP.inverse().containsKey(codec)) { + return DataResult.error(() -> "Item override provider type is not registered! " + codec); } - return DataResult.success(PROVIDER_TYPE_MAP.inverse().get(type)); + return DataResult.success(PROVIDER_TYPE_MAP.inverse().get(codec)); } ); public static void init() { - ItemOverrideProviderType.bootstrap(); + ItemOverrideProviders.bootstrap(); } - public static void register(ResourceLocation id, ItemOverrideProviderType providerType) { - if (PROVIDER_TYPE_MAP.putIfAbsent(id, providerType) != null) { + public static void register(ResourceLocation id, MapCodec codec) { + if (PROVIDER_TYPE_MAP.putIfAbsent(id, codec) != null) { throw new IllegalArgumentException("ItemOverrideProviderType already registered with id \"" + id + "\""); } } diff --git a/common/src/main/java/dev/dhyces/trimmed/impl/client/models/override/provider/ItemOverrideProviders.java b/common/src/main/java/dev/dhyces/trimmed/impl/client/models/override/provider/ItemOverrideProviders.java new file mode 100644 index 00000000..a81939a6 --- /dev/null +++ b/common/src/main/java/dev/dhyces/trimmed/impl/client/models/override/provider/ItemOverrideProviders.java @@ -0,0 +1,12 @@ +package dev.dhyces.trimmed.impl.client.models.override.provider; + +import dev.dhyces.trimmed.api.TrimmedReference; +import dev.dhyces.trimmed.api.client.override.provider.providers.AnyTrimItemOverrideProvider; +import dev.dhyces.trimmed.api.client.override.provider.providers.ComponentItemOverrideProvider; + +public interface ItemOverrideProviders { + static void bootstrap() { + ItemOverrideProviderRegistry.register(TrimmedReference.id("component"), ComponentItemOverrideProvider.CODEC); + ItemOverrideProviderRegistry.register(TrimmedReference.id("any_trim"), AnyTrimItemOverrideProvider.CODEC); + } +} diff --git a/common/src/main/java/dev/dhyces/trimmed/impl/client/models/source/ModelSourceRegistry.java b/common/src/main/java/dev/dhyces/trimmed/impl/client/models/source/ModelSourceRegistry.java index 8c110737..207a9adb 100644 --- a/common/src/main/java/dev/dhyces/trimmed/impl/client/models/source/ModelSourceRegistry.java +++ b/common/src/main/java/dev/dhyces/trimmed/impl/client/models/source/ModelSourceRegistry.java @@ -4,13 +4,10 @@ import com.google.common.collect.HashBiMap; import com.mojang.serialization.Codec; import com.mojang.serialization.MapCodec; -import dev.dhyces.trimmed.Trimmed; +import dev.dhyces.trimmed.api.TrimmedReference; import dev.dhyces.trimmed.api.util.CodecUtil; -import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.resources.ResourceLocation; -import java.util.Map; - public class ModelSourceRegistry { private static final BiMap> REGISTRY = HashBiMap.create(); public static final Codec CODEC = CodecUtil.TRIMMED_IDENTIFIER.dispatch(modelSource -> REGISTRY.inverse().get(modelSource.codec()), REGISTRY::get); @@ -22,6 +19,6 @@ public static void register(ResourceLocation id, MapCodec } public static void init() { - register(Trimmed.id("trims"), TrimModelSource.CODEC); + register(TrimmedReference.id("trims"), TrimModelSource.CODEC); } } diff --git a/common/src/main/java/dev/dhyces/trimmed/impl/client/models/source/NamedModel.java b/common/src/main/java/dev/dhyces/trimmed/impl/client/models/source/NamedModel.java index 5dc6dc85..4031119d 100644 --- a/common/src/main/java/dev/dhyces/trimmed/impl/client/models/source/NamedModel.java +++ b/common/src/main/java/dev/dhyces/trimmed/impl/client/models/source/NamedModel.java @@ -1,12 +1,12 @@ package dev.dhyces.trimmed.impl.client.models.source; -import net.minecraft.client.renderer.block.model.BlockModel; +import net.minecraft.client.resources.model.UnbakedModel; import net.minecraft.resources.ResourceLocation; import java.util.function.Supplier; -public record NamedModel(ResourceLocation id, Supplier model) { - public static NamedModel item(ResourceLocation fileId, Supplier model) { +public record NamedModel(ResourceLocation id, Supplier model) { + public static NamedModel item(ResourceLocation fileId, Supplier model) { return new NamedModel(fileId, model); } } diff --git a/common/src/main/java/dev/dhyces/trimmed/impl/client/models/template/ModelTemplateManager.java b/common/src/main/java/dev/dhyces/trimmed/impl/client/models/template/ModelTemplateManager.java index 5c13bf84..e9208123 100644 --- a/common/src/main/java/dev/dhyces/trimmed/impl/client/models/template/ModelTemplateManager.java +++ b/common/src/main/java/dev/dhyces/trimmed/impl/client/models/template/ModelTemplateManager.java @@ -2,6 +2,7 @@ import com.google.gson.JsonObject; import dev.dhyces.trimmed.Trimmed; +import dev.dhyces.trimmed.api.client.models.template.StringTemplate; import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; import net.minecraft.resources.FileToIdConverter; import net.minecraft.resources.ResourceLocation; diff --git a/common/src/main/java/dev/dhyces/trimmed/impl/client/services/ModelHelperImpl.java b/common/src/main/java/dev/dhyces/trimmed/impl/client/services/ModelHelperImpl.java new file mode 100644 index 00000000..0b518910 --- /dev/null +++ b/common/src/main/java/dev/dhyces/trimmed/impl/client/services/ModelHelperImpl.java @@ -0,0 +1,13 @@ +package dev.dhyces.trimmed.impl.client.services; + +import dev.dhyces.trimmed.api.services.ModelHelper; +import dev.dhyces.trimmed.modhelper.services.Services; +import net.minecraft.client.resources.model.BakedModel; +import net.minecraft.resources.ResourceLocation; + +public class ModelHelperImpl implements ModelHelper { + @Override + public BakedModel getModel(ResourceLocation resourceId) { + return Services.CLIENT_HELPER.getModel(resourceId); + } +} diff --git a/common/src/main/java/dev/dhyces/trimmed/impl/client/tags/manager/ClientTagManager.java b/common/src/main/java/dev/dhyces/trimmed/impl/client/tags/manager/ClientTagManager.java index 6d627204..e1f4b1b9 100644 --- a/common/src/main/java/dev/dhyces/trimmed/impl/client/tags/manager/ClientTagManager.java +++ b/common/src/main/java/dev/dhyces/trimmed/impl/client/tags/manager/ClientTagManager.java @@ -1,6 +1,5 @@ package dev.dhyces.trimmed.impl.client.tags.manager; -import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; import com.google.gson.JsonElement; @@ -14,14 +13,13 @@ import dev.dhyces.trimmed.api.data.client.tag.ClientTagEntry; import dev.dhyces.trimmed.api.data.client.tag.ClientTagFile; import dev.dhyces.trimmed.impl.client.GameRegistryHolder; -import dev.dhyces.trimmed.impl.client.maps.KeyResolvers; +import dev.dhyces.trimmed.api.maps.KeyResolvers; import dev.dhyces.trimmed.api.client.tag.ClientTagKey; import dev.dhyces.trimmed.modhelper.services.Services; import dev.dhyces.trimmed.Trimmed; import dev.dhyces.trimmed.api.util.Utils; import it.unimi.dsi.fastutil.objects.*; import net.minecraft.client.Minecraft; -import net.minecraft.core.RegistryAccess; import net.minecraft.resources.FileToIdConverter; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.packs.resources.PreparableReloadListener; @@ -30,7 +28,6 @@ import net.minecraft.util.DependencySorter; import net.minecraft.util.GsonHelper; import net.minecraft.util.Unit; -import net.minecraft.util.profiling.ProfilerFiller; import org.jetbrains.annotations.Nullable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -41,7 +38,6 @@ import java.util.concurrent.CompletableFuture; import java.util.concurrent.Executor; import java.util.function.Consumer; -import java.util.stream.StreamSupport; public class ClientTagManager implements PreparableReloadListener { public static final String PATH = "trimmed/tags/"; diff --git a/common/src/main/java/dev/dhyces/trimmed/impl/mixin/client/api/ItemOverrideProviderMixin.java b/common/src/main/java/dev/dhyces/trimmed/impl/mixin/client/api/ItemOverrideProviderMixin.java new file mode 100644 index 00000000..fd2efd65 --- /dev/null +++ b/common/src/main/java/dev/dhyces/trimmed/impl/mixin/client/api/ItemOverrideProviderMixin.java @@ -0,0 +1,20 @@ +package dev.dhyces.trimmed.impl.mixin.client.api; + +import com.mojang.serialization.Codec; +import com.mojang.serialization.MapCodec; +import dev.dhyces.trimmed.api.client.override.provider.ItemOverrideProvider; +import dev.dhyces.trimmed.impl.client.models.override.provider.ItemOverrideProviderRegistry; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Overwrite; + +@Mixin(ItemOverrideProvider.class) +public interface ItemOverrideProviderMixin { + /** + * @author dhyces + * @reason impl api + */ + @Overwrite(remap = false) + static Codec> getRegistryCodec() { + return ItemOverrideProviderRegistry.CODEC; + } +} diff --git a/common/src/main/java/dev/dhyces/trimmed/impl/mixin/client/api/TrimmedClientApiMixin.java b/common/src/main/java/dev/dhyces/trimmed/impl/mixin/client/api/TrimmedClientApiMixin.java new file mode 100644 index 00000000..1af0af8c --- /dev/null +++ b/common/src/main/java/dev/dhyces/trimmed/impl/mixin/client/api/TrimmedClientApiMixin.java @@ -0,0 +1,18 @@ +package dev.dhyces.trimmed.impl.mixin.client.api; + +import dev.dhyces.trimmed.api.client.TrimmedClientApi; +import dev.dhyces.trimmed.impl.client.TrimmedClientApiImpl; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Overwrite; + +@Mixin(TrimmedClientApi.class) +public interface TrimmedClientApiMixin { + /** + * @author dhyces + * @reason impl api + */ + @Overwrite(remap = false) + static TrimmedClientApi getInstance() { + return TrimmedClientApiImpl.INSTANCE; + } +} diff --git a/common/src/main/java/dev/dhyces/trimmed/impl/mixin/client/api/TrimmedClientMapApiMixin.java b/common/src/main/java/dev/dhyces/trimmed/impl/mixin/client/api/TrimmedClientMapApiMixin.java new file mode 100644 index 00000000..0822ab41 --- /dev/null +++ b/common/src/main/java/dev/dhyces/trimmed/impl/mixin/client/api/TrimmedClientMapApiMixin.java @@ -0,0 +1,18 @@ +package dev.dhyces.trimmed.impl.mixin.client.api; + +import dev.dhyces.trimmed.api.client.TrimmedClientMapApi; +import dev.dhyces.trimmed.impl.client.TrimmedClientMapApiImpl; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Overwrite; + +@Mixin(TrimmedClientMapApi.class) +public interface TrimmedClientMapApiMixin { + /** + * @author dhyces + * @reason impl api + */ + @Overwrite(remap = false) + static TrimmedClientMapApi getInstance() { + return TrimmedClientMapApiImpl.INSTANCE; + } +} diff --git a/common/src/main/java/dev/dhyces/trimmed/impl/mixin/client/api/TrimmedClientTagApiMixin.java b/common/src/main/java/dev/dhyces/trimmed/impl/mixin/client/api/TrimmedClientTagApiMixin.java new file mode 100644 index 00000000..5553ca7c --- /dev/null +++ b/common/src/main/java/dev/dhyces/trimmed/impl/mixin/client/api/TrimmedClientTagApiMixin.java @@ -0,0 +1,18 @@ +package dev.dhyces.trimmed.impl.mixin.client.api; + +import dev.dhyces.trimmed.api.client.TrimmedClientTagApi; +import dev.dhyces.trimmed.impl.client.TrimmedClientTagApiImpl; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Overwrite; + +@Mixin(TrimmedClientTagApi.class) +public interface TrimmedClientTagApiMixin { + /** + * @author dhyces + * @reason impl api + */ + @Overwrite(remap = false) + static TrimmedClientTagApi getInstance() { + return TrimmedClientTagApiImpl.INSTANCE; + } +} diff --git a/common/src/main/resources/META-INF/services/dev.dhyces.trimmed.api.services.ModelHelper b/common/src/main/resources/META-INF/services/dev.dhyces.trimmed.api.services.ModelHelper new file mode 100644 index 00000000..29a9c608 --- /dev/null +++ b/common/src/main/resources/META-INF/services/dev.dhyces.trimmed.api.services.ModelHelper @@ -0,0 +1 @@ +dev.dhyces.trimmed.impl.client.services.ModelHelperImpl \ No newline at end of file diff --git a/common/src/main/resources/trimmed.mixins.json b/common/src/main/resources/trimmed.mixins.json index 32b77613..7d4a1ed8 100644 --- a/common/src/main/resources/trimmed.mixins.json +++ b/common/src/main/resources/trimmed.mixins.json @@ -10,7 +10,11 @@ "client": [ "client.BakedOverridesMixin", "client.ModelManagerMixin", - "client.ReloadableResourceManagerAccessor" + "client.ReloadableResourceManagerAccessor", + "client.api.ItemOverrideProviderMixin", + "client.api.TrimmedClientApiMixin", + "client.api.TrimmedClientMapApiMixin", + "client.api.TrimmedClientTagApiMixin" ], "injectors": { "defaultRequire": 1 diff --git a/fabric/build.gradle b/fabric/build.gradle index 3fa1bbe6..a2dc3775 100644 --- a/fabric/build.gradle +++ b/fabric/build.gradle @@ -75,6 +75,10 @@ dependencies { } } +processResources { + exclude("accesstransformer.cfg") +} + if (hasProperty("modrinth_write_version_pat")) { modrinth { token = findProperty("modrinth_write_version_pat") as String diff --git a/fabric/src/main/java/dev/dhyces/trimmed/FabricTrimmedClient.java b/fabric/src/main/java/dev/dhyces/trimmed/FabricTrimmedClient.java index 1a627dd3..f366c17a 100644 --- a/fabric/src/main/java/dev/dhyces/trimmed/FabricTrimmedClient.java +++ b/fabric/src/main/java/dev/dhyces/trimmed/FabricTrimmedClient.java @@ -24,7 +24,7 @@ public void onInitializeClient() { TrimmedClient.init(); TrimmedClient.registerSpriteSourceTypes(AtlasSourceTypeRegistry::register); TrimmedClient.registerClientReloadListener((id, listener) -> { - ResourceManagerHelper.get(PackType.CLIENT_RESOURCES).registerReloadListener(new WrappedReloadListener(Trimmed.id(id), listener)); + ResourceManagerHelper.get(PackType.CLIENT_RESOURCES).registerReloadListener(new WrappedReloadListener(TrimmedReference.id(id), listener)); }); PreparableModelLoadingPlugin.register(TrimmedClient::startGeneratingModels, (data, pluginContext) -> { diff --git a/fabric/src/main/java/dev/dhyces/trimmed/api/data/map/ClientMapDataProvider.java b/fabric/src/main/java/dev/dhyces/trimmed/api/data/map/ClientMapDataProvider.java index 81e5d1fa..468910b5 100644 --- a/fabric/src/main/java/dev/dhyces/trimmed/api/data/map/ClientMapDataProvider.java +++ b/fabric/src/main/java/dev/dhyces/trimmed/api/data/map/ClientMapDataProvider.java @@ -3,7 +3,6 @@ import com.google.gson.JsonElement; import com.mojang.serialization.DataResult; import com.mojang.serialization.JsonOps; -import dev.dhyces.trimmed.api.KeyResolver; import dev.dhyces.trimmed.api.client.TrimmedClientApi; import dev.dhyces.trimmed.api.data.map.appenders.MapAppender; import dev.dhyces.trimmed.api.data.map.appenders.MappedMapAppender; diff --git a/fabric/src/main/java/dev/dhyces/trimmed/api/data/map/ClientRegistryMapDataProvider.java b/fabric/src/main/java/dev/dhyces/trimmed/api/data/map/ClientRegistryMapDataProvider.java index 8dbdc5c6..48a44401 100644 --- a/fabric/src/main/java/dev/dhyces/trimmed/api/data/map/ClientRegistryMapDataProvider.java +++ b/fabric/src/main/java/dev/dhyces/trimmed/api/data/map/ClientRegistryMapDataProvider.java @@ -1,8 +1,6 @@ package dev.dhyces.trimmed.api.data.map; import com.mojang.datafixers.util.Unit; -import dev.dhyces.trimmed.api.KeyResolver; -import dev.dhyces.trimmed.api.client.TrimmedClientApi; import dev.dhyces.trimmed.api.data.map.appenders.RegistryMapAppender; import dev.dhyces.trimmed.api.util.Utils; import dev.dhyces.trimmed.api.maps.MapKey; @@ -16,7 +14,6 @@ import org.jetbrains.annotations.Nullable; import java.nio.file.Path; -import java.util.Optional; import java.util.concurrent.CompletableFuture; import java.util.function.Function; diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index de364e1d..fe21002a 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -19,7 +19,7 @@ mixinextras = "0.4.1" jetbrains_annotations = "24.1.0" -moddev = "2.0.42-beta" +moddev = "2.0.43-beta" loom = "1.8.+" mdg_release = "2.0.0-beta.30" diff --git a/neo/build.gradle b/neo/build.gradle index d04aaf57..4c6217f2 100644 --- a/neo/build.gradle +++ b/neo/build.gradle @@ -29,17 +29,19 @@ base { //} sourceSets { - main + api { + compileClasspath += main.compileClasspath + } + main { + compileClasspath += api.compileClasspath + api.output + runtimeClasspath += api.runtimeClasspath + api.output + } datagen { compileClasspath += main.compileClasspath + main.output runtimeClasspath += main.runtimeClasspath + main.output } } -configurations { - -} - neoForge { version = version = libs.neoforge.get().version @@ -49,9 +51,11 @@ neoForge { mods { create("trimmed") { + sourceSet(sourceSets.api) sourceSet(sourceSets.main) } create("trimmeddatagen") { + sourceSet(sourceSets.api) sourceSet(sourceSets.main) sourceSet(sourceSets.datagen) } diff --git a/neo/src/main/java/dev/dhyces/trimmed/api/TrimmedClientApiConsumer.java b/neo/src/api/java/dev/dhyces/trimmed/api/TrimmedClientApiConsumer.java similarity index 100% rename from neo/src/main/java/dev/dhyces/trimmed/api/TrimmedClientApiConsumer.java rename to neo/src/api/java/dev/dhyces/trimmed/api/TrimmedClientApiConsumer.java diff --git a/neo/src/main/java/dev/dhyces/trimmed/api/data/TrimDatagenSuite.java b/neo/src/api/java/dev/dhyces/trimmed/api/data/TrimDatagenSuite.java similarity index 100% rename from neo/src/main/java/dev/dhyces/trimmed/api/data/TrimDatagenSuite.java rename to neo/src/api/java/dev/dhyces/trimmed/api/data/TrimDatagenSuite.java diff --git a/neo/src/main/java/dev/dhyces/trimmed/api/data/map/ClientIntrinsicRegistryMapDataProvider.java b/neo/src/api/java/dev/dhyces/trimmed/api/data/map/ClientIntrinsicRegistryMapDataProvider.java similarity index 100% rename from neo/src/main/java/dev/dhyces/trimmed/api/data/map/ClientIntrinsicRegistryMapDataProvider.java rename to neo/src/api/java/dev/dhyces/trimmed/api/data/map/ClientIntrinsicRegistryMapDataProvider.java diff --git a/neo/src/main/java/dev/dhyces/trimmed/api/data/map/ClientMapDataProvider.java b/neo/src/api/java/dev/dhyces/trimmed/api/data/map/ClientMapDataProvider.java similarity index 100% rename from neo/src/main/java/dev/dhyces/trimmed/api/data/map/ClientMapDataProvider.java rename to neo/src/api/java/dev/dhyces/trimmed/api/data/map/ClientMapDataProvider.java diff --git a/neo/src/main/java/dev/dhyces/trimmed/api/data/map/ClientRegistryMapDataProvider.java b/neo/src/api/java/dev/dhyces/trimmed/api/data/map/ClientRegistryMapDataProvider.java similarity index 100% rename from neo/src/main/java/dev/dhyces/trimmed/api/data/map/ClientRegistryMapDataProvider.java rename to neo/src/api/java/dev/dhyces/trimmed/api/data/map/ClientRegistryMapDataProvider.java diff --git a/neo/src/main/java/dev/dhyces/trimmed/api/data/map/NeoBaseMapDataProvider.java b/neo/src/api/java/dev/dhyces/trimmed/api/data/map/NeoBaseMapDataProvider.java similarity index 88% rename from neo/src/main/java/dev/dhyces/trimmed/api/data/map/NeoBaseMapDataProvider.java rename to neo/src/api/java/dev/dhyces/trimmed/api/data/map/NeoBaseMapDataProvider.java index 4eb347f6..78662b6b 100644 --- a/neo/src/main/java/dev/dhyces/trimmed/api/data/map/NeoBaseMapDataProvider.java +++ b/neo/src/api/java/dev/dhyces/trimmed/api/data/map/NeoBaseMapDataProvider.java @@ -18,8 +18,8 @@ public NeoBaseMapDataProvider(PackOutput packOutput, String modid, ExistingFileH public static PackOutput.Target convertToTarget(PackType packType) { return switch (packType) { - case SERVER_DATA -> PackOutput.Target.DATA_PACK; - case CLIENT_RESOURCES -> PackOutput.Target.RESOURCE_PACK; + case PackType.SERVER_DATA -> PackOutput.Target.DATA_PACK; + case PackType.CLIENT_RESOURCES -> PackOutput.Target.RESOURCE_PACK; }; } diff --git a/neo/src/main/java/dev/dhyces/trimmed/api/data/map/NeoClientMapDataProvider.java b/neo/src/api/java/dev/dhyces/trimmed/api/data/map/NeoClientMapDataProvider.java similarity index 100% rename from neo/src/main/java/dev/dhyces/trimmed/api/data/map/NeoClientMapDataProvider.java rename to neo/src/api/java/dev/dhyces/trimmed/api/data/map/NeoClientMapDataProvider.java diff --git a/neo/src/main/java/dev/dhyces/trimmed/api/data/model/source/ModelSourceDataProvider.java b/neo/src/api/java/dev/dhyces/trimmed/api/data/model/source/ModelSourceDataProvider.java similarity index 100% rename from neo/src/main/java/dev/dhyces/trimmed/api/data/model/source/ModelSourceDataProvider.java rename to neo/src/api/java/dev/dhyces/trimmed/api/data/model/source/ModelSourceDataProvider.java diff --git a/neo/src/main/java/dev/dhyces/trimmed/api/data/tag/ClientIntrinsicRegistryTagDataProvider.java b/neo/src/api/java/dev/dhyces/trimmed/api/data/tag/ClientIntrinsicRegistryTagDataProvider.java similarity index 100% rename from neo/src/main/java/dev/dhyces/trimmed/api/data/tag/ClientIntrinsicRegistryTagDataProvider.java rename to neo/src/api/java/dev/dhyces/trimmed/api/data/tag/ClientIntrinsicRegistryTagDataProvider.java diff --git a/neo/src/main/java/dev/dhyces/trimmed/api/data/tag/ClientRegistryTagDataProvider.java b/neo/src/api/java/dev/dhyces/trimmed/api/data/tag/ClientRegistryTagDataProvider.java similarity index 100% rename from neo/src/main/java/dev/dhyces/trimmed/api/data/tag/ClientRegistryTagDataProvider.java rename to neo/src/api/java/dev/dhyces/trimmed/api/data/tag/ClientRegistryTagDataProvider.java diff --git a/neo/src/main/java/dev/dhyces/trimmed/api/data/tag/ClientTagDataProvider.java b/neo/src/api/java/dev/dhyces/trimmed/api/data/tag/ClientTagDataProvider.java similarity index 93% rename from neo/src/main/java/dev/dhyces/trimmed/api/data/tag/ClientTagDataProvider.java rename to neo/src/api/java/dev/dhyces/trimmed/api/data/tag/ClientTagDataProvider.java index 3cccf495..986f220c 100644 --- a/neo/src/main/java/dev/dhyces/trimmed/api/data/tag/ClientTagDataProvider.java +++ b/neo/src/api/java/dev/dhyces/trimmed/api/data/tag/ClientTagDataProvider.java @@ -7,14 +7,11 @@ import dev.dhyces.trimmed.api.data.client.tag.ClientTagFile; import dev.dhyces.trimmed.api.data.client.tag.appenders.ClientTagAppender; import dev.dhyces.trimmed.api.client.tag.ClientTagKey; -import dev.dhyces.trimmed.api.util.Utils; import dev.dhyces.trimmed.impl.client.maps.KeyResolvers; -import dev.dhyces.trimmed.impl.client.tags.manager.ClientTagManager; import net.minecraft.data.CachedOutput; import net.minecraft.data.DataProvider; import net.minecraft.data.PackOutput; import net.minecraft.resources.ResourceLocation; -import net.minecraft.server.packs.PackType; import net.neoforged.neoforge.common.data.ExistingFileHelper; import org.jetbrains.annotations.Nullable; diff --git a/neo/src/main/java/dev/dhyces/trimmed/api/data/tag/NeoBaseClientTagDataProvider.java b/neo/src/api/java/dev/dhyces/trimmed/api/data/tag/NeoBaseClientTagDataProvider.java similarity index 100% rename from neo/src/main/java/dev/dhyces/trimmed/api/data/tag/NeoBaseClientTagDataProvider.java rename to neo/src/api/java/dev/dhyces/trimmed/api/data/tag/NeoBaseClientTagDataProvider.java diff --git a/neo/src/datagen/java/dev/dhyces/trimmed/TrimmedDatagen.java b/neo/src/datagen/java/dev/dhyces/trimmed/TrimmedDatagen.java index 0ac14162..7a423d27 100644 --- a/neo/src/datagen/java/dev/dhyces/trimmed/TrimmedDatagen.java +++ b/neo/src/datagen/java/dev/dhyces/trimmed/TrimmedDatagen.java @@ -7,7 +7,7 @@ import net.neoforged.fml.common.Mod; import net.neoforged.neoforge.data.event.GatherDataEvent; -@Mod(Trimmed.MODID) +@Mod(TrimmedReference.MODID) public class TrimmedDatagen { public TrimmedDatagen(IEventBus modBus) { modBus.addListener(this::setupDatagen); diff --git a/neo/src/main/java/dev/dhyces/trimmed/NeoTrimmed.java b/neo/src/main/java/dev/dhyces/trimmed/NeoTrimmed.java index ea39668b..f6cc4b87 100644 --- a/neo/src/main/java/dev/dhyces/trimmed/NeoTrimmed.java +++ b/neo/src/main/java/dev/dhyces/trimmed/NeoTrimmed.java @@ -3,7 +3,7 @@ import net.neoforged.fml.common.Mod; @SuppressWarnings("unused") -@Mod(Trimmed.MODID) +@Mod(TrimmedReference.MODID) public class NeoTrimmed { public NeoTrimmed() { Trimmed.init(); diff --git a/neo/src/main/java/dev/dhyces/trimmed/NeoTrimmedClient.java b/neo/src/main/java/dev/dhyces/trimmed/NeoTrimmedClient.java index a4d475e2..327431bd 100644 --- a/neo/src/main/java/dev/dhyces/trimmed/NeoTrimmedClient.java +++ b/neo/src/main/java/dev/dhyces/trimmed/NeoTrimmedClient.java @@ -1,7 +1,6 @@ package dev.dhyces.trimmed; import net.minecraft.client.resources.model.ModelResourceLocation; -import net.minecraft.resources.ResourceLocation; import net.neoforged.api.distmarker.Dist; import net.neoforged.bus.api.IEventBus; import net.neoforged.fml.ModContainer; @@ -14,10 +13,8 @@ import net.neoforged.neoforge.event.TagsUpdatedEvent; import net.neoforged.neoforge.event.server.ServerStoppingEvent; -import java.util.Set; - @SuppressWarnings("unused") -@Mod(value = Trimmed.MODID, dist = Dist.CLIENT) +@Mod(value = TrimmedReference.MODID, dist = Dist.CLIENT) public class NeoTrimmedClient { public NeoTrimmedClient(IEventBus modBus, ModContainer container) { TrimmedClient.init(); diff --git a/neo/src/main/java/dev/dhyces/trimmed/modhelper/services/helpers/NeoPlatformHelper.java b/neo/src/main/java/dev/dhyces/trimmed/modhelper/services/helpers/NeoPlatformHelper.java index a4ee317d..1464eb9c 100644 --- a/neo/src/main/java/dev/dhyces/trimmed/modhelper/services/helpers/NeoPlatformHelper.java +++ b/neo/src/main/java/dev/dhyces/trimmed/modhelper/services/helpers/NeoPlatformHelper.java @@ -4,7 +4,6 @@ import com.google.gson.JsonObject; import com.mojang.serialization.Codec; import com.mojang.serialization.DynamicOps; -import com.mojang.serialization.JsonOps; import net.minecraft.core.Registry; import net.minecraft.core.RegistryAccess; import net.minecraft.core.registries.BuiltInRegistries; @@ -13,7 +12,6 @@ import net.neoforged.fml.ModList; import net.neoforged.fml.loading.FMLLoader; import net.neoforged.neoforge.common.conditions.ICondition; -import net.neoforged.neoforge.common.util.NeoForgeExtraCodecs; import org.jetbrains.annotations.Nullable; import java.util.Optional;