From 7d22663756d4dbb7a629cb4129c2faf60ef587ed Mon Sep 17 00:00:00 2001 From: Adam Date: Sun, 12 May 2019 11:57:40 -0400 Subject: [PATCH] client: use immutablemap for maps built in class initializers --- .../client/game/ItemVariationMapping.java | 8 +- .../client/plugins/agility/Courses.java | 10 ++- .../plugins/attackstyles/WeaponType.java | 22 +++-- .../client/plugins/blastfurnace/BarsOres.java | 10 ++- .../plugins/blastmine/BlastMineRockType.java | 10 ++- .../client/plugins/bosstimer/Boss.java | 10 ++- .../plugins/cerberus/CerberusGhost.java | 13 +-- .../chatcommands/SkillAbbreviations.java | 86 ++++++++++--------- .../plugins/discord/DiscordGameEventType.java | 17 ++-- .../client/plugins/fishing/FishingSpot.java | 12 +-- .../client/plugins/implings/Impling.java | 10 ++- .../plugins/itemcharges/ItemWithCharge.java | 18 +++- .../ItemIdentification.java | 10 ++- .../runelite/client/plugins/poh/PohIcons.java | 26 ++++-- .../client/plugins/prayer/PrayerItems.java | 8 +- .../plugins/prayer/PrayerRestoreType.java | 8 +- .../puzzlesolver/VarrockMuseumAnswer.java | 10 ++- .../client/plugins/runecraft/AbyssRifts.java | 10 ++- .../client/plugins/runepouch/Runes.java | 8 +- .../runelite/client/plugins/slayer/Task.java | 10 ++- .../plugins/tithefarm/TitheFarmPlantType.java | 12 +-- .../client/plugins/woodcutting/Axe.java | 10 ++- .../client/plugins/woodcutting/Tree.java | 10 ++- 23 files changed, 223 insertions(+), 125 deletions(-) diff --git a/runelite-client/src/main/java/net/runelite/client/game/ItemVariationMapping.java b/runelite-client/src/main/java/net/runelite/client/game/ItemVariationMapping.java index c471a1a814..9629bd99ac 100644 --- a/runelite-client/src/main/java/net/runelite/client/game/ItemVariationMapping.java +++ b/runelite-client/src/main/java/net/runelite/client/game/ItemVariationMapping.java @@ -25,12 +25,12 @@ package net.runelite.client.game; +import com.google.common.collect.ImmutableMap; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; import java.io.InputStream; import java.io.InputStreamReader; import java.util.Collection; -import java.util.HashMap; import java.util.Iterator; import java.util.Map; @@ -39,7 +39,7 @@ import java.util.Map; */ public class ItemVariationMapping { - private static final Map MAPPINGS = new HashMap<>(); + private static final Map MAPPINGS; static { @@ -51,6 +51,7 @@ public class ItemVariationMapping final InputStream geLimitData = ItemVariationMapping.class.getResourceAsStream("/item_variations.json"); final Map> itemVariations = gson.fromJson(new InputStreamReader(geLimitData), typeToken.getType()); + ImmutableMap.Builder builder = new ImmutableMap.Builder<>(); for (Collection value : itemVariations.values()) { final Iterator iterator = value.iterator(); @@ -58,9 +59,10 @@ public class ItemVariationMapping while (iterator.hasNext()) { - MAPPINGS.put(iterator.next(), base); + builder.put(iterator.next(), base); } } + MAPPINGS = builder.build(); } /** diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/agility/Courses.java b/runelite-client/src/main/java/net/runelite/client/plugins/agility/Courses.java index bbd6b181cb..cc732561c0 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/agility/Courses.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/agility/Courses.java @@ -24,7 +24,7 @@ */ package net.runelite.client.plugins.agility; -import java.util.HashMap; +import com.google.common.collect.ImmutableMap; import java.util.Map; import lombok.Getter; import net.runelite.api.coords.WorldPoint; @@ -48,7 +48,7 @@ enum Courses RELLEKA(780.0, 475, 10553), ARDOUGNE(793.0, 529, 10547); - private final static Map coursesByRegion = new HashMap<>(); + private final static Map coursesByRegion; @Getter private final double totalXp; @@ -64,10 +64,14 @@ enum Courses static { + ImmutableMap.Builder builder = new ImmutableMap.Builder<>(); + for (Courses course : values()) { - coursesByRegion.put(course.regionId, course); + builder.put(course.regionId, course); } + + coursesByRegion = builder.build(); } Courses(double totalXp, int lastObstacleXp, int regionId, WorldPoint... courseEndWorldPoints) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/attackstyles/WeaponType.java b/runelite-client/src/main/java/net/runelite/client/plugins/attackstyles/WeaponType.java index ef9ba0a188..0a0e443d55 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/attackstyles/WeaponType.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/attackstyles/WeaponType.java @@ -24,9 +24,17 @@ */ package net.runelite.client.plugins.attackstyles; -import java.util.HashMap; +import com.google.common.collect.ImmutableMap; import java.util.Map; -import static net.runelite.client.plugins.attackstyles.AttackStyle.*; +import static net.runelite.client.plugins.attackstyles.AttackStyle.ACCURATE; +import static net.runelite.client.plugins.attackstyles.AttackStyle.AGGRESSIVE; +import static net.runelite.client.plugins.attackstyles.AttackStyle.CASTING; +import static net.runelite.client.plugins.attackstyles.AttackStyle.CONTROLLED; +import static net.runelite.client.plugins.attackstyles.AttackStyle.DEFENSIVE; +import static net.runelite.client.plugins.attackstyles.AttackStyle.DEFENSIVE_CASTING; +import static net.runelite.client.plugins.attackstyles.AttackStyle.LONGRANGE; +import static net.runelite.client.plugins.attackstyles.AttackStyle.OTHER; +import static net.runelite.client.plugins.attackstyles.AttackStyle.RANGING; enum WeaponType { @@ -59,16 +67,20 @@ enum WeaponType TYPE_26(AGGRESSIVE, AGGRESSIVE, null, AGGRESSIVE), TYPE_27(ACCURATE, null, null, OTHER); - private static final Map weaponTypes = new HashMap<>(); - private final AttackStyle[] attackStyles; + private static final Map weaponTypes; + static { + ImmutableMap.Builder builder = new ImmutableMap.Builder<>(); + for (WeaponType weaponType : values()) { - weaponTypes.put(weaponType.ordinal(), weaponType); + builder.put(weaponType.ordinal(), weaponType); } + + weaponTypes = builder.build(); } WeaponType(AttackStyle... attackStyles) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/blastfurnace/BarsOres.java b/runelite-client/src/main/java/net/runelite/client/plugins/blastfurnace/BarsOres.java index 1f9bc2c244..52a295afd3 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/blastfurnace/BarsOres.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/blastfurnace/BarsOres.java @@ -24,7 +24,7 @@ */ package net.runelite.client.plugins.blastfurnace; -import java.util.HashMap; +import com.google.common.collect.ImmutableMap; import java.util.Map; import lombok.Getter; import net.runelite.api.ItemID; @@ -50,14 +50,18 @@ public enum BarsOres SILVER_BAR(Varbits.BLAST_FURNACE_SILVER_BAR, ItemID.SILVER_BAR), GOLD_BAR(Varbits.BLAST_FURNACE_GOLD_BAR, ItemID.GOLD_BAR); - private static final Map VARBIT = new HashMap<>(); + private static final Map VARBIT; static { + ImmutableMap.Builder builder = new ImmutableMap.Builder<>(); + for (BarsOres s : values()) { - VARBIT.put(s.getVarbit(), s); + builder.put(s.getVarbit(), s); } + + VARBIT = builder.build(); } @Getter diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/blastmine/BlastMineRockType.java b/runelite-client/src/main/java/net/runelite/client/plugins/blastmine/BlastMineRockType.java index 7c7bda870a..20e1d37f58 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/blastmine/BlastMineRockType.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/blastmine/BlastMineRockType.java @@ -24,7 +24,7 @@ */ package net.runelite.client.plugins.blastmine; -import java.util.HashMap; +import com.google.common.collect.ImmutableMap; import java.util.Map; import lombok.Getter; import net.runelite.api.ObjectID; @@ -37,17 +37,21 @@ public enum BlastMineRockType LIT(ObjectID.POT_OF_DYNAMITE_28585, ObjectID.POT_OF_DYNAMITE_28586), EXPLODED(ObjectID.SHATTERED_ROCKFACE, ObjectID.SHATTERED_ROCKFACE_28588); - private static final Map rockTypes = new HashMap<>(); + private static final Map rockTypes; static { + ImmutableMap.Builder builder = new ImmutableMap.Builder<>(); + for (BlastMineRockType type : values()) { for (int spotId : type.getObjectIds()) { - rockTypes.put(spotId, type); + builder.put(spotId, type); } } + + rockTypes = builder.build(); } @Getter diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/bosstimer/Boss.java b/runelite-client/src/main/java/net/runelite/client/plugins/bosstimer/Boss.java index 95839b9e96..47752f415b 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/bosstimer/Boss.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/bosstimer/Boss.java @@ -25,9 +25,9 @@ */ package net.runelite.client.plugins.bosstimer; +import com.google.common.collect.ImmutableMap; import java.time.Duration; import java.time.temporal.ChronoUnit; -import java.util.HashMap; import java.util.Map; import net.runelite.api.ItemID; import net.runelite.api.NpcID; @@ -59,7 +59,7 @@ enum Boss DUSK(NpcID.DUSK_7889, 2, ChronoUnit.MINUTES, ItemID.NOON), ALCHEMICAL_HYDRA(NpcID.ALCHEMICAL_HYDRA_8622, 25200, ChronoUnit.MILLIS, ItemID.IKKLE_HYDRA); - private static final Map bosses = new HashMap<>(); + private static final Map bosses; private final int id; private final Duration spawnTime; @@ -67,10 +67,14 @@ enum Boss static { + ImmutableMap.Builder builder = new ImmutableMap.Builder<>(); + for (Boss boss : values()) { - bosses.put(boss.getId(), boss); + builder.put(boss.getId(), boss); } + + bosses = builder.build(); } private Boss(int id, long period, ChronoUnit unit, int itemSpriteId) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/cerberus/CerberusGhost.java b/runelite-client/src/main/java/net/runelite/client/plugins/cerberus/CerberusGhost.java index 7bdf9d6788..744085c9a4 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/cerberus/CerberusGhost.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/cerberus/CerberusGhost.java @@ -24,7 +24,7 @@ */ package net.runelite.client.plugins.cerberus; -import java.util.HashMap; +import com.google.common.collect.ImmutableMap; import java.util.Map; import java.util.Optional; import lombok.Getter; @@ -41,18 +41,21 @@ public enum CerberusGhost MAGE(NpcID.SUMMONED_SOUL_5868, Skill.MAGIC), MELEE(NpcID.SUMMONED_SOUL_5869, Skill.ATTACK); - private static final Map MAP = new HashMap<>(); private final int npcId; private final Skill type; + private static final Map MAP; + static { - final CerberusGhost[] values = CerberusGhost.values(); + ImmutableMap.Builder builder = new ImmutableMap.Builder<>(); - for (final CerberusGhost ghost : values) + for (final CerberusGhost ghost : values()) { - MAP.put(ghost.getNpcId(), ghost); + builder.put(ghost.getNpcId(), ghost); } + + MAP = builder.build(); } /** diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/chatcommands/SkillAbbreviations.java b/runelite-client/src/main/java/net/runelite/client/plugins/chatcommands/SkillAbbreviations.java index da89769172..754c2f869e 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/chatcommands/SkillAbbreviations.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/chatcommands/SkillAbbreviations.java @@ -24,56 +24,58 @@ */ package net.runelite.client.plugins.chatcommands; -import java.util.HashMap; +import com.google.common.collect.ImmutableMap; import java.util.Map; import net.runelite.api.Skill; class SkillAbbreviations { - private static final Map MAP = new HashMap<>(); + private static final Map MAP; static { - MAP.put("ATK", Skill.ATTACK.getName()); - MAP.put("ATT", Skill.ATTACK.getName()); - MAP.put("DEF", Skill.DEFENCE.getName()); - MAP.put("STR", Skill.STRENGTH.getName()); - MAP.put("HEALTH", Skill.HITPOINTS.getName()); - MAP.put("HIT", Skill.HITPOINTS.getName()); - MAP.put("HITPOINT", Skill.HITPOINTS.getName()); - MAP.put("HP", Skill.HITPOINTS.getName()); - MAP.put("RANGE", Skill.RANGED.getName()); - MAP.put("RANGING", Skill.RANGED.getName()); - MAP.put("RNG", Skill.RANGED.getName()); - MAP.put("PRAY", Skill.PRAYER.getName()); - MAP.put("MAG", Skill.MAGIC.getName()); - MAP.put("MAGE", Skill.MAGIC.getName()); - MAP.put("COOK", Skill.COOKING.getName()); - MAP.put("WC", Skill.WOODCUTTING.getName()); - MAP.put("WOOD", Skill.WOODCUTTING.getName()); - MAP.put("WOODCUT", Skill.WOODCUTTING.getName()); - MAP.put("FLETCH", Skill.FLETCHING.getName()); - MAP.put("FISH", Skill.FISHING.getName()); - MAP.put("FM", Skill.FIREMAKING.getName()); - MAP.put("FIRE", Skill.FIREMAKING.getName()); - MAP.put("CRAFT", Skill.CRAFTING.getName()); - MAP.put("SMITH", Skill.SMITHING.getName()); - MAP.put("MINE", Skill.MINING.getName()); - MAP.put("HL", Skill.HERBLORE.getName()); - MAP.put("HERB", Skill.HERBLORE.getName()); - MAP.put("AGI", Skill.AGILITY.getName()); - MAP.put("AGIL", Skill.AGILITY.getName()); - MAP.put("THIEF", Skill.THIEVING.getName()); - MAP.put("SLAY", Skill.SLAYER.getName()); - MAP.put("FARM", Skill.FARMING.getName()); - MAP.put("RC", Skill.RUNECRAFT.getName()); - MAP.put("RUNE", Skill.RUNECRAFT.getName()); - MAP.put("RUNECRAFTING", Skill.RUNECRAFT.getName()); - MAP.put("HUNT", Skill.HUNTER.getName()); - MAP.put("CON", Skill.CONSTRUCTION.getName()); - MAP.put("CONSTRUCT", Skill.CONSTRUCTION.getName()); - MAP.put("ALL", Skill.OVERALL.getName()); - MAP.put("TOTAL", Skill.OVERALL.getName()); + ImmutableMap.Builder builder = new ImmutableMap.Builder<>(); + builder.put("ATK", Skill.ATTACK.getName()); + builder.put("ATT", Skill.ATTACK.getName()); + builder.put("DEF", Skill.DEFENCE.getName()); + builder.put("STR", Skill.STRENGTH.getName()); + builder.put("HEALTH", Skill.HITPOINTS.getName()); + builder.put("HIT", Skill.HITPOINTS.getName()); + builder.put("HITPOINT", Skill.HITPOINTS.getName()); + builder.put("HP", Skill.HITPOINTS.getName()); + builder.put("RANGE", Skill.RANGED.getName()); + builder.put("RANGING", Skill.RANGED.getName()); + builder.put("RNG", Skill.RANGED.getName()); + builder.put("PRAY", Skill.PRAYER.getName()); + builder.put("MAG", Skill.MAGIC.getName()); + builder.put("MAGE", Skill.MAGIC.getName()); + builder.put("COOK", Skill.COOKING.getName()); + builder.put("WC", Skill.WOODCUTTING.getName()); + builder.put("WOOD", Skill.WOODCUTTING.getName()); + builder.put("WOODCUT", Skill.WOODCUTTING.getName()); + builder.put("FLETCH", Skill.FLETCHING.getName()); + builder.put("FISH", Skill.FISHING.getName()); + builder.put("FM", Skill.FIREMAKING.getName()); + builder.put("FIRE", Skill.FIREMAKING.getName()); + builder.put("CRAFT", Skill.CRAFTING.getName()); + builder.put("SMITH", Skill.SMITHING.getName()); + builder.put("MINE", Skill.MINING.getName()); + builder.put("HL", Skill.HERBLORE.getName()); + builder.put("HERB", Skill.HERBLORE.getName()); + builder.put("AGI", Skill.AGILITY.getName()); + builder.put("AGIL", Skill.AGILITY.getName()); + builder.put("THIEF", Skill.THIEVING.getName()); + builder.put("SLAY", Skill.SLAYER.getName()); + builder.put("FARM", Skill.FARMING.getName()); + builder.put("RC", Skill.RUNECRAFT.getName()); + builder.put("RUNE", Skill.RUNECRAFT.getName()); + builder.put("RUNECRAFTING", Skill.RUNECRAFT.getName()); + builder.put("HUNT", Skill.HUNTER.getName()); + builder.put("CON", Skill.CONSTRUCTION.getName()); + builder.put("CONSTRUCT", Skill.CONSTRUCTION.getName()); + builder.put("ALL", Skill.OVERALL.getName()); + builder.put("TOTAL", Skill.OVERALL.getName()); + MAP = builder.build(); } /** diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/discord/DiscordGameEventType.java b/runelite-client/src/main/java/net/runelite/client/plugins/discord/DiscordGameEventType.java index 7258c6c7bb..cd05521228 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/discord/DiscordGameEventType.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/discord/DiscordGameEventType.java @@ -25,8 +25,8 @@ */ package net.runelite.client.plugins.discord; -import java.util.ArrayList; -import java.util.HashMap; +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableMap; import java.util.List; import java.util.Map; import lombok.AllArgsConstructor; @@ -250,16 +250,18 @@ enum DiscordGameEventType RAIDS_CHAMBERS_OF_XERIC("Chambers of Xeric", DiscordAreaType.RAIDS, Varbits.IN_RAID), RAIDS_THEATRE_OF_BLOOD("Theatre of Blood", DiscordAreaType.RAIDS, Varbits.THEATRE_OF_BLOOD); - private static final Map FROM_REGION = new HashMap<>(); - private static final List FROM_VARBITS = new ArrayList<>(); + private static final Map FROM_REGION; + private static final List FROM_VARBITS; static { + ImmutableMap.Builder regionMapBuilder = new ImmutableMap.Builder<>(); + ImmutableList.Builder fromVarbitsBuilder = ImmutableList.builder(); for (DiscordGameEventType discordGameEventType : DiscordGameEventType.values()) { if (discordGameEventType.getVarbits() != null) { - FROM_VARBITS.add(discordGameEventType); + fromVarbitsBuilder.add(discordGameEventType); continue; } @@ -270,10 +272,11 @@ enum DiscordGameEventType for (int region : discordGameEventType.getRegionIds()) { - assert !FROM_REGION.containsKey(region); - FROM_REGION.put(region, discordGameEventType); + regionMapBuilder.put(region, discordGameEventType); } } + FROM_REGION = regionMapBuilder.build(); + FROM_VARBITS = fromVarbitsBuilder.build(); } private String imageKey; diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/fishing/FishingSpot.java b/runelite-client/src/main/java/net/runelite/client/plugins/fishing/FishingSpot.java index 0221e7c32c..94f774ccc0 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/fishing/FishingSpot.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/fishing/FishingSpot.java @@ -24,7 +24,7 @@ */ package net.runelite.client.plugins.fishing; -import java.util.HashMap; +import com.google.common.collect.ImmutableMap; import java.util.Map; import lombok.Getter; import net.runelite.api.ItemID; @@ -160,7 +160,7 @@ enum FishingSpot FISHING_SPOT_8523); @Getter - private static final Map SPOTS = new HashMap<>(); + private static final Map SPOTS; private final String name; private final int fishSpriteId; @@ -168,15 +168,17 @@ enum FishingSpot static { - FishingSpot[] spots = values(); + ImmutableMap.Builder builder = new ImmutableMap.Builder<>(); - for (FishingSpot spot : spots) + for (FishingSpot spot : values()) { for (int spotId : spot.getIds()) { - SPOTS.put(spotId, spot); + builder.put(spotId, spot); } } + + SPOTS = builder.build(); } FishingSpot(String spot, int fishSpriteId, int... ids) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/implings/Impling.java b/runelite-client/src/main/java/net/runelite/client/plugins/implings/Impling.java index 0273b5da04..473fad2c23 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/implings/Impling.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/implings/Impling.java @@ -24,7 +24,7 @@ */ package net.runelite.client.plugins.implings; -import java.util.HashMap; +import com.google.common.collect.ImmutableMap; import java.util.Map; import lombok.AllArgsConstructor; import lombok.Getter; @@ -70,14 +70,18 @@ enum Impling private ImplingType implingType; private final int npcId; - private static final Map IMPLINGS = new HashMap<>(); + private static final Map IMPLINGS; static { + ImmutableMap.Builder builder = new ImmutableMap.Builder<>(); + for (Impling impling : values()) { - IMPLINGS.put(impling.npcId, impling); + builder.put(impling.npcId, impling); } + + IMPLINGS = builder.build(); } static Impling findImpling(int npcId) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/itemcharges/ItemWithCharge.java b/runelite-client/src/main/java/net/runelite/client/plugins/itemcharges/ItemWithCharge.java index 10f905aff4..f696097817 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/itemcharges/ItemWithCharge.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/itemcharges/ItemWithCharge.java @@ -24,13 +24,19 @@ */ package net.runelite.client.plugins.itemcharges; -import java.util.HashMap; +import com.google.common.collect.ImmutableMap; import java.util.Map; import javax.annotation.Nullable; import lombok.AllArgsConstructor; import lombok.Getter; import static net.runelite.api.ItemID.*; -import static net.runelite.client.plugins.itemcharges.ItemChargeType.*; +import static net.runelite.client.plugins.itemcharges.ItemChargeType.ABYSSAL_BRACELET; +import static net.runelite.client.plugins.itemcharges.ItemChargeType.BELLOWS; +import static net.runelite.client.plugins.itemcharges.ItemChargeType.FUNGICIDE_SPRAY; +import static net.runelite.client.plugins.itemcharges.ItemChargeType.IMPBOX; +import static net.runelite.client.plugins.itemcharges.ItemChargeType.TELEPORT; +import static net.runelite.client.plugins.itemcharges.ItemChargeType.WATERCAN; +import static net.runelite.client.plugins.itemcharges.ItemChargeType.WATERSKIN; @AllArgsConstructor @Getter @@ -168,14 +174,18 @@ enum ItemWithCharge private final int id; private final int charges; - private static final Map ID_MAP = new HashMap<>(); + private static final Map ID_MAP; static { + ImmutableMap.Builder builder = new ImmutableMap.Builder<>(); + for (ItemWithCharge itemCharge : values()) { - ID_MAP.put(itemCharge.getId(), itemCharge); + builder.put(itemCharge.getId(), itemCharge); } + + ID_MAP = builder.build(); } @Nullable diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/itemidentification/ItemIdentification.java b/runelite-client/src/main/java/net/runelite/client/plugins/itemidentification/ItemIdentification.java index 8ef3efcf8b..622ab1c04e 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/itemidentification/ItemIdentification.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/itemidentification/ItemIdentification.java @@ -24,7 +24,7 @@ */ package net.runelite.client.plugins.itemidentification; -import java.util.HashMap; +import com.google.common.collect.ImmutableMap; import java.util.Map; import net.runelite.api.ItemID; @@ -100,17 +100,21 @@ enum ItemIdentification this.itemIDs = ids; } - private static final Map itemIdentifications = new HashMap<>(); + private static final Map itemIdentifications; static { + ImmutableMap.Builder builder = new ImmutableMap.Builder<>(); + for (ItemIdentification i : values()) { for (int id : i.itemIDs) { - itemIdentifications.put(id, i); + builder.put(id, i); } } + + itemIdentifications = builder.build(); } static ItemIdentification get(int id) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/poh/PohIcons.java b/runelite-client/src/main/java/net/runelite/client/plugins/poh/PohIcons.java index 1cde69a8ea..656cf85716 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/poh/PohIcons.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/poh/PohIcons.java @@ -24,12 +24,22 @@ */ package net.runelite.client.plugins.poh; +import com.google.common.collect.ImmutableMap; import java.awt.image.BufferedImage; -import java.util.HashMap; import java.util.Map; import lombok.Getter; +import static net.runelite.api.NullObjectID.NULL_13615; +import static net.runelite.api.NullObjectID.NULL_13618; +import static net.runelite.api.NullObjectID.NULL_13620; +import static net.runelite.api.NullObjectID.NULL_13622; +import static net.runelite.api.NullObjectID.NULL_13625; +import static net.runelite.api.NullObjectID.NULL_13627; +import static net.runelite.api.NullObjectID.NULL_13629; +import static net.runelite.api.NullObjectID.NULL_13632; +import static net.runelite.api.NullObjectID.NULL_13634; +import static net.runelite.api.NullObjectID.NULL_29228; +import static net.runelite.api.NullObjectID.NULL_29229; import static net.runelite.api.ObjectID.*; -import static net.runelite.api.NullObjectID.*; import net.runelite.client.util.ImageUtil; public enum PohIcons @@ -56,7 +66,7 @@ public enum PohIcons ALTAR("altar", ALTAR_13179, ALTAR_13180, ALTAR_13181, ALTAR_13182, ALTAR_13183, ALTAR_13184, ALTAR_13185, ALTAR_13186, ALTAR_13187, ALTAR_13188, ALTAR_13189, ALTAR_13190, ALTAR_13191, ALTAR_13192, ALTAR_13193, ALTAR_13194, - ALTAR_13194, ALTAR_13196, ALTAR_13197, ALTAR_13198, ALTAR_13199 + ALTAR_13196, ALTAR_13197, ALTAR_13198, ALTAR_13199 ), POOLS("pool", POOL_OF_RESTORATION, POOL_OF_REVITALISATION, POOL_OF_REJUVENATION, FANCY_REJUVENATION_POOL, ORNATE_REJUVENATION_POOL), GLORY("glory", AMULET_OF_GLORY), @@ -83,7 +93,7 @@ public enum PohIcons DIGSITE_PENDANT, DIGSITE_PENDANT_33417, DIGSITE_PENDANT_33418, DIGSITE_PENDANT_33420 ); - private static final Map minimapIcons = new HashMap<>(); + private static final Map minimapIcons; @Getter private final String imageResource; @@ -94,15 +104,17 @@ public enum PohIcons static { - PohIcons[] icons = values(); + ImmutableMap.Builder builder = new ImmutableMap.Builder<>(); - for (PohIcons icon : icons) + for (PohIcons icon : values()) { for (Integer spotId : icon.getIds()) { - minimapIcons.put(spotId, icon); + builder.put(spotId, icon); } } + + minimapIcons = builder.build(); } PohIcons(String imageResource, int... ids) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/prayer/PrayerItems.java b/runelite-client/src/main/java/net/runelite/client/plugins/prayer/PrayerItems.java index 24ffbc5a56..d07ff8cf6c 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/prayer/PrayerItems.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/prayer/PrayerItems.java @@ -24,7 +24,7 @@ */ package net.runelite.client.plugins.prayer; -import java.util.HashMap; +import com.google.common.collect.ImmutableMap; import java.util.Map; import lombok.AllArgsConstructor; import lombok.Getter; @@ -453,17 +453,19 @@ enum PrayerItems DAMAGED_BOOK_3841(ItemID.DAMAGED_BOOK_3841, 5), FALADOR_SHIELD_4(ItemID.FALADOR_SHIELD_4, 5); - private static final Map prayerBonuses = new HashMap<>(); + private static final Map prayerBonuses; private final int itemId; private final int prayerBonus; static { + ImmutableMap.Builder builder = new ImmutableMap.Builder<>(); for (PrayerItems item : values()) { - prayerBonuses.put(item.getItemId(), item.getPrayerBonus()); + builder.put(item.getItemId(), item.getPrayerBonus()); } + prayerBonuses = builder.build(); } static int getItemPrayerBonus(int itemId) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/prayer/PrayerRestoreType.java b/runelite-client/src/main/java/net/runelite/client/plugins/prayer/PrayerRestoreType.java index 2ef3c1a46f..d30b790a9e 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/prayer/PrayerRestoreType.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/prayer/PrayerRestoreType.java @@ -24,7 +24,7 @@ */ package net.runelite.client.plugins.prayer; -import java.util.HashMap; +import com.google.common.collect.ImmutableMap; import java.util.Map; import net.runelite.api.ItemID; @@ -36,7 +36,7 @@ enum PrayerRestoreType HOLYWRENCH(ItemID.PRAYER_CAPE, ItemID.PRAYER_CAPET, ItemID.PRAYER_CAPE_10643, ItemID.MAX_CAPE, ItemID.MAX_CAPE_13282, ItemID.MAX_CAPE_13342, ItemID.HOLY_WRENCH, ItemID.RING_OF_THE_GODS_I); - private static final Map prayerRestores = new HashMap<>(); + private static final Map prayerRestores; private final int[] items; @@ -47,13 +47,15 @@ enum PrayerRestoreType static { + ImmutableMap.Builder builder = new ImmutableMap.Builder<>(); for (PrayerRestoreType prayerRestoreType : values()) { for (int itemId : prayerRestoreType.items) { - prayerRestores.put(itemId, prayerRestoreType); + builder.put(itemId, prayerRestoreType); } } + prayerRestores = builder.build(); } static PrayerRestoreType getType(final int itemId) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/puzzlesolver/VarrockMuseumAnswer.java b/runelite-client/src/main/java/net/runelite/client/plugins/puzzlesolver/VarrockMuseumAnswer.java index e574dd1023..0e4307d550 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/puzzlesolver/VarrockMuseumAnswer.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/puzzlesolver/VarrockMuseumAnswer.java @@ -25,7 +25,7 @@ */ package net.runelite.client.plugins.puzzlesolver; -import java.util.HashMap; +import com.google.common.collect.ImmutableMap; import java.util.Map; import lombok.Getter; import lombok.RequiredArgsConstructor; @@ -135,14 +135,18 @@ enum VarrockMuseumAnswer LEECH_5("What is special about Morytanian leeches?", "They attack by jumping."), LEECH_6("How does a leech change when it feeds?", "It doubles in size."); - private static final Map MATCHES = new HashMap<>(); + private static final Map MATCHES; static { + ImmutableMap.Builder builder = new ImmutableMap.Builder<>(); + for (VarrockMuseumAnswer varrockMuseumAnswer : VarrockMuseumAnswer.values()) { - MATCHES.put(varrockMuseumAnswer.question, varrockMuseumAnswer.answer); + builder.put(varrockMuseumAnswer.question, varrockMuseumAnswer.answer); } + + MATCHES = builder.build(); } private final String question; diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/runecraft/AbyssRifts.java b/runelite-client/src/main/java/net/runelite/client/plugins/runecraft/AbyssRifts.java index 60f02d5080..1ecedafe00 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/runecraft/AbyssRifts.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/runecraft/AbyssRifts.java @@ -24,7 +24,7 @@ */ package net.runelite.client.plugins.runecraft; -import java.util.HashMap; +import com.google.common.collect.ImmutableMap; import java.util.Map; import lombok.Getter; import static net.runelite.api.ItemID.AIR_RUNE; @@ -64,14 +64,18 @@ public enum AbyssRifts @Getter private final int itemId; - private static final Map rifts = new HashMap<>(); + private static final Map rifts; static { + ImmutableMap.Builder builder = new ImmutableMap.Builder<>(); + for (AbyssRifts s : values()) { - rifts.put(s.getObjectId(), s); + builder.put(s.getObjectId(), s); } + + rifts = builder.build(); } AbyssRifts(int objectId, int itemId) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/runepouch/Runes.java b/runelite-client/src/main/java/net/runelite/client/plugins/runepouch/Runes.java index 26dd1148a9..b5aebe9bf6 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/runepouch/Runes.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/runepouch/Runes.java @@ -25,8 +25,8 @@ package net.runelite.client.plugins.runepouch; +import com.google.common.collect.ImmutableMap; import java.awt.image.BufferedImage; -import java.util.HashMap; import java.util.Map; import lombok.Getter; import lombok.Setter; @@ -85,14 +85,16 @@ public enum Runes @Setter private BufferedImage image; - private static final Map runes = new HashMap<>(); + private static final Map runes; static { + ImmutableMap.Builder builder = new ImmutableMap.Builder<>(); for (Runes rune : values()) { - runes.put(rune.getId(), rune); + builder.put(rune.getId(), rune); } + runes = builder.build(); } Runes(int id, int itemId) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/slayer/Task.java b/runelite-client/src/main/java/net/runelite/client/plugins/slayer/Task.java index 69725f6d1b..5ba47383e1 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/slayer/Task.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/slayer/Task.java @@ -26,7 +26,7 @@ package net.runelite.client.plugins.slayer; import com.google.common.base.Preconditions; -import java.util.HashMap; +import com.google.common.collect.ImmutableMap; import java.util.Map; import lombok.Getter; import net.runelite.api.ItemID; @@ -174,7 +174,7 @@ enum Task ZUK("TzKal-Zuk", ItemID.TZREKZUK); // - private static final Map tasks = new HashMap<>(); + private static final Map tasks; private final String name; private final int itemSpriteId; @@ -184,10 +184,14 @@ enum Task static { + ImmutableMap.Builder builder = new ImmutableMap.Builder<>(); + for (Task task : values()) { - tasks.put(task.getName().toLowerCase(), task); + builder.put(task.getName().toLowerCase(), task); } + + tasks = builder.build(); } Task(String name, int itemSpriteId, String... targetNames) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/tithefarm/TitheFarmPlantType.java b/runelite-client/src/main/java/net/runelite/client/plugins/tithefarm/TitheFarmPlantType.java index 413838c144..04a48e6eb3 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/tithefarm/TitheFarmPlantType.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/tithefarm/TitheFarmPlantType.java @@ -24,7 +24,7 @@ */ package net.runelite.client.plugins.tithefarm; -import java.util.HashMap; +import com.google.common.collect.ImmutableMap; import java.util.Map; import lombok.Getter; import net.runelite.api.ObjectID; @@ -60,19 +60,21 @@ public enum TitheFarmPlantType @Getter private final int[] objectIds; - private static final Map plantTypes = new HashMap<>(); + private static final Map plantTypes; static { - TitheFarmPlantType[] types = values(); + ImmutableMap.Builder builder = new ImmutableMap.Builder<>(); - for (TitheFarmPlantType type : types) + for (TitheFarmPlantType type : values()) { for (int spotId : type.getObjectIds()) { - plantTypes.put(spotId, type); + builder.put(spotId, type); } } + + plantTypes = builder.build(); } TitheFarmPlantType(String name, int baseId, int... objectIds) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/woodcutting/Axe.java b/runelite-client/src/main/java/net/runelite/client/plugins/woodcutting/Axe.java index 80b4dc7b92..7b8a5c5f4e 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/woodcutting/Axe.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/woodcutting/Axe.java @@ -24,7 +24,7 @@ */ package net.runelite.client.plugins.woodcutting; -import java.util.HashMap; +import com.google.common.collect.ImmutableMap; import java.util.Map; import lombok.AllArgsConstructor; import lombok.Getter; @@ -67,14 +67,18 @@ enum Axe private final Integer animId; private final Integer itemId; - private static final Map AXE_ANIM_IDS = new HashMap<>(); + private static final Map AXE_ANIM_IDS; static { + ImmutableMap.Builder builder = new ImmutableMap.Builder<>(); + for (Axe axe : values()) { - AXE_ANIM_IDS.put(axe.animId, axe); + builder.put(axe.animId, axe); } + + AXE_ANIM_IDS = builder.build(); } static Axe findAxeByAnimId(int animId) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/woodcutting/Tree.java b/runelite-client/src/main/java/net/runelite/client/plugins/woodcutting/Tree.java index 021ce9da9f..befc78df8c 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/woodcutting/Tree.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/woodcutting/Tree.java @@ -24,7 +24,7 @@ */ package net.runelite.client.plugins.woodcutting; -import java.util.HashMap; +import com.google.common.collect.ImmutableMap; import java.util.Map; import lombok.Getter; import static net.runelite.api.ObjectID.REDWOOD; @@ -42,17 +42,21 @@ enum Tree this.treeIds = treeIds; } - private static final Map TREES = new HashMap<>(); + private static final Map TREES; static { + ImmutableMap.Builder builder = new ImmutableMap.Builder<>(); + for (Tree tree : values()) { for (int treeId : tree.treeIds) { - TREES.put(treeId, tree); + builder.put(treeId, tree); } } + + TREES = builder.build(); } static Tree findTree(int objectId)