繁体   English   中英

无法检查在Minecraft Forge中损坏了哪种块

[英]Can't check what kind of block was broken in Minecraft Forge

我是Java编程的新手,我正在尝试学习如何使用Forge创建Minecraft mod。 我正在关注由Arun Gupta和Aditya Gupta撰写并与Minecraft 1.7.10一起工作的一本名为《 Minecraft Modding With Forge》的书。 当我这样做时:

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”无法解析为字段。

好吧,问题是这些字段适用于MC 1.10+

event.state.getBlock()引用了1.10中添加的IBlockState ,以便修改程序不必记住魔术元数据编号,而可以处理诸如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的修改,我完全一无所知。

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

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

这是1.7中事件的文档 如您所见, pos被分解为xyz ,并且您具有blockblockMetadata而不是此较早版本的Minecraft和Forge中的state

我同意其他人的看法,如果您想加入Minecraft改装,最好使用在线教程并开发v1.12 mod,因为坚持1.7的人数正急剧下降。

暂无
暂无

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

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