2015-11-02 20:39:44 +00:00
|
|
|
package WayofTime.bloodmagic.proxy;
|
2015-10-30 03:22:14 +00:00
|
|
|
|
2016-07-10 16:46:03 +00:00
|
|
|
import java.awt.Color;
|
|
|
|
|
|
|
|
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.entity.RenderManager;
|
|
|
|
import net.minecraft.client.renderer.entity.RenderPlayer;
|
|
|
|
import net.minecraft.item.Item;
|
|
|
|
import net.minecraft.item.ItemStack;
|
2016-07-27 00:55:15 +00:00
|
|
|
import net.minecraft.potion.PotionUtils;
|
2016-07-10 16:46:03 +00:00
|
|
|
import net.minecraft.util.ResourceLocation;
|
|
|
|
import net.minecraftforge.client.model.ModelLoader;
|
|
|
|
import net.minecraftforge.client.model.obj.OBJLoader;
|
|
|
|
import net.minecraftforge.fml.client.registry.ClientRegistry;
|
|
|
|
import net.minecraftforge.fml.client.registry.RenderingRegistry;
|
|
|
|
import net.minecraftforge.fml.common.ObfuscationReflectionHelper;
|
|
|
|
|
|
|
|
import org.apache.commons.lang3.tuple.Pair;
|
|
|
|
|
2016-05-31 02:48:28 +00:00
|
|
|
import WayofTime.bloodmagic.BloodMagic;
|
2016-03-17 20:00:44 +00:00
|
|
|
import WayofTime.bloodmagic.api.Constants;
|
2016-07-10 19:27:26 +00:00
|
|
|
import WayofTime.bloodmagic.api.soul.DemonWillHolder;
|
2016-03-16 05:48:01 +00:00
|
|
|
import WayofTime.bloodmagic.client.IMeshProvider;
|
|
|
|
import WayofTime.bloodmagic.client.IVariantProvider;
|
2016-01-15 20:06:03 +00:00
|
|
|
import WayofTime.bloodmagic.client.helper.ShaderHelper;
|
2016-07-10 16:46:03 +00:00
|
|
|
import WayofTime.bloodmagic.client.hud.HUDElementDemonWillAura;
|
2016-06-17 01:12:20 +00:00
|
|
|
import WayofTime.bloodmagic.client.hud.HUDElementHolding;
|
2016-07-10 16:46:03 +00:00
|
|
|
import WayofTime.bloodmagic.client.render.LayerBloodElytra;
|
|
|
|
import WayofTime.bloodmagic.client.render.RenderAlchemyArray;
|
|
|
|
import WayofTime.bloodmagic.client.render.RenderAltar;
|
|
|
|
import WayofTime.bloodmagic.client.render.RenderDemonCrucible;
|
|
|
|
import WayofTime.bloodmagic.client.render.RenderItemRoutingNode;
|
2016-08-22 23:55:15 +00:00
|
|
|
import WayofTime.bloodmagic.client.render.block.RenderMimic;
|
2016-01-31 19:31:16 +00:00
|
|
|
import WayofTime.bloodmagic.client.render.entity.BloodLightRenderFactory;
|
2016-07-13 21:18:34 +00:00
|
|
|
import WayofTime.bloodmagic.client.render.entity.MeteorRenderFactory;
|
2016-08-22 18:22:18 +00:00
|
|
|
import WayofTime.bloodmagic.client.render.entity.MimicRenderFactory;
|
2016-01-09 15:47:36 +00:00
|
|
|
import WayofTime.bloodmagic.client.render.entity.SentientArrowRenderFactory;
|
2016-08-14 18:14:25 +00:00
|
|
|
import WayofTime.bloodmagic.client.render.entity.SentientSpecterRenderFactory;
|
2016-01-08 19:56:36 +00:00
|
|
|
import WayofTime.bloodmagic.client.render.entity.SoulSnareRenderFactory;
|
2016-08-22 18:22:18 +00:00
|
|
|
import WayofTime.bloodmagic.entity.mob.EntityMimic;
|
2016-08-14 18:14:25 +00:00
|
|
|
import WayofTime.bloodmagic.entity.mob.EntitySentientSpecter;
|
2016-01-31 19:31:16 +00:00
|
|
|
import WayofTime.bloodmagic.entity.projectile.EntityBloodLight;
|
2016-07-13 21:18:34 +00:00
|
|
|
import WayofTime.bloodmagic.entity.projectile.EntityMeteor;
|
2016-01-09 15:47:36 +00:00
|
|
|
import WayofTime.bloodmagic.entity.projectile.EntitySentientArrow;
|
2016-01-08 19:56:36 +00:00
|
|
|
import WayofTime.bloodmagic.entity.projectile.EntitySoulSnare;
|
2015-11-02 20:39:44 +00:00
|
|
|
import WayofTime.bloodmagic.registry.ModBlocks;
|
|
|
|
import WayofTime.bloodmagic.registry.ModItems;
|
2015-12-23 20:20:26 +00:00
|
|
|
import WayofTime.bloodmagic.tile.TileAlchemyArray;
|
2016-01-01 14:03:21 +00:00
|
|
|
import WayofTime.bloodmagic.tile.TileAltar;
|
2016-02-17 21:31:11 +00:00
|
|
|
import WayofTime.bloodmagic.tile.TileDemonCrucible;
|
2016-08-22 23:55:15 +00:00
|
|
|
import WayofTime.bloodmagic.tile.TileMimic;
|
2016-01-15 20:06:03 +00:00
|
|
|
import WayofTime.bloodmagic.tile.routing.TileRoutingNode;
|
2015-11-02 23:28:33 +00:00
|
|
|
import WayofTime.bloodmagic.util.helper.InventoryRenderHelper;
|
2016-02-17 21:31:11 +00:00
|
|
|
import WayofTime.bloodmagic.util.helper.InventoryRenderHelperV2;
|
2016-05-20 00:43:33 +00:00
|
|
|
|
2015-12-30 20:34:40 +00:00
|
|
|
public class ClientProxy extends CommonProxy
|
|
|
|
{
|
2016-07-10 19:27:26 +00:00
|
|
|
public static DemonWillHolder currentAura = new DemonWillHolder();
|
|
|
|
|
2015-12-28 21:43:26 +00:00
|
|
|
private InventoryRenderHelper renderHelper;
|
2016-02-10 03:07:56 +00:00
|
|
|
private InventoryRenderHelperV2 renderHelperV2;
|
2015-12-28 21:43:26 +00:00
|
|
|
|
|
|
|
@Override
|
2015-12-30 20:34:40 +00:00
|
|
|
public InventoryRenderHelper getRenderHelper()
|
|
|
|
{
|
2015-12-28 21:43:26 +00:00
|
|
|
return renderHelper;
|
|
|
|
}
|
|
|
|
|
2016-02-10 03:07:56 +00:00
|
|
|
@Override
|
|
|
|
public InventoryRenderHelperV2 getRenderHelperV2()
|
|
|
|
{
|
|
|
|
return renderHelperV2;
|
|
|
|
}
|
|
|
|
|
2015-10-30 03:22:14 +00:00
|
|
|
@Override
|
2015-12-30 20:34:40 +00:00
|
|
|
public void preInit()
|
|
|
|
{
|
2016-01-03 20:39:59 +00:00
|
|
|
super.preInit();
|
|
|
|
|
2015-12-28 21:43:26 +00:00
|
|
|
renderHelper = new InventoryRenderHelper(Constants.Mod.DOMAIN);
|
2016-02-10 03:07:56 +00:00
|
|
|
renderHelperV2 = new InventoryRenderHelperV2(Constants.Mod.DOMAIN);
|
2015-12-28 21:43:26 +00:00
|
|
|
|
2016-03-21 19:55:36 +00:00
|
|
|
OBJLoader.INSTANCE.addDomain(Constants.Mod.MODID);
|
2016-01-10 06:05:03 +00:00
|
|
|
|
2015-10-30 05:22:08 +00:00
|
|
|
ModBlocks.initRenders();
|
|
|
|
ModItems.initRenders();
|
2015-11-02 23:28:33 +00:00
|
|
|
|
2015-12-23 20:20:26 +00:00
|
|
|
ClientRegistry.bindTileEntitySpecialRenderer(TileAlchemyArray.class, new RenderAlchemyArray());
|
2016-01-01 14:03:21 +00:00
|
|
|
ClientRegistry.bindTileEntitySpecialRenderer(TileAltar.class, new RenderAltar());
|
2016-01-15 20:06:03 +00:00
|
|
|
ClientRegistry.bindTileEntitySpecialRenderer(TileRoutingNode.class, new RenderItemRoutingNode());
|
2016-02-17 21:31:11 +00:00
|
|
|
ClientRegistry.bindTileEntitySpecialRenderer(TileDemonCrucible.class, new RenderDemonCrucible());
|
2016-08-22 23:55:15 +00:00
|
|
|
ClientRegistry.bindTileEntitySpecialRenderer(TileMimic.class, new RenderMimic());
|
2015-10-30 03:22:14 +00:00
|
|
|
}
|
|
|
|
|
2016-01-08 19:56:36 +00:00
|
|
|
@Override
|
|
|
|
public void registerRenderers()
|
|
|
|
{
|
|
|
|
RenderingRegistry.registerEntityRenderingHandler(EntitySoulSnare.class, new SoulSnareRenderFactory());
|
2016-01-09 15:47:36 +00:00
|
|
|
RenderingRegistry.registerEntityRenderingHandler(EntitySentientArrow.class, new SentientArrowRenderFactory());
|
2016-01-31 19:31:16 +00:00
|
|
|
RenderingRegistry.registerEntityRenderingHandler(EntityBloodLight.class, new BloodLightRenderFactory());
|
2016-07-13 21:18:34 +00:00
|
|
|
RenderingRegistry.registerEntityRenderingHandler(EntityMeteor.class, new MeteorRenderFactory());
|
2016-08-14 18:14:25 +00:00
|
|
|
RenderingRegistry.registerEntityRenderingHandler(EntitySentientSpecter.class, new SentientSpecterRenderFactory());
|
2016-08-22 18:22:18 +00:00
|
|
|
RenderingRegistry.registerEntityRenderingHandler(EntityMimic.class, new MimicRenderFactory());
|
2016-02-06 03:25:26 +00:00
|
|
|
|
2016-01-16 00:59:00 +00:00
|
|
|
ShaderHelper.init();
|
2016-01-08 19:56:36 +00:00
|
|
|
}
|
|
|
|
|
2015-10-30 03:22:14 +00:00
|
|
|
@Override
|
2015-12-30 20:34:40 +00:00
|
|
|
public void init()
|
|
|
|
{
|
2016-06-24 01:43:27 +00:00
|
|
|
Minecraft.getMinecraft().getItemColors().registerItemColorHandler(new IItemColor()
|
|
|
|
{
|
|
|
|
@Override
|
|
|
|
public int getColorFromItemstack(ItemStack stack, int tintIndex)
|
|
|
|
{
|
|
|
|
try
|
|
|
|
{
|
|
|
|
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-09 23:59:11 +00:00
|
|
|
{
|
2016-06-24 01:43:27 +00:00
|
|
|
return -1;
|
|
|
|
}
|
|
|
|
return -1;
|
|
|
|
}
|
|
|
|
}, ModItems.sigilHolding);
|
2016-07-27 00:55:15 +00:00
|
|
|
Minecraft.getMinecraft().getItemColors().registerItemColorHandler(new IItemColor()
|
|
|
|
{
|
|
|
|
@Override
|
|
|
|
public int getColorFromItemstack(ItemStack stack, int tintIndex)
|
|
|
|
{
|
2016-07-27 17:25:25 +00:00
|
|
|
if (tintIndex != 0 && tintIndex != 2)
|
2016-07-27 00:55:15 +00:00
|
|
|
return -1;
|
|
|
|
|
2016-07-27 22:03:08 +00:00
|
|
|
return PotionUtils.getPotionColorFromEffectList(PotionUtils.getEffectsFromStack(stack));
|
2016-07-27 00:55:15 +00:00
|
|
|
}
|
|
|
|
}, ModItems.potionFlask);
|
2016-05-31 02:48:28 +00:00
|
|
|
|
|
|
|
addElytraLayer();
|
2015-10-30 03:22:14 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
2015-12-30 20:34:40 +00:00
|
|
|
public void postInit()
|
|
|
|
{
|
2016-06-17 01:12:20 +00:00
|
|
|
new HUDElementHolding();
|
2016-07-10 16:46:03 +00:00
|
|
|
new HUDElementDemonWillAura();
|
2015-10-30 03:22:14 +00:00
|
|
|
}
|
2016-03-16 05:48:01 +00:00
|
|
|
|
|
|
|
@Override
|
2016-03-16 22:41:06 +00:00
|
|
|
public void tryHandleBlockModel(Block block, String name)
|
|
|
|
{
|
|
|
|
if (block instanceof IVariantProvider)
|
|
|
|
{
|
2016-03-16 05:48:01 +00:00
|
|
|
IVariantProvider variantProvider = (IVariantProvider) block;
|
|
|
|
for (Pair<Integer, String> variant : variantProvider.getVariants())
|
|
|
|
ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(block), variant.getLeft(), new ModelResourceLocation(new ResourceLocation(Constants.Mod.MODID, name), variant.getRight()));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
2016-03-16 22:41:06 +00:00
|
|
|
public void tryHandleItemModel(Item item, String name)
|
|
|
|
{
|
|
|
|
if (item instanceof IMeshProvider)
|
|
|
|
{
|
2016-03-16 05:48:01 +00:00
|
|
|
IMeshProvider meshProvider = (IMeshProvider) item;
|
|
|
|
ModelLoader.setCustomMeshDefinition(item, meshProvider.getMeshDefinition());
|
2016-03-21 06:21:07 +00:00
|
|
|
ResourceLocation resourceLocation = meshProvider.getCustomLocation();
|
|
|
|
if (resourceLocation == null)
|
|
|
|
resourceLocation = new ResourceLocation(Constants.Mod.MODID, "item/" + name);
|
2016-03-16 05:48:01 +00:00
|
|
|
for (String variant : meshProvider.getVariants())
|
2016-03-21 06:21:07 +00:00
|
|
|
ModelLoader.registerItemVariants(item, new ModelResourceLocation(resourceLocation, variant));
|
2016-03-16 22:41:06 +00:00
|
|
|
} else if (item instanceof IVariantProvider)
|
|
|
|
{
|
2016-03-16 05:48:01 +00:00
|
|
|
IVariantProvider variantProvider = (IVariantProvider) item;
|
|
|
|
for (Pair<Integer, String> variant : variantProvider.getVariants())
|
|
|
|
ModelLoader.setCustomModelResourceLocation(item, variant.getLeft(), new ModelResourceLocation(new ResourceLocation(Constants.Mod.MODID, "item/" + name), variant.getRight()));
|
|
|
|
}
|
|
|
|
}
|
2016-05-31 02:48:28 +00:00
|
|
|
|
2016-06-24 01:43:27 +00:00
|
|
|
private void addElytraLayer()
|
|
|
|
{
|
2016-05-31 02:48:28 +00:00
|
|
|
RenderManager renderManager = Minecraft.getMinecraft().getRenderManager();
|
2016-06-24 01:43:27 +00:00
|
|
|
try
|
|
|
|
{
|
2016-05-31 23:14:15 +00:00
|
|
|
RenderPlayer renderPlayer = ObfuscationReflectionHelper.getPrivateValue(RenderManager.class, renderManager, "playerRenderer", "field_178637_m");
|
|
|
|
renderPlayer.addLayer(new LayerBloodElytra(renderPlayer));
|
|
|
|
BloodMagic.instance.getLogger().info("Elytra layer added");
|
2016-06-24 01:43:27 +00:00
|
|
|
} catch (Exception e)
|
|
|
|
{
|
2016-05-31 02:48:28 +00:00
|
|
|
BloodMagic.instance.getLogger().error("Failed to set custom Elytra Layer for Elytra Living Armour Upgrade.");
|
|
|
|
BloodMagic.instance.getLogger().error(e.getLocalizedMessage());
|
|
|
|
}
|
|
|
|
}
|
2015-10-30 03:22:14 +00:00
|
|
|
}
|