2018-06-28 20:37:53 -07:00
|
|
|
package WayofTime.bloodmagic.client.hud.element;
|
2016-06-16 18:12:20 -07:00
|
|
|
|
2017-08-14 20:53:42 -07:00
|
|
|
import WayofTime.bloodmagic.BloodMagic;
|
2018-06-28 20:37:53 -07:00
|
|
|
import WayofTime.bloodmagic.client.Sprite;
|
2017-08-15 18:14:28 -07:00
|
|
|
import WayofTime.bloodmagic.core.RegistrarBloodMagicItems;
|
2017-08-15 21:30:48 -07:00
|
|
|
import WayofTime.bloodmagic.item.sigil.ItemSigilHolding;
|
2016-06-16 18:12:20 -07:00
|
|
|
import net.minecraft.client.Minecraft;
|
|
|
|
import net.minecraft.client.gui.ScaledResolution;
|
|
|
|
import net.minecraft.client.renderer.GlStateManager;
|
|
|
|
import net.minecraft.client.renderer.RenderHelper;
|
|
|
|
import net.minecraft.entity.player.EntityPlayer;
|
|
|
|
import net.minecraft.item.ItemStack;
|
|
|
|
import net.minecraft.util.ResourceLocation;
|
|
|
|
|
2017-03-05 10:28:06 -08:00
|
|
|
import java.util.List;
|
2016-06-16 18:12:20 -07:00
|
|
|
|
2018-06-28 20:37:53 -07:00
|
|
|
public class ElementHolding extends HUDElement {
|
2016-06-16 18:12:20 -07:00
|
|
|
|
2018-06-28 20:37:53 -07:00
|
|
|
private static final Sprite HOLDING_BAR = new Sprite(new ResourceLocation(BloodMagic.MODID, "textures/gui/widgets.png"), 0, 0, 102, 22);
|
|
|
|
private static final Sprite SELECTED_OVERLAY = new Sprite(new ResourceLocation(BloodMagic.MODID, "textures/gui/widgets.png"), 0, 22, 24, 24);
|
|
|
|
|
|
|
|
public ElementHolding() {
|
|
|
|
super(HOLDING_BAR.getTextureWidth(), HOLDING_BAR.getTextureHeight());
|
2016-06-16 18:12:20 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
2018-06-28 20:37:53 -07:00
|
|
|
public void draw(ScaledResolution resolution, float partialTicks, int drawX, int drawY) {
|
|
|
|
GlStateManager.color(1.0F, 1.0F, 1.0F);
|
|
|
|
HOLDING_BAR.draw(drawX, drawY);
|
|
|
|
|
|
|
|
Minecraft minecraft = Minecraft.getMinecraft();
|
2017-01-02 00:10:28 -08:00
|
|
|
ItemStack sigilHolding = minecraft.player.getHeldItemMainhand();
|
2016-06-16 18:12:20 -07:00
|
|
|
// Check mainhand for Sigil of Holding
|
2017-08-14 20:53:42 -07:00
|
|
|
if (!(sigilHolding.getItem() == RegistrarBloodMagicItems.SIGIL_HOLDING))
|
2017-01-02 00:10:28 -08:00
|
|
|
sigilHolding = minecraft.player.getHeldItemOffhand();
|
2016-06-16 18:12:20 -07:00
|
|
|
// Check offhand for Sigil of Holding
|
2017-08-14 20:53:42 -07:00
|
|
|
if (!(sigilHolding.getItem() == RegistrarBloodMagicItems.SIGIL_HOLDING))
|
2016-06-16 18:12:20 -07:00
|
|
|
return;
|
|
|
|
|
|
|
|
int currentSlot = ItemSigilHolding.getCurrentItemOrdinal(sigilHolding);
|
2018-06-28 20:37:53 -07:00
|
|
|
SELECTED_OVERLAY.draw(drawX - 1 + (currentSlot * 20), drawY - 1);
|
2016-06-16 18:12:20 -07:00
|
|
|
|
|
|
|
RenderHelper.enableGUIStandardItemLighting();
|
2018-06-28 20:37:53 -07:00
|
|
|
List<ItemStack> inventory = ItemSigilHolding.getInternalInventory(sigilHolding);
|
2016-06-16 18:12:20 -07:00
|
|
|
int xOffset = 0;
|
2018-06-28 20:37:53 -07:00
|
|
|
for (ItemStack stack : inventory) {
|
|
|
|
renderHotbarItem(drawX + 3 + xOffset, drawY - 4, partialTicks, minecraft.player, stack);
|
2017-03-05 10:28:06 -08:00
|
|
|
xOffset += 20;
|
2016-06-16 18:12:20 -07:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
2017-08-15 21:30:48 -07:00
|
|
|
public boolean shouldRender(Minecraft minecraft) {
|
2018-06-28 20:37:53 -07:00
|
|
|
ItemStack sigilHolding = minecraft.player.getHeldItemMainhand();
|
|
|
|
// Check mainhand for Sigil of Holding
|
|
|
|
if (!(sigilHolding.getItem() == RegistrarBloodMagicItems.SIGIL_HOLDING))
|
|
|
|
sigilHolding = minecraft.player.getHeldItemOffhand();
|
|
|
|
// Check offhand for Sigil of Holding
|
|
|
|
if (!(sigilHolding.getItem() == RegistrarBloodMagicItems.SIGIL_HOLDING))
|
|
|
|
return false;
|
|
|
|
|
2016-06-16 18:12:20 -07:00
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
2017-08-15 21:30:48 -07:00
|
|
|
protected void renderHotbarItem(int x, int y, float partialTicks, EntityPlayer player, ItemStack stack) {
|
|
|
|
if (!stack.isEmpty()) {
|
2017-01-02 00:10:28 -08:00
|
|
|
float animation = (float) stack.getAnimationsToGo() - partialTicks;
|
2016-06-16 18:12:20 -07:00
|
|
|
|
2017-08-15 21:30:48 -07:00
|
|
|
if (animation > 0.0F) {
|
2016-06-16 18:12:20 -07:00
|
|
|
GlStateManager.pushMatrix();
|
|
|
|
float f1 = 1.0F + animation / 5.0F;
|
|
|
|
GlStateManager.translate((float) (x + 8), (float) (y + 12), 0.0F);
|
|
|
|
GlStateManager.scale(1.0F / f1, (f1 + 1.0F) / 2.0F, 1.0F);
|
|
|
|
GlStateManager.translate((float) (-(x + 8)), (float) (-(y + 12)), 0.0F);
|
|
|
|
}
|
|
|
|
|
|
|
|
Minecraft.getMinecraft().getRenderItem().renderItemAndEffectIntoGUI(player, stack, x, y);
|
|
|
|
|
|
|
|
if (animation > 0.0F)
|
|
|
|
GlStateManager.popMatrix();
|
|
|
|
|
2017-08-15 20:21:54 -07:00
|
|
|
Minecraft.getMinecraft().getRenderItem().renderItemOverlays(Minecraft.getMinecraft().fontRenderer, stack, x, y);
|
2016-06-16 18:12:20 -07:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|