1.6.4-9.11.1.965forgeでのmod開発で複数のテクスチャを持つブロックと階段型ブロックの作り方

クライアント/サーバーMODの開発に関する話題、技術交換はこちらで。質問は質問フォーラムへお願いします。
  • (PostNo.215907)

Re: 1.6.4-9.11.1.965forgeでのmod開発で複数のテクスチャを持つブロックと階段型ブロックの作り方

投稿記事by need » 2015年2月08日(日) 16:40

ありがとうございます!!
need
ID:26056bf3
 

  • (PostNo.215911)

Re: 1.6.4-9.11.1.965forgeでのmod開発で複数のテクスチャを持つブロックと階段型ブロックの作り方

投稿記事by need » 2015年2月08日(日) 16:53

ついに階段型のブロックは追加できたのですが、
0の方向を向いて置くと段が自分のほうを向き
1の方向を向いて置くと段が左を向き
2の方向を向いて置くと段が左を向き
3の方向を向いて置くと段が向こう側に向いて設置され
いずれもfrontに指定したテクスチャが自分のほうになります。
また、逆さに置くにはどうしたらよいでしょうか。
よろしくお願いします。
need
ID:26056bf3
 

  • (PostNo.215914)

Re: 1.6.4-9.11.1.965forgeでのmod開発で複数のテクスチャを持つブロックと階段型ブロックの作り方

投稿記事by elise_blacklab » 2015年2月08日(日) 17:00

need さんが書きました:ついに階段型のブロックは追加できたのですが、
0の方向を向いて置くと段が自分のほうを向き
1の方向を向いて置くと段が左を向き
2の方向を向いて置くと段が左を向き
3の方向を向いて置くと段が向こう側に向いて設置され
いずれもfrontに指定したテクスチャが自分のほうになります。

あー…階段の場合設置方向処理はバニラのBlockStairsの処理でやってくれるのでOnBlockPlacedByをわざわざOverrideする必要はありません。
テクスチャに関してはgetIcon()でそういう処理をさせていますので必然といえば必然です。
メイドつくってたりします.http://el-blacklab.net/
アバター
elise_blacklab
ID:ea3f3f08
掘り廃人
 
記事: 2288
登録日時: 2014年6月25日(水) 18:30

  • (PostNo.215918)

Re: 1.6.4-9.11.1.965forgeでのmod開発で複数のテクスチャを持つブロックと階段型ブロックの作り方

投稿記事by need » 2015年2月08日(日) 17:07

その部分を消してみたのですが
向きは直ったのですが、テクスチャ向きや場所がまだ直りません。
説明が下手で申し訳ないのですがどのようにすればよいでしょうか。
need
ID:26056bf3
 

  • (PostNo.215919)

Re: 1.6.4-9.11.1.965forgeでのmod開発で複数のテクスチャを持つブロックと階段型ブロックの作り方

投稿記事by elise_blacklab » 2015年2月08日(日) 17:17

具体的にどんな感じでテクスチャを貼り付けたいのでしょう?段の方向を基準にテクスチャを固定するということでしょうか?(段の側面は赤、段の部分は青、など)
設置方向に関しては不要と言いましたが、テクスチャの実装次第ではonBlockPlacedByが必要なこともありますので…
メイドつくってたりします.http://el-blacklab.net/
アバター
elise_blacklab
ID:ea3f3f08
掘り廃人
 
記事: 2288
登録日時: 2014年6月25日(水) 18:30

  • (PostNo.215920)

Re: 1.6.4-9.11.1.965forgeでのmod開発で複数のテクスチャを持つブロックと階段型ブロックの作り方

投稿記事by need » 2015年2月08日(日) 17:21

mod制作・・・奥が深いですね。
はい、エリーゼさんの言うとおり
段の側面は赤、段の部分は青、などでして、
階段型ブロックの底面、側面段の部分というように分けたいと思っています。
need
ID:26056bf3
 

  • (PostNo.215925)

Re: 1.6.4-9.11.1.965forgeでのmod開発で複数のテクスチャを持つブロックと階段型ブロックの作り方

投稿記事by elise_blacklab » 2015年2月08日(日) 17:37

んー…思うように階段の向きが取得できそうなのが見つかりませんね…正直階段のテクスチャ変えたことがないうえ今ちょっとこちらで検証できないのでちょっと考えてみます。どなたか情報をお持ちでしたら書き込んでいただければ…
とりあえずgetIcon()内で、1面だけテクスチャを変えてみて結果を見てみてください。
コード: 全て選択
@Override
@SideOnly(Side.CLIENT)
public Icon getIcon(int par1, int par2)
{
   return par1 == 0 ? this.blockFront : this.blockIcon;
}
メイドつくってたりします.http://el-blacklab.net/
アバター
elise_blacklab
ID:ea3f3f08
掘り廃人
 
記事: 2288
登録日時: 2014年6月25日(水) 18:30

  • (PostNo.215929)

