package net.nicgamer.automatek.blocks; import com.google.gson.JsonDeserializationContext; import com.google.gson.JsonObject; import com.mojang.datafixers.util.Pair; import net.minecraft.client.renderer.block.model.ItemOverrides; import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.client.resources.model.*; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.packs.resources.ResourceManager; import net.minecraftforge.client.ForgeHooksClient; import net.minecraftforge.client.model.IModelConfiguration; import net.minecraftforge.client.model.IModelLoader; import net.minecraftforge.client.model.geometry.IModelGeometry; import net.nicgamer.automatek.AutomatekMod; import net.nicgamer.automatek.utilities.ConnectingBlockBakedModel; import java.util.Collection; import java.util.List; import java.util.Set; import java.util.function.Function; public class ConnectingBlockModelLoader implements IModelLoader { public static final ResourceLocation CONNECTING_BLOCK_LOADER = new ResourceLocation(AutomatekMod.MOD_ID, "connecting_block_loader"); public static final ResourceLocation CONNECTING_BLOCK_ZERO_CONNECTIONS = new ResourceLocation(AutomatekMod.MOD_ID, "block/frames/zero_sides_connected"); public static final ResourceLocation CONNECTING_BLOCK_ONE_CONNECTION_UP = new ResourceLocation(AutomatekMod.MOD_ID, "block/frames/one_side_connected_u"); public static final ResourceLocation CONNECTING_BLOCK_ONE_CONNECTION_RIGHT = new ResourceLocation(AutomatekMod.MOD_ID, "block/frames/one_side_connected_r"); public static final ResourceLocation CONNECTING_BLOCK_ONE_CONNECTION_LEFT = new ResourceLocation(AutomatekMod.MOD_ID, "block/frames/one_side_connected_l"); public static final ResourceLocation CONNECTING_BLOCK_ONE_CONNECTION_DOWN = new ResourceLocation(AutomatekMod.MOD_ID, "block/frames/one_side_connected_d"); public static final ResourceLocation CONNECTING_BLOCK_TWO_CURVE_CONNECTION_UR = new ResourceLocation(AutomatekMod.MOD_ID, "block/frames/two_sides_connected_curve_ur"); public static final ResourceLocation CONNECTING_BLOCK_TWO_CURVE_CONNECTION_RD = new ResourceLocation(AutomatekMod.MOD_ID, "block/frames/two_sides_connected_curve_rd"); public static final ResourceLocation CONNECTING_BLOCK_TWO_CURVE_CONNECTION_DL = new ResourceLocation(AutomatekMod.MOD_ID, "block/frames/two_sides_connected_curve_dl"); public static final ResourceLocation CONNECTING_BLOCK_TWO_CURVE_CONNECTION_LU = new ResourceLocation(AutomatekMod.MOD_ID, "block/frames/two_sides_connected_curve_lu"); public static final ResourceLocation CONNECTING_BLOCK_TWO_STRAIGHT_CONNECTION_UD = new ResourceLocation(AutomatekMod.MOD_ID, "block/frames/two_sides_connected_straight_ud"); public static final ResourceLocation CONNECTING_BLOCK_TWO_STRAIGHT_CONNECTION_LR = new ResourceLocation(AutomatekMod.MOD_ID, "block/frames/two_sides_connected_straight_lr"); public static final ResourceLocation CONNECTING_BLOCK_THREE_CONNECTION_URD = new ResourceLocation(AutomatekMod.MOD_ID, "block/frames/three_sides_connected_urd"); public static final ResourceLocation CONNECTING_BLOCK_THREE_CONNECTION_RDL = new ResourceLocation(AutomatekMod.MOD_ID, "block/frames/three_sides_connected_rdl"); public static final ResourceLocation CONNECTING_BLOCK_THREE_CONNECTION_DLU = new ResourceLocation(AutomatekMod.MOD_ID, "block/frames/three_sides_connected_dlu"); public static final ResourceLocation CONNECTING_BLOCK_THREE_CONNECTION_LUR = new ResourceLocation(AutomatekMod.MOD_ID, "block/frames/three_sides_connected_lur"); public static final ResourceLocation CONNECTING_BLOCK_FOUR_CONNECTION = new ResourceLocation(AutomatekMod.MOD_ID, "block/frames/transparent"); public static final Material MATERIAL_CONNECTING_BLOCK_ZERO_CONNECTIONS = ForgeHooksClient.getBlockMaterial(CONNECTING_BLOCK_ZERO_CONNECTIONS); public static final Material MATERIAL_CONNECTING_BLOCK_ONE_CONNECTION_UP = ForgeHooksClient.getBlockMaterial(CONNECTING_BLOCK_ONE_CONNECTION_UP); public static final Material MATERIAL_CONNECTING_BLOCK_ONE_CONNECTION_RIGHT = ForgeHooksClient.getBlockMaterial(CONNECTING_BLOCK_ONE_CONNECTION_RIGHT); public static final Material MATERIAL_CONNECTING_BLOCK_ONE_CONNECTION_LEFT = ForgeHooksClient.getBlockMaterial(CONNECTING_BLOCK_ONE_CONNECTION_LEFT); public static final Material MATERIAL_CONNECTING_BLOCK_ONE_CONNECTION_DOWN = ForgeHooksClient.getBlockMaterial(CONNECTING_BLOCK_ONE_CONNECTION_DOWN); public static final Material MATERIAL_CONNECTING_BLOCK_TWO_CURVE_CONNECTION_UR = ForgeHooksClient.getBlockMaterial(CONNECTING_BLOCK_TWO_CURVE_CONNECTION_UR); public static final Material MATERIAL_CONNECTING_BLOCK_TWO_CURVE_CONNECTION_RD = ForgeHooksClient.getBlockMaterial(CONNECTING_BLOCK_TWO_CURVE_CONNECTION_RD); public static final Material MATERIAL_CONNECTING_BLOCK_TWO_CURVE_CONNECTION_DL = ForgeHooksClient.getBlockMaterial(CONNECTING_BLOCK_TWO_CURVE_CONNECTION_DL); public static final Material MATERIAL_CONNECTING_BLOCK_TWO_CURVE_CONNECTION_LU = ForgeHooksClient.getBlockMaterial(CONNECTING_BLOCK_TWO_CURVE_CONNECTION_LU); public static final Material MATERIAL_CONNECTING_BLOCK_TWO_STRAIGHT_CONNECTION_UD = ForgeHooksClient.getBlockMaterial(CONNECTING_BLOCK_TWO_STRAIGHT_CONNECTION_UD); public static final Material MATERIAL_CONNECTING_BLOCK_TWO_STRAIGHT_CONNECTION_LR = ForgeHooksClient.getBlockMaterial(CONNECTING_BLOCK_TWO_STRAIGHT_CONNECTION_LR); public static final Material MATERIAL_CONNECTING_BLOCK_THREE_CONNECTION_URD = ForgeHooksClient.getBlockMaterial(CONNECTING_BLOCK_THREE_CONNECTION_URD); public static final Material MATERIAL_CONNECTING_BLOCK_THREE_CONNECTION_RDL = ForgeHooksClient.getBlockMaterial(CONNECTING_BLOCK_THREE_CONNECTION_RDL); public static final Material MATERIAL_CONNECTING_BLOCK_THREE_CONNECTION_DLU = ForgeHooksClient.getBlockMaterial(CONNECTING_BLOCK_THREE_CONNECTION_DLU); public static final Material MATERIAL_CONNECTING_BLOCK_THREE_CONNECTION_LUR = ForgeHooksClient.getBlockMaterial(CONNECTING_BLOCK_THREE_CONNECTION_LUR); public static final Material MATERIAL_CONNECTING_BLOCK_FOUR_CONNECTION = ForgeHooksClient.getBlockMaterial(CONNECTING_BLOCK_FOUR_CONNECTION); @Override public void onResourceManagerReload(ResourceManager resourceManager) { } @Override public ConnectingBlockModelGeometry read(JsonDeserializationContext deserializationContext, JsonObject modelContents) { return new ConnectingBlockModelGeometry(); } public static class ConnectingBlockModelGeometry implements IModelGeometry { @Override public BakedModel bake(IModelConfiguration owner, ModelBakery bakery, Function spriteGetter, ModelState modelTransform, ItemOverrides overrides, ResourceLocation modelLocation) { return new ConnectingBlockBakedModel(modelTransform, spriteGetter, overrides, owner.getCameraTransforms()); } @Override public Collection getTextures(IModelConfiguration owner, Function modelGetter, Set> missingTextureErrors) { return List.of(MATERIAL_CONNECTING_BLOCK_ZERO_CONNECTIONS, MATERIAL_CONNECTING_BLOCK_ONE_CONNECTION_UP, MATERIAL_CONNECTING_BLOCK_ONE_CONNECTION_RIGHT, MATERIAL_CONNECTING_BLOCK_ONE_CONNECTION_LEFT, MATERIAL_CONNECTING_BLOCK_ONE_CONNECTION_DOWN, MATERIAL_CONNECTING_BLOCK_TWO_CURVE_CONNECTION_UR, MATERIAL_CONNECTING_BLOCK_TWO_CURVE_CONNECTION_RD, MATERIAL_CONNECTING_BLOCK_TWO_CURVE_CONNECTION_DL, MATERIAL_CONNECTING_BLOCK_TWO_CURVE_CONNECTION_LU, MATERIAL_CONNECTING_BLOCK_TWO_STRAIGHT_CONNECTION_UD, MATERIAL_CONNECTING_BLOCK_TWO_STRAIGHT_CONNECTION_LR, MATERIAL_CONNECTING_BLOCK_THREE_CONNECTION_URD, MATERIAL_CONNECTING_BLOCK_THREE_CONNECTION_RDL, MATERIAL_CONNECTING_BLOCK_THREE_CONNECTION_DLU, MATERIAL_CONNECTING_BLOCK_THREE_CONNECTION_LUR, MATERIAL_CONNECTING_BLOCK_FOUR_CONNECTION); } } }