From e2538d92918db9b92fab67917b5b6372c1d59d03 Mon Sep 17 00:00:00 2001 From: Nicholas Ignoffo Date: Mon, 9 Oct 2017 12:34:14 -0700 Subject: [PATCH] Debug logging for registration timings --- .../java/WayofTime/bloodmagic/BloodMagic.java | 5 +++ .../bloodmagic/core/RegistrarBloodMagic.java | 38 +++++++++++++++++++ .../core/RegistrarBloodMagicBlocks.java | 14 ++----- .../core/RegistrarBloodMagicItems.java | 35 ++++++++--------- .../core/RegistrarBloodMagicRecipes.java | 10 ++--- 5 files changed, 68 insertions(+), 34 deletions(-) diff --git a/src/main/java/WayofTime/bloodmagic/BloodMagic.java b/src/main/java/WayofTime/bloodmagic/BloodMagic.java index c24c358f..5874d562 100644 --- a/src/main/java/WayofTime/bloodmagic/BloodMagic.java +++ b/src/main/java/WayofTime/bloodmagic/BloodMagic.java @@ -133,4 +133,9 @@ public class BloodMagic { public void onIMCRecieved(FMLInterModComms.IMCEvent event) { IMCHandler.handleIMC(event); } + + public static void debug(String message, Object... args) { + if (IS_DEV) + LOGGER.info("[DEBUG] " + message, args); + } } diff --git a/src/main/java/WayofTime/bloodmagic/core/RegistrarBloodMagic.java b/src/main/java/WayofTime/bloodmagic/core/RegistrarBloodMagic.java index 688c627c..9a81cc95 100644 --- a/src/main/java/WayofTime/bloodmagic/core/RegistrarBloodMagic.java +++ b/src/main/java/WayofTime/bloodmagic/core/RegistrarBloodMagic.java @@ -10,9 +10,13 @@ import WayofTime.bloodmagic.entity.projectile.EntitySentientArrow; import WayofTime.bloodmagic.entity.projectile.EntitySoulSnare; import WayofTime.bloodmagic.item.types.ComponentType; import WayofTime.bloodmagic.potion.PotionBloodMagic; +import com.google.common.base.Stopwatch; +import net.minecraft.block.Block; import net.minecraft.client.renderer.block.model.ModelResourceLocation; import net.minecraft.init.MobEffects; +import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraft.item.crafting.IRecipe; import net.minecraft.potion.Potion; import net.minecraft.util.ResourceLocation; import net.minecraftforge.client.event.ModelRegistryEvent; @@ -61,8 +65,30 @@ public class RegistrarBloodMagic { public static IForgeRegistry BLOOD_ORBS = null; + @SubscribeEvent + public static void registerItems(RegistryEvent.Register event) { + Stopwatch stopwatch = Stopwatch.createStarted(); + RegistrarBloodMagicItems.registerItems(event.getRegistry()); + BloodMagic.debug("Item registration completed in {}", stopwatch.stop()); + } + + @SubscribeEvent + public static void registerBlocks(RegistryEvent.Register event) { + Stopwatch stopwatch = Stopwatch.createStarted(); + RegistrarBloodMagicBlocks.registerBlocks(event.getRegistry()); + BloodMagic.debug("Block registration completed in {}", stopwatch.stop()); + } + + @SubscribeEvent + public static void registerRecipes(RegistryEvent.Register event) { + Stopwatch stopwatch = Stopwatch.createStarted(); + RegistrarBloodMagicRecipes.registerCrafting(event.getRegistry()); + BloodMagic.debug("Recipe registration completed in {}", stopwatch.stop()); + } + @SubscribeEvent public static void registerBloodOrbs(RegistryEvent.Register event) { + Stopwatch stopwatch = Stopwatch.createStarted(); ResourceLocation orb = RegistrarBloodMagicItems.BLOOD_ORB.getRegistryName(); event.getRegistry().registerAll( new BloodOrb("weak", 1, 5000).withModel(new ModelResourceLocation(orb, "type=weak")).setRegistryName("weak"), @@ -72,10 +98,12 @@ public class RegistrarBloodMagic { new BloodOrb("archmage", 5, 10000000).withModel(new ModelResourceLocation(orb, "type=archmage")).setRegistryName("archmage"), new BloodOrb("transcendent", 6, 30000000).withModel(new ModelResourceLocation(orb, "type=transcendent")).setRegistryName("transcendent") ); + BloodMagic.debug("Blood Orb registration completed in {}", stopwatch.stop()); } @SubscribeEvent public static void registerPotions(RegistryEvent.Register event) { + Stopwatch stopwatch = Stopwatch.createStarted(); event.getRegistry().registerAll( new PotionBloodMagic("Boost", false, 0xFFFFFF, 0, 1).setRegistryName("boost"), new PotionBloodMagic("Planar Binding", false, 0, 2, 0).setRegistryName("planar_binding"), @@ -89,10 +117,12 @@ public class RegistrarBloodMagic { new PotionBloodMagic("Cling", false, 0x000000, 2, 1).setRegistryName("cling"), new PotionBloodMagic("S. Lamb", false, 0x000000, 3, 1).setRegistryName("sacrificial_lamb") ); + BloodMagic.debug("Potion registration completed in {}", stopwatch.stop()); } @SubscribeEvent public static void registerEntities(RegistryEvent.Register event) { + Stopwatch stopwatch = Stopwatch.createStarted(); int entities = 0; EntityRegistry.registerModEntity(new ResourceLocation(BloodMagic.MODID, "blood_light"), EntityBloodLight.class, "BloodLight", ++entities, BloodMagic.instance, 16 * 4, 3, true); EntityRegistry.registerModEntity(new ResourceLocation(BloodMagic.MODID, "soul_snare"), EntitySoulSnare.class, "SoulSnare", ++entities, BloodMagic.instance, 16 * 4, 3, true); @@ -104,21 +134,25 @@ public class RegistrarBloodMagic { EntityRegistry.registerModEntity(new ResourceLocation(BloodMagic.MODID, "corrupted_sheep"), EntityCorruptedSheep.class, "CorruptedSheep", ++entities, BloodMagic.instance, 16 * 4, 3, true); EntityRegistry.registerModEntity(new ResourceLocation(BloodMagic.MODID, "corrupted_chicken"), EntityCorruptedChicken.class, "CorruptedChicken", ++entities, BloodMagic.instance, 16 * 4, 3, true); EntityRegistry.registerModEntity(new ResourceLocation(BloodMagic.MODID, "corrupted_spider"), EntityCorruptedSpider.class, "CorruptedSpider", ++entities, BloodMagic.instance, 16 * 4, 3, true); + BloodMagic.debug("Entity registration completed in {}", stopwatch.stop()); } @SubscribeEvent public static void onRegistryCreation(RegistryEvent.NewRegistry event) { + Stopwatch stopwatch = Stopwatch.createStarted(); BLOOD_ORBS = new RegistryBuilder() .setName(new ResourceLocation(BloodMagic.MODID, "blood_orb")) .setIDRange(0, Short.MAX_VALUE) .setType(BloodOrb.class) .addCallback((IForgeRegistry.AddCallback) (owner, stage, id, obj, oldObj) -> OrbRegistry.tierMap.put(obj.getTier(), OrbRegistry.getOrbStack(obj))) .create(); + BloodMagic.debug("Registry creation completed in {}", stopwatch.stop()); } @SideOnly(Side.CLIENT) @SubscribeEvent public static void registerModels(ModelRegistryEvent event) { + Stopwatch stopwatch = Stopwatch.createStarted(); for (BloodOrb orb : BLOOD_ORBS) { ModelResourceLocation modelLocation = orb.getModelLocation(); if (modelLocation == null) @@ -137,6 +171,10 @@ public class RegistrarBloodMagic { return orb.getModelLocation(); }); + + RegistrarBloodMagicItems.registerModels(); + RegistrarBloodMagicBlocks.registerModels(); + BloodMagic.debug("Model registration completed in {}", stopwatch.stop()); } @SubscribeEvent diff --git a/src/main/java/WayofTime/bloodmagic/core/RegistrarBloodMagicBlocks.java b/src/main/java/WayofTime/bloodmagic/core/RegistrarBloodMagicBlocks.java index 54cad50a..585b6a06 100644 --- a/src/main/java/WayofTime/bloodmagic/core/RegistrarBloodMagicBlocks.java +++ b/src/main/java/WayofTime/bloodmagic/core/RegistrarBloodMagicBlocks.java @@ -15,17 +15,13 @@ import net.minecraft.block.state.IBlockState; import net.minecraft.client.renderer.block.model.ModelResourceLocation; import net.minecraft.client.renderer.block.statemap.StateMapperBase; import net.minecraft.init.Blocks; -import net.minecraftforge.client.event.ModelRegistryEvent; import net.minecraftforge.client.model.ModelLoader; -import net.minecraftforge.event.RegistryEvent; import net.minecraftforge.fluids.FluidRegistry; -import net.minecraftforge.fml.common.Mod; -import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import net.minecraftforge.fml.common.registry.GameRegistry; +import net.minecraftforge.registries.IForgeRegistry; import java.util.List; -@Mod.EventBusSubscriber(modid = BloodMagic.MODID) @GameRegistry.ObjectHolder(BloodMagic.MODID) @SuppressWarnings("unused") public class RegistrarBloodMagicBlocks { @@ -73,8 +69,7 @@ public class RegistrarBloodMagicBlocks { static List blocks; - @SubscribeEvent - public static void registerBlocks(RegistryEvent.Register event) { + public static void registerBlocks(IForgeRegistry registry) { FluidRegistry.registerFluid(BlockLifeEssence.getLifeEssence()); FluidRegistry.addBucketForFluid(BlockLifeEssence.getLifeEssence()); @@ -122,13 +117,12 @@ public class RegistrarBloodMagicBlocks { new BlockInversionPillarEnd().setRegistryName("inversion_pillar_end") ); - event.getRegistry().registerAll(blocks.toArray(new Block[0])); + registry.registerAll(blocks.toArray(new Block[0])); registerTileEntities(); } - @SubscribeEvent - public static void registerModels(ModelRegistryEvent event) { + public static void registerModels() { ModelLoader.setCustomStateMapper(LIFE_ESSENCE, new StateMapperBase() { @Override protected ModelResourceLocation getModelResourceLocation(IBlockState state) { diff --git a/src/main/java/WayofTime/bloodmagic/core/RegistrarBloodMagicItems.java b/src/main/java/WayofTime/bloodmagic/core/RegistrarBloodMagicItems.java index 40dccbcb..f43433ee 100644 --- a/src/main/java/WayofTime/bloodmagic/core/RegistrarBloodMagicItems.java +++ b/src/main/java/WayofTime/bloodmagic/core/RegistrarBloodMagicItems.java @@ -16,30 +16,26 @@ import WayofTime.bloodmagic.item.routing.ItemNodeRouter; import WayofTime.bloodmagic.item.routing.ItemRouterFilter; import WayofTime.bloodmagic.item.sigil.*; import WayofTime.bloodmagic.item.sigil.sigil.*; -import WayofTime.bloodmagic.item.sigil.sigil.ItemSigilDivination; import WayofTime.bloodmagic.item.soul.*; import WayofTime.bloodmagic.item.types.ComponentType; import WayofTime.bloodmagic.item.types.ReagentType; import com.google.common.collect.Lists; +import it.unimi.dsi.fastutil.ints.Int2ObjectMap; +import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; import net.minecraft.client.renderer.block.model.ModelResourceLocation; import net.minecraft.init.Items; import net.minecraft.inventory.EntityEquipmentSlot; import net.minecraft.item.Item; import net.minecraft.util.ResourceLocation; -import net.minecraftforge.client.event.ModelRegistryEvent; import net.minecraftforge.client.model.ModelLoader; import net.minecraftforge.common.util.EnumHelper; -import net.minecraftforge.event.RegistryEvent; -import net.minecraftforge.fml.common.Mod; -import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import net.minecraftforge.fml.common.registry.GameRegistry; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; -import org.apache.commons.lang3.tuple.Pair; +import net.minecraftforge.registries.IForgeRegistry; import java.util.List; -@Mod.EventBusSubscriber(modid = BloodMagic.MODID) @GameRegistry.ObjectHolder(BloodMagic.MODID) @SuppressWarnings("unchecked") public class RegistrarBloodMagicItems { @@ -122,8 +118,7 @@ public class RegistrarBloodMagicItems { public static List items; - @SubscribeEvent - public static void registerItems(RegistryEvent.Register event) { + public static void registerItems(IForgeRegistry registry) { items = Lists.newArrayList(); RegistrarBloodMagicBlocks.blocks.stream().filter(block -> block instanceof IBMBlock && ((IBMBlock) block).getItem() != null).forEach(block -> { @@ -207,16 +202,17 @@ public class RegistrarBloodMagicItems { new ItemPotionFlask().setRegistryName("potion_flask") )); - event.getRegistry().registerAll(items.toArray(new Item[0])); + registry.registerAll(items.toArray(new Item[0])); } @SideOnly(Side.CLIENT) - @SubscribeEvent - public static void registerRenders(ModelRegistryEvent event) { + public static void registerModels() { items.stream().filter(i -> i instanceof IVariantProvider).forEach(i -> { IVariantProvider variantProvider = (IVariantProvider) i; - for (Pair variant : variantProvider.getVariants()) - ModelLoader.setCustomModelResourceLocation(i, variant.getLeft(), new ModelResourceLocation(i.getRegistryName(), variant.getRight())); + Int2ObjectMap variants = new Int2ObjectOpenHashMap<>(); + variantProvider.populateVariants(variants); + for (Int2ObjectMap.Entry variant : variants.int2ObjectEntrySet()) + ModelLoader.setCustomModelResourceLocation(i, variant.getIntKey(), new ModelResourceLocation(i.getRegistryName(), variant.getValue())); }); items.stream().filter(i -> i instanceof IMeshProvider).forEach(i -> { @@ -224,7 +220,10 @@ public class RegistrarBloodMagicItems { ResourceLocation loc = mesh.getCustomLocation(); if (loc == null) loc = i.getRegistryName(); - for (String variant : mesh.getVariants()) + + List variants = Lists.newArrayList(); + mesh.populateVariants(variants); + for (String variant : variants) ModelLoader.registerItemVariants(i, new ModelResourceLocation(loc, variant)); ModelLoader.setCustomMeshDefinition(i, mesh.getMeshDefinition()); @@ -232,8 +231,10 @@ public class RegistrarBloodMagicItems { RegistrarBloodMagicBlocks.blocks.stream().filter(b -> b instanceof IVariantProvider).forEach(b -> { IVariantProvider variantProvider = (IVariantProvider) b; - for (Pair variant : variantProvider.getVariants()) - ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(b), variant.getLeft(), new ModelResourceLocation(b.getRegistryName(), variant.getRight())); + Int2ObjectMap variants = new Int2ObjectOpenHashMap<>(); + variantProvider.populateVariants(variants); + for (Int2ObjectMap.Entry variant : variants.int2ObjectEntrySet()) + ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(b), variant.getIntKey(), new ModelResourceLocation(b.getRegistryName(), variant.getValue())); }); final ResourceLocation holdingLoc = SIGIL_HOLDING.getRegistryName(); diff --git a/src/main/java/WayofTime/bloodmagic/core/RegistrarBloodMagicRecipes.java b/src/main/java/WayofTime/bloodmagic/core/RegistrarBloodMagicRecipes.java index 89ed8aa1..d1b8191a 100644 --- a/src/main/java/WayofTime/bloodmagic/core/RegistrarBloodMagicRecipes.java +++ b/src/main/java/WayofTime/bloodmagic/core/RegistrarBloodMagicRecipes.java @@ -19,20 +19,16 @@ import net.minecraft.item.ItemStack; import net.minecraft.item.crafting.IRecipe; import net.minecraft.item.crafting.Ingredient; import net.minecraft.util.ResourceLocation; -import net.minecraftforge.event.RegistryEvent; import net.minecraftforge.fluids.Fluid; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.FluidUtil; -import net.minecraftforge.fml.common.Mod; -import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import net.minecraftforge.oredict.OreIngredient; import net.minecraftforge.oredict.ShapelessOreRecipe; +import net.minecraftforge.registries.IForgeRegistry; -@Mod.EventBusSubscriber(modid = BloodMagic.MODID) public class RegistrarBloodMagicRecipes { - @SubscribeEvent - public static void registerCrafting(RegistryEvent.Register event) { + public static void registerCrafting(IForgeRegistry registry) { for (int i = 0; i < ItemSoulGem.names.length; i++) { for (int j = 0; j < ItemDemonCrystal.NAMES.size(); j++) { ItemStack baseGemStack = new ItemStack(RegistrarBloodMagicItems.SOUL_GEM, 1, i); @@ -43,7 +39,7 @@ public class RegistrarBloodMagicRecipes { EnumDemonWillType willType = ((ItemDemonCrystal) RegistrarBloodMagicItems.ITEM_DEMON_CRYSTAL).getType(crystalStack); ((ItemSoulGem) RegistrarBloodMagicItems.SOUL_GEM).setCurrentType(willType, newGemStack); ShapelessOreRecipe shapeless = new ShapelessOreRecipe(new ResourceLocation(BloodMagic.MODID, "soul_gem"), newGemStack, baseGemStack, crystalStack); - event.getRegistry().register(shapeless.setRegistryName("soul_gem_" + willType.getName())); + registry.register(shapeless.setRegistryName("soul_gem_" + willType.getName())); } } }