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

CyclopsMC / IntegratedDynamics / 22520864162

28 Feb 2026 12:23PM UTC coverage: 51.735% (-0.9%) from 52.603%
22520864162

push

github

rubensworks
Fix fuzzing failing due to pre-existing variable stores

2903 of 8879 branches covered (32.7%)

Branch coverage included in aggregate %.

17683 of 30912 relevant lines covered (57.2%)

2.96 hits per line

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

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

86
import java.lang.reflect.Field;
87

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

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

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

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

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

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

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

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

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

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

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

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

153
        root.then(CommandCrash.make());
4✔
154
        root.then(CommandGenerateNetwork.make());
4✔
155
        root.then(CommandNetworkDiagnostics.make());
4✔
156
        root.then(CommandTest.make());
4✔
157

158
        return root;
2✔
159
    }
160

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

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

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

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

192
        super.setup(event);
3✔
193
    }
1✔
194

195
    protected void onServerStartedLoadedGroups(ServerStartedEvent event) {
196
        PartTypeConnectorOmniDirectional.LOADED_GROUPS.onStartedEvent(event);
3✔
197
    }
1✔
198

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

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

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

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

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

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

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

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

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