Исправлена прозрачность блока и ограничивающая рамка (1.10.2)

#java #json #minecraft-forge

#java #json #minecraft-forge

Вопрос:

Вот как выглядит мой блок candle:

Блок свечи

Проблемы заключаются в:

  • Песчаник не отображает
  • Столкновение — это полный блок
  • Поле выделения представляет собой полный блок (поле выделения представляет собой каркас серого цвета)

Методы, предоставляемые Forge для установки этих ограничивающих рамок, устарели, и

 this.translucent = true;
this.fullBlock = false;
  

в конструкторе ничего не делать.

Другие скриншоты:

Линия свечей, вид сбоку

Линия свечей вид сверху

Линия свечей, вид спереди

BlockCandle.java :

 package com.otabi.firestar.toomuch.blocks;

import net.minecraft.block.material.Material;
import net.minecraft.block.state.IBlockState;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.IBlockAccess;

/**
 * Created by firestar115 on 10/22/16.
 */
public class BlockCandle extends BlockBase { // BlockBase only sets registry names and model locations

    public BlockCandle() {
        super(Material.CAKE, "candle");
        this.fullBlock = false;
        this.translucent = true;
    }

    @Override
    public boolean isNormalCube(IBlockState state, IBlockAccess world, BlockPos pos) {
        return false;
    }

}
  

models/block/candle.json :

 {
    "__comment": "Model generated using MrCrayfish's Model Creator (https://mrcrayfish.com/tools?id=mc)",
    "textures": {
        "0": "toomuch:blocks/candle_base",
        "1": "toomuch:blocks/candle_wick"
    },
    "display": {
        "gui": {
            "rotation": [ 30, 225, 0 ],
            "translation": [ 0, 0, 0 ],
            "scale": [ 0.625, 0.625, 0.625 ]
        },
        "ground": {
            "rotation": [ 0, 0, 0 ],
            "translation": [ 0, 3, 0 ],
            "scale": [ 0.25, 0.25, 0.25 ]
        },
        "fixed": {
            "rotation": [ 0, 0, 0 ],
            "translation": [ 0, 0, 0 ],
            "scale": [ 0.5, 0.5, 0.5 ]
        },
        "thirdperson_righthand": {
            "rotation": [ 0, 0, 0 ],
            "translation": [ 0, 2.5, 0.5 ],
            "scale": [ 0.375, 0.375, 0.375 ]
        },
        "thirdperson_lefthand": {
            "rotation": [ 0, 0, 0 ],
            "translation": [ 0, 2.5, 0.5 ],
            "scale": [ 0.375, 0.375, 0.375 ]
        },
        "firstperson_righthand": {
            "rotation": [ 0, 45, 0 ],
            "translation": [ 0, 2.5, 0 ],
            "scale": [ 0.4, 0.4, 0.4 ]
        },
        "firstperson_lefthand": {
            "rotation": [ 0, 225, 0 ],
            "translation": [ 0, 2.5, 0 ],
            "scale": [ 0.4, 0.4, 0.4 ]
        }
    },
    "elements": [
        {
            "name": "Cube",
            "from": [ 6.50, 0.00, 6.50 ], 
            "to": [ 9.50, 8.00, 9.50 ], 
            "faces": {
                "north": { "texture": "#0", "uv": [ 0.00, 0.00, 3.00, 8.00 ] },
                "east": { "texture": "#0", "uv": [ 3.00, 8.00, 6.00, 16.00 ] },
                "south": { "texture": "#0", "uv": [ 6.00, 0.00, 9.00, 8.00 ] },
                "west": { "texture": "#0", "uv": [ 9.00, 8.00, 12.00, 16.00 ] },
                "up": { "texture": "#0", "uv": [ 0.00, 0.00, 3.00, 3.00 ] },
                "down": { "texture": "#0", "uv": [ 0.00, 0.00, 3.00, 3.00 ] }
            }
        },
        {
            "name": "Cube",
            "from": [ 7.50, 8.00, 7.50 ], 
            "to": [ 8.50, 10.00, 8.50 ], 
            "faces": {
                "north": { "texture": "#1", "uv": [ 0.00, 0.00, 1.00, 2.00 ] },
                "east": { "texture": "#1", "uv": [ 1.00, 1.00, 2.00, 3.00 ] },
                "south": { "texture": "#1", "uv": [ 2.00, 2.00, 3.00, 4.00 ] },
                "west": { "texture": "#1", "uv": [ 3.00, 3.00, 4.00, 5.00 ] },
                "up": { "texture": "#1", "uv": [ 4.00, 4.00, 5.00, 5.00 ] },
                "down": { "texture": "#1", "uv": [ 5.00, 5.00, 6.00, 6.00 ] }
            }
        }
    ]
}
  

blockstates/candle.json :

 {
    "forge_marker": 1,
    "defaults": {
        "textures": {
            "0": "toomuch:blocks/candle_base",
            "1": "toomuch:blocks/candle_wick"
        }
    },
    "variants": {
        "normal": {
            "model": "toomuch:candle"
        },
        "inventory": {
            "model": "toomuch:candle"
        }
    }
}
  

Я использую Forge 1.10.2 12.18.2.2099.

Комментарии:

1. где находится ваше определение ограничивающей рамки в вашем блоке?

Ответ №1:

Вы пробовали добавлять ограничивающие рамки?

 public void setBlockBoundsBasedOnState(final IBlockAccess worldIn, final BlockPos pos) {
            this.setBlockBounds(0.25f, 0.125f, 0.25f, 0.75f, 0.875f, 0.75f);
        }

public void addCollisionBoxesToList(final World worldIn, final BlockPos pos, final IBlockState state, final AxisAlignedBB mask, final List list, final Entity collidingEntity) {
        this.setBlockBoundsBasedOnState((IBlockAccess)worldIn, pos);
        super.addCollisionBoxesToList(worldIn, pos, state, mask, list, collidingEntity);
    }
  

обновление для 1.10

getCollisionBoundingBox(...) , getSelectedBoundingBox(...) , isFullCube(...) и isOpaqueCube (...) .

Комментарии:

1. Будет ли это также работать для метода столкновения объектов с полным блоком? Потому что это не определило бы столкновение, только перемещение объекта.

2. да, поля столкновения предназначены для объектов, а ограничения — для, ну, в общем, для блокировок.

3. Мой блок beehive — это куб (в модели), поэтому, если я использую это, чтобы установить поле столкновения на куб, это сработает? Я слышал, что ограничивающая рамка > 1 в направлениях x и z дает ошибку. Это определенно сработает для моей свечи.

4. поле beehive — это совершенно другой вопрос. Задайте новый вопрос для этого случая.

5. Нет таких методов «setBlockBounds» или «addCollisionBoxesToList»