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

CyclopsMC / IntegratedDynamics / 30758491470

02 Aug 2026 05:15PM UTC coverage: 45.534% (-0.1%) from 45.649%
30758491470

push

github

rubensworks
Add base compatibility with Create Aeronautics

This allows ray trace handlers for cables to be registered, which will
be done in the compat mod for Create Aeronautics.
Furthermore, this commits ensures that no items are dropped when the
isMoving flag is false within Block#onRemove.

Closes #1674

2803 of 8926 branches covered (31.4%)

Branch coverage included in aggregate %.

12311 of 24267 relevant lines covered (50.73%)

2.42 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.block.cable.ICableRayTraceHandlerRegistry;
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.block.cable.CableRayTraceHandlerRegistry;
58
import org.cyclops.integrateddynamics.core.client.model.VariableModelProviderRegistry;
59
import org.cyclops.integrateddynamics.core.client.model.VariableModelProviders;
60
import org.cyclops.integrateddynamics.core.evaluate.DelayVariableFacadeHandler;
61
import org.cyclops.integrateddynamics.core.evaluate.ProxyVariableFacadeHandler;
62
import org.cyclops.integrateddynamics.core.evaluate.operator.OperatorRegistry;
63
import org.cyclops.integrateddynamics.core.evaluate.operator.Operators;
64
import org.cyclops.integrateddynamics.core.evaluate.variable.*;
65
import org.cyclops.integrateddynamics.core.event.IntegratedDynamicsSetupEvent;
66
import org.cyclops.integrateddynamics.core.ingredient.IngredientComponentHandlerRegistry;
67
import org.cyclops.integrateddynamics.core.ingredient.IngredientComponentHandlers;
68
import org.cyclops.integrateddynamics.core.item.VariableFacadeHandlerRegistry;
69
import org.cyclops.integrateddynamics.core.logicprogrammer.LogicProgrammerElementTypeRegistry;
70
import org.cyclops.integrateddynamics.core.logicprogrammer.LogicProgrammerElementTypes;
71
import org.cyclops.integrateddynamics.core.network.NetworkCraftingHandlerRegistry;
72
import org.cyclops.integrateddynamics.core.part.PartTypeRegistry;
73
import org.cyclops.integrateddynamics.core.part.PartTypes;
74
import org.cyclops.integrateddynamics.core.part.aspect.AspectRegistry;
75
import org.cyclops.integrateddynamics.core.persist.world.LabelsWorldStorage;
76
import org.cyclops.integrateddynamics.core.persist.world.NetworkWorldStorage;
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
/**
86
 * The main mod class of IntegratedDynamics.
87
 * @author rubensworks
88
 *
89
 */
90
@Mod(Reference.MOD_ID)
91
public class IntegratedDynamics extends ModBaseVersionable<IntegratedDynamics> {
92

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

98
    public static GlobalCounters globalCounters = null;
×
99

100
    public IntegratedDynamics(IEventBus modEventBus) {
101
        super(Reference.MOD_ID, (instance) -> _instance = instance, modEventBus);
×
102

103
        // Register world storages
104
        registerWorldStorage(NetworkWorldStorage.getInstance(this));
×
105
        registerWorldStorage(globalCounters = new GlobalCounters(this));
×
106
        registerWorldStorage(LabelsWorldStorage.getInstance(this));
×
107

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

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

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

133
        modEventBus.addListener(EventPriority.LOWEST, IngredientComponentHandlers::onIngredientComponentsPopulated);
×
134
        modEventBus.addListener(this::onRegistriesCreate);
×
135
        modEventBus.register(new NetworkCapabilityConstructors());
×
136

137
        NeoForge.EVENT_BUS.addListener(this::onServerStartedLoadedGroups);
×
138
        NeoForge.EVENT_BUS.register(TickHandler.getInstance());
×
139
        NeoForge.EVENT_BUS.register(NoteBlockEventReceiver.getInstance());
×
140
    }
×
141

142
    public void onRegistriesCreate(NewRegistryEvent event) {
143
        IngredientComponentCapabilities.load();
×
144
    }
×
145

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

150
        root.then(CommandCrash.make());
×
151
        root.then(CommandGenerateNetwork.make());
×
152
        root.then(CommandNetworkDiagnostics.make());
×
153
        root.then(CommandTest.make());
×
154

155
        return root;
×
156
    }
157

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

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

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

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

189
        super.setup(event);
×
190
    }
×
191

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

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

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

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

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

217
        configHandler.addConfigurable(new GeneralConfig());
×
218
        Configs.registerBlocks(configHandler);
×
219
    }
×
220

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

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