From 686cba9c1be0067830584b41220972078e90f987 Mon Sep 17 00:00:00 2001
From: Adrian Siekierka <kontakt@asie.pl>
Date: Sat, 15 Dec 2018 22:09:30 +0100
Subject: [PATCH] update mappings, fix #24

---
 build.gradle                                   |  2 +-
 .../client/render/ColorProviderRegistry.java   |  4 ++--
 .../fabric/block/FabricBlockSettings.java      | 18 ++++++++++++++++++
 .../render/ColorProviderRegistryImpl.java      |  8 ++++----
 .../fabric/mixin/block/MixinBlockBuilder.java  |  7 +++++++
 .../mixin/client/render/MixinItemColorMap.java | 14 +++++++-------
 .../registry/client/MixinItemColorMap.java     |  8 ++++----
 7 files changed, 43 insertions(+), 18 deletions(-)

diff --git a/build.gradle b/build.gradle
index 1fdd0a8de..af80382b4 100644
--- a/build.gradle
+++ b/build.gradle
@@ -38,7 +38,7 @@ minecraft {
 
 dependencies {
 	minecraft "com.mojang:minecraft:$mcVersion"
-	mappings "net.fabricmc:yarn:$mcVersion.9"
+	mappings "net.fabricmc:yarn:$mcVersion.21"
 	modCompile "net.fabricmc:fabric-loader:0.2.0.68"
 }
 
diff --git a/src/main/java/net/fabricmc/fabric/api/client/render/ColorProviderRegistry.java b/src/main/java/net/fabricmc/fabric/api/client/render/ColorProviderRegistry.java
index 88e23ffbe..d77488172 100644
--- a/src/main/java/net/fabricmc/fabric/api/client/render/ColorProviderRegistry.java
+++ b/src/main/java/net/fabricmc/fabric/api/client/render/ColorProviderRegistry.java
@@ -20,10 +20,10 @@ import net.fabricmc.fabric.impl.client.render.ColorProviderRegistryImpl;
 import net.minecraft.block.Block;
 import net.minecraft.client.render.block.BlockColorMapper;
 import net.minecraft.client.render.item.ItemColorMapper;
-import net.minecraft.item.ItemContainer;
+import net.minecraft.item.ItemProvider;
 
 public interface ColorProviderRegistry<T, Provider> {
-	ColorProviderRegistry<ItemContainer, ItemColorMapper> ITEM = ColorProviderRegistryImpl.ITEM;
+	ColorProviderRegistry<ItemProvider, ItemColorMapper> ITEM = ColorProviderRegistryImpl.ITEM;
 
 	ColorProviderRegistry<Block, BlockColorMapper> BLOCK = ColorProviderRegistryImpl.BLOCK;
 
diff --git a/src/main/java/net/fabricmc/fabric/block/FabricBlockSettings.java b/src/main/java/net/fabricmc/fabric/block/FabricBlockSettings.java
index 8e5da693f..112b1e22d 100644
--- a/src/main/java/net/fabricmc/fabric/block/FabricBlockSettings.java
+++ b/src/main/java/net/fabricmc/fabric/block/FabricBlockSettings.java
@@ -48,6 +48,7 @@ public class FabricBlockSettings {
 		void fabric_setRandomTicks(boolean value);
 		void fabric_setFriction(float value);
 		void fabric_setDropTable(Identifier id);
+		void fabric_setDynamicBounds(boolean value);
 	}
 
 	protected final Block.Settings delegate;
@@ -74,6 +75,10 @@ public class FabricBlockSettings {
 		return new FabricBlockSettings(material, color);
 	}
 
+	public static FabricBlockSettings of(Material material, DyeColor color) {
+		return new FabricBlockSettings(material, color.getMaterialColor());
+	}
+
 	public static FabricBlockSettings copy(Block base) {
 		return new FabricBlockSettings(base);
 	}
@@ -110,6 +115,10 @@ public class FabricBlockSettings {
 		return this;
 	}
 
+	public FabricBlockSettings noCollision() {
+		return collidable(false);
+	}
+
 	public FabricBlockSettings sounds(BlockSoundGroup group) {
 		castDelegate.fabric_setSoundGroup(group);
 		return this;
@@ -141,6 +150,10 @@ public class FabricBlockSettings {
 		return this;
 	}
 
+	public FabricBlockSettings breakInstantly() {
+		return hardness(0.0F);
+	}
+
 	public FabricBlockSettings dropsNothing() {
 		return this.drops(LootTables.EMPTY);
 	}
@@ -159,6 +172,11 @@ public class FabricBlockSettings {
 		return this;
 	}
 
+	public FabricBlockSettings dynamicBounds() {
+		castDelegate.fabric_setDynamicBounds(true);
+		return this;
+	}
+
 	/* BUILDING LOGIC */
 
 	public Block.Settings build() {
diff --git a/src/main/java/net/fabricmc/fabric/impl/client/render/ColorProviderRegistryImpl.java b/src/main/java/net/fabricmc/fabric/impl/client/render/ColorProviderRegistryImpl.java
index c635679db..29c62cc39 100644
--- a/src/main/java/net/fabricmc/fabric/impl/client/render/ColorProviderRegistryImpl.java
+++ b/src/main/java/net/fabricmc/fabric/impl/client/render/ColorProviderRegistryImpl.java
@@ -22,7 +22,7 @@ import net.minecraft.client.render.block.BlockColorMap;
 import net.minecraft.client.render.block.BlockColorMapper;
 import net.minecraft.client.render.item.ItemColorMap;
 import net.minecraft.client.render.item.ItemColorMapper;
-import net.minecraft.item.ItemContainer;
+import net.minecraft.item.ItemProvider;
 
 import java.util.IdentityHashMap;
 import java.util.Map;
@@ -35,10 +35,10 @@ public abstract class ColorProviderRegistryImpl<T, Provider, Underlying> impleme
 		}
 	};
 
-	public static final ColorProviderRegistryImpl<ItemContainer, ItemColorMapper, ItemColorMap> ITEM = new ColorProviderRegistryImpl<ItemContainer, ItemColorMapper, ItemColorMap>() {
+	public static final ColorProviderRegistryImpl<ItemProvider, ItemColorMapper, ItemColorMap> ITEM = new ColorProviderRegistryImpl<ItemProvider, ItemColorMapper, ItemColorMap>() {
 		@Override
-		void registerUnderlying(ItemColorMap map, ItemColorMapper mapper, ItemContainer block) {
-			map.method_1708(mapper, block);
+		void registerUnderlying(ItemColorMap map, ItemColorMapper mapper, ItemProvider block) {
+			map.register(mapper, block);
 		}
 	};
 
diff --git a/src/main/java/net/fabricmc/fabric/mixin/block/MixinBlockBuilder.java b/src/main/java/net/fabricmc/fabric/mixin/block/MixinBlockBuilder.java
index 85372fa34..e37e72e60 100644
--- a/src/main/java/net/fabricmc/fabric/mixin/block/MixinBlockBuilder.java
+++ b/src/main/java/net/fabricmc/fabric/mixin/block/MixinBlockBuilder.java
@@ -47,6 +47,8 @@ public class MixinBlockBuilder implements FabricBlockSettings.Delegate {
 	private float friction;
 	@Shadow
 	private Identifier dropTableId;
+	@Shadow
+	private boolean dynamicBounds;
 
 	@Override
 	public void fabric_setMaterialColor(MaterialColor color) {
@@ -92,4 +94,9 @@ public class MixinBlockBuilder implements FabricBlockSettings.Delegate {
 	public void fabric_setDropTable(Identifier id) {
 		dropTableId = id;
 	}
+
+	@Override
+	public void fabric_setDynamicBounds(boolean value) {
+		dynamicBounds = value;
+	}
 }
diff --git a/src/main/java/net/fabricmc/fabric/mixin/client/render/MixinItemColorMap.java b/src/main/java/net/fabricmc/fabric/mixin/client/render/MixinItemColorMap.java
index c52ab756f..f4fbe374d 100644
--- a/src/main/java/net/fabricmc/fabric/mixin/client/render/MixinItemColorMap.java
+++ b/src/main/java/net/fabricmc/fabric/mixin/client/render/MixinItemColorMap.java
@@ -20,7 +20,7 @@ import net.fabricmc.fabric.impl.client.render.ColorProviderRegistryImpl;
 import net.minecraft.client.render.block.BlockColorMap;
 import net.minecraft.client.render.item.ItemColorMap;
 import net.minecraft.client.render.item.ItemColorMapper;
-import net.minecraft.item.ItemContainer;
+import net.minecraft.item.ItemProvider;
 import net.minecraft.util.IdList;
 import net.minecraft.util.registry.Registry;
 import org.spongepowered.asm.mixin.Final;
@@ -31,18 +31,18 @@ import org.spongepowered.asm.mixin.injection.Inject;
 import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
 
 @Mixin(ItemColorMap.class)
-public class MixinItemColorMap implements ColorProviderRegistryImpl.ColorMapperHolder<ItemContainer, ItemColorMapper> {
+public class MixinItemColorMap implements ColorProviderRegistryImpl.ColorMapperHolder<ItemProvider, ItemColorMapper> {
 	@Shadow
 	@Final
-	private IdList<ItemColorMapper> field_1996;
+	private IdList<ItemColorMapper> mappers;
 
-	@Inject(method = "method_1706", at = @At("RETURN"))
-	private static void method_1706(BlockColorMap blockMap, CallbackInfoReturnable<ItemColorMap> info) {
+	@Inject(method = "create", at = @At("RETURN"))
+	private static void create(BlockColorMap blockMap, CallbackInfoReturnable<ItemColorMap> info) {
 		ColorProviderRegistryImpl.ITEM.initialize(info.getReturnValue());
 	}
 
 	@Override
-	public ItemColorMapper get(ItemContainer item) {
-		return field_1996.getInt(Registry.ITEM.getRawId(item.getItem()));
+	public ItemColorMapper get(ItemProvider item) {
+		return mappers.getInt(Registry.ITEM.getRawId(item.getItem()));
 	}
 }
diff --git a/src/main/java/net/fabricmc/fabric/mixin/registry/client/MixinItemColorMap.java b/src/main/java/net/fabricmc/fabric/mixin/registry/client/MixinItemColorMap.java
index 801d2119a..11263090d 100644
--- a/src/main/java/net/fabricmc/fabric/mixin/registry/client/MixinItemColorMap.java
+++ b/src/main/java/net/fabricmc/fabric/mixin/registry/client/MixinItemColorMap.java
@@ -33,15 +33,15 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
 @Mixin(ItemColorMap.class)
 public class MixinItemColorMap implements IdListUpdater.Container<ItemColorMapper> {
 	@Shadow
-	private IdList<ItemColorMapper> field_1996;
+	private IdList<ItemColorMapper> mappers;
 
-	@Inject(method = "method_1706", at = @At("RETURN"))
-	private static void method_1706(BlockColorMap blockMap, CallbackInfoReturnable<ItemColorMap> info) {
+	@Inject(method = "create", at = @At("RETURN"))
+	private static void create(BlockColorMap blockMap, CallbackInfoReturnable<ItemColorMap> info) {
 		((ListenableRegistry) Registry.ITEM).registerListener(new IdListUpdater<Item, ItemColorMapper>((IdListUpdater.Container<ItemColorMapper>) (Object) info.getReturnValue()));
 	}
 
 	@Override
 	public IdList<ItemColorMapper> getIdListForRegistryUpdating() {
-		return field_1996;
+		return mappers;
 	}
 }