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

CyclopsMC / IntegratedDynamics / 30759991625

02 Aug 2026 05:56PM UTC coverage: 53.855% (-0.1%) from 53.973%
30759991625

push

github

rubensworks
Merge remote-tracking branch 'origin/master-1.21-lts' into master-26-lts

3101 of 9033 branches covered (34.33%)

Branch coverage included in aggregate %.

18945 of 31903 relevant lines covered (59.38%)

3.08 hits per line

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

86.87
/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.core.Registry;
8
import net.minecraft.gametest.framework.TestEnvironmentDefinition;
9
import net.minecraft.world.item.CreativeModeTab;
10
import net.minecraft.world.item.ItemStack;
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.RegisterGameTestsEvent;
19
import net.neoforged.neoforge.event.server.ServerStartedEvent;
20
import net.neoforged.neoforge.registries.NewRegistryEvent;
21
import org.apache.logging.log4j.Level;
22
import org.cyclops.cyclopscore.config.ConfigHandlerCommon;
23
import org.cyclops.cyclopscore.gametest.GameTestLoaderHelpers;
24
import org.cyclops.cyclopscore.helper.IModHelpers;
25
import org.cyclops.cyclopscore.infobook.IInfoBookRegistry;
26
import org.cyclops.cyclopscore.infobook.InfoBookRegistry;
27
import org.cyclops.cyclopscore.init.ModBaseNeoForge;
28
import org.cyclops.cyclopscore.persist.world.GlobalCounters;
29
import org.cyclops.cyclopscore.proxy.IClientProxy;
30
import org.cyclops.cyclopscore.proxy.ICommonProxy;
31
import org.cyclops.integrateddynamics.api.block.cable.ICableRayTraceHandlerRegistry;
32
import org.cyclops.integrateddynamics.api.client.model.IVariableModelProviderRegistry;
33
import org.cyclops.integrateddynamics.api.client.render.part.IPartOverlayRendererRegistry;
34
import org.cyclops.integrateddynamics.api.client.render.valuetype.IValueTypeWorldRendererRegistry;
35
import org.cyclops.integrateddynamics.api.evaluate.operator.IOperatorRegistry;
36
import org.cyclops.integrateddynamics.api.evaluate.variable.IValueCastRegistry;
37
import org.cyclops.integrateddynamics.api.evaluate.variable.IValueTypeLightLevelRegistry;
38
import org.cyclops.integrateddynamics.api.evaluate.variable.IValueTypeListProxyFactoryTypeRegistry;
39
import org.cyclops.integrateddynamics.api.evaluate.variable.IValueTypeRegistry;
40
import org.cyclops.integrateddynamics.api.ingredient.IIngredientComponentHandlerRegistry;
41
import org.cyclops.integrateddynamics.api.item.IVariableFacadeHandlerRegistry;
42
import org.cyclops.integrateddynamics.api.logicprogrammer.ILogicProgrammerElementTypeRegistry;
43
import org.cyclops.integrateddynamics.api.network.INetworkCraftingHandlerRegistry;
44
import org.cyclops.integrateddynamics.api.part.IPartTypeRegistry;
45
import org.cyclops.integrateddynamics.api.part.aspect.IAspectRegistry;
46
import org.cyclops.integrateddynamics.capability.ingredient.IngredientComponentCapabilities;
47
import org.cyclops.integrateddynamics.capability.network.NetworkCapabilityConstructors;
48
import org.cyclops.integrateddynamics.client.render.part.PartOverlayRendererRegistry;
49
import org.cyclops.integrateddynamics.client.render.part.PartOverlayRenderers;
50
import org.cyclops.integrateddynamics.client.render.valuetype.ValueTypeWorldRendererRegistry;
51
import org.cyclops.integrateddynamics.client.render.valuetype.ValueTypeWorldRenderers;
52
import org.cyclops.integrateddynamics.command.CommandCrash;
53
import org.cyclops.integrateddynamics.command.CommandGenerateNetwork;
54
import org.cyclops.integrateddynamics.command.CommandNetworkDiagnostics;
55
import org.cyclops.integrateddynamics.command.CommandTest;
56
import org.cyclops.integrateddynamics.core.NoteBlockEventReceiver;
57
import org.cyclops.integrateddynamics.core.TickHandler;
58
import org.cyclops.integrateddynamics.core.block.cable.CableRayTraceHandlerRegistry;
59
import org.cyclops.integrateddynamics.core.client.model.VariableModelProviderRegistry;
60
import org.cyclops.integrateddynamics.core.client.model.VariableModelProviders;
61
import org.cyclops.integrateddynamics.core.evaluate.DelayVariableFacadeHandler;
62
import org.cyclops.integrateddynamics.core.evaluate.ProxyVariableFacadeHandler;
63
import org.cyclops.integrateddynamics.core.evaluate.operator.OperatorRegistry;
64
import org.cyclops.integrateddynamics.core.evaluate.operator.Operators;
65
import org.cyclops.integrateddynamics.core.evaluate.variable.*;
66
import org.cyclops.integrateddynamics.core.event.IntegratedDynamicsSetupEvent;
67
import org.cyclops.integrateddynamics.core.ingredient.IngredientComponentHandlerRegistry;
68
import org.cyclops.integrateddynamics.core.ingredient.IngredientComponentHandlers;
69
import org.cyclops.integrateddynamics.core.item.VariableFacadeHandlerRegistry;
70
import org.cyclops.integrateddynamics.core.logicprogrammer.LogicProgrammerElementTypeRegistry;
71
import org.cyclops.integrateddynamics.core.logicprogrammer.LogicProgrammerElementTypes;
72
import org.cyclops.integrateddynamics.core.network.NetworkCraftingHandlerRegistry;
73
import org.cyclops.integrateddynamics.core.part.PartTypeRegistry;
74
import org.cyclops.integrateddynamics.core.part.PartTypes;
75
import org.cyclops.integrateddynamics.core.part.aspect.AspectRegistry;
76
import org.cyclops.integrateddynamics.core.persist.world.LabelsWorldStorage;
77
import org.cyclops.integrateddynamics.core.persist.world.NetworkWorldStorage;
78
import org.cyclops.integrateddynamics.gametest.*;
79
import org.cyclops.integrateddynamics.gametest.integration.GameTester;
80
import org.cyclops.integrateddynamics.infobook.OnTheDynamicsOfIntegrationBook;
81
import org.cyclops.integrateddynamics.item.ItemOnTheDynamicsOfIntegrationConfig;
82
import org.cyclops.integrateddynamics.metadata.RegistryExportables;
83
import org.cyclops.integrateddynamics.part.PartTypeConnectorOmniDirectional;
84
import org.cyclops.integrateddynamics.part.aspect.Aspects;
85
import org.cyclops.integrateddynamics.proxy.ClientProxy;
86
import org.cyclops.integrateddynamics.proxy.CommonProxy;
87

