mirror of
https://github.com/SquidDev-CC/CC-Tweaked
synced 2025-10-22 09:27:39 +00:00
Rewrite turtle upgrade modeller registration API
Originally we exposed a single registerTurtleUpgradeModellermethod which could be called from both Fabric (during a mod's client init) and Forge (during FMLClientSetupEvent). This was fine until we allowed upgrades to specify model dependencies, which would then automatically loaded, as this means model loading now depends on upgrade modellers being loaded. Unknown to me, this is not guaranteed to be the case on Forge - mod setup happens at the same time as resource reloading! Unfortunately there's not really a salvageable way of fixing this with the current API. Forge now uses a registration event-based system, meaning we can guarantee all modellers are loaded before models are baked.
This commit is contained in:
@@ -0,0 +1,32 @@
|
||||
// SPDX-FileCopyrightText: 2023 The CC: Tweaked Developers
|
||||
//
|
||||
// SPDX-License-Identifier: MPL-2.0
|
||||
|
||||
package dan200.computercraft.api.client.turtle;
|
||||
|
||||
import dan200.computercraft.api.turtle.ITurtleUpgrade;
|
||||
import dan200.computercraft.api.turtle.TurtleUpgradeSerialiser;
|
||||
import dan200.computercraft.api.turtle.TurtleUpgradeType;
|
||||
import dan200.computercraft.impl.client.ComputerCraftAPIClientService;
|
||||
import net.minecraftforge.eventbus.api.Event;
|
||||
import net.minecraftforge.fml.event.IModBusEvent;
|
||||
import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent;
|
||||
import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent;
|
||||
|
||||
/**
|
||||
* This event is fired to register {@link TurtleUpgradeModeller}s for a mod's {@linkplain TurtleUpgradeType turtle
|
||||
* upgrades}.
|
||||
* <p>
|
||||
* This event is fired during the initial resource load. Registries will be frozen, but mods may not be fully
|
||||
* initialised at this point (i.e. {@link FMLCommonSetupEvent} or {@link FMLClientSetupEvent} may not have been
|
||||
* dispatched). Subscribers should be careful not to
|
||||
*/
|
||||
public class RegisterTurtleModellersEvent extends Event implements IModBusEvent, RegisterTurtleUpgradeModeller {
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public <T extends ITurtleUpgrade> void register(TurtleUpgradeSerialiser<T> serialiser, TurtleUpgradeModeller<T> modeller) {
|
||||
ComputerCraftAPIClientService.get().registerTurtleUpgradeModeller(serialiser, modeller);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user