List of usage examples for net.minecraftforge.fml.client.registry IRenderFactory IRenderFactory
IRenderFactory
From source file:com.gmail.socraticphoenix.forge.randore.proxy.RandoresClientProxy.java
License:Open Source License
@Override @SideOnly(Side.CLIENT)// w w w . j a va 2s. com public void preInit(FMLPreInitializationEvent ev) throws IOException, IllegalAccessException { FlexibleTextureRegistry.setTextureSeed(Randores.getInstance().getPreviousSeed()); Logger logger = Randores.getInstance().getLogger(); logger.info("Randores is running client-side."); Configuration configuration = Randores.getInstance().getConfiguration(); configuration.load(); logger.info("Loading languages..."); for (String langFile : RandoresResourceManager .getLines(Minecraft.getMinecraft().getResourceManager().getResource(LANG_DICT).getInputStream())) { ResourceLocation location = new ResourceLocation("randores:resources/lang/" + langFile + ".lang"); IResource resource = RandoresClientSideRegistry.getResource(location); List<String> lines = RandoresResourceManager.getLines(resource.getInputStream()); String lang = RandoresResourceManager.getFileName(resource.getResourceLocation()).replace(".lang", ""); for (String line : lines) { if (line.contains("=")) { String[] pieces = line.split("=", 2); RandoresTranslations.register(lang, pieces[0], pieces[1]); } } } logger.info("Loaded languages."); logger.info("Hacking resource packs..."); List<Field> candidates = new ArrayList<Field>(); for (Field field : Minecraft.class.getDeclaredFields()) { if (field.getType() == List.class && field.getGenericType() instanceof ParameterizedType) { ParameterizedType parameterizedType = (ParameterizedType) field.getGenericType(); if (parameterizedType.getActualTypeArguments().length == 1 && parameterizedType.getActualTypeArguments()[0] == IResourcePack.class) { candidates.add(field); } } } logger.info("Number of candidates: " + candidates.size()); if (candidates.size() == 1) { Field field = candidates.get(0); boolean accessible = field.isAccessible(); field.setAccessible(true); try { List<IResourcePack> packs = (List<IResourcePack>) field.get(Minecraft.getMinecraft()); packs.add(new RandoresLazyResourcePack()); packs.add(new RandoresArmorResourcePack()); logger.info("Successfully added packs to list, refreshing list"); Minecraft.getMinecraft().refreshResources(); logger.info("Successfully hacked default resource packs."); } catch (IllegalAccessException e) { throw e; } finally { field.setAccessible(accessible); } } else { throw new IllegalStateException("Fatal error, expected 1 candidate, but found " + candidates.size()); } logger.info("Registering entity renders..."); RenderingRegistry.registerEntityRenderingHandler(RandoresArrow.class, new IRenderFactory<RandoresArrow>() { @Override public Render<? super RandoresArrow> createRenderFor(RenderManager manager) { return new RenderTippedArrow(manager); } }); logger.info("Finished registering entity renders."); }