From faa00cd894fd347737ff760aae0e41e1e71fb2ff Mon Sep 17 00:00:00 2001 From: shartte Date: Fri, 28 Aug 2020 15:57:47 +0200 Subject: [PATCH] Backport Model Registration Changes (#4647) * Fix Special Model Registration (#4577) * Fixes #4575 by updating Forge (ModelRegistryEvent is a modbus event but was misflagged as not being one). And update Forge because their breaking change breaks our mod. * Update gradle.properties Co-authored-by: yueh * Update src/main/resources/META-INF/mods.toml Co-authored-by: yueh Co-authored-by: yueh (cherry picked from commit 8733c2c11f781595c433adb93ac08a37494b32fb) * Strip pom.xml dependencies. (cherry picked from commit 00d4c20d9fd3c1cedd6913cc94955ecbd70fda75) --- build.gradle | 7 +++ src/main/java/appeng/core/AppEng.java | 56 --------------------- src/main/java/appeng/core/Registration.java | 56 ++++++++++++++++++++- 3 files changed, 61 insertions(+), 58 deletions(-) diff --git a/build.gradle b/build.gradle index ec468490e..55e8ba962 100644 --- a/build.gradle +++ b/build.gradle @@ -174,6 +174,13 @@ publishing { groupId = project.group artifactId = project.archivesBaseName version = project.version + + // ForgeGradle will generate wild dependency definitions, see https://github.com/MinecraftForge/ForgeGradle/issues/584 + // Since we don't actually depend on anything, just remove the entire node. + pom.withXml { + asNode().remove(asNode().dependencies) + } + from components.java artifact sourcesJar artifact javadocJar diff --git a/src/main/java/appeng/core/AppEng.java b/src/main/java/appeng/core/AppEng.java index 94dcafd6d..7654f0755 100644 --- a/src/main/java/appeng/core/AppEng.java +++ b/src/main/java/appeng/core/AppEng.java @@ -19,7 +19,6 @@ package appeng.core; import java.util.concurrent.TimeUnit; -import java.util.function.Supplier; import javax.annotation.Nonnull; @@ -39,8 +38,6 @@ import net.minecraft.world.biome.Biome; import net.minecraft.world.gen.feature.Feature; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; -import net.minecraftforge.client.model.ModelLoaderRegistry; -import net.minecraftforge.client.model.geometry.IModelGeometry; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.common.ModDimension; import net.minecraftforge.eventbus.api.IEventBus; @@ -56,29 +53,10 @@ import net.minecraftforge.fml.event.server.FMLServerStoppedEvent; import net.minecraftforge.fml.event.server.FMLServerStoppingEvent; import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; -import appeng.block.paint.PaintSplotchesModel; -import appeng.block.qnb.QnbFormedModel; -import appeng.bootstrap.components.IClientSetupComponent; import appeng.bootstrap.components.IInitComponent; import appeng.bootstrap.components.IPostInitComponent; import appeng.capabilities.Capabilities; import appeng.client.ClientHelper; -import appeng.client.render.DummyFluidItemModel; -import appeng.client.render.FacadeItemModel; -import appeng.client.render.SimpleModelLoader; -import appeng.client.render.cablebus.CableBusModelLoader; -import appeng.client.render.cablebus.P2PTunnelFrequencyModel; -import appeng.client.render.crafting.CraftingCubeModelLoader; -import appeng.client.render.crafting.EncodedPatternModelLoader; -import appeng.client.render.model.BiometricCardModel; -import appeng.client.render.model.ColorApplicatorModel; -import appeng.client.render.model.DriveModel; -import appeng.client.render.model.GlassModel; -import appeng.client.render.model.MemoryCardModel; -import appeng.client.render.model.SkyCompassModel; -import appeng.client.render.model.UVLModelLoader; -import appeng.client.render.spatial.SpatialPylonModel; -import appeng.core.features.registries.PartModels; import appeng.core.stats.AdvancementTriggers; import appeng.core.sync.network.NetworkHandler; import appeng.core.worlddata.WorldData; @@ -90,7 +68,6 @@ import appeng.entity.TinyTNTPrimedRenderer; import appeng.hooks.TickHandler; import appeng.integration.Integrations; import appeng.parts.PartPlacement; -import appeng.parts.automation.PlaneModelLoader; import appeng.server.ServerHelper; @Mod(AppEng.MOD_ID) @@ -177,39 +154,6 @@ public final class AppEng { RenderingRegistry.registerEntityRenderingHandler(ChargedQuartzEntity.TYPE, m -> new ItemRenderer(m, Minecraft.getInstance().getItemRenderer())); - // TODO: Do not use the internal API - final ApiDefinitions definitions = Api.INSTANCE.definitions(); - definitions.getRegistry().getBootstrapComponents(IClientSetupComponent.class) - .forEachRemaining(IClientSetupComponent::setup); - - addBuiltInModel("glass", GlassModel::new); - addBuiltInModel("sky_compass", SkyCompassModel::new); - addBuiltInModel("dummy_fluid_item", DummyFluidItemModel::new); - addBuiltInModel("memory_card", MemoryCardModel::new); - addBuiltInModel("biometric_card", BiometricCardModel::new); - addBuiltInModel("drive", DriveModel::new); - addBuiltInModel("color_applicator", ColorApplicatorModel::new); - addBuiltInModel("spatial_pylon", SpatialPylonModel::new); - addBuiltInModel("paint_splotches", PaintSplotchesModel::new); - addBuiltInModel("quantum_bridge_formed", QnbFormedModel::new); - addBuiltInModel("p2p_tunnel_frequency", P2PTunnelFrequencyModel::new); - addBuiltInModel("facade", FacadeItemModel::new); - ModelLoaderRegistry.registerLoader(new ResourceLocation(AppEng.MOD_ID, "encoded_pattern"), - EncodedPatternModelLoader.INSTANCE); - ModelLoaderRegistry.registerLoader(new ResourceLocation(AppEng.MOD_ID, "part_plane"), - PlaneModelLoader.INSTANCE); - ModelLoaderRegistry.registerLoader(new ResourceLocation(AppEng.MOD_ID, "crafting_cube"), - CraftingCubeModelLoader.INSTANCE); - ModelLoaderRegistry.registerLoader(new ResourceLocation(AppEng.MOD_ID, "uvlightmap"), UVLModelLoader.INSTANCE); - ModelLoaderRegistry.registerLoader(new ResourceLocation(AppEng.MOD_ID, "cable_bus"), - new CableBusModelLoader((PartModels) Api.INSTANCE.registries().partModels())); - - } - - @OnlyIn(Dist.CLIENT) - private static > void addBuiltInModel(String id, Supplier modelFactory) { - ModelLoaderRegistry.registerLoader(new ResourceLocation(AppEng.MOD_ID, id), - new SimpleModelLoader<>(modelFactory)); } @Nonnull diff --git a/src/main/java/appeng/core/Registration.java b/src/main/java/appeng/core/Registration.java index 215ef3d61..c85b99eff 100644 --- a/src/main/java/appeng/core/Registration.java +++ b/src/main/java/appeng/core/Registration.java @@ -18,6 +18,8 @@ package appeng.core; +import java.util.function.Supplier; + import net.minecraft.advancements.CriteriaTriggers; import net.minecraft.block.Block; import net.minecraft.block.BlockState; @@ -48,6 +50,8 @@ import net.minecraftforge.client.event.ModelRegistryEvent; import net.minecraftforge.client.event.ParticleFactoryRegisterEvent; import net.minecraftforge.client.event.TextureStitchEvent; import net.minecraftforge.client.model.ModelLoader; +import net.minecraftforge.client.model.ModelLoaderRegistry; +import net.minecraftforge.client.model.geometry.IModelGeometry; import net.minecraftforge.common.ModDimension; import net.minecraftforge.common.extensions.IForgeContainerType; import net.minecraftforge.event.RegistryEvent; @@ -77,7 +81,10 @@ import appeng.api.networking.security.ISecurityGrid; import appeng.api.networking.spatial.ISpatialCache; import appeng.api.networking.storage.IStorageGrid; import appeng.api.networking.ticking.ITickManager; +import appeng.block.paint.PaintSplotchesModel; +import appeng.block.qnb.QnbFormedModel; import appeng.bootstrap.components.IBlockRegistrationComponent; +import appeng.bootstrap.components.IClientSetupComponent; import appeng.bootstrap.components.IEntityRegistrationComponent; import appeng.bootstrap.components.IItemColorRegistrationComponent; import appeng.bootstrap.components.IItemRegistrationComponent; @@ -116,6 +123,13 @@ import appeng.client.gui.implementations.UpgradeableScreen; import appeng.client.gui.implementations.VibrationChamberScreen; import appeng.client.gui.implementations.WirelessScreen; import appeng.client.gui.implementations.WirelessTermScreen; +import appeng.client.render.DummyFluidItemModel; +import appeng.client.render.FacadeItemModel; +import appeng.client.render.SimpleModelLoader; +import appeng.client.render.cablebus.CableBusModelLoader; +import appeng.client.render.cablebus.P2PTunnelFrequencyModel; +import appeng.client.render.crafting.CraftingCubeModelLoader; +import appeng.client.render.crafting.EncodedPatternModelLoader; import appeng.client.render.effects.ChargedOreFX; import appeng.client.render.effects.CraftingFx; import appeng.client.render.effects.EnergyFx; @@ -125,8 +139,13 @@ import appeng.client.render.effects.MatterCannonFX; import appeng.client.render.effects.ParticleTypes; import appeng.client.render.effects.VibrantFX; import appeng.client.render.model.BiometricCardModel; +import appeng.client.render.model.ColorApplicatorModel; +import appeng.client.render.model.DriveModel; +import appeng.client.render.model.GlassModel; import appeng.client.render.model.MemoryCardModel; import appeng.client.render.model.SkyCompassModel; +import appeng.client.render.model.UVLModelLoader; +import appeng.client.render.spatial.SpatialPylonModel; import appeng.client.render.tesr.InscriberTESR; import appeng.client.render.tesr.SkyChestTESR; import appeng.container.AEBaseContainer; @@ -195,11 +214,10 @@ import appeng.me.cache.PathGridCache; import appeng.me.cache.SecurityCache; import appeng.me.cache.SpatialPylonCache; import appeng.me.cache.TickManagerCache; +import appeng.parts.automation.PlaneModelLoader; import appeng.recipes.game.DisassembleRecipe; import appeng.recipes.game.FacadeRecipe; -import appeng.recipes.handlers.GrinderRecipe; import appeng.recipes.handlers.GrinderRecipeSerializer; -import appeng.recipes.handlers.InscriberRecipe; import appeng.recipes.handlers.InscriberRecipeSerializer; import appeng.server.AECommand; import appeng.spatial.StorageCellBiome; @@ -245,6 +263,40 @@ final class Registration { @OnlyIn(Dist.CLIENT) public void modelRegistryEvent(ModelRegistryEvent event) { registerSpecialModels(); + + // TODO: Do not use the internal API + final ApiDefinitions definitions = Api.INSTANCE.definitions(); + definitions.getRegistry().getBootstrapComponents(IClientSetupComponent.class) + .forEachRemaining(IClientSetupComponent::setup); + + addBuiltInModel("glass", GlassModel::new); + addBuiltInModel("sky_compass", SkyCompassModel::new); + addBuiltInModel("dummy_fluid_item", DummyFluidItemModel::new); + addBuiltInModel("memory_card", MemoryCardModel::new); + addBuiltInModel("biometric_card", BiometricCardModel::new); + addBuiltInModel("drive", DriveModel::new); + addBuiltInModel("color_applicator", ColorApplicatorModel::new); + addBuiltInModel("spatial_pylon", SpatialPylonModel::new); + addBuiltInModel("paint_splotches", PaintSplotchesModel::new); + addBuiltInModel("quantum_bridge_formed", QnbFormedModel::new); + addBuiltInModel("p2p_tunnel_frequency", P2PTunnelFrequencyModel::new); + addBuiltInModel("facade", FacadeItemModel::new); + ModelLoaderRegistry.registerLoader(new ResourceLocation(AppEng.MOD_ID, "encoded_pattern"), + EncodedPatternModelLoader.INSTANCE); + ModelLoaderRegistry.registerLoader(new ResourceLocation(AppEng.MOD_ID, "part_plane"), + PlaneModelLoader.INSTANCE); + ModelLoaderRegistry.registerLoader(new ResourceLocation(AppEng.MOD_ID, "crafting_cube"), + CraftingCubeModelLoader.INSTANCE); + ModelLoaderRegistry.registerLoader(new ResourceLocation(AppEng.MOD_ID, "uvlightmap"), UVLModelLoader.INSTANCE); + ModelLoaderRegistry.registerLoader(new ResourceLocation(AppEng.MOD_ID, "cable_bus"), + new CableBusModelLoader((PartModels) Api.INSTANCE.registries().partModels())); + + } + + @OnlyIn(Dist.CLIENT) + private static > void addBuiltInModel(String id, Supplier modelFactory) { + ModelLoaderRegistry.registerLoader(new ResourceLocation(AppEng.MOD_ID, id), + new SimpleModelLoader<>(modelFactory)); } /**