[英]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”无法解析为字段。
event.state.getBlock()
引用了1.10中添加的IBlockState
,以便修改程序不必记住魔术元数据编号,而可以处理诸如FACING:NORTH
或LIT:true
。
对于1.7.10及更早版本,您必须手动使用“块/元数据”组合。 这里的替换可能是event.block
或event.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
被分解为x
, y
, z
,并且您具有block
和blockMetadata
而不是此较早版本的Minecraft和Forge中的state
。
我同意其他人的看法,如果您想加入Minecraft改装,最好使用在线教程并开发v1.12 mod,因为坚持1.7的人数正急剧下降。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.