Re: 1.6.4-9.11.1.965forgeでのmod開発で複数のテクスチャを持つブロックと階段型ブロックの作り方

投稿記事by need » 2015年2月08日(日) 17:44

このようにしてみたところ
通常と逆さどちらも底面や段の部分関係なく下側にblockFrontのテクスチャが来てしまいました。
また、テクスチャの向きはすべて一定でした。
ちなみに、onBlockPlacedByは消したままです
need
ID:26056bf3
 

  • (PostNo.215974)

Re: 1.6.4-9.11.1.965forgeでのmod開発で複数のテクスチャを持つブロックと階段型ブロックの作り方

投稿記事by elise_blacklab » 2015年2月08日(日) 20:28

ではgetIcon()内に次を追加し(returnより前の行に入れてください)、階段をいろいろな向きで置いてみた時にログに出る数字を確認してみてください。
eclipseのConsoleウィンドウから、リアルタイムで見られるかと思います。
コード: 全て選択
System.out.println("META="+par2);
メイドつくってたりします.http://el-blacklab.net/
アバター
elise_blacklab
ID:ea3f3f08
掘り廃人
 
記事: 2288
登録日時: 2014年6月25日(水) 18:30

  • (PostNo.215983)

Re: 1.6.4-9.11.1.965forgeでのmod開発で複数のテクスチャを持つブロックと階段型ブロックの作り方

投稿記事by need » 2015年2月08日(日) 20:43

0の方向を向いて通常設置すると2逆さで6
1の方向を向いて通常設置すると1逆さで5
2の方向を向いて通常設置すると3逆さで7
3の方向を向いて通常設置すると0逆さで4
でした
need
ID:26056bf3
 

  • (PostNo.215996)

Re: 1.6.4-9.11.1.965forgeでのmod開発で複数のテクスチャを持つブロックと階段型ブロックの作り方

投稿記事by elise_blacklab » 2015年2月08日(日) 21:20

need さんが書きました:0の方向を向いて通常設置すると2逆さで6
1の方向を向いて通常設置すると1逆さで5
2の方向を向いて通常設置すると3逆さで7
3の方向を向いて通常設置すると0逆さで4
でした

あ、やっぱりmetadataだったんですね。
では、その値をgetIcon()内でチェックして、それぞれの面に適切なiconを設定してあげてください。
コード: 全て選択
//さっきログで出した値はpar2に入っている
//これと面の番号を合わせてチェックして、貼り替える面のIconを返す
//※組み合わせ間違ってるかもしれないので全部書く気にはなれなかった。ごめんなさい。

if((par2==0&&par1==5)||(par2==1&&par1==4)|| … ) return this.blockFront;

//違う面に別のテクスチャを貼る場合、Icon型のフィールドとここのif文を増やして同様に。

//テクスチャを変える面以外は、if文から外して標準のアイコンを返すようにすると良い。
return this.blockIcon;
メイドつくってたりします.http://el-blacklab.net/
アバター
elise_blacklab
ID:ea3f3f08
掘り廃人
 
記事: 2288
登録日時: 2014年6月25日(水) 18:30

  • (PostNo.216023)

Re: 1.6.4-9.11.1.965forgeでのmod開発で複数のテクスチャを持つブロックと階段型ブロックの作り方

投稿記事by need » 2015年2月08日(日) 22:45

色々とありがとうございます。
return par1 == 0 ? this.blockFront : this.blockIcon;
を張り変えればよいのでしょうか
need
ID:26056bf3
 

  • (PostNo.216030)

Re: 1.6.4-9.11.1.965forgeでのmod開発で複数のテクスチャを持つブロックと階段型ブロックの作り方

投稿記事by elise_blacklab » 2015年2月08日(日) 23:28

need さんが書きました:色々とありがとうございます。
return par1 == 0 ? this.blockFront : this.blockIcon;
を張り変えればよいのでしょうか

そうです。
あと用が済んだらSystem.out〜も消してください。余計なログが出るのは好ましくないので。
メイドつくってたりします.http://el-blacklab.net/
アバター
elise_blacklab
ID:ea3f3f08
掘り廃人
 
記事: 2288
登録日時: 2014年6月25日(水) 18:30

  • (PostNo.216053)

Re: 1.6.4-9.11.1.965forgeでのmod開発で複数のテクスチャを持つブロックと階段型ブロックの作り方

投稿記事by need » 2015年2月09日(月) 07:11

1(西)と3(東)の方向で通常設置の時だけ背面にblock.Frontのテクスチャが来ます。
それ以外の設置方法だとすべてblock.Iconのテクスチャがすべての面に来ます。
need
ID:26056bf3
 

  • (PostNo.216056)

Re: 1.6.4-9.11.1.965forgeでのmod開発で複数のテクスチャを持つブロックと階段型ブロックの作り方

投稿記事by need » 2015年2月09日(月) 07:48

補足:背面をblock.Frontのテクスチャにしたいです
need
ID:26056bf3
 

  • (PostNo.216058)

