diff --git a/dependencies.gradle b/dependencies.gradle index 34db903d..5d21daab 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -1,7 +1,7 @@ // Add your dependencies here dependencies { - api('com.github.GTNewHorizons:ForestryMC:4.11.4:dev') + api('com.github.GTNewHorizons:ForestryMC:4.11.7:dev') implementation('com.github.GTNewHorizons:GTNHLib:0.9.20:dev') devOnlyNonPublishable('com.github.GTNewHorizons:NotEnoughItems:2.8.68-GTNH:dev') diff --git a/src/main/java/binnie/botany/Botany.java b/src/main/java/binnie/botany/Botany.java index c58a8a41..c75fbb6a 100644 --- a/src/main/java/binnie/botany/Botany.java +++ b/src/main/java/binnie/botany/Botany.java @@ -271,7 +271,7 @@ public class Botany extends AbstractMod { EnumSoilType type = soil.getType(event.world, event.x, y, event.z); int next = Math .min(type.ordinal() + Gardening.getFertiliserStrength(event.entityPlayer.getHeldItem()), 2); - if (soil.fertilise(event.world, event.x, y, event.z, EnumSoilType.values()[next]) + if (soil.fertilise(event.world, event.x, y, event.z, EnumSoilType.VALUES[next]) && !event.entityPlayer.capabilities.isCreativeMode) { ItemStack heldItem = event.entityPlayer.getHeldItem(); heldItem.stackSize--; @@ -284,7 +284,7 @@ public class Botany extends AbstractMod { EnumAcidity pH = soil.getPH(event.world, event.x, y, event.z); int next = Math .max(pH.ordinal() - Gardening.getFertiliserStrength(event.entityPlayer.getHeldItem()), 0); - if (soil.setPH(event.world, event.x, y, event.z, EnumAcidity.values()[next]) + if (soil.setPH(event.world, event.x, y, event.z, EnumAcidity.VALUES[next]) && !event.entityPlayer.capabilities.isCreativeMode) { ItemStack heldItem2 = event.entityPlayer.getHeldItem(); heldItem2.stackSize--; @@ -297,7 +297,7 @@ public class Botany extends AbstractMod { EnumAcidity pH = soil.getPH(event.world, event.x, y, event.z); int next = Math .min(pH.ordinal() + Gardening.getFertiliserStrength(event.entityPlayer.getHeldItem()), 2); - if (soil.setPH(event.world, event.x, y, event.z, EnumAcidity.values()[next]) + if (soil.setPH(event.world, event.x, y, event.z, EnumAcidity.VALUES[next]) && !event.entityPlayer.capabilities.isCreativeMode) { ItemStack heldItem3 = event.entityPlayer.getHeldItem(); heldItem3.stackSize--; diff --git a/src/main/java/binnie/botany/api/EnumAcidity.java b/src/main/java/binnie/botany/api/EnumAcidity.java index d150adf0..aad7461f 100644 --- a/src/main/java/binnie/botany/api/EnumAcidity.java +++ b/src/main/java/binnie/botany/api/EnumAcidity.java @@ -6,6 +6,11 @@ public enum EnumAcidity { NEUTRAL, ALKALINE; + /** + * Cached values() array for frequent read-only operations, the array should NOT be mutated. + */ + public static final EnumAcidity[] VALUES = values(); + public String getID() { return name().toLowerCase(); } diff --git a/src/main/java/binnie/botany/api/EnumFlowerChromosome.java b/src/main/java/binnie/botany/api/EnumFlowerChromosome.java index a8c48122..8a5108d2 100644 --- a/src/main/java/binnie/botany/api/EnumFlowerChromosome.java +++ b/src/main/java/binnie/botany/api/EnumFlowerChromosome.java @@ -24,6 +24,10 @@ public enum EnumFlowerChromosome implements IChromosomeType { SAPPINESS(IAlleleFloat.class), STEM(IAlleleInteger.class); + /** + * Cached values() array for frequent read-only operations, the array should NOT be mutated. + */ + public static final EnumFlowerChromosome[] VALUES = values(); private final Class cls; EnumFlowerChromosome(Class cls) { diff --git a/src/main/java/binnie/botany/api/EnumMoisture.java b/src/main/java/binnie/botany/api/EnumMoisture.java index 8a9c2f54..c8517be3 100644 --- a/src/main/java/binnie/botany/api/EnumMoisture.java +++ b/src/main/java/binnie/botany/api/EnumMoisture.java @@ -6,6 +6,11 @@ public enum EnumMoisture { NORMAL, DAMP; + /** + * Cached values() array for frequent read-only operations, the array should NOT be mutated. + */ + public static final EnumMoisture[] VALUES = values(); + public String getID() { return name().toLowerCase(); } diff --git a/src/main/java/binnie/botany/api/EnumSoilType.java b/src/main/java/binnie/botany/api/EnumSoilType.java index 968d7407..118ac34e 100644 --- a/src/main/java/binnie/botany/api/EnumSoilType.java +++ b/src/main/java/binnie/botany/api/EnumSoilType.java @@ -6,6 +6,11 @@ public enum EnumSoilType { LOAM, FLOWERBED; + /** + * Cached values() array for frequent read-only operations, the array should NOT be mutated. + */ + public static final EnumSoilType[] VALUES = values(); + public String getID() { return name().toLowerCase(); } diff --git a/src/main/java/binnie/botany/ceramic/BlockCeramic.java b/src/main/java/binnie/botany/ceramic/BlockCeramic.java index 7716d7ab..fc349016 100644 --- a/src/main/java/binnie/botany/ceramic/BlockCeramic.java +++ b/src/main/java/binnie/botany/ceramic/BlockCeramic.java @@ -93,7 +93,7 @@ public class BlockCeramic extends Block implements IBlockMetadata { @Override public void getSubBlocks(Item item, CreativeTabs tabs, List itemList) { - for (EnumFlowerColor c : EnumFlowerColor.values()) { + for (EnumFlowerColor c : EnumFlowerColor.VALUES) { itemList.add(TileEntityMetadata.getItemStack(this, c.ordinal())); } } diff --git a/src/main/java/binnie/botany/ceramic/BlockCeramicBrick.java b/src/main/java/binnie/botany/ceramic/BlockCeramicBrick.java index 9bcca9e0..3076b877 100644 --- a/src/main/java/binnie/botany/ceramic/BlockCeramicBrick.java +++ b/src/main/java/binnie/botany/ceramic/BlockCeramicBrick.java @@ -102,12 +102,12 @@ public class BlockCeramicBrick extends Block implements IBlockMetadata, IMultipa @Override public void getSubBlocks(Item item, CreativeTabs tab, List itemList) { - for (EnumFlowerColor c : EnumFlowerColor.values()) { + for (EnumFlowerColor c : EnumFlowerColor.VALUES) { BlockType type = new BlockType(c, c, TileType.Tile); itemList.add(TileEntityMetadata.getItemStack(this, type.ordinal())); } - for (TileType type2 : TileType.values()) { + for (TileType type2 : TileType.VALUES) { if (type2.canDouble()) { itemList.add(new BlockType(EnumFlowerColor.BROWN, EnumFlowerColor.GOLD, type2).getStack(1)); } @@ -136,7 +136,7 @@ public class BlockCeramicBrick extends Block implements IBlockMetadata, IMultipa @Override @SideOnly(Side.CLIENT) public void registerBlockIcons(IIconRegister register) { - for (TileType type : TileType.values()) { + for (TileType type : TileType.VALUES) { for (int i = 0; i < 3; ++i) { type.icons[i] = Botany.proxy.getIcon(register, "ceramic." + type.id + "." + i); } @@ -214,6 +214,10 @@ public class BlockCeramicBrick extends Block implements IBlockMetadata, IMultipa VerticalStripeBrick("verticalbrickstripe", "verticalStripedCeramicBricks"), VerticalLargeBrick("verticalbricklarge", "largeVerticalCeramicBricks"); + /** + * Cached values() array for frequent read-only operations, the array should NOT be mutated. + */ + public static final TileType[] VALUES = values(); private final String id; private final String name; private final IIcon[] icons; @@ -225,7 +229,7 @@ public class BlockCeramicBrick extends Block implements IBlockMetadata, IMultipa } public static TileType get(int id) { - return values()[id % values().length]; + return VALUES[id % VALUES.length]; } public boolean canDouble() { diff --git a/src/main/java/binnie/botany/ceramic/BlockStained.java b/src/main/java/binnie/botany/ceramic/BlockStained.java index 5dde6976..6554f416 100644 --- a/src/main/java/binnie/botany/ceramic/BlockStained.java +++ b/src/main/java/binnie/botany/ceramic/BlockStained.java @@ -124,7 +124,7 @@ public class BlockStained extends Block implements IBlockMetadata { @Override public void getSubBlocks(Item item, CreativeTabs tab, List itemList) { - for (EnumFlowerColor c : EnumFlowerColor.values()) { + for (EnumFlowerColor c : EnumFlowerColor.VALUES) { itemList.add(TileEntityMetadata.getItemStack(this, c.ordinal())); } } diff --git a/src/main/java/binnie/botany/ceramic/CeramicColor.java b/src/main/java/binnie/botany/ceramic/CeramicColor.java index 8f9ca8d6..4c9c242e 100644 --- a/src/main/java/binnie/botany/ceramic/CeramicColor.java +++ b/src/main/java/binnie/botany/ceramic/CeramicColor.java @@ -16,7 +16,7 @@ public class CeramicColor implements IDesignMaterial { static { CeramicColor.map = new LinkedHashMap<>(); - for (EnumFlowerColor c : EnumFlowerColor.values()) { + for (EnumFlowerColor c : EnumFlowerColor.VALUES) { CeramicColor.map.put(c, new CeramicColor(c)); } } diff --git a/src/main/java/binnie/botany/ceramic/CeramicDesignSystem.java b/src/main/java/binnie/botany/ceramic/CeramicDesignSystem.java index 9daf34dc..200595c3 100644 --- a/src/main/java/binnie/botany/ceramic/CeramicDesignSystem.java +++ b/src/main/java/binnie/botany/ceramic/CeramicDesignSystem.java @@ -74,7 +74,7 @@ public class CeramicDesignSystem implements IDesignSystem { @Override public void registerIcons(IIconRegister register) { - for (EnumPattern pattern : EnumPattern.values()) { + for (EnumPattern pattern : EnumPattern.VALUES) { primary.put( pattern.ordinal(), BinnieCore.proxy.getIcon( diff --git a/src/main/java/binnie/botany/ceramic/CeramicTileRecipe.java b/src/main/java/binnie/botany/ceramic/CeramicTileRecipe.java index f499d673..c5bd4055 100644 --- a/src/main/java/binnie/botany/ceramic/CeramicTileRecipe.java +++ b/src/main/java/binnie/botany/ceramic/CeramicTileRecipe.java @@ -52,7 +52,7 @@ public class CeramicTileRecipe implements IRecipe { } } - for (BlockCeramicBrick.TileType type : BlockCeramicBrick.TileType.values()) { + for (BlockCeramicBrick.TileType type : BlockCeramicBrick.TileType.VALUES) { ItemStack stack2 = type.getRecipe(stacks); if (stack2 != null) { return stack2; diff --git a/src/main/java/binnie/botany/craftgui/WindowBotanistDatabase.java b/src/main/java/binnie/botany/craftgui/WindowBotanistDatabase.java index 073edf44..8f609d73 100644 --- a/src/main/java/binnie/botany/craftgui/WindowBotanistDatabase.java +++ b/src/main/java/binnie/botany/craftgui/WindowBotanistDatabase.java @@ -91,7 +91,7 @@ public class WindowBotanistDatabase extends WindowAbstractDatabase { } }; List colors = new ArrayList<>(); - Collections.addAll(colors, EnumFlowerColor.values()); + Collections.addAll(colors, EnumFlowerColor.VALUES); listBox.setOptions(colors); } } diff --git a/src/main/java/binnie/botany/farm/GardenLogic.java b/src/main/java/binnie/botany/farm/GardenLogic.java index 69f438bc..039fc226 100644 --- a/src/main/java/binnie/botany/farm/GardenLogic.java +++ b/src/main/java/binnie/botany/farm/GardenLogic.java @@ -129,7 +129,7 @@ public class GardenLogic extends FarmLogic { if (pH.ordinal() < acidity.ordinal()) { ItemStack stack = getAvailableAlkaline(); if (stack != null && soil - .setPH(world, position.x, position.y, position.z, EnumAcidity.values()[pH.ordinal() + 1])) { + .setPH(world, position.x, position.y, position.z, EnumAcidity.VALUES[pH.ordinal() + 1])) { housing.getFarmInventory().removeResources(new ItemStack[] { stack }); continue; } @@ -138,7 +138,7 @@ public class GardenLogic extends FarmLogic { if (pH.ordinal() > acidity.ordinal()) { ItemStack stack = getAvailableAcid(); if (stack != null && soil - .setPH(world, position.x, position.y, position.z, EnumAcidity.values()[pH.ordinal() - 1])) { + .setPH(world, position.x, position.y, position.z, EnumAcidity.VALUES[pH.ordinal() - 1])) { housing.getFarmInventory().removeResources(new ItemStack[] { stack }); continue; } diff --git a/src/main/java/binnie/botany/flower/BlockFlower.java b/src/main/java/binnie/botany/flower/BlockFlower.java index 7a2a972e..46cb0ff1 100644 --- a/src/main/java/binnie/botany/flower/BlockFlower.java +++ b/src/main/java/binnie/botany/flower/BlockFlower.java @@ -55,7 +55,7 @@ public class BlockFlower extends BlockContainer { @Override @SideOnly(Side.CLIENT) public void registerBlockIcons(IIconRegister register) { - for (EnumFlowerType type : EnumFlowerType.values()) { + for (EnumFlowerType type : EnumFlowerType.VALUES) { type.registerIcons(register); } } diff --git a/src/main/java/binnie/botany/gardening/BlockSoil.java b/src/main/java/binnie/botany/gardening/BlockSoil.java index 9a2671e5..c2587eca 100644 --- a/src/main/java/binnie/botany/gardening/BlockSoil.java +++ b/src/main/java/binnie/botany/gardening/BlockSoil.java @@ -81,8 +81,8 @@ public class BlockSoil extends Block implements IBlockSoil { @Override @SideOnly(Side.CLIENT) public void registerBlockIcons(IIconRegister register) { - for (EnumMoisture moisture : EnumMoisture.values()) { - for (EnumAcidity pH : EnumAcidity.values()) { + for (EnumMoisture moisture : EnumMoisture.VALUES) { + for (EnumAcidity pH : EnumAcidity.VALUES) { int index = moisture.ordinal() + pH.ordinal() * 3; String id = "soil/" + getType().getID() + "." + pH.getID() + "." + moisture.getID(); iconsTop[index] = Botany.proxy.getIcon(register, id + ".0"); @@ -104,8 +104,8 @@ public class BlockSoil extends Block implements IBlockSoil { @Override public void updateTick(World world, int x, int y, int z, Random random) { int meta = world.getBlockMetadata(x, y, z); - EnumMoisture moisture = EnumMoisture.values()[meta % 3]; - EnumAcidity acidity = EnumAcidity.values()[meta / 3]; + EnumMoisture moisture = EnumMoisture.VALUES[meta % 3]; + EnumAcidity acidity = EnumAcidity.VALUES[meta / 3]; EnumMoisture desiredMoisture = Gardening.getNaturalMoisture(world, x, y, z); if (desiredMoisture.ordinal() > moisture.ordinal()) { moisture = ((moisture == EnumMoisture.DRY) ? EnumMoisture.NORMAL : EnumMoisture.DAMP); @@ -141,12 +141,12 @@ public class BlockSoil extends Block implements IBlockSoil { @Override public EnumAcidity getPH(World world, int x, int y, int z) { - return EnumAcidity.values()[world.getBlockMetadata(x, y, z) / 3]; + return EnumAcidity.VALUES[world.getBlockMetadata(x, y, z) / 3]; } @Override public EnumMoisture getMoisture(World world, int x, int y, int z) { - return EnumMoisture.values()[world.getBlockMetadata(x, y, z) % 3]; + return EnumMoisture.VALUES[world.getBlockMetadata(x, y, z) % 3]; } @Override diff --git a/src/main/java/binnie/botany/gardening/Gardening.java b/src/main/java/binnie/botany/gardening/Gardening.java index 67a5c25d..e67e0d1c 100644 --- a/src/main/java/binnie/botany/gardening/Gardening.java +++ b/src/main/java/binnie/botany/gardening/Gardening.java @@ -233,8 +233,8 @@ public class Gardening { BiomeGenBase biome = world.getBiomeGenForCoords(x, z); return canTolerate( flower, - EnumAcidity.values()[soilMeta / 3 % 3], - EnumMoisture.values()[soilMeta % 3], + EnumAcidity.VALUES[soilMeta / 3 % 3], + EnumMoisture.VALUES[soilMeta % 3], EnumTemperature.getFromValue(biome.temperature)); } diff --git a/src/main/java/binnie/botany/gardening/ItemSoil.java b/src/main/java/binnie/botany/gardening/ItemSoil.java index c0b12877..891c70b9 100644 --- a/src/main/java/binnie/botany/gardening/ItemSoil.java +++ b/src/main/java/binnie/botany/gardening/ItemSoil.java @@ -33,8 +33,8 @@ public class ItemSoil extends ItemBlock { @SideOnly(Side.CLIENT) public void addInformation(ItemStack stack, EntityPlayer player, List tooltip, boolean advanced) { super.addInformation(stack, player, tooltip, advanced); - EnumMoisture moisture = EnumMoisture.values()[stack.getItemDamage() % 3]; - EnumAcidity acidity = EnumAcidity.values()[stack.getItemDamage() / 3]; + EnumMoisture moisture = EnumMoisture.VALUES[stack.getItemDamage() % 3]; + EnumAcidity acidity = EnumAcidity.VALUES[stack.getItemDamage() / 3]; String info = ""; if (moisture == EnumMoisture.DRY) { diff --git a/src/main/java/binnie/botany/gardening/ModuleGardening.java b/src/main/java/binnie/botany/gardening/ModuleGardening.java index 4f134964..4366fb1f 100644 --- a/src/main/java/binnie/botany/gardening/ModuleGardening.java +++ b/src/main/java/binnie/botany/gardening/ModuleGardening.java @@ -109,7 +109,7 @@ public class ModuleGardening implements IInitializable { for (boolean manual : new boolean[] { true, false }) { for (boolean fertilised : new boolean[] { true, false }) { - for (EnumMoisture moist : EnumMoisture.values()) { + for (EnumMoisture moist : EnumMoisture.VALUES) { ItemStack icon = (moist == EnumMoisture.DRY) ? yellow : ((moist == EnumMoisture.NORMAL) ? red : blue); int insulate = 2 - moist.ordinal(); @@ -258,7 +258,7 @@ public class ModuleGardening implements IInitializable { GameRegistry .addRecipe(BotanyItems.Mortar.get(6), " c ", "cgc", " c ", 'c', Items.clay_ball, 'g', Blocks.gravel); - for (EnumFlowerColor c : EnumFlowerColor.values()) { + for (EnumFlowerColor c : EnumFlowerColor.VALUES) { ItemStack clay = new ItemStack(Botany.clay, 1, c.ordinal()); ItemStack pigment = new ItemStack(Botany.pigment, 1, c.ordinal()); GameRegistry.addShapelessRecipe(clay, Items.clay_ball, Items.clay_ball, Items.clay_ball, pigment); @@ -276,9 +276,9 @@ public class ModuleGardening implements IInitializable { return null; } return new ItemStack( - Gardening.getSoilBlock(EnumSoilType.values()[type]), + Gardening.getSoilBlock(EnumSoilType.VALUES[type]), 1, - BlockSoil.getMeta(EnumAcidity.values()[pH], EnumMoisture.values()[moisture])); + BlockSoil.getMeta(EnumAcidity.VALUES[pH], EnumMoisture.VALUES[moisture])); } private void addAcidFertiliser(ItemStack stack, int strengthMax) { diff --git a/src/main/java/binnie/botany/genetics/EnumFlowerColor.java b/src/main/java/binnie/botany/genetics/EnumFlowerColor.java index d5772751..16772320 100644 --- a/src/main/java/binnie/botany/genetics/EnumFlowerColor.java +++ b/src/main/java/binnie/botany/genetics/EnumFlowerColor.java @@ -92,7 +92,10 @@ public enum EnumFlowerColor implements IFlowerColor { YELLOW("yellow", 0xffff00), YELLOW_GREEN("yellowGreen", 0x9acd32); - private static final EnumFlowerColor[] ALL_VALUES = values(); + /** + * Cached values() array for frequent read-only operations, the array should NOT be mutated. + */ + public static final EnumFlowerColor[] VALUES = values(); private final int color; private final int colorDis; private final String name; @@ -2964,7 +2967,7 @@ public enum EnumFlowerColor implements IFlowerColor { } public static EnumFlowerColor get(int i) { - return ALL_VALUES[Math.max(0, i) % ALL_VALUES.length]; + return VALUES[Math.max(0, i) % VALUES.length]; } @Override diff --git a/src/main/java/binnie/botany/genetics/EnumFlowerType.java b/src/main/java/binnie/botany/genetics/EnumFlowerType.java index 25a2f0c8..32dff7cd 100644 --- a/src/main/java/binnie/botany/genetics/EnumFlowerType.java +++ b/src/main/java/binnie/botany/genetics/EnumFlowerType.java @@ -57,6 +57,10 @@ public enum EnumFlowerType implements IFlowerType { DELPHINIUM(2), HOLLYHOCK(2); + /** + * Cached values() array for frequent read-only operations, the array should NOT be mutated. + */ + public static final EnumFlowerType[] VALUES = values(); private final int sections; private final IIcon[] stem; private final IIcon[] petal; diff --git a/src/main/java/binnie/botany/genetics/FlowerHelper.java b/src/main/java/binnie/botany/genetics/FlowerHelper.java index 73b4f800..ee627fae 100644 --- a/src/main/java/binnie/botany/genetics/FlowerHelper.java +++ b/src/main/java/binnie/botany/genetics/FlowerHelper.java @@ -232,7 +232,7 @@ public class FlowerHelper extends SpeciesRoot implements IFlowerRoot { @Override public IChromosomeType[] getKaryotype() { - return EnumFlowerChromosome.values(); + return EnumFlowerChromosome.VALUES; } @Override diff --git a/src/main/java/binnie/botany/genetics/FlowerSpecies.java b/src/main/java/binnie/botany/genetics/FlowerSpecies.java index 2777b394..21635e65 100644 --- a/src/main/java/binnie/botany/genetics/FlowerSpecies.java +++ b/src/main/java/binnie/botany/genetics/FlowerSpecies.java @@ -496,7 +496,7 @@ public enum FlowerSpecies implements IAlleleFlowerSpecies { @Override public EnumHumidity getHumidity() { - return EnumHumidity.values()[getMoisture().ordinal()]; + return EnumHumidity.VALUES[getMoisture().ordinal()]; } @Override diff --git a/src/main/java/binnie/botany/genetics/FlowerTemplates.java b/src/main/java/binnie/botany/genetics/FlowerTemplates.java index 4caed2fb..c90d26b4 100644 --- a/src/main/java/binnie/botany/genetics/FlowerTemplates.java +++ b/src/main/java/binnie/botany/genetics/FlowerTemplates.java @@ -9,7 +9,7 @@ import forestry.core.genetics.alleles.EnumAllele; public class FlowerTemplates { public static IAllele[] getDefaultTemplate() { - IAllele[] alleles = new IAllele[EnumFlowerChromosome.values().length]; + IAllele[] alleles = new IAllele[EnumFlowerChromosome.VALUES.length]; alleles[EnumFlowerChromosome.SPECIES.ordinal()] = FlowerSpecies.POPPY; alleles[EnumFlowerChromosome.PRIMARY.ordinal()] = AlleleHelper.getAllele(EnumFlowerColor.RED); alleles[EnumFlowerChromosome.SECONDARY.ordinal()] = AlleleHelper.getAllele(EnumFlowerColor.RED); diff --git a/src/main/java/binnie/botany/genetics/ModuleGenetics.java b/src/main/java/binnie/botany/genetics/ModuleGenetics.java index c220169a..4a6b64ed 100644 --- a/src/main/java/binnie/botany/genetics/ModuleGenetics.java +++ b/src/main/java/binnie/botany/genetics/ModuleGenetics.java @@ -42,7 +42,7 @@ public class ModuleGenetics implements IInitializable { @Override public void init() { - for (EnumFlowerColor color : EnumFlowerColor.values()) { + for (EnumFlowerColor color : EnumFlowerColor.VALUES) { AlleleManager.alleleRegistry.registerAllele(color.getAllele()); } diff --git a/src/main/java/binnie/botany/items/ItemClay.java b/src/main/java/binnie/botany/items/ItemClay.java index e3c2900b..1bd3656c 100644 --- a/src/main/java/binnie/botany/items/ItemClay.java +++ b/src/main/java/binnie/botany/items/ItemClay.java @@ -49,7 +49,7 @@ public class ItemClay extends Item { @Override @SideOnly(Side.CLIENT) public void getSubItems(Item item, CreativeTabs tab, List list) { - for (EnumFlowerColor c : EnumFlowerColor.values()) { + for (EnumFlowerColor c : EnumFlowerColor.VALUES) { list.add(new ItemStack(this, 1, c.ordinal())); } } diff --git a/src/main/java/binnie/botany/items/ItemPigment.java b/src/main/java/binnie/botany/items/ItemPigment.java index cf9bb575..4c8d1a3a 100644 --- a/src/main/java/binnie/botany/items/ItemPigment.java +++ b/src/main/java/binnie/botany/items/ItemPigment.java @@ -49,7 +49,7 @@ public class ItemPigment extends Item { @Override @SideOnly(Side.CLIENT) public void getSubItems(Item item, CreativeTabs tab, List list) { - for (EnumFlowerColor c : EnumFlowerColor.values()) { + for (EnumFlowerColor c : EnumFlowerColor.VALUES) { list.add(new ItemStack(this, 1, c.ordinal())); } } diff --git a/src/main/java/binnie/botany/network/MessageFlowerUpdate.java b/src/main/java/binnie/botany/network/MessageFlowerUpdate.java index e1dd9de9..602c1275 100644 --- a/src/main/java/binnie/botany/network/MessageFlowerUpdate.java +++ b/src/main/java/binnie/botany/network/MessageFlowerUpdate.java @@ -39,10 +39,10 @@ public class MessageFlowerUpdate extends MessageCoordinates { public void readData(ByteBuf data) throws IOException { super.readData(data); render = new TileEntityFlower.RenderInfo(); - render.primary = EnumFlowerColor.values()[data.readByte()]; - render.secondary = EnumFlowerColor.values()[data.readByte()]; - render.stem = EnumFlowerColor.values()[data.readByte()]; - render.type = EnumFlowerType.values()[data.readByte()]; + render.primary = EnumFlowerColor.get(data.readByte()); + render.secondary = EnumFlowerColor.get(data.readByte()); + render.stem = EnumFlowerColor.get(data.readByte()); + render.type = EnumFlowerType.VALUES[data.readByte()]; render.age = data.readByte(); render.section = data.readByte(); render.wilted = data.readBoolean(); diff --git a/src/main/java/binnie/core/craftgui/minecraft/EnumColor.java b/src/main/java/binnie/core/craftgui/minecraft/EnumColor.java index ed068a80..8c26a895 100644 --- a/src/main/java/binnie/core/craftgui/minecraft/EnumColor.java +++ b/src/main/java/binnie/core/craftgui/minecraft/EnumColor.java @@ -20,6 +20,10 @@ public enum EnumColor { Yellow("Yellow", 16777045, 'e'), White("White", 16777215, 'f'); + /** + * Cached values() array for frequent read-only operations, the array should NOT be mutated. + */ + public static final EnumColor[] VALUES = values(); private final int colour; private final String name; private final char code; diff --git a/src/main/java/binnie/core/genetics/FlowerBreedingSystem.java b/src/main/java/binnie/core/genetics/FlowerBreedingSystem.java index e04cecdd..f2a35d99 100644 --- a/src/main/java/binnie/core/genetics/FlowerBreedingSystem.java +++ b/src/main/java/binnie/core/genetics/FlowerBreedingSystem.java @@ -113,7 +113,7 @@ class FlowerBreedingSystem extends BreedingSystem { case PRIMARY: case SECONDARY: case STEM: - for (EnumFlowerColor color : EnumFlowerColor.values()) { + for (EnumFlowerColor color : EnumFlowerColor.VALUES) { alleles.add(color.getAllele()); } break; diff --git a/src/main/java/binnie/core/machines/storage/CompartmentTab.java b/src/main/java/binnie/core/machines/storage/CompartmentTab.java index 6abc6a43..b65263af 100644 --- a/src/main/java/binnie/core/machines/storage/CompartmentTab.java +++ b/src/main/java/binnie/core/machines/storage/CompartmentTab.java @@ -25,7 +25,7 @@ class CompartmentTab implements INBTTagable { public void readFromNBT(NBTTagCompound nbt) { name = nbt.getString("name"); icon = ItemStack.loadItemStackFromNBT(nbt.getCompoundTag("icon")); - color = EnumColor.values()[nbt.getByte("color")]; + color = EnumColor.VALUES[nbt.getByte("color")]; id = nbt.getByte("id"); } diff --git a/src/main/java/binnie/core/machines/storage/WindowCompartment.java b/src/main/java/binnie/core/machines/storage/WindowCompartment.java index 16623ebb..b01cc8ca 100644 --- a/src/main/java/binnie/core/machines/storage/WindowCompartment.java +++ b/src/main/java/binnie/core/machines/storage/WindowCompartment.java @@ -320,7 +320,7 @@ public class WindowCompartment extends WindowMachine implements IWindowAffectsSh 1 + cw * (cc / 8), cw, cw, - EnumColor.values()[cc]); + EnumColor.VALUES[cc]); color.addSelfEventHandler(new EventMouse.Down.Handler() { @Override diff --git a/src/main/java/binnie/extrabees/gui/database/ControlClimateBar.java b/src/main/java/binnie/extrabees/gui/database/ControlClimateBar.java index cfdf5a59..a6f59f58 100644 --- a/src/main/java/binnie/extrabees/gui/database/ControlClimateBar.java +++ b/src/main/java/binnie/extrabees/gui/database/ControlClimateBar.java @@ -54,9 +54,9 @@ public class ControlClimateBar extends Control implements ITooltip { } if (isHumidity) { - tooltip.add(EnumHumidity.values()[type].name); + tooltip.add(EnumHumidity.VALUES[type].name); } else { - tooltip.add(EnumTemperature.values()[type + 1].name); + tooltip.add(EnumTemperature.VALUES[type + 1].name); } } diff --git a/src/main/java/binnie/extrabees/products/EnumHoneyComb.java b/src/main/java/binnie/extrabees/products/EnumHoneyComb.java index dd288d42..afd03baa 100644 --- a/src/main/java/binnie/extrabees/products/EnumHoneyComb.java +++ b/src/main/java/binnie/extrabees/products/EnumHoneyComb.java @@ -101,6 +101,10 @@ public enum EnumHoneyComb implements IItemEnum { CYANITE(new Color(0x27204d), new Color(0x86ed)), BLUTONIUM(new Color(0x27204d), new Color(0x1b00e6)); + /** + * Cached values() array for frequent read-only operations, the array should NOT be mutated. + */ + public static final EnumHoneyComb[] VALUES = values(); public final Map products; public final int primaryColor; public final int secondaryColor; @@ -117,10 +121,10 @@ public enum EnumHoneyComb implements IItemEnum { public static EnumHoneyComb get(ItemStack itemStack) { int i = itemStack.getItemDamage(); - if (i >= 0 && i < values().length) { - return values()[i]; + if (i >= 0 && i < VALUES.length) { + return VALUES[i]; } - return values()[0]; + return VALUES[0]; } public void addRecipe() { diff --git a/src/main/java/binnie/extrabees/products/EnumHoneyDrop.java b/src/main/java/binnie/extrabees/products/EnumHoneyDrop.java index 9026172a..e0b2c8af 100644 --- a/src/main/java/binnie/extrabees/products/EnumHoneyDrop.java +++ b/src/main/java/binnie/extrabees/products/EnumHoneyDrop.java @@ -44,6 +44,10 @@ public enum EnumHoneyDrop implements IItemEnum { MAGENTA(new Color(0xe57fd8), new Color(0xff00cc), "for.honey"), LIGHTGRAY(new Color(0x999999), new Color(0xc9c9c9), "for.honey"); + /** + * Cached values() array for frequent read-only operations, the array should NOT be mutated. + */ + public static final EnumHoneyDrop[] VALUES = values(); public final int primaryColor; public final int secondaryColor; @@ -58,10 +62,10 @@ public enum EnumHoneyDrop implements IItemEnum { public static EnumHoneyDrop get(ItemStack itemStack) { int i = itemStack.getItemDamage(); - if (i >= 0 && i < values().length) { - return values()[i]; + if (i >= 0 && i < VALUES.length) { + return VALUES[i]; } - return values()[0]; + return VALUES[0]; } public void addRemenant(ItemStack stack) { diff --git a/src/main/java/binnie/extrabees/products/EnumPropolis.java b/src/main/java/binnie/extrabees/products/EnumPropolis.java index 61befd18..acb800bf 100644 --- a/src/main/java/binnie/extrabees/products/EnumPropolis.java +++ b/src/main/java/binnie/extrabees/products/EnumPropolis.java @@ -24,6 +24,10 @@ public enum EnumPropolis implements IItemEnum { // GLACIAL, // PEAT + /** + * Cached values() array for frequent read-only operations, the array should NOT be mutated. + */ + public static final EnumPropolis[] VALUES = values(); public final int secondaryColor; public final int primaryColor; public final String liquidName; @@ -36,10 +40,10 @@ public enum EnumPropolis implements IItemEnum { public static EnumPropolis get(ItemStack itemStack) { int i = itemStack.getItemDamage(); - if (i >= 0 && i < values().length) { - return values()[i]; + if (i >= 0 && i < VALUES.length) { + return VALUES[i]; } - return values()[0]; + return VALUES[0]; } public void addRecipe() { diff --git a/src/main/java/binnie/extrabees/products/ItemHoneyComb.java b/src/main/java/binnie/extrabees/products/ItemHoneyComb.java index 581b9e47..41681dc6 100644 --- a/src/main/java/binnie/extrabees/products/ItemHoneyComb.java +++ b/src/main/java/binnie/extrabees/products/ItemHoneyComb.java @@ -21,7 +21,7 @@ public class ItemHoneyComb extends ItemProduct { protected IIcon icon2; public ItemHoneyComb() { - super("honeyComb", EnumHoneyComb.values()); + super("honeyComb", EnumHoneyComb.VALUES); setCreativeTab(Tabs.tabApiculture); } @@ -148,7 +148,9 @@ public class ItemHoneyComb extends ItemProduct { EnumHoneyComb.COFFEE.addProduct(beeswax, 0.90f); EnumHoneyComb.COFFEE.addProduct(honeyDrop, 0.75f); - EnumHoneyComb.COFFEE.tryAddProduct(Mods.ic2.stack("itemCofeePowder"), 0.75f); + if (!OreDictionary.getOres("dustCoffee").isEmpty()) { + EnumHoneyComb.COFFEE.tryAddProduct(OreDictionary.getOres("dustCoffee").get(0), 0.75f); + } EnumHoneyComb.GLACIAL.tryAddProduct(EnumHoneyDrop.ICE, 0.80f); EnumHoneyComb.GLACIAL.addProduct(honeyDrop, 0.75f); @@ -231,15 +233,15 @@ public class ItemHoneyComb extends ItemProduct { OreDictionary.registerOre("beeComb", new ItemStack(ExtraBees.comb, 1, 32767)); for (int i = 0; i < 16; ++i) { - EnumHoneyComb type = EnumHoneyComb.values()[EnumHoneyComb.RED.ordinal() + i]; + EnumHoneyComb type = EnumHoneyComb.VALUES[EnumHoneyComb.RED.ordinal() + i]; if (type != EnumHoneyComb.RED) { type.copyProducts(EnumHoneyComb.RED); } } for (int i = 0; i < 16; ++i) { - EnumHoneyComb type = EnumHoneyComb.values()[EnumHoneyComb.RED.ordinal() + i]; - EnumHoneyDrop drop = EnumHoneyDrop.values()[EnumHoneyDrop.RED.ordinal() + i]; + EnumHoneyComb type = EnumHoneyComb.VALUES[EnumHoneyComb.RED.ordinal() + i]; + EnumHoneyDrop drop = EnumHoneyDrop.VALUES[EnumHoneyDrop.RED.ordinal() + i]; int[] dyeC = { 1, 11, 4, 2, 0, 15, 3, 14, 6, 5, 8, 12, 9, 10, 13, 7 }; int k = dyeC[i]; ItemStack dye = switch (k) { diff --git a/src/main/java/binnie/extrabees/products/ItemHoneyDrop.java b/src/main/java/binnie/extrabees/products/ItemHoneyDrop.java index 3208b7b3..44d42e89 100644 --- a/src/main/java/binnie/extrabees/products/ItemHoneyDrop.java +++ b/src/main/java/binnie/extrabees/products/ItemHoneyDrop.java @@ -15,7 +15,7 @@ public class ItemHoneyDrop extends ItemProduct { protected IIcon icon2; public ItemHoneyDrop() { - super("honeyDrop", EnumHoneyDrop.values()); + super("honeyDrop", EnumHoneyDrop.VALUES); setCreativeTab(Tabs.tabApiculture); } diff --git a/src/main/java/binnie/extrabees/products/ItemPropolis.java b/src/main/java/binnie/extrabees/products/ItemPropolis.java index c9b1a065..de70c523 100644 --- a/src/main/java/binnie/extrabees/products/ItemPropolis.java +++ b/src/main/java/binnie/extrabees/products/ItemPropolis.java @@ -11,7 +11,7 @@ import forestry.api.core.Tabs; public class ItemPropolis extends ItemProduct { public ItemPropolis() { - super("propolis", EnumPropolis.values()); + super("propolis", EnumPropolis.VALUES); setCreativeTab(Tabs.tabApiculture); } diff --git a/src/main/java/binnie/extrabees/products/ModuleProducts.java b/src/main/java/binnie/extrabees/products/ModuleProducts.java index 6fd48fec..a658eee1 100644 --- a/src/main/java/binnie/extrabees/products/ModuleProducts.java +++ b/src/main/java/binnie/extrabees/products/ModuleProducts.java @@ -25,13 +25,13 @@ public class ModuleProducts implements IInitializable { @Override public void postInit() { - for (EnumHoneyComb info : EnumHoneyComb.values()) { + for (EnumHoneyComb info : EnumHoneyComb.VALUES) { info.addRecipe(); } - for (EnumHoneyDrop info2 : EnumHoneyDrop.values()) { + for (EnumHoneyDrop info2 : EnumHoneyDrop.VALUES) { info2.addRecipe(); } - for (EnumPropolis info3 : EnumPropolis.values()) { + for (EnumPropolis info3 : EnumPropolis.VALUES) { info3.addRecipe(); } } diff --git a/src/main/java/binnie/extrabees/worldgen/BlockExtraBeeHive.java b/src/main/java/binnie/extrabees/worldgen/BlockExtraBeeHive.java index fd6e2964..fe173568 100644 --- a/src/main/java/binnie/extrabees/worldgen/BlockExtraBeeHive.java +++ b/src/main/java/binnie/extrabees/worldgen/BlockExtraBeeHive.java @@ -44,7 +44,7 @@ public class BlockExtraBeeHive extends Block { @Override public IIcon getIcon(int side, int metadata) { - if (metadata >= EnumHiveType.values().length) { + if (metadata >= EnumHiveType.VALUES.length) { return null; } if (side < 2) { @@ -56,8 +56,8 @@ public class BlockExtraBeeHive extends Block { @Override @SideOnly(Side.CLIENT) public void registerBlockIcons(IIconRegister register) { - icons = new IIcon[EnumHiveType.values().length][2]; - for (EnumHiveType hive : EnumHiveType.values()) { + icons = new IIcon[EnumHiveType.VALUES.length][2]; + for (EnumHiveType hive : EnumHiveType.VALUES) { icons[hive.ordinal()][0] = ExtraBees.proxy .getIcon(register, "hive/" + hive.toString().toLowerCase() + ".0"); icons[hive.ordinal()][1] = ExtraBees.proxy @@ -68,7 +68,7 @@ public class BlockExtraBeeHive extends Block { @Override public ArrayList getDrops(World world, int x, int y, int z, int metadata, int fortune) { ArrayList ret = new ArrayList<>(); - List dropList = EnumHiveType.values()[metadata].drops; + List dropList = EnumHiveType.VALUES[metadata].drops; Collections.shuffle(dropList); int tries = 0; diff --git a/src/main/java/binnie/extrabees/worldgen/EnumHiveType.java b/src/main/java/binnie/extrabees/worldgen/EnumHiveType.java index de8dc3df..e47ce9d4 100644 --- a/src/main/java/binnie/extrabees/worldgen/EnumHiveType.java +++ b/src/main/java/binnie/extrabees/worldgen/EnumHiveType.java @@ -12,6 +12,10 @@ public enum EnumHiveType { NETHER, MARBLE; + /** + * Cached values() array for frequent read-only operations, the array should NOT be mutated. + */ + public static final EnumHiveType[] VALUES = values(); public final List drops; EnumHiveType() { diff --git a/src/main/java/binnie/extratrees/block/BlockETDoor.java b/src/main/java/binnie/extratrees/block/BlockETDoor.java index d40a8f41..e047252e 100644 --- a/src/main/java/binnie/extratrees/block/BlockETDoor.java +++ b/src/main/java/binnie/extratrees/block/BlockETDoor.java @@ -40,8 +40,8 @@ public class BlockETDoor extends BlockDoor implements IBlockMetadata { public static DoorType getDoorType(int tileMeta) { int type = (tileMeta & 0xF00) >> 8; - if (type < DoorType.values().length) { - return DoorType.values()[type]; + if (type < DoorType.VALUES.length) { + return DoorType.VALUES[type]; } return DoorType.STANDARD; } @@ -96,7 +96,7 @@ public class BlockETDoor extends BlockDoor implements IBlockMetadata { @Override @SideOnly(Side.CLIENT) public void registerBlockIcons(IIconRegister register) { - for (DoorType type : DoorType.values()) { + for (DoorType type : DoorType.VALUES) { type.iconDoorLower = ExtraTrees.proxy.getIcon(register, "door." + type.id + ".lower"); type.iconDoorUpper = ExtraTrees.proxy.getIcon(register, "door." + type.id + ".upper"); type.iconDoorLowerFlip = new IconFlipped(type.iconDoorLower, true, false); @@ -237,18 +237,18 @@ public class BlockETDoor extends BlockDoor implements IBlockMetadata { @Override public void getSubBlocks(Item item, CreativeTabs tab, List itemList) { - for (IPlankType type : PlankType.ExtraTreePlanks.values()) { + for (IPlankType type : PlankType.ExtraTreePlanks.VALUES) { itemList.add(WoodManager.getDoor(type, DoorType.STANDARD)); } - for (IPlankType type : PlankType.ForestryPlanks.values()) { + for (IPlankType type : PlankType.ForestryPlanks.VALUES) { itemList.add(WoodManager.getDoor(type, DoorType.STANDARD)); } - for (IPlankType type : PlankType.ExtraBiomesPlank.values()) { + for (IPlankType type : PlankType.ExtraBiomesPlank.VALUES) { if (type.getStack() != null) { itemList.add(WoodManager.getDoor(type, DoorType.STANDARD)); } } - for (IPlankType type : PlankType.VanillaPlanks.values()) { + for (IPlankType type : PlankType.VanillaPlanks.VALUES) { itemList.add(WoodManager.getDoor(type, DoorType.STANDARD)); } } diff --git a/src/main/java/binnie/extratrees/block/BlockETLog.java b/src/main/java/binnie/extratrees/block/BlockETLog.java index bcde956f..89b7cd03 100644 --- a/src/main/java/binnie/extratrees/block/BlockETLog.java +++ b/src/main/java/binnie/extratrees/block/BlockETLog.java @@ -37,7 +37,7 @@ public class BlockETLog extends BlockLog implements IBlockMetadata { @Override public void getSubBlocks(Item item, CreativeTabs tab, List list) { - for (int i = 0; i < ILogType.ExtraTreeLog.values().length; ++i) { + for (int i = 0; i < ILogType.ExtraTreeLog.VALUES.length; ++i) { list.add(TileEntityMetadata.getItemStack(this, i)); } } @@ -54,7 +54,7 @@ public class BlockETLog extends BlockLog implements IBlockMetadata { public IIcon getIcon(int side, int tileMeta, int blockMeta) { int oriented = blockMeta & 0xC; - ILogType.ExtraTreeLog log = ILogType.ExtraTreeLog.values()[tileMeta]; + ILogType.ExtraTreeLog log = ILogType.ExtraTreeLog.VALUES[tileMeta]; switch (oriented) { case 4: if (side > 3) { @@ -125,7 +125,7 @@ public class BlockETLog extends BlockLog implements IBlockMetadata { @Override public String getBlockName(ItemStack itemStack) { int meta = TileEntityMetadata.getItemDamage(itemStack); - ILogType.ExtraTreeLog[] logs = ILogType.ExtraTreeLog.values(); + ILogType.ExtraTreeLog[] logs = ILogType.ExtraTreeLog.VALUES; if (meta < 0 || meta >= logs.length) { meta = 0; } diff --git a/src/main/java/binnie/extratrees/block/BlockETPlanks.java b/src/main/java/binnie/extratrees/block/BlockETPlanks.java index 1dc8603b..253f41be 100644 --- a/src/main/java/binnie/extratrees/block/BlockETPlanks.java +++ b/src/main/java/binnie/extratrees/block/BlockETPlanks.java @@ -75,7 +75,7 @@ public class BlockETPlanks extends BlockWood implements IBlockMetadata { @Override public String getBlockName(ItemStack itemStack) { int meta = TileEntityMetadata.getItemDamage(itemStack); - return I18N.localise("extratrees.block.plank.name", PlankType.ExtraTreePlanks.values()[meta].getName()); + return I18N.localise("extratrees.block.plank.name", PlankType.ExtraTreePlanks.VALUES[meta].getName()); } @Override @@ -90,7 +90,7 @@ public class BlockETPlanks extends BlockWood implements IBlockMetadata { @Override public void getSubBlocks(Item item, CreativeTabs tab, List list) { - for (int i = 0; i < PlankType.ExtraTreePlanks.values().length; ++i) { + for (int i = 0; i < PlankType.ExtraTreePlanks.VALUES.length; ++i) { list.add(TileEntityMetadata.getItemStack(this, i)); } } @@ -107,13 +107,13 @@ public class BlockETPlanks extends BlockWood implements IBlockMetadata { @Override public IIcon getIcon(int side, int meta) { - return PlankType.ExtraTreePlanks.values()[meta].getIcon(); + return PlankType.ExtraTreePlanks.VALUES[meta].getIcon(); } @Override @SideOnly(Side.CLIENT) public void registerBlockIcons(IIconRegister register) { - for (PlankType.ExtraTreePlanks plank : PlankType.ExtraTreePlanks.values()) { + for (PlankType.ExtraTreePlanks plank : PlankType.ExtraTreePlanks.VALUES) { plank.loadIcon(register); } } diff --git a/src/main/java/binnie/extratrees/block/BlockETSlab.java b/src/main/java/binnie/extratrees/block/BlockETSlab.java index 9fcc433e..74be259c 100644 --- a/src/main/java/binnie/extratrees/block/BlockETSlab.java +++ b/src/main/java/binnie/extratrees/block/BlockETSlab.java @@ -88,7 +88,7 @@ public class BlockETSlab extends BlockWoodSlab implements IBlockMetadata { @Override public String getBlockName(ItemStack itemStack) { int meta = TileEntityMetadata.getItemDamage(itemStack); - return I18N.localise("extratrees.block.woodslab.name", PlankType.ExtraTreePlanks.values()[meta].getName()); + return I18N.localise("extratrees.block.woodslab.name", PlankType.ExtraTreePlanks.VALUES[meta].getName()); } @Override @@ -106,7 +106,7 @@ public class BlockETSlab extends BlockWoodSlab implements IBlockMetadata { if (field_150004_a) { return; } - for (int i = 0; i < PlankType.ExtraTreePlanks.values().length; ++i) { + for (int i = 0; i < PlankType.ExtraTreePlanks.VALUES.length; ++i) { list.add(TileEntityMetadata.getItemStack(this, i)); } } @@ -123,7 +123,7 @@ public class BlockETSlab extends BlockWoodSlab implements IBlockMetadata { @Override public IIcon getIcon(int side, int meta) { - return PlankType.ExtraTreePlanks.values()[meta].getIcon(); + return PlankType.ExtraTreePlanks.VALUES[meta].getIcon(); } @Override diff --git a/src/main/java/binnie/extratrees/block/BlockETStairs.java b/src/main/java/binnie/extratrees/block/BlockETStairs.java index c8b97f54..76e55366 100644 --- a/src/main/java/binnie/extratrees/block/BlockETStairs.java +++ b/src/main/java/binnie/extratrees/block/BlockETStairs.java @@ -43,7 +43,7 @@ public class BlockETStairs extends BlockStairs implements IBlockMetadata { @Override public void getSubBlocks(Item item, CreativeTabs tabs, List list) { - for (int i = 0; i < PlankType.ExtraTreePlanks.values().length; ++i) { + for (int i = 0; i < PlankType.ExtraTreePlanks.VALUES.length; ++i) { list.add(new ItemStack(this, 1, i)); } } diff --git a/src/main/java/binnie/extratrees/block/DoorType.java b/src/main/java/binnie/extratrees/block/DoorType.java index 81600553..8176d649 100644 --- a/src/main/java/binnie/extratrees/block/DoorType.java +++ b/src/main/java/binnie/extratrees/block/DoorType.java @@ -11,6 +11,10 @@ public enum DoorType { DOUBLE("double"), FULL("full"); + /** + * Cached values() array for frequent read-only operations, the array should NOT be mutated. + */ + public static final DoorType[] VALUES = values(); final String id; IIcon iconDoorLower; IIcon iconDoorUpper; diff --git a/src/main/java/binnie/extratrees/block/ILogType.java b/src/main/java/binnie/extratrees/block/ILogType.java index ff5da9ef..a26c7458 100644 --- a/src/main/java/binnie/extratrees/block/ILogType.java +++ b/src/main/java/binnie/extratrees/block/ILogType.java @@ -67,6 +67,10 @@ public interface ILogType { Cinnamon("cinnamon", 0x86583c, PlankType.VanillaPlanks.JUNGLE), PinkIvory("pinkivory", 0x7f6554, PlankType.ExtraTreePlanks.PinkIvory); + /** + * Cached values() array for frequent read-only operations, the array should NOT be mutated. + */ + public static final ExtraTreeLog[] VALUES = values(); private final String name; private final int color; private final IDesignMaterial plank; @@ -86,7 +90,7 @@ public interface ILogType { } public static void registerIcons(IIconRegister register) { - for (ExtraTreeLog log : values()) { + for (ExtraTreeLog log : VALUES) { log.trunk = ExtraTrees.proxy.getIcon(register, "logs/" + log.toString().toLowerCase() + "Trunk"); log.bark = ExtraTrees.proxy.getIcon(register, "logs/" + log.toString().toLowerCase() + "Bark"); } diff --git a/src/main/java/binnie/extratrees/block/ItemETDoor.java b/src/main/java/binnie/extratrees/block/ItemETDoor.java index 1dc59c2d..0347f04f 100644 --- a/src/main/java/binnie/extratrees/block/ItemETDoor.java +++ b/src/main/java/binnie/extratrees/block/ItemETDoor.java @@ -66,7 +66,7 @@ public class ItemETDoor extends ItemMetadata { @Override @SideOnly(Side.CLIENT) public void registerIcons(IIconRegister register) { - for (DoorType type : DoorType.values()) { + for (DoorType type : DoorType.VALUES) { type.iconItem = ExtraTrees.proxy.getIcon(register, "door." + type.id); } } diff --git a/src/main/java/binnie/extratrees/block/ItemETStairs.java b/src/main/java/binnie/extratrees/block/ItemETStairs.java index 3cd51302..987a3de4 100644 --- a/src/main/java/binnie/extratrees/block/ItemETStairs.java +++ b/src/main/java/binnie/extratrees/block/ItemETStairs.java @@ -24,7 +24,7 @@ public class ItemETStairs extends ItemBlock { @Override @SideOnly(Side.CLIENT) public IIcon getIconFromDamage(int par1) { - return PlankType.ExtraTreePlanks.values()[par1].getIcon(); + return PlankType.ExtraTreePlanks.VALUES[par1].getIcon(); } @Override diff --git a/src/main/java/binnie/extratrees/block/ModuleBlocks.java b/src/main/java/binnie/extratrees/block/ModuleBlocks.java index 2a5db57f..e274d1fe 100644 --- a/src/main/java/binnie/extratrees/block/ModuleBlocks.java +++ b/src/main/java/binnie/extratrees/block/ModuleBlocks.java @@ -67,12 +67,12 @@ public class ModuleBlocks implements IInitializable { .registerCustomItemRenderer(Item.getItemFromBlock(ExtraTrees.blockStairs), new StairItemRenderer()); BinnieCore.proxy .registerCustomItemRenderer(Item.getItemFromBlock(ExtraTrees.blockGate), new GateItemRenderer()); - for (ILogType plank : ILogType.ExtraTreeLog.values()) { + for (ILogType plank : ILogType.ExtraTreeLog.VALUES) { OreDictionary.registerOre("logWood", plank.getItemStack()); } GameRegistry.addSmelting(ExtraTrees.blockLog, new ItemStack(Items.coal, 1, 1), 0.15f); - for (IPlankType plank2 : PlankType.ExtraTreePlanks.values()) { + for (IPlankType plank2 : PlankType.ExtraTreePlanks.VALUES) { OreDictionary.registerOre("plankWood", plank2.getStack()); } @@ -102,7 +102,7 @@ public class ModuleBlocks implements IInitializable { @Override public void postInit() { - for (PlankType.ExtraTreePlanks plank : PlankType.ExtraTreePlanks.values()) { + for (PlankType.ExtraTreePlanks plank : PlankType.ExtraTreePlanks.VALUES) { ItemStack planks = plank.getStack(); ItemStack slabs = TileEntityMetadata.getItemStack(ExtraTrees.blockSlab, plank.ordinal()); ItemStack stairs = TileEntityMetadata.getItemStack(ExtraTrees.blockStairs, plank.ordinal()); diff --git a/src/main/java/binnie/extratrees/block/PlankType.java b/src/main/java/binnie/extratrees/block/PlankType.java index 8c399151..e03a454d 100644 --- a/src/main/java/binnie/extratrees/block/PlankType.java +++ b/src/main/java/binnie/extratrees/block/PlankType.java @@ -18,16 +18,16 @@ import extrabiomes.api.Stuff; public class PlankType { public static void setup() { - for (VanillaPlanks plank : VanillaPlanks.values()) { + for (VanillaPlanks plank : VanillaPlanks.VALUES) { CarpentryManager.carpentryInterface.registerCarpentryWood(plank.ordinal(), plank); } - for (ExtraTreePlanks plank2 : ExtraTreePlanks.values()) { + for (ExtraTreePlanks plank2 : ExtraTreePlanks.VALUES) { CarpentryManager.carpentryInterface.registerCarpentryWood(plank2.ordinal() + 32, plank2); } - for (ForestryPlanks plank3 : ForestryPlanks.values()) { + for (ForestryPlanks plank3 : ForestryPlanks.VALUES) { CarpentryManager.carpentryInterface.registerCarpentryWood(plank3.ordinal() + 128, plank3); } - for (ExtraBiomesPlank plank4 : ExtraBiomesPlank.values()) { + for (ExtraBiomesPlank plank4 : ExtraBiomesPlank.VALUES) { CarpentryManager.carpentryInterface.registerCarpentryWood(plank4.ordinal() + 192, plank4); } } @@ -70,6 +70,10 @@ public class PlankType { Gingko(0xf4e7ba), PinkIvory(0xec8ca0); + /** + * Cached values() array for frequent read-only operations, the array should NOT be mutated. + */ + public static final ExtraTreePlanks[] VALUES = values(); private final int color; private IIcon icon; @@ -121,6 +125,10 @@ public class PlankType { ACACIA(0xba6337), DARKOAK(0x462d15); + /** + * Cached values() array for frequent read-only operations, the array should NOT be mutated. + */ + public static final VanillaPlanks[] VALUES = values(); private final int color; VanillaPlanks(int color) { @@ -192,6 +200,10 @@ public class PlankType { COCOBOLO(0x731302), ZEBRAWOOD(0xa6824e); + /** + * Cached values() array for frequent read-only operations, the array should NOT be mutated. + */ + public static final ForestryPlanks[] VALUES = values(); private final int color; ForestryPlanks(int color) { @@ -241,6 +253,10 @@ public class PlankType { Fir(0x7e774a), Acacia(0xbfaa7e); + /** + * Cached values() array for frequent read-only operations, the array should NOT be mutated. + */ + public static final ExtraBiomesPlank[] VALUES = values(); private final int color; ExtraBiomesPlank(int color) { diff --git a/src/main/java/binnie/extratrees/block/StairItemRenderer.java b/src/main/java/binnie/extratrees/block/StairItemRenderer.java index b1833e39..49b5f411 100644 --- a/src/main/java/binnie/extratrees/block/StairItemRenderer.java +++ b/src/main/java/binnie/extratrees/block/StairItemRenderer.java @@ -15,7 +15,7 @@ public class StairItemRenderer implements IItemRenderer { private void renderStairBlock(RenderBlocks renderBlocks, ItemStack item, float f, float g, float h) { Tessellator tessellator = Tessellator.instance; Block block = ((ItemBlock) item.getItem()).field_150939_a; - IIcon textureIndex = PlankType.ExtraTreePlanks.values()[item.getItemDamage()].getIcon(); + IIcon textureIndex = PlankType.ExtraTreePlanks.VALUES[item.getItemDamage()].getIcon(); for (int i = 0; i < 2; ++i) { if (i == 0) { diff --git a/src/main/java/binnie/extratrees/block/WoodManager.java b/src/main/java/binnie/extratrees/block/WoodManager.java index 4243b963..d8599095 100644 --- a/src/main/java/binnie/extratrees/block/WoodManager.java +++ b/src/main/java/binnie/extratrees/block/WoodManager.java @@ -105,12 +105,12 @@ public class WoodManager { } List list = new ArrayList<>(); - Collections.addAll(list, PlankType.ExtraTreePlanks.values()); - Collections.addAll(list, PlankType.ForestryPlanks.values()); + Collections.addAll(list, PlankType.ExtraTreePlanks.VALUES); + Collections.addAll(list, PlankType.ForestryPlanks.VALUES); if (Mods.extraBiomes.active()) { - Collections.addAll(list, PlankType.ExtraBiomesPlank.values()); + Collections.addAll(list, PlankType.ExtraBiomesPlank.VALUES); } - Collections.addAll(list, PlankType.VanillaPlanks.values()); + Collections.addAll(list, PlankType.VanillaPlanks.VALUES); allPlankTypes = list; return list; } diff --git a/src/main/java/binnie/extratrees/block/decor/BlockFence.java b/src/main/java/binnie/extratrees/block/decor/BlockFence.java index 4e749484..edfe884f 100644 --- a/src/main/java/binnie/extratrees/block/decor/BlockFence.java +++ b/src/main/java/binnie/extratrees/block/decor/BlockFence.java @@ -42,11 +42,11 @@ public class BlockFence extends net.minecraft.block.BlockFence implements IBlock @Override public void getSubBlocks(Item item, CreativeTabs tab, List list) { - for (IFenceProvider type : PlankType.ExtraTreePlanks.values()) { + for (IFenceProvider type : PlankType.ExtraTreePlanks.VALUES) { list.add(type.getFence()); } - for (IFenceProvider type : PlankType.VanillaPlanks.values()) { + for (IFenceProvider type : PlankType.VanillaPlanks.VALUES) { if (type != PlankType.VanillaPlanks.OAK) { list.add(type.getFence()); } diff --git a/src/main/java/binnie/extratrees/carpentry/EnumPattern.java b/src/main/java/binnie/extratrees/carpentry/EnumPattern.java index 762edadb..2a30693e 100644 --- a/src/main/java/binnie/extratrees/carpentry/EnumPattern.java +++ b/src/main/java/binnie/extratrees/carpentry/EnumPattern.java @@ -408,6 +408,9 @@ public enum EnumPattern implements IPattern { private ILayout leftRotation; private ILayout horizontalFlip; + /** + * Cached values() array for frequent read-only operations, the array should NOT be mutated. + */ public static final EnumPattern[] VALUES = values(); EnumPattern() { diff --git a/src/main/java/binnie/extratrees/carpentry/GlassType.java b/src/main/java/binnie/extratrees/carpentry/GlassType.java index e8b5694d..15eb0340 100644 --- a/src/main/java/binnie/extratrees/carpentry/GlassType.java +++ b/src/main/java/binnie/extratrees/carpentry/GlassType.java @@ -20,7 +20,7 @@ public class GlassType implements IDesignMaterial { for (StandardColor c : StandardColor.values()) { GlassType.types.put(c.ordinal(), new GlassType(c.ordinal(), c.name, c.color)); } - for (EnumFlowerColor c2 : EnumFlowerColor.values()) { + for (EnumFlowerColor c2 : EnumFlowerColor.VALUES) { GlassType.types .put(128 + c2.ordinal(), new GlassType(128 + c2.ordinal(), c2.getName(), c2.getColor(false))); } diff --git a/src/main/java/binnie/extratrees/core/ModuleCore.java b/src/main/java/binnie/extratrees/core/ModuleCore.java index 4822f4f2..323f7687 100644 --- a/src/main/java/binnie/extratrees/core/ModuleCore.java +++ b/src/main/java/binnie/extratrees/core/ModuleCore.java @@ -46,10 +46,10 @@ public class ModuleCore implements IInitializable { Collections.addAll(speciesQueue, ExtraTreeSpecies.values()); Queue logQueue = new LinkedList<>(); - Collections.addAll(logQueue, ILogType.ExtraTreeLog.values()); + Collections.addAll(logQueue, ILogType.ExtraTreeLog.VALUES); Queue plankQueue = new LinkedList<>(); - Collections.addAll(plankQueue, PlankType.ExtraTreePlanks.values()); + Collections.addAll(plankQueue, PlankType.ExtraTreePlanks.VALUES); Queue fruitQueue = new LinkedList<>(); Collections.addAll(fruitQueue, ExtraTreeFruitGene.values()); diff --git a/src/main/java/binnie/extratrees/genetics/ExtraTreeFruitGene.java b/src/main/java/binnie/extratrees/genetics/ExtraTreeFruitGene.java index aa185bc1..a982de15 100644 --- a/src/main/java/binnie/extratrees/genetics/ExtraTreeFruitGene.java +++ b/src/main/java/binnie/extratrees/genetics/ExtraTreeFruitGene.java @@ -418,7 +418,7 @@ public enum ExtraTreeFruitGene implements IAlleleFruit, IFruitProvider { @SideOnly(Side.CLIENT) public void registerIcons(IIconRegister register) { if (ordinal() == 0) { - for (FruitSprite sprite : FruitSprite.values()) { + for (FruitSprite sprite : FruitSprite.VALUES) { sprite.registerIcons(register); } } @@ -436,7 +436,7 @@ public enum ExtraTreeFruitGene implements IAlleleFruit, IFruitProvider { for (ItemStack stack : products.keySet()) { if (stack.getItem() == ExtraTrees.itemFood) { - return Food.values()[stack.getItemDamage()].toString(); + return Food.VALUES[stack.getItemDamage()].toString(); } } return "NoFruit"; diff --git a/src/main/java/binnie/extratrees/genetics/FruitSprite.java b/src/main/java/binnie/extratrees/genetics/FruitSprite.java index 6dcd67e6..4c9ba4d6 100644 --- a/src/main/java/binnie/extratrees/genetics/FruitSprite.java +++ b/src/main/java/binnie/extratrees/genetics/FruitSprite.java @@ -19,6 +19,10 @@ public enum FruitSprite implements IIconProvider { Larger, Pear; + /** + * Cached values() array for frequent read-only operations, the array should NOT be mutated. + */ + public static final FruitSprite[] VALUES = values(); private BinnieIcon icon; public short getIndex() { @@ -29,8 +33,8 @@ public enum FruitSprite implements IIconProvider { @SideOnly(Side.CLIENT) public IIcon getIcon(short texUID) { int index = texUID - 4200; - if (index >= 0 && index < values().length) { - return values()[index].icon.getIcon(); + if (index >= 0 && index < VALUES.length) { + return VALUES[index].icon.getIcon(); } return null; } diff --git a/src/main/java/binnie/extratrees/item/Food.java b/src/main/java/binnie/extratrees/item/Food.java index f8b535a7..8d6d8acf 100644 --- a/src/main/java/binnie/extratrees/item/Food.java +++ b/src/main/java/binnie/extratrees/item/Food.java @@ -79,6 +79,10 @@ public enum Food implements IItemMisc { Starfruit(2), Candlenut(0); + /** + * Cached values() array for frequent read-only operations, the array should NOT be mutated. + */ + public static final Food[] VALUES = values(); private IIcon icon; private final int hunger; private final List ores; diff --git a/src/main/java/binnie/extratrees/item/ItemFood.java b/src/main/java/binnie/extratrees/item/ItemFood.java index 75998c4b..96b3ab4d 100644 --- a/src/main/java/binnie/extratrees/item/ItemFood.java +++ b/src/main/java/binnie/extratrees/item/ItemFood.java @@ -18,22 +18,18 @@ import forestry.api.core.Tabs; public class ItemFood extends net.minecraft.item.ItemFood { - protected IItemMisc[] items; - public ItemFood() { super(0, 0.0f, false); setUnlocalizedName("food"); setCreativeTab(Tabs.tabArboriculture); setHasSubtypes(true); - items = Food.values(); - registerItem(this, getUnlocalizedName().substring(5)); } @Override @SideOnly(Side.CLIENT) public void getSubItems(Item item, CreativeTabs tab, List list) { - for (IItemMisc itemMisc : items) { + for (IItemMisc itemMisc : Food.VALUES) { if (itemMisc.isActive()) { list.add(getStack(itemMisc, 1)); } @@ -41,7 +37,7 @@ public class ItemFood extends net.minecraft.item.ItemFood { } private IItemMisc getItem(int damage) { - return (damage >= items.length) ? items[0] : items[damage]; + return (damage >= Food.VALUES.length) ? Food.VALUES[0] : Food.VALUES[damage]; } public ItemStack getStack(IItemMisc type, int size) { @@ -79,7 +75,7 @@ public class ItemFood extends net.minecraft.item.ItemFood { @Override @SideOnly(Side.CLIENT) public void registerIcons(IIconRegister register) { - for (IItemMisc item : items) { + for (IItemMisc item : Food.VALUES) { if (item.isActive()) { item.registerIcons(register); } @@ -87,7 +83,7 @@ public class ItemFood extends net.minecraft.item.ItemFood { } private Food getFood(ItemStack stack) { - return Food.values()[stack.getItemDamage()]; + return Food.VALUES[stack.getItemDamage()]; } @Override diff --git a/src/main/java/binnie/extratrees/item/ModuleItems.java b/src/main/java/binnie/extratrees/item/ModuleItems.java index 23ea53f3..c2868556 100644 --- a/src/main/java/binnie/extratrees/item/ModuleItems.java +++ b/src/main/java/binnie/extratrees/item/ModuleItems.java @@ -233,7 +233,7 @@ public class ModuleItems implements IInitializable { FuelManager.bronzeEngineFuel.put( ExtraTreeLiquid.Resin.get(1).getFluid(), new EngineBronzeFuel(ExtraTreeLiquid.Resin.get(1).getFluid(), 30, 10000, 1)); - for (ILogType.ExtraTreeLog log : ILogType.ExtraTreeLog.values()) { + for (ILogType.ExtraTreeLog log : ILogType.ExtraTreeLog.VALUES) { log.addRecipe(); } }