我試圖爲每個擴展我的主類(BlockOre.java)的類執行類似的代碼塊。我問的代碼是一個我的世界MOD,但問題是關於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。正確?
我發現了一種方法,可以在經過一些試驗和錯誤之後自己做到這一點,它與第一種方法非常相似,雖然沒有經過壓縮。感謝您幫助我縮小代碼大小,教會我一些技巧,但我不知道自己可以做什麼。 + 1使我的代碼更高效 – user3311827
我在GenericBlockOre中遇到了變量問題,eclipse不會讓我傳遞方法變量。即使我在課堂上創建了它們。 – user3311827
對不起,只是有一些課程重疊。 – user3311827