protected void loadBlocks() { BlockStateMapper blockstatemapper = this.blockModelShapes.getBlockStateMapper(); for (Block block : Block.REGISTRY) { for (final ResourceLocation resourcelocation : blockstatemapper.getBlockstateLocations(block)) { try { loadBlock(blockstatemapper, block, resourcelocation); } catch (Exception exception) { LOGGER.warn((String)("Unable to load definition " + resourcelocation), (Throwable)exception); } } } }
@SideOnly(Side.CLIENT) public static String getTexture(IBlockState state, String defaultTexture) { try { ModelLoader loader = ModelLoader.VanillaLoader.INSTANCE.getLoader(); BlockStateMapper mapper = loader.blockModelShapes.getBlockStateMapper(); Map<IBlockState, ModelResourceLocation> map = mapper.getVariants(state.getBlock()); ModelResourceLocation stateLocation = map.get(state); ModelBlockDefinition definition = loader.getModelBlockDefinition(stateLocation); ResourceLocation modelLocation = definition.getVariant(stateLocation.getVariant()).getVariantList().get(0).getModelLocation(); ModelBlock modelBlock = loader.loadModel( new ResourceLocation(modelLocation.getResourceDomain(), "models/" + modelLocation.getResourcePath())); String texture = getTexture(modelBlock); return ObjectUtils.firstNonNull(texture, defaultTexture); } catch (Exception e) { e.printStackTrace(); return defaultTexture; } }
@Override public void execute(@Nonnull MinecraftServer server, @Nonnull ICommandSender sender, @Nonnull String[] args) throws CommandException { ItemStack stack = Minecraft.getMinecraft().player.getHeldItemMainhand(); if (!stack.isEmpty() && stack.getItem() instanceof ItemBlock) { Block block = Block.getBlockFromItem(stack.getItem()); BlockStateMapper stateMapper = Minecraft.getMinecraft().getBlockRendererDispatcher().getBlockModelShapes().getBlockStateMapper(); for (Entry<IBlockState, ModelResourceLocation> entry : stateMapper.getVariants(block).entrySet()) { CCLLog.log(Level.INFO, entry.getKey().toString() + " | " + entry.getValue().toString()); } } }
public BlockStateMapper getBlockStateMapper() { return this.blockStateMapper; }
private void loadBlocks() { BlockStateMapper blockstatemapper = this.blockModelShapes.getBlockStateMapper(); for (Block block : Block.REGISTRY) { for (final ResourceLocation resourcelocation : blockstatemapper.getBlockstateLocations(block)) { try { ModelBlockDefinition modelblockdefinition = this.getModelBlockDefinition(resourcelocation); Map<IBlockState, ModelResourceLocation> map = blockstatemapper.getVariants(block); if (modelblockdefinition.hasMultipartData()) { Collection<ModelResourceLocation> collection = Sets.newHashSet(map.values()); modelblockdefinition.getMultipartData().setStateContainer(block.getBlockState()); Collection<ModelResourceLocation> collection1 = (Collection)this.multipartVariantMap.get(modelblockdefinition); if (collection1 == null) { collection1 = Lists.<ModelResourceLocation>newArrayList(); this.multipartVariantMap.put(modelblockdefinition, collection1); } collection1.addAll(Lists.newArrayList(Iterables.filter(collection, new Predicate<ModelResourceLocation>() { public boolean apply(@Nullable ModelResourceLocation p_apply_1_) { return resourcelocation.equals(p_apply_1_); } }))); } for (Entry<IBlockState, ModelResourceLocation> entry : map.entrySet()) { ModelResourceLocation modelresourcelocation = (ModelResourceLocation)entry.getValue(); if (resourcelocation.equals(modelresourcelocation)) { try { this.variants.put(modelresourcelocation, modelblockdefinition.getVariant(modelresourcelocation.getVariant())); } catch (RuntimeException var12) { if (!modelblockdefinition.hasMultipartData()) { LOGGER.warn("Unable to load variant: {} from {}", new Object[] {modelresourcelocation.getVariant(), modelresourcelocation}); } } } } } catch (Exception exception) { LOGGER.warn("Unable to load definition {}", new Object[] {resourcelocation, exception}); } } } }
protected void loadBlock(BlockStateMapper blockstatemapper, Block block, final ResourceLocation resourcelocation) { { { { ModelBlockDefinition modelblockdefinition = this.getModelBlockDefinition(resourcelocation); Map<IBlockState, ModelResourceLocation> map = blockstatemapper.getVariants(block); if (modelblockdefinition.hasMultipartData()) { Collection<ModelResourceLocation> collection = Sets.newHashSet(map.values()); modelblockdefinition.getMultipartData().setStateContainer(block.getBlockState()); registerMultipartVariant(modelblockdefinition, Lists.newArrayList(Iterables.filter(collection, new Predicate<ModelResourceLocation>() { public boolean apply(@Nullable ModelResourceLocation p_apply_1_) { return resourcelocation.equals(p_apply_1_); } }))); } for (Entry<IBlockState, ModelResourceLocation> entry : map.entrySet()) { ModelResourceLocation modelresourcelocation = (ModelResourceLocation)entry.getValue(); if (resourcelocation.equals(modelresourcelocation)) { try { this.registerVariant(modelblockdefinition, modelresourcelocation); } catch (RuntimeException var12) { if (!modelblockdefinition.hasMultipartData()) { LOGGER.warn("Unable to load variant: " + modelresourcelocation.getVariant() + " from " + modelresourcelocation, var12); } } } } } } } }