我是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”无法解析为字段。
您正在寻找仅存在于Minecraft Forge v1.8 +中的BlockEvent.BreakEvent字段。
这是the documentation for the event in 1.7。正如你所看到的,pos
分为x
,y
,z
,你在这个旧版本的Minecraft和Forge中有block
和blockMetadata
而不是state
。
我同意其他人的意见,如果你想进入我的世界模型,最好使用在线教程并使用v1.12 mods,因为1.7的人数急剧下降。
event.state.getBlock()
引用了1.10中添加的IBlockState
,这样modders就不必记住魔术元数据,而是可以使用像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我只是完全无知)。
但是,我建议您更新到更新的版本。