【发布时间】:2014-05-06 00:07:35
【问题描述】:
我正在尝试为扩展我的主类 (BlockOre.java) 的每个类执行类似的代码块。我要问的代码是针对我的世界模组的,但问题只是关于 Java,而不是关于我的世界。在我的主类中,我创建了三个新的“块”对象。
public static Block AluminumOre = new BlockAluminumOre();
public static Block VibraniumOre = new BlockVibraniumOre();
public static Block PoloniumOre = new BlockPoloniumOre();
这些块中的每一个的类都扩展了我的类 BlockOre。在我的 BlockOre 类中,我希望拥有这些块的所有类似重复功能。
@SideOnly(Side.CLIENT)
public IIcon iconOre;
@SideOnly(Side.CLIENT)
public IIcon iconNetherOre;
@SideOnly(Side.CLIENT)
public IIcon iconEndOre;
@SideOnly(Side.CLIENT)
public void registerBlockIcons(IIconRegister iconRegister){
iconOre = iconRegister.registerIcon(Reference.MODID + ":EndAluminumOre");
iconNetherOre = iconRegister.registerIcon(Reference.MODID + ":NetherAluminumOre");
iconEndOre = iconRegister.registerIcon(Reference.MODID + ":AluminumOre");
}
@Override
@SideOnly(Side.CLIENT)
public IIcon getIcon(int side, int metadata ){
int dim = Minecraft.getMinecraft().theWorld.provider.dimensionId;
if (dim == -1)
return iconNetherOre;
else if(dim == 0)
return iconOre;
else if(dim == 1)
return iconEndOre;
else
return iconOre;
}
这是我希望他们都做的事情。我需要创建这些新图标,注册它们,然后将它们返回给将获取块纹理的函数。我只有相当基本的java知识,似乎无法弄清楚如何根据继承类的内容来更改所有对象。
所以更简单地说,我需要 iconOre = icon(x)Ore,其中 x = 扩展这个的类。
附言。我知道我可以使用“this”来获取对象。我也需要更改字符串,如何正确格式化 this.toString() 。它根据内存中的位置返回 [Object]@XXXXXXXX。对吗?
【问题讨论】:
标签: java class object minecraft extends