From 58d57f7cb588dc905eeabe9d294aa5efdd8e8f60 Mon Sep 17 00:00:00 2001 From: Ned Hunter Date: Sun, 8 Jun 2025 23:09:47 -0400 Subject: [PATCH] Fix Item/Block color API --- .../mixin/client/rendering/BlockColorsMixin.java | 14 ++++++++++++-- .../mixin/client/rendering/ItemColorsMixin.java | 16 ++++++++++++++-- .../resources/fabric-rendering-v1.mixins.json | 2 ++ 3 files changed, 28 insertions(+), 4 deletions(-) diff --git a/fabric-rendering-v1/src/client/java/net/fabricmc/fabric/mixin/client/rendering/BlockColorsMixin.java b/fabric-rendering-v1/src/client/java/net/fabricmc/fabric/mixin/client/rendering/BlockColorsMixin.java index b88614d90..09dfa2725 100644 --- a/fabric-rendering-v1/src/client/java/net/fabricmc/fabric/mixin/client/rendering/BlockColorsMixin.java +++ b/fabric-rendering-v1/src/client/java/net/fabricmc/fabric/mixin/client/rendering/BlockColorsMixin.java @@ -25,15 +25,25 @@ import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +import java.util.Map; @Mixin(BlockColors.class) public class BlockColorsMixin implements ColorProviderRegistryImpl.ColorMapperHolder { @Shadow @Final - private IdMapper blockColors; + private Map blockColors; + + @Inject(method = "createDefault", at = @At("RETURN")) + private static void createDefault(CallbackInfoReturnable info) { + ColorProviderRegistryImpl.BLOCK.initialize(info.getReturnValue()); + } @Override public BlockColor get(Block block) { - return blockColors.byId(BuiltInRegistries.BLOCK.getId(block)); + return blockColors.get(block); } } diff --git a/fabric-rendering-v1/src/client/java/net/fabricmc/fabric/mixin/client/rendering/ItemColorsMixin.java b/fabric-rendering-v1/src/client/java/net/fabricmc/fabric/mixin/client/rendering/ItemColorsMixin.java index 2decb200c..72b0f0742 100644 --- a/fabric-rendering-v1/src/client/java/net/fabricmc/fabric/mixin/client/rendering/ItemColorsMixin.java +++ b/fabric-rendering-v1/src/client/java/net/fabricmc/fabric/mixin/client/rendering/ItemColorsMixin.java @@ -17,23 +17,35 @@ package net.fabricmc.fabric.mixin.client.rendering; import net.fabricmc.fabric.impl.client.rendering.ColorProviderRegistryImpl; +import net.minecraft.client.color.block.BlockColors; import net.minecraft.client.color.item.ItemColor; import net.minecraft.client.color.item.ItemColors; import net.minecraft.core.IdMapper; import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.world.item.Item; import net.minecraft.world.level.ItemLike; 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.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +import java.util.Map; @Mixin(ItemColors.class) public class ItemColorsMixin implements ColorProviderRegistryImpl.ColorMapperHolder { @Shadow @Final - private IdMapper itemColors; + private Map itemColors; + + @Inject(method = "createDefault", at = @At("RETURN")) + private static void createDefault(BlockColors blockMap, CallbackInfoReturnable info) { + ColorProviderRegistryImpl.ITEM.initialize(info.getReturnValue()); + } @Override public ItemColor get(ItemLike item) { - return itemColors.byId(BuiltInRegistries.ITEM.getId(item.asItem())); + return itemColors.get(item.asItem()); } } diff --git a/fabric-rendering-v1/src/client/resources/fabric-rendering-v1.mixins.json b/fabric-rendering-v1/src/client/resources/fabric-rendering-v1.mixins.json index 28e1ca071..2fab9e8dc 100644 --- a/fabric-rendering-v1/src/client/resources/fabric-rendering-v1.mixins.json +++ b/fabric-rendering-v1/src/client/resources/fabric-rendering-v1.mixins.json @@ -5,11 +5,13 @@ "client": [ "ArmorFeatureRendererMixin", "AtlasSourceManagerAccessor", + "BlockColorsMixin", "BuiltinModelItemRendererMixin", "CapeFeatureRendererMixin", "DimensionEffectsAccessor", "EntityModelLayersAccessor", "EntityRenderersMixin", + "ItemColorsMixin", "LivingEntityRendererAccessor", "TooltipComponentMixin", "WorldRendererMixin",