- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
if(block == Block.blockDiamond || block == Block.oreDiamond)
{
return toolMaterial.getHarvestLevel() >= 2;
}
if(block == Block.blockGold || block == Block.oreGold)
{
return toolMaterial.getHarvestLevel() >= 2;
}
if(block == Block.blockSteel || block == Block.oreIron)
{
return toolMaterial.getHarvestLevel() >= 1;
}
if(block == Block.blockLapis || block == Block.oreLapis)
{
return toolMaterial.getHarvestLevel() >= 1;
}
if(block == Block.oreRedstone || block == Block.oreRedstoneGlowing)
{
return toolMaterial.getHarvestLevel() >= 2;
}
Из сорцов майнсрафта.
Нахрена делать из двух ifов пять?!
Чтобы потом было легче вносить изменения.
Тут как вариант можно было бы сделать поле HarvestLevel у блока и потом просто сравнивать его с HarvestLevel'ом кирки.
Либо, как вариант "легче вносить изменения":
List<Block> harv1 = new ArrayList<Block>();
List<Block> harv2 = new ArrayList<Block>();
bool harvestable = false;
<...>
harv1.add(Block.blockSteel);
harv1.add(Block.oreIron);
<...>
Iterator it = harv1.iterator();
while (it.hasNext())
{
if (block == (Block)it.next())
{
if (harvestLevel >= 1) harvestable = true;
}
}
<...>
и т.д.
Либо конфиг, как сказал Kirinyale.
Если конфиг не нужен, не планируется расширение или изменение в динамике, то хорошо подойдут enum-ы.