88
import java.lang.reflect.Field;
89

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

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

103
    public static GlobalCounters.Access globalCounters = null;
3✔
104

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

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

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

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

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

138
        modEventBus.addListener(EventPriority.LOWEST, IngredientComponentHandlers::onIngredientComponentsPopulated);
4✔
139
        modEventBus.addListener(this::onRegistriesCreate);
4✔
140
        modEventBus.register(new NetworkCapabilityConstructors());
5✔
141
        modEventBus.addListener(this::registerIntegrationGameTests);
4✔
142

143
        NeoForge.EVENT_BUS.addListener(this::onServerStartedLoadedGroups);
4✔
144
        NeoForge.EVENT_BUS.register(TickHandler.getInstance());
3✔
145
        NeoForge.EVENT_BUS.register(NoteBlockEventReceiver.getInstance());
3✔
146
    }
1✔
147

148
    public void onRegistriesCreate(NewRegistryEvent event) {
149
        IngredientComponentCapabilities.load();
1✔
150
    }
1✔
151

152
    @Override
153
    protected LiteralArgumentBuilder<CommandSourceStack> constructBaseCommand(Commands.CommandSelection selection, CommandBuildContext context) {
154
        LiteralArgumentBuilder<CommandSourceStack> root = super.constructBaseCommand(selection, context);
5✔
155

156
        root.then(CommandCrash.make());
4✔
157
        root.then(CommandGenerateNetwork.make());
4✔
158
        root.then(CommandNetworkDiagnostics.make());
4✔
159
        root.then(CommandTest.make());
4✔
160

161
        return root;
2✔
162
    }
163

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

177
        // Register info book
178
        putGenericReference(ModBaseNeoForge.REFKEY_INFOBOOK_REWARDS, ItemOnTheDynamicsOfIntegrationConfig.bookRewards);
5✔
179
        getRegistryManager().getRegistry(IInfoBookRegistry.class).registerInfoBook(
6✔
180
                OnTheDynamicsOfIntegrationBook.getInstance(), "/data/" + Reference.MOD_ID + "/info/on_the_dynamics_of_integration.xml");
2✔
181

182
        IntegratedDynamicsSetupEvent integratedDynamicsSetupEvent = new IntegratedDynamicsSetupEvent(this.getContainer());
