--- a/net/minecraft/world/effect/MobEffect.java
+++ b/net/minecraft/world/effect/MobEffect.java
@@ -40,7 +_,7 @@
     public static final Codec<Holder<MobEffect>> CODEC = BuiltInRegistries.MOB_EFFECT.holderByNameCodec();
     public static final StreamCodec<RegistryFriendlyByteBuf, Holder<MobEffect>> STREAM_CODEC = ByteBufCodecs.holderRegistry(Registries.MOB_EFFECT);
     private static final int AMBIENT_ALPHA = Mth.floor(38.25F);
-    private final Map<Holder<Attribute>, MobEffect.AttributeTemplate> attributeModifiers = new Object2ObjectOpenHashMap<>();
+    public final Map<Holder<Attribute>, MobEffect.AttributeTemplate> attributeModifiers = new Object2ObjectOpenHashMap<>();
     private final MobEffectCategory category;
     private final int color;
     private final Function<MobEffectInstance, ParticleOptions> particleFactory;
@@ -86,6 +_,7 @@
     public void applyInstantenousEffect(
         ServerLevel level, @Nullable Entity source, @Nullable Entity indirectSource, LivingEntity entity, int amplifier, double health
     ) {
+        if (!new io.papermc.paper.event.entity.EntityEffectTickEvent(entity.getBukkitLivingEntity(), org.bukkit.craftbukkit.potion.CraftPotionEffectType.minecraftToBukkit(this), amplifier).callEvent()) { return; } // Paper - Add EntityEffectTickEvent
         this.applyEffectTick(level, entity, amplifier);
     }
 
@@ -197,7 +_,7 @@
         return this.requiredFeatures;
     }
 
-    record AttributeTemplate(ResourceLocation id, double amount, AttributeModifier.Operation operation) {
+    public record AttributeTemplate(ResourceLocation id, double amount, AttributeModifier.Operation operation) {
         public AttributeModifier create(int level) {
             return new AttributeModifier(this.id, this.amount * (level + 1), this.operation);
         }
