繁体   English   中英

如何检测 Minecraft forge for 1.16.5 中任何被破坏的方块

[英]How to detect ANY block being broken in Minecraft forge for 1.16.5

我正在 1.16.5 中使用 Forge 制作一个模组,一旦 50 个任何类型的方块被破坏,我就会掉落一颗绿宝石,但我无法弄清楚。 我试过BlockEvent.BreakEventonBlockHarvestedharvestBlock ,但我无法弄清楚。 另一个问题是我不能给玩家一个项目,我已经尝试了几种方法。 有人可以帮忙吗?

我当前的代码是:

package com.taxolotl.cubitemerald;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

import net.minecraft.world.World;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.eventbus.api.IEventBus;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;;

@Mod("cubitemerald")
public class CubitEmerald {

    public static final Logger LOGGER = LogManager.getLogger();
    public static final String MOD_ID = "cubitemerald";
    public static int blok = 0;

    public CubitEmerald() {
        IEventBus bus = FMLJavaModLoadingContext.get().getModEventBus();
        MinecraftForge.EVENT_BUS.register(this);

        if(/*block broken*/) {
            blok = blok + 1;
        }
        
        if(blok>=50) {
            /*drop an emerald*/
            blok = 0;
        }   
    }
}

您需要像这样收听BlockEvent.BreakEvent

@SubscribeEvent
public void blockBreakEvent(BlockEvent.BreakEvent e){
    blok += 1;
}

您将需要了解 Forge 的事件总线系统,您可以从他们简短但足够的文档中了解这些信息。

当然,您的blok变量只会在运行时存在,这意味着,当客户端重新启动时,该值将消失。 如果您希望玩家从他们离开的地方继续,您将需要研究一种存储持久数据的方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM