Merge pull request #36 from SteveKunG/render-fix

More fixes
This commit is contained in:
Tschipp 2017-09-28 16:51:01 +02:00 committed by GitHub
commit 59bbd78cd3
2 changed files with 687 additions and 681 deletions

View File

@ -4,23 +4,19 @@ import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException; import java.lang.reflect.InvocationTargetException;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraft.client.entity.AbstractClientPlayer;
import net.minecraft.client.entity.EntityPlayerSP; import net.minecraft.client.entity.EntityPlayerSP;
import net.minecraft.client.gui.inventory.GuiContainer; import net.minecraft.client.gui.inventory.GuiContainer;
import net.minecraft.client.model.ModelPlayer;
import net.minecraft.client.renderer.GlStateManager; import net.minecraft.client.renderer.GlStateManager;
import net.minecraft.client.renderer.OpenGlHelper; import net.minecraft.client.renderer.OpenGlHelper;
import net.minecraft.client.renderer.RenderHelper; import net.minecraft.client.renderer.RenderHelper;
import net.minecraft.client.settings.GameSettings; import net.minecraft.client.settings.GameSettings;
import net.minecraft.client.settings.KeyBinding; import net.minecraft.client.settings.KeyBinding;
import net.minecraft.entity.Entity; import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityList;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.EnumHand; import net.minecraft.util.EnumHand;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.MathHelper;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.client.event.GuiOpenEvent; import net.minecraftforge.client.event.GuiOpenEvent;
import net.minecraftforge.client.event.MouseEvent; import net.minecraftforge.client.event.MouseEvent;
@ -31,288 +27,279 @@ import net.minecraftforge.fml.common.gameevent.InputEvent;
import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly; import net.minecraftforge.fml.relauncher.SideOnly;
import tschipp.carryon.common.handler.RegistrationHandler; import tschipp.carryon.common.handler.RegistrationHandler;
import tschipp.carryon.common.helper.ScriptParseHelper;
import tschipp.carryon.common.item.ItemEntity; import tschipp.carryon.common.item.ItemEntity;
import tschipp.carryon.common.scripting.CarryOnOverride;
import tschipp.carryon.common.scripting.ScriptChecker;
public class RenderEntityEvents public class RenderEntityEvents
{ {
/*
* Prevents the Player from scrolling
*/
@SideOnly(Side.CLIENT)
@SubscribeEvent
public void onScroll(MouseEvent event) throws IllegalArgumentException, IllegalAccessException
{
if (event.getDwheel() > 0 || event.getDwheel() < 0 || Minecraft.getMinecraft().gameSettings.keyBindPickBlock.isPressed())
{
ItemStack stack = Minecraft.getMinecraft().player.getHeldItemMainhand();
/* if (!stack.isEmpty() && stack.getItem() == RegistrationHandler.itemEntity)
* Prevents the Player from scrolling {
*/ if (ItemEntity.hasEntityData(stack))
@SideOnly(Side.CLIENT) {
@SubscribeEvent event.setCanceled(true);
public void onScroll(MouseEvent event) throws IllegalArgumentException, IllegalAccessException }
{ }
if (event.getDwheel() > 0 || event.getDwheel() < 0) }
{ }
ItemStack stack = Minecraft.getMinecraft().player.getHeldItemMainhand();
if (!stack.isEmpty() && stack.getItem() == RegistrationHandler.itemEntity)
{
if (ItemEntity.hasEntityData(stack))
event.setCanceled(true);
}
}
} /*
* Prevents the Player from opening Guis
*/
@SideOnly(Side.CLIENT)
@SubscribeEvent
public void onGuiOpen(GuiOpenEvent event)
{
if (event.getGui() != null)
{
boolean inventory = event.getGui() instanceof GuiContainer;
EntityPlayer player = Minecraft.getMinecraft().player;
/* if (player != null)
* Prevents the Player from opening Guis {
*/ ItemStack stack = player.getHeldItem(EnumHand.MAIN_HAND);
@SideOnly(Side.CLIENT)
@SubscribeEvent
public void onGuiOpen(GuiOpenEvent event)
{
if (event.getGui() != null)
{
boolean inventory = event.getGui() instanceof GuiContainer;
EntityPlayer player = Minecraft.getMinecraft().player;
if (player != null)
{
ItemStack stack = player.getHeldItem(EnumHand.MAIN_HAND);
if (inventory && !stack.isEmpty() && stack.getItem() == RegistrationHandler.itemEntity && ItemEntity.hasEntityData(stack))
{
event.setCanceled(true);
Minecraft.getMinecraft().currentScreen = null;
}
}
}
}
/* if (inventory && !stack.isEmpty() && stack.getItem() == RegistrationHandler.itemEntity && ItemEntity.hasEntityData(stack))
* Prevents the Player from switching Slots {
*/ event.setCanceled(true);
@SideOnly(Side.CLIENT) Minecraft.getMinecraft().currentScreen = null;
@SubscribeEvent }
public void inputEvent(InputEvent event) throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException, InvocationTargetException }
{ }
GameSettings settings = Minecraft.getMinecraft().gameSettings; }
Field field = KeyBinding.class.getDeclaredFields()[7];
field.setAccessible(true);
ItemStack stack = Minecraft.getMinecraft().player.getHeldItemMainhand();
EntityPlayer player = Minecraft.getMinecraft().player;
if (!stack.isEmpty() && stack.getItem() == RegistrationHandler.itemEntity && ItemEntity.hasEntityData(stack))
{
if (settings.keyBindDrop.isPressed())
{
field.set(settings.keyBindDrop, false);
}
if (settings.keyBindSwapHands.isPressed())
{
field.set(settings.keyBindSwapHands, false);
}
for (KeyBinding keyBind : settings.keyBindsHotbar)
{
if (keyBind.isPressed())
{
field.set(keyBind, false);
}
}
} /*
* Prevents the Player from switching Slots
*/
@SideOnly(Side.CLIENT)
@SubscribeEvent
public void inputEvent(InputEvent event) throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException, InvocationTargetException
{
GameSettings settings = Minecraft.getMinecraft().gameSettings;
Field field = KeyBinding.class.getDeclaredFields()[7];
field.setAccessible(true);
ItemStack stack = Minecraft.getMinecraft().player.getHeldItemMainhand();
EntityPlayer player = Minecraft.getMinecraft().player;
int current = player.inventory.currentItem; if (!stack.isEmpty() && stack.getItem() == RegistrationHandler.itemEntity && ItemEntity.hasEntityData(stack))
{
if (settings.keyBindDrop.isPressed())
{
field.set(settings.keyBindDrop, false);
}
if (settings.keyBindSwapHands.isPressed())
{
field.set(settings.keyBindSwapHands, false);
}
for (KeyBinding keyBind : settings.keyBindsHotbar)
{
if (keyBind.isPressed())
{
field.set(keyBind, false);
}
}
}
if (player.getEntityData().hasKey("carrySlot") ? player.getEntityData().getInteger("carrySlot") != current : false) int current = player.inventory.currentItem;
player.inventory.currentItem = player.getEntityData().getInteger("carrySlot");
}
/* if (player.getEntityData().hasKey("carrySlot") ? player.getEntityData().getInteger("carrySlot") != current : false)
* Renders the Entity in First Person {
*/ player.inventory.currentItem = player.getEntityData().getInteger("carrySlot");
@SideOnly(Side.CLIENT) }
@SubscribeEvent }
public void renderHand(RenderHandEvent event)
{
World world = Minecraft.getMinecraft().world; /*
EntityPlayer player = Minecraft.getMinecraft().player; * Renders the Entity in First Person
AbstractClientPlayer aplayer = (AbstractClientPlayer) player; */
ItemStack stack = player.getHeldItemMainhand(); @SideOnly(Side.CLIENT)
int perspective = Minecraft.getMinecraft().gameSettings.thirdPersonView; @SubscribeEvent
float partialticks = event.getPartialTicks(); public void renderHand(RenderHandEvent event)
{
World world = Minecraft.getMinecraft().world;
EntityPlayer player = Minecraft.getMinecraft().player;
ItemStack stack = player.getHeldItemMainhand();
int perspective = Minecraft.getMinecraft().gameSettings.thirdPersonView;
float partialticks = event.getPartialTicks();
if (!stack.isEmpty() && stack.getItem() == RegistrationHandler.itemEntity && ItemEntity.hasEntityData(stack)) if (!stack.isEmpty() && stack.getItem() == RegistrationHandler.itemEntity && ItemEntity.hasEntityData(stack))
{ {
BlockPos pos = player.getPosition(); Entity entity = ItemEntity.getEntity(stack, world);
Entity entity = ItemEntity.getEntity(stack, world);
if (entity != null)
{
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;
entity.setPosition(d0, d1, d2); if (entity != null)
entity.rotationYaw = 0.0f; {
entity.prevRotationYaw = 0.0f; double d0 = player.lastTickPosX + (player.posX - player.lastTickPosX) * partialticks;
entity.setRotationYawHead(0.0f); double d1 = player.lastTickPosY + (player.posY - player.lastTickPosY) * partialticks;
double d2 = player.lastTickPosZ + (player.posZ - player.lastTickPosZ) * partialticks;
float height = entity.height; entity.setPosition(d0, d1, d2);
float width = entity.width; entity.rotationYaw = 0.0f;
float multiplier = height * width; entity.prevRotationYaw = 0.0f;
entity.setRotationYawHead(0.0f);
GlStateManager.pushMatrix(); float height = entity.height;
GlStateManager.scale(.8, .8, .8); float width = entity.width;
GlStateManager.rotate(180, 0, 1, 0); GlStateManager.pushMatrix();
GlStateManager.translate(0.0, -height - .1, width + 0.1); GlStateManager.scale(.8, .8, .8);
GlStateManager.enableAlpha(); GlStateManager.rotate(180, 0, 1, 0);
GlStateManager.translate(0.0, -height - .1, width + 0.1);
GlStateManager.enableAlpha();
if (perspective == 0) if (perspective == 0)
{ {
RenderHelper.enableStandardItemLighting(); RenderHelper.enableStandardItemLighting();
Minecraft.getMinecraft().getRenderManager().setRenderShadow(false); Minecraft.getMinecraft().getRenderManager().setRenderShadow(false);
this.renderEntityStatic(entity);
Minecraft.getMinecraft().getRenderManager().setRenderShadow(true);
}
CarryOnOverride carryOverride = ScriptChecker.inspectEntity(entity); GlStateManager.disableAlpha();
if (carryOverride != null) GlStateManager.scale(1, 1, 1);
{ GlStateManager.popMatrix();
double[] translation = ScriptParseHelper.getXYZArray(carryOverride.getRenderTranslation());
double[] rotation = ScriptParseHelper.getXYZArray(carryOverride.getRenderRotation());
double[] scale = ScriptParseHelper.getScale(carryOverride.getRenderScale());
String entityname = carryOverride.getRenderNameEntity();
if (entityname != null)
{
Entity newEntity = EntityList.createEntityByIDFromName(new ResourceLocation(entityname), world);
if (newEntity != null)
{
NBTTagCompound nbttag = carryOverride.getRenderNBT();
if (nbttag != null)
newEntity.readFromNBT(nbttag);
entity = newEntity;
entity.setPosition(d0, d1, d2);
entity.rotationYaw = 0.0f;
entity.prevRotationYaw = 0.0f;
entity.setRotationYawHead(0.0f);
}
}
GlStateManager.translate(translation[0], translation[1], translation[2]); RenderHelper.disableStandardItemLighting();
GlStateManager.rotate((float) rotation[0], 1, 0, 0); GlStateManager.disableRescaleNormal();
GlStateManager.rotate((float) rotation[1], 0, 1, 0); GlStateManager.setActiveTexture(OpenGlHelper.lightmapTexUnit);
GlStateManager.rotate((float) rotation[2], 0, 0, 1); GlStateManager.disableTexture2D();
GlStateManager.scale(scale[0], scale[1], scale[2]); GlStateManager.setActiveTexture(OpenGlHelper.defaultTexUnit);
} if (perspective == 0)
Minecraft.getMinecraft().getRenderManager().renderEntityStatic(entity, 0.0f, false); {
Minecraft.getMinecraft().getRenderManager().setRenderShadow(true); event.setCanceled(true);
}
}
}
}
} @SideOnly(Side.CLIENT)
private void renderEntityStatic(Entity entity)
{
if (entity.ticksExisted == 0)
{
entity.lastTickPosX = entity.posX;
entity.lastTickPosY = entity.posY;
entity.lastTickPosZ = entity.posZ;
}
GlStateManager.disableAlpha(); float f = entity.prevRotationYaw + (entity.rotationYaw - entity.prevRotationYaw);
int i = this.getBrightnessForRender(entity, Minecraft.getMinecraft().player);
GlStateManager.scale(1, 1, 1); if (entity.isBurning())
GlStateManager.popMatrix(); {
i = 15728880;
}
RenderHelper.disableStandardItemLighting(); int j = i % 65536;
GlStateManager.disableRescaleNormal(); int k = i / 65536;
GlStateManager.setActiveTexture(OpenGlHelper.lightmapTexUnit); OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, j, k);
GlStateManager.disableTexture2D(); GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F);
GlStateManager.setActiveTexture(OpenGlHelper.defaultTexUnit);
if (perspective == 0) this.setLightmapDisabled(false);
event.setCanceled(true); Minecraft.getMinecraft().getRenderManager().doRenderEntity(entity, 0.0D, 0.0D, 0.0D, f, 0.0F, true);
this.setLightmapDisabled(true);
}
} @SideOnly(Side.CLIENT)
} private int getBrightnessForRender(Entity entity, EntityPlayer player)
{
BlockPos.MutableBlockPos blockpos$mutableblockpos = new BlockPos.MutableBlockPos(MathHelper.floor(player.posX), 0, MathHelper.floor(player.posZ));
} if (entity.world.isBlockLoaded(blockpos$mutableblockpos))
{
blockpos$mutableblockpos.setY(MathHelper.floor(player.posY + entity.getEyeHeight()));
return entity.world.getCombinedLight(blockpos$mutableblockpos, 0);
}
else
{
return 0;
}
}
/* @SideOnly(Side.CLIENT)
* Renders the Block in Third Person private void setLightmapDisabled(boolean disabled)
*/ {
@SideOnly(Side.CLIENT) GlStateManager.setActiveTexture(OpenGlHelper.lightmapTexUnit);
@SubscribeEvent
public void onPlayerRenderPost(RenderPlayerEvent.Post event)
{
World world = Minecraft.getMinecraft().world;
EntityPlayer player = event.getEntityPlayer();
ModelPlayer modelPlayer = event.getRenderer().getMainModel();
EntityPlayerSP clientPlayer = Minecraft.getMinecraft().player;
ItemStack stack = player.getHeldItemMainhand();
float partialticks = event.getPartialRenderTick();
if (!stack.isEmpty() && stack.getItem() == RegistrationHandler.itemEntity && ItemEntity.hasEntityData(stack))
{
Entity entity = ItemEntity.getEntity(stack, world);
float rotation = -(player.prevRenderYawOffset + (player.renderYawOffset - player.prevRenderYawOffset) * partialticks); if (disabled)
{
GlStateManager.disableTexture2D();
}
else
{
GlStateManager.enableTexture2D();
}
int perspective = Minecraft.getMinecraft().gameSettings.thirdPersonView; GlStateManager.setActiveTexture(OpenGlHelper.defaultTexUnit);
}
if (entity != null) /*
{ * Renders the Block in Third Person
double d0 = player.lastTickPosX + (player.posX - player.lastTickPosX) * (double) partialticks; */
double d1 = player.lastTickPosY + (player.posY - player.lastTickPosY) * (double) partialticks; @SideOnly(Side.CLIENT)
double d2 = player.lastTickPosZ + (player.posZ - player.lastTickPosZ) * (double) partialticks; @SubscribeEvent
public void onPlayerRenderPost(RenderPlayerEvent.Post event)
{
World world = Minecraft.getMinecraft().world;
EntityPlayer player = event.getEntityPlayer();
event.getRenderer().getMainModel();
EntityPlayerSP clientPlayer = Minecraft.getMinecraft().player;
ItemStack stack = player.getHeldItemMainhand();
float partialticks = event.getPartialRenderTick();
double c0 = clientPlayer.lastTickPosX + (clientPlayer.posX - clientPlayer.lastTickPosX) * (double) partialticks; if (!stack.isEmpty() && stack.getItem() == RegistrationHandler.itemEntity && ItemEntity.hasEntityData(stack))
double c1 = clientPlayer.lastTickPosY + (clientPlayer.posY - clientPlayer.lastTickPosY) * (double) partialticks; {
double c2 = clientPlayer.lastTickPosZ + (clientPlayer.posZ - clientPlayer.lastTickPosZ) * (double) partialticks; Entity entity = ItemEntity.getEntity(stack, world);
float rotation = -(player.prevRenderYawOffset + (player.renderYawOffset - player.prevRenderYawOffset) * partialticks);
double xOffset = d0 - c0; if (entity != null)
double yOffset = d1 - c1; {
double zOffset = d2 - c2; double d0 = player.lastTickPosX + (player.posX - player.lastTickPosX) * partialticks;
double d1 = player.lastTickPosY + (player.posY - player.lastTickPosY) * partialticks;
double d2 = player.lastTickPosZ + (player.posZ - player.lastTickPosZ) * partialticks;
float height = entity.height; double c0 = clientPlayer.lastTickPosX + (clientPlayer.posX - clientPlayer.lastTickPosX) * partialticks;
float width = entity.width; double c1 = clientPlayer.lastTickPosY + (clientPlayer.posY - clientPlayer.lastTickPosY) * partialticks;
float multiplier = height * width; double c2 = clientPlayer.lastTickPosZ + (clientPlayer.posZ - clientPlayer.lastTickPosZ) * partialticks;
entity.setPosition(c0, c1, c2); double xOffset = d0 - c0;
entity.rotationYaw = 0.0f; double yOffset = d1 - c1;
entity.prevRotationYaw = 0.0f; double zOffset = d2 - c2;
entity.setRotationYawHead(0.0f);
GlStateManager.pushMatrix(); float height = entity.height;
GlStateManager.translate(xOffset, yOffset, zOffset); float width = entity.width;
GlStateManager.scale((10 - multiplier) * 0.08, (10 - multiplier) * 0.08, (10 - multiplier) * 0.08); float multiplier = height * width;
GlStateManager.rotate(rotation, 0, 1f, 0);
GlStateManager.translate(0.0, (height / 2) + -(height / 2) + 1, (width - 0.1) < 0.7 ? (width - 0.1) + (0.7 - (width - 0.1)) : (width - 0.1));
if (player.isSneaking()) entity.setPosition(c0, c1, c2);
GlStateManager.translate(0, -0.3, 0); entity.rotationYaw = 0.0f;
entity.prevRotationYaw = 0.0f;
entity.setRotationYawHead(0.0f);
Minecraft.getMinecraft().getRenderManager().setRenderShadow(false); GlStateManager.pushMatrix();
GlStateManager.translate(xOffset, yOffset, zOffset);
GlStateManager.scale((10 - multiplier) * 0.08, (10 - multiplier) * 0.08, (10 - multiplier) * 0.08);
GlStateManager.rotate(rotation, 0, 1f, 0);
GlStateManager.translate(0.0, height / 2 + -(height / 2) + 1, width - 0.1 < 0.7 ? width - 0.1 + (0.7 - (width - 0.1)) : width - 0.1);
CarryOnOverride carryOverride = ScriptChecker.inspectEntity(entity); if (player.isSneaking())
if (carryOverride != null) {
{ GlStateManager.translate(0, -0.3, 0);
double[] translation = ScriptParseHelper.getXYZArray(carryOverride.getRenderTranslation()); }
double[] rot = ScriptParseHelper.getXYZArray(carryOverride.getRenderRotation());
double[] scale = ScriptParseHelper.getScale(carryOverride.getRenderScale());
String entityname = carryOverride.getRenderNameEntity();
if (entityname != null)
{
Entity newEntity = EntityList.createEntityByIDFromName(new ResourceLocation(entityname), world);
if (newEntity != null)
{
NBTTagCompound nbttag = carryOverride.getRenderNBT();
if (nbttag != null)
newEntity.readFromNBT(nbttag);
entity = newEntity;
entity.setPosition(c0, c1, c2);
entity.rotationYaw = 0.0f;
entity.prevRotationYaw = 0.0f;
entity.setRotationYawHead(0.0f);
}
}
GlStateManager.translate(translation[0], translation[1], translation[2]); Minecraft.getMinecraft().getRenderManager().setRenderShadow(false);
GlStateManager.rotate((float) rot[0], 1, 0, 0); Minecraft.getMinecraft().getRenderManager().renderEntityStatic(entity, 0.0f, false);
GlStateManager.rotate((float) rot[1], 0, 1, 0); Minecraft.getMinecraft().getRenderManager().setRenderShadow(true);
GlStateManager.rotate((float) rot[2], 0, 0, 1);
GlStateManager.scale(scale[0], scale[1], scale[2]);
}
Minecraft.getMinecraft().getRenderManager().renderEntityStatic(entity, 0.0f, false);
Minecraft.getMinecraft().getRenderManager().setRenderShadow(true);
GlStateManager.scale(1, 1, 1);
GlStateManager.popMatrix();
}
}
}
GlStateManager.scale(1, 1, 1);
GlStateManager.popMatrix();
}
}
}
} }

