Source:
public static BlockModelDefinition load(Reader reader, ResourceLocation location, final Gson vanillaGSON, ModelBakery bakery, BiConsumer<ResourceLocation, IUnbakedModel> modelConsumer) { try { byte[] data = IOUtils.toByteArray(reader, StandardCharsets.UTF_8); reader = new InputStreamReader(new ByteArrayInputStream(data), StandardCharsets.UTF_8); Marker marker = GSON.fromJson(new String(data, StandardCharsets.UTF_8), Marker.class); switch (marker.forge_marker) { case 1: ForgeBlockStateV1 v1 = GSON.fromJson(reader, ForgeBlockStateV1.class); Map<String, VariantList> variants = Maps.newLinkedHashMap(); for (Entry<String, Collection<ForgeBlockStateV1.Variant>> entry : v1.variants.asMap().entrySet()) { List<Variant> mcVars = Lists.newArrayList(); for (ForgeBlockStateV1.Variant var : entry.getValue()) { boolean uvLock = var.getUvLock().orElse(false); int weight = var.getWeight().orElse(1); ResourceLocation modelLocation = var.getModel(); if (!var.isVanillaCompatible() && bakery != null) { modelLocation = new ResourceLocation( "internal", String.format("%d", internalGeneratedModelId++) + "/" + location.getNamespace() + "/" + location.getPath() + "/" + entry.getKey().replace("=","_").replace(",","_") ); IUnbakedModel model = ForgeVariantHelper.prepareInjectedModel((ModelLoader)bakery, modelLocation, var.getModel(), var.getSmooth(), var.getGui3d(), var.getTextures(), var.getOnlyPartsVariant(), var.getCustomData()); modelConsumer.accept(modelLocation, model); } mcVars.add(new ForgeVariant(modelLocation, var.getState().orElse(ModelRotation.X0_Y0), uvLock, weight)); } variants.put(entry.getKey(), new VariantList(mcVars)); } return new BlockModelDefinition(variants, null); default: return vanillaGSON.fromJson(reader, BlockModelDefinition.class); } } catch (IOException e) { throw new RuntimeException(e); } }

Target:
public static BlockModelDefinition load(Reader reader, ResourceLocation location, final Gson vanillaGSON, ModelBakery bakery, BiConsumer<ResourceLocation, IUnbakedModel> modelConsumer) { try { byte[] data = IOUtils.toByteArray(reader, StandardCharsets.UTF_8); reader = new InputStreamReader(new ByteArrayInputStream(data), StandardCharsets.UTF_8); Marker marker = GSON.fromJson(new String(data, StandardCharsets.UTF_8), Marker.class); switch (marker.forge_marker) { case 1: ForgeBlockStateV1 v1 = GSON.fromJson(reader, ForgeBlockStateV1.class); Map<String, VariantList> variants = Maps.newLinkedHashMap(); for (Entry<String, Collection<ForgeBlockStateV1.Variant>> entry : v1.variants.asMap().entrySet()) { List<Variant> mcVars = Lists.newArrayList(); for (ForgeBlockStateV1.Variant var : entry.getValue()) { boolean uvLock = var.getUvLock().orElse(false); int weight = var.getWeight().orElse(1); ResourceLocation modelLocation = var.getModel(); if (!var.isVanillaCompatible() && bakery != null) { modelLocation = new ResourceLocation( "internal", String.format("%d/%s/%s/%s", internalGeneratedModelId++, location.getNamespace(), location.getPath(), entry.getKey().replace("=","_").replace(",","_")) ); IUnbakedModel model = ForgeVariantHelper.prepareInjectedModel((ModelLoader)bakery, modelLocation, var.getModel(), var.getSmooth(), var.getGui3d(), var.getTextures(), var.getOnlyPartsVariant(), var.getCustomData()); modelConsumer.accept(modelLocation, model); } mcVars.add(new ForgeVariant(modelLocation, var.getState().orElse(ModelRotation.X0_Y0), uvLock, weight)); } variants.put(entry.getKey(), new VariantList(mcVars)); } return new BlockModelDefinition(variants, null); default: return vanillaGSON.fromJson(reader, BlockModelDefinition.class); } } catch (IOException e) { throw new RuntimeException(e); } }