2018-10-13 20:35:18 +02:00
|
|
|
package de.ellpeck.naturesaura.proxy;
|
|
|
|
|
2020-09-22 15:08:38 +02:00
|
|
|
import de.ellpeck.naturesaura.NaturesAura;
|
2019-03-01 18:27:24 +01:00
|
|
|
import de.ellpeck.naturesaura.compat.Compat;
|
2018-10-13 20:35:18 +02:00
|
|
|
import de.ellpeck.naturesaura.events.ClientEvents;
|
2020-01-24 17:05:41 +01:00
|
|
|
import de.ellpeck.naturesaura.gui.GuiEnderCrate;
|
|
|
|
import de.ellpeck.naturesaura.gui.ModContainers;
|
2020-09-22 15:08:38 +02:00
|
|
|
import de.ellpeck.naturesaura.items.ItemColorChanger;
|
|
|
|
import de.ellpeck.naturesaura.items.ModItems;
|
2018-10-13 20:35:18 +02:00
|
|
|
import de.ellpeck.naturesaura.particles.ParticleHandler;
|
|
|
|
import de.ellpeck.naturesaura.particles.ParticleMagic;
|
2020-01-29 01:34:58 +01:00
|
|
|
import de.ellpeck.naturesaura.reg.*;
|
2018-10-26 12:03:42 +02:00
|
|
|
import de.ellpeck.naturesaura.renderers.PlayerLayerTrinkets;
|
2019-03-01 23:54:38 +01:00
|
|
|
import de.ellpeck.naturesaura.renderers.SupporterFancyHandler;
|
2018-10-13 20:35:18 +02:00
|
|
|
import net.minecraft.block.Block;
|
|
|
|
import net.minecraft.client.Minecraft;
|
2020-01-24 17:05:41 +01:00
|
|
|
import net.minecraft.client.gui.ScreenManager;
|
2020-01-29 01:34:58 +01:00
|
|
|
import net.minecraft.client.renderer.RenderTypeLookup;
|
2018-10-13 20:35:18 +02:00
|
|
|
import net.minecraft.client.renderer.color.IItemColor;
|
|
|
|
import net.minecraft.client.renderer.color.ItemColors;
|
2019-10-20 22:30:49 +02:00
|
|
|
import net.minecraft.client.renderer.entity.PlayerRenderer;
|
|
|
|
import net.minecraft.client.renderer.tileentity.TileEntityRenderer;
|
2020-01-28 18:08:56 +01:00
|
|
|
import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher;
|
2020-01-23 19:20:47 +01:00
|
|
|
import net.minecraft.entity.Entity;
|
2020-01-28 18:08:56 +01:00
|
|
|
import net.minecraft.entity.EntityType;
|
2018-10-13 20:35:18 +02:00
|
|
|
import net.minecraft.item.Item;
|
2020-09-22 15:08:38 +02:00
|
|
|
import net.minecraft.item.ItemModelsProperties;
|
2020-01-28 18:08:56 +01:00
|
|
|
import net.minecraft.tileentity.TileEntity;
|
|
|
|
import net.minecraft.tileentity.TileEntityType;
|
2020-09-22 15:08:38 +02:00
|
|
|
import net.minecraft.util.ResourceLocation;
|
2018-11-21 20:36:55 +01:00
|
|
|
import net.minecraft.util.Tuple;
|
2018-10-13 20:35:18 +02:00
|
|
|
import net.minecraftforge.common.MinecraftForge;
|
2018-10-16 11:49:30 +02:00
|
|
|
import net.minecraftforge.fml.client.registry.ClientRegistry;
|
2020-01-23 19:20:47 +01:00
|
|
|
import net.minecraftforge.fml.client.registry.IRenderFactory;
|
|
|
|
import net.minecraftforge.fml.client.registry.RenderingRegistry;
|
2019-11-04 19:08:49 +01:00
|
|
|
import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent;
|
2018-10-13 20:35:18 +02:00
|
|
|
|
2018-10-20 22:13:00 +02:00
|
|
|
import java.util.Map;
|
2020-01-28 18:08:56 +01:00
|
|
|
import java.util.function.Function;
|
2020-01-23 19:20:47 +01:00
|
|
|
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
|
2019-11-04 19:08:49 +01:00
|
|
|
public void preInit(FMLCommonSetupEvent event) {
|
2018-10-13 20:35:18 +02:00
|
|
|
MinecraftForge.EVENT_BUS.register(new ClientEvents());
|
2020-04-26 20:40:28 +02:00
|
|
|
Compat.setupClient();
|
2020-01-24 17:05:41 +01:00
|
|
|
ScreenManager.registerFactory(ModContainers.ENDER_CRATE, GuiEnderCrate::new);
|
|
|
|
ScreenManager.registerFactory(ModContainers.ENDER_ACCESS, GuiEnderCrate::new);
|
2020-09-22 15:08:38 +02:00
|
|
|
|
|
|
|
ItemModelsProperties.func_239418_a_(ModItems.COLOR_CHANGER, new ResourceLocation(NaturesAura.MOD_ID, "fill_mode"),
|
|
|
|
(stack, worldIn, entityIn) -> ItemColorChanger.isFillMode(stack) ? 1F : 0F);
|
|
|
|
ItemModelsProperties.func_239418_a_(ModItems.COLOR_CHANGER, new ResourceLocation(NaturesAura.MOD_ID, "has_color"),
|
|
|
|
(stack, worldIn, entityIn) -> ItemColorChanger.getStoredColor(stack) != null ? 1F : 0F);
|
2018-10-13 20:35:18 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
2019-11-04 19:08:49 +01:00
|
|
|
public void init(FMLCommonSetupEvent event) {
|
|
|
|
Map<String, PlayerRenderer> skinMap = Minecraft.getInstance().getRenderManager().getSkinMap();
|
2020-01-21 23:02:39 +01:00
|
|
|
for (PlayerRenderer render : new PlayerRenderer[]{skinMap.get("default"), skinMap.get("slim")})
|
|
|
|
render.addLayer(new PlayerLayerTrinkets(render));
|
2019-03-01 23:54:38 +01:00
|
|
|
new SupporterFancyHandler();
|
2018-10-13 20:35:18 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
2019-11-04 19:08:49 +01:00
|
|
|
public void postInit(FMLCommonSetupEvent event) {
|
2020-01-29 01:34:58 +01:00
|
|
|
for (IModItem item : ModRegistry.ALL_ITEMS) {
|
|
|
|
if (item instanceof ICustomRenderType)
|
|
|
|
RenderTypeLookup.setRenderLayer((Block) item, ((ICustomRenderType) item).getRenderType().get());
|
|
|
|
}
|
2018-10-13 20:35:18 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void addColorProvidingItem(IColorProvidingItem item) {
|
2019-11-04 19:08:49 +01:00
|
|
|
ItemColors colors = Minecraft.getInstance().getItemColors();
|
2018-10-13 20:35:18 +02:00
|
|
|
IItemColor color = item.getItemColor();
|
|
|
|
|
|
|
|
if (item instanceof Item) {
|
2019-11-04 19:08:49 +01:00
|
|
|
colors.register(color, (Item) item);
|
2018-10-13 20:35:18 +02:00
|
|
|
} else if (item instanceof Block) {
|
2019-11-04 19:08:49 +01:00
|
|
|
colors.register(color, (Block) item);
|
2018-10-13 20:35:18 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void addColorProvidingBlock(IColorProvidingBlock block) {
|
|
|
|
if (block instanceof Block) {
|
2019-11-04 19:08:49 +01:00
|
|
|
Minecraft.getInstance().getBlockColors().register(block.getBlockColor(), (Block) block);
|
2018-10-13 20:35:18 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2018-11-21 20:36:55 +01:00
|
|
|
@Override
|
|
|
|
public void registerTESR(ITESRProvider provider) {
|
2020-01-28 20:36:08 +01:00
|
|
|
Tuple<TileEntityType<TileEntity>, Supplier<Function<? super TileEntityRendererDispatcher, ? extends TileEntityRenderer<? super TileEntity>>>> tesr = provider.getTESR();
|
|
|
|
ClientRegistry.bindTileEntityRenderer(tesr.getA(), tesr.getB().get());
|
2018-11-21 20:36:55 +01:00
|
|
|
}
|
|
|
|
|
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) {
|
2019-11-04 19:08:49 +01:00
|
|
|
ParticleHandler.spawnParticle(() -> new ParticleMagic(Minecraft.getInstance().world,
|
2018-11-13 00:36:47 +01:00
|
|
|
posX, posY, posZ,
|
|
|
|
motionX, motionY, motionZ,
|
2020-12-04 14:15:34 +01:00
|
|
|
color, scale, maxAge, gravity, collision, fade, ParticleHandler.depthEnabled), posX, posY, posZ);
|
2019-02-19 17:23:03 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
@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
|
|
|
}
|
2020-01-23 19:20:47 +01:00
|
|
|
|
2020-02-28 15:36:12 +01:00
|
|
|
@Override
|
|
|
|
public void setParticleCulling(boolean cull) {
|
|
|
|
ParticleHandler.culling = cull;
|
|
|
|
}
|
|
|
|
|
2020-01-23 19:20:47 +01:00
|
|
|
@Override
|
2020-01-28 18:08:56 +01:00
|
|
|
public <T extends Entity> void registerEntityRenderer(EntityType<T> entityClass, Supplier<IRenderFactory<T>> renderFactory) {
|
2020-01-23 19:20:47 +01:00
|
|
|
RenderingRegistry.registerEntityRenderingHandler(entityClass, renderFactory.get());
|
|
|
|
}
|
|
|
|
|
2018-10-13 20:35:18 +02:00
|
|
|
}
|