Re: 1.6.4-9.11.1.965forgeでのmod開発で複数のテクスチャを持つブロックと階段型ブロックの作り方

投稿記事by elise_blacklab » 2015年2月09日(月) 09:37

need さんが書きました:1(西)と3(東)の方向で通常設置の時だけ背面にblock.Frontのテクスチャが来ます。
それ以外の設置方法だとすべてblock.Iconのテクスチャがすべての面に来ます。

その辺は適宜par2とpar1の条件の組み合わせを追加・調整してください。
さっきのコードの「…」の部分に、例にならって条件を追加してください。
メイドつくってたりします.http://el-blacklab.net/
アバター
elise_blacklab
ID:ea3f3f08
掘り廃人
 
記事: 2288
登録日時: 2014年6月25日(水) 18:30

  • (PostNo.216090)

Re: 1.6.4-9.11.1.965forgeでのmod開発で複数のテクスチャを持つブロックと階段型ブロックの作り方

投稿記事by need » 2015年2月09日(月) 16:58

((par2==0&&par1==5)||(par2==1&&par1==4)||(par2==3&&par1==6)||(par2==2&&par1==7))
で良いのでしょうか?
これでやってみたらすべての面がblock.Iconのテクスチャになってしまいます。
need
ID:26056bf3
 

  • (PostNo.216091)

Re: 1.6.4-9.11.1.965forgeでのmod開発で複数のテクスチャを持つブロックと階段型ブロックの作り方

投稿記事by elise_blacklab » 2015年2月09日(月) 17:00

need さんが書きました:((par2==0&&par1==5)||(par2==1&&par1==4)||(par2==3&&par1==6)||(par2==2&&par1==7))
で良いのでしょうか?
これでやってみたらすべての面がblock.Iconのテクスチャになってしまいます。

ソースを提示してください。
メイドつくってたりします.http://el-blacklab.net/
アバター
elise_blacklab
ID:5e28647e
掘り廃人
 
記事: 2288
登録日時: 2014年6月25日(水) 18:30

  • (PostNo.216092)

Re: 1.6.4-9.11.1.965forgeでのmod開発で複数のテクスチャを持つブロックと階段型ブロックの作り方

投稿記事by need » 2015年2月09日(月) 17:18

すみませんでした
YellowLineStairsBlock.java
package nikosMods;

import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.block.Block;
import net.minecraft.block.BlockStairs;
import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.texture.IconRegister;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.item.ItemStack;
import net.minecraft.util.Icon;
import net.minecraft.util.MathHelper;
import net.minecraft.world.World;

public class YellowLineStairsBlock extends BlockStairs
{
@SideOnly(Side.CLIENT)
private Icon blockFront;
public YellowLineStairsBlock(int id, Block yellowlinestoneBlock, int Metadata)
{
super(id, yellowlinestoneBlock, Metadata);
this.setCreativeTab( CreativeTabs.tabBlock);
this.setUnlocalizedName( "YellowLineStoneBlock");
this.setTextureName( "niko:yellowline_front_block");
this.setStepSound(soundStoneFootstep);
this.setHardness(2.0f);
this.useNeighborBrightness[id] = true;
}
@Override
@SideOnly(Side.CLIENT)
public Icon getIcon(int par1, int par2)
{
//さっきログで出した値はpar2に入っている
//これと面の番号を合わせてチェックして、貼り替える面のIconを返す
//※組み合わせ間違ってるかもしれないので全部書く気にはなれなかった。ごめんなさい。

if((par2==0&&par1==5)||(par2==1&&par1==4)||(par2==3&&par1==6)||(par2==2&&par1==7)) return this.blockFront;

//違う面に別のテクスチャを貼る場合、Icon型のフィールドとここのif文を増やして同様に。

//テクスチャを変える面以外は、if文から外して標準のアイコンを返すようにすると良い。
return this.blockIcon;
}
@Override
@SideOnly(Side.CLIENT)
public void registerIcons(IconRegister par1IconRegister)
{
//ブロックの表示面に貼るテクスチャを設定する(blockFrontはフロントの表示テクスチャ、blockIconはFront以外の表示テクスチャ)
this.blockIcon = par1IconRegister.registerIcon("niko:raildirt_block");
this.blockFront = par1IconRegister.registerIcon("niko:yellowline_front_block");
}
}
です
need
ID:26056bf3
 

  • (PostNo.216120)

Re: 1.6.4-9.11.1.965forgeでのmod開発で複数のテクスチャを持つブロックと階段型ブロックの作り方

投稿記事by elise_blacklab » 2015年2月09日(月) 19:03

条件を増やしてみたり、par2とpar1の値の組み合わせを変えてみたり、return this.blockFront;を{ }で囲んでみたりしてみてください。
メイドつくってたりします.http://el-blacklab.net/
アバター
elise_blacklab
ID:ea3f3f08
掘り廃人
 
記事: 2288
登録日時: 2014年6月25日(水) 18:30

1つ前へ次へ

Return to 開発関連

x