Fixed double arms again

This commit is contained in:
Tschipp 2017-08-16 01:17:30 +02:00
parent 6220fd13af
commit ecbc1e1fcf
3 changed files with 63 additions and 136 deletions

View File

@ -32,6 +32,7 @@ import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import tschipp.carryon.common.handler.RegistrationHandler;
import tschipp.carryon.common.item.ItemEntity;
import tschipp.carryon.common.item.ItemTile;
public class RenderEntityEvents
{
@ -161,16 +162,7 @@ public class RenderEntityEvents
event.setCanceled(true);
}
}
else
{
event.setCanceled(false);
Minecraft mc = Minecraft.getMinecraft();
RenderManager manager = mc.getRenderManager();
RenderPlayer renderPlayer = manager.getSkinMap().get(aplayer.getSkinType());
ModelPlayer modelPlayer = renderPlayer.getMainModel();
modelPlayer.bipedLeftArm.isHidden = false;
modelPlayer.bipedRightArm.isHidden = false;
}
}
/*
@ -205,13 +197,13 @@ public class RenderEntityEvents
double xOffset = d0 - c0;
double yOffset = d1 - c1;
double zOffset = d2 - d2;
double zOffset = d2 - c2;
float height = entity.height;
float width = entity.width;
float multiplier = height * width;
entity.setPosition(d0, d1, d2);
entity.setPosition(c0, c1, c2);
entity.rotationYaw = 0.0f;
entity.prevRotationYaw = 0.0f;
entity.setRotationYawHead(0.0f);
@ -231,108 +223,10 @@ public class RenderEntityEvents
GlStateManager.popMatrix();
}
}
else
{
modelPlayer.bipedLeftArm.isHidden = false;
modelPlayer.bipedRightArm.isHidden = false;
}
}
/*
* Renders correct arm rotation
*/
@SideOnly(Side.CLIENT)
@SubscribeEvent
public void onPlayerRenderPre(RenderPlayerEvent.Pre event)
{
EntityPlayer player = event.getEntityPlayer();
AbstractClientPlayer aplayer = (AbstractClientPlayer) player;
ItemStack stack = player.getHeldItemMainhand();
ModelPlayer model = event.getRenderer().getMainModel();
EntityPlayerSP clientPlayer = Minecraft.getMinecraft().player;
ResourceLocation skinLoc = DefaultPlayerSkin.getDefaultSkin(player.getPersistentID());
ModelRenderer fakeLeftArm = new ModelRenderer(model, 32, 48);
ModelRenderer fakeRightArm = new ModelRenderer(model, 40, 16);
if (!stack.isEmpty() && stack.getItem() == RegistrationHandler.itemEntity && ItemEntity.hasEntityData(stack))
{
if (model.bipedBody.childModels != null && !model.bipedBody.childModels.isEmpty())
model.bipedBody.childModels.clear();
model.bipedLeftArm.isHidden = true;
model.bipedRightArm.isHidden = true;
Minecraft.getMinecraft().getTextureManager().bindTexture(skinLoc);
float rotation = -player.renderYawOffset;
if (aplayer.getSkinType().equals("default"))
{
fakeLeftArm.addBox(model.bipedLeftArm.offsetX + 4.2F, model.bipedLeftArm.offsetY, model.bipedLeftArm.offsetZ, 4, 12, 4, .08F);
}
else
{
fakeLeftArm.addBox(model.bipedLeftArm.offsetX + 4.2F, model.bipedLeftArm.offsetY, model.bipedLeftArm.offsetZ, 3, 12, 4, .08F);
}
if (aplayer.getSkinType().equals("default"))
{
fakeRightArm.addBox(model.bipedRightArm.offsetX - 7.9F, model.bipedRightArm.offsetY, model.bipedRightArm.offsetZ, 4, 12, 4, .08F);
}
else
{
fakeRightArm.addBox(model.bipedRightArm.offsetX - 7.2F, model.bipedRightArm.offsetY, model.bipedRightArm.offsetZ, 3, 12, 4, .08F);
}
if (!player.isSneaking())
{
fakeRightArm.rotateAngleX = -1.2F;
fakeLeftArm.rotateAngleX = -1.2F;
}
else
{
fakeRightArm.rotateAngleX = -1.7F;
fakeLeftArm.rotateAngleX = -1.7F;
}
fakeRightArm.rotateAngleY = -0.15f;
fakeLeftArm.rotateAngleY = 0.15f;
model.bipedBody.addChild(fakeLeftArm);
model.bipedBody.addChild(fakeRightArm);
}
else
{
model.bipedLeftArm.isHidden = false;
model.bipedRightArm.isHidden = false;
if (model.bipedBody.childModels != null && !model.bipedBody.childModels.isEmpty())
{
model.bipedBody.childModels.clear();
}
}
if (stack.isEmpty() || stack.getItem() != RegistrationHandler.itemEntity || !ItemEntity.hasEntityData(stack))
{
model.bipedLeftArm.isHidden = false;
model.bipedRightArm.isHidden = false;
}
}
@SideOnly(Side.CLIENT)
private static RenderPlayer getRenderPlayer(AbstractClientPlayer player)
{
Minecraft mc = Minecraft.getMinecraft();
RenderManager manager = mc.getRenderManager();
return manager.getSkinMap().get(player.getSkinType());
}
@SideOnly(Side.CLIENT)
private static ModelPlayer getPlayerModel(AbstractClientPlayer player)
{
return getRenderPlayer(player).getMainModel();
}
}

