提供: Minecraft Modding Wiki
移動先: 案内検索

警告: ログインしていません。編集を行うと、あなたの IP アドレスが公開されます。ログインまたはアカウントを作成すれば、あなたの編集はその利用者名とともに表示されるほか、その他の利点もあります。

この編集を取り消せます。 下記の差分を確認して、本当に取り消していいか検証してください。よろしければ変更を保存して取り消しを完了してください。
最新版 編集中の文章
18行目: 18行目:
 
ここでは、FluidTank.classを継承した独自クラスを作り、これをTileEntityで扱うことで、
 
ここでは、FluidTank.classを継承した独自クラスを作り、これをTileEntityで扱うことで、
 
「液体の出し入れができる液体タンクブロック」の追加を行います。
 
「液体の出し入れができる液体タンクブロック」の追加を行います。
 
===Forge1355以降のFluidについて===
 
 
Forge1355前後でForgeのFluidに関係する更新があり、ForgeのFluid管理方法が変わりました。
 
従来のint型のFluidIDが削除され、(BlockやItemのように)文字列IDで管理されるようになります。
 
ただしその後、後方互換性のためにIDの代わりになる物が用意されているため、1351以前のForgeと互換性を持たせることができます。
 
 
※注意:この方法はForge1388時点で存在するメソッドを利用しています。
 
 ビルド及び動作確認は1388で行っており、それより古いバージョンのForge(特に1351~1375あたり)との互換性は確認できていません。あしからず。
 
 今後のForgeの方向性を考慮すると、いずれはFluidの数値IDに依存しない(文字列IDで管理できる)構造が求められるようです
 
 
*FluidStackからFluidIDを取得する部分
 
 
・fluidStack.getFluid().getID();
 
このように変更してください。
 
 
下記の方法では、互換性が保てません。
 
<br>・fluidStack.getFluidID();
 
<br>・fluidStack.fluidID;
 
 
*Deprecatedになったメソッド
 
 
下記はForge1388においてはまだ使用できていますが、非推奨となっています。
 
<br>・FluidStack(int fluidID, int amount);
 
<br>・FluidRegistry.getFluidName(int fluidID); など
 
  
 
==ソースコード==
 
==ソースコード==
269行目: 244行目:
 
     * タンクに投入可能な液体の量をシュミレートして値を返す。
 
     * タンクに投入可能な液体の量をシュミレートして値を返す。
 
     */
 
     */
     int put = int put = tile.fill(ForgeDirection.UNKNOWN, fluid2, false);
+
     int put = tile.productTank.fill(fluid2, false);
 
    
 
    
 
     //全量投入可能なときのみ
 
     //全量投入可能なときのみ
