private static String formatMultiStateJson(String modid, Block block) { IMultiBlockStateBlock states = (IMultiBlockStateBlock) block; IProperty[] props = states.getProps(); StringBuilder sb = new StringBuilder(); for(IProperty prop : props) { getJsonsForProps(prop, states, sb); } return String.format("" + "{" + "\t\"forge_marker\": 1,\n" + "\t\"defaults\": {\n" + "\t\t%s\n" + "}\n" + "\t\"variants\": {\n" + "\t\t\"normal\": [{}]\n" + "%s" + "\t}\n" + "}" ,states.getDefaultJson(), sb); } public static > void getJsonsForProps(IProperty prop, IMultiBlockStateBlock states, StringBuilder sb) { sb.append(String.format("\t\t\"%s\":{\n", prop.getName())); for(T val : prop.getAllowedValues()) { sb.append(String.format("\t\t\t\"%s\":{\n", prop.getName(val))); sb.append(states.getJson(prop, val)); sb.append("\t\t\t}\n"); } sb.append("\t\t}\n"); }