mirror of
https://github.com/Sollace/Unicopia.git
synced 2024-11-28 07:37:58 +01:00
42 lines
2.5 KiB
Java
42 lines
2.5 KiB
Java
package com.minelittlepony.unicopia.client;
|
|
|
|
import com.minelittlepony.unicopia.UEntities;
|
|
import com.minelittlepony.unicopia.client.particle.ChangelingMagicParticle;
|
|
import com.minelittlepony.unicopia.client.particle.DiskParticle;
|
|
import com.minelittlepony.unicopia.client.particle.MagicParticle;
|
|
import com.minelittlepony.unicopia.client.particle.RainboomParticle;
|
|
import com.minelittlepony.unicopia.client.particle.RainbowTrailParticle;
|
|
import com.minelittlepony.unicopia.client.particle.RaindropsParticle;
|
|
import com.minelittlepony.unicopia.client.particle.SphereParticle;
|
|
import com.minelittlepony.unicopia.particle.UParticles;
|
|
|
|
import net.fabricmc.fabric.api.client.particle.v1.ParticleFactoryRegistry;
|
|
import net.fabricmc.fabric.api.client.particle.v1.ParticleFactoryRegistry.PendingParticleFactory;
|
|
import net.fabricmc.fabric.api.client.rendereregistry.v1.EntityRendererRegistry;
|
|
import net.minecraft.client.particle.Particle;
|
|
import net.minecraft.client.particle.SpriteProvider;
|
|
import net.minecraft.client.render.entity.FlyingItemEntityRenderer;
|
|
import net.minecraft.client.world.ClientWorld;
|
|
import net.minecraft.particle.ParticleEffect;
|
|
|
|
public interface URenderers {
|
|
static void bootstrap() {
|
|
ParticleFactoryRegistry.getInstance().register(UParticles.UNICORN_MAGIC, createFactory(MagicParticle::new));
|
|
ParticleFactoryRegistry.getInstance().register(UParticles.CHANGELING_MAGIC, createFactory(ChangelingMagicParticle::new));
|
|
ParticleFactoryRegistry.getInstance().register(UParticles.RAIN_DROPS, createFactory(RaindropsParticle::new));
|
|
ParticleFactoryRegistry.getInstance().register(UParticles.RAINBOOM_RING, RainboomParticle::new);
|
|
ParticleFactoryRegistry.getInstance().register(UParticles.RAINBOOM_TRAIL, RainbowTrailParticle::new);
|
|
ParticleFactoryRegistry.getInstance().register(UParticles.SPHERE, SphereParticle::new);
|
|
ParticleFactoryRegistry.getInstance().register(UParticles.DISK, DiskParticle::new);
|
|
|
|
EntityRendererRegistry.INSTANCE.register(UEntities.THROWN_ITEM, (manager, context) -> new FlyingItemEntityRenderer<>(manager, context.getItemRenderer()));
|
|
}
|
|
|
|
static <T extends ParticleEffect> PendingParticleFactory<T> createFactory(ParticleSupplier<T> supplier) {
|
|
return provider -> (effect, world, x, y, z, dx, dy, dz) -> supplier.get(provider, world, x, y, z, dx, dy, dz);
|
|
}
|
|
|
|
interface ParticleSupplier<T extends ParticleEffect> {
|
|
Particle get(SpriteProvider provider, ClientWorld world, double x, double y, double z, double dx, double dy, double dz);
|
|
}
|
|
}
|