From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Sceri Date: Fri, 14 May 2021 19:06:51 +0500 Subject: [PATCH] Fix CraftPotionBrewer cache diff --git a/src/main/java/org/bukkit/craftbukkit/potion/CraftPotionBrewer.java b/src/main/java/org/bukkit/craftbukkit/potion/CraftPotionBrewer.java index 1e4bc0d9f9d2e45157929af685f116988cbb8c03..8fdc9a3bb2f1b6bdc6c2c96f8ade7e9cd88ea4e0 100644 --- a/src/main/java/org/bukkit/craftbukkit/potion/CraftPotionBrewer.java +++ b/src/main/java/org/bukkit/craftbukkit/potion/CraftPotionBrewer.java @@ -15,12 +15,18 @@ import org.bukkit.potion.PotionEffectType; import org.bukkit.potion.PotionType; public class CraftPotionBrewer implements PotionBrewer { - private static final Map> cache = Maps.newHashMap(); + private static final Map> cache = Maps.newHashMap(); // Paper @Override public Collection getEffects(PotionType damage, boolean upgraded, boolean extended) { - if (CraftPotionBrewer.cache.containsKey(damage)) - return CraftPotionBrewer.cache.get(damage); + // Paper start + int key = damage.ordinal() << 2; + key |= (upgraded ? 1 : 0) << 1; + key |= extended ? 1 : 0; + + if (CraftPotionBrewer.cache.containsKey(key)) + return CraftPotionBrewer.cache.get(key); + // Paper end List mcEffects = Potion.byName(CraftPotionUtil.fromBukkit(new PotionData(damage, extended, upgraded))).getEffects(); @@ -29,9 +35,9 @@ public class CraftPotionBrewer implements PotionBrewer { builder.add(CraftPotionUtil.toBukkit(effect)); } - CraftPotionBrewer.cache.put(damage, builder.build()); + CraftPotionBrewer.cache.put(key, builder.build()); // Paper - return CraftPotionBrewer.cache.get(damage); + return CraftPotionBrewer.cache.get(key); // Paper } @Override