Added hook to add entity spectator shader

This commit is contained in:
iLexiconn committed 2016-02-13 00:09:04 +01:00
1 parent 06130912c5
commit 776f5b91d5
4 files changed
+59 -20

No files matched your search

@@ -51,12 +51,7 @@ import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.BlockPos;
import net.minecraft.util.EnumChatFormatting;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.EnumWorldBlockLayer;
import net.minecraft.util.IRegistry;
import net.minecraft.util.MovingObjectPosition;
import net.minecraft.util.*;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import net.minecraft.world.biome.BiomeGenBase;
@@ -80,6 +75,7 @@ import net.minecraftforge.common.ForgeVersion;
import net.minecraftforge.common.ForgeVersion.Status;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.fml.client.FMLClientHandler;
import net.minecraftforge.fml.client.registry.ClientRegistry;
import net.minecraftforge.fml.common.FMLLog;
import org.apache.commons.lang3.tuple.Pair;
@@ -578,4 +574,13 @@ public class ForgeHooksClient
if(part.isPresent()) return Optional.absent();
return Optional.of(new TRSRTransformation(matrix));
}
public static void loadEntityShader(Class<? extends Entity> entityClass, EntityRenderer entityRenderer)
{
ResourceLocation shader = ClientRegistry.getEntityShader(entityClass);
if (shader != null)
{
entityRenderer.loadShader(shader);
}
}
}
@@ -12,6 +12,9 @@
package net.minecraftforge.fml.client.registry;
import com.google.common.collect.Maps;
import net.minecraft.entity.Entity;
import net.minecraft.util.ResourceLocation;
import org.apache.commons.lang3.ArrayUtils;
import net.minecraft.client.Minecraft;
@@ -21,8 +24,12 @@ import net.minecraft.client.settings.KeyBinding;
import net.minecraft.tileentity.TileEntity;
import net.minecraftforge.fml.common.registry.GameRegistry;
import java.util.Map;
public class ClientRegistry
{
private static Map<Class<? extends Entity>, ResourceLocation> entityShaderMap = Maps.newHashMap();
/**
*
* Utility method for registering a tile entity and it's renderer at once - generally you should register them separately
@@ -47,4 +54,21 @@ public class ClientRegistry
{
Minecraft.getMinecraft().gameSettings.keyBindings = ArrayUtils.add(Minecraft.getMinecraft().gameSettings.keyBindings, key);
}
/**
* Register a shader for an entity. This shader gets activated when a spectator begins spectating an entity.
* Vanilla examples of this are the green effect for creepers and the invert effect for endermans.
*
* @param entityClass
* @param shader
*/
public static void registerEntityShader(Class<? extends Entity> entityClass, ResourceLocation shader)
{
entityShaderMap.put(entityClass, shader);
}
public static ResourceLocation getEntityShader(Class<? extends Entity> entityClass)
{
return entityShaderMap.get(entityClass);
}
}