diff --git a/fabric-recipe-api-v1/src/main/java/org/sinytra/fabric/recipe_api/FabricRecipeApiV1.java b/fabric-recipe-api-v1/src/main/java/org/sinytra/fabric/recipe_api/FabricRecipeApiV1.java index c1d605f28..77891490a 100644 --- a/fabric-recipe-api-v1/src/main/java/org/sinytra/fabric/recipe_api/FabricRecipeApiV1.java +++ b/fabric-recipe-api-v1/src/main/java/org/sinytra/fabric/recipe_api/FabricRecipeApiV1.java @@ -37,7 +37,8 @@ public static MapCodec makeIngredientMapCodec(MapCodec o CustomIngredientImpl.CODEC, CustomIngredient::getSerializer, s -> s.getCodec(true), - original + original, + "type" // NeoForge ingredient type spec ) .xmap( e -> e.map(c -> new NeoCustomIngredientWrapper(c).toVanilla(), Function.identity()), @@ -46,7 +47,7 @@ public static MapCodec makeIngredientMapCodec(MapCodec o } // Stolen from NeoForgeExtraCodecs because they don't support custom type keys - public static MapCodec> dispatchMapOrElse(String typeKey, Codec typeCodec, Function type, Function> codec, MapCodec fallbackCodec) { + public static MapCodec> dispatchMapOrElse(String typeKey, Codec typeCodec, Function type, Function> codec, MapCodec fallbackCodec, String ignoreKey) { var dispatchCodec = typeCodec.dispatchMap(typeKey, type, codec); return new MapCodec<>() { @Override @@ -56,7 +57,7 @@ public Stream keys(DynamicOps ops) { @Override public DataResult> decode(DynamicOps ops, MapLike input) { - if (input.get(typeKey) != null) { + if (input.get(typeKey) != null && input.get(ignoreKey) == null) { return dispatchCodec.decode(ops, input).map(Either::left); } else { return fallbackCodec.decode(ops, input).map(Either::right); diff --git a/fabric-resource-conditions-api-v1/src/main/java/net/fabricmc/fabric/impl/resource/conditions/ResourceConditionsImpl.java b/fabric-resource-conditions-api-v1/src/main/java/net/fabricmc/fabric/impl/resource/conditions/ResourceConditionsImpl.java index 21f230d86..61e8a9a71 100644 --- a/fabric-resource-conditions-api-v1/src/main/java/net/fabricmc/fabric/impl/resource/conditions/ResourceConditionsImpl.java +++ b/fabric-resource-conditions-api-v1/src/main/java/net/fabricmc/fabric/impl/resource/conditions/ResourceConditionsImpl.java @@ -26,6 +26,7 @@ import com.google.gson.JsonObject; import com.mojang.serialization.DataResult; import com.mojang.serialization.JsonOps; +import net.neoforged.neoforge.common.conditions.ConditionalOps; import org.apache.commons.lang3.mutable.MutableBoolean; import org.jetbrains.annotations.Nullable; import org.slf4j.Logger; @@ -62,7 +63,7 @@ public void onInitialize() { public static boolean applyResourceConditions(JsonObject obj, String dataType, ResourceLocation key, @Nullable HolderLookup.Provider registryLookup) { boolean debugLogEnabled = ResourceConditionsImpl.LOGGER.isDebugEnabled(); - if (obj.has(ResourceConditions.CONDITIONS_KEY)) { + if (obj.has(ResourceConditions.CONDITIONS_KEY) && !obj.has(ConditionalOps.DEFAULT_CONDITIONS_KEY)) { DataResult conditions = ResourceCondition.CONDITION_CODEC.parse(JsonOps.INSTANCE, obj.get(ResourceConditions.CONDITIONS_KEY)); if (conditions.isSuccess()) {