-
Notifications
You must be signed in to change notification settings - Fork 38
/
Copy pathEurekaModFabric.java
83 lines (73 loc) · 3.5 KB
/
EurekaModFabric.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
package org.valkyrienskies.eureka.fabric;
import com.terraformersmc.modmenu.api.ConfigScreenFactory;
import com.terraformersmc.modmenu.api.ModMenuApi;
import net.fabricmc.api.ClientModInitializer;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.fabricmc.api.ModInitializer;
import net.fabricmc.fabric.api.client.model.BakedModelManagerHelper;
import net.fabricmc.fabric.api.client.model.ModelLoadingRegistry;
import net.fabricmc.fabric.api.client.rendereregistry.v1.BlockEntityRendererRegistry;
import net.fabricmc.fabric.api.resource.ResourceManagerHelper;
import net.fabricmc.fabric.api.resource.ResourcePackActivationType;
import net.fabricmc.loader.api.FabricLoader;
import net.fabricmc.loader.api.ModContainer;
import net.minecraft.client.Minecraft;
import net.minecraft.resources.ResourceLocation;
import org.valkyrienskies.eureka.EurekaBlockEntities;
import org.valkyrienskies.eureka.EurekaConfig;
import org.valkyrienskies.eureka.EurekaMod;
import org.valkyrienskies.eureka.block.WoodType;
import org.valkyrienskies.eureka.blockentity.renderer.ShipHelmBlockEntityRenderer;
import org.valkyrienskies.eureka.blockentity.renderer.WheelModels;
import org.valkyrienskies.eureka.fabric.registry.FuelRegistryImpl;
import org.valkyrienskies.mod.compat.clothconfig.VSClothConfig;
import org.valkyrienskies.mod.fabric.common.ValkyrienSkiesModFabric;
public class EurekaModFabric implements ModInitializer {
@Override
public void onInitialize() {
// force VS2 to load before eureka
new ValkyrienSkiesModFabric().onInitialize();
new FuelRegistryImpl();
EurekaMod.init();
// TODO: make resources packs work
ModContainer eureka = FabricLoader.getInstance().getModContainer(EurekaMod.MOD_ID)
.orElseThrow(() -> new IllegalStateException("Eureka's ModContainer couldn't be found!"));
ResourceLocation packId = new ResourceLocation(EurekaMod.MOD_ID, "retro_helms");
ResourceManagerHelper.registerBuiltinResourcePack(packId, eureka, "Eureka retro helms", ResourcePackActivationType.NORMAL);
}
@Environment(EnvType.CLIENT)
public static class Client implements ClientModInitializer {
@Override
public void onInitializeClient() {
EurekaMod.initClient();
BlockEntityRendererRegistry.INSTANCE.register(
EurekaBlockEntities.INSTANCE.getSHIP_HELM().get(),
ShipHelmBlockEntityRenderer::new
);
ModelLoadingRegistry.INSTANCE.registerModelProvider((manager, out) -> {
for (final WoodType woodType : WoodType.getEntries()) {
out.accept(new ResourceLocation(
EurekaMod.MOD_ID,
"block/" + woodType.getResourceName() + "_ship_helm_wheel"
));
}
});
WheelModels.INSTANCE.setModelGetter(woodType ->
BakedModelManagerHelper.getModel(Minecraft.getInstance().getModelManager(),
new ResourceLocation(
EurekaMod.MOD_ID,
"block/" + woodType.getResourceName() + "_ship_helm_wheel"
)));
}
}
public static class ModMenu implements ModMenuApi {
@Override
public ConfigScreenFactory<?> getModConfigScreenFactory() {
return (parent) -> VSClothConfig.createConfigScreenFor(
parent,
EurekaConfig.class
);
}
}
}