275行目: 250行目:
 
     {
 
     {
 
     //今度は液体を液体タンクに入れるので、第二引数はtrueにする。
 
     //今度は液体を液体タンクに入れるので、第二引数はtrueにする。
     tile.fill(ForgeDirection.UNKNOWN, fluid2, true);
+
     tile.productTank.fill(fluid2, true);
  
 
                    //液体容器を空にして、空容器を得るメソッド。
 
                    //液体容器を空にして、空容器を得るメソッド。
288行目: 263行目:
 
    
 
    
 
     //プレイヤーの手持ちアイテムを減らす処理
 
     //プレイヤーの手持ちアイテムを減らす処理
     if (!par5EntityPlayer.capabilities.isCreativeMode && itemstack.stackSize-- <= 0)
+
     if (!par5EntityPlayer.capabilities.isCreativeMode && (itemstack.stackSize - 1) <= 0)
 
                                     {
 
                                     {
 
                                 par5EntityPlayer.inventory.setInventorySlotContents(par5EntityPlayer.inventory.currentItem, (ItemStack)null);
 
                                 par5EntityPlayer.inventory.setInventorySlotContents(par5EntityPlayer.inventory.currentItem, (ItemStack)null);
326行目: 301行目:
 
             * fillの場合と同様に、シュミレートで投入可能量を確かめでから行っても良いと思う。
 
             * fillの場合と同様に、シュミレートで投入可能量を確かめでから行っても良いと思う。
 
             */
 
             */
             tile.drain(ForgeDirection.UNKNOWN, 1000, true);
+
             tile.productTank.drain(1000, true);
 
            
 
            
 
             //プレイヤーに、先に取得した「液体で満たされた容器アイテム」を与える処理
 
             //プレイヤーに、先に取得した「液体で満たされた容器アイテム」を与える処理
335行目: 310行目:
 
            
 
            
 
             //プレイヤーの手持ちアイテムを減らす処理
 
             //プレイヤーの手持ちアイテムを減らす処理
         if (!par5EntityPlayer.capabilities.isCreativeMode && itemstack.stackSize-- <= 0)
+
         if (!par5EntityPlayer.capabilities.isCreativeMode && (itemstack.stackSize - 1) <= 0)
 
                                 {
 
                                 {
 
                             par5EntityPlayer.inventory.setInventorySlotContents(par5EntityPlayer.inventory.currentItem, (ItemStack)null);
 
                             par5EntityPlayer.inventory.setInventorySlotContents(par5EntityPlayer.inventory.currentItem, (ItemStack)null);
370行目: 345行目:
 
     }
 
     }
 
 
    /*=== レンダー関係  ===*/
+
/*=== レンダー関係  ===*/
 
 
    //当たり判定を設定。大釜のように中にエンティティが入り込める。
 
    @Override
 
    public void addCollisionBoxesToList(World world, int x, int y, int z, AxisAlignedBB aabb, List list, Entity entity)
 
    {
 
        this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 0.125F, 1.0F);
 
        super.addCollisionBoxesToList(world, x, y, z, aabb, list, entity);
 
        float f = 0.0675F;
 
        this.setBlockBounds(0.0F, 0.0F, 0.0F, f, 1.0F, 1.0F);
 
        super.addCollisionBoxesToList(world, x, y, z, aabb, list, entity);
 
        this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, f);
 
        super.addCollisionBoxesToList(world, x, y, z, aabb, list, entity);
 
        this.setBlockBounds(1.0F - f, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F);
 
        super.addCollisionBoxesToList(world, x, y, z, aabb, list, entity);
 
        this.setBlockBounds(0.0F, 0.0F, 1.0F - f, 1.0F, 1.0F, 1.0F);
 
        super.addCollisionBoxesToList(world, x, y, z, aabb, list, entity);
 
        this.setBlockBoundsForItemRender();
 
    }
 
 
 
 
     @Override
 
     @Override
534行目: 491行目:
 
FluidStack current = this.productTank.getFluid();
 
FluidStack current = this.productTank.getFluid();
 
FluidStack resourceCopy = resource.copy();
 
FluidStack resourceCopy = resource.copy();
if (current != null && current.amount > 0 && !current.isFluidEqual(resourceCopy)){
+
if (current != null && current.amount > 0 && current.isFluidEqual(resourceCopy)){
 
return 0;
 
return 0;
 
}
 
}
597行目: 554行目:
 
//判定処理の短縮用のemptyフラグ
 
//判定処理の短縮用のemptyフラグ
 
public boolean isEmpty() {
 
public boolean isEmpty() {
    return (getFluid() == null) || getFluid().getFluid() == null || (getFluid().amount <= 0);
+
    return (getFluid() == null) || (getFluid().amount <= 0);
 
}
 
}
  
826行目: 783行目:
 
     if (par0Tile.getFluidIcon() != null)
 
     if (par0Tile.getFluidIcon() != null)
 
     {
 
     {
            //コメントアウト部分を復帰させると、水面の描写が半透明になる。
+
    GL11.glPushMatrix();
        GL11.glPushMatrix();
 
 
             GL11.glEnable(GL12.GL_RESCALE_NORMAL);
 
             GL11.glEnable(GL12.GL_RESCALE_NORMAL);
//            GL11.glEnable(GL11.GL_BLEND);
+
             GL11.glColor4f(2.0F, 2.0F, 2.0F, 1.0F);
//            GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
 
             GL11.glColor4f(2.0F, 2.0F, 2.0F, 0.75F);
 
 
             GL11.glTranslatef((float)par1, (float)par2 + 0.5F, (float)par3);
 
             GL11.glTranslatef((float)par1, (float)par2 + 0.5F, (float)par3);
 
             GL11.glScalef(1.0F, -1.0F, -1.0F);
 
             GL11.glScalef(1.0F, -1.0F, -1.0F);
854行目: 808行目:
 
              
 
              
 
             GL11.glDisable(GL12.GL_RESCALE_NORMAL);
 
             GL11.glDisable(GL12.GL_RESCALE_NORMAL);
//            GL11.glDisable(GL11.GL_BLEND);
 
 
             GL11.glPopMatrix();
 
             GL11.glPopMatrix();
 
     }
 
     }

Minecraft Modding Wikiへの投稿はすべて、他の投稿者によって編集、変更、除去される場合があります。 自分が書いたものが他の人に容赦なく編集されるのを望まない場合は、ここに投稿しないでください。
また、投稿するのは、自分で書いたものか、パブリック ドメインまたはそれに類するフリーな資料からの複製であることを約束してください(詳細はMinecraft Modding Wiki:著作権を参照)。 著作権保護されている作品は、許諾なしに投稿しないでください!

このページを編集するには、下記の確認用の質問に回答してください (詳細):

取り消し 編集の仕方 (新しいウィンドウで開きます)

このページで使用されているテンプレート: