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

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

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

どうすれば良いでしょう?
need
ID:26056bf3
 

  • (PostNo.216238)

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==の部分)を変えてください。
メイドつくってたりします.http://el-blacklab.net/
アバター
elise_blacklab
ID:bd787e33
掘り廃人
 
記事: 2309
登録日時: 2014年6月25日(水) 18:30

  • (PostNo.216254)

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制作頑張っていきたいです!
エリーゼさんも頑張ってください。
本当にありがとうございました。
need
ID:26056bf3
 

1つ前へ

Return to 開発関連

x