Fix Custom Machinery models

This commit is contained in:
embeddedt 2023-08-11 16:44:51 -04:00
parent 4d3aaceb9c
commit 0c82223248
No known key found for this signature in database
GPG Key ID: A69433EC199B5613

View File

@ -1,5 +1,6 @@
package org.embeddedt.modernfix.dynamicresources; package org.embeddedt.modernfix.dynamicresources;
import com.google.common.collect.ImmutableSet;
import com.mojang.math.Transformation; import com.mojang.math.Transformation;
import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap;
import net.minecraft.client.renderer.block.model.BakedQuad; import net.minecraft.client.renderer.block.model.BakedQuad;
@ -25,6 +26,15 @@ import java.util.function.BiFunction;
import java.util.stream.Collectors; import java.util.stream.Collectors;
public class DynamicBakedModelProvider implements Map<ResourceLocation, BakedModel> { public class DynamicBakedModelProvider implements Map<ResourceLocation, BakedModel> {
/**
* The list of blacklisted resource locations that are never baked as top-level models.
*
* This is a hack to get around the fact that we don't really know exactly what models were supposed to end up
* in the baked registry ahead of time.
*/
private static final ImmutableSet<ResourceLocation> BAKE_SKIPPED_TOPLEVEL = ImmutableSet.<ResourceLocation>builder()
.add(new ResourceLocation("custommachinery", "block/custom_machine_block"))
.build();
public static DynamicBakedModelProvider currentInstance = null; public static DynamicBakedModelProvider currentInstance = null;
private final ModelBakery bakery; private final ModelBakery bakery;
private final Map<Triple<ResourceLocation, Transformation, Boolean>, BakedModel> bakedCache; private final Map<Triple<ResourceLocation, Transformation, Boolean>, BakedModel> bakedCache;
@ -135,7 +145,10 @@ public class DynamicBakedModelProvider implements Map<ResourceLocation, BakedMod
return model; return model;
else { else {
try { try {
model = bakery.bake((ResourceLocation)o, BlockModelRotation.X0_Y0); if(BAKE_SKIPPED_TOPLEVEL.contains((ResourceLocation)o))
model = missingModel;
else
model = bakery.bake((ResourceLocation)o, BlockModelRotation.X0_Y0);
} catch(RuntimeException e) { } catch(RuntimeException e) {
ModernFix.LOGGER.error("Exception baking {}: {}", o, e); ModernFix.LOGGER.error("Exception baking {}: {}", o, e);
model = missingModel; model = missingModel;