From 03ef495b7fa6ba8e61393c528cafae430a9dbd45 Mon Sep 17 00:00:00 2001
From: modmuss50 <modmuss50@gmail.com>
Date: Wed, 10 May 2023 14:51:08 +0100
Subject: [PATCH] 1.20-pre1

---
 .../test/lookup/compat/ItemStackUtil.java     | 28 -------------------
 .../test/lookup/compat/WrappedInventory.java  |  2 +-
 ...abric-data-generation-api-v1.accesswidener |  4 +--
 .../ClientPlayerInteractionManagerMixin.java  | 13 +++++----
 .../test/item/gametest/RecipeGameTest.java    |  4 ++-
 .../ingredient/ShapelessRecipeMixin.java      |  4 +--
 .../AbstractFurnaceBlockEntityMixin.java      |  2 +-
 ...ransitive-access-wideners-v1.accesswidener | 16 +++++------
 gradle.properties                             | 18 ++++++------
 9 files changed, 32 insertions(+), 59 deletions(-)
 delete mode 100644 fabric-api-lookup-api-v1/src/testmod/java/net/fabricmc/fabric/test/lookup/compat/ItemStackUtil.java

diff --git a/fabric-api-lookup-api-v1/src/testmod/java/net/fabricmc/fabric/test/lookup/compat/ItemStackUtil.java b/fabric-api-lookup-api-v1/src/testmod/java/net/fabricmc/fabric/test/lookup/compat/ItemStackUtil.java
deleted file mode 100644
index 17eefaa41..000000000
--- a/fabric-api-lookup-api-v1/src/testmod/java/net/fabricmc/fabric/test/lookup/compat/ItemStackUtil.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * 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.test.lookup.compat;
-
-import net.minecraft.item.ItemStack;
-
-final class ItemStackUtil {
-	public static boolean areEqualIgnoreCount(ItemStack s1, ItemStack s2) {
-		return s1.getItem() == s2.getItem() && ItemStack.areNbtEqual(s1, s2);
-	}
-
-	private ItemStackUtil() {
-	}
-}
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 31609193e..cca461275 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() || ItemStackUtil.areEqualIgnoreCount(stack, input)) {
+				if (stack.isEmpty() || ItemStack.canCombine(stack, input)) {
 					int remainingSpace = Math.min(inv.getMaxCountPerStack(), stack.getItem().getMaxCount()) - stack.getCount();
 					int inserted = Math.min(remainingSpace, input.getCount());
 
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 00229641e..fc7b34c9b 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
@@ -82,11 +82,9 @@ transitive-accessible	method	net/minecraft/data/server/recipe/RecipeProvider	cre
 transitive-accessible	method	net/minecraft/data/server/recipe/RecipeProvider	createTrapdoorRecipe	(Lnet/minecraft/item/ItemConvertible;Lnet/minecraft/recipe/Ingredient;)Lnet/minecraft/data/server/recipe/CraftingRecipeJsonBuilder;
 transitive-accessible	method	net/minecraft/data/server/recipe/RecipeProvider	createSignRecipe	(Lnet/minecraft/item/ItemConvertible;Lnet/minecraft/recipe/Ingredient;)Lnet/minecraft/data/server/recipe/CraftingRecipeJsonBuilder;
 transitive-accessible	method	net/minecraft/data/server/recipe/RecipeProvider	offerHangingSignRecipe	(Ljava/util/function/Consumer;Lnet/minecraft/item/ItemConvertible;Lnet/minecraft/item/ItemConvertible;)V
-transitive-accessible	method	net/minecraft/data/server/recipe/RecipeProvider	offerWoolDyeingRecipe	(Ljava/util/function/Consumer;Lnet/minecraft/item/ItemConvertible;Lnet/minecraft/item/ItemConvertible;)V
+transitive-accessible	method	net/minecraft/data/server/recipe/RecipeProvider	method_51890	(Ljava/util/function/Consumer;Ljava/util/List;Ljava/util/List;)V
 transitive-accessible	method	net/minecraft/data/server/recipe/RecipeProvider	offerCarpetRecipe	(Ljava/util/function/Consumer;Lnet/minecraft/item/ItemConvertible;Lnet/minecraft/item/ItemConvertible;)V
-transitive-accessible	method	net/minecraft/data/server/recipe/RecipeProvider	offerCarpetDyeingRecipe	(Ljava/util/function/Consumer;Lnet/minecraft/item/ItemConvertible;Lnet/minecraft/item/ItemConvertible;)V
 transitive-accessible	method	net/minecraft/data/server/recipe/RecipeProvider	offerBedRecipe	(Ljava/util/function/Consumer;Lnet/minecraft/item/ItemConvertible;Lnet/minecraft/item/ItemConvertible;)V
-transitive-accessible	method	net/minecraft/data/server/recipe/RecipeProvider	offerBedDyeingRecipe	(Ljava/util/function/Consumer;Lnet/minecraft/item/ItemConvertible;Lnet/minecraft/item/ItemConvertible;)V
 transitive-accessible	method	net/minecraft/data/server/recipe/RecipeProvider	offerBannerRecipe	(Ljava/util/function/Consumer;Lnet/minecraft/item/ItemConvertible;Lnet/minecraft/item/ItemConvertible;)V
 transitive-accessible	method	net/minecraft/data/server/recipe/RecipeProvider	offerStainedGlassDyeingRecipe	(Ljava/util/function/Consumer;Lnet/minecraft/item/ItemConvertible;Lnet/minecraft/item/ItemConvertible;)V
 transitive-accessible	method	net/minecraft/data/server/recipe/RecipeProvider	offerStainedGlassPaneRecipe	(Ljava/util/function/Consumer;Lnet/minecraft/item/ItemConvertible;Lnet/minecraft/item/ItemConvertible;)V
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 61f2de56f..e1bb1060c 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
@@ -20,7 +20,7 @@ import org.spongepowered.asm.mixin.Final;
 import org.spongepowered.asm.mixin.Mixin;
 import org.spongepowered.asm.mixin.Shadow;
 import org.spongepowered.asm.mixin.injection.At;
-import org.spongepowered.asm.mixin.injection.ModifyVariable;
+import org.spongepowered.asm.mixin.injection.Redirect;
 
 import net.minecraft.client.MinecraftClient;
 import net.minecraft.client.network.ClientPlayerInteractionManager;
@@ -42,15 +42,16 @@ public class ClientPlayerInteractionManagerMixin {
 	 * For this, we inject after vanilla decided that the stack was "not unchanged", and we set if back to "unchanged"
 	 * if the item wishes to continue mining.
 	 */
-	@ModifyVariable(
+	@Redirect(
 			at = @At(
 					value = "INVOKE",
-					target = "net/minecraft/util/math/BlockPos.equals(Ljava/lang/Object;)Z"
+					target = "Lnet/minecraft/item/ItemStack;canCombine(Lnet/minecraft/item/ItemStack;Lnet/minecraft/item/ItemStack;)Z"
 			),
-			method = "isCurrentlyBreaking",
-			index = 3
+			method = "isCurrentlyBreaking"
 	)
-	private boolean fabricItemContinueBlockBreakingInject(boolean stackUnchanged) {
+	private boolean fabricItemContinueBlockBreakingInject(ItemStack stack, ItemStack otherStack) {
+		boolean stackUnchanged = ItemStack.canCombine(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.
 			ItemStack oldStack = this.selectedStack;
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 3489d1876..799e6b23e 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
@@ -16,6 +16,8 @@
 
 package net.fabricmc.fabric.test.item.gametest;
 
+import java.util.Objects;
+
 import net.minecraft.inventory.SimpleInventory;
 import net.minecraft.item.ItemStack;
 import net.minecraft.item.Items;
@@ -133,7 +135,7 @@ public class RecipeGameTest implements FabricGameTest {
 			throw new GameTestException("Size doesnt match. " + extraErrorInfo);
 		}
 
-		if (!ItemStack.areNbtEqual(currentStack, expectedStack)) {
+		if (!Objects.equals(currentStack.getNbt(), expectedStack.getNbt())) {
 			throw new GameTestException("Nbt doesnt match. " + extraErrorInfo);
 		}
 	}
diff --git a/fabric-recipe-api-v1/src/main/java/net/fabricmc/fabric/mixin/recipe/ingredient/ShapelessRecipeMixin.java b/fabric-recipe-api-v1/src/main/java/net/fabricmc/fabric/mixin/recipe/ingredient/ShapelessRecipeMixin.java
index a9e03cef8..588aad765 100644
--- a/fabric-recipe-api-v1/src/main/java/net/fabricmc/fabric/mixin/recipe/ingredient/ShapelessRecipeMixin.java
+++ b/fabric-recipe-api-v1/src/main/java/net/fabricmc/fabric/mixin/recipe/ingredient/ShapelessRecipeMixin.java
@@ -28,7 +28,7 @@ import org.spongepowered.asm.mixin.injection.Inject;
 import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
 import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
 
-import net.minecraft.inventory.CraftingInventory;
+import net.minecraft.class_8566;
 import net.minecraft.item.ItemStack;
 import net.minecraft.recipe.Ingredient;
 import net.minecraft.recipe.ShapelessRecipe;
@@ -58,7 +58,7 @@ public class ShapelessRecipeMixin {
 	}
 
 	@Inject(at = @At("HEAD"), method = "matches", cancellable = true)
-	public void customIngredientMatch(CraftingInventory craftingInventory, World world, CallbackInfoReturnable<Boolean> cir) {
+	public void customIngredientMatch(class_8566 craftingInventory, World world, CallbackInfoReturnable<Boolean> cir) {
 		if (fabric_requiresTesting) {
 			List<ItemStack> nonEmptyStacks = new ArrayList<>(craftingInventory.size());
 
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 8235780fa..3dadba53a 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() && stack.isItemEqual(itemStack) && ItemStack.areNbtEqual(stack, itemStack);
+			boolean bl = !stack.isEmpty() && ItemStack.canCombine(stack, itemStack);
 
 			if (!bl) {
 				this.cookTimeTotal = getCookTime(this.world, (AbstractFurnaceBlockEntity) (Object) this);
diff --git a/fabric-transitive-access-wideners-v1/src/main/resources/fabric-transitive-access-wideners-v1.accesswidener b/fabric-transitive-access-wideners-v1/src/main/resources/fabric-transitive-access-wideners-v1.accesswidener
index 039f9e36f..61b5eb993 100644
--- a/fabric-transitive-access-wideners-v1/src/main/resources/fabric-transitive-access-wideners-v1.accesswidener
+++ b/fabric-transitive-access-wideners-v1/src/main/resources/fabric-transitive-access-wideners-v1.accesswidener
@@ -280,10 +280,10 @@ transitive-accessible field net/minecraft/client/render/RenderPhase TRIPWIRE_PRO
 transitive-accessible field net/minecraft/client/render/RenderPhase END_PORTAL_PROGRAM Lnet/minecraft/client/render/RenderPhase$ShaderProgram;
 transitive-accessible field net/minecraft/client/render/RenderPhase END_GATEWAY_PROGRAM Lnet/minecraft/client/render/RenderPhase$ShaderProgram;
 transitive-accessible field net/minecraft/client/render/RenderPhase LINES_PROGRAM Lnet/minecraft/client/render/RenderPhase$ShaderProgram;
-transitive-accessible field net/minecraft/client/render/RenderPhase field_44817 Lnet/minecraft/client/render/RenderPhase$ShaderProgram;
-transitive-accessible field net/minecraft/client/render/RenderPhase field_44818 Lnet/minecraft/client/render/RenderPhase$ShaderProgram;
-transitive-accessible field net/minecraft/client/render/RenderPhase field_44819 Lnet/minecraft/client/render/RenderPhase$ShaderProgram;
-transitive-accessible field net/minecraft/client/render/RenderPhase field_44820 Lnet/minecraft/client/render/RenderPhase$ShaderProgram;
+transitive-accessible field net/minecraft/client/render/RenderPhase GUI_PROGRAM Lnet/minecraft/client/render/RenderPhase$ShaderProgram;
+transitive-accessible field net/minecraft/client/render/RenderPhase GUI_OVERLAY_PROGRAM Lnet/minecraft/client/render/RenderPhase$ShaderProgram;
+transitive-accessible field net/minecraft/client/render/RenderPhase GUI_TEXT_HIGHLIGHT_PROGRAM Lnet/minecraft/client/render/RenderPhase$ShaderProgram;
+transitive-accessible field net/minecraft/client/render/RenderPhase GUI_GHOST_RECIPE_OVERLAY_PROGRAM Lnet/minecraft/client/render/RenderPhase$ShaderProgram;
 transitive-accessible field net/minecraft/client/render/RenderPhase MIPMAP_BLOCK_ATLAS_TEXTURE Lnet/minecraft/client/render/RenderPhase$Texture;
 transitive-accessible field net/minecraft/client/render/RenderPhase BLOCK_ATLAS_TEXTURE Lnet/minecraft/client/render/RenderPhase$Texture;
 transitive-accessible field net/minecraft/client/render/RenderPhase NO_TEXTURE Lnet/minecraft/client/render/RenderPhase$TextureBase;
@@ -299,7 +299,7 @@ transitive-accessible field net/minecraft/client/render/RenderPhase DISABLE_CULL
 transitive-accessible field net/minecraft/client/render/RenderPhase ALWAYS_DEPTH_TEST Lnet/minecraft/client/render/RenderPhase$DepthTest;
 transitive-accessible field net/minecraft/client/render/RenderPhase EQUAL_DEPTH_TEST Lnet/minecraft/client/render/RenderPhase$DepthTest;
 transitive-accessible field net/minecraft/client/render/RenderPhase LEQUAL_DEPTH_TEST Lnet/minecraft/client/render/RenderPhase$DepthTest;
-transitive-accessible field net/minecraft/client/render/RenderPhase field_44814 Lnet/minecraft/client/render/RenderPhase$DepthTest;
+transitive-accessible field net/minecraft/client/render/RenderPhase BIGGER_DEPTH_TEST Lnet/minecraft/client/render/RenderPhase$DepthTest;
 transitive-accessible field net/minecraft/client/render/RenderPhase ALL_MASK Lnet/minecraft/client/render/RenderPhase$WriteMaskState;
 transitive-accessible field net/minecraft/client/render/RenderPhase COLOR_MASK Lnet/minecraft/client/render/RenderPhase$WriteMaskState;
 transitive-accessible field net/minecraft/client/render/RenderPhase DEPTH_MASK Lnet/minecraft/client/render/RenderPhase$WriteMaskState;
@@ -312,7 +312,7 @@ transitive-accessible field net/minecraft/client/render/RenderPhase TRANSLUCENT_
 transitive-accessible field net/minecraft/client/render/RenderPhase PARTICLES_TARGET Lnet/minecraft/client/render/RenderPhase$Target;
 transitive-accessible field net/minecraft/client/render/RenderPhase WEATHER_TARGET Lnet/minecraft/client/render/RenderPhase$Target;
 transitive-accessible field net/minecraft/client/render/RenderPhase CLOUDS_TARGET Lnet/minecraft/client/render/RenderPhase$Target;
-transitive-accessible field net/minecraft/client/render/RenderPhase ITEM_TARGET Lnet/minecraft/client/render/RenderPhase$Target;
+transitive-accessible field net/minecraft/client/render/RenderPhase ITEM_ENTITY_TARGET Lnet/minecraft/client/render/RenderPhase$Target;
 transitive-accessible field net/minecraft/client/render/RenderPhase FULL_LINE_WIDTH Lnet/minecraft/client/render/RenderPhase$LineWidth;
-transitive-accessible field net/minecraft/client/render/RenderPhase field_44815 Lnet/minecraft/client/render/RenderPhase$class_8559;
-transitive-accessible field net/minecraft/client/render/RenderPhase field_44816 Lnet/minecraft/client/render/RenderPhase$class_8559;
+transitive-accessible field net/minecraft/client/render/RenderPhase NO_COLOR_LOGIC Lnet/minecraft/client/render/RenderPhase$ColorLogic;
+transitive-accessible field net/minecraft/client/render/RenderPhase OR_REVERSE Lnet/minecraft/client/render/RenderPhase$ColorLogic;
diff --git a/gradle.properties b/gradle.properties
index e44dbdeb6..c77323430 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -2,8 +2,8 @@ org.gradle.jvmargs=-Xmx2560M
 org.gradle.parallel=true
 fabric.loom.multiProjectOptimisation=true
 
-version=0.80.1
-minecraft_version=23w18a
+version=0.80.2
+minecraft_version=1.20-pre1
 yarn_version=+build.1
 loader_version=0.14.19
 installer_version=0.11.1
@@ -12,7 +12,7 @@ prerelease=true
 
 # Do not manually update, use the bumpversions task:
 fabric-api-base-version=0.4.26
-fabric-api-lookup-api-v1-version=1.6.29
+fabric-api-lookup-api-v1-version=1.6.30
 fabric-biome-api-v1-version=13.0.9
 fabric-block-api-v1-version=1.0.8
 fabric-blockrenderlayer-v1-version=1.1.36
@@ -22,14 +22,14 @@ fabric-commands-v0-version=0.2.46
 fabric-containers-v0-version=0.1.58
 fabric-content-registries-v0-version=4.0.4
 fabric-crash-report-info-v1-version=0.2.17
-fabric-data-generation-api-v1-version=12.1.3
+fabric-data-generation-api-v1-version=12.1.4
 fabric-dimensions-v1-version=2.1.48
 fabric-entity-events-v1-version=1.5.17
 fabric-events-interaction-v0-version=0.5.0
-fabric-events-lifecycle-v0-version=0.2.56
+fabric-events-lifecycle-v0-version=0.2.57
 fabric-game-rule-api-v1-version=1.0.36
 fabric-gametest-api-v1-version=1.2.7
-fabric-item-api-v1-version=2.1.21
+fabric-item-api-v1-version=2.1.22
 fabric-item-group-api-v1-version=4.0.4
 fabric-key-binding-api-v1-version=1.0.35
 fabric-keybindings-v0-version=0.2.33
@@ -43,7 +43,7 @@ fabric-networking-api-v1-version=1.3.5
 fabric-networking-v0-version=0.3.45
 fabric-object-builder-api-v1-version=11.0.2
 fabric-particles-v1-version=1.0.25
-fabric-recipe-api-v1-version=1.0.12
+fabric-recipe-api-v1-version=1.0.13
 fabric-registry-sync-v0-version=2.2.2
 fabric-renderer-api-v1-version=2.2.8
 fabric-renderer-indigo-version=1.1.4
@@ -57,7 +57,7 @@ fabric-resource-loader-v0-version=0.11.5
 fabric-screen-api-v1-version=2.0.3
 fabric-screen-handler-api-v1-version=1.3.24
 fabric-sound-api-v1-version=1.0.11
-fabric-transfer-api-v1-version=3.1.4
-fabric-transitive-access-wideners-v1-version=4.0.5
+fabric-transfer-api-v1-version=3.1.5
+fabric-transitive-access-wideners-v1-version=4.0.6
 fabric-convention-tags-v1-version=1.4.3
 fabric-client-tags-api-v1-version=1.0.17