MineLittlePony/src/main/java/com/minelittlepony/client/FabMod.java

80 lines
3.1 KiB
Java
Raw Normal View History

2019-05-27 17:59:15 +02:00
package com.minelittlepony.client;
import net.fabricmc.api.ClientModInitializer;
import net.fabricmc.fabric.api.client.keybinding.FabricKeyBinding;
import net.fabricmc.fabric.api.client.keybinding.KeyBindingRegistry;
2019-05-27 17:59:15 +02:00
import net.fabricmc.loader.api.FabricLoader;
import net.minecraft.block.entity.BlockEntity;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.options.KeyBinding;
import net.minecraft.client.render.block.entity.BlockEntityRenderDispatcher;
2019-05-27 17:59:15 +02:00
import net.minecraft.client.render.block.entity.BlockEntityRenderer;
import net.minecraft.client.render.entity.EntityRenderDispatcher;
import net.minecraft.client.render.entity.EntityRenderer;
import net.minecraft.client.util.InputUtil;
2019-05-27 17:59:15 +02:00
import net.minecraft.entity.Entity;
import net.minecraft.util.Identifier;
2019-05-27 17:59:15 +02:00
2019-05-28 12:41:06 +02:00
import com.minelittlepony.client.gui.hdskins.MineLPHDSkins;
import com.minelittlepony.client.mixin.MixinBlockEntityRenderDispatcher;
2019-05-28 01:50:45 +02:00
import com.minelittlepony.client.settings.ClientPonyConfig;
2019-05-27 17:59:15 +02:00
import com.minelittlepony.hdskins.mixin.MixinEntityRenderDispatcher;
2019-05-28 01:50:45 +02:00
import com.minelittlepony.settings.SensibleJsonConfig;
2019-05-27 17:59:15 +02:00
import java.nio.file.Path;
import java.util.function.Function;
public class FabMod implements ClientModInitializer, IModUtilities {
@Override
public void onInitializeClient() {
2019-05-28 12:41:06 +02:00
MineLPClient mlp;
if (FabricLoader.getInstance().isModLoaded("hdskins")) {
mlp = new MineLPHDSkins(this);
} else {
mlp = new MineLPClient(this);
}
mlp.init(SensibleJsonConfig.of(getConfigDirectory().resolve("minelp.json"), ClientPonyConfig::new));
2019-05-27 17:59:15 +02:00
}
@Override
public KeyBinding registerKeybind(String category, int key, String bindName) {
// normalize Fabric's behavior
if (bindName.startsWith("key.")) {
bindName = bindName.replace("key.", "");
}
FabricKeyBinding binding = FabricKeyBinding.Builder.create(new Identifier(bindName) {
@Override
public String toString() { return getPath(); }
}, InputUtil.Type.KEYSYM, key, category).build();
KeyBindingRegistry.INSTANCE.register(binding);
return binding;
}
2019-05-27 17:59:15 +02:00
@Override
public <T extends BlockEntity> void addRenderer(Class<T> type, BlockEntityRenderer<T> renderer) {
MixinBlockEntityRenderDispatcher mx = ((MixinBlockEntityRenderDispatcher)BlockEntityRenderDispatcher.INSTANCE);
mx.getRenderers().put(type, renderer);
renderer.setRenderManager(BlockEntityRenderDispatcher.INSTANCE);
2019-05-27 17:59:15 +02:00
}
@Override
public <T extends Entity> void addRenderer(Class<T> type, Function<EntityRenderDispatcher, EntityRenderer<T>> renderer) {
EntityRenderDispatcher mx = MinecraftClient.getInstance().getEntityRenderManager();
((MixinEntityRenderDispatcher)mx).getRenderers().put(type, renderer.apply(mx));
}
@Override
public Path getConfigDirectory() {
return FabricLoader.getInstance().getConfigDirectory().toPath();
}
@Override
public Path getAssetsDirectory() {
return FabricLoader.getInstance().getGameDirectory().toPath().resolve("assets");
}
}