mirror of
https://github.com/MinecraftForge/MinecraftForge.git
synced 2026-11-12 08:17:35 +00:00
Added hook to add entity spectator shader
This commit is contained in:
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);
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user