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

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

この編集を取り消せます。 下記の差分を確認して、本当に取り消していいか検証してください。よろしければ変更を保存して取り消しを完了してください。
最新版 編集中の文章
1行目: 1行目:
[[ComputerCraft_API|ComputerCraft API]] >
 
 
{{前提MOD|reqmod="Minecraft Forge Universal 10.13.0.x~"及び"ComputerCraft 1.65~"}}
 
{{前提MOD|reqmod="Minecraft Forge Universal 10.13.0.x~"及び"ComputerCraft 1.65~"}}
  
 
== 周辺機器の追加 ==
 
== 周辺機器の追加 ==
何もしない周辺機器ブロックを追加します。
+
何もしない周辺機器ブロックを追加する。
  
*IPeripheralの実装
+
このサンプルではレシピを登録していないのでクリエイティブ・インベントリから取り出す。
*IPeripheralProviderの実装
 
*PeripheralProviderの登録
 
 
 
このサンプルでは周辺機器ブロックのレシピを登録していないので、適当なレシピを追加するか、クリエイティブ・インベントリから取り出してください。
 
  
 
=== ソースコード ===
 
=== ソースコード ===
25行目: 20行目:
 
import dan200.computercraft.api.ComputerCraftAPI;
 
import dan200.computercraft.api.ComputerCraftAPI;
  
@Mod(modid=SamplePeripheralCore.MOD_ID,
+
 
name=SamplePeripheralCore.MOD_NAME,
+
@Mod(modid="SamplePeripheralMod", name="SamplePeripheralMod", version="1.0",
version=SamplePeripheralCore.MOD_VERSION,
+
dependencies = "required-after:ComputerCraft")
dependencies = SamplePeripheralCore.MOD_DEPENDENCIES)
 
 
public class SamplePeripheralCore {
 
public class SamplePeripheralCore {
 
public static final String MOD_ID = "sampleperipheralmod";
 
public static final String MOD_NAME = "Sample Peripheral Mod";
 
public static final String MOD_VERSION = "1.0";
 
public static final String MOD_DEPENDENCIES = "after:ComputerCraft";
 
  
 
public static Block blockSamplePeripheral;
 
public static Block blockSamplePeripheral;
41行目: 30行目:
 
public void preInit(FMLPreInitializationEvent event) {
 
public void preInit(FMLPreInitializationEvent event) {
 
blockSamplePeripheral = new BlockSamplePeripheral()
 
blockSamplePeripheral = new BlockSamplePeripheral()
GameRegistry.registerBlock(blockSamplePeripheral, "sample_peripheral");
+
.setBlockName("blockSamplePeripheral")
 +
.setCreativeTab(CreativeTabs.tabBlock);
 +
GameRegistry.registerBlock(blockSamplePeripheral, "blockSamplePeripheral");
 
}
 
}
  
 
@EventHandler
 
@EventHandler
 
public void init(FMLInitializationEvent event) {
 
public void init(FMLInitializationEvent event) {
GameRegistry.registerTileEntity(TileSamplePeripheral.class, "tile_sample_peripheral");
+
GameRegistry.registerTileEntity(TileSamplePeripheral.class, "tileSamplePeripheral");
 
ComputerCraftAPI.registerPeripheralProvider(new PeripheralProvider());
 
ComputerCraftAPI.registerPeripheralProvider(new PeripheralProvider());
 
}
 
}
56行目: 47行目:
 
<source lang = "java">
 
<source lang = "java">
 
package mods.sample.peripheral;
 
package mods.sample.peripheral;
 +
 +
import java.util.Random;
  
 
import net.minecraft.block.BlockContainer;
 
import net.minecraft.block.BlockContainer;
66行目: 59行目:
 
public BlockSamplePeripheral() {
 
public BlockSamplePeripheral() {
 
super(Material.ground);
 
super(Material.ground);
 +
}
  
setBlockName("sample_peripheral");
+
@Override
setCreativeTab(CreativeTabs.tabBlock);
+
public int quantityDropped(int meta, int fortune, Random random){
 +
return quantityDroppedWithBonus(fortune, random);
 +
}
 +
 
 +
@Override
 +
public int quantityDropped(Random random){
 +
return 1;
 
}
 
}
  
124行目: 124行目:
 
return other == this;
 
return other == this;
 
}
 
}
 
 
return false;
 
return false;
 
}
 
}
146行目: 145行目:
 
TileEntity tile = world.getTileEntity(x, y, z);
 
