LiteLoader/1.8のデバッグ画面へ情報を追加

提供:Minecraft Modding Wiki
移動: 案内, 検索

このページは LiteLoader でMODを制作するためのチュートリアルです。
LiteLoaderの導入についてはLiteLoader導入手順を参照してください。

目次

[編集] 1.8のデバッグ画面へ情報を追加(LiteLoader)

LiteLoaderは、こと画面に関しては非常に簡単にMODを作成することが出来ます。
このチュートリアルでは、LiteLoaderのクラスを使って簡単な画面情報の表示MODを作成してみます。

  • 今回作成するのは「デバッグ画面(F3キー)にSEED値を表示するMOD」です。


[編集] プロジェクトの作成

  1. Eclipseを開き、左側のパッケージエクスプローラに「Client」「LiteLoader」が表示されているところで
  2. 何もないところを右クリックし、コンテキストメニューから「新規」→「Javaプロジェクト」を押下
  3. 「新規Javaプロジェクト」ダイアログで、
    • 「プロジェクト名」に「SampleDebugInfo」と入力し「次へ」
    • 「プロジェクト」タブをクリック、「追加」ボタン押下
    • 「Client」と「LiteLoader」にチェックを入れてOK。
  4. 「新規Javaプロジェクト」ダイアログに戻ったら「完了」でダイアログを閉じます。

[編集] 基本クラスの作成

  1. パッケージエクスプローラーに追加された「SampleDebugInfo」の中の「src」フォルダを選択し右クリック
  2. コンテキストメニューから「新規」→「クラス」をクリック
  3. 「新規 Java クラス」ダイアログで、
    • 「パッケージ」に「com.sample」
    • 「名前」に「LiteModSampleDebugInfo」と入力。(クラス名は先頭に「LiteMod」と付けるのが慣例です)
    • 「インターフェイス」の項で「追加」ボタンを押下
    • 「実装されたインターフェイスの選択」ダイアログのテキストボックスへ「HUDRenderListener」と入力し
    • リスト内に表示された「HUDRenderListener」を選択し「OK」
  4. 「新規 Java クラス」ダイアログに戻ったら「完了」でダイアログを閉じます。
package com.sample;
 
import java.io.File;
 
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.FontRenderer;
import net.minecraft.client.gui.Gui;
import net.minecraft.client.renderer.GlStateManager;
import net.minecraft.server.MinecraftServer;
import net.minecraft.world.World;
 
import com.mumfrey.liteloader.HUDRenderListener;
 
public class LiteModSampleDebugInfo implements HUDRenderListener {
 
	@Override
	public String getVersion() {
		// MODのバージョンを記述します。形式は自由です。
		// このバージョンがLiteLoaderのニワトリメニューに表示されます。
		return "1.0.0";
	}
 
	@Override
	public void init(File configPath) {
		// Configファイルを使用するためのメソッドです。今回は使用しません。
 
	}
 
	@Override
	public void upgradeSettings(String version, File configPath, File oldConfigPath) {
		// MODのバージョンアップ通知を行うためのメソッドです。今回は使用しません。
 
	}
 
	@Override
	public String getName() {
		// MODの名前を入力します。
		// この名前がLiteLoaderのニワトリメニューに表示されます。
		// litemod.json 内の name と同じでないとなりません
		return "SampleDebugInfo";
	}
 
	@Override
	public void onPreRenderHUD(int screenWidth, int screenHeight) {
		// アイテム枠やハート、空腹ゲージ、経験値バーなどのHUD描画の直前に呼ばれるイベントです。
		// 今回は使用しません。
	}
 
	@Override
	public void onPostRenderHUD(int screenWidth, int screenHeight)
	{
	    Minecraft mc = Minecraft.getMinecraft();
	    if (mc.thePlayer == null) return;
	    //シングル かつ デバッグ情報(F3)有効 ならば
	    if (mc.isSingleplayer() && mc.gameSettings.showDebugInfo)
	    {
	        // 今回シングル限定の理由は、シード値取得の為、サーバーを取得しているからです。
	        World world;
	        if (MinecraftServer.getServer() != null && (world = MinecraftServer.getServer().worldServers[0]) != null)
	        {
	            GlStateManager.pushMatrix();
	            GlStateManager.enableBlend();
	            GlStateManager.tryBlendFuncSeparate(770, 771, 1, 0);
	            long seed = world.getWorldInfo().getSeed(); //シード値を取得
	            String str = "Seed: " + Long.valueOf(seed).toString();
	            FontRenderer fontRenderer = mc.fontRendererObj;
	            int height = fontRenderer.FONT_HEIGHT;
	            int width = fontRenderer.getStringWidth(str);
	            int posY = screenHeight - 70;
	            Gui.drawRect(1, posY - 1, 2 + width + 1, posY + height - 1, 0x90505050); //アルファ0x90、グレー(0x505050)の背景枠
	            fontRenderer.func_175063_a(str, (float) 2, (float) posY, 0x00FFFFFF); //Seed情報の描画
	            GlStateManager.disableBlend();
	            GlStateManager.popMatrix();
	        }
	    }
	}
 
}

[編集] litemod.jsonの作成

litemodパッケージに同梱するファイルです。
バージョン情報や、特別なクラスファイルの指定が行えます。
プロジェクトフォルダの下にlitemod.txt という名前のテキストファイルを作成し、以下の様に記述します。
拡張子を「json」へ変更します。

{
    "name": "SampleDebugInfo",
    "mcversion": "1.8",
    "revision": "1",
    "version": "1.0.0",
    "author": "samplename",
    "description": "The Sample MOD!",
    "url": "http://minecraftjp.info/modding/index.php"
}

他にも classTransformerClasses や tweakClass と言ったセクションもあります。
詳しくは https://www.assembla.com/wiki/show/liteloader/Metadata かソース内のヘルプを参照して下さい。

[編集] リリース手順

ここからは、筆者のやり方を記述します。
多分、もっと正しい方法があると思います。

難読化classの作成
Eclipseでビルドしたclassファイルはそのままでは動作しません。
バッチファイルを作り、自動でMCPの reobfuscate.bat を使用して難読化を行います。

  • プロジェクトフォルダの下に以下の内容をテキストファイルを作成し、拡張子を「bat」に変更します。
set PRJNAME=SampleDebugInfo
cd bin
xcopy *.* ..\..\..\bin\minecraft\*.* /S /I /Y
cd ..\..\..\
call reobfuscate.bat
xcopy reobf\minecraft\com\*.* eclipse\%PRJNAME%\bin\com\*.* /S /I /Y
pause

set PRJNAME=SampleDebugInfo の部分は適宜書き換えて下さい。
※このバッチの実行時「続行するには、何かキーを入力して下さい」と言われますが、閉じないで、ENTERを押します。
jarパッケージの作成

  1. EclipseのパッケージエクスプローラーでMODのプロジェクト名を右クリックします。
  2. エクスポートを選び、「エクスポート」ダイアログのツリーの「Java」→「JARファイル」を選択し「次へ」
  3. 右側のツリーの「.classpath」と「.project」等のチェックを外し「litemod.json」のみにします。
  4. 「JAR ファイル」のテキストボックスに 「SampleDebugInfo\mod_SampleDebugInfo1.8.litemod」と記述します。
  5. 一番下の「この JAR の記述をワークスペースに保管」にチェックを付け、「/SampleDebugInfo/pack.jardesc」と入力
  6. 「完了」ボタンで JARパッケージが作成されます。
  7. 次回からはパッケージエクスプローラから「pack.jardesc」をダブルクリックして、「完了」を押すだけで作成可能です。

コメント: 

チュートリアル
個人用ツール