From 28aa2fb79dcf83da770aaaeb1e6a482e93be569c Mon Sep 17 00:00:00 2001 From: Michael Ventura Date: Fri, 17 Jul 2015 15:35:06 -0400 Subject: [PATCH 1/2] added intellij idea --- .gitignore | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) diff --git a/.gitignore b/.gitignore index c43f869..8e4e56f 100644 --- a/.gitignore +++ b/.gitignore @@ -78,3 +78,54 @@ local.properties .buildpath /run/ /logs/ +# Created by https://www.gitignore.io + +### Intellij ### +# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm + +*.iml + +## Directory-based project format: +.idea/ +# if you remove the above rule, at least ignore the following: + +# User-specific stuff: +# .idea/workspace.xml +# .idea/tasks.xml +# .idea/dictionaries + +# Sensitive or high-churn files: +# .idea/dataSources.ids +# .idea/dataSources.xml +# .idea/sqlDataSources.xml +# .idea/dynamic.xml +# .idea/uiDesigner.xml + +# Gradle: +# .idea/gradle.xml +# .idea/libraries + +# Mongo Explorer plugin: +# .idea/mongoSettings.xml + +## File-based project format: +*.ipr +*.iws + +## Plugin-specific files: + +# IntelliJ +/out/ + +# mpeltonen/sbt-idea plugin +.idea_modules/ + +# JIRA plugin +atlassian-ide-plugin.xml + +# Crashlytics plugin (for Android Studio and IntelliJ) +com_crashlytics_export_strings.xml +crashlytics.properties +crashlytics-build.properties + +libs From 8664a301d9b3b9f29bb03c75d9108f9a224ffe0a Mon Sep 17 00:00:00 2001 From: Michael Ventura Date: Fri, 17 Jul 2015 15:35:22 -0400 Subject: [PATCH 2/2] updated for 1.8 --- build.gradle | 5 +- src/main/java/advancedhud/AdvancedHUD.java | 25 +++--- src/main/java/advancedhud/KeyRegister.java | 12 ++- src/main/java/advancedhud/TickHandler.java | 12 ++- .../java/advancedhud/api/RenderAssist.java | 62 +++++++------ .../advancedhud/client/GuiAdvancedHUD.java | 86 ++++++++++--------- .../client/huditems/HudItemBossBar.java | 4 +- .../client/huditems/HudItemExperienceBar.java | 12 +-- .../client/huditems/HudItemHealth.java | 18 ++-- .../client/huditems/HudItemRecordDisplay.java | 2 +- .../client/huditems/HudItemScoreboard.java | 43 +++++----- .../client/huditems/HudItemTooltips.java | 4 +- .../ui/GuiAdvancedHUDConfiguration.java | 24 ++++-- .../client/ui/GuiHudItemButton.java | 2 +- .../client/ui/GuiScreenHudItem.java | 7 +- .../client/ui/GuiScreenReposition.java | 12 ++- src/main/resources/mcmod.info | 8 +- 17 files changed, 181 insertions(+), 157 deletions(-) diff --git a/build.gradle b/build.gradle index bfb1d18..3f4eec7 100644 --- a/build.gradle +++ b/build.gradle @@ -17,13 +17,12 @@ buildscript { apply plugin: 'forge' -version = "1.0" +version = "1.0.0" group= "com.maxpowa" // http://maven.apache.org/guides/mini/guide-naming-conventions.html archivesBaseName = "advancedhud" minecraft { - version = "1.7.10-10.13.0.1180" - assetDir = "eclipse/assets" + version = "1.8-11.14.3.1450" } processResources diff --git a/src/main/java/advancedhud/AdvancedHUD.java b/src/main/java/advancedhud/AdvancedHUD.java index da5c1df..8a8b599 100644 --- a/src/main/java/advancedhud/AdvancedHUD.java +++ b/src/main/java/advancedhud/AdvancedHUD.java @@ -1,7 +1,5 @@ package advancedhud; -import org.apache.logging.log4j.Logger; - import advancedhud.api.HUDRegistry; import advancedhud.client.huditems.HudItemAir; import advancedhud.client.huditems.HudItemArmor; @@ -15,24 +13,27 @@ import advancedhud.client.huditems.HudItemJumpBar; import advancedhud.client.huditems.HudItemRecordDisplay; import advancedhud.client.huditems.HudItemTooltips; -import cpw.mods.fml.common.FMLCommonHandler; -import cpw.mods.fml.common.Mod; -import cpw.mods.fml.common.Mod.EventHandler; -import cpw.mods.fml.common.event.FMLInitializationEvent; -import cpw.mods.fml.common.event.FMLPreInitializationEvent; +import net.minecraftforge.fml.common.FMLCommonHandler; +import net.minecraftforge.fml.common.Mod; +import net.minecraftforge.fml.common.event.FMLInitializationEvent; +import net.minecraftforge.fml.common.event.FMLPreInitializationEvent; +import org.apache.logging.log4j.Logger; + + + -@Mod(modid = "AdvancedHUD", name = "AdvancedHUD", version = "Version [@VERSION@] for @MCVERSION@") +@Mod(modid = "AdvancedHUD", name = "AdvancedHUD", version = "1.1.0") public class AdvancedHUD { - public static String MC_VERSION = "@MCVERSION@"; - public static String ADVHUD_VERSION = "@VERSION@"; + public static String MC_VERSION = "1.8"; + public static String ADVHUD_VERSION = "1.1.0"; public static Logger log; - @EventHandler + @Mod.EventHandler public void preInit(FMLPreInitializationEvent event) { log = event.getModLog(); } - @EventHandler + @Mod.EventHandler public void onInit(FMLInitializationEvent event) { FMLCommonHandler.instance().bus().register(new TickHandler()); FMLCommonHandler.instance().bus().register(new KeyRegister()); diff --git a/src/main/java/advancedhud/KeyRegister.java b/src/main/java/advancedhud/KeyRegister.java index 1921405..05d3b7b 100644 --- a/src/main/java/advancedhud/KeyRegister.java +++ b/src/main/java/advancedhud/KeyRegister.java @@ -1,15 +1,13 @@ package advancedhud; +import advancedhud.client.ui.GuiAdvancedHUDConfiguration; import net.minecraft.client.Minecraft; import net.minecraft.client.settings.KeyBinding; - +import net.minecraftforge.fml.client.registry.ClientRegistry; +import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; +import net.minecraftforge.fml.common.gameevent.InputEvent; import org.lwjgl.input.Keyboard; -import advancedhud.client.ui.GuiAdvancedHUDConfiguration; -import cpw.mods.fml.client.registry.ClientRegistry; -import cpw.mods.fml.common.eventhandler.SubscribeEvent; -import cpw.mods.fml.common.gameevent.InputEvent.KeyInputEvent; - public class KeyRegister { public static KeyBinding config = new KeyBinding("\u00a7aAdvancedHUD Config", Keyboard.KEY_H, "key.categories.misc"); @@ -19,7 +17,7 @@ public class KeyRegister { } @SubscribeEvent - public void KeyInputEvent(KeyInputEvent event) { + public void KeyInputEvent(InputEvent.KeyInputEvent event) { Minecraft mc = Minecraft.getMinecraft(); if (config.isPressed() && mc.currentScreen == null) { mc.displayGuiScreen(new GuiAdvancedHUDConfiguration()); diff --git a/src/main/java/advancedhud/TickHandler.java b/src/main/java/advancedhud/TickHandler.java index b726ea7..55b166b 100644 --- a/src/main/java/advancedhud/TickHandler.java +++ b/src/main/java/advancedhud/TickHandler.java @@ -1,12 +1,10 @@ package advancedhud; -import net.minecraft.client.Minecraft; import advancedhud.api.HUDRegistry; import advancedhud.client.GuiAdvancedHUD; -import cpw.mods.fml.common.eventhandler.SubscribeEvent; -import cpw.mods.fml.common.gameevent.TickEvent.Phase; -import cpw.mods.fml.common.gameevent.TickEvent.RenderTickEvent; -import cpw.mods.fml.common.gameevent.TickEvent.Type; +import net.minecraft.client.Minecraft; +import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; +import net.minecraftforge.fml.common.gameevent.TickEvent; public class TickHandler { @@ -14,8 +12,8 @@ public class TickHandler { private boolean firstload = true; @SubscribeEvent - public void RenderTickEvent(RenderTickEvent event) { - if ((event.type == Type.RENDER || event.type == Type.CLIENT) && event.phase == Phase.END) { + public void RenderTickEvent(TickEvent.RenderTickEvent event) { + if ((event.type == TickEvent.Type.RENDER || event.type == TickEvent.Type.CLIENT) && event.phase == TickEvent.Phase.END) { Minecraft mc = Minecraft.getMinecraft(); if (!ticked && mc.ingameGUI != null) { mc.ingameGUI = new GuiAdvancedHUD(mc); diff --git a/src/main/java/advancedhud/api/RenderAssist.java b/src/main/java/advancedhud/api/RenderAssist.java index 9de36f9..1b9afe5 100644 --- a/src/main/java/advancedhud/api/RenderAssist.java +++ b/src/main/java/advancedhud/api/RenderAssist.java @@ -1,22 +1,22 @@ package advancedhud.api; -import java.awt.image.BufferedImage; -import java.io.IOException; - import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.Tessellator; +import net.minecraft.client.renderer.WorldRenderer; import net.minecraft.client.renderer.entity.RenderItem; import net.minecraft.client.renderer.texture.DynamicTexture; import net.minecraft.client.resources.IResource; import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; - import org.apache.batik.transcoder.TranscoderException; import org.apache.batik.transcoder.TranscoderInput; import org.apache.batik.transcoder.TranscoderOutput; import org.apache.batik.transcoder.image.ImageTranscoder; import org.lwjgl.opengl.GL11; +import java.awt.image.BufferedImage; +import java.io.IOException; + /** * * Some methods which are usually in GuiIngame, but since we don't have
@@ -37,12 +37,13 @@ public static void drawUnfilledCircle(float posX, float posY, float radius, int float f1 = (color >> 16 & 255) / 255.0F; float f2 = (color >> 8 & 255) / 255.0F; float f3 = (color & 255) / 255.0F; - Tessellator tessellator = Tessellator.instance; + Tessellator tessellator = Tessellator.getInstance(); + final WorldRenderer renderer = tessellator.getWorldRenderer(); GL11.glEnable(GL11.GL_BLEND); GL11.glDisable(GL11.GL_TEXTURE_2D); GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); GL11.glColor4f(f1, f2, f3, f); - tessellator.startDrawing(GL11.GL_LINE_LOOP); + renderer.startDrawing(GL11.GL_LINE_LOOP); for (int i = 0; i < num_segments; i++) { double theta = 2.0f * Math.PI * i / num_segments;// get the current // angle @@ -50,7 +51,7 @@ public static void drawUnfilledCircle(float posX, float posY, float radius, int double x = radius * Math.cos(theta);// calculate the x component double y = radius * Math.sin(theta);// calculate the y component - tessellator.addVertex(x + posX, y + posY, 0.0D);// output vertex + renderer.addVertex(x + posX, y + posY, 0.0D);// output vertex } tessellator.draw(); @@ -114,16 +115,17 @@ public static void drawUnfilledRect(float x1, float g, float x2, float y2, int c float f1 = (color >> 16 & 255) / 255.0F; float f2 = (color >> 8 & 255) / 255.0F; float f3 = (color & 255) / 255.0F; - Tessellator tessellator = Tessellator.instance; + Tessellator tessellator = Tessellator.getInstance(); + final WorldRenderer renderer = tessellator.getWorldRenderer(); GL11.glEnable(GL11.GL_BLEND); GL11.glDisable(GL11.GL_TEXTURE_2D); GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); GL11.glColor4f(f1, f2, f3, f); - tessellator.startDrawing(GL11.GL_LINE_LOOP); - tessellator.addVertex(x1, y2, 0.0D); - tessellator.addVertex(x2, y2, 0.0D); - tessellator.addVertex(x2, g, 0.0D); - tessellator.addVertex(x1, g, 0.0D); + renderer.startDrawing(GL11.GL_LINE_LOOP); + renderer.addVertex(x1, y2, 0.0D); + renderer.addVertex(x2, y2, 0.0D); + renderer.addVertex(x2, g, 0.0D); + renderer.addVertex(x1, g, 0.0D); tessellator.draw(); GL11.glEnable(GL11.GL_TEXTURE_2D); GL11.glDisable(GL11.GL_BLEND); @@ -167,12 +169,13 @@ public static void drawVerticalLine(int par1, int par2, int par3, int par4) { */ public static void drawTexturedModalRect(float x, float y, float u, float v, float width, float height) { float f = 0.00390625F; - Tessellator tessellator = Tessellator.instance; - tessellator.startDrawingQuads(); - tessellator.addVertexWithUV(x + 0, y + height, RenderAssist.zLevel, (u + 0) * f, (v + height) * f); - tessellator.addVertexWithUV(x + width, y + height, RenderAssist.zLevel, (u + width) * f, (v + height) * f); - tessellator.addVertexWithUV(x + width, y + 0, RenderAssist.zLevel, (u + width) * f, (v + 0) * f); - tessellator.addVertexWithUV(x + 0, y + 0, RenderAssist.zLevel, (u + 0) * f, (v + 0) * f); + Tessellator tessellator = Tessellator.getInstance(); + final WorldRenderer renderer = tessellator.getWorldRenderer(); + renderer.startDrawingQuads(); + renderer.addVertexWithUV(x + 0, y + height, RenderAssist.zLevel, (u + 0) * f, (v + height) * f); + renderer.addVertexWithUV(x + width, y + height, RenderAssist.zLevel, (u + width) * f, (v + height) * f); + renderer.addVertexWithUV(x + width, y + 0, RenderAssist.zLevel, (u + width) * f, (v + 0) * f); + renderer.addVertexWithUV(x + 0, y + 0, RenderAssist.zLevel, (u + 0) * f, (v + 0) * f); tessellator.draw(); } @@ -223,16 +226,17 @@ public static void drawRect(float g, float h, float i, float j, int color) { float f1 = (color >> 16 & 255) / 255.0F; float f2 = (color >> 8 & 255) / 255.0F; float f3 = (color & 255) / 255.0F; - Tessellator tessellator = Tessellator.instance; + Tessellator tessellator = Tessellator.getInstance(); + final WorldRenderer renderer = tessellator.getWorldRenderer(); GL11.glEnable(GL11.GL_BLEND); GL11.glDisable(GL11.GL_TEXTURE_2D); GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); GL11.glColor4f(f1, f2, f3, f); - tessellator.startDrawingQuads(); - tessellator.addVertex(g, j, 0.0D); - tessellator.addVertex(i, j, 0.0D); - tessellator.addVertex(i, h, 0.0D); - tessellator.addVertex(g, h, 0.0D); + renderer.startDrawingQuads(); + renderer.addVertex(g, j, 0.0D); + renderer.addVertex(i, j, 0.0D); + renderer.addVertex(i, h, 0.0D); + renderer.addVertex(g, h, 0.0D); tessellator.draw(); GL11.glEnable(GL11.GL_TEXTURE_2D); GL11.glDisable(GL11.GL_BLEND); @@ -243,7 +247,7 @@ public static void drawRect(float g, float h, float i, float j, int color) { * location. */ public static void renderInventorySlot(int slot, int x, int y, float partialTick, Minecraft mc) { - RenderItem itemRenderer = new RenderItem(); + RenderItem itemRenderer = mc.getRenderItem(); ItemStack itemstack = mc.thePlayer.inventory.mainInventory[slot]; x += 91; y += 12; @@ -258,14 +262,16 @@ public static void renderInventorySlot(int slot, int x, int y, float partialTick GL11.glScalef(1.0F / f2, (f2 + 1.0F) / 2.0F, 1.0F); GL11.glTranslatef(-(x + 8), -(y + 12), 0.0F); } + itemRenderer.func_180450_b(itemstack,x,y); - itemRenderer.renderItemAndEffectIntoGUI(mc.fontRenderer, mc.getTextureManager(), itemstack, x, y); + //itemRenderer.renderItemAndEffectIntoGUI(mc.fontRendererObj, mc.getTextureManager(), itemstack, x, y); if (f1 > 0.0F) { GL11.glPopMatrix(); } + itemRenderer.func_180453_a(mc.fontRendererObj, itemstack, x, y, null); - itemRenderer.renderItemOverlayIntoGUI(mc.fontRenderer, mc.getTextureManager(), itemstack, x, y); + //itemRenderer.renderItemOverlayIntoGUI(mc.fontRenderer, mc.getTextureManager(), itemstack, x, y); } } diff --git a/src/main/java/advancedhud/client/GuiAdvancedHUD.java b/src/main/java/advancedhud/client/GuiAdvancedHUD.java index 577dcf7..4d6cc4b 100644 --- a/src/main/java/advancedhud/client/GuiAdvancedHUD.java +++ b/src/main/java/advancedhud/client/GuiAdvancedHUD.java @@ -1,34 +1,34 @@ package advancedhud.client; -import java.util.ArrayList; -import java.util.List; - +import advancedhud.AdvancedHUD; +import advancedhud.api.HUDRegistry; +import advancedhud.api.HudItem; +import advancedhud.api.RenderAssist; +import com.mojang.authlib.GameProfile; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.Gui; -import net.minecraft.client.gui.GuiPlayerInfo; import net.minecraft.client.gui.ScaledResolution; import net.minecraft.client.network.NetHandlerPlayClient; +import net.minecraft.client.network.NetworkPlayerInfo; import net.minecraft.client.renderer.OpenGlHelper; import net.minecraft.client.resources.I18n; import net.minecraft.entity.EntityLivingBase; import net.minecraft.scoreboard.Score; import net.minecraft.scoreboard.ScoreObjective; import net.minecraft.scoreboard.ScorePlayerTeam; -import net.minecraft.util.Direction; +import net.minecraft.util.BlockPos; import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.EnumFacing; import net.minecraft.util.MathHelper; import net.minecraft.util.StringUtils; import net.minecraft.world.EnumSkyBlock; import net.minecraft.world.chunk.Chunk; import net.minecraftforge.client.GuiIngameForge; - +import net.minecraftforge.fml.common.FMLCommonHandler; import org.lwjgl.opengl.GL11; -import advancedhud.AdvancedHUD; -import advancedhud.api.HUDRegistry; -import advancedhud.api.HudItem; -import advancedhud.api.RenderAssist; -import cpw.mods.fml.common.FMLCommonHandler; +import java.util.ArrayList; +import java.util.List; public class GuiAdvancedHUD extends GuiIngameForge { @@ -41,7 +41,7 @@ public GuiAdvancedHUD(Minecraft mc) { } @Override - public void renderGameOverlay(float partialTicks, boolean hasScreen, int mouseX, int mouseY) { + protected void func_180479_a(final ScaledResolution res, final float partialTicks) { mc.mcProfiler.startSection("Advanced Hud"); GuiAdvancedHUD.partialTicks = partialTicks; @@ -53,8 +53,6 @@ public void renderGameOverlay(float partialTicks, boolean hasScreen, int mouseX, GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); GL11.glBlendFunc(770, 771); - res = new ScaledResolution(mc, mc.displayWidth, mc.displayHeight); - mc.mcProfiler.startSection("modules"); for (HudItem huditem : HUDRegistry.getHudItemList()) { mc.mcProfiler.startSection(huditem.getName()); @@ -116,10 +114,10 @@ protected void renderHUDText(int width, int height) { if (mc.gameSettings.showDebugInfo) { GL11.glPushMatrix(); left.add("Minecraft " + AdvancedHUD.MC_VERSION + " (" + mc.debug + ")"); - left.add(mc.debugInfoRenders()); - left.add(mc.getEntityDebug()); - left.add(mc.debugInfoEntities()); - left.add(mc.getWorldProviderName()); + left.add(mc.renderGlobal.getDebugInfoRenders()); + left.add(mc.theWorld.getDebugLoadedEntities()); + left.add(mc.renderGlobal.getDebugInfoEntities()); + left.add(mc.theWorld.getProviderName()); left.add(null); // Spacer long max = Runtime.getRuntime().maxMemory(); @@ -137,18 +135,25 @@ protected void renderHUDText(int width, int height) { int heading = MathHelper.floor_double(mc.thePlayer.rotationYaw * 4.0F / 360.0F + 0.5D) & 3; left.add(String.format("x: %.5f (%d) // c: %d (%d)", mc.thePlayer.posX, x, x >> 4, x & 15)); - left.add(String.format("y: %.3f (feet pos, %.3f eyes pos)", mc.thePlayer.boundingBox.minY, mc.thePlayer.posY)); + left.add(String.format("y: %.3f (feet pos, %.3f eyes pos)", mc.thePlayer.posY, mc.thePlayer.getEyeHeight + ())); left.add(String.format("z: %.5f (%d) // c: %d (%d)", mc.thePlayer.posZ, z, z >> 4, z & 15)); - left.add(String.format("f: %d (%s) / %f", heading, Direction.directions[heading], MathHelper.wrapAngleTo180_float(yaw))); - - if (mc.theWorld != null && mc.theWorld.blockExists(x, y, z)) { - Chunk chunk = mc.theWorld.getChunkFromBlockCoords(x, z); - left.add(String.format("lc: %d b: %s bl: %d sl: %d rl: %d", chunk.getTopFilledSegment() + 15, chunk.getBiomeGenForWorldCoords(x & 15, z & 15, mc.theWorld.getWorldChunkManager()).biomeName, chunk.getSavedLightValue(EnumSkyBlock.Block, x & 15, y, z & 15), chunk.getSavedLightValue(EnumSkyBlock.Sky, x & 15, y, z & 15), chunk.getBlockLightValue(x & 15, y, z & 15, 0))); + left.add(String.format("f: %d (%s) / %f", heading, EnumFacing.values()[heading + 2], MathHelper + .wrapAngleTo180_float(yaw))); + + final BlockPos pos = new BlockPos(x, y, z); + if (mc.theWorld != null && mc.theWorld.chunkExists(x, z)) { + final Chunk chunk = mc.theWorld.getChunkFromBlockCoords(pos); + left.add(String.format("lc: %d b: %s bl: %d sl: %d rl: %d", chunk.getTopFilledSegment() + 15, + chunk.getBiome(pos, mc.theWorld.getWorldChunkManager()).biomeName, chunk.getLightFor(EnumSkyBlock + .BLOCK, new BlockPos(x & 15, y, z & 15)), chunk.getLightFor(EnumSkyBlock.SKY, new BlockPos(x & + 15, y, z & 15)), chunk.getLightFor(EnumSkyBlock.BLOCK, new BlockPos(x & 15, y, z & 15)))); } else { left.add(null); } - left.add(String.format("ws: %.3f, fs: %.3f, g: %b, fl: %d", mc.thePlayer.capabilities.getWalkSpeed(), mc.thePlayer.capabilities.getFlySpeed(), mc.thePlayer.onGround, mc.theWorld.getHeightValue(x, z))); + left.add(String.format("ws: %.3f, fs: %.3f, g: %b, fl: %d", mc.thePlayer.capabilities.getWalkSpeed(), mc + .thePlayer.capabilities.getFlySpeed(), mc.thePlayer.onGround, mc.theWorld.getActualHeight())); if (mc.entityRenderer != null && mc.entityRenderer.isShaderActive()) { left.add(String.format("shader: %s", mc.entityRenderer.getShaderGroup().getShaderGroupName())); } @@ -165,7 +170,7 @@ protected void renderHUDText(int width, int height) { if (msg == null) { continue; } - mc.fontRenderer.drawStringWithShadow(msg, 2, 2 + x * 10, 0xFFFFFF); + mc.fontRendererObj.drawString(msg, 2, 2 + x * 10, 0xFFFFFF); } for (int x = 0; x < right.size(); x++) { @@ -173,8 +178,8 @@ protected void renderHUDText(int width, int height) { if (msg == null) { continue; } - int w = mc.fontRenderer.getStringWidth(msg); - mc.fontRenderer.drawStringWithShadow(msg, width - w - 10, 2 + x * 10, 0xFFFFFF); + int w = mc.fontRendererObj.getStringWidth(msg); + mc.fontRendererObj.drawString(msg, width - w - 10, 2 + x * 10, 0xFFFFFF); } mc.mcProfiler.endSection(); @@ -183,11 +188,11 @@ protected void renderHUDText(int width, int height) { @Override protected void renderPlayerList(int width, int height) { mc.mcProfiler.startSection("playerList"); - ScoreObjective scoreobjective = mc.theWorld.getScoreboard().func_96539_a(0); + ScoreObjective scoreobjective = mc.theWorld.getScoreboard().getObjectiveInDisplaySlot(0); NetHandlerPlayClient handler = mc.thePlayer.sendQueue; - if (mc.gameSettings.keyBindPlayerList.isPressed() && (!mc.isIntegratedServerRunning() || handler.playerInfoList.size() > 1 || scoreobjective != null)) { - List players = handler.playerInfoList; + if (mc.gameSettings.keyBindPlayerList.isPressed() && (!mc.isIntegratedServerRunning() || handler.func_175106_d() .size() > 1 || scoreobjective != null)) { + List players = (List) handler.func_175106_d(); int maxPlayers = handler.currentServerMaxPlayers; int rows = maxPlayers; int columns = 1; @@ -214,19 +219,22 @@ protected void renderPlayerList(int width, int height) { GL11.glEnable(GL11.GL_ALPHA_TEST); if (i < players.size()) { - GuiPlayerInfo player = (GuiPlayerInfo) players.get(i); - ScorePlayerTeam team = mc.theWorld.getScoreboard().getPlayersTeam(player.name); - String displayName = ScorePlayerTeam.formatPlayerName(team, player.name); - mc.fontRenderer.drawStringWithShadow(displayName, xPos, yPos, 16777215); + NetworkPlayerInfo player = (NetworkPlayerInfo) players.get(i); + final GameProfile gameProfile = player.func_178845_a(); + ScorePlayerTeam team = mc.theWorld.getScoreboard().getPlayersTeam(gameProfile.getName()); + String displayName = ScorePlayerTeam.formatPlayerName(team, gameProfile.getName()); + mc.fontRendererObj.drawString(displayName, xPos, yPos, 16777215); if (scoreobjective != null) { - int endX = xPos + mc.fontRenderer.getStringWidth(displayName) + 5; + int endX = xPos + mc.fontRendererObj.getStringWidth(displayName) + 5; int maxX = xPos + columnWidth - 12 - 5; if (maxX - endX > 5) { - Score score = scoreobjective.getScoreboard().func_96529_a(player.name, scoreobjective); + Score score = scoreobjective.getScoreboard().getValueFromObjective(gameProfile.getName(), + scoreobjective); String scoreDisplay = EnumChatFormatting.YELLOW + "" + score.getScorePoints(); - mc.fontRenderer.drawStringWithShadow(scoreDisplay, maxX - mc.fontRenderer.getStringWidth(scoreDisplay), yPos, 16777215); + mc.fontRendererObj.drawString(scoreDisplay, maxX - mc.fontRendererObj.getStringWidth + (scoreDisplay), yPos, 16777215); } } @@ -234,7 +242,7 @@ protected void renderPlayerList(int width, int height) { RenderAssist.bindTexture(Gui.icons); int pingIndex = 4; - int ping = player.responseTime; + int ping = player.getResponseTime(); if (ping < 0) { pingIndex = 5; } else if (ping < 150) { diff --git a/src/main/java/advancedhud/client/huditems/HudItemBossBar.java b/src/main/java/advancedhud/client/huditems/HudItemBossBar.java index c5e84b8..1b463e9 100644 --- a/src/main/java/advancedhud/client/huditems/HudItemBossBar.java +++ b/src/main/java/advancedhud/client/huditems/HudItemBossBar.java @@ -68,7 +68,7 @@ public void render(float paramFloat) { if (BossStatus.bossName != null) { --BossStatus.statusBarTime; } - FontRenderer fontrenderer = Minecraft.getMinecraft().fontRenderer; + FontRenderer fontrenderer = Minecraft.getMinecraft().fontRendererObj; short short1 = 182; int j = posX; @@ -85,7 +85,7 @@ public void render(float paramFloat) { } String s = BossStatus.bossName != null ? BossStatus.bossName : "AdvancedHUD Config"; - fontrenderer.drawStringWithShadow(s, posX + 91 - fontrenderer.getStringWidth(s) / 2, b0 - 10, 16777215); + fontrenderer.drawString(s, posX + 91 - fontrenderer.getStringWidth(s) / 2, b0 - 10, 16777215); GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); RenderAssist.bindTexture(Gui.icons); } diff --git a/src/main/java/advancedhud/client/huditems/HudItemExperienceBar.java b/src/main/java/advancedhud/client/huditems/HudItemExperienceBar.java index a7ba4d2..2e8ffa7 100644 --- a/src/main/java/advancedhud/client/huditems/HudItemExperienceBar.java +++ b/src/main/java/advancedhud/client/huditems/HudItemExperienceBar.java @@ -95,13 +95,13 @@ public void render(float paramFloat) { boolean flag1 = false; int color = flag1 ? 16777215 : 8453920; String text = "" + mc.thePlayer.experienceLevel; - int x = posX + 91 - mc.fontRenderer.getStringWidth(text) / 2; + int x = posX + 91 - mc.fontRendererObj.getStringWidth(text) / 2; int y = posY - 6; - mc.fontRenderer.drawString(text, x + 1, y, 0); - mc.fontRenderer.drawString(text, x - 1, y, 0); - mc.fontRenderer.drawString(text, x, y + 1, 0); - mc.fontRenderer.drawString(text, x, y - 1, 0); - mc.fontRenderer.drawString(text, x, y, color); + mc.fontRendererObj.drawString(text, x + 1, y, 0); + mc.fontRendererObj.drawString(text, x - 1, y, 0); + mc.fontRendererObj.drawString(text, x, y + 1, 0); + mc.fontRendererObj.drawString(text, x, y - 1, 0); + mc.fontRendererObj.drawString(text, x, y, color); } GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); GL11.glDisable(GL11.GL_BLEND); diff --git a/src/main/java/advancedhud/client/huditems/HudItemHealth.java b/src/main/java/advancedhud/client/huditems/HudItemHealth.java index b3317fe..9e66e64 100644 --- a/src/main/java/advancedhud/client/huditems/HudItemHealth.java +++ b/src/main/java/advancedhud/client/huditems/HudItemHealth.java @@ -1,7 +1,10 @@ package advancedhud.client.huditems; -import java.util.Random; - +import advancedhud.api.Alignment; +import advancedhud.api.HUDRegistry; +import advancedhud.api.HudItem; +import advancedhud.api.RenderAssist; +import advancedhud.client.ui.GuiScreenHudItem; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.Gui; import net.minecraft.client.gui.GuiScreen; @@ -9,19 +12,15 @@ import net.minecraft.entity.ai.attributes.IAttributeInstance; import net.minecraft.potion.Potion; import net.minecraft.util.MathHelper; - import org.lwjgl.opengl.GL11; -import advancedhud.api.Alignment; -import advancedhud.api.HUDRegistry; -import advancedhud.api.HudItem; -import advancedhud.api.RenderAssist; -import advancedhud.client.ui.GuiScreenHudItem; +import java.util.Random; public class HudItemHealth extends HudItem { Minecraft mc = null; Random rand = new Random(); + Float prevHealth; @Override public String getName() { @@ -84,7 +83,8 @@ public void render(float partialTicks) { IAttributeInstance attrMaxHealth = mc.thePlayer.getEntityAttribute(SharedMonsterAttributes.maxHealth); int health = MathHelper.ceiling_float_int(mc.thePlayer.getHealth()); - int healthLast = MathHelper.ceiling_float_int(mc.thePlayer.prevHealth); + int healthLast = MathHelper.ceiling_float_int(prevHealth == null ? health : prevHealth); + prevHealth = (float) health; float healthMax = (float)attrMaxHealth.getAttributeValue(); float absorb = mc.thePlayer.getAbsorptionAmount(); diff --git a/src/main/java/advancedhud/client/huditems/HudItemRecordDisplay.java b/src/main/java/advancedhud/client/huditems/HudItemRecordDisplay.java index 105fa41..ff96a95 100644 --- a/src/main/java/advancedhud/client/huditems/HudItemRecordDisplay.java +++ b/src/main/java/advancedhud/client/huditems/HudItemRecordDisplay.java @@ -79,7 +79,7 @@ public void render(float partialTicks) { GL11.glEnable(GL11.GL_BLEND); GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); int color = recordIsPlaying ? Color.HSBtoRGB(hue / 50.0F, 0.7F, 0.6F) & 0xFFFFFF : 0xFFFFFF; - mc.fontRenderer.drawString(recordPlaying, -mc.fontRenderer.getStringWidth(recordPlaying) / 2, -4, color | opacity << 24); + mc.fontRendererObj.drawString(recordPlaying, -mc.fontRendererObj.getStringWidth(recordPlaying) / 2, -4, color | opacity << 24); GL11.glDisable(GL11.GL_BLEND); GL11.glPopMatrix(); } diff --git a/src/main/java/advancedhud/client/huditems/HudItemScoreboard.java b/src/main/java/advancedhud/client/huditems/HudItemScoreboard.java index ed68f5d..1502cf7 100644 --- a/src/main/java/advancedhud/client/huditems/HudItemScoreboard.java +++ b/src/main/java/advancedhud/client/huditems/HudItemScoreboard.java @@ -1,8 +1,10 @@ package advancedhud.client.huditems; -import java.util.Collection; -import java.util.Iterator; - +import advancedhud.api.Alignment; +import advancedhud.api.HUDRegistry; +import advancedhud.api.HudItem; +import advancedhud.api.RenderAssist; +import advancedhud.client.ui.GuiScreenHudItem; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiScreen; import net.minecraft.scoreboard.Score; @@ -10,11 +12,9 @@ import net.minecraft.scoreboard.ScorePlayerTeam; import net.minecraft.scoreboard.Scoreboard; import net.minecraft.util.EnumChatFormatting; -import advancedhud.api.Alignment; -import advancedhud.api.HUDRegistry; -import advancedhud.api.HudItem; -import advancedhud.api.RenderAssist; -import advancedhud.client.ui.GuiScreenHudItem; + +import java.util.Collection; +import java.util.Iterator; public class HudItemScoreboard extends HudItem { @@ -42,12 +42,12 @@ public int getDefaultPosX() { @Override public int getDefaultPosY() { Minecraft mc = Minecraft.getMinecraft(); - ScoreObjective objective = mc.theWorld.getScoreboard().func_96539_a(1); + ScoreObjective objective = mc.theWorld.getScoreboard().getObjectiveInDisplaySlot(1); if (objective != null) { Scoreboard scoreboard = objective.getScoreboard(); - Collection collection = scoreboard.func_96534_i(objective); + Collection collection = scoreboard.getSortedScores(objective); if (collection.size() <= 15) { - int l = collection.size() * mc.fontRenderer.FONT_HEIGHT; + int l = collection.size() * mc.fontRendererObj.FONT_HEIGHT; return HUDRegistry.screenHeight / 2 + l / 3; } } @@ -78,16 +78,17 @@ public GuiScreen getConfigScreen() { @Override public void render(float paramFloat) { Minecraft mc = Minecraft.getMinecraft(); - ScoreObjective objective = mc.theWorld.getScoreboard().func_96539_a(1); + ScoreObjective objective = mc.theWorld.getScoreboard().getObjectiveInDisplaySlot(1); if (objective != null) { Scoreboard scoreboard = objective.getScoreboard(); - Collection collection = scoreboard.func_96534_i(objective); + Collection collection = scoreboard.getSortedScores(objective); if (collection.size() <= 15) { - int k = mc.fontRenderer.getStringWidth(objective.getDisplayName()); + int k = mc.fontRendererObj.getStringWidth(objective.getDisplayName()); String s; - for (Iterator iterator = collection.iterator(); iterator.hasNext(); k = Math.max(k, mc.fontRenderer.getStringWidth(s))) { + for (Iterator iterator = collection.iterator(); iterator.hasNext(); k = Math.max(k, mc.fontRendererObj + .getStringWidth(s))) { Score score = (Score) iterator.next(); ScorePlayerTeam scoreplayerteam = scoreboard.getPlayersTeam(score.getPlayerName()); s = ScorePlayerTeam.formatPlayerName(scoreplayerteam, score.getPlayerName()) + ": " + EnumChatFormatting.RED + score.getScorePoints(); @@ -105,18 +106,18 @@ public void render(float paramFloat) { ScorePlayerTeam scoreplayerteam1 = scoreboard.getPlayersTeam(score1.getPlayerName()); String s1 = ScorePlayerTeam.formatPlayerName(scoreplayerteam1, score1.getPlayerName()); String s2 = EnumChatFormatting.RED + "" + score1.getScorePoints(); - int l1 = i1 - k1 * mc.fontRenderer.FONT_HEIGHT; + int l1 = i1 - k1 * mc.fontRendererObj.FONT_HEIGHT; int i2 = HUDRegistry.screenWidth - b0 + 2; posX = j1; - RenderAssist.drawRect(j1 - 2, l1, i2, l1 + mc.fontRenderer.FONT_HEIGHT, 1342177280); - mc.fontRenderer.drawString(s1, j1, l1, 553648127); - mc.fontRenderer.drawString(s2, i2 - mc.fontRenderer.getStringWidth(s2), l1, 553648127); + RenderAssist.drawRect(j1 - 2, l1, i2, l1 + mc.fontRendererObj.FONT_HEIGHT, 1342177280); + mc.fontRendererObj.drawString(s1, j1, l1, 553648127); + mc.fontRendererObj.drawString(s2, i2 - mc.fontRendererObj.getStringWidth(s2), l1, 553648127); if (k1 == collection.size()) { String s3 = objective.getDisplayName(); - RenderAssist.drawRect(j1 - 2, l1 - mc.fontRenderer.FONT_HEIGHT - 1, i2, l1 - 1, 1610612736); + RenderAssist.drawRect(j1 - 2, l1 - mc.fontRendererObj.FONT_HEIGHT - 1, i2, l1 - 1, 1610612736); RenderAssist.drawRect(j1 - 2, l1 - 1, i2, l1, 1342177280); - mc.fontRenderer.drawString(s3, j1 + k / 2 - mc.fontRenderer.getStringWidth(s3) / 2, l1 - mc.fontRenderer.FONT_HEIGHT, 553648127); + mc.fontRendererObj.drawString(s3, j1 + k / 2 - mc.fontRendererObj.getStringWidth(s3) / 2, l1 - mc.fontRendererObj.FONT_HEIGHT, 553648127); } } } diff --git a/src/main/java/advancedhud/client/huditems/HudItemTooltips.java b/src/main/java/advancedhud/client/huditems/HudItemTooltips.java index 98bb4c8..d311f40 100644 --- a/src/main/java/advancedhud/client/huditems/HudItemTooltips.java +++ b/src/main/java/advancedhud/client/huditems/HudItemTooltips.java @@ -69,7 +69,7 @@ public void render(float paramFloat) { } if (itemName != null && !itemName.isEmpty()) { - FontRenderer fontrenderer = mc.fontRenderer; + FontRenderer fontrenderer = mc.fontRendererObj; int posX = 0; if (Alignment.isLeft(alignment)) { posX = this.posX; @@ -79,7 +79,7 @@ public void render(float paramFloat) { posX = this.posX + getWidth() - fontrenderer.getStringWidth(itemName); } - fontrenderer.drawStringWithShadow(itemRarityColorCode + itemName, posX, posY, stringColor); + fontrenderer.drawString(itemRarityColorCode + itemName, posX, posY, stringColor); } } diff --git a/src/main/java/advancedhud/client/ui/GuiAdvancedHUDConfiguration.java b/src/main/java/advancedhud/client/ui/GuiAdvancedHUDConfiguration.java index ed65d1c..fe79f38 100644 --- a/src/main/java/advancedhud/client/ui/GuiAdvancedHUDConfiguration.java +++ b/src/main/java/advancedhud/client/ui/GuiAdvancedHUDConfiguration.java @@ -12,6 +12,8 @@ import advancedhud.api.HUDRegistry; import advancedhud.api.HudItem; +import java.io.IOException; + public class GuiAdvancedHUDConfiguration extends GuiScreen { private static boolean asMount = false; @@ -45,9 +47,9 @@ public void drawScreen(int par1, int par2, float par3) { } if (help) { - drawCenteredString(mc.fontRenderer, "LEFT CLICK to reposition, RIGHT CLICK to change settings", width / 2, 17, 0xFFFFFF); - drawCenteredString(mc.fontRenderer, "ESCAPE to cancel, R to reset all", width / 2, 27, 0xFFFFFF); - drawCenteredString(mc.fontRenderer, "M to change to" + (asMount ? " player " : " mount ") + "HUD", width / 2, 37, 0xFFFFFF); + drawCenteredString(mc.fontRendererObj, "LEFT CLICK to reposition, RIGHT CLICK to change settings", width / 2, 17, 0xFFFFFF); + drawCenteredString(mc.fontRendererObj, "ESCAPE to cancel, R to reset all", width / 2, 27, 0xFFFFFF); + drawCenteredString(mc.fontRendererObj, "M to change to" + (asMount ? " player " : " mount ") + "HUD", width / 2, 37, 0xFFFFFF); } super.drawScreen(par1, par2, par3); @@ -58,7 +60,8 @@ public void drawScreen(int par1, int par2, float par3) { * KeyListener.keyTyped(KeyEvent e). */ @Override - protected void keyTyped(char par1, int par2) { + protected void keyTyped(char par1, int par2) + throws IOException { if (par2 == 19) { HUDRegistry.resetAllDefaults(); initGui(); @@ -73,7 +76,8 @@ protected void keyTyped(char par1, int par2) { } @Override - protected void actionPerformed(GuiButton par1GuiButton) { + protected void actionPerformed(GuiButton par1GuiButton) + throws IOException { if (par1GuiButton.id == -1) { mc.displayGuiScreen(null); SaveController.saveConfig("config"); @@ -88,13 +92,15 @@ protected void actionPerformed(GuiButton par1GuiButton) { } @Override - public void mouseClicked(int i, int j, int mouseButton) { + public void mouseClicked(int i, int j, int mouseButton) + throws IOException { if (mouseButton == 1) { - for (int l = 0; l < buttonList.size(); ++l) { - GuiButton guibutton = (GuiButton) buttonList.get(l); + for (Object aButtonList : buttonList) { + GuiButton guibutton = (GuiButton) aButtonList; if (guibutton.mousePressed(mc, i, j)) { - mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); + mc.getSoundHandler().playSound(PositionedSoundRecord.create(new ResourceLocation("gui.button" + + ".press"), 1.0F)); HudItem hudItem = HUDRegistry.getHudItemByID(guibutton.id); if (hudItem != null) { Minecraft.getMinecraft().displayGuiScreen(hudItem.getConfigScreen()); diff --git a/src/main/java/advancedhud/client/ui/GuiHudItemButton.java b/src/main/java/advancedhud/client/ui/GuiHudItemButton.java index 54a25ee..407c222 100644 --- a/src/main/java/advancedhud/client/ui/GuiHudItemButton.java +++ b/src/main/java/advancedhud/client/ui/GuiHudItemButton.java @@ -26,7 +26,7 @@ public GuiHudItemButton(int id, int xPosition, int yPosition, int width, int hei public void drawButton(Minecraft mc, int mouseX, int mouseY) { if (visible) { GL11.glPushMatrix(); - FontRenderer fontrenderer = mc.fontRenderer; + FontRenderer fontrenderer = mc.fontRendererObj; GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); boolean hoverState = mouseX >= xPosition && mouseY >= yPosition && mouseX < xPosition + width && mouseY < yPosition + height; for (HudItem huditem : HUDRegistry.getHudItemList()) { diff --git a/src/main/java/advancedhud/client/ui/GuiScreenHudItem.java b/src/main/java/advancedhud/client/ui/GuiScreenHudItem.java index 72ebf30..5d37bd4 100644 --- a/src/main/java/advancedhud/client/ui/GuiScreenHudItem.java +++ b/src/main/java/advancedhud/client/ui/GuiScreenHudItem.java @@ -7,6 +7,8 @@ import advancedhud.api.HudItem; import advancedhud.client.huditems.HudItemCrosshairs; +import java.io.IOException; + public class GuiScreenHudItem extends GuiScreen { private HudItem hudItem; @@ -38,7 +40,7 @@ public void drawScreen(int par1, int par2, float par3) { initGui(); } - this.drawCenteredString(mc.fontRenderer, hudItem.getButtonLabel(), HUDRegistry.screenWidth / 2, 10, 0xFFFFFF); + this.drawCenteredString(mc.fontRendererObj, hudItem.getButtonLabel(), HUDRegistry.screenWidth / 2, 10, 0xFFFFFF); super.drawScreen(par1, par2, par3); } @@ -50,7 +52,8 @@ protected void keyTyped(char keyChar, int keyCode) { } @Override - protected void actionPerformed(GuiButton par1GuiButton) { + protected void actionPerformed(GuiButton par1GuiButton) + throws IOException { if (par1GuiButton.id == -1) { mc.displayGuiScreen(parentScreen); } else if (par1GuiButton.id == 100) { diff --git a/src/main/java/advancedhud/client/ui/GuiScreenReposition.java b/src/main/java/advancedhud/client/ui/GuiScreenReposition.java index aea37be..e51685d 100644 --- a/src/main/java/advancedhud/client/ui/GuiScreenReposition.java +++ b/src/main/java/advancedhud/client/ui/GuiScreenReposition.java @@ -10,6 +10,8 @@ import advancedhud.api.HudItem; import advancedhud.client.GuiAdvancedHUD; +import java.io.IOException; + public class GuiScreenReposition extends GuiScreen { protected GuiScreen parentScreen; protected HudItem hudItem; @@ -26,7 +28,8 @@ public GuiScreenReposition(GuiScreen parentScreen, HudItem hudItem) { } @Override - public void handleMouseInput() { + public void handleMouseInput() + throws IOException { int mouseX = Mouse.getEventX() * width / mc.displayWidth; int mouseY = height - Mouse.getEventY() * height / mc.displayHeight - 1; @@ -52,8 +55,8 @@ public void drawScreen(int mouseX, int mouseY, float f) { this.drawDefaultBackground(); if (help) { - drawCenteredString(mc.fontRenderer, "CLICK to confirm, ESCAPE to cancel, R to reset, CTRL to align", width / 2, 16, 16777215); - drawCenteredString(mc.fontRenderer, "Alignment: " + Alignment.calculateAlignment(mouseX, mouseY), width / 2, 26, 16777215); + drawCenteredString(mc.fontRendererObj, "CLICK to confirm, ESCAPE to cancel, R to reset, CTRL to align", width / 2, 16, 16777215); + drawCenteredString(mc.fontRendererObj, "Alignment: " + Alignment.calculateAlignment(mouseX, mouseY), width / 2, 26, 16777215); } hudItem.render(GuiAdvancedHUD.partialTicks); @@ -76,7 +79,8 @@ protected void mouseClicked(int mouseX, int mouseY, int mouseState) { } @Override - public void handleKeyboardInput() { + public void handleKeyboardInput() + throws IOException { super.handleKeyboardInput(); if (Keyboard.getEventKey() == 29) { diff --git a/src/main/resources/mcmod.info b/src/main/resources/mcmod.info index 432dbe8..9895ba7 100644 --- a/src/main/resources/mcmod.info +++ b/src/main/resources/mcmod.info @@ -3,13 +3,13 @@ "modid": "advancedhud", "name": "Advanced HUD", "description": "A continuation of Advanced HUD by TurboSlow", -"version": "Version [@VERSION@] for @MCVERSION@", -"credits": "Created by TurboSlow, Maintained by maxpowa", +"version": "1.1.0", +"credits": "Created by TurboSlow, Maintained by maxpowa, 1.8 by mquinnv", "logoFile": "", -"mcversion": "@MCVERSION@", +"mcversion": "1.8", "url": "", "updateUrl": "", -"authors": [ "maxpowa", "TurboSlow" ], +"authors": [ "mquinnv", "maxpowa", "TurboSlow" ], "parent":"", "screenshots": [], "dependencies": []