@@ -0,0 +1,1243 @@
+package org.spongepowered.common.mixin.api.mcp.particles;%0A%0Aimport net.minecraft.util.ResourceLocation;%0Aimport net.minecraft.util.registry.Registry;%0Aimport org.spongepowered.api.ResourceKey;%0Aimport org.spongepowered.api.effect.particle.ParticleOption;%0Aimport org.spongepowered.api.effect.particle.ParticleType;%0Aimport org.spongepowered.asm.mixin.Mixin;%0A%0Aimport java.util.Collections;%0Aimport java.util.Map;%0Aimport java.util.Optional;%0A%0A@Mixin(net.minecraft.particles.ParticleType.class)%0Apublic abstract class ParticleTypeMixin_API implements ParticleType %7B%0A%0A    private ResourceKey impl$key;%0A%0A    @Override%0A    public %3CV%3E Optional%3CV%3E getDefaultOption(ParticleOption%3CV%3E option) %7B%0A        // TODO%0A        return Optional.empty();%0A    %7D%0A%0A    @Override%0A    public Map%3CParticleOption%3C?%3E, Object%3E getDefaultOptions() %7B%0A        // TODO%0A        return Collections.emptyMap();%0A    %7D%0A%0A    @SuppressWarnings(%22ConstantConditions%22)%0A    @Override%0A    public ResourceKey getKey() %7B%0A        if (this.impl$key == null) %7B%0A            final ResourceLocation location = Registry.PARTICLE_TYPE.getKey((net.minecraft.particles.ParticleType%3C?%3E) (Object) this);%0A            this.impl$key = (ResourceKey) (Object) location;%0A        %7D%0A        return this.impl$key;%0A    %7D%0A%7D

Implement sponge ParticleType onto minecraft ParticleType for standard named particles.