ページ 33

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

投稿記事Posted: 2015年2月10日(火) 15:14
by need
返信遅くなりました。
テクスチャの反映される面はできたのですが、テクスチャがすべて同じ方向を向いてしまいます。
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開発で複数のテクスチャを持つブロックと階段型ブロックの作り方

投稿記事Posted: 2015年2月10日(火) 17:12
by elise_blacklab
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開発で複数のテクスチャを持つブロックと階段型ブロックの作り方

投稿記事Posted: 2015年2月10日(火) 18:32
by need
このようにしたところうまくいきました!!
それぞれ通常、逆さでの組み合わせをそれぞれ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制作頑張っていきたいです!
エリーゼさんも頑張ってください。
本当にありがとうございました。