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

警告: ログインしていません。編集を行うと、あなたの IP アドレスが公開されます。ログインまたはアカウントを作成すれば、あなたの編集はその利用者名とともに表示されるほか、その他の利点もあります。

この編集を取り消せます。 下記の差分を確認して、本当に取り消していいか検証してください。よろしければ変更を保存して取り消しを完了してください。
最新版 編集中の文章
2行目: 2行目:
  
 
==SpriteID無限化(独自のterrain.png, gui/items.pngの利用)==
 
==SpriteID無限化(独自のterrain.png, gui/items.pngの利用)==
<p>
+
 今までのサンプルではバニラのテクスチャを参照していた. ブロックはterrain.png, アイテムはgui/items.pngだった. ModLoaderにおけるaddOverrideというメソッドはこれらの空き領域に対し16*16のテクスチャを上書きし, そのテクスチャのインデックスを返すものだったため, 空き領域が埋まるとMinecraftがクラッシュしてしまう. この問題を解決するためにforgeではブロックやアイテムが参照するテクスチャを切り替える機構が用意された. なおこのサンプルでは'''プロキシシステム'''を利用する. <br/>
今までのサンプルではバニラのテクスチャを参照していた. ブロックはterrain.png, アイテムはgui/items.pngだった. ModLoaderにおけるaddOverrideというメソッドはこれらの空き領域に対し16*16のテクスチャを上書きし, そのテクスチャのインデックスを返すものだったため, 空き領域が埋まるとMinecraftがクラッシュしてしまう. この問題を解決するためにforgeではブロックやアイテムが参照するテクスチャを切り替える機構が用意された. なおこのサンプルでは'''プロキシシステム'''を利用する.  
+
また, 独自のterrain.png, items.pngにも名前の制限はない. しかしテクスチャのサイズは256ドット×256ドットである. これは16ドット×16ドットのテクスチャが16×16個まとまっているものである.<br/>
</p>
+
今回サンプルに作成したテクスチャは以下の2つ.<br/>
<p>
+
*[[メディア:SpriteSampleBlocks.png]]<br/>
また, 独自のterrain.png, items.pngにも名前の制限はない. しかしテクスチャのサイズは256ドット×256ドットである. これは16ドット×16ドットのテクスチャが16×16個まとまっているものである. 今回サンプルに作成したテクスチャは以下の2つ.
+
*[[メディア:SpriteSampleItems.png]]<br/>
</p>
 
*[[メディア:SpriteSampleBlocks.png]]
 
*[[メディア:SpriteSampleItems.png]]
 
  
 
===フォルダ構造===
 
===フォルダ構造===
209行目: 206行目:
  
 
==解説==
 
==解説==
<p>
+
 [[Forge式コンフィグファイルの利用]]同様, 既に解説した箇所の解説は省略する.  
[[Forge式コンフィグファイルの利用]]同様, 既に解説した箇所の解説は省略する.  
+
 
</p>
 
  
 
===SpriteSampleCoreクラス===
 
===SpriteSampleCoreクラス===
217行目: 213行目:
 
import cpw.mods.fml.common.SidedProxy;
 
import cpw.mods.fml.common.SidedProxy;
 
</source>
 
</source>
<blockquote>
+
 プロキシシステムを使うためのアノテーション.
プロキシシステムを使うためのアノテーション.
+
<br/>
</blockquote>
 
 
 
  
 
<source lang = "java">
 
<source lang = "java">
226行目: 220行目:
 
public static CommonProxy proxy;
 
public static CommonProxy proxy;
 
</source>
 
</source>
<blockquote>
+
 @SidedProxyの引数でクライアント側とサーバー側のクラスを指定する. この指定はフルパスでなければならない.
@SidedProxyの引数でクライアント側とサーバー側のクラスを指定する. この指定はフルパスでなければならない.
+
<br/>
</blockquote>
 
 
 
  
 
<source lang = "java">
 
<source lang = "java">
 
proxy.registerTextures();
 
proxy.registerTextures();
 
</source>
 
</source>
<blockquote>
+
 プロキシのインスタンスを通してテクスチャの登録を行う. この1行はクライアント側でもサーバー側でも実行されるが, それぞれの実装はClientProxy, CommonProxyで異なる.
プロキシのインスタンスを通してテクスチャの登録を行う. この1行はクライアント側でもサーバー側でも実行されるが, それぞれの実装はClientProxy, CommonProxyで異なる.
+
<br/>
</blockquote>
 
 
 
  
 
===BlockSpriteSampleクラスのgetTextureFileメソッド===
 
===BlockSpriteSampleクラスのgetTextureFileメソッド===
246行目: 236行目:
 
}
 
}
 
</source>
 
</source>
<blockquote>
+
 参照したいテクスチャファイルのパスを返す. この時テクスチャ自体はmcroot/bin/minecraft/mods/spritesフォルダにあることになる.  
参照したいテクスチャファイルのパスを返す. この時テクスチャ自体はmcroot/bin/minecraft/mods/spritesフォルダにあることになる.  
 
</blockquote>
 
 
 
  
 
===ItemSpriteSampleクラスのgetTextureFileメソッド===
 
===ItemSpriteSampleクラスのgetTextureFileメソッド===
258行目: 245行目:
 
}
 
}
 
</source>
 
</source>
<blockquote>
+
 ブロックの場合と同様. アイテムのテクスチャファイルのパスを返す.  
ブロックの場合と同様. アイテムのテクスチャファイルのパスを返す.  
 
</blockquote>
 
 
 
  
 
===CommonProxyクラス===
 
===CommonProxyクラス===
270行目: 254行目:
 
}
 
}
 
</source>
 
</source>
<blockquote>
+
 サーバー側, CommonProxyでは何もしないが, ClientProxyでオーバーライドして使うために空のメソッドを定義している.
サーバー側, CommonProxyでは何もしないが, ClientProxyでオーバーライドして使うために空のメソッドを定義している.
 
</blockquote>
 
 
 
  
 
===ClientProxyクラス===
 
===ClientProxyクラス===
279行目: 260行目:
 
package mods.spritesample.client;
 
package mods.spritesample.client;
 
</source>
 
</source>
<blockquote>
+
 クライアント専用のクラスは全てmods/spritesample/clientフォルダに入れることで, どのクラスがクライアント専用なのかをはっきりさせる. 必要ないなら同じパッケージでよい.
クライアント専用のクラスは全てmods/spritesample/clientフォルダに入れることで, どのクラスがクライアント専用なのかをはっきりさせる. 必要ないなら同じパッケージでよい.
+
<br/>
</blockquote>
 
 
 
  
 
<source lang = "java">
 
<source lang = "java">
 
import net.minecraftforge.client.MinecraftForgeClient;
 
import net.minecraftforge.client.MinecraftForgeClient;
 
</source>
 
</source>
<blockquote>
+
 MinecraftForgeAPIのうちクライアント側のみの機能を提供するクラス.
MinecraftForgeAPIのうちクライアント側のみの機能を提供するクラス.
+
<br/>
</blockquote>
 
 
 
  
 
<source lang = "java">
 
<source lang = "java">
296行目: 273行目:
 
import cpw.mods.fml.common.asm.SideOnly;
 
import cpw.mods.fml.common.asm.SideOnly;
 
</source>
 
</source>
<blockquote>
+
 [[新しいコーディング記法とUniversal Modding]]で触れたアノテーション. 共通でない(≒クライアント専用, サーバー専用)クラスやメソッドにつける.  
[[新しいコーディング記法とUniversal Modding]]で触れたアノテーション. 共通でない(≒クライアント専用, サーバー専用)クラスやメソッドにつける.  
+
<br/>
</blockquote>
 
 
 
  
 
<source lang = "java">
 
<source lang = "java">
 
import mods.spritesample.CommonProxy;
 
import mods.spritesample.CommonProxy;
 
</source>
 
</source>
<blockquote>
+
 CommonProxyとはパッケージが異なるのでインポートしておく.
CommonProxyとはパッケージが異なるのでインポートしておく.
+
<br/>
</blockquote>
 
 
 
  
 
<source lang = "java">
 
<source lang = "java">
313行目: 286行目:
 
public class ClientProxy extends CommonProxy
 
public class ClientProxy extends CommonProxy
 
</source>
 
</source>
<blockquote>
+
 ClientProxyに@SideOnlyアノテーションを付与している. またClientProxyはCommonProxyを継承している.
ClientProxyに@SideOnlyアノテーションを付与している. またClientProxyはCommonProxyを継承している.
+
<br/>
</blockquote>
 
 
 
  
 
<source lang = "java">
 
<source lang = "java">
326行目: 297行目:
 
}
 
}
 
</source>
 
</source>
<blockquote>
+
 CommonProxyで定義したメソッドをオーバーライドする. preloadTextureは引数のパスで指定した画像ファイルをキャッシュに読み込むメソッド. ここで指定する引数は上記のBlockSpriteSampleクラスとItemSpriteSampleクラスで記述したファイルパスと同じにする.
CommonProxyで定義したメソッドをオーバーライドする. preloadTextureは引数のパスで指定した画像ファイルをキャッシュに読み込むメソッド. ここで指定する引数は上記のBlockSpriteSampleクラスとItemSpriteSampleクラスで記述したファイルパスと同じにする.
 
</blockquote>
 
 
 
  
 
==実際の挙動==
 
==実際の挙動==
<p>
+
 今回の挙動も今までのサンプルとは大差ない. しかし, blocks.pngやitems.pngの左上の16*16のテクスチャを変更したり, コード内のterrainIdやsetIconCoordを変更するとそれに応じてテクスチャも変更される.
今回の挙動も今までのサンプルとは大差ない. しかし, blocks.pngやitems.pngの左上の16*16のテクスチャを変更したり, コード内のterrainIdやsetIconCoordを変更するとそれに応じてテクスチャも変更される.
 
</p>
 

Minecraft Modding Wikiへの投稿はすべて、他の投稿者によって編集、変更、除去される場合があります。 自分が書いたものが他の人に容赦なく編集されるのを望まない場合は、ここに投稿しないでください。
また、投稿するのは、自分で書いたものか、パブリック ドメインまたはそれに類するフリーな資料からの複製であることを約束してください(詳細はMinecraft Modding Wiki:著作権を参照)。 著作権保護されている作品は、許諾なしに投稿しないでください!

このページを編集するには、下記の確認用の質問に回答してください (詳細):

取り消し 編集の仕方 (新しいウィンドウで開きます)

このページで使用されているテンプレート: