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

CyclopsMC / IntegratedDynamics / 20210191346

14 Dec 2025 03:32PM UTC coverage: 19.514% (-33.5%) from 53.061%
20210191346

push

github

rubensworks
Remove deprecations

663 of 8728 branches covered (7.6%)

Branch coverage included in aggregate %.

6786 of 29445 relevant lines covered (23.05%)

1.09 hits per line

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

67.71
/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.client.model.IVariableModelProviderRegistry;
32
import org.cyclops.integrateddynamics.api.client.render.part.IPartOverlayRendererRegistry;
33
import org.cyclops.integrateddynamics.api.client.render.valuetype.IValueTypeWorldRendererRegistry;
34
import org.cyclops.integrateddynamics.api.evaluate.operator.IOperatorRegistry;
35
import org.cyclops.integrateddynamics.api.evaluate.variable.IValueCastRegistry;
36
import org.cyclops.integrateddynamics.api.evaluate.variable.IValueTypeLightLevelRegistry;
37
import org.cyclops.integrateddynamics.api.evaluate.variable.IValueTypeListProxyFactoryTypeRegistry;
38
import org.cyclops.integrateddynamics.api.evaluate.variable.IValueTypeRegistry;
39
import org.cyclops.integrateddynamics.api.ingredient.IIngredientComponentHandlerRegistry;
40
import org.cyclops.integrateddynamics.api.item.IVariableFacadeHandlerRegistry;
41
import org.cyclops.integrateddynamics.api.logicprogrammer.ILogicProgrammerElementTypeRegistry;
42
import org.cyclops.integrateddynamics.api.network.INetworkCraftingHandlerRegistry;
43
import org.cyclops.integrateddynamics.api.part.IPartTypeRegistry;
44
import org.cyclops.integrateddynamics.api.part.aspect.IAspectRegistry;
45
import org.cyclops.integrateddynamics.capability.ingredient.IngredientComponentCapabilities;
46
import org.cyclops.integrateddynamics.capability.network.NetworkCapabilityConstructors;
47
import org.cyclops.integrateddynamics.client.render.part.PartOverlayRendererRegistry;
48
import org.cyclops.integrateddynamics.client.render.part.PartOverlayRenderers;
49
import org.cyclops.integrateddynamics.client.render.valuetype.ValueTypeWorldRendererRegistry;
50
import org.cyclops.integrateddynamics.client.render.valuetype.ValueTypeWorldRenderers;
51
import org.cyclops.integrateddynamics.command.CommandCrash;
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.*;
63
import org.cyclops.integrateddynamics.core.event.IntegratedDynamicsSetupEvent;
64
import org.cyclops.integrateddynamics.core.ingredient.IngredientComponentHandlerRegistry;
65
import org.cyclops.integrateddynamics.core.ingredient.IngredientComponentHandlers;
66
import org.cyclops.integrateddynamics.core.item.VariableFacadeHandlerRegistry;
67
import org.cyclops.integrateddynamics.core.logicprogrammer.LogicProgrammerElementTypeRegistry;
68
import org.cyclops.integrateddynamics.core.logicprogrammer.LogicProgrammerElementTypes;
69
import org.cyclops.integrateddynamics.core.network.NetworkCraftingHandlerRegistry;
70
import org.cyclops.integrateddynamics.core.part.PartTypeRegistry;
71
import org.cyclops.integrateddynamics.core.part.PartTypes;
72
import org.cyclops.integrateddynamics.core.part.aspect.AspectRegistry;
73
import org.cyclops.integrateddynamics.core.persist.world.LabelsWorldStorage;
74
import org.cyclops.integrateddynamics.core.persist.world.NetworkWorldStorage;
75
import org.cyclops.integrateddynamics.gametest.*;
76
import org.cyclops.integrateddynamics.gametest.integration.GameTester;
77
import org.cyclops.integrateddynamics.infobook.OnTheDynamicsOfIntegrationBook;
78
import org.cyclops.integrateddynamics.item.ItemOnTheDynamicsOfIntegrationConfig;
79
import org.cyclops.integrateddynamics.metadata.RegistryExportables;
80
import org.cyclops.integrateddynamics.part.PartTypeConnectorOmniDirectional;
81
import org.cyclops.integrateddynamics.part.aspect.Aspects;
82
import org.cyclops.integrateddynamics.proxy.ClientProxy;
83
import org.cyclops.integrateddynamics.proxy.CommonProxy;
84

85
import java.lang.reflect.Field;
86

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

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

100
    public static GlobalCounters.Access globalCounters = null;
3✔
101

102
    public IntegratedDynamics(IEventBus modEventBus) {
103
        super(Reference.MOD_ID, (instance) -> _instance = instance, modEventBus);
8✔
104

105
        // Register world storages
106
        registerWorldStorage(NetworkWorldStorage.Access.getInstance(this));
4✔
107
        registerWorldStorage(globalCounters = new GlobalCounters.Access(this));
8✔
108
        registerWorldStorage(LabelsWorldStorage.Access.getInstance(this));
4✔
109

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

125
        getRegistryManager().getRegistry(IVariableFacadeHandlerRegistry.class).registerHandler(ProxyVariableFacadeHandler.getInstance());
7✔
126
        getRegistryManager().getRegistry(IVariableFacadeHandlerRegistry.class).registerHandler(DelayVariableFacadeHandler.getInstance());
7✔
127
        getRegistryManager().addRegistry(IInfoBookRegistry.class, new InfoBookRegistry());
7✔
128
        getRegistryManager().addRegistry(IIngredientComponentHandlerRegistry.class, IngredientComponentHandlerRegistry.getInstance());
5✔
129
        getRegistryManager().addRegistry(INetworkCraftingHandlerRegistry.class, NetworkCraftingHandlerRegistry.getInstance());
5✔
130

131
        // Preload parts, so we force their blocks and items to be registered
132
        PartTypes.load();
1✔
133

134
        modEventBus.addListener(EventPriority.LOWEST, IngredientComponentHandlers::onIngredientComponentsPopulated);
4✔
135
        modEventBus.addListener(this::onRegistriesCreate);
4✔
136
        modEventBus.register(new NetworkCapabilityConstructors());
5✔
137
        modEventBus.addListener(this::registerIntegrationGameTests);
4✔
138

139
        NeoForge.EVENT_BUS.addListener(this::onServerStartedLoadedGroups);
4✔
140
        NeoForge.EVENT_BUS.register(TickHandler.getInstance());
3✔
141
        NeoForge.EVENT_BUS.register(NoteBlockEventReceiver.getInstance());
3✔
142
    }
