[英]How to detect ANY block being broken in Minecraft forge for 1.16.5
我正在 1.16.5 中使用 Forge 制作一个模组,一旦 50 个任何类型的方块被破坏,我就会掉落一颗绿宝石,但我无法弄清楚。 我试过BlockEvent.BreakEvent
、 onBlockHarvested
和harvestBlock
,但我无法弄清楚。 另一个问题是我不能给玩家一个项目,我已经尝试了几种方法。 有人可以帮忙吗?
我当前的代码是:
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.