|
|
1行目: |
1行目: |
− | {{前提MOD|reqmod="Minecraft Forge Universal"}}
| |
− | {{チュートリアル難易度|difficulty=1|clear=none}}
| |
− | {{チュートリアルカテゴリー|difficulty=1|type=Item|clear=none}}
| |
− | {{チュートリアルカテゴリー |type=Block|difficulty=1}}
| |
| | | |
− |
| |
− | <span style="color:red"><big>この記事は http://forum.minecraftuser.jp/viewtopic.php?f=39&t=29948 での質問の結果を流用しており、<br />
| |
− | コード内のコメントを削除されていて、解説として不適切です。<br />
| |
− | 修正されるまで参考にしないで下さい。<br /></big></span>
| |
− |
| |
− | ==チェストにアイテムを入れる==
| |
− | 今回は右クリックされると、一つ上のチェスト(インベントリを持つTileEntity)
| |
− | にアイテムを入れる。
| |
− | <source lang="java">
| |
− | package sample;
| |
− |
| |
− | //import省略
| |
− |
| |
− | public class chestinitem extends Block {
| |
− | @SideOnly(Side.CLIENT)
| |
− | private IIcon TopIcon;
| |
− |
| |
− | @SideOnly(Side.CLIENT)
| |
− | private IIcon SideIcon;
| |
− |
| |
− | public open() {
| |
− | super(Material.rock);
| |
− | //省略
| |
− | }
| |
− | @Override
| |
− | public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float posX, float posY, float posZ){
| |
− | if (!world.isRemote)
| |
− | {
| |
− | Block block = world.getBlock(x, y+1, z);
| |
− | int meta = world.getBlockMetadata(x, y+1, z);
| |
− |
| |
− |
| |
− | if (block.hasTileEntity(meta))
| |
− | {
| |
− | TileEntity tile = world.getTileEntity(x, y+1, z);
| |
− |
| |
− | if (tile != null)
| |
− | {
| |
− |
| |
− | if (tile instanceof IInventory)
| |
− | {
| |
− | IInventory inventory = (IInventory)tile;
| |
− |
| |
− |
| |
− | for (int pl = 0; pl < inventory.getSizeInventory(); ++pl)
| |
− | {
| |
− | ItemStack itemstack = inventory.getStackInSlot(pl);
| |
− |
| |
− |
| |
− | if (itemstack == null)
| |
− | {
| |
− |
| |
− |
| |
− | inventory.setInventorySlotContents(pl, new ItemStack(items.diamond));//ダイヤを一個入れる
| |
− | return true;
| |
− |
| |
− | }
| |
− | }
| |
− | }
| |
− | }
| |
− | }
| |
− | }
| |
− | </source>
| |
− |
| |
− | ==解説==
| |
− | 変数plにTileEntity毎のインベントリ情報を入れ、<br>
| |
− | 空いているスロットに入れている。
| |