diff --git a/src/main/java/de/ellpeck/naturesaura/aura/BasicAuraContainer.java b/src/main/java/de/ellpeck/naturesaura/aura/BasicAuraContainer.java index 0c888fbd..ef31f45c 100644 --- a/src/main/java/de/ellpeck/naturesaura/aura/BasicAuraContainer.java +++ b/src/main/java/de/ellpeck/naturesaura/aura/BasicAuraContainer.java @@ -41,7 +41,7 @@ public class BasicAuraContainer implements IAuraContainer { @Override public int getAuraColor() { - return 0x00FF00; + return 0x1E891E; } public void writeNBT(NBTTagCompound compound) { diff --git a/src/main/java/de/ellpeck/naturesaura/events/ClientEvents.java b/src/main/java/de/ellpeck/naturesaura/events/ClientEvents.java index 17e540cd..2e4531e0 100644 --- a/src/main/java/de/ellpeck/naturesaura/events/ClientEvents.java +++ b/src/main/java/de/ellpeck/naturesaura/events/ClientEvents.java @@ -7,11 +7,17 @@ import de.ellpeck.naturesaura.aura.IAuraContainerProvider; import de.ellpeck.naturesaura.items.ModItems; import de.ellpeck.naturesaura.particles.ParticleHandler; import de.ellpeck.naturesaura.particles.ParticleMagic; +import net.minecraft.block.state.IBlockState; import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.Gui; import net.minecraft.client.gui.ScaledResolution; +import net.minecraft.client.renderer.GlStateManager; +import net.minecraft.client.resources.I18n; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.ResourceLocation; import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.MathHelper; import net.minecraft.util.text.TextFormatting; import net.minecraftforge.client.event.RenderGameOverlayEvent; import net.minecraftforge.client.event.RenderGameOverlayEvent.ElementType; @@ -27,6 +33,8 @@ import java.util.List; @SideOnly(Side.CLIENT) public class ClientEvents { + private static final ResourceLocation OVERLAYS = new ResourceLocation(NaturesAura.MOD_ID, "textures/gui/overlays.png"); + @SubscribeEvent public void onDebugRender(RenderGameOverlayEvent.Text event) { if (Minecraft.getMinecraft().gameSettings.showDebugInfo) { @@ -61,13 +69,15 @@ public class ClientEvents { @SubscribeEvent public void onOverlayRender(RenderGameOverlayEvent.Post event) { Minecraft mc = Minecraft.getMinecraft(); - if (event.getType() == ElementType.ALL && mc.currentScreen == null) { + if (event.getType() == ElementType.ALL /*&& mc.currentScreen == null*/) { ScaledResolution res = event.getResolution(); if (mc.player != null) { ItemStack stack = mc.player.getHeldItemMainhand(); if (!stack.isEmpty() && stack.getItem() == ModItems.EYE) { int maxAura = 0; int aura = 0; + int total = 0; + for (TileEntity tile : Helper.getTileEntitiesInArea(mc.world, mc.player.getPosition(), 15)) { if (tile instanceof IAuraContainerProvider) { IAuraContainerProvider provider = (IAuraContainerProvider) tile; @@ -75,11 +85,28 @@ public class ClientEvents { IAuraContainer container = provider.container(); maxAura += container.getMaxAura(); aura += container.getStoredAura(); + total++; } } } - String area = "Aura in the area: " + aura + " / " + maxAura; - mc.fontRenderer.drawString(area, 5, 5, 0xFFFFFF, true); + + GlStateManager.pushMatrix(); + mc.getTextureManager().bindTexture(OVERLAYS); + + GlStateManager.color(0.8F, 0.25F, 0.25F); + float totalPercentage = total / 1500F; + int tHeight = MathHelper.ceil(Math.min(1F, totalPercentage) * 75); + if (tHeight < 75) + Gui.drawModalRectWithCustomSizedTexture(3, 17, 6, 12, 6, 75 - tHeight, 256, 256); + if (tHeight > 0) + Gui.drawModalRectWithCustomSizedTexture(3, 17 + 75 - tHeight, 0, 12 + 75 - tHeight, 6, tHeight, 256, 256); + + GlStateManager.color(0.25F, 0.8F, 0.25F); + int aHeight = MathHelper.ceil(aura / (float) maxAura * 75); + if (aHeight < 75) + Gui.drawModalRectWithCustomSizedTexture(12, 17, 6, 12, 6, 75 - aHeight, 256, 256); + if (aHeight > 0) + Gui.drawModalRectWithCustomSizedTexture(12, 17 + 75 - aHeight, 0, 12 + 75 - aHeight, 6, aHeight, 256, 256); if (mc.objectMouseOver != null) { BlockPos pos = mc.objectMouseOver.getBlockPos(); @@ -87,13 +114,37 @@ public class ClientEvents { TileEntity tile = mc.world.getTileEntity(pos); if (tile instanceof IAuraContainerProvider) { IAuraContainer container = ((IAuraContainerProvider) tile).container(); - String s = "Aura stored: " + container.getStoredAura() + " / " + container.getMaxAura(); - mc.fontRenderer.drawString(s, - (res.getScaledWidth() - mc.fontRenderer.getStringWidth(s)) / 2, res.getScaledHeight() / 4 * 3, - container.getAuraColor(), true); + + int color = container.getAuraColor(); + GlStateManager.color((color >> 16 & 255) / 255F, (color >> 8 & 255) / 255F, (color & 255) / 255F); + + int x = res.getScaledWidth() / 2 - 50; + int y = res.getScaledHeight() / 2 + 25; + int width = MathHelper.ceil(container.getStoredAura() / (float) container.getMaxAura() * 100F); + + if (width < 100) + Gui.drawModalRectWithCustomSizedTexture(x + width, y, width, 0, 100 - width, 6, 256, 256); + if (width > 0) + Gui.drawModalRectWithCustomSizedTexture(x, y, 0, 6, width, 6, 256, 256); + + IBlockState state = mc.world.getBlockState(pos); + ItemStack blockStack = state.getBlock().getPickBlock(state, mc.objectMouseOver, mc.world, pos, mc.player); + String s = blockStack.getDisplayName(); + mc.fontRenderer.drawString(s, x + 50 - mc.fontRenderer.getStringWidth(s) / 2F, y - 9, color, true); } } } + + if (totalPercentage > 1F) { + mc.fontRenderer.drawString("+", 3F, 9.5F, 0xBB3333, true); + } + + float scale = 0.75F; + GlStateManager.scale(scale, scale, scale); + mc.fontRenderer.drawString(I18n.format("info." + NaturesAura.MOD_ID + ".aura_in_area"), 3 / scale, 3 / scale, 0xBB3333, true); + mc.fontRenderer.drawString(I18n.format("info." + NaturesAura.MOD_ID + ".aura_percentage"), 12 / scale, 10 / scale, 0x33BB33, true); + + GlStateManager.popMatrix(); } } } diff --git a/src/main/resources/assets/naturesaura/lang/en_US.lang b/src/main/resources/assets/naturesaura/lang/en_US.lang index 4fa6ad62..559e61bd 100644 --- a/src/main/resources/assets/naturesaura/lang/en_US.lang +++ b/src/main/resources/assets/naturesaura/lang/en_US.lang @@ -16,4 +16,7 @@ item.naturesaura.gold_leaf.name=Gold Leaf item.naturesaura.infused_iron.name=Infused Iron container.naturesaura.tree_ritual.name=Tree Infusion -container.naturesaura.altar.name=Natural Altar \ No newline at end of file +container.naturesaura.altar.name=Natural Altar + +info.naturesaura.aura_in_area=Provider Amount +info.naturesaura.aura_percentage=Saturation \ No newline at end of file diff --git a/src/main/resources/assets/naturesaura/textures/gui/overlays.png b/src/main/resources/assets/naturesaura/textures/gui/overlays.png new file mode 100644 index 00000000..363cfa2b Binary files /dev/null and b/src/main/resources/assets/naturesaura/textures/gui/overlays.png differ