Removed old glove render/Added creative accessory button
This commit is contained in:
parent
0d94c9b7f5
commit
8e6caa6add
|
@ -1,15 +1,22 @@
|
|||
package com.legacy.aether.client;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.gui.GuiButton;
|
||||
import net.minecraft.client.gui.GuiScreen;
|
||||
import net.minecraft.client.gui.inventory.GuiContainer;
|
||||
import net.minecraft.client.gui.inventory.GuiContainerCreative;
|
||||
import net.minecraft.client.gui.inventory.GuiInventory;
|
||||
import net.minecraft.creativetab.CreativeTabs;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraftforge.client.event.FOVUpdateEvent;
|
||||
import net.minecraftforge.client.event.GuiScreenEvent;
|
||||
import net.minecraftforge.client.event.RenderHandEvent;
|
||||
import net.minecraftforge.client.event.GuiScreenEvent.MouseInputEvent;
|
||||
import net.minecraftforge.client.event.RenderPlayerEvent;
|
||||
import net.minecraftforge.client.event.RenderSpecificHandEvent;
|
||||
import net.minecraftforge.client.event.TextureStitchEvent;
|
||||
import net.minecraftforge.fml.common.ObfuscationReflectionHelper;
|
||||
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
|
||||
|
@ -84,39 +91,81 @@ public class AetherClientEvents
|
|||
}
|
||||
}
|
||||
|
||||
private static final GuiAccessoryButton ACCESSORY_BUTTON = new GuiAccessoryButton(0, 0);
|
||||
|
||||
private static int previousSelectedTabIndex = -1;
|
||||
|
||||
@SubscribeEvent
|
||||
public void onGuiOpened(GuiScreenEvent.InitGuiEvent.Post event)
|
||||
{
|
||||
if (event.getGui().getClass() == GuiInventory.class)
|
||||
if (event.getGui() instanceof GuiContainer)
|
||||
{
|
||||
EntityPlayer player = Minecraft.getMinecraft().thePlayer;
|
||||
Class<?> clazz = event.getGui().getClass();
|
||||
|
||||
int guiLeft = ObfuscationReflectionHelper.getPrivateValue(GuiContainer.class, (GuiContainer)event.getGui(), "guiLeft", "field_147003_i");
|
||||
int guiTop = ObfuscationReflectionHelper.getPrivateValue(GuiContainer.class, (GuiContainer)event.getGui(), "guiTop", "field_147009_r");
|
||||
|
||||
event.getButtonList().add(new GuiAccessoryButton(guiLeft + 26, guiTop + 65));
|
||||
if (player.capabilities.isCreativeMode)
|
||||
{
|
||||
if (event.getGui() instanceof GuiContainerCreative)
|
||||
{
|
||||
if (((GuiContainerCreative)event.getGui()).getSelectedTabIndex() == CreativeTabs.INVENTORY.getTabIndex())
|
||||
{
|
||||
event.getButtonList().add(ACCESSORY_BUTTON.setPosition(guiLeft + 73, guiTop + 38));
|
||||
previousSelectedTabIndex = CreativeTabs.INVENTORY.getTabIndex();
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (clazz == GuiInventory.class)
|
||||
{
|
||||
event.getButtonList().add(ACCESSORY_BUTTON.setPosition(guiLeft + 26, guiTop + 65));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
public void onMouseClicked(MouseInputEvent.Post event)
|
||||
{
|
||||
if (event.getGui() instanceof GuiContainerCreative)
|
||||
{
|
||||
GuiContainerCreative guiScreen = (GuiContainerCreative) event.getGui();
|
||||
List<GuiButton> buttonList = ObfuscationReflectionHelper.getPrivateValue(GuiScreen.class, (GuiScreen) guiScreen, 7);
|
||||
|
||||
if (previousSelectedTabIndex != guiScreen.getSelectedTabIndex())
|
||||
{
|
||||
if (guiScreen.getSelectedTabIndex() == CreativeTabs.INVENTORY.getTabIndex() && !buttonList.contains(ACCESSORY_BUTTON))
|
||||
{
|
||||
int guiLeft = ObfuscationReflectionHelper.getPrivateValue(GuiContainer.class, (GuiContainer)event.getGui(), "guiLeft", "field_147003_i");
|
||||
int guiTop = ObfuscationReflectionHelper.getPrivateValue(GuiContainer.class, (GuiContainer)event.getGui(), "guiTop", "field_147009_r");
|
||||
|
||||
buttonList.add(ACCESSORY_BUTTON.setPosition(guiLeft + 73, guiTop + 38));
|
||||
}
|
||||
else if (previousSelectedTabIndex == CreativeTabs.INVENTORY.getTabIndex())
|
||||
{
|
||||
buttonList.remove(ACCESSORY_BUTTON);
|
||||
}
|
||||
|
||||
previousSelectedTabIndex = guiScreen.getSelectedTabIndex();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
public void onButtonPressed(GuiScreenEvent.ActionPerformedEvent.Pre event)
|
||||
{
|
||||
if (event.getGui().getClass() == GuiInventory.class && event.getButton().id == 18067)
|
||||
Class<?> clazz = event.getGui().getClass();
|
||||
|
||||
if ((clazz == GuiInventory.class || clazz == GuiContainerCreative.class) && event.getButton().id == 18067)
|
||||
{
|
||||
AetherNetworkingManager.sendToServer(new PacketOpenContainer(AetherGuiHandler.accessories));
|
||||
}
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
public void onRenderHand(RenderHandEvent event)
|
||||
public void onRenderHand(RenderSpecificHandEvent event)
|
||||
{
|
||||
Minecraft mc = Minecraft.getMinecraft();
|
||||
FirstPersonRenderer render = new FirstPersonRenderer(mc, event.getPartialTicks());
|
||||
|
||||
if (render.shouldRender())
|
||||
{
|
||||
mc.entityRenderer.enableLightmap();
|
||||
render.render();
|
||||
mc.entityRenderer.disableLightmap();
|
||||
}
|
||||
PlayerGloveRenderer.renderItemFirstPerson(Minecraft.getMinecraft().thePlayer, event.getPartialTicks(), event.getInterpolatedPitch(), event.getHand(), event.getSwingProgress(), event.getItemStack(), event.getEquipProgress());
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
|
|
|
@ -1,218 +0,0 @@
|
|||
package com.legacy.aether.client;
|
||||
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.entity.AbstractClientPlayer;
|
||||
import net.minecraft.client.entity.EntityPlayerSP;
|
||||
import net.minecraft.client.model.ModelBiped;
|
||||
import net.minecraft.client.model.ModelPlayer;
|
||||
import net.minecraft.client.renderer.GlStateManager;
|
||||
import net.minecraft.client.renderer.OpenGlHelper;
|
||||
import net.minecraft.client.renderer.texture.TextureManager;
|
||||
import net.minecraft.entity.EntityLivingBase;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.util.EnumHandSide;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.util.math.MathHelper;
|
||||
import net.minecraftforge.fml.client.FMLClientHandler;
|
||||
|
||||
import com.legacy.aether.common.containers.inventory.InventoryAccessories;
|
||||
import com.legacy.aether.common.items.ItemsAether;
|
||||
import com.legacy.aether.common.items.accessories.ItemAccessory;
|
||||
import com.legacy.aether.common.player.PlayerAether;
|
||||
|
||||
public class FirstPersonRenderer
|
||||
{
|
||||
|
||||
private final TextureManager renderEngine = Minecraft.getMinecraft().getRenderManager().renderEngine;
|
||||
|
||||
private Minecraft mc;
|
||||
|
||||
public PlayerAether player;
|
||||
|
||||
public EntityPlayer thePlayer;
|
||||
|
||||
public ModelPlayer modelBase;
|
||||
|
||||
public ModelBiped modelGlove;
|
||||
|
||||
private float partialTickTime;
|
||||
|
||||
private boolean isSlim;
|
||||
|
||||
public FirstPersonRenderer(Minecraft mc, float tickTime)
|
||||
{
|
||||
this.mc = mc;
|
||||
this.thePlayer = mc.thePlayer;
|
||||
this.partialTickTime = tickTime;
|
||||
|
||||
this.player = PlayerAether.get(mc.thePlayer);
|
||||
|
||||
this.modelGlove = new ModelBiped(1.0F);
|
||||
this.isSlim = ((AbstractClientPlayer)this.thePlayer).getSkinType() == "slim" ? true : false;
|
||||
this.modelBase = new ModelPlayer(1.0F, this.isSlim);
|
||||
}
|
||||
|
||||
public void render()
|
||||
{
|
||||
GlStateManager.pushMatrix();
|
||||
|
||||
this.hurtCameraEffect(this.partialTickTime);
|
||||
|
||||
this.setupWobbleEffect(this.partialTickTime);
|
||||
|
||||
this.mc.entityRenderer.enableLightmap();
|
||||
float f5 = this.thePlayer.getSwingProgress(this.partialTickTime);
|
||||
float f6 = MathHelper.sin(f5 * (float)Math.PI);
|
||||
float f7 = MathHelper.sin(MathHelper.sqrt_float(f5) * (float)Math.PI);
|
||||
boolean flag = this.thePlayer.getPrimaryHand() == EnumHandSide.RIGHT ? true : false;
|
||||
GlStateManager.translate((flag ? -f7 : f7) * 0.3F, MathHelper.sin(MathHelper.sqrt_float(f5) * (float)Math.PI * 2.0F) * 0.4F, -f6 * 0.4F);
|
||||
GlStateManager.translate((flag ? 0.8F : -0.8F) * 0.8F, -0.75F * 0.8F - (0.1F) * 0.6F, -0.9F * 0.8F);
|
||||
if (!flag)
|
||||
{
|
||||
GlStateManager.translate(!this.isSlim ? 0.1 : 0.15, 0, 0);
|
||||
GlStateManager.rotate(90.0F, 0.03F, 0.5F, -0.03F);
|
||||
}
|
||||
else
|
||||
{
|
||||
GlStateManager.rotate(45.0F, 0.0F, 1.0F, 0.0F);
|
||||
}
|
||||
f5 = this.thePlayer.getSwingProgress(this.partialTickTime);
|
||||
f6 = MathHelper.sin(f5 * f5 * (float)Math.PI);
|
||||
f7 = MathHelper.sin(MathHelper.sqrt_float(f5) * (float)Math.PI);
|
||||
GlStateManager.rotate((flag ? f7 : -f7) * 70.0F, 0.0F, 1.0F, 0.0F);
|
||||
GlStateManager.rotate((flag ? -f6 : f6) * 20.0F, 0.0F, 0.0F, 1.0F);
|
||||
GlStateManager.translate(-1.0F, 3.6F, 3.5F);
|
||||
GlStateManager.rotate(120.0F, 0.0F, 0.02F, 1.0F);
|
||||
GlStateManager.rotate(200.0F, 1.0F, 0.02F, 0.02F);
|
||||
GlStateManager.rotate(-135.0F, 0.0F, 1.0F, 0.0F);
|
||||
GlStateManager.scale(1.0F, 1.0F, 1.0F);
|
||||
GlStateManager.translate(5.6F, 0.02F, 0.0F);
|
||||
GlStateManager.scale(1F, 1F, 1F);
|
||||
this.setLightmap();
|
||||
this.armRender(flag);
|
||||
this.mc.entityRenderer.disableLightmap();
|
||||
GlStateManager.popMatrix();
|
||||
}
|
||||
|
||||
private void setupWobbleEffect(float partialTickTime)
|
||||
{
|
||||
EntityPlayerSP entityplayersp = (EntityPlayerSP)this.thePlayer;
|
||||
float f3 = entityplayersp.prevRenderArmPitch + (entityplayersp.renderArmPitch - entityplayersp.prevRenderArmPitch) * partialTickTime;
|
||||
float f4 = entityplayersp.prevRenderArmYaw + (entityplayersp.renderArmYaw - entityplayersp.prevRenderArmYaw) * partialTickTime;
|
||||
GlStateManager.rotate((this.thePlayer.rotationPitch - f3) * 0.1F, 1.0F, 0.0F, 0.0F);
|
||||
GlStateManager.rotate((this.thePlayer.rotationYaw - f4) * 0.1F, 0.0F, 1.0F, 0.0F);
|
||||
}
|
||||
|
||||
private void hurtCameraEffect(float p_78482_1_)
|
||||
{
|
||||
EntityLivingBase entitylivingbase = (EntityLivingBase) this.mc.getRenderViewEntity();
|
||||
float f1 = (float)entitylivingbase.hurtTime - p_78482_1_;
|
||||
float f2;
|
||||
|
||||
if (entitylivingbase.getHealth() <= 0.0F)
|
||||
{
|
||||
f2 = (float)entitylivingbase.deathTime + p_78482_1_;
|
||||
GlStateManager.rotate(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;
|
||||
GlStateManager.rotate(-f2, 0.0F, 1.0F, 0.0F);
|
||||
GlStateManager.rotate(-f1 * 14.0F, 0.0F, 0.0F, 1.0F);
|
||||
GlStateManager.rotate(f2, 0.0F, 1.0F, 0.0F);
|
||||
}
|
||||
}
|
||||
|
||||
private void setLightmap()
|
||||
{
|
||||
AbstractClientPlayer abstractclientplayer = this.mc.thePlayer;
|
||||
int i = this.mc.theWorld.getCombinedLight(new BlockPos(abstractclientplayer.posX, abstractclientplayer.posY + (double)abstractclientplayer.getEyeHeight(), abstractclientplayer.posZ), 0);
|
||||
float f = (float)(i & 65535);
|
||||
float f1 = (float)(i >> 16);
|
||||
OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, f, f1);
|
||||
}
|
||||
|
||||
public void armRender(boolean isLeft)
|
||||
{
|
||||
InventoryAccessories accessories = this.player.accessories;
|
||||
|
||||
if (accessories == null || !this.shouldRender() || this.renderEngine == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (accessories.stacks[6] != null && accessories.stacks[6].getItem() != null)
|
||||
{
|
||||
GlStateManager.pushMatrix();
|
||||
GlStateManager.enableDepth();
|
||||
GlStateManager.translate(-0.0F, 0, -0.05F);
|
||||
|
||||
if (!this.isSlim)
|
||||
{
|
||||
GlStateManager.translate(0, 0, 0.15F);
|
||||
}
|
||||
else
|
||||
{
|
||||
GlStateManager.translate(0, 0, 0.15F);
|
||||
}
|
||||
|
||||
this.modelGlove.setRotationAngles(0, 0, 0, 0, 0, 0, this.thePlayer);
|
||||
this.modelBase.setRotationAngles(0, 0, 0, 0, 0, 0, this.thePlayer);
|
||||
|
||||
if (this.thePlayer instanceof AbstractClientPlayer)
|
||||
{
|
||||
this.renderEngine.bindTexture(((AbstractClientPlayer)this.thePlayer).getLocationSkin());
|
||||
}
|
||||
|
||||
this.modelBase.bipedRightArm.render(this.isSlim ? 0.0625F : 0.0625F);
|
||||
|
||||
if (accessories.stacks[6].getItem() instanceof ItemAccessory)
|
||||
{
|
||||
ItemAccessory glove = (ItemAccessory) accessories.stacks[6].getItem();
|
||||
|
||||
this.renderEngine.bindTexture(glove.texture);
|
||||
|
||||
int colour = glove.getColorFromItemStack(accessories.stacks[6], 0);
|
||||
float red = ((colour >> 16) & 0xff) / 255F;
|
||||
float green = ((colour >> 8) & 0xff) / 255F;
|
||||
float blue = (colour & 0xff) / 255F;
|
||||
|
||||
if (glove != ItemsAether.phoenix_gloves)
|
||||
{
|
||||
GlStateManager.color(red, green, blue);
|
||||
}
|
||||
|
||||
GlStateManager.disableDepth();
|
||||
|
||||
if (this.isSlim)
|
||||
{
|
||||
|
||||
this.modelGlove.bipedRightArm.offsetX = 0.036F;
|
||||
this.modelGlove.bipedRightArm.offsetY = isLeft ? 0.11F : 0.12F;
|
||||
this.modelGlove.bipedRightArm.offsetZ = isLeft ? 0.02F : 0.008F;
|
||||
}
|
||||
|
||||
this.modelGlove.bipedRightArm.render(this.isSlim ? 0.06F : 0.0625F);
|
||||
|
||||
GlStateManager.enableDepth();
|
||||
}
|
||||
|
||||
GlStateManager.color(1F, 1F, 1F);
|
||||
GlStateManager.popMatrix();
|
||||
}
|
||||
}
|
||||
|
||||
public boolean shouldRender()
|
||||
{
|
||||
if (this.player.thePlayer.inventory.getCurrentItem() == null && this.player.accessories.stacks[6] != null && this.mc.gameSettings.thirdPersonView == 0 && !((EntityPlayer) this.mc.getRenderViewEntity()).isPlayerSleeping() && !this.mc.gameSettings.hideGUI && !this.mc.playerController.isSpectatorMode() && !FMLClientHandler.instance().hasOptifine())
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
246
src/main/java/com/legacy/aether/client/PlayerGloveRenderer.java
Normal file
246
src/main/java/com/legacy/aether/client/PlayerGloveRenderer.java
Normal file
|
@ -0,0 +1,246 @@
|
|||
package com.legacy.aether.client;
|
||||
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.entity.AbstractClientPlayer;
|
||||
import net.minecraft.client.model.ModelBiped;
|
||||
import net.minecraft.client.model.ModelPlayer;
|
||||
import net.minecraft.client.renderer.GlStateManager;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.EnumHand;
|
||||
import net.minecraft.util.EnumHandSide;
|
||||
import net.minecraft.util.math.MathHelper;
|
||||
|
||||
import com.legacy.aether.common.items.ItemsAether;
|
||||
import com.legacy.aether.common.items.accessories.ItemAccessory;
|
||||
import com.legacy.aether.common.player.PlayerAether;
|
||||
|
||||
public class PlayerGloveRenderer
|
||||
{
|
||||
|
||||
private static ModelBiped gloveModel, slimGloveModel;
|
||||
|
||||
private static boolean isSlim = false;
|
||||
|
||||
public static void renderItemFirstPerson(AbstractClientPlayer player, float partialTicks, float interpPitch, EnumHand hand, float swingProgress, ItemStack stack, float equipProgress)
|
||||
{
|
||||
if (gloveModel == null && slimGloveModel == null)
|
||||
{
|
||||
isSlim = ((AbstractClientPlayer)player).getSkinType() == "slim" ? true : false;
|
||||
|
||||
gloveModel = new ModelBiped(0.01F);
|
||||
slimGloveModel = new ModelPlayer(0.01F, true);
|
||||
}
|
||||
|
||||
boolean flag = hand == EnumHand.MAIN_HAND;
|
||||
EnumHandSide enumhandside = flag ? player.getPrimaryHand() : player.getPrimaryHand().opposite();
|
||||
|
||||
GlStateManager.pushMatrix();
|
||||
|
||||
if (stack == null)
|
||||
{
|
||||
if (flag && !player.isInvisible())
|
||||
{
|
||||
renderGloveFirstPerson(player, equipProgress, swingProgress, enumhandside);
|
||||
}
|
||||
}
|
||||
else if (stack.getItem() instanceof net.minecraft.item.ItemMap)
|
||||
{
|
||||
if (flag && player.getHeldItemOffhand() == null)
|
||||
{
|
||||
renderMapFirstPerson(player, interpPitch, equipProgress, swingProgress);
|
||||
}
|
||||
else
|
||||
{
|
||||
renderMapFirstPersonSide(player, equipProgress, enumhandside, swingProgress);
|
||||
}
|
||||
}
|
||||
|
||||
GlStateManager.popMatrix();
|
||||
}
|
||||
|
||||
private static void renderGloves(AbstractClientPlayer player)
|
||||
{
|
||||
PlayerAether playerAether = PlayerAether.get(player);
|
||||
ItemStack accessoryStack = playerAether.accessories.stacks[6];
|
||||
|
||||
if (accessoryStack != null && accessoryStack.getItem() instanceof ItemAccessory && !player.isInvisible())
|
||||
{
|
||||
GlStateManager.disableCull();
|
||||
GlStateManager.pushMatrix();
|
||||
GlStateManager.rotate(90.0F, 0.0F, 1.0F, 0.0F);
|
||||
renderArm(playerAether, EnumHandSide.RIGHT, (ItemAccessory) accessoryStack.getItem());
|
||||
renderArm(playerAether, EnumHandSide.LEFT, (ItemAccessory) accessoryStack.getItem());
|
||||
GlStateManager.popMatrix();
|
||||
GlStateManager.enableCull();
|
||||
}
|
||||
}
|
||||
|
||||
private static void renderArm(PlayerAether playerAether, EnumHandSide hand, ItemAccessory gloves)
|
||||
{
|
||||
Minecraft.getMinecraft().getRenderManager().renderEngine.bindTexture(!isSlim ? gloves.texture : gloves.texture_slim);
|
||||
|
||||
int colour = gloves.getColorFromItemStack(playerAether.accessories.stacks[6], 0);
|
||||
float red = ((colour >> 16) & 0xff) / 255F;
|
||||
float green = ((colour >> 8) & 0xff) / 255F;
|
||||
float blue = (colour & 0xff) / 255F;
|
||||
|
||||
GlStateManager.pushMatrix();
|
||||
|
||||
if (gloves != ItemsAether.phoenix_gloves)
|
||||
{
|
||||
GlStateManager.color(red, green, blue);
|
||||
}
|
||||
|
||||
float f = hand == EnumHandSide.RIGHT ? 1.0F : -1.0F;
|
||||
GlStateManager.rotate(92.0F, 0.0F, 1.0F, 0.0F);
|
||||
GlStateManager.rotate(45.0F, 1.0F, 0.0F, 0.0F);
|
||||
GlStateManager.rotate(f * -41.0F, 0.0F, 0.0F, 1.0F);
|
||||
GlStateManager.translate(f * 0.3F, -1.1F, 0.45F);
|
||||
|
||||
if (hand == EnumHandSide.RIGHT)
|
||||
{
|
||||
renderRightGlove(playerAether, gloves);
|
||||
}
|
||||
else
|
||||
{
|
||||
renderLeftArmGlove(playerAether, gloves);
|
||||
}
|
||||
|
||||
GlStateManager.color(1.0F, 1.0F, 1.0F);
|
||||
GlStateManager.popMatrix();
|
||||
}
|
||||
|
||||
private static void renderMapFirstPerson(AbstractClientPlayer player, float interpPitch, float equipProgress, float swingProgress)
|
||||
{
|
||||
GlStateManager.pushMatrix();
|
||||
float f = MathHelper.sqrt_float(swingProgress);
|
||||
float f1 = -0.2F * MathHelper.sin(swingProgress * (float)Math.PI);
|
||||
float f2 = -0.4F * MathHelper.sin(f * (float)Math.PI);
|
||||
GlStateManager.translate(0.0F, -f1 / 2.0F, f2);
|
||||
float f3 = getMapAngleFromPitch(interpPitch);
|
||||
GlStateManager.translate(0.0F, 0.04F + equipProgress * -1.2F + f3 * -0.5F, -0.72F);
|
||||
GlStateManager.rotate(f3 * -85.0F, 1.0F, 0.0F, 0.0F);
|
||||
renderGloves(player);
|
||||
GlStateManager.popMatrix();
|
||||
}
|
||||
|
||||
private static void renderMapFirstPersonSide(AbstractClientPlayer player, float equipProgress, EnumHandSide enumhandside, float swingProgress)
|
||||
{
|
||||
float f = enumhandside == EnumHandSide.RIGHT ? 1.0F : -1.0F;
|
||||
|
||||
if (!player.isInvisible())
|
||||
{
|
||||
GlStateManager.pushMatrix();
|
||||
GlStateManager.translate(f * 0.125F, -0.125F, 0.0F);
|
||||
GlStateManager.rotate(f * 10.0F, 0.0F, 0.0F, 1.0F);
|
||||
renderGloveFirstPerson(player, equipProgress, swingProgress, enumhandside);
|
||||
GlStateManager.popMatrix();
|
||||
}
|
||||
}
|
||||
|
||||
private static void renderGloveFirstPerson(AbstractClientPlayer player, float equipProgress, float swingProgress, EnumHandSide enumhandside)
|
||||
{
|
||||
PlayerAether playerAether = PlayerAether.get(player);
|
||||
ItemStack accessoryStack = playerAether.accessories.stacks[6];
|
||||
|
||||
if (accessoryStack != null && accessoryStack.getItem() instanceof ItemAccessory)
|
||||
{
|
||||
boolean flag = enumhandside != EnumHandSide.LEFT;
|
||||
float f = flag ? 1.0F : -1.0F;
|
||||
float f1 = MathHelper.sqrt_float(swingProgress);
|
||||
float f2 = -0.3F * MathHelper.sin(f1 * (float)Math.PI);
|
||||
float f3 = 0.4F * MathHelper.sin(f1 * ((float)Math.PI * 2F));
|
||||
float f4 = -0.4F * MathHelper.sin(swingProgress * (float)Math.PI);
|
||||
GlStateManager.translate(f * (f2 + 0.64000005F), f3 + -0.6F + equipProgress * -0.6F, f4 + -0.71999997F);
|
||||
GlStateManager.rotate(f * 45.0F, 0.0F, 1.0F, 0.0F);
|
||||
float f5 = MathHelper.sin(swingProgress * swingProgress * (float)Math.PI);
|
||||
float f6 = MathHelper.sin(f1 * (float)Math.PI);
|
||||
GlStateManager.rotate(f * f6 * 70.0F, 0.0F, 1.0F, 0.0F);
|
||||
GlStateManager.rotate(f * f5 * -20.0F, 0.0F, 0.0F, 1.0F);
|
||||
|
||||
GlStateManager.translate(f * -1.0F, 3.6F, 3.5F);
|
||||
GlStateManager.rotate(f * 120.0F, 0.0F, 0.0F, 1.0F);
|
||||
GlStateManager.rotate(200.0F, 1.0F, 0.0F, 0.0F);
|
||||
GlStateManager.rotate(f * -135.0F, 0.0F, 1.0F, 0.0F);
|
||||
GlStateManager.translate(f * 5.6F, 0.0F, 0.0F);
|
||||
|
||||
GlStateManager.disableCull();
|
||||
|
||||
if (flag)
|
||||
{
|
||||
renderRightGlove(playerAether, (ItemAccessory) accessoryStack.getItem());
|
||||
}
|
||||
else
|
||||
{
|
||||
renderLeftArmGlove(playerAether, (ItemAccessory) accessoryStack.getItem());
|
||||
}
|
||||
|
||||
GlStateManager.enableCull();
|
||||
}
|
||||
}
|
||||
|
||||
private static void renderRightGlove(PlayerAether playerAether, ItemAccessory gloves)
|
||||
{
|
||||
Minecraft.getMinecraft().getRenderManager().renderEngine.bindTexture(!isSlim ? gloves.texture : gloves.texture_slim);
|
||||
|
||||
int colour = gloves.getColorFromItemStack(playerAether.accessories.stacks[6], 0);
|
||||
float red = ((colour >> 16) & 0xff) / 255F;
|
||||
float green = ((colour >> 8) & 0xff) / 255F;
|
||||
float blue = (colour & 0xff) / 255F;
|
||||
|
||||
if (gloves != ItemsAether.phoenix_gloves)
|
||||
{
|
||||
GlStateManager.color(red, green, blue);
|
||||
}
|
||||
|
||||
GlStateManager.enableBlend();
|
||||
getModel().swingProgress = 0.0F;
|
||||
getModel().isSneak = false;
|
||||
getModel().setRotationAngles(0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F, playerAether.thePlayer);
|
||||
getModel().bipedRightArm.rotateAngleX = 0.0F;
|
||||
getModel().bipedRightArm.render(0.0625F);
|
||||
GlStateManager.disableBlend();
|
||||
|
||||
GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F);
|
||||
}
|
||||
|
||||
private static void renderLeftArmGlove(PlayerAether playerAether, ItemAccessory gloves)
|
||||
{
|
||||
Minecraft.getMinecraft().getRenderManager().renderEngine.bindTexture(!isSlim ? gloves.texture : gloves.texture_slim);
|
||||
|
||||
int colour = gloves.getColorFromItemStack(playerAether.accessories.stacks[6], 0);
|
||||
float red = ((colour >> 16) & 0xff) / 255F;
|
||||
float green = ((colour >> 8) & 0xff) / 255F;
|
||||
float blue = (colour & 0xff) / 255F;
|
||||
|
||||
if (gloves != ItemsAether.phoenix_gloves)
|
||||
{
|
||||
GlStateManager.color(red, green, blue);
|
||||
}
|
||||
|
||||
GlStateManager.enableBlend();
|
||||
getModel().isSneak = false;
|
||||
getModel().swingProgress = 0.0F;
|
||||
getModel().setRotationAngles(0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F, playerAether.thePlayer);
|
||||
getModel().bipedLeftArm.rotateAngleX = 0.0F;
|
||||
getModel().bipedLeftArm.render(0.0625F);
|
||||
GlStateManager.disableBlend();
|
||||
|
||||
GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F);
|
||||
}
|
||||
|
||||
private static ModelBiped getModel()
|
||||
{
|
||||
return isSlim ? slimGloveModel : gloveModel;
|
||||
}
|
||||
|
||||
private static float getMapAngleFromPitch(float pitch)
|
||||
{
|
||||
float f = 1.0F - pitch / 45.0F + 0.1F;
|
||||
f = MathHelper.clamp_float(f, 0.0F, 1.0F);
|
||||
f = -MathHelper.cos(f * (float)Math.PI) * 0.5F + 0.5F;
|
||||
|
||||
return f;
|
||||
}
|
||||
|
||||
}
|
|
@ -17,6 +17,14 @@ public class GuiAccessoryButton extends GuiButton
|
|||
super(18067, x, y, 12, 12, "");
|
||||
}
|
||||
|
||||
public GuiAccessoryButton setPosition(int x, int y)
|
||||
{
|
||||
this.xPosition = x;
|
||||
this.yPosition = y;
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void drawButton(Minecraft mc, int mouseX, int mouseY)
|
||||
{
|
||||
|
|
|
@ -34,7 +34,7 @@ public class ItemAccessory extends Item
|
|||
|
||||
public static final String ROOT = Aether.modAddress() + "textures/slots/slot_";
|
||||
|
||||
public ResourceLocation texture;
|
||||
public ResourceLocation texture, texture_slim;
|
||||
|
||||
private int colorHex = 0xdddddd;
|
||||
|
||||
|
@ -51,7 +51,8 @@ public class ItemAccessory extends Item
|
|||
|
||||
public ItemAccessory()
|
||||
{
|
||||
this.texture = new ResourceLocation("aether_legacy", "textures/armor/accessory_base.png");
|
||||
this.texture = Aether.locate("textures/armor/accessory_base.png");
|
||||
this.texture_slim = Aether.locate("textures/armor/accessory_base_slim.png");
|
||||
this.setMaxStackSize(1);
|
||||
this.setCreativeTab(AetherCreativeTabs.accessories);
|
||||
BlockDispenser.DISPENSE_BEHAVIOR_REGISTRY.putObject(this, DISPENSER_BEHAVIOR);
|
||||
|
@ -129,7 +130,9 @@ public class ItemAccessory extends Item
|
|||
|
||||
public ItemAccessory setTexture(String location)
|
||||
{
|
||||
texture = new ResourceLocation("aether_legacy", "textures/armor/accessory_" + location + ".png");
|
||||
this.texture = new ResourceLocation("aether_legacy", "textures/armor/accessory_" + location + ".png");
|
||||
this.texture_slim = Aether.locate("textures/armor/accessory_" + location + "_slim.png");
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
|
|
Binary file not shown.
After Width: | Height: | Size: 1.9 KiB |
Binary file not shown.
After Width: | Height: | Size: 1.8 KiB |
Binary file not shown.
After Width: | Height: | Size: 1.9 KiB |
Binary file not shown.
After Width: | Height: | Size: 1.6 KiB |
Binary file not shown.
After Width: | Height: | Size: 18 KiB |
Binary file not shown.
After Width: | Height: | Size: 1.9 KiB |
Loading…
Reference in a new issue