我正在 1.16.5 中使用 Forge 制作一个 mod,一旦破坏了 50 个任何类型的方 block ,就会掉落祖母绿,但我无法弄清楚。我尝试过 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 的事件总线系统,您可以从他们简短但足够的 documentation 中做到这一点。 .
当然,您的 blok
变量只会在运行时存在,这意味着,当客户端重新启动时,该值将消失。如果您希望玩家从上次停下的地方继续,您将需要研究一种存储持久数据的方法。
关于java - 如何检测 Minecraft forge 1.16.5 中任何被破坏的方 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72352533/