6✔
183
        ModList.get().forEachModContainer((name, container) -> {
4✔
184
            if (container instanceof FMLModContainer fmlModContainer) {
6✔
185
                fmlModContainer.getEventBus().post(integratedDynamicsSetupEvent);
5✔
186
            }
187
        });
1✔
188

189
        if(IModHelpers.get().getMinecraftHelpers().isClientSide()) {
4!
190
            PartOverlayRenderers.load();
×
191
            ValueTypeWorldRenderers.load();
×
192
            VariableModelProviders.load();
×
193
        }
194

195
        super.setup(event);
3✔
196
    }
1✔
197

198
    protected void onServerStartedLoadedGroups(ServerStartedEvent event) {
199
        PartTypeConnectorOmniDirectional.LOADED_GROUPS.onStartedEvent(event);
3✔
200
    }
1✔
201

202
    @Override
203
    protected IClientProxy constructClientProxy() {
204
        return new ClientProxy();
×
205
    }
206

207
    @Override
208
    protected ICommonProxy constructCommonProxy() {
209
        return new CommonProxy();
4✔
210
    }
211

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

218
    @Override
219
    protected void onConfigsRegister(ConfigHandlerCommon configHandler) {
220
        super.onConfigsRegister(configHandler);
3✔
221

222
        configHandler.addConfigurable(new GeneralConfig());
6✔
223
        Configs.registerBlocks(configHandler);
2✔
224
    }
1✔
225

226
    @Override
227
    public Class<?>[] getGameTestClasses() {
228
        return new Class[]{
123✔
229
                GameTestsAdvancements.class,
230
                GameTestsAspectsReadAudio.class,
231
                GameTestsAspectsReadBlock.class,
232
                GameTestsAspectsReadEntity.class,
233
                GameTestsAspectsReadExtraDimensional.class,
234
                GameTestsAspectsReadFluid.class,
235
                GameTestsAspectsReadInventory.class,
236
                GameTestsAspectsReadMachine.class,
237
                GameTestsAspectsReadNetwork.class,
238
                GameTestsAspectsReadRedstone.class,
239
                GameTestsAspectsReadWorld.class,
240
                GameTestsAspectsWriteRedstone.class,
241
                GameTestsBattery.class,
242
                GameTestsCombinedAspects.class,
243
                GameTestsDelayer.class,
244
                GameTestsDryingBasin.class,
245
                GameTestsFacades.class,
246
                GameTestsFluids.class,
247
                GameTestsFuzzing.class,
248
                GameTestsGenerator.class,
249
                GameTestsMaterializer.class,
250
                GameTestsMechanicalDryingBasin.class,
251
                GameTestsMechanicalSqueezer.class,
252
                GameTestsNetwork.class,
253
                GameTestsOffsets.class,
254
                GameTestsParts.class,
255
                GameTestsPerformance.class,
256
                GameTestsProxy.class,
257
                GameTestsSqueezer.class,
258
                GameTestsWrench.class,
259
        };
260
    }
261

262
    protected void registerIntegrationGameTests(RegisterGameTestsEvent event) {
263
        if (!GameTestLoaderHelpers.areGameTestsEnabled(getModId())) {
4!
264
            return;
×
265
        }
266
        try {
267
            Field field = RegisterGameTestsEvent.class.getDeclaredField("environmentsRegistry");
4✔
268
            field.setAccessible(true);
3✔
269
            Registry<TestEnvironmentDefinition<?>> testEnvironmentRegistry = (Registry<TestEnvironmentDefinition<?>>) field.get(event);
5✔
270
            GameTester.registerCommonTests(getModId(), event::registerTest, testEnvironmentRegistry);
9✔
271
            GameTestsFuzzing.registerCommonTests(getModId(), event::registerTest, testEnvironmentRegistry);
9✔
272
        } catch (NoSuchFieldException | IllegalAccessException e) {
×
273
            throw new RuntimeException(e);
×
274
        }
1✔
275
    }
1✔
276

277
    /**
278
     * Log a new info message for this mod.
279
     * @param message The message to show.
280
     */
281
    public static void clog(String message) {
282
        IntegratedDynamics._instance.log(Level.INFO, message);
4✔
283
    }
1✔
284

285
    /**
286
     * Log a new message of the given level for this mod.
287
     * @param level The level in which the message must be shown.
288
     * @param message The message to show.
289
     */
290
    public static void clog(Level level, String message) {
291
        IntegratedDynamics._instance.log(level, message);
4✔
292
    }
1✔
293
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc