2019-05-27 17:59:15 +02:00
|
|
|
package com.minelittlepony.client;
|
|
|
|
|
|
|
|
import net.fabricmc.api.ClientModInitializer;
|
2019-05-30 14:09:24 +02:00
|
|
|
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;
|
2019-05-30 14:09:24 +02:00
|
|
|
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;
|
2019-05-30 14:09:24 +02:00
|
|
|
import net.minecraft.client.util.InputUtil;
|
2019-05-27 17:59:15 +02:00
|
|
|
import net.minecraft.entity.Entity;
|
2019-05-30 14:09:24 +02:00
|
|
|
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;
|
2019-05-30 14:09:24 +02:00
|
|
|
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-30 21:24:57 +02:00
|
|
|
import com.minelittlepony.settings.JsonConfig;
|
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);
|
|
|
|
}
|
|
|
|
|
2019-05-30 21:24:57 +02:00
|
|
|
mlp.init(JsonConfig.of(getConfigDirectory().resolve("minelp.json"), ClientPonyConfig::new));
|
2019-05-27 17:59:15 +02:00
|
|
|
}
|
|
|
|
|
2019-05-30 14:09:24 +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) {
|
2019-05-30 14:09:24 +02:00
|
|
|
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");
|
|
|
|
}
|
|
|
|
}
|