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

返信する

CAPTCHA 認証コード
表示されたコードを正確に入力してください。各文字は大文字・小文字の区別があります。

BBCode: OFF
スマイリー: OFF
トピックのレビュー
   

展開ビュー トピックのレビュー: 1.6.4-9.11.1.965forgeでのmod開発で複数のテクスチャを持つブロックと階段型ブロックの作り方

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

投稿記事 by need » 2015年2月10日(火) 18:32

このようにしたところうまくいきました!!
それぞれ通常、逆さでの組み合わせをそれぞれ4方向分書いてそれぞれのテクスチャを作って指定しました。
そうしたところちゃんとした向きに置けました。
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 block0;
private Icon block1;
private Icon block2;
private Icon block3;
public YellowLineStairsBlock(int id, Block yellowlinestoneBlock, int Metadata)
{
super(id, yellowlinestoneBlock, Metadata);
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)
{
//par1はブロックの面の場所の指定。par2は面が貼られる場所
if((par1==0&&par2==2)||(par1==1&&par2==6)) return this.block0;
if((par1==0&&par2==1)||(par1==1&&par2==5)) return this.block1;
if((par1==0&&par2==3)||(par1==1&&par2==7)) return this.block2;
if((par1==0&&par2==0)||(par1==1&&par2==4)) return this.block3;
//テクスチャを変える面以外は、if文から外して標準のアイコンを返すようにすると良い。
return this.blockIcon;
}
@Override
@SideOnly(Side.CLIENT)
public void registerIcons(IconRegister par1IconRegister)
{
//ブロックの表示面に貼るテクスチャを設定する(blockFrontはフロントの表示テクスチャ、blockIconはFront以外の表示テクスチャ)
this.block0 = par1IconRegister.registerIcon("niko:yellowline_block_0");
this.block1 = par1IconRegister.registerIcon("niko:yellowline_block_1");
this.block2 = par1IconRegister.registerIcon("niko:yellowline_block_2");
this.block3 = par1IconRegister.registerIcon("niko:yellowline_block_3");
this.blockIcon = par1IconRegister.registerIcon("niko:yellowline_else_block");
}
}

いままでこんな私に様々な知識をお与え下さりありがとうございました。
今後も知識を生かしてmod制作頑張っていきたいです!
エリーゼさんも頑張ってください。
本当にありがとうございました。

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

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

need さんが書きました:
コード: 全て選択
if((par1==0&&par2==0)||(par1==0&&par2==1)||(par1==0&&par2==2)||(par1==0&&par2==3)||(par1==1&&par2==4)||(par1==1&&par2==5)||(par1==1&&par2==6)||(par1==1&&par2==7)) return this.blockFront;

まあそういうふうに書いてますからね。

こんがらがってるといけないので一応。
par1が「面の番号」、par2が「階段の向き」です。
par2は方角の番号とは違う点に注意です。(逆向き考慮)
貼る面を変えたいならpar1をチェックする値(par1==の部分)を変えてください。

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

投稿記事 by need » 2015年2月10日(火) 15:14

返信遅くなりました。
テクスチャの反映される面はできたのですが、テクスチャがすべて同じ方向を向いてしまいます。
getIcon()のところです

@Override
@SideOnly(Side.CLIENT)
public Icon getIcon(int par1, int par2)
{
//さっきログで出した値はpar2に入っている
//これと面の番号を合わせてチェックして、貼り替える面のIconを返す
//※組み合わせ間違ってるかもしれないので全部書く気にはなれなかった。ごめんなさい。

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

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

//テクスチャを変える面以外は、if文から外して標準のアイコンを返すようにすると良い。
return this.blockIcon;
}

どうすれば良いでしょう?

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

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

条件を増やしてみたり、par2とpar1の値の組み合わせを変えてみたり、return this.blockFront;を{ }で囲んでみたりしてみてください。

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");
}
}
です

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のテクスチャになってしまいます。

ソースを提示してください。

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のテクスチャになってしまいます。

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の条件の組み合わせを追加・調整してください。
さっきのコードの「…」の部分に、例にならって条件を追加してください。

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

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

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

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

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

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

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〜も消してください。余計なログが出るのは好ましくないので。

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

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

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

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;

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
でした

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);

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

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

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

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;
}

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

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

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

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

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

具体的にどんな感じでテクスチャを貼り付けたいのでしょう?段の方向を基準にテクスチャを固定するということでしょうか?(段の側面は赤、段の部分は青、など)
設置方向に関しては不要と言いましたが、テクスチャの実装次第ではonBlockPlacedByが必要なこともありますので…

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

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

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

ページトップ

x