首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >地雷锻造1.18.1 -拆块

地雷锻造1.18.1 -拆块
EN

Stack Overflow用户
提问于 2022-07-22 09:39:01
回答 1查看 238关注 0票数 1

我有一个项目,当使用时,应该删除块/改变它为空气。

我用的是下面这一行:

代码语言:javascript
复制
level.removeBlock(positionClicked, false);

一旦我运行了客户机,这个块就会被短暂地移除,然后重新出现。我还尝试用以下方法删除该块:

代码语言:javascript
复制
level.destroyBlock(positionClicked, false);
level.setBlock(positionClicked, Blocks.AIR.defaultBlockState(), 1);

我的猜测是,我没有正确地注册某些东西/删除的块没有应用到客户端。

完整代码:

代码语言:javascript
复制
public class TeleportationItem extends Item {

    public TeleportationItem(Properties pProperties) {
        super(pProperties);
    }

    @Override
    public InteractionResult useOn(UseOnContext pContext) {
        Level level = pContext.getLevel();
        if (level.isClientSide){
            BlockPos blockpos = pContext.getClickedPos();
            BlockState blockstate = level.getBlockState(blockpos);
            level.removeBlock(positionClicked, false);
            //level.setBlock(positionClicked, Blocks.AIR.defaultBlockState(), 1);
            // level.destroyBlock(positionClicked, false);
            return super.useOn(pContext);
        }
        return super.useOn(pContext);
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-07-23 08:29:55

你要做的是服务器端而不是客户端。只需将if条件更改为if (!level.isClientSide){

“非客户端”并不意味着你在服务器上,任何像这样的与世界的交互都必须由服务器端完成。所发生的情况是,您只从视图中删除一个块,然后将视图更新到没有删除块的服务器上。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73078246

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档