private static final Map<ArmorMaterial, Supplier<MobEffectInstance>> MATERIAL_TO_EFFECT_MAP =
(new ImmutableMap.Builder<ArmorMaterial, MobEffectInstance>())
.put(ModArmourMaterials.PRISMARITE,
() -> new MobEffectInstance(ModEffects.PRISMARITE_SPEED.get(), 200, 1, true, true)).build();
You should change it to something like the above. And change the other code accordingly. I assume the map is only used at runtime?
That way it defers the registration retrieval and construction until you need it. And calling get() for the supplier in the map gives you a new MobEffectInstance every time.