From 9518eeedf75a58c006d4bcde0773473b8491578c Mon Sep 17 00:00:00 2001 From: tterrag1098 Date: Sat, 28 Mar 2015 14:27:54 -0400 Subject: [PATCH] Vastly improve block loading speed by removing getResource calls --- .../chisel/carving/CarvableHelper.java | 95 +++++++++++-------- 1 file changed, 57 insertions(+), 38 deletions(-) diff --git a/src/main/java/com/cricketcraft/chisel/carving/CarvableHelper.java b/src/main/java/com/cricketcraft/chisel/carving/CarvableHelper.java index 946abb5b..a91e9d1e 100644 --- a/src/main/java/com/cricketcraft/chisel/carving/CarvableHelper.java +++ b/src/main/java/com/cricketcraft/chisel/carving/CarvableHelper.java @@ -1,5 +1,23 @@ package com.cricketcraft.chisel.carving; +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Random; +import java.util.Set; + +import net.minecraft.block.Block; +import net.minecraft.block.BlockPane; +import net.minecraft.block.material.Material; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.item.ItemStack; +import net.minecraft.util.IIcon; +import net.minecraft.util.ResourceLocation; +import net.minecraft.world.IBlockAccess; +import net.minecraftforge.oredict.OreDictionary; + import com.cricketcraft.chisel.Chisel; import com.cricketcraft.chisel.carving.CarvableVariation.CarvableVariationCTM; import com.cricketcraft.chisel.client.render.CTM; @@ -8,18 +26,8 @@ import com.cricketcraft.chisel.compat.FMPIntegration; import com.cricketcraft.chisel.config.Configurations; import com.cricketcraft.chisel.item.ItemCarvable; import com.cricketcraft.chisel.utils.GeneralClient; -import cpw.mods.fml.common.registry.GameRegistry; -import net.minecraft.block.Block; -import net.minecraft.block.BlockPane; -import net.minecraft.block.material.Material; -import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.creativetab.CreativeTabs; -import net.minecraft.item.ItemStack; -import net.minecraft.util.IIcon; -import net.minecraft.world.IBlockAccess; -import net.minecraftforge.oredict.OreDictionary; -import java.util.*; +import cpw.mods.fml.common.registry.GameRegistry; public class CarvableHelper { @@ -44,38 +52,38 @@ public class CarvableHelper { public String blockName; public void addVariation(String description, int metadata, Block bb) { - addVariation(description, metadata, null, bb, 0, Chisel.MOD_ID, Chisel.class); + addVariation(description, metadata, null, bb, 0, Chisel.MOD_ID); } public void addVariation(String description, int metadata, Block bb, int blockMeta) { - addVariation(description, metadata, null, bb, blockMeta, Chisel.MOD_ID, Chisel.class); + addVariation(description, metadata, null, bb, blockMeta, Chisel.MOD_ID); } public void addVariation(String description, int metadata, Block bb, int blockMeta, Material material) { - addVariation(description, metadata, null, bb, blockMeta, Chisel.MOD_ID, Chisel.class); + addVariation(description, metadata, null, bb, blockMeta, Chisel.MOD_ID); } public void addVariation(String description, int metadata, String texture) { - addVariation(description, metadata, texture, null, 0, Chisel.MOD_ID, Chisel.class); + addVariation(description, metadata, texture, null, 0, Chisel.MOD_ID); } - public void addVariation(String description, int metadata, Block bb, String modid, Class mainModClass) { - addVariation(description, metadata, null, bb, 0, modid, mainModClass); + public void addVariation(String description, int metadata, Block bb, String modid) { + addVariation(description, metadata, null, bb, 0, modid); } - public void addVariation(String description, int metadata, Block bb, int blockMeta, String modid, Class mainModClass) { - addVariation(description, metadata, null, bb, blockMeta, modid, mainModClass); + public void addVariation(String description, int metadata, Block bb, int blockMeta, String modid) { + addVariation(description, metadata, null, bb, blockMeta, modid); } - public void addVariation(String description, int metadata, Block bb, int blockMeta, Material material, String modid, Class mainModClass) { - addVariation(description, metadata, null, bb, blockMeta, modid, mainModClass); + public void addVariation(String description, int metadata, Block bb, int blockMeta, Material material, String modid) { + addVariation(description, metadata, null, bb, blockMeta, modid); } - public void addVariation(String description, int metadata, String texture, String modid, Class mainModClass) { - addVariation(description, metadata, texture, null, 0, modid, mainModClass); + public void addVariation(String description, int metadata, String texture, String modid) { + addVariation(description, metadata, texture, null, 0, modid); } - public void addVariation(String description, int metadata, String texture, Block block, int blockMeta, String modid, Class mainModClass) { + public void addVariation(String description, int metadata, String texture, Block block, int blockMeta, String modid) { if (variations.size() >= 16) return; @@ -92,21 +100,21 @@ public class CarvableHelper { if (texture != null) { variation.texture = texture; - String path = "/assets/" + modid + "/textures/blocks/" + variation.texture; + String path = variation.texture; - boolean any = mainModClass.getResource(path + ".png") != null; - boolean ctm3 = mainModClass.getResource(path + "-ctm1.png") != null && mainModClass.getResource(path + "-ctm2.png") != null && mainModClass.getResource(path + "-ctm3.png") != null; - boolean ctmv = mainModClass.getResource(path + "-ctmv.png") != null; - boolean ctmh = mainModClass.getResource(path + "-ctmh.png") != null; - boolean side = mainModClass.getResource(path + "-side.png") != null; - boolean top = mainModClass.getResource(path + "-top.png") != null; - boolean bot = mainModClass.getResource(path + "-bottom.png") != null; - boolean v9 = mainModClass.getResource(path + "-v9.png") != null; - boolean v4 = mainModClass.getResource(path + "-v4.png") != null; - boolean ctmx = mainModClass.getResource(path + "-ctm.png") != null; - boolean r16 = mainModClass.getResource(path + "-r16.png") != null; - boolean r9 = mainModClass.getResource(path + "-r9.png") != null; - boolean r4 = mainModClass.getResource(path + "-r4.png") != null; + boolean any = exists(modid, path, ""); + boolean ctm3 = exists(modid, path, "-ctm1") && exists(modid, path, "-ctm2") && exists(modid, path, "-ctm3"); + boolean ctmv = exists(modid, path, "-ctmv"); + boolean ctmh = exists(modid, path, "-ctmh"); + boolean side = exists(modid, path, "-side"); + boolean top = exists(modid, path, "-top"); + boolean bot = exists(modid, path, "-bottom"); + boolean v9 = exists(modid, path, "-v9"); + boolean v4 = exists(modid, path, "-v4"); + boolean ctmx = exists(modid, path, "-ctm"); + boolean r16 = exists(modid, path, "-r16"); + boolean r9 = exists(modid, path, "-r9"); + boolean r4 = exists(modid, path, "-r4"); if (ctm3) { variation.kind = 3; @@ -145,6 +153,17 @@ public class CarvableHelper { map[metadata] = variation; } + // This is ugly, but faster than class.getResource + private boolean exists(String modid, String path, String postfix) { + ResourceLocation rl = new ResourceLocation(modid, "textures/blocks/" + path + postfix + ".png"); + try { + Minecraft.getMinecraft().getResourceManager().getAllResources(rl); + return true; + } catch (Throwable t) { + return false; + } + } + public CarvableVariation getVariation(int metadata) { if (metadata < 0 || metadata > 15) metadata = 0;