View File

@ -12,6 +12,7 @@ import net.minecraft.client.gui.inventory.GuiContainer;
import net.minecraft.client.model.ModelPlayer; import net.minecraft.client.model.ModelPlayer;
import net.minecraft.client.model.ModelRenderer; import net.minecraft.client.model.ModelRenderer;
import net.minecraft.client.renderer.GlStateManager; import net.minecraft.client.renderer.GlStateManager;
import net.minecraft.client.renderer.OpenGlHelper;
import net.minecraft.client.renderer.block.model.IBakedModel; import net.minecraft.client.renderer.block.model.IBakedModel;
import net.minecraft.client.renderer.entity.RenderManager; import net.minecraft.client.renderer.entity.RenderManager;
import net.minecraft.client.renderer.entity.RenderPlayer; import net.minecraft.client.renderer.entity.RenderPlayer;
@ -27,6 +28,7 @@ import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.EnumHand; import net.minecraft.util.EnumHand;
import net.minecraft.util.ResourceLocation; import net.minecraft.util.ResourceLocation;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.MathHelper;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.client.event.GuiOpenEvent; import net.minecraftforge.client.event.GuiOpenEvent;
import net.minecraftforge.client.event.MouseEvent; import net.minecraftforge.client.event.MouseEvent;
@ -43,12 +45,8 @@ import tschipp.carryon.client.keybinds.CarryOnKeybinds;
import tschipp.carryon.common.config.CarryOnConfig; import tschipp.carryon.common.config.CarryOnConfig;
import tschipp.carryon.common.handler.ModelOverridesHandler; import tschipp.carryon.common.handler.ModelOverridesHandler;
import tschipp.carryon.common.handler.RegistrationHandler; import tschipp.carryon.common.handler.RegistrationHandler;
import tschipp.carryon.common.helper.ScriptParseHelper;
import tschipp.carryon.common.helper.StringParser;
import tschipp.carryon.common.item.ItemEntity; import tschipp.carryon.common.item.ItemEntity;
import tschipp.carryon.common.item.ItemTile; import tschipp.carryon.common.item.ItemTile;
import tschipp.carryon.common.scripting.CarryOnOverride;
import tschipp.carryon.common.scripting.ScriptChecker;
import tschipp.carryon.network.server.SyncKeybindPacket; import tschipp.carryon.network.server.SyncKeybindPacket;
public class RenderEvents public class RenderEvents
@ -59,495 +57,516 @@ public class RenderEvents
private ModelRenderer fakeLeftArmwear; private ModelRenderer fakeLeftArmwear;
private ModelRenderer fakeRightArmwear; private ModelRenderer fakeRightArmwear;
/* /*
* Prevents the Player from scrolling * Prevents the Player from scrolling
*/ */
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
@SubscribeEvent @SubscribeEvent
public void onScroll(MouseEvent event) public void onScroll(MouseEvent event)
{ {
if (event.getDwheel() > 0 || event.getDwheel() < 0) if (event.getDwheel() > 0 || event.getDwheel() < 0 || Minecraft.getMinecraft().gameSettings.keyBindPickBlock.isPressed())
{ {
ItemStack stack = Minecraft.getMinecraft().player.getHeldItemMainhand(); ItemStack stack = Minecraft.getMinecraft().player.getHeldItemMainhand();
if (!stack.isEmpty() && stack.getItem() == RegistrationHandler.itemTile)
{
if (ItemTile.hasTileData(stack))
event.setCanceled(true);
}
}
} if (!stack.isEmpty() && stack.getItem() == RegistrationHandler.itemTile)
{
if (ItemTile.hasTileData(stack))
{
event.setCanceled(true);
}
}
}
}
@SubscribeEvent @SubscribeEvent
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
public void onPlayerTick(PlayerTickEvent event) throws IllegalArgumentException, IllegalAccessException, InvocationTargetException public void onPlayerTick(PlayerTickEvent event) throws IllegalArgumentException, IllegalAccessException, InvocationTargetException
{ {
EntityPlayer player = event.player; EntityPlayer player = event.player;
if (player != null && event.side == Side.CLIENT)
{
boolean keyPressed = CarryOnKeybinds.carryKey.isKeyDown(); if (player != null && event.side == Side.CLIENT)
boolean playerKeyPressed = CarryOnKeybinds.isKeyPressed(player); {
boolean keyPressed = CarryOnKeybinds.carryKey.isKeyDown();
boolean playerKeyPressed = CarryOnKeybinds.isKeyPressed(player);
if (keyPressed && !playerKeyPressed) if (keyPressed && !playerKeyPressed)
{ {
CarryOnKeybinds.setKeyPressed(player, true); CarryOnKeybinds.setKeyPressed(player, true);
CarryOn.network.sendToServer(new SyncKeybindPacket(true)); CarryOn.network.sendToServer(new SyncKeybindPacket(true));
} }
else if (!keyPressed && playerKeyPressed) else if (!keyPressed && playerKeyPressed)
{ {
CarryOnKeybinds.setKeyPressed(player, false); CarryOnKeybinds.setKeyPressed(player, false);
CarryOn.network.sendToServer(new SyncKeybindPacket(false)); CarryOn.network.sendToServer(new SyncKeybindPacket(false));
} }
}
}
} /*
} * Prevents the Player from opening Guis
*/
@SideOnly(Side.CLIENT)
@SubscribeEvent
public void onGuiOpen(GuiOpenEvent event)
{
if (event.getGui() != null)
{
boolean inventory = event.getGui() instanceof GuiContainer;
EntityPlayer player = Minecraft.getMinecraft().player;
/* if (player != null)
* Prevents the Player from opening Guis {
*/ ItemStack stack = player.getHeldItem(EnumHand.MAIN_HAND);
@SideOnly(Side.CLIENT)
@SubscribeEvent
public void onGuiOpen(GuiOpenEvent event)
{
if (event.getGui() != null)
{
boolean inventory = event.getGui() instanceof GuiContainer;
EntityPlayer player = Minecraft.getMinecraft().player;
if (player != null)
{
ItemStack stack = player.getHeldItem(EnumHand.MAIN_HAND);
if (inventory && !stack.isEmpty() && stack.getItem() == RegistrationHandler.itemTile && ItemTile.hasTileData(stack))
{
event.setCanceled(true);
Minecraft.getMinecraft().currentScreen = null;
}
}
}
}
/* if (inventory && !stack.isEmpty() && stack.getItem() == RegistrationHandler.itemTile && ItemTile.hasTileData(stack))
* Prevents the Player from switching Slots {
*/ event.setCanceled(true);
@SideOnly(Side.CLIENT) Minecraft.getMinecraft().currentScreen = null;
@SubscribeEvent }
public void inputEvent(InputEvent event) throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException }
{ }
GameSettings settings = Minecraft.getMinecraft().gameSettings; }
Field field = KeyBinding.class.getDeclaredFields()[7];
field.setAccessible(true);
ItemStack stack = Minecraft.getMinecraft().player.getHeldItemMainhand();
EntityPlayer player = Minecraft.getMinecraft().player;
if (!stack.isEmpty() && stack.getItem() == RegistrationHandler.itemTile && ItemTile.hasTileData(stack))
{
if (settings.keyBindDrop.isPressed())
{
field.set(settings.keyBindDrop, false);
}
if (settings.keyBindSwapHands.isPressed())
{
field.set(settings.keyBindSwapHands, false);
}
for (KeyBinding keyBind : settings.keyBindsHotbar)
{
if (keyBind.isPressed())
{
field.set(keyBind, false);
}
}
} /*
* Prevents the Player from switching Slots
*/
@SideOnly(Side.CLIENT)
@SubscribeEvent
public void inputEvent(InputEvent event) throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException
{
GameSettings settings = Minecraft.getMinecraft().gameSettings;
Field field = KeyBinding.class.getDeclaredFields()[7];
field.setAccessible(true);
ItemStack stack = Minecraft.getMinecraft().player.getHeldItemMainhand();
EntityPlayer player = Minecraft.getMinecraft().player;
int current = player.inventory.currentItem; if (!stack.isEmpty() && stack.getItem() == RegistrationHandler.itemTile && ItemTile.hasTileData(stack))
{
if (settings.keyBindDrop.isPressed())
{
field.set(settings.keyBindDrop, false);
}
if (settings.keyBindSwapHands.isPressed())
{
field.set(settings.keyBindSwapHands, false);
}
for (KeyBinding keyBind : settings.keyBindsHotbar)
{
if (keyBind.isPressed())
{
field.set(keyBind, false);
}
}
}
if (player.getEntityData().hasKey("carrySlot") ? player.getEntityData().getInteger("carrySlot") != current : false) int current = player.inventory.currentItem;
player.inventory.currentItem = player.getEntityData().getInteger("carrySlot");
} if (player.getEntityData().hasKey("carrySlot") ? player.getEntityData().getInteger("carrySlot") != current : false)
{
player.inventory.currentItem = player.getEntityData().getInteger("carrySlot");
}
}
/* /*
* Renders the Block in First Person * Renders the Block in First Person
*/ */
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
@SubscribeEvent @SubscribeEvent
public void renderHand(RenderHandEvent event) public void renderHand(RenderHandEvent event)
{ {
World world = Minecraft.getMinecraft().world; World world = Minecraft.getMinecraft().world;
EntityPlayer player = Minecraft.getMinecraft().player; EntityPlayer player = Minecraft.getMinecraft().player;
AbstractClientPlayer aplayer = (AbstractClientPlayer) player; AbstractClientPlayer aplayer = (AbstractClientPlayer) player;
ItemStack stack = player.getHeldItemMainhand(); ItemStack stack = player.getHeldItemMainhand();
int perspective = Minecraft.getMinecraft().gameSettings.thirdPersonView; int perspective = Minecraft.getMinecraft().gameSettings.thirdPersonView;
if (!stack.isEmpty() && stack.getItem() == RegistrationHandler.itemTile && ItemTile.hasTileData(stack)) if (!stack.isEmpty() && stack.getItem() == RegistrationHandler.itemTile && ItemTile.hasTileData(stack))
{ {
Block block = ItemTile.getBlock(stack); Block block = ItemTile.getBlock(stack);
BlockPos pos = player.getPosition(); NBTTagCompound tag = ItemTile.getTileData(stack);
NBTTagCompound tag = ItemTile.getTileData(stack); IBlockState state = ItemTile.getBlockState(stack);
IBlockState state = ItemTile.getBlockState(stack); ItemStack tileStack = ItemTile.getItemStack(stack);
ItemStack tileStack = ItemTile.getItemStack(stack);
GlStateManager.pushMatrix(); GlStateManager.pushMatrix();
GlStateManager.scale(2.5, 2.5, 2.5); GlStateManager.scale(2.5, 2.5, 2.5);
GlStateManager.translate(0, -0.6, -1); GlStateManager.translate(0, -0.6, -1);
if (CarryOnConfig.settings.facePlayer ? !isChest(block) : isChest(block)) if (CarryOnConfig.settings.facePlayer ? !isChest(block) : isChest(block))
{ {
GlStateManager.rotate(180, 0, 1f, 0); GlStateManager.rotate(180, 0, 1f, 0);
GlStateManager.rotate(-8, 1f, 0, 0); GlStateManager.rotate(-8, 1f, 0, 0);
} }
else else
GlStateManager.rotate(8, 1f, 0, 0); {
GlStateManager.rotate(8, 1f, 0, 0);
}
if (perspective == 0) if (perspective == 0)
{ {
IBakedModel model = ModelOverridesHandler.hasCustomOverrideModel(state, tag) ? ModelOverridesHandler.getCustomOverrideModel(state, tag, world, player) : Minecraft.getMinecraft().getRenderItem().getItemModelWithOverrides(tileStack, world, player); IBakedModel model = ModelOverridesHandler.hasCustomOverrideModel(state, tag) ? ModelOverridesHandler.getCustomOverrideModel(state, tag, world, player) : Minecraft.getMinecraft().getRenderItem().getItemModelWithOverrides(tileStack, world, player);
CarryOnOverride carryOverride = ScriptChecker.inspectBlock(state, world, pos, tag); if (ModelOverridesHandler.hasCustomOverrideModel(state, tag))
if (carryOverride != null) {
{ Object override = ModelOverridesHandler.getOverrideObject(state, tag);
double[] translation = ScriptParseHelper.getXYZArray(carryOverride.getRenderTranslation());
double[] rotation = ScriptParseHelper.getXYZArray(carryOverride.getRenderRotation());
double[] scale = ScriptParseHelper.getScale(carryOverride.getRenderScale());
Block b = StringParser.getBlock(carryOverride.getRenderNameBlock());
if (b != null)
{
ItemStack s = new ItemStack(b, 1, carryOverride.getRenderMeta());
s.setTagCompound(carryOverride.getRenderNBT());
model = Minecraft.getMinecraft().getRenderItem().getItemModelWithOverrides(s, world, player);
}
GlStateManager.translate(translation[0], translation[1], translation[2]); if (override instanceof ItemStack)
GlStateManager.rotate((float) rotation[0], 1, 0, 0); {
GlStateManager.rotate((float) rotation[1], 0, 1, 0); int i = this.getBrightnessForRender(Minecraft.getMinecraft().player);
GlStateManager.rotate((float) rotation[2], 0, 0, 1); int j = i % 65536;
GlStateManager.scale(scale[0], scale[1], scale[2]); int k = i / 65536;
OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, j, k);
GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F);
this.setLightmapDisabled(false);
Minecraft.getMinecraft().getRenderItem().renderItem((ItemStack) override, model);
this.setLightmapDisabled(true);
}
else
{
int i = this.getBrightnessForRender(Minecraft.getMinecraft().player);
int j = i % 65536;
int k = i / 65536;
OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, j, k);
GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F);
this.setLightmapDisabled(false);
Minecraft.getMinecraft().getRenderItem().renderItem(tileStack.isEmpty() ? stack : tileStack, model);
this.setLightmapDisabled(true);
}
}
else
{
int i = this.getBrightnessForRender(Minecraft.getMinecraft().player);
int j = i % 65536;
int k = i / 65536;
OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, j, k);
GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F);
this.setLightmapDisabled(false);
Minecraft.getMinecraft().getRenderItem().renderItem(tileStack.isEmpty() ? stack : tileStack, model);
this.setLightmapDisabled(true);
}
}
} GlStateManager.scale(1, 1, 1);
GlStateManager.popMatrix();
if (ModelOverridesHandler.hasCustomOverrideModel(state, tag)) if (perspective == 0)
{ {
Object override = ModelOverridesHandler.getOverrideObject(state, tag); event.setCanceled(true);
if (override instanceof ItemStack) }
{ }
Minecraft.getMinecraft().getRenderItem().renderItem((ItemStack) override, model); else
} {
else if (stack.isEmpty() ? true : stack.getItem() != RegistrationHandler.itemEntity)
Minecraft.getMinecraft().getRenderItem().renderItem(tileStack.isEmpty() ? stack : tileStack, model); {
} event.setCanceled(false);
else Minecraft mc = Minecraft.getMinecraft();
Minecraft.getMinecraft().getRenderItem().renderItem(tileStack.isEmpty() ? stack : tileStack, model); RenderManager manager = mc.getRenderManager();
} RenderPlayer renderPlayer = manager.getSkinMap().get(aplayer.getSkinType());
GlStateManager.scale(1, 1, 1); ModelPlayer modelPlayer = renderPlayer.getMainModel();
GlStateManager.popMatrix(); modelPlayer.bipedLeftArm.isHidden = false;
modelPlayer.bipedRightArm.isHidden = false;
modelPlayer.bipedLeftArmwear.isHidden = false;
modelPlayer.bipedRightArmwear.isHidden = false;
}
}
}
if (perspective == 0) @SideOnly(Side.CLIENT)
event.setCanceled(true); private int getBrightnessForRender(EntityPlayer player)
} {
else BlockPos.MutableBlockPos blockpos$mutableblockpos = new BlockPos.MutableBlockPos(MathHelper.floor(player.posX), 0, MathHelper.floor(player.posZ));
{
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;
modelPlayer.bipedLeftArmwear.isHidden = false;
modelPlayer.bipedRightArmwear.isHidden = false;
}
}
}
/* if (player.world.isBlockLoaded(blockpos$mutableblockpos))
* Renders the Block in Third Person {
*/ blockpos$mutableblockpos.setY(MathHelper.floor(player.posY + player.getEyeHeight()));
@SideOnly(Side.CLIENT) return player.world.getCombinedLight(blockpos$mutableblockpos, 0);
@SubscribeEvent }
public void onPlayerRenderPost(RenderPlayerEvent.Post event) else
{ {
World world = Minecraft.getMinecraft().world; return 0;
EntityPlayer player = event.getEntityPlayer(); }
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);
IBlockState state = ItemTile.getBlockState(stack);
NBTTagCompound tag = ItemTile.getTileData(stack);
ItemStack tileItem = ItemTile.getItemStack(stack); @SideOnly(Side.CLIENT)
private void setLightmapDisabled(boolean disabled)
{
GlStateManager.setActiveTexture(OpenGlHelper.lightmapTexUnit);
float rotation = -(player.prevRenderYawOffset + (player.renderYawOffset - player.prevRenderYawOffset) * partialticks); if (disabled)
int perspective = Minecraft.getMinecraft().gameSettings.thirdPersonView; {
GlStateManager.disableTexture2D();
}
else
{
GlStateManager.enableTexture2D();
}
double d0 = player.lastTickPosX + (player.posX - player.lastTickPosX) * (double) partialticks; GlStateManager.setActiveTexture(OpenGlHelper.defaultTexUnit);
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; * Renders the Block in Third Person
double c2 = clientPlayer.lastTickPosZ + (clientPlayer.posZ - clientPlayer.lastTickPosZ) * (double) partialticks; */
@SideOnly(Side.CLIENT)
@SubscribeEvent
public void onPlayerRenderPost(RenderPlayerEvent.Post event)
{
World world = Minecraft.getMinecraft().world;
EntityPlayer player = event.getEntityPlayer();
EntityPlayerSP clientPlayer = Minecraft.getMinecraft().player;
ItemStack stack = player.getHeldItemMainhand();
float partialticks = event.getPartialRenderTick();
double xOffset = d0 - c0; if (!stack.isEmpty() && stack.getItem() == RegistrationHandler.itemTile && ItemTile.hasTileData(stack))
double yOffset = d1 - c1; {
double zOffset = d2 - c2; Block block = ItemTile.getBlock(stack);
IBlockState state = ItemTile.getBlockState(stack);
NBTTagCompound tag = ItemTile.getTileData(stack);
ItemStack tileItem = ItemTile.getItemStack(stack);
GlStateManager.pushMatrix(); float rotation = -(player.prevRenderYawOffset + (player.renderYawOffset - player.prevRenderYawOffset) * partialticks);
GlStateManager.translate(xOffset, yOffset, zOffset);
GlStateManager.scale(0.6, 0.6, 0.6);
if (CarryOnConfig.settings.facePlayer ? !isChest(block) : isChest(block)) double d0 = player.lastTickPosX + (player.posX - player.lastTickPosX) * partialticks;
{ double d1 = player.lastTickPosY + (player.posY - player.lastTickPosY) * partialticks;
GlStateManager.rotate(rotation, 0, 1.0f, 0); double d2 = player.lastTickPosZ + (player.posZ - player.lastTickPosZ) * partialticks;
GlStateManager.translate(0, 1.6, 0.65);
}
else
{
GlStateManager.rotate(rotation + 180, 0, 1.0f, 0);
GlStateManager.translate(0, 1.6, -0.65);
}
if (player.isSneaking()) double c0 = clientPlayer.lastTickPosX + (clientPlayer.posX - clientPlayer.lastTickPosX) * partialticks;
GlStateManager.translate(0, -0.3, 0); double c1 = clientPlayer.lastTickPosY + (clientPlayer.posY - clientPlayer.lastTickPosY) * partialticks;
double c2 = clientPlayer.lastTickPosZ + (clientPlayer.posZ - clientPlayer.lastTickPosZ) * partialticks;
IBakedModel model = ModelOverridesHandler.hasCustomOverrideModel(state, tag) ? ModelOverridesHandler.getCustomOverrideModel(state, tag, world, player) : Minecraft.getMinecraft().getRenderItem().getItemModelWithOverrides(tileItem, world, player); double xOffset = d0 - c0;
double yOffset = d1 - c1;
double zOffset = d2 - c2;
CarryOnOverride carryOverride = ScriptChecker.inspectBlock(state, world, player.getPosition(), tag); GlStateManager.pushMatrix();
if (carryOverride != null) GlStateManager.translate(xOffset, yOffset, zOffset);
{ GlStateManager.scale(0.6, 0.6, 0.6);
double[] translation = ScriptParseHelper.getXYZArray(carryOverride.getRenderTranslation());
double[] rot = ScriptParseHelper.getXYZArray(carryOverride.getRenderRotation());
double[] scale = ScriptParseHelper.getScale(carryOverride.getRenderScale());
Block b = StringParser.getBlock(carryOverride.getRenderNameBlock());
if (b != null)
{
ItemStack s = new ItemStack(b, 1, carryOverride.getRenderMeta());
s.setTagCompound(carryOverride.getRenderNBT());
model = Minecraft.getMinecraft().getRenderItem().getItemModelWithOverrides(s, world, player);
}
if (CarryOnConfig.settings.facePlayer ? !isChest(block) : isChest(block))
{
GlStateManager.rotate(rotation, 0, 1.0f, 0);
GlStateManager.translate(0, 1.6, 0.65);
}
else
{
GlStateManager.rotate(rotation + 180, 0, 1.0f, 0);
GlStateManager.translate(0, 1.6, -0.65);
}
GlStateManager.translate(translation[0], translation[1], translation[2]); if (player.isSneaking())
GlStateManager.rotate((float) rot[0], 1, 0, 0); {
GlStateManager.rotate((float) rot[1], 0, 1, 0); GlStateManager.translate(0, -0.3, 0);
GlStateManager.rotate((float) rot[2], 0, 0, 1); }
GlStateManager.scale(scale[0], scale[1], scale[2]);
} IBakedModel model = ModelOverridesHandler.hasCustomOverrideModel(state, tag) ? ModelOverridesHandler.getCustomOverrideModel(state, tag, world, player) : Minecraft.getMinecraft().getRenderItem().getItemModelWithOverrides(tileItem, world, player);
if (ModelOverridesHandler.hasCustomOverrideModel(state, tag)) if (ModelOverridesHandler.hasCustomOverrideModel(state, tag))
{ {
Object override = ModelOverridesHandler.getOverrideObject(state, tag); Object override = ModelOverridesHandler.getOverrideObject(state, tag);
if (override instanceof ItemStack)
{
Minecraft.getMinecraft().getRenderItem().renderItem((ItemStack) override, model);
}
else
Minecraft.getMinecraft().getRenderItem().renderItem(tileItem.isEmpty() ? stack : tileItem, model);
}
else
Minecraft.getMinecraft().getRenderItem().renderItem(tileItem.isEmpty() ? stack : tileItem, model);
GlStateManager.scale(1, 1, 1);
GlStateManager.popMatrix(); if (override instanceof ItemStack)
} {
Minecraft.getMinecraft().getRenderItem().renderItem((ItemStack) override, model);
}
else
{
Minecraft.getMinecraft().getRenderItem().renderItem(tileItem.isEmpty() ? stack : tileItem, model);
}
}
else
{
Minecraft.getMinecraft().getRenderItem().renderItem(tileItem.isEmpty() ? stack : tileItem, model);
}
} GlStateManager.scale(1, 1, 1);
GlStateManager.popMatrix();
}
}
/* /*
* Renders correct arm rotation * Renders correct arm rotation
*/ */
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
@SubscribeEvent @SubscribeEvent
public void onPlayerRenderPre(RenderPlayerEvent.Pre event) public void onPlayerRenderPre(RenderPlayerEvent.Pre event)
{ {
if (!Loader.isModLoaded("mobends") && CarryOnConfig.settings.renderArms) if (!Loader.isModLoaded("mobends") && CarryOnConfig.settings.renderArms)
{ {
EntityPlayer player = event.getEntityPlayer(); EntityPlayer player = event.getEntityPlayer();
AbstractClientPlayer aplayer = (AbstractClientPlayer) player; AbstractClientPlayer aplayer = (AbstractClientPlayer) player;
ItemStack stack = player.getHeldItemMainhand(); ItemStack stack = player.getHeldItemMainhand();
ModelPlayer model = event.getRenderer().getMainModel(); ModelPlayer model = event.getRenderer().getMainModel();
ResourceLocation skinLoc = DefaultPlayerSkin.getDefaultSkin(player.getPersistentID()); ResourceLocation skinLoc = DefaultPlayerSkin.getDefaultSkin(player.getPersistentID());
if (!initModels) if (!initModels)
{ {
fakeLeftArm = new ModelRenderer(model, 32, 48); this.fakeLeftArm = new ModelRenderer(model, 32, 48);
fakeRightArm = new ModelRenderer(model, 40, 16); this.fakeRightArm = new ModelRenderer(model, 40, 16);
fakeLeftArmwear = new ModelRenderer(model, 48, 48); this.fakeLeftArmwear = new ModelRenderer(model, 48, 48);
fakeRightArmwear = new ModelRenderer(model, 40, 32); this.fakeRightArmwear = new ModelRenderer(model, 40, 32);
initModels = true; initModels = true;
} }
player.setArrowCountInEntity(0); // TODO Temporary Fix player.setArrowCountInEntity(0); // TODO Temporary Fix
if (!stack.isEmpty() && (stack.getItem() == RegistrationHandler.itemTile && ItemTile.hasTileData(stack)) || (stack.getItem() == RegistrationHandler.itemEntity && ItemEntity.hasEntityData(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()) if (model.bipedBody.childModels != null && !model.bipedBody.childModels.isEmpty())
{ {
for (int k = 0; k < model.bipedBody.childModels.size(); k++)
{
float chkRot = model.bipedBody.childModels.get(k).rotateAngleX;
for (int k = 0; k < model.bipedBody.childModels.size(); k++) if (chkRot == -0.9001F || chkRot == -1.2001F || chkRot == -1.4001F || chkRot == -1.7001F)
{ {
float chkRot = model.bipedBody.childModels.get(k).rotateAngleX; model.bipedBody.childModels.remove(k);
if (chkRot == -0.9001F || chkRot == -1.2001F || chkRot == -1.4001F || chkRot == -1.7001F) k = k - 1;
{ }
model.bipedBody.childModels.remove(k); }
k = k - 1; }
}
}
} Item item = stack.getItem();
Item item = stack.getItem(); model.bipedLeftArm.isHidden = true;
model.bipedRightArm.isHidden = true;
model.bipedLeftArmwear.isHidden = true;
model.bipedRightArmwear.isHidden = true;
model.bipedLeftArm.isHidden = true; Minecraft.getMinecraft().getTextureManager().bindTexture(skinLoc);
model.bipedRightArm.isHidden = true;
model.bipedLeftArmwear.isHidden = true;
model.bipedRightArmwear.isHidden = true;
Minecraft.getMinecraft().getTextureManager().bindTexture(skinLoc); if (aplayer.getSkinType().equals("default"))
float rotation = -player.renderYawOffset; {
//left arm
this.fakeLeftArm.addBox(model.bipedLeftArm.offsetX + 4.2F, model.bipedLeftArm.offsetY, model.bipedLeftArm.offsetZ, 4, 12, 4, .08F);
this.fakeLeftArmwear.addBox(model.bipedLeftArm.offsetX + 4.2F, model.bipedLeftArm.offsetY, model.bipedLeftArm.offsetZ, 4, 12, 4, .08F + 0.25F);
if (aplayer.getSkinType().equals("default")) //right arm
{ this.fakeRightArm.addBox(model.bipedRightArm.offsetX - 7.9F, model.bipedRightArm.offsetY, model.bipedRightArm.offsetZ, 4, 12, 4, .08F);
fakeLeftArm.addBox(model.bipedLeftArm.offsetX + 4.2F, model.bipedLeftArm.offsetY, model.bipedLeftArm.offsetZ, 4, 12, 4, .08F); this.fakeRightArmwear.addBox(model.bipedRightArm.offsetX - 7.9F, model.bipedRightArm.offsetY, model.bipedRightArm.offsetZ, 4, 12, 4, .08F + 0.25F);
fakeLeftArmwear.addBox(model.bipedLeftArm.offsetX + 4.2F, model.bipedLeftArm.offsetY, model.bipedLeftArm.offsetZ, 4, 12, 4, .08F + 0.25F); }
} else
else {
{ //left arm
fakeLeftArm.addBox(model.bipedLeftArm.offsetX + 4.2F, model.bipedLeftArm.offsetY, model.bipedLeftArm.offsetZ, 3, 12, 4, .08F); this.fakeLeftArm.addBox(model.bipedLeftArm.offsetX + 4.2F, model.bipedLeftArm.offsetY, model.bipedLeftArm.offsetZ, 3, 12, 4, .08F);
fakeLeftArmwear.addBox(model.bipedLeftArm.offsetX + 4.2F, model.bipedLeftArm.offsetY, model.bipedLeftArm.offsetZ, 3, 12, 4, .08F + 0.25F); this.fakeLeftArmwear.addBox(model.bipedLeftArm.offsetX + 4.2F, model.bipedLeftArm.offsetY, model.bipedLeftArm.offsetZ, 3, 12, 4, .08F + 0.25F);
}
if (aplayer.getSkinType().equals("default")) //right arm
{ this.fakeRightArm.addBox(model.bipedRightArm.offsetX - 7.2F, model.bipedRightArm.offsetY, model.bipedRightArm.offsetZ, 3, 12, 4, .08F);
fakeRightArm.addBox(model.bipedRightArm.offsetX - 7.9F, model.bipedRightArm.offsetY, model.bipedRightArm.offsetZ, 4, 12, 4, .08F); this.fakeRightArmwear.addBox(model.bipedRightArm.offsetX - 7.2F, model.bipedRightArm.offsetY, model.bipedRightArm.offsetZ, 3, 12, 4, .08F + 0.25F);
fakeRightArmwear.addBox(model.bipedRightArm.offsetX - 7.9F, model.bipedRightArm.offsetY, model.bipedRightArm.offsetZ, 4, 12, 4, .08F + 0.25F); }
}
else
{
fakeRightArm.addBox(model.bipedRightArm.offsetX - 7.2F, model.bipedRightArm.offsetY, model.bipedRightArm.offsetZ, 3, 12, 4, .08F);
fakeRightArmwear.addBox(model.bipedRightArm.offsetX - 7.2F, model.bipedRightArm.offsetY, model.bipedRightArm.offsetZ, 3, 12, 4, .08F + 0.25F);
}
if (item == RegistrationHandler.itemTile) if (item == RegistrationHandler.itemTile)
{ {
if (!player.isSneaking()) if (!player.isSneaking())
{ {
fakeRightArm.rotateAngleX = -.9001F; this.fakeRightArm.rotateAngleX = -.9001F;
fakeLeftArm.rotateAngleX = -.9001F; this.fakeLeftArm.rotateAngleX = -.9001F;
fakeLeftArmwear.rotateAngleX = -.9001F; this.fakeLeftArmwear.rotateAngleX = -.9001F;
fakeRightArmwear.rotateAngleX = -.9001F; this.fakeRightArmwear.rotateAngleX = -.9001F;
} }
else else
{ {
fakeRightArm.rotateAngleX = -1.4001F; this.fakeRightArm.rotateAngleX = -1.4001F;
fakeLeftArm.rotateAngleX = -1.4001F; this.fakeLeftArm.rotateAngleX = -1.4001F;
fakeLeftArmwear.rotateAngleX = -1.4001F; this.fakeLeftArmwear.rotateAngleX = -1.4001F;
fakeRightArmwear.rotateAngleX = -1.4001F; this.fakeRightArmwear.rotateAngleX = -1.4001F;
} }
} }
else else
{ {
if (!player.isSneaking()) if (!player.isSneaking())
{ {
fakeRightArm.rotateAngleX = -1.2001F; this.fakeRightArm.rotateAngleX = -1.2001F;
fakeLeftArm.rotateAngleX = -1.2001F; this.fakeLeftArm.rotateAngleX = -1.2001F;
fakeLeftArmwear.rotateAngleX = -1.2001F; this.fakeLeftArmwear.rotateAngleX = -1.2001F;
fakeRightArmwear.rotateAngleX = -1.2001F; this.fakeRightArmwear.rotateAngleX = -1.2001F;
} }
else else
{ {
fakeRightArm.rotateAngleX = -1.7001F; this.fakeRightArm.rotateAngleX = -1.7001F;
fakeLeftArm.rotateAngleX = -1.7001F; this.fakeLeftArm.rotateAngleX = -1.7001F;
fakeLeftArmwear.rotateAngleX = -1.7001F; this.fakeLeftArmwear.rotateAngleX = -1.7001F;
fakeRightArmwear.rotateAngleX = -1.7001F; this.fakeRightArmwear.rotateAngleX = -1.7001F;
} }
fakeRightArm.rotateAngleY = -0.15f; this.fakeRightArm.rotateAngleY = -0.15f;
fakeLeftArm.rotateAngleY = 0.15f; this.fakeLeftArm.rotateAngleY = 0.15f;
fakeLeftArmwear.rotateAngleY = 0.15f; this.fakeLeftArmwear.rotateAngleY = 0.15f;
fakeRightArmwear.rotateAngleY = -0.15f; this.fakeRightArmwear.rotateAngleY = -0.15f;
}
} model.bipedBody.addChild(this.fakeLeftArm);
model.bipedBody.addChild(fakeLeftArm); model.bipedBody.addChild(this.fakeRightArm);
model.bipedBody.addChild(fakeRightArm);
if (player.isWearing(EnumPlayerModelParts.LEFT_SLEEVE)) if (player.isWearing(EnumPlayerModelParts.LEFT_SLEEVE))
{ {
model.bipedBody.addChild(fakeLeftArmwear); model.bipedBody.addChild(this.fakeLeftArmwear);
} }
if (player.isWearing(EnumPlayerModelParts.RIGHT_SLEEVE)) if (player.isWearing(EnumPlayerModelParts.RIGHT_SLEEVE))
{ {
model.bipedBody.addChild(fakeRightArmwear); model.bipedBody.addChild(this.fakeRightArmwear);
} }
}
else
{
model.bipedLeftArm.isHidden = false;
model.bipedRightArm.isHidden = false;
model.bipedLeftArmwear.isHidden = false;
model.bipedRightArmwear.isHidden = false;
} if (model.bipedBody.childModels != null && !model.bipedBody.childModels.isEmpty())
else {
{ for (int k = 0; k < model.bipedBody.childModels.size(); k++)
model.bipedLeftArm.isHidden = false; {
model.bipedRightArm.isHidden = false; float chkRot = model.bipedBody.childModels.get(k).rotateAngleX;
model.bipedLeftArmwear.isHidden = false;
model.bipedRightArmwear.isHidden = false;
if (model.bipedBody.childModels != null && !model.bipedBody.childModels.isEmpty()) if (chkRot == -0.9001F || chkRot == -1.2001F || chkRot == -1.4001F || chkRot == -1.7001F)
{ {
for (int k = 0; k < model.bipedBody.childModels.size(); k++) model.bipedBody.childModels.remove(k);
{ k = k - 1;
float chkRot = model.bipedBody.childModels.get(k).rotateAngleX; }
if (chkRot == -0.9001F || chkRot == -1.2001F || chkRot == -1.4001F || chkRot == -1.7001F) }
{ }
model.bipedBody.childModels.remove(k); }
k = k - 1;
}
}
}
}
if (stack.isEmpty() || (stack.getItem() != RegistrationHandler.itemTile && stack.getItem() != RegistrationHandler.itemEntity)) if (stack.isEmpty() || stack.getItem() != RegistrationHandler.itemTile && stack.getItem() != RegistrationHandler.itemEntity)
{ {
model.bipedLeftArm.isHidden = false; model.bipedLeftArm.isHidden = false;
model.bipedRightArm.isHidden = false; model.bipedRightArm.isHidden = false;
model.bipedLeftArmwear.isHidden = false; model.bipedLeftArmwear.isHidden = false;
model.bipedRightArmwear.isHidden = false; model.bipedRightArmwear.isHidden = false;
} }
} }
}
} public static boolean isChest(Block block)
{
return block == Blocks.CHEST || block == Blocks.ENDER_CHEST || block == Blocks.TRAPPED_CHEST;
}
public static boolean isChest(Block block) @SideOnly(Side.CLIENT)
{ private static RenderPlayer getRenderPlayer(AbstractClientPlayer player)
return block == Blocks.CHEST || block == Blocks.ENDER_CHEST || block == Blocks.TRAPPED_CHEST; {
} Minecraft mc = Minecraft.getMinecraft();
RenderManager manager = mc.getRenderManager();
return manager.getSkinMap().get(player.getSkinType());
}
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
private static RenderPlayer getRenderPlayer(AbstractClientPlayer player) private static ModelPlayer getPlayerModel(AbstractClientPlayer player)
{ {
Minecraft mc = Minecraft.getMinecraft(); return getRenderPlayer(player).getMainModel();
RenderManager manager = mc.getRenderManager(); }
return manager.getSkinMap().get(player.getSkinType());
}
@SideOnly(Side.CLIENT) @SubscribeEvent
private static ModelPlayer getPlayerModel(AbstractClientPlayer player) @SideOnly(Side.CLIENT)
{ public void hideItems(RenderPlayerEvent.Specials.Pre event)
return getRenderPlayer(player).getMainModel(); {
} EntityPlayer player = event.getEntityPlayer();
ItemStack stack = player.getHeldItemMainhand();
@SubscribeEvent
@SideOnly(Side.CLIENT)
public void hideItems(RenderPlayerEvent.Specials.Pre event)
{
EntityPlayer player = event.getEntityPlayer();
ItemStack stack = player.getHeldItemMainhand();
if (stack != null && (stack.getItem() == RegistrationHandler.itemTile || stack.getItem() == RegistrationHandler.itemEntity))
{
event.setRenderItem(false);
}
}
if (stack != null && (stack.getItem() == RegistrationHandler.itemTile || stack.getItem() == RegistrationHandler.itemEntity))
{
event.setRenderItem(false);
}
}
} }