33import com .ishikyoo .leavesly .block .Blocks ;
44import com .ishikyoo .leavesly .settings .*;
55import net .fabricmc .fabric .api .client .rendering .v1 .ColorProviderRegistry ;
6- import net .fabricmc .loader .api .FabricLoader ;
7- import net .fabricmc .loader .api .ModContainer ;
86import net .minecraft .block .Block ;
97import net .minecraft .block .BlockState ;
108import net .minecraft .client .MinecraftClient ;
@@ -31,46 +29,55 @@ public class LeaveslyColorProvider {
3129 private static final HashMap <Identifier , Tint > modPatchBlockTintHashMap = new HashMap <>();
3230
3331 public static void initialize () {
34- HashMap <Identifier , BlockData > blocks = LeaveslySettings .getSettings ().getBlocks ();
35- for (Map .Entry <Identifier , BlockData > entry : blocks .entrySet ()) {
36- Identifier id = entry .getKey ();
37- register (id );
38- }
32+ registerBlockAndItemsColors ();
3933 applyModPatch ();
4034 }
4135
4236 public static void register (Identifier id ) {
43- if (Blocks .isRegisteredBlockId (id )) {
37+ if (Blocks .isSupportedBlockId (id )) {
4438 BlockData blockData = LeaveslySettings .getSettings ().getBlock (id );
4539 Tint tint = blockData .getTint ();
4640 if (!registeredBlockIds .contains (id )) {
4741 Block block = Blocks .getBlock (id );
4842 ColorProviderRegistry .BLOCK .register (LeaveslyColorProvider ::getColorProviderBlockColor , block );
4943 ColorProviderRegistry .ITEM .register (LeaveslyColorProvider ::getColorProviderItemColor , block );
50- LOG .info ("Registered block and item color (Id: {}, Tint: {})." , id , tint .getColorType ().toString ().toLowerCase ());
44+ LOG .info ("Registered block and item colors (Id: {}, Tint: {})." , id , tint .getColorType ().toString ().toLowerCase ());
5145 registeredBlockIds .add (id );
5246 } else {
53- LOG .error ("Trying to register a already registered block color (Id: {}, Tint: {})." , id , tint .getColorType ().toString ().toLowerCase ());
47+ LOG .error ("Trying to register a already registered block and item colors (Id: {}, Tint: {})." , id , tint .getColorType ().toString ().toLowerCase ());
5448 }
5549 } else {
56- LOG .error ("Trying to register a block and item color for a unregistered block (Id: {})." , id );
50+ LOG .error ("Trying to register a block and item colors for a unregistered block (Id: {})." , id );
51+ }
52+ }
53+
54+ private static void registerBlockAndItemsColors () {
55+ HashMap <Identifier , BlockData > blocks = LeaveslySettings .getSettings ().getBlocks ();
56+ for (Map .Entry <Identifier , BlockData > entry : blocks .entrySet ()) {
57+ Identifier id = entry .getKey ();
58+ register (id );
5759 }
5860 }
5961
6062 private static void applyModPatch () {
61- LOG .info ("Applying mod patch ..." );
63+ LOG .info ("Registering mod patches ..." );
6264 //Clutter
63- Optional <ModContainer > cutterMc = FabricLoader .getInstance ().getModContainer ("clutter" );
64- if (cutterMc .isPresent ()) {
65- modPatchBlockTintHashMap .put (Identifier .of ("clutter:redwood_leaves" ), Tint .FOLIAGE );
66- modPatchBlockTintHashMap .put (Identifier .of ("clutter:giant_fern" ), Tint .GRASS );
67- LOG .info ("Applied mod patch for (modid: clutter)." );
65+ String clutterId = "clutter" ;
66+ registerModBlockPatch (Identifier .of (clutterId , "redwood_leaves" ), Tint .FOLIAGE );
67+ registerModBlockPatch (Identifier .of (clutterId , "giant_fern" ), Tint .GRASS );
68+ }
69+
70+ private static void registerModBlockPatch (Identifier blockId , Tint tint ) {
71+ LeaveslySettingsData settings = LeaveslySettings .getSettings ();
72+ if (!settings .isRegisteredBlockId (blockId ) && Blocks .isRegisteredBlockId (blockId )) {
73+ modPatchBlockTintHashMap .put (blockId , tint );
74+ LOG .info ("Registered block and item colors mod patch (Id: {}, Tint: {})." , blockId , tint .getColorType ().toString ().toLowerCase ());
6875 }
6976 }
7077
7178 private static int getColorProviderBlockColor (BlockState state , BlockRenderView world , BlockPos position , int index ) {
7279 Block block = state .getBlock ();
73- if (Blocks .isRegisteredBlock (block )) {
80+ if (Blocks .isSupportedBlock (block )) {
7481 int snowLayer = state .get (SNOW_LAYER );
7582 int blockColor = getBlockColor (state , world , position );
7683 LeaveslySettingsData settings = LeaveslySettings .getSettings ();
@@ -88,18 +95,18 @@ private static int getColorProviderBlockColor(BlockState state, BlockRenderView
8895 } else {
8996 if (isModPatchBlock (block ))
9097 return getModPatchBlockColor (block , world , position );
91- return 0 ;
98+ return Tint . NEON_PINK . getColorValue () ;
9299 }
93100 }
94101
95102 private static int getColorProviderItemColor (ItemStack stack , int index ) {
96103 Block block = Block .getBlockFromItem (stack .getItem ());
97- if (Blocks .isRegisteredBlock (block )) {
104+ if (Blocks .isSupportedBlock (block )) {
98105 return getItemColor (block );
99106 } else {
100107 if (isModPatchBlock (block ))
101108 return getModPatchItemColor (block );
102- return 0 ;
109+ return Tint . NEON_PINK . getColorValue () ;
103110 }
104111 }
105112
@@ -108,24 +115,24 @@ private static int getBlockColor(BlockState state, BlockRenderView world, BlockP
108115 BlockData blockData = LeaveslySettings .getSettings ().getBlock (Blocks .getBlockId (block ));
109116 Tint tint = blockData .getTint ();
110117 switch (tint .getColorType ()) {
111- case ColorType . STATIC :
118+ case STATIC :
112119 return tint .getColorValue ();
113- case ColorType . FOLIAGE :
120+ case FOLIAGE :
114121 switch (tint .getColorBlend ()) {
115- case ColorBlend . MULTIPLY :
122+ case MULTIPLY :
116123 return getMultiplyColor (BiomeColors .getFoliageColor (world , position ), tint .getColorValue ());
117- case ColorBlend . SCREEN :
124+ case SCREEN :
118125 return getScreenColor (BiomeColors .getFoliageColor (world , position ), tint .getColorValue ());
119126 }
120- case ColorType . GRASS :
127+ case GRASS :
121128 switch (tint .getColorBlend ()) {
122- case ColorBlend . MULTIPLY :
129+ case MULTIPLY :
123130 return getMultiplyColor (BiomeColors .getGrassColor (world , position ), tint .getColorValue ());
124- case ColorBlend . SCREEN :
131+ case SCREEN :
125132 return getScreenColor (BiomeColors .getGrassColor (world , position ), tint .getColorValue ());
126133 }
127134 default :
128- return 0 ;
135+ return Tint . NEON_PINK . getColorValue () ;
129136 }
130137 }
131138
@@ -150,7 +157,7 @@ private static int getItemColor(Block block) {
150157 return getScreenColor (Tint .DEFAULT_GRASS .getColorValue (), tint .getColorValue ());
151158 }
152159 default :
153- return 0 ;
160+ return Tint . NEON_PINK . getColorValue () ;
154161 }
155162 }
156163
@@ -174,7 +181,7 @@ private static int getModPatchBlockColor(Block block, BlockRenderView world, Blo
174181 return getScreenColor (BiomeColors .getGrassColor (world , position ), tint .getColorValue ());
175182 }
176183 default :
177- return 0 ;
184+ return Tint . NEON_PINK . getColorValue () ;
178185 }
179186 }
180187
0 commit comments