1✔
143

144
    public void onRegistriesCreate(NewRegistryEvent event) {
145
        IngredientComponentCapabilities.load();
1✔
146
    }
1✔
147

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

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

156
        return root;
×
157
    }
158

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

172
        // Register info book
173
        putGenericReference(ModBaseNeoForge.REFKEY_INFOBOOK_REWARDS, ItemOnTheDynamicsOfIntegrationConfig.bookRewards);
5✔
174
        getRegistryManager().getRegistry(IInfoBookRegistry.class).registerInfoBook(
6✔
175
                OnTheDynamicsOfIntegrationBook.getInstance(), "/data/" + Reference.MOD_ID + "/info/on_the_dynamics_of_integration.xml");
2✔
176

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

184
        if(IModHelpers.get().getMinecraftHelpers().isClientSide()) {
4!
185
            PartOverlayRenderers.load();
×
186
            ValueTypeWorldRenderers.load();
×
187
            VariableModelProviders.load();
×
188
        }
189

190
        super.setup(event);
3✔
191
    }
1✔
192

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

197
    @Override
198
    protected IClientProxy constructClientProxy() {
199
        return new ClientProxy();
×
200
    }
201

202
    @Override
203
    protected ICommonProxy constructCommonProxy() {
204
        return new CommonProxy();
4✔
205
    }
206

207
    @Override
208
    protected CreativeModeTab.Builder constructDefaultCreativeModeTab(CreativeModeTab.Builder builder) {
209
        return super.constructDefaultCreativeModeTab(builder)
5✔
210
                .icon(() -> new ItemStack(RegistryEntries.ITEM_CABLE));
1✔
211
    }
212

213
    @Override
214
    protected void onConfigsRegister(ConfigHandlerCommon configHandler) {
215
        super.onConfigsRegister(configHandler);
3✔
216

217
        configHandler.addConfigurable(new GeneralConfig());
6✔
218
        Configs.registerBlocks(configHandler);
2✔
219
    }
1✔
220

221
    @Override
222
    public Class<?>[] getGameTestClasses() {
223
        return new Class[]{
×
224
                GameTestsAspectsReadAudio.class,
225
                GameTestsAspectsReadBlock.class,
226
                GameTestsAspectsReadEntity.class,
227
                GameTestsAspectsReadExtraDimensional.class,
228
                GameTestsAspectsReadFluid.class,
229
                GameTestsAspectsReadInventory.class,
230
                GameTestsAspectsReadMachine.class,
231
                GameTestsAspectsReadNetwork.class,
232
                GameTestsAspectsReadRedstone.class,
233
                GameTestsAspectsReadWorld.class,
234
                GameTestsAspectsWriteRedstone.class,
235
                GameTestsBattery.class,
236
                GameTestsCombinedAspects.class,
237
                GameTestsDelayer.class,
238
                GameTestsDryingBasin.class,
239
                GameTestsFacades.class,
240
                GameTestsGenerator.class,
241
                GameTestsMaterializer.class,
242
                GameTestsMechanicalDryingBasin.class,
243
                GameTestsMechanicalSqueezer.class,
244
                GameTestsNetwork.class,
245
                GameTestsOffsets.class,
246
                GameTestsParts.class,
247
                GameTestsProxy.class,
248
                GameTestsSqueezer.class,
249
                GameTestsWrench.class,
250
        };
251
    }
252

253
    protected void registerIntegrationGameTests(RegisterGameTestsEvent event) {
254
        if (!GameTestLoaderHelpers.areGameTestsEnabled(getModId())) {
×
255
            return;
×
256
        }
257
        try {
258
            Field field = RegisterGameTestsEvent.class.getDeclaredField("environmentsRegistry");
×
259
            field.setAccessible(true);
×
260
            Registry<TestEnvironmentDefinition> testEnvironmentRegistry = (Registry<TestEnvironmentDefinition>) field.get(event);
×
261
            GameTester.registerCommonTests(getModId(), event::registerTest, testEnvironmentRegistry);
×
262
        } catch (NoSuchFieldException | IllegalAccessException e) {
×
263
            throw new RuntimeException(e);
×
264
        }
×
265
    }
×
266

267
    /**
268
     * Log a new info message for this mod.
269
     * @param message The message to show.
270
     */
271
    public static void clog(String message) {
272
        IntegratedDynamics._instance.log(Level.INFO, message);
4✔
273
    }
1✔
274

275
    /**
276
     * Log a new message of the given level for this mod.
277
     * @param level The level in which the message must be shown.
278
     * @param message The message to show.
279
     */
280
    public static void clog(Level level, String message) {
281
        IntegratedDynamics._instance.log(level, message);
×
282
    }
×
283
}
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