• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

CyclopsMC / IntegratedDynamics / 15366883658

31 May 2025 07:32PM UTC coverage: 44.95% (+0.01%) from 44.938%
15366883658

push

github

rubensworks
Bump mod version

2580 of 8515 branches covered (30.3%)

Branch coverage included in aggregate %.

11778 of 23427 relevant lines covered (50.28%)

2.38 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

0.0
/src/main/java/org/cyclops/integrateddynamics/IntegratedDynamics.java
1
package org.cyclops.integrateddynamics;
2

3
import com.mojang.brigadier.builder.LiteralArgumentBuilder;
4
import net.minecraft.commands.CommandBuildContext;
5
import net.minecraft.commands.CommandSourceStack;
6
import net.minecraft.commands.Commands;
7
import net.minecraft.world.item.CreativeModeTab;
8
import net.minecraft.world.item.ItemStack;
9
import net.neoforged.api.distmarker.Dist;
10
import net.neoforged.api.distmarker.OnlyIn;
11
import net.neoforged.bus.api.EventPriority;
12
import net.neoforged.bus.api.IEventBus;
13
import net.neoforged.fml.ModList;
14
import net.neoforged.fml.common.Mod;
15
import net.neoforged.fml.event.lifecycle.FMLCommonSetupEvent;
16
import net.neoforged.fml.javafmlmod.FMLModContainer;
17
import net.neoforged.neoforge.common.NeoForge;
18
import net.neoforged.neoforge.event.server.ServerStartedEvent;
19
import net.neoforged.neoforge.registries.NewRegistryEvent;
20
import org.apache.logging.log4j.Level;
21
import org.cyclops.cyclopscore.config.ConfigHandler;
22
import org.cyclops.cyclopscore.helper.MinecraftHelpers;
23
import org.cyclops.cyclopscore.infobook.IInfoBookRegistry;
24
import org.cyclops.cyclopscore.infobook.InfoBookRegistry;
25
import org.cyclops.cyclopscore.init.ModBase;
26
import org.cyclops.cyclopscore.init.ModBaseVersionable;
27
import org.cyclops.cyclopscore.persist.world.GlobalCounters;
28
import org.cyclops.cyclopscore.proxy.IClientProxy;
29
import org.cyclops.cyclopscore.proxy.ICommonProxy;
30
import org.cyclops.integrateddynamics.api.client.model.IVariableModelProviderRegistry;
31
import org.cyclops.integrateddynamics.api.client.render.part.IPartOverlayRendererRegistry;
32
import org.cyclops.integrateddynamics.api.client.render.valuetype.IValueTypeWorldRendererRegistry;
33
import org.cyclops.integrateddynamics.api.evaluate.operator.IOperatorRegistry;
34
import org.cyclops.integrateddynamics.api.evaluate.variable.IValueCastRegistry;
35
import org.cyclops.integrateddynamics.api.evaluate.variable.IValueTypeLightLevelRegistry;
36
import org.cyclops.integrateddynamics.api.evaluate.variable.IValueTypeListProxyFactoryTypeRegistry;
37
import org.cyclops.integrateddynamics.api.evaluate.variable.IValueTypeRegistry;
38
import org.cyclops.integrateddynamics.api.ingredient.IIngredientComponentHandlerRegistry;
39
import org.cyclops.integrateddynamics.api.item.IVariableFacadeHandlerRegistry;
40
import org.cyclops.integrateddynamics.api.logicprogrammer.ILogicProgrammerElementTypeRegistry;
41
import org.cyclops.integrateddynamics.api.network.INetworkCraftingHandlerRegistry;
42
import org.cyclops.integrateddynamics.api.part.IPartTypeRegistry;
43
import org.cyclops.integrateddynamics.api.part.aspect.IAspectRegistry;
44
import org.cyclops.integrateddynamics.capability.ingredient.IngredientComponentCapabilities;
45
import org.cyclops.integrateddynamics.capability.network.NetworkCapabilityConstructors;
46
import org.cyclops.integrateddynamics.client.render.part.PartOverlayRendererRegistry;
47
import org.cyclops.integrateddynamics.client.render.part.PartOverlayRenderers;
48
import org.cyclops.integrateddynamics.client.render.valuetype.ValueTypeWorldRendererRegistry;
49
import org.cyclops.integrateddynamics.client.render.valuetype.ValueTypeWorldRenderers;
50
import org.cyclops.integrateddynamics.command.CommandCrash;
51
import org.cyclops.integrateddynamics.command.CommandNetworkDiagnostics;
52
import org.cyclops.integrateddynamics.command.CommandTest;
53
import org.cyclops.integrateddynamics.core.NoteBlockEventReceiver;
54
import org.cyclops.integrateddynamics.core.TickHandler;
55
import org.cyclops.integrateddynamics.core.client.model.VariableModelProviderRegistry;
56
import org.cyclops.integrateddynamics.core.client.model.VariableModelProviders;
57
import org.cyclops.integrateddynamics.core.evaluate.DelayVariableFacadeHandler;
58
import org.cyclops.integrateddynamics.core.evaluate.ProxyVariableFacadeHandler;
59
import org.cyclops.integrateddynamics.core.evaluate.operator.OperatorRegistry;
60
import org.cyclops.integrateddynamics.core.evaluate.operator.Operators;
61
import org.cyclops.integrateddynamics.core.evaluate.variable.ValueCastMappings;
62
import org.cyclops.integrateddynamics.core.evaluate.variable.ValueCastRegistry;
63
import org.cyclops.integrateddynamics.core.evaluate.variable.ValueTypeLightLevelRegistry;
64
import org.cyclops.integrateddynamics.core.evaluate.variable.ValueTypeLightLevels;
65
import org.cyclops.integrateddynamics.core.evaluate.variable.ValueTypeListProxyFactories;
66
import org.cyclops.integrateddynamics.core.evaluate.variable.ValueTypeListProxyFactoryTypeRegistry;
67
import org.cyclops.integrateddynamics.core.evaluate.variable.ValueTypeRegistry;
68
import org.cyclops.integrateddynamics.core.evaluate.variable.ValueTypes;
69
import org.cyclops.integrateddynamics.core.event.IntegratedDynamicsSetupEvent;
70
import org.cyclops.integrateddynamics.core.ingredient.IngredientComponentHandlerRegistry;
71
import org.cyclops.integrateddynamics.core.ingredient.IngredientComponentHandlers;
72
import org.cyclops.integrateddynamics.core.item.VariableFacadeHandlerRegistry;
73
import org.cyclops.integrateddynamics.core.logicprogrammer.LogicProgrammerElementTypeRegistry;
74
import org.cyclops.integrateddynamics.core.logicprogrammer.LogicProgrammerElementTypes;
75
import org.cyclops.integrateddynamics.core.network.NetworkCraftingHandlerRegistry;
76
import org.cyclops.integrateddynamics.core.part.PartTypeRegistry;
77
import org.cyclops.integrateddynamics.core.part.PartTypes;
78
import org.cyclops.integrateddynamics.core.part.aspect.AspectRegistry;
79
import org.cyclops.integrateddynamics.core.persist.world.LabelsWorldStorage;
80
import org.cyclops.integrateddynamics.core.persist.world.NetworkWorldStorage;
81
import org.cyclops.integrateddynamics.infobook.OnTheDynamicsOfIntegrationBook;
82
import org.cyclops.integrateddynamics.item.ItemOnTheDynamicsOfIntegrationConfig;
83
import org.cyclops.integrateddynamics.metadata.RegistryExportables;
84
import org.cyclops.integrateddynamics.part.PartTypeConnectorOmniDirectional;
85
import org.cyclops.integrateddynamics.part.aspect.Aspects;
86
import org.cyclops.integrateddynamics.proxy.ClientProxy;
87
import org.cyclops.integrateddynamics.proxy.CommonProxy;
88

89
/**
90
 * The main mod class of IntegratedDynamics.
91
 * @author rubensworks
92
 *
93
 */
94
@Mod(Reference.MOD_ID)
95
public class IntegratedDynamics extends ModBaseVersionable<IntegratedDynamics> {
96

97
    /**
98
     * The unique instance of this mod.
99
     */
100
    public static IntegratedDynamics _instance;
101

102
    public static GlobalCounters globalCounters = null;
×
103

104
    public IntegratedDynamics(IEventBus modEventBus) {
105
        super(Reference.MOD_ID, (instance) -> _instance = instance, modEventBus);
×
106

107
        // Register world storages
108
        registerWorldStorage(NetworkWorldStorage.getInstance(this));
×
109
        registerWorldStorage(globalCounters = new GlobalCounters(this));
×
110
        registerWorldStorage(LabelsWorldStorage.getInstance(this));
×
111

112
        getRegistryManager().addRegistry(IVariableFacadeHandlerRegistry.class, VariableFacadeHandlerRegistry.getInstance());
×
113
        getRegistryManager().addRegistry(IValueTypeRegistry.class, ValueTypeRegistry.getInstance());
×
114
        getRegistryManager().addRegistry(IValueCastRegistry.class, ValueCastRegistry.getInstance());
×
115
        getRegistryManager().addRegistry(IValueTypeListProxyFactoryTypeRegistry.class, ValueTypeListProxyFactoryTypeRegistry.getInstance());
×
116
        getRegistryManager().addRegistry(IValueTypeLightLevelRegistry.class, ValueTypeLightLevelRegistry.getInstance());
×
117
        getRegistryManager().addRegistry(IPartTypeRegistry.class, PartTypeRegistry.getInstance());
×
118
        getRegistryManager().addRegistry(IAspectRegistry.class, AspectRegistry.getInstance());
×
119
        getRegistryManager().addRegistry(IOperatorRegistry.class, OperatorRegistry.getInstance());
×
120
        getRegistryManager().addRegistry(ILogicProgrammerElementTypeRegistry.class, LogicProgrammerElementTypeRegistry.getInstance());
×
121
        if(MinecraftHelpers.isClientSide()) {
×
122
            getRegistryManager().addRegistry(IPartOverlayRendererRegistry.class, PartOverlayRendererRegistry.getInstance());
×
123
            getRegistryManager().addRegistry(IValueTypeWorldRendererRegistry.class, ValueTypeWorldRendererRegistry.getInstance());
×
124
            getRegistryManager().addRegistry(IVariableModelProviderRegistry.class, VariableModelProviderRegistry.getInstance());
×
125
        }
126

127
        getRegistryManager().getRegistry(IVariableFacadeHandlerRegistry.class).registerHandler(ProxyVariableFacadeHandler.getInstance());
×
128
        getRegistryManager().getRegistry(IVariableFacadeHandlerRegistry.class).registerHandler(DelayVariableFacadeHandler.getInstance());
×
129
        getRegistryManager().addRegistry(IInfoBookRegistry.class, new InfoBookRegistry());
×
130
        getRegistryManager().addRegistry(IIngredientComponentHandlerRegistry.class, IngredientComponentHandlerRegistry.getInstance());
×
131
        getRegistryManager().addRegistry(INetworkCraftingHandlerRegistry.class, NetworkCraftingHandlerRegistry.getInstance());
×
132

133
        // Preload parts, so we force their blocks and items to be registered
134
        PartTypes.load();
×
135

136
        modEventBus.addListener(EventPriority.LOWEST, IngredientComponentHandlers::onIngredientComponentsPopulated);
×
137
        modEventBus.addListener(this::onRegistriesCreate);
×
138
        modEventBus.register(new NetworkCapabilityConstructors());
×
139

140
        NeoForge.EVENT_BUS.addListener(this::onServerStartedLoadedGroups);
×
141
        NeoForge.EVENT_BUS.register(TickHandler.getInstance());
×
142
        NeoForge.EVENT_BUS.register(NoteBlockEventReceiver.getInstance());
×
143
    }
×
144

145
    public void onRegistriesCreate(NewRegistryEvent event) {
146
        IngredientComponentCapabilities.load();
×
147
    }
×
148

149
    @Override
150
    protected LiteralArgumentBuilder<CommandSourceStack> constructBaseCommand(Commands.CommandSelection selection, CommandBuildContext context) {
151
        LiteralArgumentBuilder<CommandSourceStack> root = super.constructBaseCommand(selection, context);
×
152

153
        root.then(CommandCrash.make());
×
154
        root.then(CommandNetworkDiagnostics.make());
×
155
        root.then(CommandTest.make());
×
156

157
        return root;
×
158
    }
159

160
    @Override
161
    protected void setup(FMLCommonSetupEvent event) {
162
        ValueTypes.load();
×
163
        IngredientComponentHandlers.load();
×
164
        ValueCastMappings.load();
×
165
        ValueTypeLightLevels.load();
×
166
        ValueTypeListProxyFactories.load();
×
167
        Operators.load();
×
168
        Aspects.load();
×
169
        PartTypes.register();
×
170
        LogicProgrammerElementTypes.load();
×
171
        RegistryExportables.load();
×
172

173
        // Register info book
174
        putGenericReference(ModBase.REFKEY_INFOBOOK_REWARDS, ItemOnTheDynamicsOfIntegrationConfig.bookRewards);
×
175
        getRegistryManager().getRegistry(IInfoBookRegistry.class).registerInfoBook(
×
176
                OnTheDynamicsOfIntegrationBook.getInstance(), "/data/" + Reference.MOD_ID + "/info/on_the_dynamics_of_integration.xml");
×
177

178
        IntegratedDynamicsSetupEvent integratedDynamicsSetupEvent = new IntegratedDynamicsSetupEvent(this.getContainer());
×
179
        ModList.get().forEachModContainer((name, container) -> {
×
180
            if (container instanceof FMLModContainer fmlModContainer) {
×
181
                fmlModContainer.getEventBus().post(integratedDynamicsSetupEvent);
×
182
            }
183
        });
×
184

185
        if(MinecraftHelpers.isClientSide()) {
×
186
            PartOverlayRenderers.load();
×
187
            ValueTypeWorldRenderers.load();
×
188
            VariableModelProviders.load();
×
189
        }
190

191
        super.setup(event);
×
192
    }
×
193

194
    protected void onServerStartedLoadedGroups(ServerStartedEvent event) {
195
        PartTypeConnectorOmniDirectional.LOADED_GROUPS.onStartedEvent(event);
×
196
    }
×
197

198
    @Override
199
    @OnlyIn(Dist.CLIENT)
200
    protected IClientProxy constructClientProxy() {
201
        return new ClientProxy();
×
202
    }
203

204
    @Override
205
    protected ICommonProxy constructCommonProxy() {
206
        return new CommonProxy();
×
207
    }
208

209
    @Override
210
    protected CreativeModeTab.Builder constructDefaultCreativeModeTab(CreativeModeTab.Builder builder) {
211
        return super.constructDefaultCreativeModeTab(builder)
×
212
                .icon(() -> new ItemStack(RegistryEntries.ITEM_CABLE));
×
213
    }
214

215
    @Override
216
    protected void onConfigsRegister(ConfigHandler configHandler) {
217
        super.onConfigsRegister(configHandler);
×
218

219
        configHandler.addConfigurable(new GeneralConfig());
×
220
        Configs.registerBlocks(configHandler);
×
221
    }
×
222

223
    /**
224
     * Log a new info message for this mod.
225
     * @param message The message to show.
226
     */
227
    public static void clog(String message) {
228
        IntegratedDynamics._instance.log(Level.INFO, message);
×
229
    }
×
230

231
    /**
232
     * Log a new message of the given level for this mod.
233
     * @param level The level in which the message must be shown.
234
     * @param message The message to show.
235
     */
236
    public static void clog(Level level, String message) {
237
        IntegratedDynamics._instance.log(level, message);
×
238
    }
×
239
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc