古いIntel HD GraphicsでMinecraft Forgeが起動しない件の解決方法

MinecraftのModを作ってみようと環境構築していた際、EclipseでForgeのClientを起動するとエラーが発生して起動しない問題に遭遇。ググってもなかなか情報が得られず、解決するのに苦労したので同じ現象で悩んだ人のためにメモを残しておく。

# エラーが出た環境
- Windows 10 Home
- Java 1.8.0_211
- Eclipse 2019-03 (4.11.0)
- Minecraft Forge 1.12.2

# 実施した構築手順と発生したエラー
「[(WIP)Minecraft Mod をForgeで作成(導入)](https://qiita.com/chocoa/items/09510fc0a8468d59352c)」を参考にEclipse用のプロジェクトを作成。MDKExampleのClientを起動したところで以下のようなエラーが発生してMinecraftが起動しない。

```
[22:19:31] [main/ERROR] [minecraft/Minecraft]: Couldn't set pixel format
org.lwjgl.LWJGLException: Pixel format not accelerated
	at org.lwjgl.opengl.WindowsPeerInfo.nChoosePixelFormat(Native Method) ~[lwjgl-2.9.4-nightly-20150209.jar:?]
	at org.lwjgl.opengl.WindowsPeerInfo.choosePixelFormat(WindowsPeerInfo.java:52) ~[lwjgl-2.9.4-nightly-20150209.jar:?]
	at org.lwjgl.opengl.WindowsDisplay.createWindow(WindowsDisplay.java:247) ~[lwjgl-2.9.4-nightly-20150209.jar:?]
	at org.lwjgl.opengl.Display.createWindow(Display.java:306) ~[lwjgl-2.9.4-nightly-20150209.jar:?]
	at org.lwjgl.opengl.Display.create(Display.java:848) ~[lwjgl-2.9.4-nightly-20150209.jar:?]
	at org.lwjgl.opengl.Display.create(Display.java:757) ~[lwjgl-2.9.4-nightly-20150209.jar:?]
	at net.minecraft.client.Minecraft.createDisplay(Minecraft.java:674) [Minecraft.class:?]
	at net.minecraft.client.Minecraft.init(Minecraft.java:504) [Minecraft.class:?]
	at net.minecraft.client.Minecraft.run(Minecraft.java:421) [Minecraft.class:?]
	at net.minecraft.client.main.Main.main(Main.java:118) [Main.class:?]
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_202]
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_202]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_202]
	at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_202]
	at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.12.jar:?]
	at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.12.jar:?]
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_202]
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_202]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_202]
	at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_202]
	at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97) [start/:?]
	at GradleStart.main(GradleStart.java:25) [start/:?]
```

# 原因調査
「org.lwjgl.LWJGLException: Pixel format not accelerated」を調べてみると、グラフィックボードのドライバを新しくしろ、という解決策くらいしか見当たらない。確認したところ既に最新のドライバだったため途方に暮れる。

## 別のPCで同じ環境を構築
別のPCで全く同じ環境を構築したところ、問題なく起動した。
少なくとも、Java・Eclipse・Forgeの組み合わせは問題なさそう。

エラーが起きるPCと起きないPCとの違いを考えたが、OSや各ソフトウェアのバージョンは同じで、ハードウェアの違いくらいしかない。

そこで、グラボの名称もキーワードに調べたところ、以下のサイトの注釈に気付く。
「[Minecraft Crash Help / Pixel Format Not Accelerated](http://hopper.minecraft.net/help/pixel-format-not-accelerated/)」

> if you are using an "Intel HD Graphics" or "Intel HD Graphics 3000" chipset, see the instructions at the top of this page.

「"Intel HD Graphics"か"Intel HD Graphics 3000"を使ってるなら、ページ上部の説明を見ろ」と。

ちなみに、エラーが出た方のPCはCPUがちょっと古いCore i7-2600Kで、グラボはIntel HD Graphics 2000。出なかった方は比較的新しいCore i5-8250Uで、グラボはIntel UHD Graphics 620。注釈には2000は含まれていないが、番号なしと3000の間なので対象である可能性が高いと思い確認した。

すると、そこには
> On first- and second- generation Intel HD graphics chipsets, a Java version below 8u60 is needed on Windows 10.

という記載が。
どうやら、第一世代と第二世代のIntel HD GraphicsとWindows 10の組み合わせではJavaのバージョンを8u60未満(※)にしなければならないらしい。
Intel HD Graphics 2000は確か第二世代なので、この注釈に当てはまる可能性が高い。

※google翻訳だとbelowを「以下」と訳してくるが、belowは「未満(その値を含まない)」が正解

# 解決策
Oracleの過去バージョンダウンロードサイト「[Java SE 8 Archive Downloads](https://www.oracle.com/technetwork/java/javase/downloads/java-archive-javase8-2177648.html)」から「JDK 8u51」をダウンロードしてインストール。
Eclipseの実行構成でClientを起動する際のJavaを8u51に指定することで問題なく起動するようになった。