ReFramed/src/main/java/io/github/cottonmc/templates/TemplatesClient.java

102 lines
6.5 KiB
Java
Raw Normal View History

2019-06-20 00:29:15 +02:00
package io.github.cottonmc.templates;
2023-07-04 07:00:41 +02:00
import io.github.cottonmc.templates.model.RetexturedJsonModelUnbakedModel;
import io.github.cottonmc.templates.model.RetexturedMeshUnbakedModel;
import io.github.cottonmc.templates.model.SlopeBaseMesh;
2019-06-20 00:29:15 +02:00
import net.fabricmc.api.ClientModInitializer;
2023-06-15 10:24:11 +02:00
import net.fabricmc.fabric.api.blockrenderlayer.v1.BlockRenderLayerMap;
2019-06-20 00:29:15 +02:00
import net.fabricmc.fabric.api.client.model.ModelLoadingRegistry;
2023-07-02 12:26:19 +02:00
import net.fabricmc.fabric.api.renderer.v1.Renderer;
import net.fabricmc.fabric.api.renderer.v1.RendererAccess;
2023-06-16 05:09:57 +02:00
import net.fabricmc.fabric.api.resource.ResourceManagerHelper;
import net.fabricmc.fabric.api.resource.SimpleSynchronousResourceReloadListener;
2023-07-08 10:10:44 +02:00
import net.minecraft.block.Block;
import net.minecraft.client.MinecraftClient;
2023-06-15 10:24:11 +02:00
import net.minecraft.client.render.RenderLayer;
2023-06-16 05:09:57 +02:00
import net.minecraft.resource.ResourceManager;
import net.minecraft.resource.ResourceType;
import net.minecraft.util.Identifier;
import net.minecraft.util.math.ChunkSectionPos;
2023-07-02 12:26:19 +02:00
import org.jetbrains.annotations.NotNull;
import java.util.Objects;
2019-06-20 00:29:15 +02:00
public class TemplatesClient implements ClientModInitializer {
2023-07-03 10:45:18 +02:00
public static TemplatesModelProvider provider = new TemplatesModelProvider();
2023-06-15 07:59:48 +02:00
2023-07-02 12:26:19 +02:00
public static @NotNull Renderer getFabricRenderer() {
return Objects.requireNonNull(RendererAccess.INSTANCE.getRenderer(), "A Fabric Rendering API implementation is required to use Templates!");
}
2019-06-20 00:29:15 +02:00
@Override
public void onInitializeClient() {
Templates.chunkRerenderProxy = (world, pos) -> {
if(world == MinecraftClient.getInstance().world) {
MinecraftClient.getInstance().worldRenderer.scheduleBlockRender(
ChunkSectionPos.getSectionCoord(pos.getX()),
ChunkSectionPos.getSectionCoord(pos.getY()),
ChunkSectionPos.getSectionCoord(pos.getZ())
);
}
};
2023-06-16 05:09:57 +02:00
ResourceManagerHelper.get(ResourceType.CLIENT_RESOURCES).registerReloadListener(new SimpleSynchronousResourceReloadListener() {
@Override
public Identifier getFabricId() {
return Templates.id("dump-caches");
}
@Override
public void reload(ResourceManager resourceManager) {
provider.dumpCache();
}
});
2023-06-15 10:24:11 +02:00
2023-07-02 10:51:39 +02:00
ModelLoadingRegistry.INSTANCE.registerResourceProvider(rm -> provider); //block models
ModelLoadingRegistry.INSTANCE.registerVariantProvider(rm -> provider); //item models
2023-06-30 10:59:10 +02:00
2023-07-08 10:10:44 +02:00
BlockRenderLayerMap.INSTANCE.putBlocks(RenderLayer.getCutout(), Templates.BLOCKS.toArray(new Block[0]));
2023-07-04 07:00:41 +02:00
2023-07-08 10:10:44 +02:00
//vanilla style
provider.addTemplateModel(Templates.id("button_special"), new RetexturedJsonModelUnbakedModel(Templates.id("block/button")));
provider.addTemplateModel(Templates.id("button_pressed_special"), new RetexturedJsonModelUnbakedModel(Templates.id("block/button_pressed")));
provider.addTemplateModel(Templates.id("carpet_special"), new RetexturedJsonModelUnbakedModel(Templates.id("block/carpet")));
2023-07-05 05:38:06 +02:00
provider.addTemplateModel(Templates.id("cube_special"), new RetexturedJsonModelUnbakedModel(Templates.id("block/cube")));
2023-07-06 06:45:12 +02:00
provider.addTemplateModel(Templates.id("fence_post_special"), new RetexturedJsonModelUnbakedModel(Templates.id("block/fence_post")));
provider.addTemplateModel(Templates.id("fence_side_special"), new RetexturedJsonModelUnbakedModel(Templates.id("block/fence_side")));
2023-07-08 10:10:44 +02:00
provider.addTemplateModel(Templates.id("fence_gate_special"), new RetexturedJsonModelUnbakedModel(Templates.id("block/fence_gate")));
provider.addTemplateModel(Templates.id("fence_gate_open_special"), new RetexturedJsonModelUnbakedModel(Templates.id("block/fence_gate_open")));
provider.addTemplateModel(Templates.id("fence_gate_wall_special"), new RetexturedJsonModelUnbakedModel(Templates.id("block/fence_gate_wall")));
provider.addTemplateModel(Templates.id("fence_gate_wall_open_special"), new RetexturedJsonModelUnbakedModel(Templates.id("block/fence_gate_wall_open")));
provider.addTemplateModel(Templates.id("lever_special"), new RetexturedJsonModelUnbakedModel(Templates.id("block/lever")));
provider.addTemplateModel(Templates.id("lever_on_special"), new RetexturedJsonModelUnbakedModel(Templates.id("block/lever_on")));
provider.addTemplateModel(Templates.id("pressure_plate_up_special"), new RetexturedJsonModelUnbakedModel(Templates.id("block/pressure_plate_up")));
provider.addTemplateModel(Templates.id("pressure_plate_down_special"), new RetexturedJsonModelUnbakedModel(Templates.id("block/pressure_plate_down")));
2023-07-05 05:38:06 +02:00
provider.addTemplateModel(Templates.id("slab_bottom_special"), new RetexturedJsonModelUnbakedModel(Templates.id("block/slab_bottom")));
provider.addTemplateModel(Templates.id("slab_top_special"), new RetexturedJsonModelUnbakedModel(Templates.id("block/slab_top")));
2023-07-06 06:45:12 +02:00
provider.addTemplateModel(Templates.id("wall_post_special"), new RetexturedJsonModelUnbakedModel(Templates.id("block/wall_post")));
provider.addTemplateModel(Templates.id("wall_side_special"), new RetexturedJsonModelUnbakedModel(Templates.id("block/wall_side")));
provider.addTemplateModel(Templates.id("wall_side_tall_special"), new RetexturedJsonModelUnbakedModel(Templates.id("block/wall_side_tall")));
2023-07-08 10:10:44 +02:00
//meshes
provider.addTemplateModel(Templates.id("slope_special"), new RetexturedMeshUnbakedModel(Templates.id("block/slope_base"), SlopeBaseMesh::make));
//item only models -- TODO move to item/ prolly
2023-07-09 05:13:47 +02:00
provider.addTemplateModel(Templates.id("button_inventory_special"), new RetexturedJsonModelUnbakedModel(Templates.id("item/button_inventory")));
provider.addTemplateModel(Templates.id("fence_inventory_special"), new RetexturedJsonModelUnbakedModel(Templates.id("item/fence_inventory")));
provider.addTemplateModel(Templates.id("wall_inventory_special"), new RetexturedJsonModelUnbakedModel(Templates.id("item/wall_inventory")));
2023-07-08 10:10:44 +02:00
provider.assignItemModel(Templates.id("button_special"), Templates.BUTTON);
provider.assignItemModel(Templates.id("carpet_special"), Templates.CARPET);
provider.assignItemModel(Templates.id("cube_special"), Templates.CUBE);
2023-07-06 06:45:12 +02:00
provider.assignItemModel(Templates.id("fence_inventory_special"), Templates.FENCE);
2023-07-08 10:10:44 +02:00
provider.assignItemModel(Templates.id("fence_gate_special"), Templates.FENCE_GATE);
provider.assignItemModel(Templates.id("lever_special"), Templates.LEVER); //TODO vanilla uses its own item model
2023-07-06 07:44:00 +02:00
provider.assignItemModel(Templates.id("fence_post_special"), Templates.POST);
2023-07-08 10:10:44 +02:00
provider.assignItemModel(Templates.id("pressure_plate_up_special"), Templates.PRESSURE_PLATE);
provider.assignItemModel(Templates.id("slope_special"), Templates.SLOPE);
2023-07-04 07:00:41 +02:00
provider.assignItemModel(Templates.id("slab_bottom_special"), Templates.SLAB);
2023-07-06 06:45:12 +02:00
provider.assignItemModel(Templates.id("wall_inventory_special"), Templates.WALL);
2019-06-20 00:29:15 +02:00
}
}