TileEntity tile = world.getTileEntity(x, y, z);
 
if (tile != null && tile instanceof TileSamplePeripheral) {
 
if (tile != null && tile instanceof TileSamplePeripheral) {
return (IPeripheral)tile;
+
return (TileSamplePeripheral)tile;
 
}
 
}
 
 
return null;
 
return null;
 
}
 
}
157行目: 155行目:
 
=== 解説 ===
 
=== 解説 ===
 
==== SamplePeripheralCore.java ====
 
==== SamplePeripheralCore.java ====
Modのコアとなるクラス
+
Modのコアとなるクラス。
 
 
*dependencies
 
<source lang = "java">
 
@Mod(
 
dependencies = SamplePeripheralCore.MOD_DEPENDENCIES)
 
public class SamplePeripheralCore {
 
 
public static final String MOD_DEPENDENCIES = "after:ComputerCraft";
 
</source>
 
@Modのdependenciesで、このmodがComputerCraftの後に読み込まれるように設定しています。
 
 
 
*周辺機器のブロックとTileEntityの登録
 
 
<source lang = "java">
 
<source lang = "java">
blockSamplePeripheral = new BlockSamplePeripheral()
+
dependencies = "required-after:ComputerCraft"
GameRegistry.registerBlock(blockSamplePeripheral, "sample_peripheral");
 
 
</source>
 
</source>
<source lang = "java">
+
↑このmodがComputerCraftを要求(未導入環境では警告メッセージが出る)し、なおかつComputerCraftの後に読み込まれるようにしている。
GameRegistry.registerTileEntity(TileSamplePeripheral.class, "tile_sample_peripheral");
 
</source>
 
 
 
*PeripheralProviderの登録
 
 
<source lang = "java">
 
<source lang = "java">
 
ComputerCraftAPI.registerPeripheralProvider(new PeripheralProvider());
 
ComputerCraftAPI.registerPeripheralProvider(new PeripheralProvider());
 
</source>
 
</source>
接続したComputerへ周辺機器のIPeripheral実装クラスを提供するためのIPeripheralProvider実装クラス(後述)を、ComputerCraftAPI.registerPeripheralProvider()でComputerCraftに登録します。
+
↑接続したComputerから周辺機器実装クラスを要求されたときに提供するIPeripheralProviderの実装クラスをComputerCraftに登録する。'''自作周辺機器をComputerから使えるようにするために必須。'''
これは、'''自作周辺機器をComputerから使えるようにするために必須'''です。
 
  
 
==== BlockSamplePeripheral.java ====
 
==== BlockSamplePeripheral.java ====
周辺機器のブロック
+
周辺機器のブロック。
 
 
*BlockContainerの継承
 
<source lang = "java">
 
public class BlockSamplePeripheral extends BlockContainer {
 
 
 
@Override
 
public TileEntity createNewTileEntity(World world, int a) {
 
return new TileSamplePeripheral();
 
}
 
</source>
 
周辺機器はTileEntityを持つブロックとして実装するので、BlockContainerを継承し、createNewTileEntity()で周辺機器のTileEntityのインスタンスを生成して返しています。
 
 
 
 
==== TileSamplePeripheral.java ====
 
==== TileSamplePeripheral.java ====
周辺機器のTileEntity
+
周辺機器のTileEntity。
 
 
*IPeripheralの実装
 
 
<source lang = "java">
 
<source lang = "java">
 
public class TileSamplePeripheral extends TileEntity implements IPeripheral {
 
public class TileSamplePeripheral extends TileEntity implements IPeripheral {
 
</source>
 
</source>
今回は周辺機器のTileEntityクラスでIPeripheralも実装しています。
+
↑今回は周辺機器のTileEntityクラスでIPeripheralも実装する。<br>
 
+
周辺機器は後述のPeripheralProviderでComputerCraftに登録されるため、別のクラスでIPeripheralを実装する事も出来る。
ちなみに、周辺機器は後述のPeripheralProviderでComputerへ提供されるため、IPeripheralはTileEntity以外のクラスで実装する事もできます。
 
 
 
*getType()
 
 
<source lang = "java">
 
<source lang = "java">
 
@Override
 
@Override
217行目: 180行目:
 
}
 
}
 
</source>
 
</source>
周辺機器の種類を表す文字列を返します。ゲーム内のLuaプログラムではperipheral.getType()で取得したこの文字列によって周辺機器の種類を判別します。
+
↑Computer側からのperipheral.getType()に対する文字列を返す。他の種類の周辺機器とは被らないようにする。
 
 
*getMethodNames()
 
 
<source lang = "java">
 
<source lang = "java">
 
@Override
 
@Override
226行目: 187行目:
 
}
 
}
 
