BloodMagic/src/main/java/WayofTime/bloodmagic/proxy/ClientProxy.java

159 lines
6.8 KiB
Java
Raw Normal View History

package WayofTime.bloodmagic.proxy;
2017-08-16 04:30:48 +00:00
import WayofTime.bloodmagic.BloodMagic;
import WayofTime.bloodmagic.client.helper.ShaderHelper;
2018-03-08 03:43:00 +00:00
import WayofTime.bloodmagic.client.hud.Elements;
import WayofTime.bloodmagic.client.key.KeyBindings;
2017-08-16 04:30:48 +00:00
import WayofTime.bloodmagic.client.render.LayerBloodElytra;
import WayofTime.bloodmagic.client.render.block.*;
2017-08-16 04:30:48 +00:00
import WayofTime.bloodmagic.client.render.entity.*;
import WayofTime.bloodmagic.core.RegistrarBloodMagicItems;
import WayofTime.bloodmagic.entity.mob.*;
import WayofTime.bloodmagic.entity.projectile.EntityBloodLight;
import WayofTime.bloodmagic.entity.projectile.EntityMeteor;
import WayofTime.bloodmagic.entity.projectile.EntitySentientArrow;
import WayofTime.bloodmagic.entity.projectile.EntitySoulSnare;
2018-03-23 23:42:18 +00:00
import WayofTime.bloodmagic.item.types.AlchemicVialType;
2018-03-08 03:43:00 +00:00
import WayofTime.bloodmagic.soul.DemonWillHolder;
import WayofTime.bloodmagic.tile.*;
2017-08-16 04:30:48 +00:00
import WayofTime.bloodmagic.tile.routing.TileRoutingNode;
2018-03-18 00:18:20 +00:00
import WayofTime.bloodmagic.util.BMLog;
2018-03-08 03:43:00 +00:00
import WayofTime.bloodmagic.util.Constants;
2017-08-16 04:30:48 +00:00
import com.google.common.collect.ImmutableMap;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.entity.RenderManager;
import net.minecraft.client.renderer.entity.RenderPlayer;
import net.minecraft.potion.PotionUtils;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.client.model.ModelLoaderRegistry;
import net.minecraftforge.client.model.animation.AnimationTESR;
import net.minecraftforge.client.model.obj.OBJLoader;
import net.minecraftforge.common.animation.Event;
import net.minecraftforge.common.animation.ITimeValue;
import net.minecraftforge.common.model.animation.IAnimationStateMachine;
import net.minecraftforge.fml.client.registry.ClientRegistry;
import net.minecraftforge.fml.client.registry.RenderingRegistry;
import net.minecraftforge.fml.common.ObfuscationReflectionHelper;
2017-08-16 04:30:48 +00:00
import java.awt.Color;
import java.util.Map;
public class ClientProxy extends CommonProxy
{
public static DemonWillHolder currentAura = new DemonWillHolder();
@Override
public void preInit()
{
super.preInit();
OBJLoader.INSTANCE.addDomain(BloodMagic.MODID);
2016-01-10 06:05:03 +00:00
ClientRegistry.bindTileEntitySpecialRenderer(TileInversionPillar.class, new AnimationTESR<TileInversionPillar>()
{
@Override
public void handleEvents(TileInversionPillar chest, float time, Iterable<Event> pastEvents)
{
chest.handleEvents(time, pastEvents);
}
});
ClientRegistry.bindTileEntitySpecialRenderer(TileAlchemyArray.class, new RenderAlchemyArray());
2016-01-01 14:03:21 +00:00
ClientRegistry.bindTileEntitySpecialRenderer(TileAltar.class, new RenderAltar());
ClientRegistry.bindTileEntitySpecialRenderer(TileRoutingNode.class, new RenderItemRoutingNode());
ClientRegistry.bindTileEntitySpecialRenderer(TileDemonCrucible.class, new RenderDemonCrucible());
ClientRegistry.bindTileEntitySpecialRenderer(TileMimic.class, new RenderMimic());
ClientRegistry.bindTileEntitySpecialRenderer(TileBloodTank.class, new RenderBloodTank());
// Initialize key-binds during startup so they load correctly
for (KeyBindings key : KeyBindings.values())
key.getKey();
}
@Override
public void registerRenderers()
{
RenderingRegistry.registerEntityRenderingHandler(EntitySoulSnare.class, new SoulSnareRenderFactory());
RenderingRegistry.registerEntityRenderingHandler(EntitySentientArrow.class, new SentientArrowRenderFactory());
RenderingRegistry.registerEntityRenderingHandler(EntityBloodLight.class, new BloodLightRenderFactory());
2016-07-13 21:18:34 +00:00
RenderingRegistry.registerEntityRenderingHandler(EntityMeteor.class, new MeteorRenderFactory());
RenderingRegistry.registerEntityRenderingHandler(EntitySentientSpecter.class, new SentientSpecterRenderFactory());
RenderingRegistry.registerEntityRenderingHandler(EntityMimic.class, new MimicRenderFactory());
RenderingRegistry.registerEntityRenderingHandler(EntityCorruptedZombie.class, new CorruptedZombieRenderFactory());
RenderingRegistry.registerEntityRenderingHandler(EntityCorruptedSheep.class, new CorruptedSheepRenderFactory());
RenderingRegistry.registerEntityRenderingHandler(EntityCorruptedChicken.class, new CorruptedChickenRenderFactory());
RenderingRegistry.registerEntityRenderingHandler(EntityCorruptedSpider.class, new CorruptedSpiderRenderFactory());
2016-02-06 03:25:26 +00:00
2016-01-16 00:59:00 +00:00
ShaderHelper.init();
}
@Override
public void init()
{
super.init();
Minecraft.getMinecraft().getItemColors().registerItemColorHandler((stack, tintIndex) ->
{
try
{
2017-08-16 03:21:54 +00:00
if (stack.hasTagCompound() && stack.getTagCompound().hasKey(Constants.NBT.COLOR))
if (tintIndex == 1)
return Color.decode(stack.getTagCompound().getString(Constants.NBT.COLOR)).getRGB();
} catch (NumberFormatException e)
{
2016-06-24 01:43:27 +00:00
return -1;
}
2017-08-16 03:21:54 +00:00
return -1;
}, RegistrarBloodMagicItems.SIGIL_HOLDING);
Minecraft.getMinecraft().getItemColors().registerItemColorHandler((stack, tintIndex) ->
{
2017-08-16 03:21:54 +00:00
if (tintIndex != 0 && tintIndex != 2)
return -1;
2017-08-16 03:21:54 +00:00
if (stack.hasTagCompound() && stack.getTagCompound().hasKey("empty"))
return -1;
2017-08-16 03:21:54 +00:00
return PotionUtils.getPotionColorFromEffectList(PotionUtils.getEffectsFromStack(stack));
}, RegistrarBloodMagicItems.POTION_FLASK);
Minecraft.getMinecraft().getItemColors().registerItemColorHandler((stack, tintIndex) ->
{
// if (tintIndex != 0 && tintIndex != 2)
// return -1;
int variant = stack.getMetadata();
2018-03-23 23:42:18 +00:00
return AlchemicVialType.getColourForLayer(variant, tintIndex);
}, RegistrarBloodMagicItems.ALCHEMIC_VIAL);
addElytraLayer();
}
@Override
public void postInit()
{
Elements.registerElements();
}
private void addElytraLayer()
{
RenderManager renderManager = Minecraft.getMinecraft().getRenderManager();
try
{
2017-08-16 03:21:54 +00:00
Map<String, RenderPlayer> skinMap = ObfuscationReflectionHelper.getPrivateValue(RenderManager.class, renderManager, "skinMap", "field_178636_l");
skinMap.get("default").addLayer(new LayerBloodElytra(skinMap.get("default")));
skinMap.get("slim").addLayer(new LayerBloodElytra(skinMap.get("slim")));
2018-03-18 00:18:20 +00:00
BMLog.DEBUG.info("Elytra layer added");
} catch (Exception e)
{
2018-03-18 00:18:20 +00:00
BMLog.DEBUG.error("Failed to set custom Elytra Layer for Elytra Living Armour Upgrade: {}", e.getMessage());
}
}
@Override
public IAnimationStateMachine load(ResourceLocation location, ImmutableMap<String, ITimeValue> parameters)
{
return ModelLoaderRegistry.loadASM(location, parameters);
}
}