Debug logging for registration timings

This commit is contained in:
Nicholas Ignoffo 2017-10-09 12:34:14 -07:00
parent 2a1911ea07
commit e2538d9291
5 changed files with 68 additions and 34 deletions

View file

@ -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);
}
}

View file

@ -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<BloodOrb> BLOOD_ORBS = null;
@SubscribeEvent
public static void registerItems(RegistryEvent.Register<Item> event) {
Stopwatch stopwatch = Stopwatch.createStarted();
RegistrarBloodMagicItems.registerItems(event.getRegistry());
BloodMagic.debug("Item registration completed in {}", stopwatch.stop());
}
@SubscribeEvent
public static void registerBlocks(RegistryEvent.Register<Block> event) {
Stopwatch stopwatch = Stopwatch.createStarted();
RegistrarBloodMagicBlocks.registerBlocks(event.getRegistry());
BloodMagic.debug("Block registration completed in {}", stopwatch.stop());
}
@SubscribeEvent
public static void registerRecipes(RegistryEvent.Register<IRecipe> event) {
Stopwatch stopwatch = Stopwatch.createStarted();
RegistrarBloodMagicRecipes.registerCrafting(event.getRegistry());
BloodMagic.debug("Recipe registration completed in {}", stopwatch.stop());
}
@SubscribeEvent
public static void registerBloodOrbs(RegistryEvent.Register<BloodOrb> 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<Potion> 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<EntityEntry> 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<BloodOrb>()
.setName(new ResourceLocation(BloodMagic.MODID, "blood_orb"))
.setIDRange(0, Short.MAX_VALUE)
.setType(BloodOrb.class)
.addCallback((IForgeRegistry.AddCallback<BloodOrb>) (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

View file

@ -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<Block> blocks;
@SubscribeEvent
public static void registerBlocks(RegistryEvent.Register<Block> event) {
public static void registerBlocks(IForgeRegistry<Block> 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) {

View file

@ -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<Item> items;
@SubscribeEvent
public static void registerItems(RegistryEvent.Register<Item> event) {
public static void registerItems(IForgeRegistry<Item> 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<Integer, String> variant : variantProvider.getVariants())
ModelLoader.setCustomModelResourceLocation(i, variant.getLeft(), new ModelResourceLocation(i.getRegistryName(), variant.getRight()));
Int2ObjectMap<String> variants = new Int2ObjectOpenHashMap<>();
variantProvider.populateVariants(variants);
for (Int2ObjectMap.Entry<String> 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<String> 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<Integer, String> variant : variantProvider.getVariants())
ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(b), variant.getLeft(), new ModelResourceLocation(b.getRegistryName(), variant.getRight()));
Int2ObjectMap<String> variants = new Int2ObjectOpenHashMap<>();
variantProvider.populateVariants(variants);
for (Int2ObjectMap.Entry<String> variant : variants.int2ObjectEntrySet())
ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(b), variant.getIntKey(), new ModelResourceLocation(b.getRegistryName(), variant.getValue()));
});
final ResourceLocation holdingLoc = SIGIL_HOLDING.getRegistryName();

View file

@ -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<IRecipe> event) {
public static void registerCrafting(IForgeRegistry<IRecipe> 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()));
}
}
}