2022-05-16 05:45:00 -05:00
|
|
|
package noppes.npcs.client.renderer;
|
2022-05-20 05:02:18 -05:00
|
|
|
import net.minecraft.block.Block;
|
|
|
|
|
import net.minecraft.block.material.Material;
|
2022-05-16 05:45:00 -05:00
|
|
|
import net.minecraft.client.Minecraft;
|
2022-06-13 00:47:39 -05:00
|
|
|
import net.minecraft.client.entity.AbstractClientPlayer;
|
2022-05-20 05:02:18 -05:00
|
|
|
import net.minecraft.client.entity.EntityPlayerSP;
|
|
|
|
|
import net.minecraft.client.model.ModelBiped;
|
|
|
|
|
import net.minecraft.client.renderer.ActiveRenderInfo;
|
|
|
|
|
import net.minecraft.client.renderer.EntityRenderer;
|
|
|
|
|
import net.minecraft.client.renderer.RenderHelper;
|
|
|
|
|
import net.minecraft.client.renderer.entity.Render;
|
|
|
|
|
import net.minecraft.client.renderer.entity.RenderManager;
|
2022-05-16 05:45:00 -05:00
|
|
|
import net.minecraft.client.renderer.entity.RenderPlayer;
|
2022-05-21 20:00:45 -05:00
|
|
|
import net.minecraft.entity.Entity;
|
2022-05-16 05:45:00 -05:00
|
|
|
import net.minecraft.entity.EntityLivingBase;
|
|
|
|
|
import net.minecraft.entity.player.EntityPlayer;
|
2022-05-21 20:00:45 -05:00
|
|
|
import net.minecraft.item.Item;
|
|
|
|
|
import net.minecraft.item.ItemArmor;
|
|
|
|
|
import net.minecraft.item.ItemStack;
|
2022-05-20 05:02:18 -05:00
|
|
|
import net.minecraft.util.MathHelper;
|
2022-05-16 18:47:16 -05:00
|
|
|
import net.minecraft.util.ResourceLocation;
|
2022-05-16 05:45:00 -05:00
|
|
|
import noppes.npcs.client.Client;
|
2022-05-23 20:47:32 -05:00
|
|
|
import noppes.npcs.controllers.data.SkinOverlay;
|
2022-05-16 05:45:00 -05:00
|
|
|
import org.lwjgl.opengl.GL11;
|
2022-05-20 05:02:18 -05:00
|
|
|
import org.lwjgl.util.glu.Project;
|
2022-05-16 05:45:00 -05:00
|
|
|
|
2022-05-21 20:00:45 -05:00
|
|
|
import java.lang.reflect.InvocationTargetException;
|
|
|
|
|
import java.util.HashMap;
|
|
|
|
|
|
2022-05-16 05:45:00 -05:00
|
|
|
public class RenderCNPCPlayer extends RenderPlayer {
|
2022-05-24 00:48:33 -05:00
|
|
|
public RenderCNPCHand itemRenderer = new RenderCNPCHand(Minecraft.getMinecraft());
|
2022-05-21 20:00:45 -05:00
|
|
|
public float tempRenderPartialTicks;
|
2022-05-20 05:02:18 -05:00
|
|
|
private float debugCamFOV;
|
|
|
|
|
private float prevDebugCamFOV;
|
|
|
|
|
private float fovModifierHand;
|
|
|
|
|
private float fovModifierHandPrev;
|
|
|
|
|
private float fovMultiplierTemp;
|
|
|
|
|
|
2022-05-16 05:45:00 -05:00
|
|
|
public RenderCNPCPlayer() {
|
2022-05-20 05:02:18 -05:00
|
|
|
super();
|
|
|
|
|
this.modelBipedMain = (ModelBiped)this.mainModel;
|
|
|
|
|
this.modelArmorChestplate = new ModelBiped(1.0F);
|
|
|
|
|
this.modelArmor = new ModelBiped(0.5F);
|
|
|
|
|
this.setRenderManager(RenderManager.instance);
|
2022-05-16 05:45:00 -05:00
|
|
|
}
|
|
|
|
|
|
2022-05-29 05:23:39 -05:00
|
|
|
private boolean preRenderOverlay(EntityPlayer player, ResourceLocation overlayLocation, boolean glow, boolean blend,
|
2022-05-17 00:01:31 -05:00
|
|
|
float alpha, float size, float speedX, float speedY, float scaleX, float scaleY,
|
|
|
|
|
float offsetX, float offsetY, float offsetZ) {
|
2022-05-28 02:12:33 -05:00
|
|
|
if (overlayLocation.getResourcePath().isEmpty())
|
|
|
|
|
return false;
|
|
|
|
|
|
2022-05-16 18:47:16 -05:00
|
|
|
try {
|
|
|
|
|
this.bindTexture(overlayLocation);
|
|
|
|
|
} catch (Exception exception) {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
2022-05-16 23:27:11 -05:00
|
|
|
|
2022-05-22 05:08:43 -05:00
|
|
|
if (!Client.entitySkinOverlayTicks.containsKey(player.getUniqueID())) {
|
|
|
|
|
Client.entitySkinOverlayTicks.put(player.getUniqueID(), 1L);
|
|
|
|
|
} else {
|
|
|
|
|
long ticks = Client.entitySkinOverlayTicks.get(player.getUniqueID());
|
|
|
|
|
Client.entitySkinOverlayTicks.put(player.getUniqueID(), ticks + 1);
|
2022-05-16 23:27:11 -05:00
|
|
|
}
|
2022-05-22 05:08:43 -05:00
|
|
|
float partialTickTime = Client.entitySkinOverlayTicks.get(player.getUniqueID());
|
2022-05-16 23:27:11 -05:00
|
|
|
|
2022-05-16 18:47:16 -05:00
|
|
|
// Overlay & Glow
|
2022-05-24 00:58:12 -05:00
|
|
|
GL11.glEnable(GL11.GL_BLEND);
|
2022-05-29 05:23:39 -05:00
|
|
|
if (blend) {
|
|
|
|
|
GL11.glBlendFunc(GL11.GL_ONE, GL11.GL_ONE);
|
|
|
|
|
} else {
|
|
|
|
|
GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
|
|
|
|
|
}
|
2022-05-24 00:58:12 -05:00
|
|
|
GL11.glAlphaFunc(GL11.GL_GREATER, 0.003921569F);
|
|
|
|
|
|
2022-05-16 22:04:54 -05:00
|
|
|
if (glow) {
|
|
|
|
|
GL11.glDisable(GL11.GL_LIGHTING);
|
|
|
|
|
Minecraft.getMinecraft().entityRenderer.disableLightmap((double)0);
|
2022-05-20 05:02:18 -05:00
|
|
|
RenderHelper.disableStandardItemLighting();
|
2022-05-16 22:04:54 -05:00
|
|
|
}
|
2022-05-16 18:47:16 -05:00
|
|
|
|
2022-05-16 22:14:11 -05:00
|
|
|
GL11.glColor4f(1.0F, 1.0F, 1.0F, alpha);
|
|
|
|
|
|
2022-05-16 18:47:16 -05:00
|
|
|
GL11.glDepthMask(!player.isInvisible());
|
|
|
|
|
|
|
|
|
|
GL11.glPushMatrix();
|
|
|
|
|
GL11.glMatrixMode(GL11.GL_TEXTURE);
|
|
|
|
|
GL11.glLoadIdentity();
|
2022-05-20 05:02:18 -05:00
|
|
|
GL11.glTranslatef(partialTickTime * 0.001F * speedX, partialTickTime * 0.001F * speedY, 0.0F);
|
2022-05-16 23:27:11 -05:00
|
|
|
GL11.glScalef(scaleX, scaleY, 1.0F);
|
2022-05-16 18:47:16 -05:00
|
|
|
|
|
|
|
|
GL11.glMatrixMode(GL11.GL_MODELVIEW);
|
2022-05-17 00:01:31 -05:00
|
|
|
GL11.glTranslatef(offsetX, offsetY, offsetZ);
|
2022-05-20 05:02:18 -05:00
|
|
|
GL11.glScalef(size, size, size);
|
2022-05-16 18:47:16 -05:00
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
public void postRenderOverlay(EntityPlayer player) {
|
|
|
|
|
GL11.glPopMatrix();
|
|
|
|
|
|
|
|
|
|
GL11.glMatrixMode(GL11.GL_TEXTURE);
|
|
|
|
|
GL11.glLoadIdentity();
|
|
|
|
|
GL11.glMatrixMode(GL11.GL_MODELVIEW);
|
|
|
|
|
|
|
|
|
|
GL11.glEnable(GL11.GL_LIGHTING);
|
|
|
|
|
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
|
|
|
|
|
GL11.glDisable(GL11.GL_BLEND);
|
2022-05-23 00:45:32 -05:00
|
|
|
GL11.glAlphaFunc(GL11.GL_GREATER, 0.1F);
|
2022-05-21 20:00:45 -05:00
|
|
|
Minecraft.getMinecraft().entityRenderer.enableLightmap((double) 0);
|
2022-05-20 05:02:18 -05:00
|
|
|
RenderHelper.enableStandardItemLighting();
|
2022-05-16 18:47:16 -05:00
|
|
|
}
|
|
|
|
|
|
2022-05-16 05:45:00 -05:00
|
|
|
@Override
|
|
|
|
|
protected void renderModel(EntityLivingBase p_77036_1_, float p_77036_2_, float p_77036_3_, float p_77036_4_, float p_77036_5_, float p_77036_6_, float p_77036_7_) {
|
2022-05-16 18:47:16 -05:00
|
|
|
EntityPlayer player = (EntityPlayer) p_77036_1_;
|
2022-05-16 05:45:00 -05:00
|
|
|
|
|
|
|
|
if (!p_77036_1_.isInvisible())
|
|
|
|
|
{
|
2022-05-16 18:47:16 -05:00
|
|
|
if (Client.skinOverlays.containsKey(player.getUniqueID())) {
|
2022-05-23 20:47:32 -05:00
|
|
|
for (SkinOverlay overlayData : Client.skinOverlays.get(player.getUniqueID()).values()) {
|
2022-05-28 02:12:33 -05:00
|
|
|
if (overlayData.texture.isEmpty())
|
|
|
|
|
continue;
|
|
|
|
|
|
2022-05-17 04:34:46 -05:00
|
|
|
if (overlayData.location == null) {
|
2022-05-17 04:46:06 -05:00
|
|
|
overlayData.location = new ResourceLocation(overlayData.texture);
|
2022-05-17 04:34:46 -05:00
|
|
|
} else {
|
|
|
|
|
String str = overlayData.location.getResourceDomain()+":"+overlayData.location.getResourcePath();
|
2022-05-17 04:46:06 -05:00
|
|
|
if (!str.equals(overlayData.texture)) {
|
|
|
|
|
overlayData.location = new ResourceLocation(overlayData.texture);
|
2022-05-17 04:34:46 -05:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2022-05-29 05:23:39 -05:00
|
|
|
if (!preRenderOverlay(player, overlayData.location, overlayData.glow, overlayData.blend, overlayData.alpha, overlayData.size,
|
2022-05-17 00:01:31 -05:00
|
|
|
overlayData.speedX, overlayData.speedY, overlayData.scaleX, overlayData.scaleY,
|
|
|
|
|
overlayData.offsetX, overlayData.offsetY, overlayData.offsetZ
|
|
|
|
|
))
|
2022-05-16 18:47:16 -05:00
|
|
|
return;
|
2022-05-21 20:00:45 -05:00
|
|
|
try {
|
2022-06-30 12:35:29 -05:00
|
|
|
renderDBCPlayer(player, tempRenderPartialTicks);
|
2022-05-21 20:00:45 -05:00
|
|
|
} catch (Exception e) {
|
|
|
|
|
this.modelBipedMain.render(p_77036_1_, p_77036_2_, p_77036_3_, p_77036_4_, p_77036_5_, p_77036_6_, p_77036_7_);
|
|
|
|
|
} finally {
|
|
|
|
|
postRenderOverlay(player);
|
|
|
|
|
}
|
2022-05-16 18:47:16 -05:00
|
|
|
}
|
2022-05-16 05:45:00 -05:00
|
|
|
}
|
|
|
|
|
}
|
2022-05-20 05:02:18 -05:00
|
|
|
}
|
2022-06-13 00:47:39 -05:00
|
|
|
|
|
|
|
|
protected int shouldRenderPass(AbstractClientPlayer p_77032_1_, int p_77032_2_, float p_77032_3_)
|
|
|
|
|
{
|
|
|
|
|
return -1;
|
|
|
|
|
}
|
2022-06-15 03:48:32 -05:00
|
|
|
|
|
|
|
|
protected void passSpecialRender(EntityLivingBase p_77033_1_, double p_77033_2_, double p_77033_4_, double p_77033_6_) {}
|
|
|
|
|
|
|
|
|
|
protected void func_96449_a(AbstractClientPlayer p_96449_1_, double p_96449_2_, double p_96449_4_, double p_96449_6_, String p_96449_8_, float p_96449_9_, double p_96449_10_) {}
|
2022-05-20 05:02:18 -05:00
|
|
|
|
|
|
|
|
public void renderHand(float partialTicks, int renderPass) {
|
|
|
|
|
Minecraft mc = Minecraft.getMinecraft();
|
|
|
|
|
EntityRenderer entityRenderer = mc.entityRenderer;
|
|
|
|
|
|
|
|
|
|
if (entityRenderer.debugViewDirection <= 0)
|
2022-05-16 05:45:00 -05:00
|
|
|
{
|
2022-05-20 05:02:18 -05:00
|
|
|
GL11.glMatrixMode(GL11.GL_PROJECTION);
|
|
|
|
|
GL11.glLoadIdentity();
|
|
|
|
|
float f1 = 0.07F;
|
|
|
|
|
|
|
|
|
|
if (mc.gameSettings.anaglyph)
|
|
|
|
|
{
|
|
|
|
|
GL11.glTranslatef((float)(-(renderPass * 2 - 1)) * f1, 0.0F, 0.0F);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*if (entityRenderer.cameraZoom != 1.0D) //EntityRenderer's "cameraZoom" field is always 1.0D??? Why is this here??? o_O
|
|
|
|
|
{
|
|
|
|
|
GL11.glTranslatef((float)player.cameraYaw, (float)(-player.cameraPitch), 0.0F);
|
|
|
|
|
GL11.glScaled(entityRenderer.cameraZoom, entityRenderer.cameraZoom, 1.0D);
|
|
|
|
|
}*/
|
|
|
|
|
|
|
|
|
|
Project.gluPerspective(this.getFOVModifier(partialTicks, false), (float)mc.displayWidth / (float)mc.displayHeight, 0.05F, mc.gameSettings.renderDistanceChunks * 16 * 2.0F);
|
|
|
|
|
|
|
|
|
|
if (mc.playerController.enableEverythingIsScrewedUpMode())
|
|
|
|
|
{
|
|
|
|
|
float f2 = 0.6666667F;
|
|
|
|
|
GL11.glScalef(1.0F, f2, 1.0F);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
GL11.glMatrixMode(GL11.GL_MODELVIEW);
|
|
|
|
|
GL11.glLoadIdentity();
|
|
|
|
|
|
|
|
|
|
if (mc.gameSettings.anaglyph)
|
|
|
|
|
{
|
|
|
|
|
GL11.glTranslatef((float)(renderPass * 2 - 1) * 0.1F, 0.0F, 0.0F);
|
|
|
|
|
}
|
|
|
|
|
|
2022-05-16 05:45:00 -05:00
|
|
|
GL11.glPushMatrix();
|
2022-05-20 05:02:18 -05:00
|
|
|
hurtCameraEffect(partialTicks);
|
|
|
|
|
|
|
|
|
|
if (mc.gameSettings.viewBobbing)
|
|
|
|
|
{
|
|
|
|
|
setupViewBobbing(partialTicks);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (mc.gameSettings.thirdPersonView == 0 && !mc.renderViewEntity.isPlayerSleeping() && !mc.gameSettings.hideGUI && !mc.playerController.enableEverythingIsScrewedUpMode())
|
|
|
|
|
{
|
|
|
|
|
itemRenderer.updateEquippedItem();
|
|
|
|
|
entityRenderer.enableLightmap((double)partialTicks);
|
|
|
|
|
itemRenderer.renderItemInFirstPerson(partialTicks);
|
|
|
|
|
entityRenderer.disableLightmap((double)partialTicks);
|
|
|
|
|
}
|
|
|
|
|
|
2022-05-16 05:45:00 -05:00
|
|
|
GL11.glPopMatrix();
|
2022-05-20 05:02:18 -05:00
|
|
|
|
|
|
|
|
if (mc.gameSettings.thirdPersonView == 0 && !mc.renderViewEntity.isPlayerSleeping())
|
|
|
|
|
{
|
|
|
|
|
entityRenderer.itemRenderer.renderOverlays(partialTicks);
|
|
|
|
|
hurtCameraEffect(partialTicks);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (mc.gameSettings.viewBobbing)
|
|
|
|
|
{
|
|
|
|
|
setupViewBobbing(partialTicks);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private float getFOVModifier(float p_78481_1_, boolean p_78481_2_)
|
|
|
|
|
{
|
|
|
|
|
Minecraft mc = Minecraft.getMinecraft();
|
|
|
|
|
EntityLivingBase entityplayer = (EntityLivingBase)mc.renderViewEntity;
|
|
|
|
|
float f1 = 70.0F;
|
|
|
|
|
|
|
|
|
|
if (p_78481_2_)
|
|
|
|
|
{
|
|
|
|
|
f1 = mc.gameSettings.fovSetting;
|
|
|
|
|
f1 *= this.fovModifierHandPrev + (this.fovModifierHand - this.fovModifierHandPrev) * p_78481_1_;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (entityplayer.getHealth() <= 0.0F)
|
|
|
|
|
{
|
|
|
|
|
float f2 = (float)entityplayer.deathTime + p_78481_1_;
|
|
|
|
|
f1 /= (1.0F - 500.0F / (f2 + 500.0F)) * 2.0F + 1.0F;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Block block = ActiveRenderInfo.getBlockAtEntityViewpoint(mc.theWorld, entityplayer, p_78481_1_);
|
|
|
|
|
|
|
|
|
|
if (block.getMaterial() == Material.water)
|
|
|
|
|
{
|
|
|
|
|
f1 = f1 * 60.0F / 70.0F;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return f1 + this.prevDebugCamFOV + (this.debugCamFOV - this.prevDebugCamFOV) * p_78481_1_;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void updateFovModifierHand()
|
|
|
|
|
{
|
|
|
|
|
Minecraft mc = Minecraft.getMinecraft();
|
|
|
|
|
if (mc.renderViewEntity instanceof EntityPlayerSP)
|
|
|
|
|
{
|
|
|
|
|
EntityPlayerSP entityplayersp = (EntityPlayerSP)mc.renderViewEntity;
|
|
|
|
|
this.fovMultiplierTemp = entityplayersp.getFOVMultiplier();
|
2022-05-16 05:45:00 -05:00
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
2022-05-20 05:02:18 -05:00
|
|
|
this.fovMultiplierTemp = mc.thePlayer.getFOVMultiplier();
|
|
|
|
|
}
|
|
|
|
|
this.fovModifierHandPrev = this.fovModifierHand;
|
|
|
|
|
this.fovModifierHand += (this.fovMultiplierTemp - this.fovModifierHand) * 0.5F;
|
|
|
|
|
|
|
|
|
|
if (this.fovModifierHand > 1.5F)
|
|
|
|
|
{
|
|
|
|
|
this.fovModifierHand = 1.5F;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (this.fovModifierHand < 0.1F)
|
|
|
|
|
{
|
|
|
|
|
this.fovModifierHand = 0.1F;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void hurtCameraEffect(float p_78482_1_)
|
|
|
|
|
{
|
|
|
|
|
Minecraft mc = Minecraft.getMinecraft();
|
|
|
|
|
EntityLivingBase entitylivingbase = mc.renderViewEntity;
|
|
|
|
|
float f1 = (float)entitylivingbase.hurtTime - p_78482_1_;
|
|
|
|
|
float f2;
|
|
|
|
|
|
|
|
|
|
if (entitylivingbase.getHealth() <= 0.0F)
|
|
|
|
|
{
|
|
|
|
|
f2 = (float)entitylivingbase.deathTime + p_78482_1_;
|
|
|
|
|
GL11.glRotatef(40.0F - 8000.0F / (f2 + 200.0F), 0.0F, 0.0F, 1.0F);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (f1 >= 0.0F)
|
|
|
|
|
{
|
|
|
|
|
f1 /= (float)entitylivingbase.maxHurtTime;
|
|
|
|
|
f1 = MathHelper.sin(f1 * f1 * f1 * f1 * (float)Math.PI);
|
|
|
|
|
f2 = entitylivingbase.attackedAtYaw;
|
|
|
|
|
GL11.glRotatef(-f2, 0.0F, 1.0F, 0.0F);
|
|
|
|
|
GL11.glRotatef(-f1 * 14.0F, 0.0F, 0.0F, 1.0F);
|
|
|
|
|
GL11.glRotatef(f2, 0.0F, 1.0F, 0.0F);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void setupViewBobbing(float p_78475_1_)
|
|
|
|
|
{
|
|
|
|
|
Minecraft mc = Minecraft.getMinecraft();
|
|
|
|
|
if (mc.renderViewEntity instanceof EntityPlayer)
|
|
|
|
|
{
|
|
|
|
|
EntityPlayer entityplayer = (EntityPlayer)mc.renderViewEntity;
|
|
|
|
|
float f1 = entityplayer.distanceWalkedModified - entityplayer.prevDistanceWalkedModified;
|
|
|
|
|
float f2 = -(entityplayer.distanceWalkedModified + f1 * p_78475_1_);
|
|
|
|
|
float f3 = entityplayer.prevCameraYaw + (entityplayer.cameraYaw - entityplayer.prevCameraYaw) * p_78475_1_;
|
|
|
|
|
float f4 = entityplayer.prevCameraPitch + (entityplayer.cameraPitch - entityplayer.prevCameraPitch) * p_78475_1_;
|
|
|
|
|
GL11.glTranslatef(MathHelper.sin(f2 * (float)Math.PI) * f3 * 0.5F, -Math.abs(MathHelper.cos(f2 * (float)Math.PI) * f3), 0.0F);
|
|
|
|
|
GL11.glRotatef(MathHelper.sin(f2 * (float)Math.PI) * f3 * 3.0F, 0.0F, 0.0F, 1.0F);
|
|
|
|
|
GL11.glRotatef(Math.abs(MathHelper.cos(f2 * (float)Math.PI - 0.2F) * f3) * 5.0F, 1.0F, 0.0F, 0.0F);
|
|
|
|
|
GL11.glRotatef(f4, 1.0F, 0.0F, 0.0F);
|
2022-05-16 05:45:00 -05:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2022-05-20 05:02:18 -05:00
|
|
|
public void renderFirstPersonArm(EntityPlayer player, float partialTickTime)
|
2022-05-16 05:45:00 -05:00
|
|
|
{
|
2022-05-20 05:02:18 -05:00
|
|
|
Render render = RenderManager.instance.getEntityRenderObject(player);
|
|
|
|
|
RenderPlayer renderplayer = (RenderPlayer)render;
|
|
|
|
|
renderplayer.renderFirstPersonArm(player);
|
2022-05-16 05:45:00 -05:00
|
|
|
|
2022-05-16 18:47:16 -05:00
|
|
|
if (Client.skinOverlays.containsKey(player.getUniqueID())) {
|
2022-05-23 20:47:32 -05:00
|
|
|
for (SkinOverlay overlayData : Client.skinOverlays.get(player.getUniqueID()).values()) {
|
2022-05-28 02:12:33 -05:00
|
|
|
if (overlayData.texture.isEmpty())
|
|
|
|
|
continue;
|
|
|
|
|
|
2022-05-17 04:34:46 -05:00
|
|
|
if (overlayData.location == null) {
|
2022-05-17 04:46:06 -05:00
|
|
|
overlayData.location = new ResourceLocation(overlayData.texture);
|
2022-05-17 04:34:46 -05:00
|
|
|
} else {
|
|
|
|
|
String str = overlayData.location.getResourceDomain()+":"+overlayData.location.getResourcePath();
|
2022-05-17 04:46:06 -05:00
|
|
|
if (!str.equals(overlayData.texture)) {
|
|
|
|
|
overlayData.location = new ResourceLocation(overlayData.texture);
|
2022-05-17 04:34:46 -05:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2022-05-29 05:23:39 -05:00
|
|
|
if (!preRenderOverlay(player, overlayData.location, overlayData.glow, overlayData.blend, overlayData.alpha, overlayData.size,
|
2022-05-17 00:01:31 -05:00
|
|
|
overlayData.speedX, overlayData.speedY, overlayData.scaleX, overlayData.scaleY,
|
|
|
|
|
overlayData.offsetX, overlayData.offsetY, overlayData.offsetZ
|
|
|
|
|
))
|
2022-05-16 18:47:16 -05:00
|
|
|
return;
|
2022-05-16 05:45:00 -05:00
|
|
|
this.modelBipedMain.onGround = 0.0F;
|
2022-05-16 18:47:16 -05:00
|
|
|
this.modelBipedMain.setRotationAngles(0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F, player);
|
2022-05-16 05:45:00 -05:00
|
|
|
this.modelBipedMain.bipedRightArm.render(0.0625F);
|
2022-05-16 18:47:16 -05:00
|
|
|
postRenderOverlay(player);
|
|
|
|
|
}
|
2022-05-16 05:45:00 -05:00
|
|
|
}
|
|
|
|
|
}
|
2022-05-21 20:00:45 -05:00
|
|
|
|
|
|
|
|
byte b(String n) {
|
|
|
|
|
return Byte.parseByte(n);
|
|
|
|
|
}
|
|
|
|
|
|
2022-06-30 12:35:29 -05:00
|
|
|
protected void renderDBCPlayer(EntityPlayer player, float partialTick) throws ClassNotFoundException, NoSuchFieldException, IllegalAccessException, NoSuchMethodException, InvocationTargetException {
|
2022-05-21 20:00:45 -05:00
|
|
|
Class<?> renderPlayerJBRA = Class.forName("JinRyuu.JBRA.RenderPlayerJBRA");
|
|
|
|
|
Class<?> JRMCoreH = Class.forName("JinRyuu.JRMCore.JRMCoreH");
|
|
|
|
|
Class<?> JRMCoreHDBC = Class.forName("JinRyuu.JRMCore.JRMCoreHDBC");
|
|
|
|
|
Class<?> JRMCoreConfig = Class.forName("JinRyuu.JRMCore.JRMCoreConfig");
|
|
|
|
|
Class<?> JRMCoreGuiScreen = Class.forName("JinRyuu.JRMCore.JRMCoreGuiScreen");
|
|
|
|
|
Class<?> ModelBipedDBC = Class.forName("JinRyuu.JBRA.ModelBipedDBC");
|
|
|
|
|
|
|
|
|
|
Object playerRenderer = renderPlayerJBRA.cast(RenderManager.instance.getEntityRenderObject(player));
|
|
|
|
|
|
|
|
|
|
Object modelMain = renderPlayerJBRA.getField("modelMain").get(playerRenderer);
|
|
|
|
|
ModelBiped model = ((ModelBiped) modelMain);
|
|
|
|
|
|
|
|
|
|
boolean dbc = (Boolean) JRMCoreH.getMethod("DBC").invoke(null);
|
|
|
|
|
boolean nc = (Boolean) JRMCoreH.getMethod("NC").invoke(null);
|
|
|
|
|
boolean saoc = (Boolean) JRMCoreH.getMethod("SAOC").invoke(null);
|
|
|
|
|
int pl;
|
|
|
|
|
if (JRMCoreH.getField("plyrs").get(null) != null && ((String[]) JRMCoreH.getField("plyrs").get(null)).length > 0 && !player.isInvisible() && (Boolean)JRMCoreH.getMethod("dnn",int.class).invoke(null,1) && ((Boolean)JRMCoreH.getMethod("dnn",int.class).invoke(null,2) && (Boolean)JRMCoreH.getMethod("dnn",int.class).invoke(null,4) && (Boolean)JRMCoreH.getMethod("dnn",int.class).invoke(null,5) && (Boolean)JRMCoreH.getMethod("dnn",int.class).invoke(null,19) || !dbc && !saoc && !nc)) {
|
|
|
|
|
for(pl = 0; pl < ((String[]) JRMCoreH.getField("plyrs").get(null)).length; ++pl) {
|
|
|
|
|
if (((String[]) JRMCoreH.getField("plyrs").get(null))[pl].equals(player.getCommandSenderName())) {
|
|
|
|
|
String[] s = ((String[]) JRMCoreH.getField("data1").get(null))[pl].split(";");
|
|
|
|
|
int powerType = Integer.parseInt(s[2]);
|
|
|
|
|
int race = Integer.parseInt(s[0]);
|
|
|
|
|
String[] dummy = new String[]{"0", "0", "0"};
|
|
|
|
|
String[] state = JRMCoreH.getField("data2").get(null) == null ? dummy : ((String[]) JRMCoreH.getField("data2").get(null))[pl].split(";");
|
|
|
|
|
String dns = s[1];
|
|
|
|
|
int st = (Boolean) JRMCoreH.getMethod("rc_arc",int.class).invoke(null,race) && (Boolean) JRMCoreGuiScreen.getField("ufc").get(null) ? 6 : (powerType != 2 && race != 0 ? this.b(state[0]) : 0);
|
|
|
|
|
boolean saiOozar = (Boolean) JRMCoreH.getMethod("rSai",int.class).invoke(null,race) && (st == 7 || st == 8);
|
|
|
|
|
int skintype = (Integer) JRMCoreH.getMethod("dnsSkinT",String.class).invoke(null,dns);
|
|
|
|
|
|
|
|
|
|
HashMap<Integer,String[]> playerData = new HashMap<>();
|
|
|
|
|
for (int i = 0; i <= 31; i++) {
|
|
|
|
|
Object obj;
|
|
|
|
|
|
|
|
|
|
if (i < 10) {
|
|
|
|
|
obj = JRMCoreH.getField("data" + i).get(null);
|
|
|
|
|
} else {
|
|
|
|
|
obj = JRMCoreH.getField("dat" + i).get(null);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (obj != null) {
|
|
|
|
|
playerData.put(i, ((String[]) obj)[pl].split(";"));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
int[] playerAttributes = new int[((int[])(JRMCoreH.getField("PlyrAttrbts").get(null))).length];
|
|
|
|
|
String[] playerStatsStr = ((String[])(JRMCoreH.getField("dat14").get(null)))[pl].split(",");
|
|
|
|
|
|
|
|
|
|
for(int i = 0; i < playerAttributes.length; ++i) {
|
|
|
|
|
playerAttributes[i] = Integer.parseInt(playerStatsStr[i]);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
byte release = Byte.parseByte(playerData.get(10)[0]);
|
|
|
|
|
float f1 = 0.9375F;
|
|
|
|
|
float f2 = 1.0F;
|
|
|
|
|
float f3 = 1.0F;
|
|
|
|
|
boolean noC = !(Boolean) JRMCoreH.getMethod("DBC").invoke(null);
|
|
|
|
|
|
|
|
|
|
if ((int)JRMCoreH.getMethod("dnsGender",String.class).invoke(null,(String)JRMCoreH.getField("dns").get(null)) <= 1) {
|
|
|
|
|
f1 = 0.73F + (noC ? 0.27F : 0.0F);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ((int)JRMCoreH.getMethod("dnsGender",String.class).invoke(null,(String)JRMCoreH.getField("dns").get(null)) >= 2) {
|
|
|
|
|
f1 = 0.7F + (noC ? 0.27F : 0.0F);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
float yc = 1.0F;
|
|
|
|
|
float f1r;
|
2022-06-20 02:08:33 -05:00
|
|
|
|
|
|
|
|
float headOffsetY = 0.00051F;
|
|
|
|
|
model.bipedHead.offsetY += headOffsetY;
|
|
|
|
|
|
|
|
|
|
float armOffsetX = -0.00125F;
|
|
|
|
|
model.bipedLeftArm.offsetX += armOffsetX;
|
|
|
|
|
model.bipedRightArm.offsetX += -armOffsetX;
|
|
|
|
|
|
|
|
|
|
float legOffsetX = -0.0005F;
|
|
|
|
|
float legOffsetY = -0.002F;
|
|
|
|
|
float legOffsetZ = 0.0F;
|
|
|
|
|
if (player.isSneaking()) {
|
|
|
|
|
legOffsetZ += -0.00075F;
|
2022-05-21 20:00:45 -05:00
|
|
|
}
|
2022-06-20 02:08:33 -05:00
|
|
|
model.bipedLeftLeg.offsetX += legOffsetX;
|
|
|
|
|
model.bipedRightLeg.offsetX += -legOffsetX;
|
|
|
|
|
model.bipedLeftLeg.offsetY += legOffsetY;
|
|
|
|
|
model.bipedRightLeg.offsetY += legOffsetY;
|
|
|
|
|
model.bipedLeftLeg.offsetZ += legOffsetZ;
|
|
|
|
|
model.bipedRightLeg.offsetZ += legOffsetZ;
|
2022-05-21 20:00:45 -05:00
|
|
|
|
|
|
|
|
if ((Boolean) JRMCoreH.getMethod("DBC").invoke(null) && (Boolean) JRMCoreConfig.getField("sizes").get(null)) {
|
|
|
|
|
f1r = f1;
|
|
|
|
|
f1 += (float) JRMCoreHDBC.getMethod("DBCsizeBasedOnCns",int[].class).invoke(null, (Object) playerAttributes);
|
|
|
|
|
|
|
|
|
|
if (!((Boolean) JRMCoreH.getMethod("isPowerTypeChakra",int.class).invoke(null,powerType))) {
|
|
|
|
|
f2 = (float) JRMCoreHDBC.getMethod("DBCsizeBasedOnRace",int.class,int.class).invoke(null, race, st);
|
|
|
|
|
f3 = (float) JRMCoreHDBC.getMethod("DBCsizeBasedOnRace2",int.class,int.class).invoke(null, race, st);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ((Boolean) JRMCoreH.getMethod("rSai",int.class).invoke(null,race) && (st == 7 || st == 8)) {
|
|
|
|
|
release = 50;
|
|
|
|
|
f1 = f1r;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
float f3a = (f3 - 1.0F) * (float)release * 0.02F + 1.0F;
|
|
|
|
|
f3 = f3a > f3 ? f3 : (f3 > 1.0F ? f3a : f3);
|
|
|
|
|
float f2a = (f2 - 1.0F) * (float)release * 0.02F + 1.0F;
|
|
|
|
|
f2 = f2 > 1.0F ? f2a : f2;
|
|
|
|
|
float f1a1 = (f1 - f1r) * (release <= 50 ? 0.25F : 0.5F);
|
|
|
|
|
float f1ac = f1a1 * (float)release * 0.02F;
|
|
|
|
|
f1 = f1 - f1r - f1a1 + f1ac + f1r;
|
|
|
|
|
String Fzn = (String) JRMCoreH.getMethod("getString",EntityPlayer.class,String.class).invoke(null,player,"jrmcFuzion");
|
|
|
|
|
if (Fzn.contains(",")) {
|
|
|
|
|
String[] FznA = Fzn.split(",");
|
|
|
|
|
if (FznA.length == 3) {
|
|
|
|
|
boolean isp2 = FznA[1].equalsIgnoreCase(player.getCommandSenderName());
|
|
|
|
|
if (isp2) {
|
|
|
|
|
f1 = 0.0F;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
float clientHeight = f1 * f3 * yc;
|
|
|
|
|
float clientWidth2 = f1 * f2 * f3 * yc;
|
|
|
|
|
|
|
|
|
|
GL11.glTranslatef(0,-1.60859F * clientHeight + 1.50766F,0);
|
|
|
|
|
GL11.glScalef(clientWidth2 * 1.07F,clientHeight * 1.07F,clientWidth2 * 1.07F);
|
|
|
|
|
|
|
|
|
|
GL11.glPushMatrix();
|
|
|
|
|
|
2022-06-30 12:35:29 -05:00
|
|
|
if (race == 3 && dbc) {
|
2022-05-21 20:00:45 -05:00
|
|
|
ModelBipedDBC.getMethod("renderBody",float.class).invoke(modelMain,0.0625F);
|
|
|
|
|
} else {
|
|
|
|
|
if (race == 4 && dbc) {
|
|
|
|
|
ModelBipedDBC.getMethod("renderBody",float.class).invoke(modelMain,0.0625F);
|
|
|
|
|
} else {
|
|
|
|
|
if (saiOozar) {
|
|
|
|
|
ModelBipedDBC.getMethod("renderBody",float.class).invoke(modelMain,0.0625F);
|
|
|
|
|
ModelBipedDBC.getMethod("renderHairs",float.class,String.class).invoke(modelMain,0.0625F,"OOZARU");
|
|
|
|
|
} else if (skintype != 0) {
|
|
|
|
|
ModelBipedDBC.getMethod("renderBody",float.class).invoke(modelMain,0.0625F);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
GL11.glPopMatrix();
|
2022-06-20 02:08:33 -05:00
|
|
|
|
|
|
|
|
model.bipedHead.offsetY -= headOffsetY;
|
|
|
|
|
|
|
|
|
|
model.bipedLeftArm.offsetX -= armOffsetX;
|
|
|
|
|
model.bipedRightArm.offsetX -= -armOffsetX;
|
|
|
|
|
|
|
|
|
|
model.bipedLeftLeg.offsetX -= legOffsetX;
|
|
|
|
|
model.bipedRightLeg.offsetX -= -legOffsetX;
|
|
|
|
|
model.bipedLeftLeg.offsetY -= legOffsetY;
|
|
|
|
|
model.bipedRightLeg.offsetY -= legOffsetY;
|
|
|
|
|
model.bipedLeftLeg.offsetZ -= legOffsetZ;
|
|
|
|
|
model.bipedRightLeg.offsetZ -= legOffsetZ;
|
2022-05-21 20:00:45 -05:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
2022-05-16 05:45:00 -05:00
|
|
|
}
|