Skip to content

Commit 0d1668b

Browse files
authored
Fix Item/Block color API (#230)
1 parent 7c5951b commit 0d1668b

File tree

3 files changed

+28
-4
lines changed

3 files changed

+28
-4
lines changed

fabric-rendering-v1/src/client/java/net/fabricmc/fabric/mixin/client/rendering/BlockColorsMixin.java

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,15 +25,25 @@
2525
import org.spongepowered.asm.mixin.Final;
2626
import org.spongepowered.asm.mixin.Mixin;
2727
import org.spongepowered.asm.mixin.Shadow;
28+
import org.spongepowered.asm.mixin.injection.Inject;
29+
import org.spongepowered.asm.mixin.injection.At;
30+
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
31+
32+
import java.util.Map;
2833

2934
@Mixin(BlockColors.class)
3035
public class BlockColorsMixin implements ColorProviderRegistryImpl.ColorMapperHolder<Block, BlockColor> {
3136
@Shadow
3237
@Final
33-
private IdMapper<BlockColor> blockColors;
38+
private Map<Block, BlockColor> blockColors;
39+
40+
@Inject(method = "createDefault", at = @At("RETURN"))
41+
private static void createDefault(CallbackInfoReturnable<BlockColors> info) {
42+
ColorProviderRegistryImpl.BLOCK.initialize(info.getReturnValue());
43+
}
3444

3545
@Override
3646
public BlockColor get(Block block) {
37-
return blockColors.byId(BuiltInRegistries.BLOCK.getId(block));
47+
return blockColors.get(block);
3848
}
3949
}

fabric-rendering-v1/src/client/java/net/fabricmc/fabric/mixin/client/rendering/ItemColorsMixin.java

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,23 +17,35 @@
1717
package net.fabricmc.fabric.mixin.client.rendering;
1818

1919
import net.fabricmc.fabric.impl.client.rendering.ColorProviderRegistryImpl;
20+
import net.minecraft.client.color.block.BlockColors;
2021
import net.minecraft.client.color.item.ItemColor;
2122
import net.minecraft.client.color.item.ItemColors;
2223
import net.minecraft.core.IdMapper;
2324
import net.minecraft.core.registries.BuiltInRegistries;
25+
import net.minecraft.world.item.Item;
2426
import net.minecraft.world.level.ItemLike;
2527
import org.spongepowered.asm.mixin.Final;
2628
import org.spongepowered.asm.mixin.Mixin;
2729
import org.spongepowered.asm.mixin.Shadow;
30+
import org.spongepowered.asm.mixin.injection.At;
31+
import org.spongepowered.asm.mixin.injection.Inject;
32+
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
33+
34+
import java.util.Map;
2835

2936
@Mixin(ItemColors.class)
3037
public class ItemColorsMixin implements ColorProviderRegistryImpl.ColorMapperHolder<ItemLike, ItemColor> {
3138
@Shadow
3239
@Final
33-
private IdMapper<ItemColor> itemColors;
40+
private Map<Item, ItemColor> itemColors;
41+
42+
@Inject(method = "createDefault", at = @At("RETURN"))
43+
private static void createDefault(BlockColors blockMap, CallbackInfoReturnable<ItemColors> info) {
44+
ColorProviderRegistryImpl.ITEM.initialize(info.getReturnValue());
45+
}
3446

3547
@Override
3648
public ItemColor get(ItemLike item) {
37-
return itemColors.byId(BuiltInRegistries.ITEM.getId(item.asItem()));
49+
return itemColors.get(item.asItem());
3850
}
3951
}

fabric-rendering-v1/src/client/resources/fabric-rendering-v1.mixins.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,13 @@
55
"client": [
66
"ArmorFeatureRendererMixin",
77
"AtlasSourceManagerAccessor",
8+
"BlockColorsMixin",
89
"BuiltinModelItemRendererMixin",
910
"CapeFeatureRendererMixin",
1011
"DimensionEffectsAccessor",
1112
"EntityModelLayersAccessor",
1213
"EntityRenderersMixin",
14+
"ItemColorsMixin",
1315
"LivingEntityRendererAccessor",
1416
"TooltipComponentMixin",
1517
"WorldRendererMixin",

0 commit comments

Comments
 (0)