From 031f0cf067c07982b13d97b5421354dfd48bd3bd Mon Sep 17 00:00:00 2001 From: modmuss50 <modmuss50@gmail.com> Date: Wed, 6 Mar 2024 16:40:52 +0000 Subject: [PATCH] 24w10a --- .../test/lookup/compat/WrappedInventory.java | 2 +- .../content/registry/class_9316Mixin.java | 6 ++-- ...abric-data-generation-api-v1.accesswidener | 4 +-- .../datagen/DataGeneratorTestEntrypoint.java | 4 +-- .../api/entity/event/v1/FabricElytraItem.java | 2 +- .../ClientPlayerInteractionManagerMixin.java | 4 +-- .../test/item/gametest/RecipeGameTest.java | 2 +- .../itemgroup/v1/FabricItemGroupEntries.java | 4 +-- ...TypeAwareBuyForOneEmeraldFactoryMixin.java | 6 ++-- .../object/builder/VillagerTypeTest1.java | 26 ++++++++-------- .../object/builder/VillagerTypeTest2.java | 14 ++++----- .../transfer/item/InventorySlotWrapper.java | 2 +- .../AbstractFurnaceBlockEntityMixin.java | 2 +- ...=> LockableContainerBlockEntityMixin.java} | 17 ++++++----- .../fabric-transfer-api-v1.mixins.json | 2 +- .../gametests/VanillaStorageTests.java | 4 +++ gradle.properties | 30 +++++++++---------- 17 files changed, 68 insertions(+), 63 deletions(-) rename fabric-transfer-api-v1/src/main/java/net/fabricmc/fabric/mixin/transfer/{LootableContainerBlockEntityMixin.java => LockableContainerBlockEntityMixin.java} (74%) diff --git a/fabric-api-lookup-api-v1/src/testmod/java/net/fabricmc/fabric/test/lookup/compat/WrappedInventory.java b/fabric-api-lookup-api-v1/src/testmod/java/net/fabricmc/fabric/test/lookup/compat/WrappedInventory.java index ec6a875fa..1aa103bf3 100644 --- a/fabric-api-lookup-api-v1/src/testmod/java/net/fabricmc/fabric/test/lookup/compat/WrappedInventory.java +++ b/fabric-api-lookup-api-v1/src/testmod/java/net/fabricmc/fabric/test/lookup/compat/WrappedInventory.java @@ -60,7 +60,7 @@ final class WrappedInventory implements ItemInsertable, ItemExtractable { if (inv.isValid(i, input)) { ItemStack stack = inv.getStack(i); - if (stack.isEmpty() || ItemStack.areItemsAndNbtEqual(stack, input)) { + if (stack.isEmpty() || ItemStack.areItemsAndComponentsEqual(stack, input)) { int remainingSpace = Math.min(inv.getMaxCountPerStack(), stack.getItem().getMaxCount()) - stack.getCount(); int inserted = Math.min(remainingSpace, input.getCount()); diff --git a/fabric-content-registries-v0/src/main/java/net/fabricmc/fabric/mixin/content/registry/class_9316Mixin.java b/fabric-content-registries-v0/src/main/java/net/fabricmc/fabric/mixin/content/registry/class_9316Mixin.java index 9c37e66d2..727550dab 100644 --- a/fabric-content-registries-v0/src/main/java/net/fabricmc/fabric/mixin/content/registry/class_9316Mixin.java +++ b/fabric-content-registries-v0/src/main/java/net/fabricmc/fabric/mixin/content/registry/class_9316Mixin.java @@ -24,14 +24,14 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; import net.minecraft.block.BlockState; -import net.minecraft.class_9316; +import net.minecraft.entity.ai.pathing.PathContext; import net.minecraft.entity.ai.pathing.PathNodeType; import net.minecraft.util.math.BlockPos; import net.minecraft.world.CollisionView; import net.fabricmc.fabric.api.registry.LandPathNodeTypesRegistry; -@Mixin(class_9316.class) +@Mixin(PathContext.class) public abstract class class_9316Mixin { @Shadow public abstract BlockState method_57623(BlockPos blockPos); @@ -42,7 +42,7 @@ public abstract class class_9316Mixin { /** * Overrides the node type for the specified position, if the position is found as neighbor block in a path. */ - @Inject(method = "method_57622", at = @At(value = "INVOKE_ASSIGN", target = "Lnet/minecraft/util/math/BlockPos$Mutable;set(III)Lnet/minecraft/util/math/BlockPos$Mutable;"), cancellable = true) + @Inject(method = "getNodeType", at = @At(value = "INVOKE_ASSIGN", target = "Lnet/minecraft/util/math/BlockPos$Mutable;set(III)Lnet/minecraft/util/math/BlockPos$Mutable;"), cancellable = true) private void method_57622(int x, int y, int z, CallbackInfoReturnable<PathNodeType> cir, @Local BlockPos pos) { final PathNodeType neighborNodeType = LandPathNodeTypesRegistry.getPathNodeType(method_57623(pos), method_57621(), pos, true); diff --git a/fabric-data-generation-api-v1/src/main/resources/fabric-data-generation-api-v1.accesswidener b/fabric-data-generation-api-v1/src/main/resources/fabric-data-generation-api-v1.accesswidener index f1cf8823f..0e1f0a51e 100644 --- a/fabric-data-generation-api-v1/src/main/resources/fabric-data-generation-api-v1.accesswidener +++ b/fabric-data-generation-api-v1/src/main/resources/fabric-data-generation-api-v1.accesswidener @@ -320,12 +320,12 @@ transitive-extendable method net/minecraft/data/MetadataProvider getName ()Ljava transitive-extendable method net/minecraft/data/SnbtProvider getName ()Ljava/lang/String; transitive-extendable method net/minecraft/data/client/ModelProvider getName ()Ljava/lang/String; transitive-extendable method net/minecraft/data/dev/NbtProvider getName ()Ljava/lang/String; +transitive-extendable method net/minecraft/data/report/BiomeParametersProvider getName ()Ljava/lang/String; transitive-extendable method net/minecraft/data/report/BlockListProvider getName ()Ljava/lang/String; transitive-extendable method net/minecraft/data/report/CommandSyntaxProvider getName ()Ljava/lang/String; -transitive-extendable method net/minecraft/data/report/DynamicRegistriesProvider getName ()Ljava/lang/String; transitive-extendable method net/minecraft/data/report/ItemListProvider getName ()Ljava/lang/String; transitive-extendable method net/minecraft/data/report/RegistryDumpProvider getName ()Ljava/lang/String; -transitive-extendable method net/minecraft/data/server/BiomeParametersProvider getName ()Ljava/lang/String; +transitive-extendable method net/minecraft/data/server/DynamicRegistriesProvider getName ()Ljava/lang/String; transitive-extendable method net/minecraft/data/server/advancement/AdvancementProvider getName ()Ljava/lang/String; transitive-extendable method net/minecraft/data/server/loottable/LootTableProvider getName ()Ljava/lang/String; transitive-extendable method net/minecraft/data/server/recipe/RecipeProvider getName ()Ljava/lang/String; 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 f5348b1e7..de98f4369 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 @@ -164,10 +164,10 @@ public class DataGeneratorTestEntrypoint implements DataGeneratorEntrypoint { public void generate(RecipeExporter exporter) { offerPlanksRecipe2(exporter, SIMPLE_BLOCK, ItemTags.ACACIA_LOGS, 1); - ShapelessRecipeJsonBuilder.create(RecipeCategory.MISC, Items.LEATHER, 4).input(Items.ITEM_FRAME) + ShapelessRecipeJsonBuilder.create(RecipeCategory.MISC, Items.DIAMOND_ORE, 4).input(Items.ITEM_FRAME) .criterion("has_frame", conditionsFromItem(Items.ITEM_FRAME)) .offerTo(withConditions(exporter, DefaultResourceConditions.itemsRegistered(Blocks.DIAMOND_BLOCK))); - ShapelessRecipeJsonBuilder.create(RecipeCategory.MISC, Items.LEATHER_BOOTS, 4).input(Items.ITEM_FRAME, 2) + ShapelessRecipeJsonBuilder.create(RecipeCategory.MISC, Items.EMERALD, 4).input(Items.ITEM_FRAME, 2) .criterion("has_frame", conditionsFromItem(Items.ITEM_FRAME)) .offerTo(withConditions(exporter, DefaultResourceConditions.registryContains(BiomeKeys.PLAINS, BiomeKeys.BADLANDS))); diff --git a/fabric-entity-events-v1/src/main/java/net/fabricmc/fabric/api/entity/event/v1/FabricElytraItem.java b/fabric-entity-events-v1/src/main/java/net/fabricmc/fabric/api/entity/event/v1/FabricElytraItem.java index 472dfa6cc..0d7fee1e6 100644 --- a/fabric-entity-events-v1/src/main/java/net/fabricmc/fabric/api/entity/event/v1/FabricElytraItem.java +++ b/fabric-entity-events-v1/src/main/java/net/fabricmc/fabric/api/entity/event/v1/FabricElytraItem.java @@ -52,7 +52,7 @@ public interface FabricElytraItem { * A helper to perform the default vanilla elytra tick logic: damage the elytra every 20 ticks, and send a game event every 10 ticks. */ default void doVanillaElytraTick(LivingEntity entity, ItemStack chestStack) { - int nextRoll = entity.getRoll() + 1; + int nextRoll = entity.getFallFlyingTicks() + 1; if (!entity.getWorld().isClient && nextRoll % 10 == 0) { if ((nextRoll / 10) % 2 == 0) { diff --git a/fabric-item-api-v1/src/client/java/net/fabricmc/fabric/mixin/item/client/ClientPlayerInteractionManagerMixin.java b/fabric-item-api-v1/src/client/java/net/fabricmc/fabric/mixin/item/client/ClientPlayerInteractionManagerMixin.java index 17bb83aa7..1828d56fc 100644 --- a/fabric-item-api-v1/src/client/java/net/fabricmc/fabric/mixin/item/client/ClientPlayerInteractionManagerMixin.java +++ b/fabric-item-api-v1/src/client/java/net/fabricmc/fabric/mixin/item/client/ClientPlayerInteractionManagerMixin.java @@ -45,12 +45,12 @@ public class ClientPlayerInteractionManagerMixin { @Redirect( at = @At( value = "INVOKE", - target = "Lnet/minecraft/item/ItemStack;areItemsAndNbtEqual(Lnet/minecraft/item/ItemStack;Lnet/minecraft/item/ItemStack;)Z" + target = "Lnet/minecraft/item/ItemStack;areItemsAndComponentsEqual(Lnet/minecraft/item/ItemStack;Lnet/minecraft/item/ItemStack;)Z" ), method = "isCurrentlyBreaking" ) private boolean fabricItemContinueBlockBreakingInject(ItemStack stack, ItemStack otherStack) { - boolean stackUnchanged = ItemStack.areItemsAndNbtEqual(stack, this.selectedStack); + boolean stackUnchanged = ItemStack.areItemsAndComponentsEqual(stack, this.selectedStack); if (!stackUnchanged) { // The stack changed and vanilla is about to cancel block breaking progress. Check if the item wants to continue block breaking instead. diff --git a/fabric-item-api-v1/src/testmod/java/net/fabricmc/fabric/test/item/gametest/RecipeGameTest.java b/fabric-item-api-v1/src/testmod/java/net/fabricmc/fabric/test/item/gametest/RecipeGameTest.java index d6876fdb0..71e1bf21a 100644 --- a/fabric-item-api-v1/src/testmod/java/net/fabricmc/fabric/test/item/gametest/RecipeGameTest.java +++ b/fabric-item-api-v1/src/testmod/java/net/fabricmc/fabric/test/item/gametest/RecipeGameTest.java @@ -127,7 +127,7 @@ public class RecipeGameTest implements FabricGameTest { throw new GameTestException("Size doesnt match. " + extraErrorInfo); } - if (!ItemStack.areItemsAndNbtEqual(currentStack, expectedStack)) { + if (!ItemStack.areItemsAndComponentsEqual(currentStack, expectedStack)) { throw new GameTestException("Stack doesnt match. " + extraErrorInfo); } } diff --git a/fabric-item-group-api-v1/src/main/java/net/fabricmc/fabric/api/itemgroup/v1/FabricItemGroupEntries.java b/fabric-item-group-api-v1/src/main/java/net/fabricmc/fabric/api/itemgroup/v1/FabricItemGroupEntries.java index b8a1eb40d..88b95473c 100644 --- a/fabric-item-group-api-v1/src/main/java/net/fabricmc/fabric/api/itemgroup/v1/FabricItemGroupEntries.java +++ b/fabric-item-group-api-v1/src/main/java/net/fabricmc/fabric/api/itemgroup/v1/FabricItemGroupEntries.java @@ -431,7 +431,7 @@ public class FabricItemGroupEntries implements ItemGroup.Entries { checkStacks(newStacks); for (int i = 0; i < addTo.size(); i++) { - if (ItemStack.areItemsAndNbtEqual(anchor, addTo.get(i))) { + if (ItemStack.areItemsAndComponentsEqual(anchor, addTo.get(i))) { addTo.subList(i, i).addAll(newStacks); return; } @@ -446,7 +446,7 @@ public class FabricItemGroupEntries implements ItemGroup.Entries { // Iterate in reverse to add after the last match for (int i = addTo.size() - 1; i >= 0; i--) { - if (ItemStack.areItemsAndNbtEqual(anchor, addTo.get(i))) { + if (ItemStack.areItemsAndComponentsEqual(anchor, addTo.get(i))) { addTo.subList(i + 1, i + 1).addAll(newStacks); return; } 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 cbd812413..41d400788 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 @@ -25,12 +25,12 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.Redirect; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; -import net.minecraft.class_9306; import net.minecraft.entity.Entity; import net.minecraft.registry.DefaultedRegistry; import net.minecraft.util.math.random.Random; import net.minecraft.village.TradeOffer; import net.minecraft.village.TradeOffers; +import net.minecraft.village.TradedItem; import net.minecraft.village.VillagerType; @Mixin(TradeOffers.TypeAwareBuyForOneEmeraldFactory.class) @@ -50,8 +50,8 @@ public abstract class TradeOffersTypeAwareBuyForOneEmeraldFactoryMixin { * 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"), cancellable = true) - private void failOnNullItem(Entity entity, Random random, CallbackInfoReturnable<TradeOffer> cir, @Local() class_9306 buyingItem) { - if (buyingItem.itemStack().isEmpty()) { // Will return true for an "empty" item stack that had null passed in the ctor + private void failOnNullItem(Entity entity, Random random, CallbackInfoReturnable<TradeOffer> cir, @Local() TradedItem tradedItem) { + if (tradedItem.itemStack().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-object-builder-api-v1/src/testmod/java/net/fabricmc/fabric/test/object/builder/VillagerTypeTest1.java b/fabric-object-builder-api-v1/src/testmod/java/net/fabricmc/fabric/test/object/builder/VillagerTypeTest1.java index f68d853b6..45e2d98c8 100644 --- a/fabric-object-builder-api-v1/src/testmod/java/net/fabricmc/fabric/test/object/builder/VillagerTypeTest1.java +++ b/fabric-object-builder-api-v1/src/testmod/java/net/fabricmc/fabric/test/object/builder/VillagerTypeTest1.java @@ -25,7 +25,6 @@ import java.util.Optional; import com.mojang.brigadier.exceptions.SimpleCommandExceptionType; -import net.minecraft.class_9306; import net.minecraft.entity.Entity; import net.minecraft.entity.passive.WanderingTraderEntity; import net.minecraft.item.Item; @@ -37,6 +36,7 @@ import net.minecraft.util.Identifier; import net.minecraft.util.math.random.Random; import net.minecraft.village.TradeOffer; import net.minecraft.village.TradeOffers; +import net.minecraft.village.TradedItem; import net.minecraft.village.VillagerProfession; import net.fabricmc.api.ModInitializer; @@ -51,16 +51,16 @@ public class VillagerTypeTest1 implements ModInitializer { public void onInitialize() { TradeOfferHelper.registerVillagerOffers(VillagerProfession.ARMORER, 1, (factories, rebalanced) -> { Item scrap = rebalanced ? Items.NETHER_BRICK : Items.NETHERITE_SCRAP; - factories.add(new SimpleTradeFactory(new TradeOffer(new class_9306(Items.GOLD_INGOT, 3), Optional.of(new class_9306(scrap, 4)), new ItemStack(Items.NETHERITE_INGOT), 2, 6, 0.15F))); + factories.add(new SimpleTradeFactory(new TradeOffer(new TradedItem(Items.GOLD_INGOT, 3), Optional.of(new TradedItem(scrap, 4)), new ItemStack(Items.NETHERITE_INGOT), 2, 6, 0.15F))); }); // Toolsmith is not rebalanced yet TradeOfferHelper.registerVillagerOffers(VillagerProfession.TOOLSMITH, 1, (factories, rebalanced) -> { Item scrap = rebalanced ? Items.NETHER_BRICK : Items.NETHERITE_SCRAP; - factories.add(new SimpleTradeFactory(new TradeOffer(new class_9306(Items.GOLD_INGOT, 3), Optional.of(new class_9306(scrap, 4)), new ItemStack(Items.NETHERITE_INGOT), 2, 6, 0.15F))); + factories.add(new SimpleTradeFactory(new TradeOffer(new TradedItem(Items.GOLD_INGOT, 3), Optional.of(new TradedItem(scrap, 4)), new ItemStack(Items.NETHERITE_INGOT), 2, 6, 0.15F))); }); TradeOfferHelper.registerWanderingTraderOffers(1, factories -> { - factories.add(new SimpleTradeFactory(new TradeOffer(new class_9306(Items.GOLD_INGOT, 3), Optional.of(new class_9306(Items.NETHERITE_SCRAP, 4)), new ItemStack(Items.NETHERITE_INGOT), 2, 6, 0.35F))); + factories.add(new SimpleTradeFactory(new TradeOffer(new TradedItem(Items.GOLD_INGOT, 3), Optional.of(new TradedItem(Items.NETHERITE_SCRAP, 4)), new ItemStack(Items.NETHERITE_INGOT), 2, 6, 0.35F))); }); TradeOfferHelper.registerRebalancedWanderingTraderOffers(builder -> { @@ -68,28 +68,28 @@ public class VillagerTypeTest1 implements ModInitializer { FOOD_POOL_ID, 5, Registries.ITEM.stream().filter(item -> item.getFoodComponent() != null).map( - item -> new SimpleTradeFactory(new TradeOffer(new class_9306(Items.NETHERITE_INGOT), new ItemStack(item), 3, 4, 0.15F)) + item -> new SimpleTradeFactory(new TradeOffer(new TradedItem(Items.NETHERITE_INGOT), new ItemStack(item), 3, 4, 0.15F)) ).toList() ); builder.addAll( THING_POOL_ID, - new SimpleTradeFactory(new TradeOffer(new class_9306(Items.NETHERITE_INGOT), new ItemStack(Items.MOJANG_BANNER_PATTERN), 1, 4, 0.15F)) + new SimpleTradeFactory(new TradeOffer(new TradedItem(Items.NETHERITE_INGOT), new ItemStack(Items.MOJANG_BANNER_PATTERN), 1, 4, 0.15F)) ); builder.addOffersToPool( TradeOfferHelper.WanderingTraderOffersBuilder.BUY_ITEMS_POOL, - new SimpleTradeFactory(new TradeOffer(new class_9306(Items.BLAZE_POWDER, 1), new ItemStack(Items.EMERALD, 4), 3, 4, 0.15F)), - new SimpleTradeFactory(new TradeOffer(new class_9306(Items.NETHER_WART, 5), new ItemStack(Items.EMERALD, 1), 3, 4, 0.15F)), - new SimpleTradeFactory(new TradeOffer(new class_9306(Items.GOLDEN_CARROT, 4), new ItemStack(Items.EMERALD, 1), 3, 4, 0.15F)) + new SimpleTradeFactory(new TradeOffer(new TradedItem(Items.BLAZE_POWDER, 1), new ItemStack(Items.EMERALD, 4), 3, 4, 0.15F)), + new SimpleTradeFactory(new TradeOffer(new TradedItem(Items.NETHER_WART, 5), new ItemStack(Items.EMERALD, 1), 3, 4, 0.15F)), + new SimpleTradeFactory(new TradeOffer(new TradedItem(Items.GOLDEN_CARROT, 4), new ItemStack(Items.EMERALD, 1), 3, 4, 0.15F)) ); builder.addOffersToPool( TradeOfferHelper.WanderingTraderOffersBuilder.SELL_SPECIAL_ITEMS_POOL, - new SimpleTradeFactory(new TradeOffer(new class_9306(Items.EMERALD, 6), new ItemStack(Items.BRUSH, 1), 1, 4, 0.15F)), - new SimpleTradeFactory(new TradeOffer(new class_9306(Items.DIAMOND, 16), new ItemStack(Items.ELYTRA, 1), 1, 4, 0.15F)), - new SimpleTradeFactory(new TradeOffer(new class_9306(Items.EMERALD, 3), new ItemStack(Items.LEAD, 2), 3, 4, 0.15F)) + new SimpleTradeFactory(new TradeOffer(new TradedItem(Items.EMERALD, 6), new ItemStack(Items.BRUSH, 1), 1, 4, 0.15F)), + new SimpleTradeFactory(new TradeOffer(new TradedItem(Items.DIAMOND, 16), new ItemStack(Items.ELYTRA, 1), 1, 4, 0.15F)), + new SimpleTradeFactory(new TradeOffer(new TradedItem(Items.EMERALD, 3), new ItemStack(Items.LEAD, 2), 3, 4, 0.15F)) ); builder.addOffersToPool( FOOD_POOL_ID, - new SimpleTradeFactory(new TradeOffer(new class_9306(Items.NETHERITE_INGOT), new ItemStack(Items.EGG), 3, 4, 0.15F)) + new SimpleTradeFactory(new TradeOffer(new TradedItem(Items.NETHERITE_INGOT), new ItemStack(Items.EGG), 3, 4, 0.15F)) ); }); diff --git a/fabric-object-builder-api-v1/src/testmod/java/net/fabricmc/fabric/test/object/builder/VillagerTypeTest2.java b/fabric-object-builder-api-v1/src/testmod/java/net/fabricmc/fabric/test/object/builder/VillagerTypeTest2.java index 37baef189..0d7e5b0b7 100644 --- a/fabric-object-builder-api-v1/src/testmod/java/net/fabricmc/fabric/test/object/builder/VillagerTypeTest2.java +++ b/fabric-object-builder-api-v1/src/testmod/java/net/fabricmc/fabric/test/object/builder/VillagerTypeTest2.java @@ -16,10 +16,10 @@ package net.fabricmc.fabric.test.object.builder; -import net.minecraft.class_9306; import net.minecraft.item.ItemStack; import net.minecraft.item.Items; import net.minecraft.village.TradeOffer; +import net.minecraft.village.TradedItem; import net.minecraft.village.VillagerProfession; import net.fabricmc.api.ModInitializer; @@ -32,22 +32,22 @@ public class VillagerTypeTest2 implements ModInitializer { @Override public void onInitialize() { TradeOfferHelper.registerVillagerOffers(VillagerProfession.WEAPONSMITH, 1, factories -> { - factories.add(new SimpleTradeFactory(new TradeOffer(new class_9306(Items.DIAMOND, 5), new ItemStack(Items.NETHERITE_INGOT), 3, 4, 0.15F))); + factories.add(new SimpleTradeFactory(new TradeOffer(new TradedItem(Items.DIAMOND, 5), new ItemStack(Items.NETHERITE_INGOT), 3, 4, 0.15F))); }); TradeOfferHelper.registerVillagerOffers(VillagerProfession.ARMORER, 1, factories -> { - factories.add(new SimpleTradeFactory(new TradeOffer(new class_9306(Items.DIAMOND, 6), new ItemStack(Items.ELYTRA), 3, 4, 0.15F))); + factories.add(new SimpleTradeFactory(new TradeOffer(new TradedItem(Items.DIAMOND, 6), new ItemStack(Items.ELYTRA), 3, 4, 0.15F))); }); TradeOfferHelper.registerVillagerOffers(VillagerProfession.ARMORER, 1, factories -> { - factories.add(new SimpleTradeFactory(new TradeOffer(new class_9306(Items.DIAMOND, 7), new ItemStack(Items.CHAINMAIL_BOOTS), 3, 4, 0.15F))); + factories.add(new SimpleTradeFactory(new TradeOffer(new TradedItem(Items.DIAMOND, 7), new ItemStack(Items.CHAINMAIL_BOOTS), 3, 4, 0.15F))); }); TradeOfferHelper.registerVillagerOffers(VillagerProfession.ARMORER, 1, factories -> { - factories.add(new SimpleTradeFactory(new TradeOffer(new class_9306(Items.DIAMOND, 8), new ItemStack(Items.CHAINMAIL_CHESTPLATE), 3, 4, 0.15F))); + factories.add(new SimpleTradeFactory(new TradeOffer(new TradedItem(Items.DIAMOND, 8), new ItemStack(Items.CHAINMAIL_CHESTPLATE), 3, 4, 0.15F))); }); TradeOfferHelper.registerVillagerOffers(VillagerProfession.ARMORER, 1, factories -> { - factories.add(new SimpleTradeFactory(new TradeOffer(new class_9306(Items.DIAMOND, 9), new ItemStack(Items.CHAINMAIL_HELMET), 3, 4, 0.15F))); + factories.add(new SimpleTradeFactory(new TradeOffer(new TradedItem(Items.DIAMOND, 9), new ItemStack(Items.CHAINMAIL_HELMET), 3, 4, 0.15F))); }); TradeOfferHelper.registerVillagerOffers(VillagerProfession.ARMORER, 1, factories -> { - factories.add(new SimpleTradeFactory(new TradeOffer(new class_9306(Items.DIAMOND, 10), new ItemStack(Items.CHAINMAIL_LEGGINGS), 3, 4, 0.15F))); + factories.add(new SimpleTradeFactory(new TradeOffer(new TradedItem(Items.DIAMOND, 10), new ItemStack(Items.CHAINMAIL_LEGGINGS), 3, 4, 0.15F))); }); } } diff --git a/fabric-transfer-api-v1/src/main/java/net/fabricmc/fabric/impl/transfer/item/InventorySlotWrapper.java b/fabric-transfer-api-v1/src/main/java/net/fabricmc/fabric/impl/transfer/item/InventorySlotWrapper.java index 2c46b901c..9dddfa9b3 100644 --- a/fabric-transfer-api-v1/src/main/java/net/fabricmc/fabric/impl/transfer/item/InventorySlotWrapper.java +++ b/fabric-transfer-api-v1/src/main/java/net/fabricmc/fabric/impl/transfer/item/InventorySlotWrapper.java @@ -163,7 +163,7 @@ class InventorySlotWrapper extends SingleStackStorage { original.set(type, null); } - original.copyComponentsFrom(currentStack.getComponents()); + original.applyComponentsFrom(currentStack.getComponents()); } // None is empty and the items and components match: just update the amount, and reuse the original stack. diff --git a/fabric-transfer-api-v1/src/main/java/net/fabricmc/fabric/mixin/transfer/AbstractFurnaceBlockEntityMixin.java b/fabric-transfer-api-v1/src/main/java/net/fabricmc/fabric/mixin/transfer/AbstractFurnaceBlockEntityMixin.java index 0826d53df..51c21050b 100644 --- a/fabric-transfer-api-v1/src/main/java/net/fabricmc/fabric/mixin/transfer/AbstractFurnaceBlockEntityMixin.java +++ b/fabric-transfer-api-v1/src/main/java/net/fabricmc/fabric/mixin/transfer/AbstractFurnaceBlockEntityMixin.java @@ -73,7 +73,7 @@ public abstract class AbstractFurnaceBlockEntityMixin extends LockableContainerB ItemStack stack = newStack; // Update cook time if needed. Code taken from AbstractFurnaceBlockEntity#setStack. - boolean bl = !stack.isEmpty() && ItemStack.areItemsAndNbtEqual(stack, itemStack); + boolean bl = !stack.isEmpty() && ItemStack.areItemsAndComponentsEqual(stack, itemStack); if (!bl) { this.cookTimeTotal = getCookTime(this.world, (AbstractFurnaceBlockEntity) (Object) this); diff --git a/fabric-transfer-api-v1/src/main/java/net/fabricmc/fabric/mixin/transfer/LootableContainerBlockEntityMixin.java b/fabric-transfer-api-v1/src/main/java/net/fabricmc/fabric/mixin/transfer/LockableContainerBlockEntityMixin.java similarity index 74% rename from fabric-transfer-api-v1/src/main/java/net/fabricmc/fabric/mixin/transfer/LootableContainerBlockEntityMixin.java rename to fabric-transfer-api-v1/src/main/java/net/fabricmc/fabric/mixin/transfer/LockableContainerBlockEntityMixin.java index 0e5e2cb1f..d0732f9b2 100644 --- a/fabric-transfer-api-v1/src/main/java/net/fabricmc/fabric/mixin/transfer/LootableContainerBlockEntityMixin.java +++ b/fabric-transfer-api-v1/src/main/java/net/fabricmc/fabric/mixin/transfer/LockableContainerBlockEntityMixin.java @@ -16,12 +16,13 @@ package net.fabricmc.fabric.mixin.transfer; +import com.llamalad7.mixinextras.injector.wrapoperation.Operation; +import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Redirect; -import net.minecraft.block.entity.LootableContainerBlockEntity; +import net.minecraft.block.entity.LockableContainerBlockEntity; import net.minecraft.item.ItemStack; import net.fabricmc.fabric.impl.transfer.item.SpecialLogicInventory; @@ -29,18 +30,18 @@ import net.fabricmc.fabric.impl.transfer.item.SpecialLogicInventory; /** * Defer markDirty until the outer transaction close callback when setStack is called from an inventory wrapper. */ -@Mixin(LootableContainerBlockEntity.class) -public class LootableContainerBlockEntityMixin implements SpecialLogicInventory { +@Mixin(LockableContainerBlockEntity.class) +public class LockableContainerBlockEntityMixin implements SpecialLogicInventory { @Unique private boolean fabric_suppressSpecialLogic = false; - @Redirect( - at = @At(value = "INVOKE", target = "Lnet/minecraft/block/entity/LootableContainerBlockEntity;markDirty()V"), + @WrapOperation( + at = @At(value = "INVOKE", target = "Lnet/minecraft/block/entity/LockableContainerBlockEntity;markDirty()V"), method = "setStack(ILnet/minecraft/item/ItemStack;)V" ) - public void fabric_redirectMarkDirty(LootableContainerBlockEntity self) { + public void fabric_redirectMarkDirty(LockableContainerBlockEntity instance, Operation<Void> original) { if (!fabric_suppressSpecialLogic) { - self.markDirty(); + original.call(instance); } } diff --git a/fabric-transfer-api-v1/src/main/resources/fabric-transfer-api-v1.mixins.json b/fabric-transfer-api-v1/src/main/resources/fabric-transfer-api-v1.mixins.json index f74b8199b..363fb29ef 100644 --- a/fabric-transfer-api-v1/src/main/resources/fabric-transfer-api-v1.mixins.json +++ b/fabric-transfer-api-v1/src/main/resources/fabric-transfer-api-v1.mixins.json @@ -13,7 +13,7 @@ "HopperBlockEntityMixin", "ItemMixin", "JukeboxBlockEntityMixin", - "LootableContainerBlockEntityMixin", + "LockableContainerBlockEntityMixin", "SimpleInventoryMixin" ] } diff --git a/fabric-transfer-api-v1/src/testmod/java/net/fabricmc/fabric/test/transfer/gametests/VanillaStorageTests.java b/fabric-transfer-api-v1/src/testmod/java/net/fabricmc/fabric/test/transfer/gametests/VanillaStorageTests.java index 6ceecae5f..5bbda91b8 100644 --- a/fabric-transfer-api-v1/src/testmod/java/net/fabricmc/fabric/test/transfer/gametests/VanillaStorageTests.java +++ b/fabric-transfer-api-v1/src/testmod/java/net/fabricmc/fabric/test/transfer/gametests/VanillaStorageTests.java @@ -119,6 +119,10 @@ public class VanillaStorageTests { context.setBlockState(comparatorPos, Blocks.COMPARATOR.getDefaultState().with(ComparatorBlock.FACING, Direction.WEST)); try (Transaction transaction = Transaction.openOuter()) { + if (world.getBlockTickScheduler().isQueued(context.getAbsolutePos(comparatorPos), Blocks.COMPARATOR)) { + throw new GameTestException("Comparator should not have a tick scheduled."); + } + storage.insert(variant, 1000000, transaction); // uncommitted insert should not schedule an update diff --git a/gradle.properties b/gradle.properties index 1c4218ef5..47d20b71f 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,9 +2,9 @@ org.gradle.jvmargs=-Xmx2560M org.gradle.parallel=true fabric.loom.multiProjectOptimisation=true -version=0.96.7 -minecraft_version=24w09a -yarn_version=+build.5 +version=0.96.8 +minecraft_version=24w10a +yarn_version=+build.1 loader_version=0.15.6 installer_version=0.11.1 @@ -13,7 +13,7 @@ curseforge_minecraft_version=1.20.5-Snapshot # Do not manually update, use the bumpversions task: fabric-api-base-version=0.4.38 -fabric-api-lookup-api-v1-version=1.6.54 +fabric-api-lookup-api-v1-version=1.6.55 fabric-biome-api-v1-version=13.0.20 fabric-block-api-v1-version=1.0.18 fabric-block-view-api-v2-version=1.0.6 @@ -21,18 +21,18 @@ fabric-blockrenderlayer-v1-version=1.1.48 fabric-command-api-v1-version=1.2.43 fabric-command-api-v2-version=2.2.22 fabric-commands-v0-version=0.2.60 -fabric-content-registries-v0-version=6.0.10 +fabric-content-registries-v0-version=6.0.11 fabric-crash-report-info-v1-version=0.2.25 -fabric-data-attachment-api-v1-version=1.1.5 -fabric-data-generation-api-v1-version=17.0.1 +fabric-data-attachment-api-v1-version=1.1.6 +fabric-data-generation-api-v1-version=17.0.2 fabric-dimensions-v1-version=2.1.64 -fabric-entity-events-v1-version=1.6.4 +fabric-entity-events-v1-version=1.6.5 fabric-events-interaction-v0-version=0.7.4 -fabric-events-lifecycle-v0-version=0.2.80 +fabric-events-lifecycle-v0-version=0.2.81 fabric-game-rule-api-v1-version=1.0.48 fabric-gametest-api-v1-version=1.3.9 -fabric-item-api-v1-version=5.0.0 -fabric-item-group-api-v1-version=4.0.29 +fabric-item-api-v1-version=5.0.1 +fabric-item-group-api-v1-version=4.0.30 fabric-key-binding-api-v1-version=1.0.43 fabric-keybindings-v0-version=0.2.41 fabric-lifecycle-events-v1-version=2.3.0 @@ -42,10 +42,10 @@ fabric-mining-level-api-v1-version=2.1.68 fabric-model-loading-api-v1-version=1.0.10 fabric-models-v0-version=0.4.9 fabric-networking-api-v1-version=4.0.3 -fabric-object-builder-api-v1-version=14.0.7 +fabric-object-builder-api-v1-version=14.0.8 fabric-particles-v1-version=2.0.0 fabric-recipe-api-v1-version=4.0.0 -fabric-registry-sync-v0-version=5.0.7 +fabric-registry-sync-v0-version=5.0.8 fabric-renderer-api-v1-version=3.2.9 fabric-renderer-indigo-version=1.5.9 fabric-renderer-registries-v1-version=3.2.57 @@ -56,9 +56,9 @@ fabric-rendering-v1-version=4.2.0 fabric-resource-conditions-api-v1-version=2.3.18 fabric-resource-loader-v0-version=0.11.23 fabric-screen-api-v1-version=2.0.19 -fabric-screen-handler-api-v1-version=1.3.64 +fabric-screen-handler-api-v1-version=1.3.65 fabric-sound-api-v1-version=1.0.19 -fabric-transfer-api-v1-version=5.0.1 +fabric-transfer-api-v1-version=5.0.2 fabric-transitive-access-wideners-v1-version=6.0.6 fabric-convention-tags-v1-version=1.5.13 fabric-client-tags-api-v1-version=1.1.9