Files
Wizardry/src/main/java/electroblob/wizardry/client/renderer/entity/RenderPossessingPlayer.java
T
2020-06-06 23:25:56 +01:00

42 lines
1.9 KiB
Java

package electroblob.wizardry.client.renderer.entity;
import electroblob.wizardry.spell.Possession;
import net.minecraft.client.renderer.entity.Render;
import net.minecraft.entity.EntityLiving;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraftforge.client.event.RenderPlayerEvent;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import net.minecraftforge.fml.relauncher.Side;
@Mod.EventBusSubscriber(Side.CLIENT)
public class RenderPossessingPlayer {
@SubscribeEvent
@SuppressWarnings("unchecked") // Can't check it due to type erasure
public static void onRenderPlayerPreEvent(RenderPlayerEvent.Pre event){
EntityPlayer player = event.getEntityPlayer();
EntityLiving possessee = Possession.getPossessee(player);
if(possessee != null){
// I reject your renderer and substitute my own!
Render<EntityLiving> renderer = (Render<EntityLiving>)event.getRenderer().getRenderManager().entityRenderMap.get(possessee.getClass());
float yaw = player.prevRotationYaw + (player.rotationYaw - player.prevRotationYaw) * event.getPartialRenderTick();
possessee.swingProgress = player.swingProgress;
possessee.prevSwingProgress = player.prevSwingProgress;
possessee.renderYawOffset = player.renderYawOffset;
possessee.prevRenderYawOffset = player.prevRenderYawOffset;
possessee.rotationYawHead = player.rotationYawHead;
possessee.prevRotationYawHead = player.prevRotationYawHead;
possessee.rotationPitch = player.rotationPitch;
possessee.prevRotationPitch = player.prevRotationPitch;
possessee.limbSwing = player.limbSwing;
possessee.limbSwingAmount = player.limbSwingAmount;
possessee.prevLimbSwingAmount = player.prevLimbSwingAmount;
renderer.doRender(possessee, event.getX(), event.getY(), event.getZ(), yaw, event.getPartialRenderTick());
event.setCanceled(true);
}
}
}