ページ 11

ガラスブロックのバグについて

投稿記事Posted: 2017年8月24日(木) 09:35
by havarana
大至急お願いします。
MC1.7.10.forge1.7.10-13.4.1558でmoddingをしています。
で、自作のガラスブロックを追加したのですが、なぜか向こう側が透けて見えてしまいます。
ブロックのソースはこんな感じです。

package com.havaMod.blocks;

import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.creativetab.CreativeTabs;



public class BlockhyperGlass extends Block {

public BlockhyperGlass(Material material) {
super(material);
//クリエイティブタブの登録
this.setCreativeTab(CreativeTabs.tabBlock);
//硬さの設定
this.setHardness(10.0F);
//爆破耐性の設定
this.setResistance(800.0F);
//ブロックの上を歩いた時の音を登録する。
this.setStepSound(Block.soundTypeMetal);
//回収するのに必要なツールを設定する。
this.setHarvestLevel("pickaxe", 2);
//明るさの設定
this.setLightLevel(0.0F);
//透過設定
this.setLightOpacity(1);
//テクスチャ設定
this.setBlockTextureName("havamod:hyperglass");


}

}

Re: ガラスブロックのバグについて

投稿記事Posted: 2017年8月24日(木) 09:37
by havarana
それと、追加で聞きたいのですが、バニラのガラスや本棚のように、テクスチャがつながるようにするにはどうすればよいですか?

Re: ガラスブロックのバグについて

投稿記事Posted: 2017年8月28日(月) 18:30
by dark snow
havarana さんが書きました:それと、追加で聞きたいのですが、バニラのガラスや本棚のように、テクスチャがつながるようにするにはどうすればよいですか?

 バニラのガラスと本棚は、テクスチャはつながりませんよ。
 つながるのは、Optifineの影響かと思います。

Re: ガラスブロックのバグについて

投稿記事Posted: 2017年8月29日(火) 19:51
by defeatedcrow
>ガラスブロックのバグ

バグではなく、基本的な仕様です。

マイクラは3D描画の負荷軽減のために、地中などの不要な面の描画を省略しています。
透明ブロックの向こう側など、”ブロック同士の間の面をあえて描画したい”という場合は、Blockクラスのメソッドをオーバーライドして、あえて描画するような作りにしなければ描画されません。
要するに、必要な記述が欠けているということ。

コード: 全て選択
   @Override
   public boolean isOpaqueCube() {
      return false;
   }

   @Override
   public boolean renderAsNormalBlock() {
      return false;
}

このへんのメソッドをfalseにしておくととりあえず描画されるんじゃないかと思います。
個別にshouldSideBeRenderedメソッドとかで設定することも出来ますが…

>CTM
そういう、テクスチャが切り替わるシステムはCTMとかコネクテッドテクスチャとか呼ばれていますが、そもそもバニラやForgeがサポートしていない方法なので、簡単なやり方はないです。

やりたければ、1.7以前であれば、ISimpleBlockRenderingHandlerを実装したBlockRenderクラスを作って、”隣のブロックをチェックしてテクスチャを切り替える”処理を必要な分だけ自作してなんとかする等でしょうねぇ。

Re: ガラスブロックのバグについて

投稿記事Posted: 2017年8月30日(水) 16:13
by havarana
本当にありがとうございます。
ぜひ、やってみます。