diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 04990a90f..71375619f 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -34,15 +34,7 @@ jobs: with: reports: | **/build/reports/checkstyle/*.xml - - uses: actions/upload-artifact@v3 - with: - name: Artifacts - path: build/libs/ - - uses: actions/upload-artifact@v3 - with: - name: Artifacts - path: ./*/build/libs/ - - uses: actions/upload-artifact@v3 + - uses: actions/upload-artifact@v4 with: name: Maven Local path: ~/.m2/repository diff --git a/fabric-entity-events-v1/src/main/java/net/fabricmc/fabric/mixin/entity/event/LivingEntityMixin.java b/fabric-entity-events-v1/src/main/java/net/fabricmc/fabric/mixin/entity/event/LivingEntityMixin.java index c4d8122d6..6b7d00367 100644 --- a/fabric-entity-events-v1/src/main/java/net/fabricmc/fabric/mixin/entity/event/LivingEntityMixin.java +++ b/fabric-entity-events-v1/src/main/java/net/fabricmc/fabric/mixin/entity/event/LivingEntityMixin.java @@ -128,7 +128,7 @@ private void setOccupiedState(BlockState state, World world, BlockPos pos, Livin // when the bed doesn't have the property. BlockState originalState = fabric_originalState != null ? fabric_originalState : state; - if (!EntitySleepEvents.SET_BED_OCCUPATION_STATE.invoker().setBedOccupationState((LivingEntity) (Object) this, pos, originalState, occupied)) { + if (EntitySleepEvents.SET_BED_OCCUPATION_STATE.invoker().setBedOccupationState((LivingEntity) (Object) this, pos, originalState, occupied) || originalState.contains(BedBlock.OCCUPIED)) { originalState.setBedOccupied(world, pos, entity, occupied); } diff --git a/fabric-object-builder-api-v1/src/main/java/net/fabricmc/fabric/mixin/object/builder/TradeOffersTypeAwareBuyForOneEmeraldFactoryMixin.java b/fabric-object-builder-api-v1/src/main/java/net/fabricmc/fabric/mixin/object/builder/TradeOffersTypeAwareBuyForOneEmeraldFactoryMixin.java index 3baca35b2..df6856937 100644 --- a/fabric-object-builder-api-v1/src/main/java/net/fabricmc/fabric/mixin/object/builder/TradeOffersTypeAwareBuyForOneEmeraldFactoryMixin.java +++ b/fabric-object-builder-api-v1/src/main/java/net/fabricmc/fabric/mixin/object/builder/TradeOffersTypeAwareBuyForOneEmeraldFactoryMixin.java @@ -41,7 +41,7 @@ public abstract class TradeOffersTypeAwareBuyForOneEmeraldFactoryMixin { * We want to prevent this default logic so modded villager types will work. * So we return an empty stream so an exception is never thrown. */ - @Redirect(method = "", at = @At(value = "INVOKE", target = "Lnet/minecraft/registry/DefaultedRegistry;stream()Ljava/util/stream/Stream;")) + @Redirect(method = "", at = @At(value = "INVOKE", target = "Lnet/minecraft/registry/DefaultedRegistry;stream()Ljava/util/stream/Stream;"), require = 0) private Stream disableVanillaCheck(DefaultedRegistry instance) { return Stream.empty(); } @@ -49,7 +49,7 @@ private Stream disableVanillaCheck(DefaultedRegistry instan /** * To prevent "item" -> "air" trades, if the result of a type aware trade is air, make sure no offer is created. */ - @Inject(method = "create", at = @At(value = "NEW", target = "net/minecraft/village/TradeOffer"), locals = LocalCapture.CAPTURE_FAILEXCEPTION, cancellable = true) + @Inject(method = "create", at = @At(value = "NEW", target = "net/minecraft/village/TradeOffer"), locals = LocalCapture.CAPTURE_FAILEXCEPTION, cancellable = true, require = 0) private void failOnNullItem(Entity entity, Random random, CallbackInfoReturnable cir, ItemStack buyingItem) { if (buyingItem.isEmpty()) { // Will return true for an "empty" item stack that had null passed in the ctor cir.setReturnValue(null); // Return null to prevent creation of empty trades diff --git a/fabric-renderer-api-v1/src/client/java/net/fabricmc/fabric/api/renderer/v1/model/ForwardingBakedModel.java b/fabric-renderer-api-v1/src/client/java/net/fabricmc/fabric/api/renderer/v1/model/ForwardingBakedModel.java index f86a07035..989517105 100644 --- a/fabric-renderer-api-v1/src/client/java/net/fabricmc/fabric/api/renderer/v1/model/ForwardingBakedModel.java +++ b/fabric-renderer-api-v1/src/client/java/net/fabricmc/fabric/api/renderer/v1/model/ForwardingBakedModel.java @@ -127,7 +127,13 @@ public boolean useAmbientOcclusion(BlockState state, RenderLayer renderType) { @Override public BakedModel applyTransform(ModelTransformationMode transformType, MatrixStack poseStack, boolean applyLeftHandTransform) { - return wrapped.applyTransform(transformType, poseStack, applyLeftHandTransform); + BakedModel result = wrapped.applyTransform(transformType, poseStack, applyLeftHandTransform); + + if (result == wrapped) { + return this; + } + + return result; } @Override 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 4f26822b8..a1d3af254 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 @@ -122,6 +122,7 @@ public static Predicate get(Identifier identifier) { *

If an exception is thrown during condition testing, it will be caught and logged, and false will be returned. */ public static boolean objectMatchesConditions(JsonObject object) { + if (JsonHelper.hasArray(object, "conditions")) return true; try { JsonArray conditions = JsonHelper.getArray(object, CONDITIONS_KEY, null); diff --git a/gradle.properties b/gradle.properties index 7885fb9c0..56b3bc56a 100644 --- a/gradle.properties +++ b/gradle.properties @@ -67,7 +67,7 @@ fabric-client-tags-api-v1-version=1.1.2 # FFAPI Properties loom.platform=forge -forge_version=1.20.1-47.2.6 +forge_version=1.20.1-47.3.27 pack_format=15 -forgified_version=1.11.8 +forgified_version=1.11.12 forge_fabric_loader_version=2.6.0+0.15.0+1.20.1