Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/master-1.20' into master-1.21
Browse files Browse the repository at this point in the history
  • Loading branch information
rubensworks committed Jul 17, 2024
2 parents aa31f0d + e49547a commit 8a31ff0
Show file tree
Hide file tree
Showing 4 changed files with 29 additions and 23 deletions.
7 changes: 7 additions & 0 deletions resources/changelog/1.20.4-1.19.2.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
As always, don't forget to backup your world before updating!

Fixes:
* Fix startup crash with many mods
This removes references to the CyclopsCore instance, as it may not be
loaded yet in specific cases.
Closes #184
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,13 @@
import net.minecraft.world.level.block.Block;
import net.neoforged.api.distmarker.Dist;
import net.neoforged.api.distmarker.OnlyIn;
import net.neoforged.bus.api.SubscribeEvent;
import net.neoforged.fml.common.EventBusSubscriber;
import net.neoforged.neoforge.client.event.ModelEvent;
import net.neoforged.neoforge.client.event.RegisterColorHandlersEvent;
import net.neoforged.neoforge.registries.RegisterEvent;
import org.apache.commons.lang3.tuple.Pair;
import org.cyclops.cyclopscore.CyclopsCore;
import org.cyclops.cyclopscore.Reference;
import org.cyclops.cyclopscore.client.model.IDynamicModelElement;
import org.cyclops.cyclopscore.config.extendedconfig.BlockConfig;
import org.cyclops.cyclopscore.helper.MinecraftHelpers;
Expand All @@ -31,19 +33,12 @@
* @author rubensworks
* @see ConfigurableTypeAction
*/
@EventBusSubscriber(modid = Reference.MOD_ID, value = Dist.CLIENT, bus = EventBusSubscriber.Bus.MOD)
public class BlockAction extends ConfigurableTypeActionForge<BlockConfig, Block> {

private static final List<BlockConfig> MODEL_ENTRIES = Lists.newArrayList();
private static final List<BlockConfig> COLOR_ENTRIES = Lists.newArrayList();

static {
if (MinecraftHelpers.isClientSide()) {
CyclopsCore._instance.getModEventBus().addListener(BlockAction::onModelRegistryLoad);
CyclopsCore._instance.getModEventBus().addListener(BlockAction::onModelBakeEvent);
CyclopsCore._instance.getModEventBus().addListener(BlockAction::onRegisterColorHandlers);
}
}

/**
* Registers a block and its optional item block.
* @param itemBlockConstructor The optional item block constructor.
Expand Down Expand Up @@ -82,6 +77,7 @@ public void onRegisterForgeFilled(BlockConfig eConfig) {
}

@OnlyIn(Dist.CLIENT)
@SubscribeEvent
public static void onModelRegistryLoad(ModelEvent.RegisterAdditional event) {
for (BlockConfig config : MODEL_ENTRIES) {
Pair<ModelResourceLocation, ModelResourceLocation> resourceLocations = config.registerDynamicModel();
Expand All @@ -91,6 +87,7 @@ public static void onModelRegistryLoad(ModelEvent.RegisterAdditional event) {
}

@OnlyIn(Dist.CLIENT)
@SubscribeEvent
public static void onModelBakeEvent(ModelEvent.ModifyBakingResult event){
for (BlockConfig config : MODEL_ENTRIES) {
IDynamicModelElement dynamicModelElement = (IDynamicModelElement) config.getInstance();
Expand All @@ -105,6 +102,7 @@ public static void onModelBakeEvent(ModelEvent.ModifyBakingResult event){
}

@OnlyIn(Dist.CLIENT)
@SubscribeEvent
public static void onRegisterColorHandlers(RegisterColorHandlersEvent.Block event){
for (BlockConfig blockConfig : COLOR_ENTRIES) {
event.register(blockConfig.getBlockColorHandler(), blockConfig.getInstance());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,15 @@
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.level.material.Fluid;
import net.neoforged.bus.api.SubscribeEvent;
import net.neoforged.fml.common.EventBusSubscriber;
import net.neoforged.fml.util.ObfuscationReflectionHelper;
import net.neoforged.neoforge.fluids.BaseFlowingFluid;
import net.neoforged.neoforge.fluids.FluidType;
import net.neoforged.neoforge.registries.NeoForgeRegistries;
import net.neoforged.neoforge.registries.RegisterEvent;
import org.apache.commons.lang3.tuple.Pair;
import org.cyclops.cyclopscore.CyclopsCore;
import org.cyclops.cyclopscore.Reference;
import org.cyclops.cyclopscore.config.ConfigurableType;
import org.cyclops.cyclopscore.config.extendedconfig.FluidConfig;

import java.util.Collection;
Expand All @@ -29,6 +31,7 @@
* @author rubensworks
* @see ConfigurableTypeAction
*/
@EventBusSubscriber(modid = Reference.MOD_ID, bus = EventBusSubscriber.Bus.MOD)
public class FluidAction extends ConfigurableTypeAction<FluidConfig, BaseFlowingFluid.Properties> {

private final Multimap<String, Pair<FluidConfig, Callable<?>>> registryEntriesHolder = Multimaps.newListMultimap(Maps.<String, Collection<Pair<FluidConfig, Callable<?>>>>newHashMap(), new com.google.common.base.Supplier<List<Pair<FluidConfig, Callable<?>>>>() {
Expand All @@ -40,10 +43,6 @@ public List<Pair<FluidConfig, Callable<?>>> get() {
});
private boolean registryEventPassed = false;

public FluidAction() {
CyclopsCore._instance.getModEventBus().register(this);
}

@Override
public void onRegisterForge(FluidConfig config) {
if (this.registryEventPassed) {
Expand All @@ -57,7 +56,11 @@ public void onRegisterForge(FluidConfig config) {
}

@SubscribeEvent
public void onRegistryEvent(RegisterEvent event) {
public static void onRegistryEvent(RegisterEvent event) {
((FluidAction) ConfigurableType.FLUID.getConfigurableTypeAction()).onRegistryEventInner(event);
}

public void onRegistryEventInner(RegisterEvent event) {
if (event.getRegistryKey() == BuiltInRegistries.FLUID.key()) {
this.registryEventPassed = true;
Registry<Fluid> registry = (Registry<Fluid>) event.getRegistry();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,11 @@
import net.minecraft.world.item.Item;
import net.neoforged.api.distmarker.Dist;
import net.neoforged.api.distmarker.OnlyIn;
import net.neoforged.bus.api.SubscribeEvent;
import net.neoforged.fml.common.EventBusSubscriber;
import net.neoforged.neoforge.client.event.ModelEvent;
import net.neoforged.neoforge.client.event.RegisterColorHandlersEvent;
import org.cyclops.cyclopscore.CyclopsCore;
import org.cyclops.cyclopscore.Reference;
import org.cyclops.cyclopscore.client.model.IDynamicModelElement;
import org.cyclops.cyclopscore.config.extendedconfig.ItemConfig;
import org.cyclops.cyclopscore.helper.MinecraftHelpers;
Expand All @@ -19,18 +21,12 @@
* @author rubensworks
* @see ConfigurableTypeAction
*/
@EventBusSubscriber(modid = Reference.MOD_ID, value = Dist.CLIENT, bus = EventBusSubscriber.Bus.MOD)
public class ItemAction extends ConfigurableTypeActionForge<ItemConfig, Item>{

private static final List<ItemConfig> MODEL_ENTRIES = Lists.newArrayList();
private static final List<ItemConfig> COLOR_ENTRIES = Lists.newArrayList();

static {
if (MinecraftHelpers.isClientSide()) {
CyclopsCore._instance.getModEventBus().addListener(ItemAction::onModelRegistryLoad);
CyclopsCore._instance.getModEventBus().addListener(ItemAction::onModelBakeEvent);
}
}

@Override
public void onRegisterForgeFilled(ItemConfig eConfig) {
// Register item and set creative tab.
Expand All @@ -42,13 +38,15 @@ public void onRegisterForgeFilled(ItemConfig eConfig) {
}

@OnlyIn(Dist.CLIENT)
@SubscribeEvent
public static void onModelRegistryLoad(ModelEvent.RegisterAdditional event) {
for (ItemConfig config : MODEL_ENTRIES) {
config.dynamicItemVariantLocation = config.registerDynamicModel();
}
}

@OnlyIn(Dist.CLIENT)
@SubscribeEvent
public static void onModelBakeEvent(ModelEvent.ModifyBakingResult event){
for (ItemConfig config : MODEL_ENTRIES) {
IDynamicModelElement dynamicModelElement = (IDynamicModelElement) config.getInstance();
Expand Down

0 comments on commit 8a31ff0

Please sign in to comment.