= 创作分享 =
编程开发
已解决
墨言魂靈

已解决

 关闭
墨言魂靈 于 2023-3-29 13:30 ( 1年前 ) [复制链接] [只看楼主] [打印]
494 3
本帖最后由 InkSoul 于 2023-3-29 13:59 编辑

如何判断一个方块是否拥有Tag?
现有的代码如下:

public class MultiblockIngredientImpl implements MultiblockIngredient{
    private DefaultedList<TagKey<Block>> matchTag = DefaultedList.of();
    private DefaultedList<Block> matchBlock = DefaultedList.of();
    //...
    @Override
    public boolean check(World world, BlockPos pos) {
        Block block = world.getBlockState(pos).getBlock();
//判断这个方块是否匹配
    }
   
}
指的是代码实现。

需要判断一个方块是否是指定的方块(用于检测多方块结构是否被正确搭建)。



城市喧闹,森林归宿。
终有一天,钢筋的海洋会在硝烟中化为尘土。
而那些阴影下的朝阳后裔,将重新统治这个世界
罪恶的本源出自于何?无非是过度的生气
发表于 2023-3-29 13:30:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

回复 | 举报

该帖共收到 3 条回复!
苍茫森林
按f3对准方块可以看到它拥有的方块标签。使用模组可以看到它的的物品标签和方块标签。
传说中有个与暮色森林相似的维度,叫苍茫森林。它在传闻中宁静祥和,却是个极恐怖的世界,会侵蚀任何胆敢闯入此地之人的心智。然而许多勇者依然敢于挑战苍茫森林,但都找寻无果。直到一天……(见个人中心查看原文)
发表于 2023-3-29 13:37:08 | 只看该作者

回复 | 举报

墨言魂靈
dinnerbone 发表于 2023-3-29 13:37
按f3对准方块可以看到它拥有的方块标签。使用模组可以看到它的的物品标签和方块标签。 ...

...我指的是代码实现...

需要判断一个方块是否是指定的方块(用于检测多方块结构是否被正确搭建),而这个方块可以是Tag匹配的方块,也可以是已经注册了的方块。
城市喧闹,森林归宿。
终有一天,钢筋的海洋会在硝烟中化为尘土。
而那些阴影下的朝阳后裔,将重新统治这个世界
罪恶的本源出自于何?无非是过度的生气
发表于 2023-3-29 13:52:26 | 只看该作者

回复 | 举报

墨言魂靈
已解决,调用blockstate.isIn方法即可。

@Override
    public boolean check(World world, BlockPos pos) {
        BlockState state = world.getBlockState(pos);
        Block block = state.getBlock();
        for (var i : matchBlock) {
            if(Registries.BLOCK.getEntry(block).matchesKey(Registries.BLOCK.getEntry(i).getKey().get())){
                return true;
            }
        }
        for (var i : matchTag){
            if(state.isIn(i)){
                return true;
            }
        }
        return false;
    }
城市喧闹,森林归宿。
终有一天,钢筋的海洋会在硝烟中化为尘土。
而那些阴影下的朝阳后裔,将重新统治这个世界
罪恶的本源出自于何?无非是过度的生气
发表于 2023-3-29 13:59:31 | 只看该作者

回复 | 举报

百科目前不允许匿名发帖哦~ 请先 [ 登陆 ][ 注册 ] 吧~

本版积分规则

发新帖
  • 回复
  • 点评
  • 评分

[ MC百科(mcmod.cn) 除另有声明,所有开放公共编辑的内容均使用 BY-NC-SA 3.0 协议 ]

Minecraft百科CC协议
快速回复 返回顶部 返回列表