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

CyclopsMC / IntegratedDynamics / 22181546457

19 Feb 2026 12:20PM UTC coverage: 46.183% (+0.8%) from 45.359%
22181546457

push

github

rubensworks
Merge branch 'feature/performance-tracking' into master-1.21-lts

2841 of 8850 branches covered (32.1%)

Branch coverage included in aggregate %.

12409 of 24171 relevant lines covered (51.34%)

2.44 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.CommandGenerateNetwork;
52
import org.cyclops.integrateddynamics.command.CommandNetworkDiagnostics;
53
import org.cyclops.integrateddynamics.command.CommandTest;
54
import org.cyclops.integrateddynamics.core.NoteBlockEventReceiver;
55
import org.cyclops.integrateddynamics.core.TickHandler;
56
import org.cyclops.integrateddynamics.core.client.model.VariableModelProviderRegistry;
57
import org.cyclops.integrateddynamics.core.client.model.VariableModelProviders;
58
import org.cyclops.integrateddynamics.core.evaluate.DelayVariableFacadeHandler;
59
import org.cyclops.integrateddynamics.core.evaluate.ProxyVariableFacadeHandler;
60
import org.cyclops.integrateddynamics.core.evaluate.operator.OperatorRegistry;
61
import org.cyclops.integrateddynamics.core.evaluate.operator.Operators;
62
import org.cyclops.integrateddynamics.core.evaluate.variable.ValueCastMappings;
63
import org.cyclops.integrateddynamics.core.evaluate.variable.ValueCastRegistry;
64
import org.cyclops.integrateddynamics.core.evaluate.variable.ValueTypeLightLevelRegistry;
65
import org.cyclops.integrateddynamics.core.evaluate.variable.ValueTypeLightLevels;
66
import org.cyclops.integrateddynamics.core.evaluate.variable.ValueTypeListProxyFactories;
67
import org.cyclops.integrateddynamics.core.evaluate.variable.ValueTypeListProxyFactoryTypeRegistry;
68
import org.cyclops.integrateddynamics.core.evaluate.variable.ValueTypeRegistry;
69
import org.cyclops.integrateddynamics.core.evaluate.variable.ValueTypes;
70
import org.cyclops.integrateddynamics.core.event.IntegratedDynamicsSetupEvent;
71
import org.cyclops.integrateddynamics.core.ingredient.IngredientComponentHandlerRegistry;
72
import org.cyclops.integrateddynamics.core.ingredient.IngredientComponentHandlers;
73
import org.cyclops.integrateddynamics.core.item.VariableFacadeHandlerRegistry;
74
import org.cyclops.integrateddynamics.core.logicprogrammer.LogicProgrammerElementTypeRegistry;
75
import org.cyclops.integrateddynamics.core.logicprogrammer.LogicProgrammerElementTypes;
76
import org.cyclops.integrateddynamics.core.network.NetworkCraftingHandlerRegistry;
77
import org.cyclops.integrateddynamics.core.part.PartTypeRegistry;
78
import org.cyclops.integrateddynamics.core.part.PartTypes;
79
import org.cyclops.integrateddynamics.core.part.aspect.AspectRegistry;
80
import org.cyclops.integrateddynamics.core.persist.world.LabelsWorldStorage;
81
import org.cyclops.integrateddynamics.core.persist.world.NetworkWorldStorage;
82
import org.cyclops.integrateddynamics.infobook.OnTheDynamicsOfIntegrationBook;
83
import org.cyclops.integrateddynamics.item.ItemOnTheDynamicsOfIntegrationConfig;
84
import org.cyclops.integrateddynamics.metadata.RegistryExportables;
85
import org.cyclops.integrateddynamics.part.PartTypeConnectorOmniDirectional;
86
import org.cyclops.integrateddynamics.part.aspect.Aspects;
87
import org.cyclops.integrateddynamics.proxy.ClientProxy;
88
import org.cyclops.integrateddynamics.proxy.CommonProxy;
89

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

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

103
    public static GlobalCounters globalCounters = null;
×
104

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

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

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

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

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

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

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

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

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

154
        root.then(CommandCrash.make());
×
155
        root.then(CommandGenerateNetwork.make());
×
156
        root.then(CommandNetworkDiagnostics.make());
×
157
        root.then(CommandTest.make());
×
158

159
        return root;
×
160
    }
161

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

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

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

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

193
        super.setup(event);
×
194
    }
×
195

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

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

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

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

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

221
        configHandler.addConfigurable(new GeneralConfig());
×
222
        Configs.registerBlocks(configHandler);
×
223
    }
×
224

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

233
    /**
234
     * Log a new message of the given level for this mod.
235
     * @param level The level in which the message must be shown.
236
     * @param message The message to show.
237
     */
238
    public static void clog(Level level, String message) {
239
        IntegratedDynamics._instance.log(level, message);
×
240
    }
×
241
}
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