</source>
 
</source>
Computerから呼び出せる周辺機器のメソッド名を表す文字列の配列を返します。ゲーム内のLuaプログラムではperipheral.getMethods()の戻り値になります。<br>
+
↑Computer側からのperipheral.getMethods()に対するメソッド名(文字列)の配列を返す。今回は実装しないので空の配列。
今回は実装しないので空の配列を返しています。
 
 
 
*callMethod()
 
 
<source lang = "java">
 
<source lang = "java">
 
@Override
 
@Override
238行目: 196行目:
 
}
 
}
 
</source>
 
</source>
Computerからperipheral.call()で周辺機器のメソッドを呼び出したときの処理を実装します。<br>
+
↑Computer側からのperipheral.call()に対する処理とその結果を返す。今回は実装しないのでnull。
今回はメソッドを実装しないので何もしません。
 
 
 
*attach()とdetach()
 
 
<source lang = "java">
 
<source lang = "java">
 
@Override
 
@Override
253行目: 208行目:
 
}
 
}
 
</source>
 
</source>
周辺機器ブロックがComputerに接続されたとき(attach)と、取り外されたとき(detach)に呼び出されます。<br>
+
↑周辺機器がComputerに取り付けられた時(attach)と取り外された時(detach)に、Computerから呼び出される。今回は何もしない。
今回は何もしません。
 
 
 
*equals()
 
 
<source lang = "java">
 
<source lang = "java">
 
@Override
 
@Override
263行目: 215行目:
 
return other == this;
 
return other == this;
 
}
 
}
 
 
return false;
 
return false;
 
}
 
}
 
</source>
 
</source>
Computerに周辺機器が着脱されたときに現在取り付けられている周辺機器(this)が、それまで取り付けられていた周辺機器(other)と同一かどうかを調べるために呼び出されます。<br>
+
↑Computerに周辺機器が着脱された時に現在取り付けられている周辺機器(this)が、それまで取り付けられていた周辺機器(other)と同一かどうかを調べるために呼び出される。今回は周辺機器のTileEntityが同一かどうかを比較して返している。
周辺機器のTileEntityインスタンスが同一かどうかを比較して返しています。
 
  
 
==== PeripheralProvider.java ====
 
==== PeripheralProvider.java ====
Computerへ周辺機器(IPeripheralの実装クラス)を提供するためのクラス
+
Computerへ周辺機器(IPeripheral実装クラス)を提供するためのクラス。<br>
 
+
前述の通り、ComputerCraftAPI.registerPeripheralProvider()でComputerCraftへ登録する。
*IPeripheralProviderの実装
 
<source lang = "java">
 
public class PeripheralProvider implements IPeripheralProvider {
 
</source>
 
IPeripheralProviderを実装します。<br>
 
前述の通り、このクラスのインスタンスをComputerCraftAPI.registerPeripheralProvider()でComputerCraftへ登録します。
 
 
 
*getPeripheral()
 
 
<source lang = "java">
 
<source lang = "java">
 
@Override
 
@Override
286行目: 228行目:
 
TileEntity tile = world.getTileEntity(x, y, z);
 
TileEntity tile = world.getTileEntity(x, y, z);
 
if (tile != null && tile instanceof TileSamplePeripheral) {
 
if (tile != null && tile instanceof TileSamplePeripheral) {
return (IPeripheral)tile;
+
return (TileSamplePeripheral)tile;
 
}
 
}
 
 
return null;
 
return null;
 
}
 
}
 
</source>
 
</source>
周辺機器がComputerへ接続されたときに呼び出されます。x, y, zは周辺機器の座標、sideは周辺機器から見た接続方向です。<br>
+
↑周辺機器がComputerへ接続された時に呼び出される。x, y, zは周辺機器の座標。sideは周辺機器から見たComputerの方向。<br>
今回は周辺機器のTileEntityでIPeripheralを実装したため、座標から周辺機器のTileEntityを取得し、IPeripheralのインスタンスとして返しています。
+
今回はTileEntityでIPeripheralを実装したため、座標のTileEntityを取得して自分自身の周辺機器と同一だったらそれを周辺機器のインスタンスとして返している。

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

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

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

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