无法检查Minecraft Forge中哪种块被破坏

问题描述 投票:0回答:2

我是Java编程的新手,我正在努力学习如何使用Forge创建Minecraft mods。我正在读一本名叫Minecraft Modding With Forge的书,由Arun Gupta和Aditya Gupta撰写,并与Minecraft 1.7.10合作。当我这样做:

import cpw.mods.fml.common.eventhandler.SubscribeEvent;
import net.minecraft.init.Blocks;
import net.minecraftforge.event.world.BlockEvent.BreakEvent;

public class DiamondOreTrap {
    @SubscribeEvent
    public void explode(BreakEvent event){
        if(event.state.getBlock() != Blocks.diamond_ore){
            return;
        }
        event.world.createExplosion(null,event.pos.getX(),event.pos.getY(),event.pos.getZ(),10,true);
    }
}

弹出两个错误:“pos”无法解析为字段,“state”无法解析为字段。

java minecraft minecraft-forge
2个回答
0
投票

您正在寻找仅存在于Minecraft Forge v1.8 +中的BlockEvent.BreakEvent字段。

这是the documentation for the event in 1.7。正如你所看到的,pos分为xyz,你在这个旧版本的Minecraft和Forge中有blockblockMetadata而不是state

我同意其他人的意见,如果你想进入我的世界模型,最好使用在线教程并使用v1.12 mods,因为1.7的人数急剧下降。


0
投票

Ok then, the problem is that those fields are for MC 1.10+

event.state.getBlock()引用了1.10中添加的IBlockState,这样modders就不必记住魔术元数据,而是可以使用像FACING:NORTHLIT:true这样的值。

对于1.7.10及更早版本,您必须手动使用块/元数据组合。可能这里的替换将是event.blockevent.getBlock(),我没有设置1.7.10环境,所以我不能去检查。使用IDE检查事件对象,查看可用的属性以及是否需要getter函数。

类似地,event.pos.getX()引用BlockPos对象,这是一个围绕X,Y,Z坐标的不可修改的包装器,正在发生某些事情。替换应该是event.getX()event.posX或类似。

(如果有人碰巧在1.8或1.9上,我不知道代码库在这些版本中处于什么状态,对于很多类似于1.7的东西,但在其他方面它更像是1.10而且我没有做任何修改1.8或1.9我只是完全无知)。

但是,我建议您更新到更新的版本。

© www.soinside.com 2019 - 2024. All rights reserved.