【解決済み】[1.7.10]焼石の上にのみ植えられる作物の作成

Modding・サーバPlugin制作・ツール制作など、開発関連の質問があればこちらにお願い致します。
フォーラムルール
質問関連フォーラムで質問する時は、必ず次のトピックを一読/厳守お願い致します。
viewtopic.php?f=5&t=999
  • (PostNo.295384)

【解決済み】[1.7.10]焼石の上にのみ植えられる作物の作成

投稿記事by Waripon » 2017年2月09日(木) 19:23

バニラの作物が耕地の上のみに植えられるように、焼石の上にのみ植えられる作物を追加したいのですが、
種のアイテムでの設置がうまくいきません…(明るいとアイテム化してしまう、石の上に植えられない)

種アイテムのコード↓
コード: 全て選択
package waripon.HandMadeGunpowder.items.info;

import net.minecraft.block.Block;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import net.minecraftforge.common.EnumPlantType;
import net.minecraftforge.common.IPlantable;
import net.minecraftforge.common.util.ForgeDirection;
import waripon.HandMadeGunpowder.items.HandMadeGunpowder;

public class SulfurSeed extends Item implements IPlantable
{
    public SulfurSeed()
    {
        super();
    }

    /**
     * Callback for item usage. If the item does something special on right clicking, he will have one of those. Return
     * True if something happen and false if it don't. This is for ITEMS, not BLOCKS
     */
    @Override
    public boolean onItemUse(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, World par3World, int par4, int par5, int par6, int par7, float par8, float par9, float par10)
    {
        if (par7 != 1)
        {
            return false;
        }
        else if (par2EntityPlayer.canPlayerEdit(par4, par5, par6, par7, par1ItemStack) && par2EntityPlayer.canPlayerEdit(par4, par5 + 1, par6, par7, par1ItemStack))
        {
            Block soil = par3World.getBlock(par4, par5, par6);

            if (soil != null && par3World.isAirBlock(par4, par5 + 1, par6))
            {
                boolean isPlanted = false;
                if (soil.canSustainPlant(par3World, par4, par5, par6, ForgeDirection.UP, this))
                {
                    par3World.setBlock(par4, par5 + 1, par6, HandMadeGunpowder.SulfurBush);
                    isPlanted = true;
                }
                if (isPlanted)
                {
                    --par1ItemStack.stackSize;
                    return true;
                }
                else
                {
                    return false;
                }
            }
            else
            {
                return false;
            }
        }
        else
        {
            return false;
        }
    }

    @Override
    public EnumPlantType getPlantType(IBlockAccess world, int x, int y, int z)
    {
        return EnumPlantType.Cave;
    }

    @Override
    public Block getPlant(IBlockAccess world, int x, int y, int z)
    {
        return HandMadeGunpowder.SulfurBush;
    }

    @Override
    public int getPlantMetadata(IBlockAccess world, int x, int y, int z)
    {
        return 0;
    }
}
最後に編集したユーザー Waripon [ 2017年2月10日(金) 07:33 ], 累計 1 回
ノリと勢いでModddingにまで手を出してしまった人。(´・ω・`)
トピックはこちら
アバター
Waripon
ID:474f1a32
大工さん
 
記事: 60
登録日時: 2016年8月29日(月) 07:25
お住まい: 日本の寒いほう

  • (PostNo.295387)

Re: [1.7.10]焼石の上にのみ植えられる作物の作成

投稿記事by elise_blacklab » 2017年2月09日(木) 19:45

Waripon さんが書きました:明るいとアイテム化してしまう

コード: 全て選択
    @Override
    public EnumPlantType getPlantType(IBlockAccess world, int x, int y, int z)
    {
        return EnumPlantType.Cave;
    }

この辺と
Waripon さんが書きました:石の上に植えられない

コード: 全て選択
if (soil.canSustainPlant(par3World, par4, par5, par6, ForgeDirection.UP, this))

この辺をお好きなように調整してください.

お節介なんですが,丸コピ同然のソース貼ッ付けて質問されても答える側は頭痛くなるだけなんですね.第一こういう場合って,質問者がソースの流れを理解できてないのがほっとんどですし.
まずはご自分でソースを組む努力をなさってください.その方が質問点がより明確になりますから答えやすくなります.コピーするのはそれでもダメな時.
メイドつくってたりします.http://el-blacklab.net/
アバター
elise_blacklab
ID:59f4d555
掘り廃人
 
記事: 2349
登録日時: 2014年6月25日(水) 18:30

  • (PostNo.295421)

Re: [1.7.10]焼石の上にのみ植えられる作物の作成

投稿記事by Waripon » 2017年2月10日(金) 07:33

ご指導ありがとうございます。
とりあえず自分でどうにかコードを弄ってみます。
ノリと勢いでModddingにまで手を出してしまった人。(´・ω・`)
トピックはこちら
アバター
Waripon
ID:474f1a32
大工さん
 
記事: 60
登録日時: 2016年8月29日(月) 07:25
お住まい: 日本の寒いほう


Return to 質問:開発・制作関連

x