diff --git a/fabric-data-generation-api-v1/src/testmod/generated/data/fabric-data-gen-api-v1-testmod/advancement/recipes/misc/gold_ingot.json b/fabric-data-generation-api-v1/src/testmod/generated/data/fabric-data-gen-api-v1-testmod/advancement/recipes/misc/gold_ingot.json index cb7adc5c083..545a32e870d 100644 --- a/fabric-data-generation-api-v1/src/testmod/generated/data/fabric-data-gen-api-v1-testmod/advancement/recipes/misc/gold_ingot.json +++ b/fabric-data-generation-api-v1/src/testmod/generated/data/fabric-data-gen-api-v1-testmod/advancement/recipes/misc/gold_ingot.json @@ -1,10 +1,7 @@ { "fabric:load_conditions": [ { - "condition": "fabric:not", - "value": { - "condition": "fabric:true" - } + "condition": "fabric:false" } ], "parent": "minecraft:recipes/root", diff --git a/fabric-data-generation-api-v1/src/testmod/generated/data/fabric-data-gen-api-v1-testmod/advancement/test/root_not_loaded.json b/fabric-data-generation-api-v1/src/testmod/generated/data/fabric-data-gen-api-v1-testmod/advancement/test/root_not_loaded.json index 427d60732aa..c6b1957a7b8 100644 --- a/fabric-data-generation-api-v1/src/testmod/generated/data/fabric-data-gen-api-v1-testmod/advancement/test/root_not_loaded.json +++ b/fabric-data-generation-api-v1/src/testmod/generated/data/fabric-data-gen-api-v1-testmod/advancement/test/root_not_loaded.json @@ -1,10 +1,7 @@ { "fabric:load_conditions": [ { - "condition": "fabric:not", - "value": { - "condition": "fabric:true" - } + "condition": "fabric:false" } ], "criteria": { diff --git a/fabric-data-generation-api-v1/src/testmod/generated/data/fabric-data-gen-api-v1-testmod/loot_table/blocks/simple_block.json b/fabric-data-generation-api-v1/src/testmod/generated/data/fabric-data-gen-api-v1-testmod/loot_table/blocks/simple_block.json index e40d7b6d463..7bcf3f8a10b 100644 --- a/fabric-data-generation-api-v1/src/testmod/generated/data/fabric-data-gen-api-v1-testmod/loot_table/blocks/simple_block.json +++ b/fabric-data-generation-api-v1/src/testmod/generated/data/fabric-data-gen-api-v1-testmod/loot_table/blocks/simple_block.json @@ -3,10 +3,7 @@ { "condition": "fabric:not", "value": { - "condition": "fabric:not", - "value": { - "condition": "fabric:true" - } + "condition": "fabric:false" } }, { diff --git a/fabric-data-generation-api-v1/src/testmod/generated/data/fabric-data-gen-api-v1-testmod/loot_table/entities/simple_entity.json b/fabric-data-generation-api-v1/src/testmod/generated/data/fabric-data-gen-api-v1-testmod/loot_table/entities/simple_entity.json index 00fe138b229..30567454725 100644 --- a/fabric-data-generation-api-v1/src/testmod/generated/data/fabric-data-gen-api-v1-testmod/loot_table/entities/simple_entity.json +++ b/fabric-data-generation-api-v1/src/testmod/generated/data/fabric-data-gen-api-v1-testmod/loot_table/entities/simple_entity.json @@ -3,10 +3,7 @@ { "condition": "fabric:not", "value": { - "condition": "fabric:not", - "value": { - "condition": "fabric:true" - } + "condition": "fabric:false" } }, { diff --git a/fabric-data-generation-api-v1/src/testmod/generated/data/fabric-data-gen-api-v1-testmod/recipe/gold_ingot.json b/fabric-data-generation-api-v1/src/testmod/generated/data/fabric-data-gen-api-v1-testmod/recipe/gold_ingot.json index b65d3b46096..d5fb938a68d 100644 --- a/fabric-data-generation-api-v1/src/testmod/generated/data/fabric-data-gen-api-v1-testmod/recipe/gold_ingot.json +++ b/fabric-data-generation-api-v1/src/testmod/generated/data/fabric-data-gen-api-v1-testmod/recipe/gold_ingot.json @@ -1,10 +1,7 @@ { "fabric:load_conditions": [ { - "condition": "fabric:not", - "value": { - "condition": "fabric:true" - } + "condition": "fabric:false" } ], "type": "minecraft:crafting_shapeless", diff --git a/fabric-data-generation-api-v1/src/testmod/java/net/fabricmc/fabric/test/datagen/DataGeneratorTestEntrypoint.java b/fabric-data-generation-api-v1/src/testmod/java/net/fabricmc/fabric/test/datagen/DataGeneratorTestEntrypoint.java index f32953986e0..541981a456f 100644 --- a/fabric-data-generation-api-v1/src/testmod/java/net/fabricmc/fabric/test/datagen/DataGeneratorTestEntrypoint.java +++ b/fabric-data-generation-api-v1/src/testmod/java/net/fabricmc/fabric/test/datagen/DataGeneratorTestEntrypoint.java @@ -105,7 +105,7 @@ public class DataGeneratorTestEntrypoint implements DataGeneratorEntrypoint { private static final ResourceCondition ALWAYS_LOADED = ResourceConditions.alwaysTrue(); - private static final ResourceCondition NEVER_LOADED = ResourceConditions.not(ALWAYS_LOADED); + private static final ResourceCondition NEVER_LOADED = ResourceConditions.alwaysFalse(); @Override public void addJsonKeySortOrders(JsonKeySortOrderCallback callback) { diff --git a/fabric-resource-conditions-api-v1/src/main/java/net/fabricmc/fabric/api/resource/conditions/v1/ResourceConditions.java b/fabric-resource-conditions-api-v1/src/main/java/net/fabricmc/fabric/api/resource/conditions/v1/ResourceConditions.java index 0df5896979d..50825325aa5 100644 --- a/fabric-resource-conditions-api-v1/src/main/java/net/fabricmc/fabric/api/resource/conditions/v1/ResourceConditions.java +++ b/fabric-resource-conditions-api-v1/src/main/java/net/fabricmc/fabric/api/resource/conditions/v1/ResourceConditions.java @@ -30,6 +30,7 @@ import net.fabricmc.fabric.impl.resource.conditions.conditions.AllModsLoadedResourceCondition; import net.fabricmc.fabric.impl.resource.conditions.conditions.AndResourceCondition; import net.fabricmc.fabric.impl.resource.conditions.conditions.AnyModsLoadedResourceCondition; +import net.fabricmc.fabric.impl.resource.conditions.conditions.FalseResourceCondition; import net.fabricmc.fabric.impl.resource.conditions.conditions.FeaturesEnabledResourceCondition; import net.fabricmc.fabric.impl.resource.conditions.conditions.NotResourceCondition; import net.fabricmc.fabric.impl.resource.conditions.conditions.OrResourceCondition; @@ -83,6 +84,13 @@ public static ResourceCondition alwaysTrue() { return new TrueResourceCondition(); } + /** + * A condition that always passes. Has ID {@code fabric:false}. + */ + public static ResourceCondition alwaysFalse() { + return new FalseResourceCondition(); + } + /** * A condition that passes if {@code condition} does not pass. Has ID {@code fabric:not} and * takes one field, {@code value}, which is a resource condition. diff --git a/fabric-resource-conditions-api-v1/src/main/java/net/fabricmc/fabric/impl/resource/conditions/DefaultResourceConditionTypes.java b/fabric-resource-conditions-api-v1/src/main/java/net/fabricmc/fabric/impl/resource/conditions/DefaultResourceConditionTypes.java index 0e2e1fd3184..4caf3cd6310 100644 --- a/fabric-resource-conditions-api-v1/src/main/java/net/fabricmc/fabric/impl/resource/conditions/DefaultResourceConditionTypes.java +++ b/fabric-resource-conditions-api-v1/src/main/java/net/fabricmc/fabric/impl/resource/conditions/DefaultResourceConditionTypes.java @@ -25,6 +25,7 @@ import net.fabricmc.fabric.impl.resource.conditions.conditions.AllModsLoadedResourceCondition; import net.fabricmc.fabric.impl.resource.conditions.conditions.AndResourceCondition; import net.fabricmc.fabric.impl.resource.conditions.conditions.AnyModsLoadedResourceCondition; +import net.fabricmc.fabric.impl.resource.conditions.conditions.FalseResourceCondition; import net.fabricmc.fabric.impl.resource.conditions.conditions.FeaturesEnabledResourceCondition; import net.fabricmc.fabric.impl.resource.conditions.conditions.NotResourceCondition; import net.fabricmc.fabric.impl.resource.conditions.conditions.OrResourceCondition; @@ -34,6 +35,7 @@ public class DefaultResourceConditionTypes { public static final ResourceConditionType TRUE = createResourceConditionType("true", TrueResourceCondition.CODEC); + public static final ResourceConditionType FALSE = createResourceConditionType("false", FalseResourceCondition.CODEC); public static final ResourceConditionType NOT = createResourceConditionType("not", NotResourceCondition.CODEC); public static final ResourceConditionType OR = createResourceConditionType("or", OrResourceCondition.CODEC); public static final ResourceConditionType AND = createResourceConditionType("and", AndResourceCondition.CODEC); 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 d31afcfed68..f9b62e553af 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 @@ -50,6 +50,7 @@ public final class ResourceConditionsImpl implements ModInitializer { @Override public void onInitialize() { ResourceConditions.register(DefaultResourceConditionTypes.TRUE); + ResourceConditions.register(DefaultResourceConditionTypes.FALSE); ResourceConditions.register(DefaultResourceConditionTypes.NOT); ResourceConditions.register(DefaultResourceConditionTypes.AND); ResourceConditions.register(DefaultResourceConditionTypes.OR); diff --git a/fabric-resource-conditions-api-v1/src/main/java/net/fabricmc/fabric/impl/resource/conditions/conditions/FalseResourceCondition.java b/fabric-resource-conditions-api-v1/src/main/java/net/fabricmc/fabric/impl/resource/conditions/conditions/FalseResourceCondition.java new file mode 100644 index 00000000000..56872791e2a --- /dev/null +++ b/fabric-resource-conditions-api-v1/src/main/java/net/fabricmc/fabric/impl/resource/conditions/conditions/FalseResourceCondition.java @@ -0,0 +1,40 @@ +/* + * Copyright (c) 2016, 2017, 2018, 2019 FabricMC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package net.fabricmc.fabric.impl.resource.conditions.conditions; + +import com.mojang.serialization.MapCodec; +import org.jspecify.annotations.Nullable; + +import net.minecraft.resources.RegistryOps; + +import net.fabricmc.fabric.api.resource.conditions.v1.ResourceCondition; +import net.fabricmc.fabric.api.resource.conditions.v1.ResourceConditionType; +import net.fabricmc.fabric.impl.resource.conditions.DefaultResourceConditionTypes; + +public class FalseResourceCondition implements ResourceCondition { + public static final MapCodec CODEC = MapCodec.unit(FalseResourceCondition::new); + + @Override + public ResourceConditionType getType() { + return DefaultResourceConditionTypes.FALSE; + } + + @Override + public boolean test(RegistryOps.@Nullable RegistryInfoLookup registryInfo) { + return false; + } +} diff --git a/fabric-resource-conditions-api-v1/src/test/java/net/fabricmc/fabric/test/resource/conditions/ResourceConditionsUnitTest.java b/fabric-resource-conditions-api-v1/src/test/java/net/fabricmc/fabric/test/resource/conditions/ResourceConditionsUnitTest.java index 4c6aad5eccf..69a81842767 100644 --- a/fabric-resource-conditions-api-v1/src/test/java/net/fabricmc/fabric/test/resource/conditions/ResourceConditionsUnitTest.java +++ b/fabric-resource-conditions-api-v1/src/test/java/net/fabricmc/fabric/test/resource/conditions/ResourceConditionsUnitTest.java @@ -64,7 +64,7 @@ static void beforeAll() { @Test public void logics() { ResourceCondition alwaysTrue = ResourceConditions.alwaysTrue(); - ResourceCondition alwaysFalse = ResourceConditions.not(alwaysTrue); + ResourceCondition alwaysFalse = ResourceConditions.alwaysFalse(); ResourceCondition trueAndTrue = ResourceConditions.and(alwaysTrue, alwaysTrue); ResourceCondition trueAndFalse = ResourceConditions.and(alwaysTrue, alwaysFalse); ResourceCondition emptyAnd = ResourceConditions.and();