View File

@ -8,7 +8,6 @@ import net.minecraft.client.Minecraft;
import net.minecraft.client.entity.AbstractClientPlayer;
import net.minecraft.client.entity.EntityPlayerSP;
import net.minecraft.client.gui.inventory.GuiContainer;
import net.minecraft.client.model.ModelBiped;
import net.minecraft.client.model.ModelPlayer;
import net.minecraft.client.model.ModelRenderer;
import net.minecraft.client.renderer.GlStateManager;
@ -21,6 +20,7 @@ import net.minecraft.client.settings.KeyBinding;
import net.minecraft.entity.item.EntityItem;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Blocks;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.EnumHand;
@ -38,6 +38,7 @@ import net.minecraftforge.fml.relauncher.SideOnly;
import tschipp.carryon.common.config.CarryOnConfig;
import tschipp.carryon.common.handler.ModelOverridesHandler;
import tschipp.carryon.common.handler.RegistrationHandler;
import tschipp.carryon.common.item.ItemEntity;
import tschipp.carryon.common.item.ItemTile;
public class RenderEvents
@ -159,13 +160,16 @@ public class RenderEvents
}
else
{
event.setCanceled(false);
Minecraft mc = Minecraft.getMinecraft();
RenderManager manager = mc.getRenderManager();
RenderPlayer renderPlayer = manager.getSkinMap().get(aplayer.getSkinType());
ModelPlayer modelPlayer = renderPlayer.getMainModel();
modelPlayer.bipedLeftArm.isHidden = false;
modelPlayer.bipedRightArm.isHidden = false;
if (stack.isEmpty() ? true : stack.getItem() != RegistrationHandler.itemEntity)
{
event.setCanceled(false);
Minecraft mc = Minecraft.getMinecraft();
RenderManager manager = mc.getRenderManager();
RenderPlayer renderPlayer = manager.getSkinMap().get(aplayer.getSkinType());
ModelPlayer modelPlayer = renderPlayer.getMainModel();
modelPlayer.bipedLeftArm.isHidden = false;
modelPlayer.bipedRightArm.isHidden = false;
}
}
}
@ -181,6 +185,7 @@ public class RenderEvents
ModelPlayer modelPlayer = event.getRenderer().getMainModel();
EntityPlayerSP clientPlayer = Minecraft.getMinecraft().player;
ItemStack stack = player.getHeldItemMainhand();
float partialticks = event.getPartialRenderTick();
if (!stack.isEmpty() && stack.getItem() == RegistrationHandler.itemTile && ItemTile.hasTileData(stack))
{
Block block = ItemTile.getBlock(stack);
@ -196,9 +201,17 @@ public class RenderEvents
float rotation = -player.renderYawOffset;
int perspective = Minecraft.getMinecraft().gameSettings.thirdPersonView;
double xOffset = (double) player.posX - (double) clientPlayer.posX;
double yOffset = (double) player.posY - (double) clientPlayer.posY;
double zOffset = (double) player.posZ - (double) clientPlayer.posZ;
double d0 = player.lastTickPosX + (player.posX - player.lastTickPosX) * (double) partialticks;
double d1 = player.lastTickPosY + (player.posY - player.lastTickPosY) * (double) partialticks;
double d2 = player.lastTickPosZ + (player.posZ - player.lastTickPosZ) * (double) partialticks;
double c0 = clientPlayer.lastTickPosX + (clientPlayer.posX - clientPlayer.lastTickPosX) * (double) partialticks;
double c1 = clientPlayer.lastTickPosY + (clientPlayer.posY - clientPlayer.lastTickPosY) * (double) partialticks;
double c2 = clientPlayer.lastTickPosZ + (clientPlayer.posZ - clientPlayer.lastTickPosZ) * (double) partialticks;
double xOffset = d0 - c0;
double yOffset = d1 - c1;
double zOffset = d2 - c2;
GlStateManager.pushMatrix();
GlStateManager.translate(xOffset, yOffset, zOffset);
@ -225,11 +238,7 @@ public class RenderEvents
GlStateManager.popMatrix();
}
else
{
modelPlayer.bipedLeftArm.isHidden = false;
modelPlayer.bipedRightArm.isHidden = false;
}
}
@ -251,11 +260,13 @@ public class RenderEvents
ModelRenderer fakeLeftArm = new ModelRenderer(model, 32, 48);
ModelRenderer fakeRightArm = new ModelRenderer(model, 40, 16);
if (!stack.isEmpty() && stack.getItem() == RegistrationHandler.itemTile && ItemTile.hasTileData(stack))
if (!stack.isEmpty() && (stack.getItem() == RegistrationHandler.itemTile && ItemTile.hasTileData(stack)) || (stack.getItem() == RegistrationHandler.itemEntity && ItemEntity.hasEntityData(stack)))
{
if (model.bipedBody.childModels != null && !model.bipedBody.childModels.isEmpty())
model.bipedBody.childModels.clear();
Item item = stack.getItem();
model.bipedLeftArm.isHidden = true;
model.bipedRightArm.isHidden = true;
@ -279,15 +290,35 @@ public class RenderEvents
fakeRightArm.addBox(model.bipedRightArm.offsetX - 7.2F, model.bipedRightArm.offsetY, model.bipedRightArm.offsetZ, 3, 12, 4, .08F);
}
if (!player.isSneaking())
if (item == RegistrationHandler.itemTile)
{
fakeRightArm.rotateAngleX = -.9F;
fakeLeftArm.rotateAngleX = -.9F;
if (!player.isSneaking())
{
fakeRightArm.rotateAngleX = -.9F;
fakeLeftArm.rotateAngleX = -.9F;
}
else
{
fakeRightArm.rotateAngleX = -1.4F;
fakeLeftArm.rotateAngleX = -1.4F;
}
}
else
{
fakeRightArm.rotateAngleX = -1.4F;
fakeLeftArm.rotateAngleX = -1.4F;
if (!player.isSneaking())
{
fakeRightArm.rotateAngleX = -1.2F;
fakeLeftArm.rotateAngleX = -1.2F;
}
else
{
fakeRightArm.rotateAngleX = -1.7F;
fakeLeftArm.rotateAngleX = -1.7F;
}
fakeRightArm.rotateAngleY = -0.15f;
fakeLeftArm.rotateAngleY = 0.15f;
}
model.bipedBody.addChild(fakeLeftArm);
model.bipedBody.addChild(fakeRightArm);
@ -303,7 +334,7 @@ public class RenderEvents
}
}
if (stack.isEmpty() || stack.getItem() != RegistrationHandler.itemTile || !ItemTile.hasTileData(stack))
if (stack.isEmpty() || (stack.getItem() != RegistrationHandler.itemTile && stack.getItem() != RegistrationHandler.itemEntity))
{
model.bipedLeftArm.isHidden = false;
model.bipedRightArm.isHidden = false;

View File

@ -46,7 +46,9 @@ public class Configs {
public String[] forbiddenEntities = new String[]
{
"minecraft:ender_crystal",
"minecraft:ender_dragon"
"minecraft:ender_dragon",
"minecraft:ghast",
"minecraft:shulker"
};
}