NaturesAura/src/main/java/de/ellpeck/naturesaura/proxy/ClientProxy.java

110 lines
4.2 KiB
Java
Raw Normal View History

2018-10-13 20:35:18 +02:00
package de.ellpeck.naturesaura.proxy;
import de.ellpeck.naturesaura.events.ClientEvents;
import de.ellpeck.naturesaura.particles.ParticleHandler;
import de.ellpeck.naturesaura.particles.ParticleMagic;
import de.ellpeck.naturesaura.reg.IColorProvidingBlock;
import de.ellpeck.naturesaura.reg.IColorProvidingItem;
import de.ellpeck.naturesaura.reg.ITESRProvider;
import de.ellpeck.naturesaura.renderers.PlayerLayerTrinkets;
2018-10-13 20:35:18 +02:00
import net.minecraft.block.Block;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.block.model.ModelResourceLocation;
import net.minecraft.client.renderer.color.IItemColor;
import net.minecraft.client.renderer.color.ItemColors;
2018-10-20 22:13:00 +02:00
import net.minecraft.client.renderer.entity.RenderPlayer;
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
import net.minecraft.entity.Entity;
2018-10-13 20:35:18 +02:00
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.Tuple;
2018-10-13 20:35:18 +02:00
import net.minecraftforge.client.model.ModelLoader;
import net.minecraftforge.common.MinecraftForge;
2018-10-16 11:49:30 +02:00
import net.minecraftforge.fml.client.registry.ClientRegistry;
import net.minecraftforge.fml.client.registry.IRenderFactory;
import net.minecraftforge.fml.client.registry.RenderingRegistry;
2018-10-13 20:35:18 +02:00
import net.minecraftforge.fml.common.event.FMLInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPostInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
2018-10-20 22:13:00 +02:00
import java.util.Map;
import java.util.function.Supplier;
2018-10-20 22:13:00 +02:00
2018-10-13 20:35:18 +02:00
public class ClientProxy implements IProxy {
@Override
public void preInit(FMLPreInitializationEvent event) {
MinecraftForge.EVENT_BUS.register(new ClientEvents());
}
@Override
public void init(FMLInitializationEvent event) {
Map<String, RenderPlayer> skinMap = Minecraft.getMinecraft().getRenderManager().getSkinMap();
for (RenderPlayer render : new RenderPlayer[]{skinMap.get("default"), skinMap.get("slim")}) {
render.addLayer(new PlayerLayerTrinkets());
2018-10-20 22:13:00 +02:00
}
2018-10-13 20:35:18 +02:00
}
@Override
public void postInit(FMLPostInitializationEvent event) {
}
@Override
public void registerRenderer(ItemStack stack, ModelResourceLocation location) {
ModelLoader.setCustomModelResourceLocation(stack.getItem(), stack.getItemDamage(), location);
2018-10-13 20:35:18 +02:00
}
@Override
public void addColorProvidingItem(IColorProvidingItem item) {
2018-10-13 20:45:32 +02:00
ItemColors colors = Minecraft.getMinecraft().getItemColors();
2018-10-13 20:35:18 +02:00
IItemColor color = item.getItemColor();
if (item instanceof Item) {
2018-10-13 20:45:32 +02:00
colors.registerItemColorHandler(color, (Item) item);
2018-10-13 20:35:18 +02:00
} else if (item instanceof Block) {
2018-10-13 20:45:32 +02:00
colors.registerItemColorHandler(color, (Block) item);
2018-10-13 20:35:18 +02:00
}
}
@Override
public void addColorProvidingBlock(IColorProvidingBlock block) {
if (block instanceof Block) {
2018-10-13 20:45:32 +02:00
Minecraft.getMinecraft().getBlockColors().registerBlockColorHandler(block.getBlockColor(), (Block) block);
2018-10-13 20:35:18 +02:00
}
}
@Override
public void registerTESR(ITESRProvider provider) {
Tuple<Class, TileEntitySpecialRenderer> tesr = provider.getTESR();
ClientRegistry.bindTileEntitySpecialRenderer(tesr.getFirst(), tesr.getSecond());
}
@Override
public <T extends Entity> void registerEntityRenderer(Class<T> entityClass, Supplier<IRenderFactory<T>> renderFactory) {
RenderingRegistry.registerEntityRenderingHandler(entityClass, renderFactory.get());
}
2018-10-13 20:35:18 +02:00
@Override
2018-11-13 00:36:47 +01:00
public void spawnMagicParticle(double posX, double posY, double posZ, double motionX, double motionY, double motionZ, int color, float scale, int maxAge, float gravity, boolean collision, boolean fade) {
ParticleHandler.spawnParticle(() -> new ParticleMagic(Minecraft.getMinecraft().world,
posX, posY, posZ,
motionX, motionY, motionZ,
2019-02-19 17:23:03 +01:00
color, scale, maxAge, gravity, collision, fade), posX, posY, posZ);
}
@Override
public void setParticleDepth(boolean depth) {
ParticleHandler.depthEnabled = depth;
}
@Override
public void setParticleSpawnRange(int range) {
ParticleHandler.range = range;
2018-10-13 20:35:18 +02:00
}
@Override
public void scheduleTask(Runnable runnable) {
2018-10-13 20:45:32 +02:00
Minecraft.getMinecraft().addScheduledTask(runnable);
2018-10-13 20:35:18 +02:00
}
}