From 8499a98beeb556c16987fc375dbd7d05d6c27ab4 Mon Sep 17 00:00:00 2001 From: Moulberry Date: Mon, 20 Jul 2020 05:12:05 +1000 Subject: some profile viewer stuffs --- .../moulberry/notenoughupdates/NEUManager.java | 33 +- .../moulberry/notenoughupdates/NEUOverlay.java | 3 + .../notenoughupdates/NotEnoughUpdates.java | 216 ++++++--- .../notenoughupdates/auction/APIManager.java | 16 +- .../profileviewer/GuiProfileViewer.java | 315 ++++++++++++ .../profileviewer/PlayerStats.java | 537 +++++++++++++++++++++ .../profileviewer/ProfileViewer.java | 370 ++++++++++++++ .../questing/requirements/RequirementApi.java | 1 - .../notenoughupdates/util/HypixelApi.java | 6 +- .../moulberry/notenoughupdates/util/Utils.java | 48 ++ 10 files changed, 1455 insertions(+), 90 deletions(-) create mode 100644 src/main/java/io/github/moulberry/notenoughupdates/profileviewer/GuiProfileViewer.java create mode 100644 src/main/java/io/github/moulberry/notenoughupdates/profileviewer/PlayerStats.java create mode 100644 src/main/java/io/github/moulberry/notenoughupdates/profileviewer/ProfileViewer.java (limited to 'src/main/java/io') diff --git a/src/main/java/io/github/moulberry/notenoughupdates/NEUManager.java b/src/main/java/io/github/moulberry/notenoughupdates/NEUManager.java index 8d625c14..edf1d31c 100644 --- a/src/main/java/io/github/moulberry/notenoughupdates/NEUManager.java +++ b/src/main/java/io/github/moulberry/notenoughupdates/NEUManager.java @@ -112,10 +112,12 @@ public class NEUManager { public void setCurrentProfile(String currentProfile) { this.currentProfile = currentProfile; + this.auctionManager.incPlayerInfoVersion(); } public void setCurrentProfileBackup(String currentProfile) { this.currentProfileBackup = currentProfile; + this.auctionManager.incPlayerInfoVersion(); } public String getCurrentProfile() { @@ -227,7 +229,7 @@ public class NEUManager { public void updatePrices() { if(System.currentTimeMillis() - auctionLastUpdate > 1000*60*120) { //2 hours craftCost.clear(); - System.out.println("UPDATING PRICE INFORMATION"); + System.out.println("[NEU] UPDATING PRICE INFORMATION"); auctionLastUpdate = System.currentTimeMillis(); try(Reader inReader = new InputStreamReader(new GZIPInputStream(new URL(AUCTIONS_PRICE_URL).openStream()))) { auctionPricesJson = gson.fromJson(inReader, JsonObject.class); @@ -349,7 +351,7 @@ public class NEUManager { BufferedReader reader = new BufferedReader(new InputStreamReader(in, StandardCharsets.UTF_8)); JsonObject json = gson.fromJson(reader, JsonObject.class); return json; - } catch(Exception e) { return null; } + } catch(Exception e) { e.printStackTrace(); return null; } } /** @@ -389,7 +391,6 @@ public class NEUManager { if (Display.isActive()) dialog.toFront(); if (changedFiles != null && changedFiles.size() <= 20) { - String startMessage = "NotEnoughUpdates: Syncing with remote repository ("; int downloaded = 0; @@ -403,6 +404,7 @@ public class NEUManager { File item = new File(repoLocation, name); try { + item.getParentFile().mkdirs(); item.createNewFile(); } catch (IOException e) { } @@ -810,6 +812,7 @@ public class NEUManager { public JsonObject getJsonFromItemBytes(String item_bytes) { try { NBTTagCompound tag = CompressedStreamTools.readCompressed(new ByteArrayInputStream(Base64.getDecoder().decode(item_bytes))); + //System.out.println(tag.toString()); return getJsonFromNBT(tag); } catch(IOException e) { return null; @@ -873,7 +876,12 @@ public class NEUManager { } public JsonObject getJsonFromNBT(NBTTagCompound tag) { - tag = tag.getTagList("i", 10).getCompoundTagAt(0); + return getJsonFromNBTEntry(tag.getTagList("i", 10).getCompoundTagAt(0)); + } + + public JsonObject getJsonFromNBTEntry(NBTTagCompound tag) { + if(tag.getKeySet().size() == 0) return null; + int id = tag.getShort("id"); int damage = tag.getShort("Damage"); int count = tag.getShort("Count"); @@ -882,6 +890,7 @@ public class NEUManager { if(id == 141) id = 391; //for some reason hypixel thinks carrots have id 141 String internalname = getInternalnameFromNBT(tag); + if(internalname == null) return null; NBTTagCompound display = tag.getCompoundTag("display"); String[] lore = getLoreFromNBT(tag); @@ -896,15 +905,25 @@ public class NEUManager { String clickcommand = ""; - //public JsonObject createItemJson(String internalname, String itemid, String displayname, String[] lore, - // String crafttext, String infoType, String[] info, - // String clickcommand, int damage, NBTTagCompound nbttag) { JsonObject item = new JsonObject(); item.addProperty("internalname", internalname); item.addProperty("itemid", itemid); item.addProperty("displayname", displayname); + if(tag != null && tag.hasKey("ExtraAttributes", 10)) { + NBTTagCompound ea = tag.getCompoundTag("ExtraAttributes"); + + if (ea.hasKey("new_year_cake_bag_data", 7)) { + byte[] bytes = ea.getByteArray("new_year_cake_bag_data"); + JsonArray bytesArr = new JsonArray(); + for(byte b : bytes) { + bytesArr.add(new JsonPrimitive(b)); + } + item.add("item_contents", bytesArr); + } + } + if(lore != null && lore.length > 0) { JsonArray jsonLore = new JsonArray(); for (String line : lore) { diff --git a/src/main/java/io/github/moulberry/notenoughupdates/NEUOverlay.java b/src/main/java/io/github/moulberry/notenoughupdates/NEUOverlay.java index 23def271..a33c13b3 100644 --- a/src/main/java/io/github/moulberry/notenoughupdates/NEUOverlay.java +++ b/src/main/java/io/github/moulberry/notenoughupdates/NEUOverlay.java @@ -1097,6 +1097,9 @@ public class NEUOverlay extends Gui { case "ducttapedigger": searchedItems.add(CustomItems.DUCTTAPE); break; + case "thirtyvirus": + searchedItems.add(manager.getItemInformation().get("SPIKED_BAIT")); + break; } } diff --git a/src/main/java/io/github/moulberry/notenoughupdates/NotEnoughUpdates.java b/src/main/java/io/github/moulberry/notenoughupdates/NotEnoughUpdates.java index a589fe2b..a7a30233 100644 --- a/src/main/java/io/github/moulberry/notenoughupdates/NotEnoughUpdates.java +++ b/src/main/java/io/github/moulberry/notenoughupdates/NotEnoughUpdates.java @@ -11,6 +11,8 @@ import io.github.moulberry.notenoughupdates.commands.SimpleCommand; import io.github.moulberry.notenoughupdates.cosmetics.CapeManager; import io.github.moulberry.notenoughupdates.infopanes.CollectionLogInfoPane; import io.github.moulberry.notenoughupdates.infopanes.CosmeticsInfoPane; +import io.github.moulberry.notenoughupdates.profileviewer.GuiProfileViewer; +import io.github.moulberry.notenoughupdates.profileviewer.ProfileViewer; import io.github.moulberry.notenoughupdates.questing.GuiQuestLine; import io.github.moulberry.notenoughupdates.questing.NEUQuesting; import io.github.moulberry.notenoughupdates.util.Utils; @@ -29,6 +31,7 @@ import net.minecraft.inventory.ContainerChest; import net.minecraft.inventory.IInventory; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraft.nbt.CompressedStreamTools; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; import net.minecraft.scoreboard.ScoreObjective; @@ -129,6 +132,37 @@ public class NotEnoughUpdates { } }); + private static ProfileViewer profileViewer; + + SimpleCommand viewProfileCommand = new SimpleCommand("neuprofile", new SimpleCommand.ProcessCommandRunnable() { + public void processCommand(ICommandSender sender, String[] args) { + if(args.length != 1) { + Minecraft.getMinecraft().thePlayer.addChatMessage(new ChatComponentText(EnumChatFormatting.RED + + "idiot.")); + } + profileViewer.getProfileByName(args[0], profile -> { + openGui = new GuiProfileViewer(profile); + }); + } + }); + + SimpleCommand linksCommand = new SimpleCommand("neulinks", new SimpleCommand.ProcessCommandRunnable() { + public void processCommand(ICommandSender sender, String[] args) { + File repo = manager.repoLocation; + if(repo.exists()) { + File updateJson = new File(repo, "update.json"); + try { + JsonObject update = manager.getJsonFromFile(updateJson); + + Minecraft.getMinecraft().thePlayer.addChatMessage(new ChatComponentText("")); + displayLinks(update); + Minecraft.getMinecraft().thePlayer.addChatMessage(new ChatComponentText("")); + } catch (Exception ignored) { + } + } + } + }); + SimpleCommand overlayPlacementsCommand = new SimpleCommand("neuoverlay", new SimpleCommand.ProcessCommandRunnable() { public void processCommand(ICommandSender sender, String[] args) { openGui = new NEUOverlayPlacements(); @@ -175,6 +209,8 @@ public class NotEnoughUpdates { f.mkdirs(); ClientCommandHandler.instance.registerCommand(collectionLogCommand); ClientCommandHandler.instance.registerCommand(cosmeticsCommand); + ClientCommandHandler.instance.registerCommand(linksCommand); + ClientCommandHandler.instance.registerCommand(viewProfileCommand); ClientCommandHandler.instance.registerCommand(overlayPlacementsCommand); //ClientCommandHandler.instance.registerCommand(questingCommand); ClientCommandHandler.instance.registerCommand(neuAhCommand); @@ -183,6 +219,7 @@ public class NotEnoughUpdates { manager = new NEUManager(this, neuio, f); manager.loadItemInformation(); overlay = new NEUOverlay(manager); + profileViewer = new ProfileViewer(manager); for(KeyBinding kb : manager.keybinds) { ClientRegistry.registerKeyBinding(kb); @@ -203,7 +240,7 @@ public class NotEnoughUpdates { })); //TODO: login code. Ignore this, used for testing. - /*try { + try { Field field = Minecraft.class.getDeclaredField("session"); YggdrasilUserAuthentication auth = (YggdrasilUserAuthentication) new YggdrasilAuthenticationService(Proxy.NO_PROXY, UUID.randomUUID().toString()) @@ -232,7 +269,7 @@ public class NotEnoughUpdates { field.setAccessible(true); field.set(Minecraft.getMinecraft(), session); } catch (NoSuchFieldException | AuthenticationException | IllegalAccessException e) { - }*/ + } } /** @@ -250,6 +287,98 @@ public class NotEnoughUpdates { } } + private void displayLinks(JsonObject update) { + String discord_link = update.get("discord_link").getAsString(); + String youtube_link = update.get("youtube_link").getAsString(); + String update_link = update.get("update_link").getAsString(); + String github_link = update.get("github_link").getAsString(); + String other_text = update.get("other_text").getAsString(); + String other_link = update.get("other_link").getAsString(); + + ChatComponentText other = null; + if(other_text.length() > 0) { + other = new ChatComponentText(EnumChatFormatting.GRAY+"["+EnumChatFormatting.BLUE+other_text+EnumChatFormatting.GRAY+"]"); + other.setChatStyle(Utils.createClickStyle(ClickEvent.Action.OPEN_URL, other_link)); + } + ChatComponentText links = new ChatComponentText(""); + ChatComponentText separator = new ChatComponentText( + EnumChatFormatting.GRAY+EnumChatFormatting.BOLD.toString()+EnumChatFormatting.STRIKETHROUGH+(other==null?"---":"--")); + ChatComponentText discord = new ChatComponentText(EnumChatFormatting.GRAY+"["+EnumChatFormatting.BLUE+"Discord"+EnumChatFormatting.GRAY+"]"); + discord.setChatStyle(Utils.createClickStyle(ClickEvent.Action.OPEN_URL, discord_link)); + ChatComponentText youtube = new ChatComponentText(EnumChatFormatting.GRAY+"["+EnumChatFormatting.RED+"YouTube"+EnumChatFormatting.GRAY+"]"); + youtube.setChatStyle(Utils.createClickStyle(ClickEvent.Action.OPEN_URL, youtube_link)); + ChatComponentText release = new ChatComponentText(EnumChatFormatting.GRAY+"["+EnumChatFormatting.GREEN+"Release"+EnumChatFormatting.GRAY+"]"); + release.setChatStyle(Utils.createClickStyle(ClickEvent.Action.OPEN_URL, update_link)); + ChatComponentText github = new ChatComponentText(EnumChatFormatting.GRAY+"["+EnumChatFormatting.DARK_PURPLE+"GitHub"+EnumChatFormatting.GRAY+"]"); + github.setChatStyle(Utils.createClickStyle(ClickEvent.Action.OPEN_URL, github_link)); + + + links.appendSibling(separator); + links.appendSibling(discord); + links.appendSibling(separator); + links.appendSibling(youtube); + links.appendSibling(separator); + links.appendSibling(release); + links.appendSibling(separator); + links.appendSibling(github); + links.appendSibling(separator); + if(other != null) { + links.appendSibling(other); + links.appendSibling(separator); + } + + Minecraft.getMinecraft().thePlayer.addChatMessage(links); + } + + private boolean displayUpdateMessageIfOutOfDate() { + File repo = manager.repoLocation; + if(repo.exists()) { + File updateJson = new File(repo, "update.json"); + try { + JsonObject o = manager.getJsonFromFile(updateJson); + + String version = o.get("version").getAsString(); + + if(!VERSION.equalsIgnoreCase(version)) { + String update_msg = o.get("update_msg").getAsString(); + String discord_link = o.get("discord_link").getAsString(); + String youtube_link = o.get("youtube_link").getAsString(); + String update_link = o.get("update_link").getAsString(); + String github_link = o.get("github_link").getAsString(); + String other_text = o.get("other_text").getAsString(); + String other_link = o.get("other_link").getAsString(); + + int first_len = -1; + for(String line : update_msg.split("\n")) { + FontRenderer fr = Minecraft.getMinecraft().fontRendererObj; + int len = fr.getStringWidth(line); + if(first_len == -1) { + first_len = len; + } + int missing_len = first_len-len; + if(missing_len > 0) { + StringBuilder sb = new StringBuilder(line); + for(int i=0; i 0) { - StringBuilder sb = new StringBuilder(line); - for(int i=0; i 0) { - other = new ChatComponentText(EnumChatFormatting.GRAY+"["+EnumChatFormatting.BLUE+other_text+EnumChatFormatting.GRAY+"]"); - other.setChatStyle(Utils.createClickStyle(ClickEvent.Action.OPEN_URL, other_link)); - } - ChatComponentText links = new ChatComponentText(""); - ChatComponentText separator = new ChatComponentText( - EnumChatFormatting.GRAY+EnumChatFormatting.BOLD.toString()+EnumChatFormatting.STRIKETHROUGH+(other==null?"---":"--")); - ChatComponentText discord = new ChatComponentText(EnumChatFormatting.GRAY+"["+EnumChatFormatting.BLUE+"Discord"+EnumChatFormatting.GRAY+"]"); - discord.setChatStyle(Utils.createClickStyle(ClickEvent.Action.OPEN_URL, discord_link)); - ChatComponentText youtube = new ChatComponentText(EnumChatFormatting.GRAY+"["+EnumChatFormatting.RED+"YouTube"+EnumChatFormatting.GRAY+"]"); - youtube.setChatStyle(Utils.createClickStyle(ClickEvent.Action.OPEN_URL, youtube_link)); - ChatComponentText release = new ChatComponentText(EnumChatFormatting.GRAY+"["+EnumChatFormatting.GREEN+"Release"+EnumChatFormatting.GRAY+"]"); - release.setChatStyle(Utils.createClickStyle(ClickEvent.Action.OPEN_URL, update_link)); - ChatComponentText github = new ChatComponentText(EnumChatFormatting.GRAY+"["+EnumChatFormatting.DARK_PURPLE+"GitHub"+EnumChatFormatting.GRAY+"]"); - github.setChatStyle(Utils.createClickStyle(ClickEvent.Action.OPEN_URL, github_link)); - - - links.appendSibling(separator); - links.appendSibling(discord); - links.appendSibling(separator); - links.appendSibling(youtube); - links.appendSibling(separator); - links.appendSibling(release); - links.appendSibling(separator); - links.appendSibling(github); - links.appendSibling(separator); - if(other != null) { - links.appendSibling(other); - links.appendSibling(separator); - } - - Minecraft.getMinecraft().thePlayer.addChatMessage(links); - Minecraft.getMinecraft().thePlayer.addChatMessage(new ChatComponentText("")); - - } - - joinedSB = true; - } catch(Exception ignored) {} + if(displayUpdateMessageIfOutOfDate()) { + joinedSB = false; } } //NEUQuesting.getInstance().tick(); @@ -387,7 +444,6 @@ public class NotEnoughUpdates { } } } else { - for(ItemStack stack : Minecraft.getMinecraft().thePlayer.inventory.mainInventory) { processUniqueStack(stack, newItem); } @@ -407,6 +463,7 @@ public class NotEnoughUpdates { if(newItemAddMap.containsKey(internalname)) { if(System.currentTimeMillis() - newItemAddMap.get(internalname) > 1000) { log.add(internalname); + try { manager.saveConfig(); } catch(IOException ignored) {} } } else { newItemAddMap.put(internalname, System.currentTimeMillis()); @@ -732,7 +789,10 @@ public class NotEnoughUpdates { ItemStack item = lower.getStackInSlot(11+i); String internal = manager.getInternalNameForItem(item); if(internal != null) { - int worth = manager.auctionManager.getLowestBin(internal); + float worth = manager.auctionManager.getLowestBin(internal); + + if(worth == -1) worth = manager.getCraftCost(internal).craftCost; + if(worth > 0) { totalValue += worth; } else { diff --git a/src/main/java/io/github/moulberry/notenoughupdates/auction/APIManager.java b/src/main/java/io/github/moulberry/notenoughupdates/auction/APIManager.java index 20ac86ba..65f6545e 100644 --- a/src/main/java/io/github/moulberry/notenoughupdates/auction/APIManager.java +++ b/src/main/java/io/github/moulberry/notenoughupdates/auction/APIManager.java @@ -19,6 +19,7 @@ import net.minecraft.util.EnumChatFormatting; import java.io.ByteArrayInputStream; import java.io.IOException; import java.util.*; +import java.util.concurrent.atomic.AtomicInteger; public class APIManager { @@ -60,6 +61,8 @@ public class APIManager { customAH = new CustomAH(manager); } + private AtomicInteger playerInfoVersion = new AtomicInteger(0); + public JsonObject getPlayerInformation() { if(playerInformation == null) return null; for(int i=0; i getAuctionItems() { return auctionMap; } @@ -158,6 +169,7 @@ public class APIManager { manager.hypixelApi.getHypixelApiAsync(manager.config.apiKey.value, "skyblock/profiles", args, jsonObject -> { if(jsonObject.has("success") && jsonObject.get("success").getAsBoolean()) { + incPlayerInfoVersion(); playerInformation = jsonObject.get("profiles").getAsJsonArray(); if(playerInformation == null) return; String backup = null; @@ -332,6 +344,8 @@ public class APIManager { if(contains) { if(line.trim().contains(rarity + " " + typeMatches[j])) { return j; + } else if(line.trim().contains(rarity + " DUNGEON " + typeMatches[j])) { + return j; } } else { if(line.trim().endsWith(rarity + " " + typeMatches[j])) { @@ -464,7 +478,7 @@ public class APIManager { //Categories String category = sbCategory; - int itemType = checkItemType(item_lore, false,"SWORD", "FISHING ROD", "PICKAXE", + int itemType = checkItemType(item_lore, true,"SWORD", "FISHING ROD", "PICKAXE", "AXE", "SHOVEL", "PET ITEM", "TRAVEL SCROLL", "REFORGE STONE", "BOW"); if(itemType >= 0 && itemType < categoryItemType.length) { category = categoryItemType[itemType]; diff --git a/src/main/java/io/github/moulberry/notenoughupdates/profileviewer/GuiProfileViewer.java b/src/main/java/io/github/moulberry/notenoughupdates/profileviewer/GuiProfileViewer.java new file mode 100644 index 00000000..81ecc9b4 --- /dev/null +++ b/src/main/java/io/github/moulberry/notenoughupdates/profileviewer/GuiProfileViewer.java @@ -0,0 +1,315 @@ +package io.github.moulberry.notenoughupdates.profileviewer; + +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.mojang.authlib.GameProfile; +import com.mojang.authlib.minecraft.MinecraftProfileTexture; +import com.mojang.authlib.properties.Property; +import io.github.moulberry.notenoughupdates.NotEnoughUpdates; +import io.github.moulberry.notenoughupdates.util.TexLoc; +import io.github.moulberry.notenoughupdates.util.Utils; +import net.minecraft.client.Minecraft; +import net.minecraft.client.entity.EntityOtherPlayerMP; +import net.minecraft.client.gui.Gui; +import net.minecraft.client.gui.GuiScreen; +import net.minecraft.client.gui.ScaledResolution; +import net.minecraft.client.network.NetworkPlayerInfo; +import net.minecraft.client.renderer.GlStateManager; +import net.minecraft.client.renderer.OpenGlHelper; +import net.minecraft.client.renderer.RenderHelper; +import net.minecraft.client.renderer.entity.RenderManager; +import net.minecraft.client.resources.DefaultPlayerSkin; +import net.minecraft.client.resources.SkinManager; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.ResourceLocation; +import org.apache.commons.codec.binary.Base64; +import org.apache.commons.io.Charsets; +import org.lwjgl.input.Keyboard; +import org.lwjgl.opengl.GL11; + +import java.awt.*; +import java.nio.charset.Charset; +import java.util.HashMap; +import java.util.LinkedHashMap; +import java.util.Map; +import java.util.UUID; + +public class GuiProfileViewer extends GuiScreen { + + public static final ResourceLocation pv_basic = new ResourceLocation("notenoughupdates:pv_basic.png"); + + private final ProfileViewer.Profile profile; + private ProfileViewerPage currentPage = ProfileViewerPage.BASIC; + private int sizeX; + private int sizeY; + private int guiLeft; + private int guiTop; + + public enum ProfileViewerPage { + BASIC + } + + public GuiProfileViewer(ProfileViewer.Profile profile) { + this.profile = profile; + } + + @Override + public void drawScreen(int mouseX, int mouseY, float partialTicks) { + super.drawScreen(mouseX, mouseY, partialTicks); + drawDefaultBackground(); + + switch (currentPage) { + case BASIC: + drawBasicPage(mouseX, mouseY, partialTicks); + break; + } + + } + + private String niceUuid(String uuidStr) { + if(uuidStr.length()!=32) return uuidStr; + + StringBuilder niceAucId = new StringBuilder(); + niceAucId.append(uuidStr, 0, 8); + niceAucId.append("-"); + niceAucId.append(uuidStr, 8, 12); + niceAucId.append("-"); + niceAucId.append(uuidStr, 12, 16); + niceAucId.append("-"); + niceAucId.append(uuidStr, 16, 20); + niceAucId.append("-"); + niceAucId.append(uuidStr, 20, 32); + return niceAucId.toString(); + } + + private EntityOtherPlayerMP entityPlayer = null; + private ResourceLocation playerLocationSkin = null; + private ResourceLocation playerLocationCape = null; + private String skinType = null; + + TexLoc tl = new TexLoc(0, 0, Keyboard.KEY_M); + TexLoc tl2 = new TexLoc(0, 0, Keyboard.KEY_B); + TexLoc tl3 = new TexLoc(0, 0, Keyboard.KEY_J); + private void drawBasicPage(int mouseX, int mouseY, float partialTicks) { + this.sizeX = 431; + this.sizeY = 202; + this.guiLeft = (this.width-this.sizeX)/2; + this.guiTop = (this.height-this.sizeY)/2; + + Minecraft.getMinecraft().getTextureManager().bindTexture(pv_basic); + Utils.drawTexturedRect(guiLeft, guiTop, sizeX, sizeY, GL11.GL_NEAREST); + + tl.handleKeyboardInput(); + tl2.handleKeyboardInput(); + tl3.handleKeyboardInput(); + + if(entityPlayer == null) { + UUID playerUUID = UUID.fromString(niceUuid(profile.getUuid())); + GameProfile fakeProfile = Minecraft.getMinecraft().getSessionService().fillProfileProperties(new GameProfile(playerUUID, "CoolGuy123"), false); + for(Property prop : fakeProfile.getProperties().get("textures")) { + System.out.println(new String(Base64.decodeBase64(prop.getValue()), Charsets.UTF_8)); + } + entityPlayer = new EntityOtherPlayerMP(Minecraft.getMinecraft().theWorld, fakeProfile) { + public ResourceLocation getLocationSkin() { + return playerLocationSkin == null ? DefaultPlayerSkin.getDefaultSkin(this.getUniqueID()) : playerLocationSkin; + } + + public ResourceLocation getLocationCape() { + return playerLocationCape; + } + + public String getSkinType() { + return skinType == null ? DefaultPlayerSkin.getSkinType(this.getUniqueID()) : skinType; + } + }; + } + + JsonObject profileInfo = profile.getProfileInformation(null); + if(profileInfo == null) return; + + JsonObject skillInfo = profile.getSkillInfo(null); + JsonObject inventoryInfo = profile.getInventoryInfo(null); + JsonObject collectionInfo =profile. getCollectionInfo(null); + + if(inventoryInfo != null && inventoryInfo.has("inv_armor")) { + JsonArray items = inventoryInfo.get("inv_armor").getAsJsonArray(); + for(int i=0; i entry : skillToSkillNameMap.entrySet()) { + int yPosition = position % 7; + int xPosition = position / 7; + + String skillName = entry.getValue(); + + float level = (int)skillInfo.get(entry.getKey()).getAsFloat(); + + for(int xOff=-1; xOff<=1; xOff++) { + for(int yOff=-1; yOff<=1; yOff++) { + if(Math.abs(xOff) != Math.abs(yOff)) { + //Utils.drawStringCenteredScaledMaxWidth(Utils.cleanColourNotModifiers(skillName) + " " + level, Minecraft.getMinecraft().fontRendererObj, + // guiLeft+tl.x+tl2.x*xPosition+xOff, guiTop+tl.y+tl2.y*yPosition+yOff, false, 85, new Color(100, 100, 100, 100).getRGB()); + } + } + } + + GlStateManager.color(1, 1, 1, 1); + Utils.drawStringCenteredScaledMaxWidth(skillName + " " + EnumChatFormatting.WHITE + level, Minecraft.getMinecraft().fontRendererObj, + guiLeft+277+86*xPosition, guiTop+36+21*yPosition, true, 85, Color.BLACK.getRGB()); + + position++; + } + } + + private static final LinkedHashMap skillToSkillNameMap = new LinkedHashMap<>(); + static { + skillToSkillNameMap.put("level_skill_taming", "Taming"); + skillToSkillNameMap.put("level_skill_mining", "Mining"); + skillToSkillNameMap.put("level_skill_foraging", "Foraging"); + skillToSkillNameMap.put("level_skill_enchanting", "Enchanting"); + skillToSkillNameMap.put("level_skill_carpentry", "Carpentry"); + skillToSkillNameMap.put("level_skill_farming", "Farming"); + skillToSkillNameMap.put("level_skill_combat", "Combat"); + skillToSkillNameMap.put("level_skill_fishing", "Fishing"); + skillToSkillNameMap.put("level_skill_alchemy", "Alchemy"); + skillToSkillNameMap.put("level_skill_runecrafting", "Runecrafting"); + skillToSkillNameMap.put("level_slayer_zombie", "Revenant Slayer"); + skillToSkillNameMap.put("level_slayer_spider", "Tarantula Slayer"); + skillToSkillNameMap.put("level_slayer_wolf", "Sven Slayer"); + } + + /*private void renderBar(float x, float y, float xSize, float ySize, float completed) { + this.mc.getTextureManager().bindTexture(Gui.icons); + + float yScale = ySize/5; + + + if (i > 0) + { + int j = 182; + int k = (int)(this.mc.thePlayer.experience * (float)(j + 1)); + int l = p_175176_1_.getScaledHeight() - 32 + 3; + + Utils.drawTexturedRect(x, y, xSize, ); + + this.drawTexturedModalRect(p_175176_2_, l, 0, 64, j, 5); + + if (k > 0) + { + this.drawTexturedModalRect(p_175176_2_, l, 0, 69, k, 5); + } + } + + if (this.mc.thePlayer.experienceLevel > 0) + { + this.mc.mcProfiler.startSection("expLevel"); + int k1 = 8453920; + String s = "" + this.mc.thePlayer.experienceLevel; + int l1 = (p_175176_1_.getScaledWidth() - this.getFontRenderer().getStringWidth(s)) / 2; + int i1 = p_175176_1_.getScaledHeight() - 31 - 4; + int j1 = 0; + this.getFontRenderer().drawString(s, l1 + 1, i1, 0); + this.getFontRenderer().drawString(s, l1 - 1, i1, 0); + this.getFontRenderer().drawString(s, l1, i1 + 1, 0); + this.getFontRenderer().drawString(s, l1, i1 - 1, 0); + this.getFontRenderer().drawString(s, l1, i1, k1); + this.mc.mcProfiler.endSection(); + } + }*/ + + public static void drawEntityOnScreen(int posX, int posY, int scale, float mouseX, float mouseY, EntityLivingBase ent) { + GlStateManager.enableColorMaterial(); + GlStateManager.pushMatrix(); + GlStateManager.translate((float)posX, (float)posY, 50.0F); + GlStateManager.scale((float)(-scale), (float)scale, (float)scale); + GlStateManager.rotate(180.0F, 0.0F, 0.0F, 1.0F); + float f = ent.renderYawOffset; + float f1 = ent.rotationYaw; + float f2 = ent.rotationPitch; + float f3 = ent.prevRotationYawHead; + float f4 = ent.rotationYawHead; + GlStateManager.rotate(135.0F, 0.0F, 1.0F, 0.0F); + RenderHelper.enableStandardItemLighting(); + GlStateManager.rotate(-135.0F, 0.0F, 1.0F, 0.0F); + GlStateManager.rotate(-((float)Math.atan((double)(mouseY / 40.0F))) * 20.0F, 1.0F, 0.0F, 0.0F); + ent.renderYawOffset = (float)Math.atan((double)(mouseX / 40.0F)) * 20.0F; + ent.rotationYaw = (float)Math.atan((double)(mouseX / 40.0F)) * 40.0F; + ent.rotationPitch = -((float)Math.atan((double)(mouseY / 40.0F))) * 20.0F; + ent.rotationYawHead = ent.rotationYaw; + ent.prevRotationYawHead = ent.rotationYaw; + GlStateManager.translate(0.0F, 0.0F, 0.0F); + RenderManager rendermanager = Minecraft.getMinecraft().getRenderManager(); + rendermanager.setPlayerViewY(180.0F); + rendermanager.setRenderShadow(false); + rendermanager.renderEntityWithPosYaw(ent, 0.0D, 0.0D, 0.0D, 0.0F, 1.0F); + rendermanager.setRenderShadow(true); + ent.renderYawOffset = f; + ent.rotationYaw = f1; + ent.rotationPitch = f2; + ent.prevRotationYawHead = f3; + ent.rotationYawHead = f4; + GlStateManager.popMatrix(); + RenderHelper.disableStandardItemLighting(); + GlStateManager.disableRescaleNormal(); + GlStateManager.setActiveTexture(OpenGlHelper.lightmapTexUnit); + GlStateManager.disableTexture2D(); + GlStateManager.setActiveTexture(OpenGlHelper.defaultTexUnit); + } +} diff --git a/src/main/java/io/github/moulberry/notenoughupdates/profileviewer/PlayerStats.java b/src/main/java/io/github/moulberry/notenoughupdates/profileviewer/PlayerStats.java new file mode 100644 index 00000000..25b7356d --- /dev/null +++ b/src/main/java/io/github/moulberry/notenoughupdates/profileviewer/PlayerStats.java @@ -0,0 +1,537 @@ +package io.github.moulberry.notenoughupdates.profileviewer; + +import com.google.gson.*; +import io.github.moulberry.notenoughupdates.util.Utils; +import net.minecraft.nbt.*; +import net.minecraft.util.EnumChatFormatting; +import org.apache.commons.lang3.StringUtils; + +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.util.Base64; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Map; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +public class PlayerStats { + public static final String HEALTH = "health"; + public static final String DEFENCE = "defence"; + public static final String STRENGTH = "strength"; + public static final String SPEED = "speed"; + public static final String CRIT_CHANCE = "crit_chance"; + public static final String CRIT_DAMAGE = "crit_damage"; + public static final String BONUS_ATTACK_SPEED = "bonus_attack_speed"; + public static final String INTELLIGENCE = "intelligence"; + public static final String SEA_CREATURE_CHANCE = "sea_creature_chance"; + public static final String MAGIC_FIND = "magic_find"; + public static final String PET_LUCK = "pet_luck"; + + public static final String[] defaultStatNames = new String[]{"health","defence","strength","speed","crit_chance", + "crit_damage","bonus_attack_speed","intelligence","sea_creature_chance","magic_find","pet_luck"}; + public static final String[] defaultStatNamesPretty = new String[]{EnumChatFormatting.RED+"\u2764 Health",EnumChatFormatting.GREEN+"\u2748 Defence", + EnumChatFormatting.RED+"\u2741 Strength",EnumChatFormatting.WHITE+"\u2726 Speed",EnumChatFormatting.BLUE+"\u2623 Crit Chance", + EnumChatFormatting.BLUE+"\u2620 Crit Damage",EnumChatFormatting.YELLOW+"\u2694 Attack Speed",EnumChatFormatting.AQUA+"\u270e Intelligence", + EnumChatFormatting.DARK_AQUA+"\u03b1 SC Chance",EnumChatFormatting.AQUA+"\u272f Magic Find",EnumChatFormatting.LIGHT_PURPLE+"\u2663 Pet Luck"}; + + public static class Stats { + JsonObject statsJson = new JsonObject(); + + /*public float health; + public float defence; + public float strength; + public float speed; + public float crit_chance; + public float crit_damage; + public float bonus_attack_speed; + public float intelligence; + public float sea_creature_chance; + public float magic_find; + public float pet_luck;*/ + + public Stats(Stats... statses) { + for(Stats stats : statses) { + add(stats); + } + } + + /*@Override + public String toString() { + return String.format("{health=%s,defence=%s,strength=%s,speed=%s,crit_chance=%s,crit_damage=%s," + + "bonus_attack_speed=%s,intelligence=%s,sea_creature_chance=%s,magic_find=%s,pet_luck=%s}", + stats.get("health"), defence, strength, speed, crit_chance, crit_damage, bonus_attack_speed, intelligence, + sea_creature_chance, magic_find, pet_luck); + }*/ + + public float get(String statName) { + if(statsJson.has(statName)) { + return statsJson.get(statName).getAsFloat(); + } else { + return 0; + } + } + + public Stats add(Stats stats) { + for(Map.Entry statEntry : stats.statsJson.entrySet()) { + if(statEntry.getValue().isJsonPrimitive() && ((JsonPrimitive)statEntry.getValue()).isNumber()) { + if(!statsJson.has(statEntry.getKey())) { + statsJson.add(statEntry.getKey(), statEntry.getValue()); + } else { + JsonPrimitive e = statsJson.get(statEntry.getKey()).getAsJsonPrimitive(); + float statNum = e.getAsFloat() + statEntry.getValue().getAsFloat(); + statsJson.add(statEntry.getKey(), new JsonPrimitive(statNum)); + } + } + } + return this; + } + + public void scaleAll(float scale) { + for(Map.Entry statEntry : statsJson.entrySet()) { + statsJson.add(statEntry.getKey(), new JsonPrimitive(statEntry.getValue().getAsFloat()*scale)); + } + } + + public void addStat(String statName, float amount) { + if(!statsJson.has(statName)) { + statsJson.add(statName, new JsonPrimitive(amount)); + } else { + JsonPrimitive e = statsJson.get(statName).getAsJsonPrimitive(); + statsJson.add(statName, new JsonPrimitive(e.getAsFloat() + amount)); + } + } + } + + public static Stats getBaseStats() { + JsonObject misc = Utils.getConstant("misc"); + if(misc == null) return null; + + Stats stats = new Stats(); + for(String statName : defaultStatNames) { + stats.addStat(statName, Utils.getElementAsFloat(Utils.getElement(misc, "base_stats."+statName), 0)); + } + return stats; + } + + public static Stats getFairyBonus(int fairyExchanges) { + Stats bonus = new Stats(); + + bonus.addStat(SPEED, fairyExchanges/10); + + for(int i=0; i entry : skillInfo.entrySet()) { + if(entry.getKey().startsWith("level_")) { + String skill = entry.getKey().substring("level_".length()); + JsonObject skillStatMap = Utils.getElement(bonuses, "bonus_stats."+skill).getAsJsonObject(); + + Stats currentBonus = new Stats(); + for(int i=1; i<=entry.getValue().getAsFloat(); i++) { + if(skillStatMap.has(""+i)) { + currentBonus = new Stats(); + for(Map.Entry entry2 : skillStatMap.get(""+i).getAsJsonObject().entrySet()) { + currentBonus.addStat(entry2.getKey(), entry2.getValue().getAsFloat()); + } + } + skillBonus.add(currentBonus); + } + } + } + + return skillBonus; + } + + public static Stats getPetBonus(JsonObject profile) { + JsonObject bonuses = Utils.getConstant("bonuses"); + if(bonuses == null) return null; + + JsonElement petsElement = Utils.getElement(profile, "pets"); + if(petsElement == null) return new Stats(); + + JsonArray pets = petsElement.getAsJsonArray(); + + HashMap highestRarityMap = new HashMap<>(); + + for(int i=0; i entry : petRewards.get(""+i).getAsJsonObject().entrySet()) { + petBonus.addStat(entry.getKey(), entry.getValue().getAsFloat()); + } + } + } + return petBonus; + } + + public static float harpBonus(JsonObject profile) { + String talk_to_melody = Utils.getElementAsString(Utils.getElement(profile, "objectives.talk_to_melody.status"), "INCOMPLETE"); + if(talk_to_melody.equalsIgnoreCase("COMPLETE")) { + return 26; + } else { + return 0; + } + } + + + public static Stats getPassiveBonuses(JsonObject skillInfo, JsonObject profile) { + Stats passiveBonuses = new Stats(); + + //TODO: null checking + Stats fairyBonus = getFairyBonus((int)Utils.getElementAsFloat(Utils.getElement(profile, "fairy_exchanges"), 0)); + Stats skillBonus = getSkillBonus(skillInfo); + Stats petBonus = getPetBonus(profile); + + if(fairyBonus == null || skillBonus == null || petBonus == null) return null; + + passiveBonuses.add(fairyBonus); + passiveBonuses.add(skillBonus); + passiveBonuses.addStat(INTELLIGENCE, harpBonus(profile)); + passiveBonuses.add(petBonus); + + return passiveBonuses; + } + + public static String getFullset(JsonArray armor, int ignore) { + String fullset = null; + for(int i=0; i=0; i--) { + String line = lore.get(i).getAsString(); + for(String rarity : rarityArr) { + for(int j=0; j STAT_PATTERN_MAP = new HashMap<>(); + static { + STAT_PATTERN_MAP.put("health", HEALTH_PATTERN); + STAT_PATTERN_MAP.put("defence", DEFENCE_PATTERN); + STAT_PATTERN_MAP.put("strength", STRENGTH_PATTERN); + STAT_PATTERN_MAP.put("speed", SPEED_PATTERN); + STAT_PATTERN_MAP.put("crit_chance", CC_PATTERN); + STAT_PATTERN_MAP.put("crit_damage", CD_PATTERN); + STAT_PATTERN_MAP.put("bonus_attack_speed", ATKSPEED_PATTERN); + STAT_PATTERN_MAP.put("intelligence", INTELLIGENCE_PATTERN); + STAT_PATTERN_MAP.put("sea_creature_chance", SCC_PATTERN); + } + public static Stats getStatForItem(String internalname, JsonObject item, JsonArray lore) { + Stats stats = new Stats(); + for(int i=0; i entry : STAT_PATTERN_MAP.entrySet()) { + Matcher matcher = entry.getValue().matcher(Utils.cleanColour(line)); + if(matcher.find()) { + int bonus = Integer.parseInt(matcher.group(1)); + //System.out.println(entry.getKey() + ":" + bonus); + stats.addStat(entry.getKey(), bonus); + } + } + } + if(internalname.equals("DAY_CRYSTAL") || internalname.equals("NIGHT_CRYSTAL")) { + stats.addStat(STRENGTH, 2.5f); + stats.addStat(DEFENCE, 2.5f); + System.out.println("added day"); + } + if(internalname.equals("NEW_YEAR_CAKE_BAG") && item.has("item_contents")) { + + JsonArray bytesArr = item.get("item_contents").getAsJsonArray(); + byte[] bytes = new byte[bytesArr.size()]; + for(int i=0; i cakes = new HashSet<>(); + for(int j=0; j 0) { + NBTTagCompound nbt = items.getCompoundTagAt(j).getCompoundTag("tag"); + if(nbt != null && nbt.hasKey("ExtraAttributes", 10)) { + NBTTagCompound ea = nbt.getCompoundTag("ExtraAttributes"); + if (ea.hasKey("new_years_cake")) { + cakes.add(ea.getInteger("new_years_cake")); + } + } + } + } + stats.addStat(HEALTH, cakes.size()); + } catch(IOException e) { + e.printStackTrace(); + return stats; + } + } + return stats; + } + public static Stats getItemBonuses(boolean talismanOnly, JsonArray... inventories) { + JsonObject misc = Utils.getConstant("misc"); + if(misc == null) return null; + JsonElement talisman_upgrades_element = misc.get("talisman_upgrades"); + if(talisman_upgrades_element == null) return null; + JsonObject talisman_upgrades = talisman_upgrades_element.getAsJsonObject(); + + HashMap itemBonuses = new HashMap<>(); + for(JsonArray inventory : inventories) { + for(int i=0; i= 0) { + Stats itemBonus = getStatForItem(internalname, item, item.get("lore").getAsJsonArray()); + + itemBonuses.put(internalname, itemBonus); + + for(Map.Entry talisman_upgrades_item : talisman_upgrades.entrySet()) { + JsonArray upgrades = talisman_upgrades_item.getValue().getAsJsonArray(); + for(int j=0; j0 + JsonArray armor = Utils.getElement(inventoryInfo, "inv_armor").getAsJsonArray(); + + String fullset = getFullset(armor, 3); + + if(fullset != null) { + switch(fullset) { + case "CHEAP_TUXEDO_": + stats.statsJson.add(HEALTH, new JsonPrimitive(Math.min(75, stats.get(HEALTH)))); + case "FANCY_TUXEDO_": + stats.statsJson.add(HEALTH, new JsonPrimitive(Math.min(150, stats.get(HEALTH)))); + case "ELEGANT_TUXEDO_": + stats.statsJson.add(HEALTH, new JsonPrimitive(Math.min(250, stats.get(HEALTH)))); + } + } + + for(Map.Entry statEntry : stats.statsJson.entrySet()) { + stats.statsJson.add(statEntry.getKey(), new JsonPrimitive(Math.max(0, statEntry.getValue().getAsFloat()))); + } + } + + public static Stats getStats(JsonObject skillInfo, JsonObject inventoryInfo, JsonObject collectionInfo, JsonObject profile) { + JsonArray armor = Utils.getElement(inventoryInfo, "inv_armor").getAsJsonArray(); + JsonArray inventory = Utils.getElement(inventoryInfo, "inv_contents").getAsJsonArray(); + JsonArray talisman_bag = Utils.getElement(inventoryInfo, "talisman_bag").getAsJsonArray(); + + Stats passiveBonuses = getPassiveBonuses(skillInfo, profile); + System.out.println("passive:"+new Stats(passiveBonuses, getBaseStats())); + Stats armorBonuses = getItemBonuses(false, armor); + Stats talismanBonuses = getItemBonuses(true, inventory, talisman_bag); + + if(passiveBonuses == null) System.out.println("passive null"); + if(armorBonuses == null) System.out.println("armorBonuses null"); + if(talismanBonuses == null) System.out.println("talismanBonuses null"); + + if(passiveBonuses == null || armorBonuses == null || talismanBonuses == null) return null; + + Stats stats = getBaseStats().add(passiveBonuses).add(armorBonuses).add(talismanBonuses); + + stats.add(getSetBonuses(stats, inventoryInfo, collectionInfo, skillInfo, profile)); + + stats.scaleAll(getStatMult(inventoryInfo)); + + applyLimits(stats, inventoryInfo); + + return stats; + } + +} diff --git a/src/main/java/io/github/moulberry/notenoughupdates/profileviewer/ProfileViewer.java b/src/main/java/io/github/moulberry/notenoughupdates/profileviewer/ProfileViewer.java new file mode 100644 index 00000000..db90cca8 --- /dev/null +++ b/src/main/java/io/github/moulberry/notenoughupdates/profileviewer/ProfileViewer.java @@ -0,0 +1,370 @@ +package io.github.moulberry.notenoughupdates.profileviewer; + +import com.google.common.base.Splitter; +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonPrimitive; +import io.github.moulberry.notenoughupdates.NEUManager; +import io.github.moulberry.notenoughupdates.NotEnoughUpdates; +import io.github.moulberry.notenoughupdates.util.Utils; +import net.minecraft.client.Minecraft; +import net.minecraft.nbt.CompressedStreamTools; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.nbt.NBTTagList; +import net.minecraft.util.ChatComponentText; + +import java.io.ByteArrayInputStream; +import java.io.File; +import java.io.IOException; +import java.util.Base64; +import java.util.HashMap; +import java.util.List; +import java.util.concurrent.atomic.AtomicBoolean; +import java.util.function.Consumer; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +public class ProfileViewer { + + private final NEUManager manager; + + public ProfileViewer(NEUManager manager) { + this.manager = manager; + } + + public class Profile { + private final String uuid; + private String latestProfile = null; + + private JsonArray playerInformation = null; + private JsonObject basicInfo = null; + + private final HashMap profileMap = new HashMap<>(); + private final HashMap skillInfoMap = new HashMap<>(); + private final HashMap inventoryInfoMap = new HashMap<>(); + private final HashMap collectionInfoMap = new HashMap<>(); + private PlayerStats.Stats stats = null; + + public Profile(String uuid) { + this.uuid = uuid; + } + + private AtomicBoolean updatingPlayerInfoState = new AtomicBoolean(false); + + public JsonArray getPlayerInformation(Runnable runnable) { + if(playerInformation != null) return playerInformation; + if(updatingPlayerInfoState.get()) return null; + + updatingPlayerInfoState.set(true); + + HashMap args = new HashMap<>(); + args.put("uuid", ""+uuid); + manager.hypixelApi.getHypixelApiAsync(manager.config.apiKey.value, "skyblock/profiles", + args, jsonObject -> { + updatingPlayerInfoState.set(false); + if(jsonObject.has("success") && jsonObject.get("success").getAsBoolean()) { + playerInformation = jsonObject.get("profiles").getAsJsonArray(); + if(playerInformation == null) return; + String backup = null; + long backupLastSave = 0; + for(int i=0; i backupLastSave) { + backupLastSave = last_save; + backup = cute_name; + } + } + } + System.out.println("accepting runnable"); + runnable.run(); + latestProfile = backup; + } + } + ); + + return null; + } + + public JsonObject getProfileInformation(String profileId) { + JsonArray playerInfo = getPlayerInformation(() -> {}); + if(playerInfo == null) return null; + if(profileId == null) profileId = latestProfile; + if(profileMap.containsKey(profileId)) return profileMap.get(profileId); + + for(int i=0; i xp) { + return level + xp/levelXp; + } else { + xp -= levelXp; + } + } + return levelingArray.size(); + } + + public JsonObject getSkillInfo(String profileId) { + JsonObject profileInfo = getProfileInformation(profileId); + if(profileInfo == null) return null; + if(profileId == null) profileId = latestProfile; + if(skillInfoMap.containsKey(profileId)) return skillInfoMap.get(profileId); + JsonObject leveling = Utils.getConstant("leveling"); + if(leveling == null) return null; + + float experience_skill_taming = Utils.getElementAsFloat(Utils.getElement(profileInfo, "experience_skill_taming"), 0); + float experience_skill_mining = Utils.getElementAsFloat(Utils.getElement(profileInfo, "experience_skill_mining"), 0); + float experience_skill_foraging = Utils.getElementAsFloat(Utils.getElement(profileInfo, "experience_skill_foraging"), 0); + float experience_skill_enchanting = Utils.getElementAsFloat(Utils.getElement(profileInfo, "experience_skill_enchanting"), 0); + float experience_skill_carpentry = Utils.getElementAsFloat(Utils.getElement(profileInfo, "experience_skill_carpentry"), 0); + float experience_skill_farming = Utils.getElementAsFloat(Utils.getElement(profileInfo, "experience_skill_farming"), 0); + float experience_skill_combat = Utils.getElementAsFloat(Utils.getElement(profileInfo, "experience_skill_combat"), 0); + float experience_skill_fishing = Utils.getElementAsFloat(Utils.getElement(profileInfo, "experience_skill_fishing"), 0); + float experience_skill_alchemy = Utils.getElementAsFloat(Utils.getElement(profileInfo, "experience_skill_alchemy"), 0); + float experience_skill_runecrafting = Utils.getElementAsFloat(Utils.getElement(profileInfo, "experience_skill_runecrafting"), 0); + + float experience_slayer_zombie = Utils.getElementAsFloat(Utils.getElement(profileInfo, "slayer_bosses.zombie.xp"), 0); + float experience_slayer_spider = Utils.getElementAsFloat(Utils.getElement(profileInfo, "slayer_bosses.spider.xp"), 0); + float experience_slayer_wolf = Utils.getElementAsFloat(Utils.getElement(profileInfo, "slayer_bosses.zombie.xp"), 0); + + float totalSkillXP = experience_skill_taming + experience_skill_mining + experience_skill_foraging + + experience_skill_enchanting + experience_skill_carpentry + experience_skill_farming + + experience_skill_combat + experience_skill_fishing + experience_skill_alchemy + + experience_skill_runecrafting; + + if(totalSkillXP <= 0) { + System.out.println("couldnt get skill xp"); + return null; + } + + JsonObject skillInfo = new JsonObject(); + + skillInfo.addProperty("experience_skill_taming", experience_skill_taming); + skillInfo.addProperty("experience_skill_mining", experience_skill_mining); + skillInfo.addProperty("experience_skill_foraging", experience_skill_foraging); + skillInfo.addProperty("experience_skill_enchanting", experience_skill_enchanting); + skillInfo.addProperty("experience_skill_carpentry", experience_skill_carpentry); + skillInfo.addProperty("experience_skill_farming", experience_skill_farming); + skillInfo.addProperty("experience_skill_combat", experience_skill_combat); + skillInfo.addProperty("experience_skill_fishing", experience_skill_fishing); + skillInfo.addProperty("experience_skill_alchemy", experience_skill_alchemy); + skillInfo.addProperty("experience_skill_runecrafting", experience_skill_runecrafting); + + skillInfo.addProperty("experience_slayer_zombie", experience_slayer_zombie); + skillInfo.addProperty("experience_slayer_spider", experience_slayer_spider); + skillInfo.addProperty("experience_slayer_wolf", experience_slayer_wolf); + + skillInfo.addProperty("level_skill_taming", getLevel(Utils.getElement(leveling, "leveling_xp").getAsJsonArray(), experience_skill_taming)); + skillInfo.addProperty("level_skill_mining", getLevel(Utils.getElement(leveling, "leveling_xp").getAsJsonArray(), experience_skill_mining)); + skillInfo.addProperty("level_skill_foraging", getLevel(Utils.getElement(leveling, "leveling_xp").getAsJsonArray(), experience_skill_foraging)); + skillInfo.addProperty("level_skill_enchanting", getLevel(Utils.getElement(leveling, "leveling_xp").getAsJsonArray(), experience_skill_enchanting)); + skillInfo.addProperty("level_skill_carpentry", getLevel(Utils.getElement(leveling, "leveling_xp").getAsJsonArray(), experience_skill_carpentry)); + skillInfo.addProperty("level_skill_farming", getLevel(Utils.getElement(leveling, "leveling_xp").getAsJsonArray(), experience_skill_farming)); + skillInfo.addProperty("level_skill_combat", getLevel(Utils.getElement(leveling, "leveling_xp").getAsJsonArray(), experience_skill_combat)); + skillInfo.addProperty("level_skill_fishing", getLevel(Utils.getElement(leveling, "leveling_xp").getAsJsonArray(), experience_skill_fishing)); + skillInfo.addProperty("level_skill_alchemy", getLevel(Utils.getElement(leveling, "leveling_xp").getAsJsonArray(), experience_skill_alchemy)); + skillInfo.addProperty("level_skill_runecrafting", getLevel(Utils.getElement(leveling, "leveling_xp").getAsJsonArray(), experience_skill_runecrafting)); + + skillInfo.addProperty("level_slayer_zombie", getLevel(Utils.getElement(leveling, "slayer_xp.zombie").getAsJsonArray(), experience_slayer_zombie)); + skillInfo.addProperty("level_slayer_spider", getLevel(Utils.getElement(leveling, "slayer_xp.spider").getAsJsonArray(), experience_slayer_spider)); + skillInfo.addProperty("level_slayer_wolf", getLevel(Utils.getElement(leveling, "slayer_xp.wolf").getAsJsonArray(), experience_slayer_wolf)); + + return skillInfo; + } + + public JsonObject getInventoryInfo(String profileId) { + JsonObject profileInfo = getProfileInformation(profileId); + if(profileInfo == null) return null; + if(profileId == null) profileId = latestProfile; + if(inventoryInfoMap.containsKey(profileId)) return inventoryInfoMap.get(profileId); + + //inv_armor, fishing_bag, quiver, ender_chest_contents, wardrobe_contents, potion_bag, inv_contents, talisman_bag, candy_inventory_contents + + String inv_armor_bytes = Utils.getElementAsString(Utils.getElement(profileInfo, "inv_armor.data"), "Hz8IAAAAAAAAAD9iYD9kYD9kAAMAPwI/Gw0AAAA="); + String fishing_bag_bytes = Utils.getElementAsString(Utils.getElement(profileInfo, "fishing_bag.data"), "Hz8IAAAAAAAAAD9iYD9kYD9kAAMAPwI/Gw0AAAA="); + String quiver_bytes = Utils.getElementAsString(Utils.getElement(profileInfo, "quiver.data"), "Hz8IAAAAAAAAAD9iYD9kYD9kAAMAPwI/Gw0AAAA="); + String ender_chest_contents_bytes = Utils.getElementAsString(Utils.getElement(profileInfo, "ender_chest_contents.data"), "Hz8IAAAAAAAAAD9iYD9kYD9kAAMAPwI/Gw0AAAA="); + String wardrobe_contents_bytes = Utils.getElementAsString(Utils.getElement(profileInfo, "wardrobe_contents.data"), "Hz8IAAAAAAAAAD9iYD9kYD9kAAMAPwI/Gw0AAAA="); + String potion_bag_bytes = Utils.getElementAsString(Utils.getElement(profileInfo, "potion_bag.data"), "Hz8IAAAAAAAAAD9iYD9kYD9kAAMAPwI/Gw0AAAA="); + String inv_contents_bytes = Utils.getElementAsString(Utils.getElement(profileInfo, "inv_contents.data"), "Hz8IAAAAAAAAAD9iYD9kYD9kAAMAPwI/Gw0AAAA="); + String talisman_bag_bytes = Utils.getElementAsString(Utils.getElement(profileInfo, "talisman_bag.data"), "Hz8IAAAAAAAAAD9iYD9kYD9kAAMAPwI/Gw0AAAA="); + String candy_inventory_contents_bytes = Utils.getElementAsString(Utils.getElement(profileInfo, "candy_inventory_contents.data"), "Hz8IAAAAAAAAAD9iYD9kYD9kAAMAPwI/Gw0AAAA="); + + JsonObject inventoryInfo = new JsonObject(); + + String[] inv_names = new String[]{"inv_armor", "fishing_bag", "quiver", "ender_chest_contents", "wardrobe_contents", + "potion_bag", "inv_contents", "talisman_bag", "candy_inventory_contents"}; + String[] inv_bytes = new String[]{inv_armor_bytes, fishing_bag_bytes, quiver_bytes, ender_chest_contents_bytes, wardrobe_contents_bytes, + potion_bag_bytes, inv_contents_bytes, talisman_bag_bytes, candy_inventory_contents_bytes}; + for(int i=0; i nameToHypixelProfile = new HashMap<>(); + private HashMap uuidToHypixelProfile = new HashMap<>(); + private HashMap uuidToProfileMap = new HashMap<>(); + + public void getHypixelProfile(String name, Consumer callback) { + HashMap args = new HashMap<>(); + args.put("name", ""+name); + manager.hypixelApi.getHypixelApiAsync(manager.config.apiKey.value, "player", + args, jsonObject -> { + if(jsonObject.has("success") && jsonObject.get("success").getAsBoolean()) { + nameToHypixelProfile.put(name, jsonObject.get("player").getAsJsonObject()); + uuidToHypixelProfile.put(jsonObject.get("player").getAsJsonObject().get("uuid").getAsString(), jsonObject.get("player").getAsJsonObject()); + if(callback != null) callback.accept(jsonObject); + } + } + ); + } + + public Profile getProfileByName(String name, Consumer callback) { + if(nameToHypixelProfile.containsKey(name)) { + return getProfileReset(nameToHypixelProfile.get(name).get("uuid").getAsString(), callback); + } else { + getHypixelProfile(name, jsonObject -> { + System.out.println("getting profile with callback"); + getProfileReset(jsonObject.get("player").getAsJsonObject().get("uuid").getAsString(), callback); + }); + return null; + } + } + + public Profile getProfile(String uuid, Consumer callback) { + Profile profile = uuidToProfileMap.computeIfAbsent(uuid, k -> new Profile(uuid)); + if(profile.playerInformation != null) { + System.out.println("getting profile with callback1"); + callback.accept(profile); + } else { + System.out.println("getting profile with callback3"); + profile.getPlayerInformation(() -> callback.accept(profile)); + } + return profile; + } + + public Profile getProfileReset(String uuid, Consumer callback) { + Profile profile = getProfile(uuid, callback); + profile.resetCache(); + return profile; + } + +} diff --git a/src/main/java/io/github/moulberry/notenoughupdates/questing/requirements/RequirementApi.java b/src/main/java/io/github/moulberry/notenoughupdates/questing/requirements/RequirementApi.java index 951cfa50..27f9f293 100644 --- a/src/main/java/io/github/moulberry/notenoughupdates/questing/requirements/RequirementApi.java +++ b/src/main/java/io/github/moulberry/notenoughupdates/questing/requirements/RequirementApi.java @@ -40,7 +40,6 @@ public class RequirementApi extends Requirement { private static JsonElement getElement(JsonElement element, String path) { List path_split = PATH_SPLITTER.splitToList(path); if(element instanceof JsonObject) { - System.out.println(path_split.get(0)); JsonElement e = element.getAsJsonObject().get(path_split.get(0)); if(path_split.size() > 1) { return getElement(e, path_split.get(1)); diff --git a/src/main/java/io/github/moulberry/notenoughupdates/util/HypixelApi.java b/src/main/java/io/github/moulberry/notenoughupdates/util/HypixelApi.java index c271d63a..133619ae 100644 --- a/src/main/java/io/github/moulberry/notenoughupdates/util/HypixelApi.java +++ b/src/main/java/io/github/moulberry/notenoughupdates/util/HypixelApi.java @@ -62,11 +62,11 @@ public class HypixelApi { } public String generateApiUrl(String apiKey, String method, HashMap args) { - String url = "https://api.hypixel.net/" + method + "?key=" + apiKey; + StringBuilder url = new StringBuilder("https://api.hypixel.net/" + method + "?key=" + apiKey); for(Map.Entry entry : args.entrySet()) { - url += "&" + entry.getKey() + "=" + entry.getValue(); + url.append("&").append(entry.getKey()).append("=").append(entry.getValue()); } - return url; + return url.toString(); } } diff --git a/src/main/java/io/github/moulberry/notenoughupdates/util/Utils.java b/src/main/java/io/github/moulberry/notenoughupdates/util/Utils.java index 57b89a0a..66400c00 100644 --- a/src/main/java/io/github/moulberry/notenoughupdates/util/Utils.java +++ b/src/main/java/io/github/moulberry/notenoughupdates/util/Utils.java @@ -1,5 +1,9 @@ package io.github.moulberry.notenoughupdates.util; +import com.google.common.base.Splitter; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonPrimitive; import com.mojang.authlib.Agent; import com.mojang.authlib.yggdrasil.YggdrasilAuthenticationService; import com.mojang.authlib.yggdrasil.YggdrasilUserAuthentication; @@ -376,6 +380,50 @@ public class Utils { drawHoveringText(textLines, mouseX, mouseY, screenWidth, screenHeight, maxTextWidth, font, true); } + public static JsonObject getConstant(String constant) { + File repo = NotEnoughUpdates.INSTANCE.manager.repoLocation; + if(repo.exists()) { + File jsonFile = new File(repo, "constants/"+constant+".json"); + try { + return NotEnoughUpdates.INSTANCE.manager.getJsonFromFile(jsonFile); + } catch (Exception ignored) { + } + } + System.out.println(constant + " = null"); + return null; + } + + public static float getElementAsFloat(JsonElement element, float def) { + if(element == null) return def; + if(!element.isJsonPrimitive()) return def; + JsonPrimitive prim = element.getAsJsonPrimitive(); + if(!prim.isNumber()) return def; + return prim.getAsFloat(); + } + + public static String getElementAsString(JsonElement element, String def) { + if(element == null) return def; + if(!element.isJsonPrimitive()) return def; + JsonPrimitive prim = element.getAsJsonPrimitive(); + if(!prim.isString()) return def; + return prim.getAsString(); + } + + public static Splitter PATH_SPLITTER = Splitter.on(".").omitEmptyStrings().limit(2); + public static JsonElement getElement(JsonElement element, String path) { + List path_split = PATH_SPLITTER.splitToList(path); + if(element instanceof JsonObject) { + JsonElement e = element.getAsJsonObject().get(path_split.get(0)); + if(path_split.size() > 1) { + return getElement(e, path_split.get(1)); + } else { + return e; + } + } else { + return element; + } + } + public static ChatStyle createClickStyle(ClickEvent.Action action, String value) { ChatStyle style = new ChatStyle(); style.setChatClickEvent(new ClickEvent(action, value)); -- cgit From d04771c7ef5cdab9554aa6aef506a39c8e2bd3d4 Mon Sep 17 00:00:00 2001 From: Moulberry Date: Wed, 22 Jul 2020 03:54:59 +1000 Subject: less scuffed profile viewer :) --- .../moulberry/notenoughupdates/GuiItemRecipe.java | 2 +- .../moulberry/notenoughupdates/NEUManager.java | 2 - .../moulberry/notenoughupdates/NEUOverlay.java | 22 +- .../notenoughupdates/NotEnoughUpdates.java | 29 +- .../notenoughupdates/auction/APIManager.java | 8 +- .../notenoughupdates/auction/CustomAH.java | 2 +- .../profileviewer/GuiProfileViewer.java | 482 ++++++++++++++++----- .../notenoughupdates/profileviewer/Panorama.java | 151 +++++++ .../profileviewer/PlayerStats.java | 27 +- .../profileviewer/ProfileViewer.java | 206 +++++++-- .../notenoughupdates/questing/NEUQuesting.java | 67 --- .../questing/SBScoreboardData.java | 76 ++++ .../questing/requirements/RequirementApi.java | 2 - .../requirements/RequirementIslandType.java | 4 +- .../notenoughupdates/util/HypixelApi.java | 30 +- .../moulberry/notenoughupdates/util/Utils.java | 89 ++++ .../panoramas/combat_1_day/panorama_0.png | Bin 0 -> 2044572 bytes .../panoramas/combat_1_day/panorama_1.png | Bin 0 -> 2118694 bytes .../panoramas/combat_1_day/panorama_2.png | Bin 0 -> 1975377 bytes .../panoramas/combat_1_day/panorama_3.png | Bin 0 -> 1909797 bytes .../panoramas/combat_1_day/panorama_4.png | Bin 0 -> 2256091 bytes .../panoramas/combat_1_day/panorama_5.png | Bin 0 -> 1456745 bytes .../panoramas/combat_1_night/panorama_0.png | Bin 0 -> 1835538 bytes .../panoramas/combat_1_night/panorama_1.png | Bin 0 -> 1892728 bytes .../panoramas/combat_1_night/panorama_2.png | Bin 0 -> 1577765 bytes .../panoramas/combat_1_night/panorama_3.png | Bin 0 -> 1635925 bytes .../panoramas/combat_1_night/panorama_4.png | Bin 0 -> 1873550 bytes .../panoramas/combat_1_night/panorama_5.png | Bin 0 -> 1471032 bytes .../panoramas/combat_2_day/panorama_0.png | Bin 0 -> 1870077 bytes .../panoramas/combat_2_day/panorama_1.png | Bin 0 -> 1827993 bytes .../panoramas/combat_2_day/panorama_2.png | Bin 0 -> 1930272 bytes .../panoramas/combat_2_day/panorama_3.png | Bin 0 -> 2036129 bytes .../panoramas/combat_2_day/panorama_4.png | Bin 0 -> 1741259 bytes .../panoramas/combat_2_day/panorama_5.png | Bin 0 -> 1450149 bytes .../panoramas/combat_2_night/panorama_0.png | Bin 0 -> 1604404 bytes .../panoramas/combat_2_night/panorama_1.png | Bin 0 -> 1506039 bytes .../panoramas/combat_2_night/panorama_2.png | Bin 0 -> 1280422 bytes .../panoramas/combat_2_night/panorama_3.png | Bin 0 -> 1683043 bytes .../panoramas/combat_2_night/panorama_4.png | Bin 0 -> 1475680 bytes .../panoramas/combat_2_night/panorama_5.png | Bin 0 -> 1317441 bytes .../panoramas/combat_3_day/panorama_0.png | Bin 0 -> 2188059 bytes .../panoramas/combat_3_day/panorama_1.png | Bin 0 -> 1858211 bytes .../panoramas/combat_3_day/panorama_2.png | Bin 0 -> 1820033 bytes .../panoramas/combat_3_day/panorama_3.png | Bin 0 -> 2320903 bytes .../panoramas/combat_3_day/panorama_4.png | Bin 0 -> 1815303 bytes .../panoramas/combat_3_day/panorama_5.png | Bin 0 -> 1584572 bytes .../panoramas/combat_3_night/panorama_0.png | Bin 0 -> 1850016 bytes .../panoramas/combat_3_night/panorama_1.png | Bin 0 -> 1491122 bytes .../panoramas/combat_3_night/panorama_2.png | Bin 0 -> 1560123 bytes .../panoramas/combat_3_night/panorama_3.png | Bin 0 -> 1905445 bytes .../panoramas/combat_3_night/panorama_4.png | Bin 0 -> 1618932 bytes .../panoramas/combat_3_night/panorama_5.png | Bin 0 -> 1402137 bytes .../panoramas/dark_auction/panorama_0.png | Bin 0 -> 1855519 bytes .../panoramas/dark_auction/panorama_1.png | Bin 0 -> 1850637 bytes .../panoramas/dark_auction/panorama_2.png | Bin 0 -> 1674606 bytes .../panoramas/dark_auction/panorama_3.png | Bin 0 -> 1922696 bytes .../panoramas/dark_auction/panorama_4.png | Bin 0 -> 2052381 bytes .../panoramas/dark_auction/panorama_5.png | Bin 0 -> 1347015 bytes .../panoramas/dungeon/panorama_0.png | Bin 0 -> 1529623 bytes .../panoramas/dungeon/panorama_1.png | Bin 0 -> 1752770 bytes .../panoramas/dungeon/panorama_2.png | Bin 0 -> 1650468 bytes .../panoramas/dungeon/panorama_3.png | Bin 0 -> 1648713 bytes .../panoramas/dungeon/panorama_4.png | Bin 0 -> 1862221 bytes .../panoramas/dungeon/panorama_5.png | Bin 0 -> 1351481 bytes .../panoramas/dungeon_hub/panorama_0.png | Bin 0 -> 1529623 bytes .../panoramas/dungeon_hub/panorama_1.png | Bin 0 -> 1752770 bytes .../panoramas/dungeon_hub/panorama_2.png | Bin 0 -> 1650468 bytes .../panoramas/dungeon_hub/panorama_3.png | Bin 0 -> 1648713 bytes .../panoramas/dungeon_hub/panorama_4.png | Bin 0 -> 1862221 bytes .../panoramas/dungeon_hub/panorama_5.png | Bin 0 -> 1351481 bytes .../panoramas/dynamic_day/panorama_0.png | Bin 0 -> 2225270 bytes .../panoramas/dynamic_day/panorama_1.png | Bin 0 -> 2261346 bytes .../panoramas/dynamic_day/panorama_2.png | Bin 0 -> 2339782 bytes .../panoramas/dynamic_day/panorama_3.png | Bin 0 -> 2543434 bytes .../panoramas/dynamic_day/panorama_4.png | Bin 0 -> 2173289 bytes .../panoramas/dynamic_day/panorama_5.png | Bin 0 -> 1726308 bytes .../panoramas/dynamic_night/panorama_0.png | Bin 0 -> 2197444 bytes .../panoramas/dynamic_night/panorama_1.png | Bin 0 -> 2394932 bytes .../panoramas/dynamic_night/panorama_2.png | Bin 0 -> 2188571 bytes .../panoramas/dynamic_night/panorama_3.png | Bin 0 -> 2376290 bytes .../panoramas/dynamic_night/panorama_4.png | Bin 0 -> 2000878 bytes .../panoramas/dynamic_night/panorama_5.png | Bin 0 -> 1511540 bytes .../panoramas/farming_1_day/panorama_0.png | Bin 0 -> 2187588 bytes .../panoramas/farming_1_day/panorama_1.png | Bin 0 -> 2459529 bytes .../panoramas/farming_1_day/panorama_2.png | Bin 0 -> 2459437 bytes .../panoramas/farming_1_day/panorama_3.png | Bin 0 -> 2435508 bytes .../panoramas/farming_1_day/panorama_4.png | Bin 0 -> 1669131 bytes .../panoramas/farming_1_day/panorama_5.png | Bin 0 -> 2298029 bytes .../panoramas/farming_1_night/panorama_0.png | Bin 0 -> 1853632 bytes .../panoramas/farming_1_night/panorama_1.png | Bin 0 -> 2028666 bytes .../panoramas/farming_1_night/panorama_2.png | Bin 0 -> 2027933 bytes .../panoramas/farming_1_night/panorama_3.png | Bin 0 -> 1999075 bytes .../panoramas/farming_1_night/panorama_4.png | Bin 0 -> 1466349 bytes .../panoramas/farming_1_night/panorama_5.png | Bin 0 -> 1835107 bytes .../panoramas/farming_2_day/panorama_0.png | Bin 0 -> 2063170 bytes .../panoramas/farming_2_day/panorama_1.png | Bin 0 -> 2017820 bytes .../panoramas/farming_2_day/panorama_2.png | Bin 0 -> 2004712 bytes .../panoramas/farming_2_day/panorama_3.png | Bin 0 -> 2049201 bytes .../panoramas/farming_2_day/panorama_4.png | Bin 0 -> 1505669 bytes .../panoramas/farming_2_day/panorama_5.png | Bin 0 -> 1678571 bytes .../panoramas/farming_2_night/panorama_0.png | Bin 0 -> 1767456 bytes .../panoramas/farming_2_night/panorama_1.png | Bin 0 -> 1690021 bytes .../panoramas/farming_2_night/panorama_2.png | Bin 0 -> 1637647 bytes .../panoramas/farming_2_night/panorama_3.png | Bin 0 -> 1695396 bytes .../panoramas/farming_2_night/panorama_4.png | Bin 0 -> 1347288 bytes .../panoramas/farming_2_night/panorama_5.png | Bin 0 -> 1523433 bytes .../panoramas/foraging_1_day/panorama_0.png | Bin 0 -> 2411778 bytes .../panoramas/foraging_1_day/panorama_1.png | Bin 0 -> 2041133 bytes .../panoramas/foraging_1_day/panorama_2.png | Bin 0 -> 2206230 bytes .../panoramas/foraging_1_day/panorama_3.png | Bin 0 -> 2247037 bytes .../panoramas/foraging_1_day/panorama_4.png | Bin 0 -> 2095796 bytes .../panoramas/foraging_1_day/panorama_5.png | Bin 0 -> 1839740 bytes .../panoramas/foraging_1_night/panorama_0.png | Bin 0 -> 1766471 bytes .../panoramas/foraging_1_night/panorama_1.png | Bin 0 -> 1638095 bytes .../panoramas/foraging_1_night/panorama_2.png | Bin 0 -> 1776122 bytes .../panoramas/foraging_1_night/panorama_3.png | Bin 0 -> 1796200 bytes .../panoramas/foraging_1_night/panorama_4.png | Bin 0 -> 1635702 bytes .../panoramas/foraging_1_night/panorama_5.png | Bin 0 -> 1504163 bytes .../panoramas/hub_day/panorama_0.png | Bin 0 -> 1778138 bytes .../panoramas/hub_day/panorama_1.png | Bin 0 -> 1844566 bytes .../panoramas/hub_day/panorama_2.png | Bin 0 -> 1906390 bytes .../panoramas/hub_day/panorama_3.png | Bin 0 -> 1978044 bytes .../panoramas/hub_day/panorama_4.png | Bin 0 -> 1457085 bytes .../panoramas/hub_day/panorama_5.png | Bin 0 -> 1481400 bytes .../panoramas/hub_night/panorama_0.png | Bin 0 -> 1800967 bytes .../panoramas/hub_night/panorama_1.png | Bin 0 -> 1795725 bytes .../panoramas/hub_night/panorama_2.png | Bin 0 -> 1783854 bytes .../panoramas/hub_night/panorama_3.png | Bin 0 -> 1903785 bytes .../panoramas/hub_night/panorama_4.png | Bin 0 -> 1334156 bytes .../panoramas/hub_night/panorama_5.png | Bin 0 -> 1484102 bytes .../panoramas/mining_1_day/panorama_0.png | Bin 0 -> 2250360 bytes .../panoramas/mining_1_day/panorama_1.png | Bin 0 -> 1990106 bytes .../panoramas/mining_1_day/panorama_2.png | Bin 0 -> 1917797 bytes .../panoramas/mining_1_day/panorama_3.png | Bin 0 -> 2080411 bytes .../panoramas/mining_1_day/panorama_4.png | Bin 0 -> 1680133 bytes .../panoramas/mining_1_day/panorama_5.png | Bin 0 -> 1368779 bytes .../panoramas/mining_1_night/panorama_0.png | Bin 0 -> 2144730 bytes .../panoramas/mining_1_night/panorama_1.png | Bin 0 -> 1881956 bytes .../panoramas/mining_1_night/panorama_2.png | Bin 0 -> 1660032 bytes .../panoramas/mining_1_night/panorama_3.png | Bin 0 -> 1879865 bytes .../panoramas/mining_1_night/panorama_4.png | Bin 0 -> 1514854 bytes .../panoramas/mining_1_night/panorama_5.png | Bin 0 -> 1357481 bytes .../panoramas/mining_2/panorama_0.png | Bin 0 -> 1750950 bytes .../panoramas/mining_2/panorama_1.png | Bin 0 -> 1672301 bytes .../panoramas/mining_2/panorama_2.png | Bin 0 -> 1702966 bytes .../panoramas/mining_2/panorama_3.png | Bin 0 -> 1681660 bytes .../panoramas/mining_2/panorama_4.png | Bin 0 -> 1823482 bytes .../panoramas/mining_2/panorama_5.png | Bin 0 -> 1375439 bytes .../panoramas/unknown/panorama_0.png | Bin 0 -> 2095449 bytes .../panoramas/unknown/panorama_1.png | Bin 0 -> 2096492 bytes .../panoramas/unknown/panorama_2.png | Bin 0 -> 2082800 bytes .../panoramas/unknown/panorama_3.png | Bin 0 -> 2080972 bytes .../panoramas/unknown/panorama_4.png | Bin 0 -> 2095828 bytes .../panoramas/unknown/panorama_5.png | Bin 0 -> 2083932 bytes .../assets/notenoughupdates/shaders/cape.frag | 4 +- .../assets/notenoughupdates/shaders/fade_cape.frag | 8 +- .../assets/notenoughupdates/shaders/make_gold.frag | 38 ++ .../assets/notenoughupdates/shaders/make_gold.vert | 13 + 158 files changed, 997 insertions(+), 265 deletions(-) create mode 100644 src/main/java/io/github/moulberry/notenoughupdates/profileviewer/Panorama.java delete mode 100644 src/main/java/io/github/moulberry/notenoughupdates/questing/NEUQuesting.java create mode 100644 src/main/java/io/github/moulberry/notenoughupdates/questing/SBScoreboardData.java create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/combat_1_day/panorama_0.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/combat_1_day/panorama_1.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/combat_1_day/panorama_2.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/combat_1_day/panorama_3.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/combat_1_day/panorama_4.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/combat_1_day/panorama_5.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/combat_1_night/panorama_0.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/combat_1_night/panorama_1.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/combat_1_night/panorama_2.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/combat_1_night/panorama_3.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/combat_1_night/panorama_4.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/combat_1_night/panorama_5.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/combat_2_day/panorama_0.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/combat_2_day/panorama_1.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/combat_2_day/panorama_2.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/combat_2_day/panorama_3.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/combat_2_day/panorama_4.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/combat_2_day/panorama_5.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/combat_2_night/panorama_0.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/combat_2_night/panorama_1.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/combat_2_night/panorama_2.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/combat_2_night/panorama_3.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/combat_2_night/panorama_4.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/combat_2_night/panorama_5.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/combat_3_day/panorama_0.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/combat_3_day/panorama_1.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/combat_3_day/panorama_2.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/combat_3_day/panorama_3.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/combat_3_day/panorama_4.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/combat_3_day/panorama_5.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/combat_3_night/panorama_0.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/combat_3_night/panorama_1.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/combat_3_night/panorama_2.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/combat_3_night/panorama_3.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/combat_3_night/panorama_4.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/combat_3_night/panorama_5.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/dark_auction/panorama_0.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/dark_auction/panorama_1.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/dark_auction/panorama_2.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/dark_auction/panorama_3.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/dark_auction/panorama_4.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/dark_auction/panorama_5.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/dungeon/panorama_0.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/dungeon/panorama_1.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/dungeon/panorama_2.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/dungeon/panorama_3.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/dungeon/panorama_4.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/dungeon/panorama_5.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/dungeon_hub/panorama_0.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/dungeon_hub/panorama_1.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/dungeon_hub/panorama_2.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/dungeon_hub/panorama_3.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/dungeon_hub/panorama_4.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/dungeon_hub/panorama_5.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/dynamic_day/panorama_0.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/dynamic_day/panorama_1.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/dynamic_day/panorama_2.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/dynamic_day/panorama_3.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/dynamic_day/panorama_4.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/dynamic_day/panorama_5.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/dynamic_night/panorama_0.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/dynamic_night/panorama_1.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/dynamic_night/panorama_2.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/dynamic_night/panorama_3.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/dynamic_night/panorama_4.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/dynamic_night/panorama_5.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/farming_1_day/panorama_0.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/farming_1_day/panorama_1.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/farming_1_day/panorama_2.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/farming_1_day/panorama_3.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/farming_1_day/panorama_4.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/farming_1_day/panorama_5.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/farming_1_night/panorama_0.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/farming_1_night/panorama_1.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/farming_1_night/panorama_2.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/farming_1_night/panorama_3.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/farming_1_night/panorama_4.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/farming_1_night/panorama_5.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/farming_2_day/panorama_0.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/farming_2_day/panorama_1.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/farming_2_day/panorama_2.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/farming_2_day/panorama_3.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/farming_2_day/panorama_4.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/farming_2_day/panorama_5.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/farming_2_night/panorama_0.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/farming_2_night/panorama_1.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/farming_2_night/panorama_2.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/farming_2_night/panorama_3.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/farming_2_night/panorama_4.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/farming_2_night/panorama_5.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/foraging_1_day/panorama_0.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/foraging_1_day/panorama_1.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/foraging_1_day/panorama_2.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/foraging_1_day/panorama_3.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/foraging_1_day/panorama_4.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/foraging_1_day/panorama_5.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/foraging_1_night/panorama_0.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/foraging_1_night/panorama_1.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/foraging_1_night/panorama_2.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/foraging_1_night/panorama_3.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/foraging_1_night/panorama_4.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/foraging_1_night/panorama_5.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/hub_day/panorama_0.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/hub_day/panorama_1.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/hub_day/panorama_2.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/hub_day/panorama_3.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/hub_day/panorama_4.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/hub_day/panorama_5.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/hub_night/panorama_0.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/hub_night/panorama_1.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/hub_night/panorama_2.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/hub_night/panorama_3.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/hub_night/panorama_4.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/hub_night/panorama_5.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/mining_1_day/panorama_0.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/mining_1_day/panorama_1.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/mining_1_day/panorama_2.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/mining_1_day/panorama_3.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/mining_1_day/panorama_4.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/mining_1_day/panorama_5.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/mining_1_night/panorama_0.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/mining_1_night/panorama_1.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/mining_1_night/panorama_2.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/mining_1_night/panorama_3.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/mining_1_night/panorama_4.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/mining_1_night/panorama_5.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/mining_2/panorama_0.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/mining_2/panorama_1.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/mining_2/panorama_2.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/mining_2/panorama_3.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/mining_2/panorama_4.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/mining_2/panorama_5.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/unknown/panorama_0.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/unknown/panorama_1.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/unknown/panorama_2.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/unknown/panorama_3.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/unknown/panorama_4.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/unknown/panorama_5.png create mode 100644 src/main/resources/assets/notenoughupdates/shaders/make_gold.frag create mode 100644 src/main/resources/assets/notenoughupdates/shaders/make_gold.vert (limited to 'src/main/java/io') diff --git a/src/main/java/io/github/moulberry/notenoughupdates/GuiItemRecipe.java b/src/main/java/io/github/moulberry/notenoughupdates/GuiItemRecipe.java index 200569df..d0301b2c 100644 --- a/src/main/java/io/github/moulberry/notenoughupdates/GuiItemRecipe.java +++ b/src/main/java/io/github/moulberry/notenoughupdates/GuiItemRecipe.java @@ -170,7 +170,7 @@ public class GuiItemRecipe extends GuiScreen { @Override public void handleKeyboardInput() throws IOException { - super.handleKeyboardInput(); //TODO: r and u + super.handleKeyboardInput(); ScaledResolution scaledResolution = new ScaledResolution(Minecraft.getMinecraft()); int width = scaledResolution.getScaledWidth(); diff --git a/src/main/java/io/github/moulberry/notenoughupdates/NEUManager.java b/src/main/java/io/github/moulberry/notenoughupdates/NEUManager.java index edf1d31c..b879c383 100644 --- a/src/main/java/io/github/moulberry/notenoughupdates/NEUManager.java +++ b/src/main/java/io/github/moulberry/notenoughupdates/NEUManager.java @@ -1079,8 +1079,6 @@ public class NEUManager { } if(craftMatrices.size() > 0) { - Minecraft.getMinecraft().thePlayer.sendQueue.addToSendQueue(new C0DPacketCloseWindow( - Minecraft.getMinecraft().thePlayer.openContainer.windowId)); Minecraft.getMinecraft().displayGuiScreen(new GuiItemRecipe("Item Usages", craftMatrices, results, this)); return true; } diff --git a/src/main/java/io/github/moulberry/notenoughupdates/NEUOverlay.java b/src/main/java/io/github/moulberry/notenoughupdates/NEUOverlay.java index a33c13b3..25b27cc5 100644 --- a/src/main/java/io/github/moulberry/notenoughupdates/NEUOverlay.java +++ b/src/main/java/io/github/moulberry/notenoughupdates/NEUOverlay.java @@ -96,7 +96,6 @@ public class NEUOverlay extends Gui { private JsonObject[] searchedItemsArr = null; private boolean itemPaneOpen = false; - private boolean hoveringItemPaneToggle = false; private int page = 0; @@ -1636,21 +1635,16 @@ public class NEUOverlay extends Gui { int rightSide = leftSide+paneWidth-getBoxPadding()-getItemBoxXPadding(); //Tab - Minecraft.getMinecraft().getTextureManager().bindTexture(itemPaneTabArrow); - GlStateManager.color(1f, 1f, 1f, 0.3f); - Utils.drawTexturedRect(width-itemPaneTabOffset.getValue(), height/2 - 50, 20, 100); - GlStateManager.bindTexture(0); + if(!manager.config.disableItemTabOpen.value) { + Minecraft.getMinecraft().getTextureManager().bindTexture(itemPaneTabArrow); + GlStateManager.color(1f, 1f, 1f, 0.3f); + Utils.drawTexturedRect(width-itemPaneTabOffset.getValue(), height/2 - 50, 20, 100); + GlStateManager.bindTexture(0); - if(mouseX > width-itemPaneTabOffset.getValue() && mouseY > height/2 - 50 - && mouseY < height/2 + 50) { - if(!hoveringItemPaneToggle) { - if(!manager.config.disableItemTabOpen.value) { - itemPaneOpen = !itemPaneOpen; - } - hoveringItemPaneToggle = true; + if(!itemPaneOpen && mouseX > width-itemPaneTabOffset.getValue() && mouseY > height/2 - 50 + && mouseY < height/2 + 50) { + itemPaneOpen = true; } - } else { - hoveringItemPaneToggle = false; } //Atomic reference used so that below lambda doesn't complain about non-effectively-final variable diff --git a/src/main/java/io/github/moulberry/notenoughupdates/NotEnoughUpdates.java b/src/main/java/io/github/moulberry/notenoughupdates/NotEnoughUpdates.java index a7a30233..734f7ca1 100644 --- a/src/main/java/io/github/moulberry/notenoughupdates/NotEnoughUpdates.java +++ b/src/main/java/io/github/moulberry/notenoughupdates/NotEnoughUpdates.java @@ -14,7 +14,7 @@ import io.github.moulberry.notenoughupdates.infopanes.CosmeticsInfoPane; import io.github.moulberry.notenoughupdates.profileviewer.GuiProfileViewer; import io.github.moulberry.notenoughupdates.profileviewer.ProfileViewer; import io.github.moulberry.notenoughupdates.questing.GuiQuestLine; -import io.github.moulberry.notenoughupdates.questing.NEUQuesting; +import io.github.moulberry.notenoughupdates.questing.SBScoreboardData; import io.github.moulberry.notenoughupdates.util.Utils; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.FontRenderer; @@ -31,20 +31,15 @@ import net.minecraft.inventory.ContainerChest; import net.minecraft.inventory.IInventory; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; -import net.minecraft.nbt.CompressedStreamTools; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; import net.minecraft.scoreboard.ScoreObjective; import net.minecraft.scoreboard.Scoreboard; import net.minecraft.util.ChatComponentText; -import net.minecraft.util.ChatStyle; import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.Session; import net.minecraftforge.client.ClientCommandHandler; -import net.minecraftforge.client.event.ClientChatReceivedEvent; -import net.minecraftforge.client.event.GuiOpenEvent; -import net.minecraftforge.client.event.GuiScreenEvent; -import net.minecraftforge.client.event.RenderGameOverlayEvent; +import net.minecraftforge.client.event.*; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.event.entity.player.ItemTooltipEvent; import net.minecraftforge.fml.client.registry.ClientRegistry; @@ -139,10 +134,13 @@ public class NotEnoughUpdates { if(args.length != 1) { Minecraft.getMinecraft().thePlayer.addChatMessage(new ChatComponentText(EnumChatFormatting.RED + "idiot.")); + } else { + profileViewer.getProfileByName(args[0], profile -> { + profile.resetCache(); + openGui = new GuiProfileViewer(profile); + }); } - profileViewer.getProfileByName(args[0], profile -> { - openGui = new GuiProfileViewer(profile); - }); + //openGui = new GuiProfileViewer(null); } }); @@ -398,7 +396,7 @@ public class NotEnoughUpdates { joinedSB = false; } } - //NEUQuesting.getInstance().tick(); + SBScoreboardData.getInstance().tick(); //GuiQuestLine.questLine.tick(); } if(currChatMessage != null && System.currentTimeMillis() - lastChatMessage > CHAT_MSG_COOLDOWN) { @@ -473,6 +471,15 @@ public class NotEnoughUpdates { } } + @SubscribeEvent(priority=EventPriority.HIGHEST) + public void onRenderEntitySpecials(RenderLivingEvent.Specials.Pre event) { + if(Minecraft.getMinecraft().currentScreen instanceof GuiProfileViewer) { + if(((GuiProfileViewer)Minecraft.getMinecraft().currentScreen).getEntityPlayer() == event.entity) { + event.setCanceled(true); + } + } + } + @SubscribeEvent public void onRenderGameOverlay(RenderGameOverlayEvent event) { if(event.type != null && event.type.equals(RenderGameOverlayEvent.ElementType.BOSSHEALTH) && diff --git a/src/main/java/io/github/moulberry/notenoughupdates/auction/APIManager.java b/src/main/java/io/github/moulberry/notenoughupdates/auction/APIManager.java index 65f6545e..53cc4639 100644 --- a/src/main/java/io/github/moulberry/notenoughupdates/auction/APIManager.java +++ b/src/main/java/io/github/moulberry/notenoughupdates/auction/APIManager.java @@ -168,7 +168,9 @@ public class APIManager { args.put("uuid", ""+uuid); manager.hypixelApi.getHypixelApiAsync(manager.config.apiKey.value, "skyblock/profiles", args, jsonObject -> { - if(jsonObject.has("success") && jsonObject.get("success").getAsBoolean()) { + if(jsonObject == null) return; + + if(jsonObject.has("success") && jsonObject.get("success").getAsBoolean()) { incPlayerInfoVersion(); playerInformation = jsonObject.get("profiles").getAsJsonArray(); if(playerInformation == null) return; @@ -366,7 +368,9 @@ public class APIManager { args.put("page", ""+page); manager.hypixelApi.getHypixelApiAsync(manager.config.apiKey.value, "skyblock/auctions", args, jsonObject -> { - if (jsonObject.get("success").getAsBoolean()) { + if(jsonObject == null) return; + + if (jsonObject.get("success").getAsBoolean()) { totalPages = jsonObject.get("totalPages").getAsInt(); activeAuctions = jsonObject.get("totalAuctions").getAsInt(); diff --git a/src/main/java/io/github/moulberry/notenoughupdates/auction/CustomAH.java b/src/main/java/io/github/moulberry/notenoughupdates/auction/CustomAH.java index 17ce216e..77fa8425 100644 --- a/src/main/java/io/github/moulberry/notenoughupdates/auction/CustomAH.java +++ b/src/main/java/io/github/moulberry/notenoughupdates/auction/CustomAH.java @@ -103,7 +103,7 @@ public class CustomAH extends Gui { private Category CATEGORY_TRAVEL_SCROLLS = new Category("travelscroll", "Travel Scrolls", "map"); private Category CATEGORY_REFORGE_STONES = new Category("reforgestone", "Reforge Stones", "anvil"); - private Category CATEGORY_RUNES = new Category("rune", "Runes", "end_portal_frame"); + private Category CATEGORY_RUNES = new Category("rune", "Runes", "magma_cream"); private Category CATEGORY_FURNITURE = new Category("furniture", "Furniture", "armor_stand"); private Category CATEGORY_COMBAT = new Category("weapon", "Combat", "golden_sword", CATEGORY_SWORD, diff --git a/src/main/java/io/github/moulberry/notenoughupdates/profileviewer/GuiProfileViewer.java b/src/main/java/io/github/moulberry/notenoughupdates/profileviewer/GuiProfileViewer.java index 81ecc9b4..9607a888 100644 --- a/src/main/java/io/github/moulberry/notenoughupdates/profileviewer/GuiProfileViewer.java +++ b/src/main/java/io/github/moulberry/notenoughupdates/profileviewer/GuiProfileViewer.java @@ -1,5 +1,6 @@ package io.github.moulberry.notenoughupdates.profileviewer; +import com.google.common.base.Splitter; import com.google.gson.JsonArray; import com.google.gson.JsonElement; import com.google.gson.JsonObject; @@ -7,35 +8,49 @@ import com.mojang.authlib.GameProfile; import com.mojang.authlib.minecraft.MinecraftProfileTexture; import com.mojang.authlib.properties.Property; import io.github.moulberry.notenoughupdates.NotEnoughUpdates; +import io.github.moulberry.notenoughupdates.cosmetics.ShaderManager; +import io.github.moulberry.notenoughupdates.questing.SBScoreboardData; import io.github.moulberry.notenoughupdates.util.TexLoc; import io.github.moulberry.notenoughupdates.util.Utils; +import net.minecraft.block.Block; import net.minecraft.client.Minecraft; import net.minecraft.client.entity.EntityOtherPlayerMP; +import net.minecraft.client.gui.FontRenderer; import net.minecraft.client.gui.Gui; import net.minecraft.client.gui.GuiScreen; import net.minecraft.client.gui.ScaledResolution; import net.minecraft.client.network.NetworkPlayerInfo; -import net.minecraft.client.renderer.GlStateManager; -import net.minecraft.client.renderer.OpenGlHelper; -import net.minecraft.client.renderer.RenderHelper; +import net.minecraft.client.renderer.*; import net.minecraft.client.renderer.entity.RenderManager; +import net.minecraft.client.renderer.texture.TextureUtil; +import net.minecraft.client.renderer.vertex.DefaultVertexFormats; import net.minecraft.client.resources.DefaultPlayerSkin; +import net.minecraft.client.resources.IResourceManager; +import net.minecraft.client.resources.IResourceManagerReloadListener; import net.minecraft.client.resources.SkinManager; +import net.minecraft.entity.EntityLiving; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.item.ItemStack; +import net.minecraft.util.BlockPos; import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.MathHelper; import net.minecraft.util.ResourceLocation; +import net.minecraft.world.World; import org.apache.commons.codec.binary.Base64; import org.apache.commons.io.Charsets; +import org.luaj.vm2.ast.Str; import org.lwjgl.input.Keyboard; +import org.lwjgl.input.Mouse; import org.lwjgl.opengl.GL11; +import org.lwjgl.opengl.GL14; +import org.lwjgl.opengl.GL20; import java.awt.*; +import java.io.IOException; import java.nio.charset.Charset; -import java.util.HashMap; -import java.util.LinkedHashMap; -import java.util.Map; -import java.util.UUID; +import java.util.*; +import java.util.List; public class GuiProfileViewer extends GuiScreen { @@ -48,6 +63,14 @@ public class GuiProfileViewer extends GuiScreen { private int guiLeft; private int guiTop; + private float backgroundRotation = 0; + + private long currentTime = 0; + private long lastTime = 0; + private long startTime = 0; + + private List tooltipToDisplay = null; + public enum ProfileViewerPage { BASIC } @@ -58,6 +81,9 @@ public class GuiProfileViewer extends GuiScreen { @Override public void drawScreen(int mouseX, int mouseY, float partialTicks) { + currentTime = System.currentTimeMillis(); + if(startTime == 0) startTime = currentTime; + super.drawScreen(mouseX, mouseY, partialTicks); drawDefaultBackground(); @@ -67,6 +93,12 @@ public class GuiProfileViewer extends GuiScreen { break; } + lastTime = currentTime; + + if(tooltipToDisplay != null) { + Utils.drawHoveringText(tooltipToDisplay, mouseX, mouseY, width, height, -1, Minecraft.getMinecraft().fontRendererObj); + tooltipToDisplay = null; + } } private String niceUuid(String uuidStr) { @@ -85,33 +117,196 @@ public class GuiProfileViewer extends GuiScreen { return niceAucId.toString(); } + public EntityOtherPlayerMP getEntityPlayer() { + return entityPlayer; + } + private EntityOtherPlayerMP entityPlayer = null; private ResourceLocation playerLocationSkin = null; private ResourceLocation playerLocationCape = null; private String skinType = null; - TexLoc tl = new TexLoc(0, 0, Keyboard.KEY_M); - TexLoc tl2 = new TexLoc(0, 0, Keyboard.KEY_B); - TexLoc tl3 = new TexLoc(0, 0, Keyboard.KEY_J); + private HashMap panoramasMap = new HashMap<>(); + + public ResourceLocation[] getPanoramasForLocation(String location, String identifier) { + if(panoramasMap.containsKey(location)) return panoramasMap.get(location); + try { + ResourceLocation[] panoramasArray = new ResourceLocation[6]; + for(int i=0; i<6; i++) { + panoramasArray[i] = new ResourceLocation("notenoughupdates:panoramas/"+location+"_"+identifier+"/panorama_"+i+".png"); + Minecraft.getMinecraft().getResourceManager().getResource(panoramasArray[i]); + } + panoramasMap.put(location, panoramasArray); + return panoramasArray; + } catch(IOException e) { + try { + ResourceLocation[] panoramasArray = new ResourceLocation[6]; + for(int i=0; i<6; i++) { + panoramasArray[i] = new ResourceLocation("notenoughupdates:panoramas/"+location+"/panorama_"+i+".png"); + Minecraft.getMinecraft().getResourceManager().getResource(panoramasArray[i]); + } + panoramasMap.put(location, panoramasArray); + return panoramasArray; + } catch(IOException e2) { + ResourceLocation[] panoramasArray = new ResourceLocation[6]; + for(int i=0; i<6; i++) { + panoramasArray[i] = new ResourceLocation("notenoughupdates:panoramas/unknown/panorama_"+i+".png"); + } + panoramasMap.put(location, panoramasArray); + return panoramasArray; + } + } + } + + private int backgroundClickedX = -1; + + private static char[] c = new char[]{'k', 'm', 'b', 't'}; + + public static String shortNumberFormat(double n, int iteration) { + double d = ((long) n / 100) / 10.0; + boolean isRound = (d * 10) %10 == 0; + return (d < 1000? + ((d > 99.9 || isRound || (!isRound && d > 9.99)? + (int) d * 10 / 10 : d + "" + ) + "" + c[iteration]) + : shortNumberFormat(d, iteration+1)); + } + private void drawBasicPage(int mouseX, int mouseY, float partialTicks) { + FontRenderer fr = Minecraft.getMinecraft().fontRendererObj; + this.sizeX = 431; this.sizeY = 202; this.guiLeft = (this.width-this.sizeX)/2; this.guiTop = (this.height-this.sizeY)/2; + String location = null; + JsonObject status = profile.getPlayerStatus(); + if(status != null && status.has("mode")) { + location = status.get("mode").getAsString(); + } + + int extraRotation = 0; + if(Mouse.isButtonDown(0)) { + if(backgroundClickedX == -1) { + if(mouseX > guiLeft+23 && mouseX < guiLeft+23+81) { + if(mouseY > guiTop+44 && mouseY < guiTop+44+108) { + backgroundClickedX = mouseX; + } + } + } + } else { + if(backgroundClickedX != -1) { + backgroundRotation += mouseX - backgroundClickedX; + backgroundClickedX = -1; + } + } + if(backgroundClickedX == -1) { + backgroundRotation += (currentTime - lastTime)/400f; + } else { + extraRotation = mouseX - backgroundClickedX; + } + backgroundRotation %= 360; + + String panoramaIdentifier = "day"; + if(SBScoreboardData.getInstance().currentTimeDate != null) { + if(SBScoreboardData.getInstance().currentTimeDate.before(new Date(0, 0, 0, 6, 0, 0))) { + if(SBScoreboardData.getInstance().currentTimeDate.after(new Date(0, 0, 0, 20, 0, 0))) { + panoramaIdentifier = "night"; + } + } + } + + Panorama.drawPanorama(-backgroundRotation-extraRotation, guiLeft+23, guiTop+44, 81, 108, + getPanoramasForLocation(location==null?"unknown":location, panoramaIdentifier)); + Minecraft.getMinecraft().getTextureManager().bindTexture(pv_basic); Utils.drawTexturedRect(guiLeft, guiTop, sizeX, sizeY, GL11.GL_NEAREST); - tl.handleKeyboardInput(); - tl2.handleKeyboardInput(); - tl3.handleKeyboardInput(); + if(entityPlayer != null && profile.getHypixelProfile() != null) { + String rank = Utils.getElementAsString(profile.getHypixelProfile().get("rank"), Utils.getElementAsString(profile.getHypixelProfile().get("newPackageRank"), "NONE")); + EnumChatFormatting rankPlusColorECF = EnumChatFormatting.getValueByName(Utils.getElementAsString(profile.getHypixelProfile().get("rankPlusColor"), "WHITE")); + String rankPlusColor = EnumChatFormatting.WHITE.toString(); + if(rankPlusColorECF != null) { + rankPlusColor = rankPlusColorECF.toString(); + } + + JsonObject misc = Utils.getConstant("misc"); + if(misc != null) { + if(misc.has("ranks")) { + String rankName = Utils.getElementAsString(Utils.getElement(misc, "ranks."+rank+".tag"), null); + String rankColor = Utils.getElementAsString(Utils.getElement(misc, "ranks."+rank+".color"), "7"); + String rankPlus = Utils.getElementAsString(Utils.getElement(misc, "ranks."+rank+".plus"), ""); + + String name = entityPlayer.getName(); + + if(misc.has("special_bois")) { + JsonArray special_bois = misc.get("special_bois").getAsJsonArray(); + for(int i=0; i guiLeft+132 && mouseX < guiLeft+212) { + if(mouseY > guiTop+32+12.5f*i && mouseY < guiTop+40+12.5f*i) { + List split = splitter.splitToList(statNamePretty); + PlayerStats.Stats baseStats = PlayerStats.getBaseStats(); + tooltipToDisplay = new ArrayList<>(); + tooltipToDisplay.add(statNamePretty); + int base = Math.round(baseStats.get(statName)); + tooltipToDisplay.add(EnumChatFormatting.GRAY+"Base "+split.get(1)+": "+EnumChatFormatting.GREEN+base+" "+split.get(0)); + int passive = Math.round(profile.getPassiveStats(null).get(statName)-baseStats.get(statName)); + tooltipToDisplay.add(EnumChatFormatting.GRAY+"Passive "+split.get(1)+" Bonus: +"+EnumChatFormatting.YELLOW+passive+" "+split.get(0)); + int itemBonus = Math.round(stats.get(statName)-profile.getPassiveStats(null).get(statName)); + tooltipToDisplay.add(EnumChatFormatting.GRAY+"Item "+split.get(1)+" Bonus: +"+EnumChatFormatting.DARK_PURPLE+itemBonus+" "+split.get(0)); + int finalStat = Math.round(stats.get(statName)); + tooltipToDisplay.add(EnumChatFormatting.GRAY+"Final "+split.get(1)+": +"+EnumChatFormatting.RED+finalStat+" "+split.get(0)); } } } - - GlStateManager.color(1, 1, 1, 1); - Utils.drawStringCenteredScaledMaxWidth(statNamePretty + " " + EnumChatFormatting.WHITE + val, Minecraft.getMinecraft().fontRendererObj, - guiLeft+172f, guiTop+36+12.5f*i, true, 85, Color.BLACK.getRGB()); + } else { + //"stats not enabled in api" } - int position = 0; - for(Map.Entry entry : skillToSkillNameMap.entrySet()) { - int yPosition = position % 7; - int xPosition = position / 7; + if(skillInfo != null) { + int position = 0; + for(Map.Entry entry : ProfileViewer.getSkillToSkillDisplayMap().entrySet()) { + int yPosition = position % 7; + int xPosition = position / 7; - String skillName = entry.getValue(); + String skillName = entry.getValue().getDisplayName(); - float level = (int)skillInfo.get(entry.getKey()).getAsFloat(); + float level = Utils.getElementAsFloat(skillInfo.get("level_"+entry.getKey()), 0); + int levelFloored = (int)Math.floor(level); - for(int xOff=-1; xOff<=1; xOff++) { - for(int yOff=-1; yOff<=1; yOff++) { - if(Math.abs(xOff) != Math.abs(yOff)) { - //Utils.drawStringCenteredScaledMaxWidth(Utils.cleanColourNotModifiers(skillName) + " " + level, Minecraft.getMinecraft().fontRendererObj, - // guiLeft+tl.x+tl2.x*xPosition+xOff, guiTop+tl.y+tl2.y*yPosition+yOff, false, 85, new Color(100, 100, 100, 100).getRGB()); + int x = guiLeft+237+86*xPosition; + int y = guiTop+31+21*yPosition; + + for(int xOff=-2; xOff<=2; xOff++) { + for(int yOff=-2; yOff<=2; yOff++) { + if(Math.abs(xOff) != Math.abs(yOff)) { + Utils.drawStringCenteredYScaledMaxWidth(Utils.cleanColourNotModifiers(skillName) + " " + levelFloored, Minecraft.getMinecraft().fontRendererObj, + x+14+xOff/2f, y+yOff/2f, false, 60, new Color(0, 0, 0, + 200/Math.max(Math.abs(xOff), Math.abs(yOff))).getRGB()); + } } } - } - GlStateManager.color(1, 1, 1, 1); - Utils.drawStringCenteredScaledMaxWidth(skillName + " " + EnumChatFormatting.WHITE + level, Minecraft.getMinecraft().fontRendererObj, - guiLeft+277+86*xPosition, guiTop+36+21*yPosition, true, 85, Color.BLACK.getRGB()); + GlStateManager.color(1, 1, 1, 1); + Utils.drawStringCenteredYScaledMaxWidth(EnumChatFormatting.WHITE + skillName + " " + EnumChatFormatting.WHITE + levelFloored, Minecraft.getMinecraft().fontRendererObj, + x+14, y, false, 60, 4210752); - position++; + if(skillInfo.get("maxed_"+entry.getKey()).getAsBoolean()) { + renderGoldBar(x, y+6, 80); + } else { + renderBar(x, y+6, 80, level%1); + } + + if(mouseX > x && mouseX < x+80) { + if(mouseY > y+4 && mouseY < y+13) { + String levelStr; + if(skillInfo.get("maxed_"+entry.getKey()).getAsBoolean()) { + levelStr = EnumChatFormatting.GOLD+"MAXED!"; + } else { + int maxXp = (int)skillInfo.get("maxxp_"+entry.getKey()).getAsFloat(); + levelStr = EnumChatFormatting.DARK_PURPLE.toString() + shortNumberFormat(Math.round((level%1)*maxXp), 0) + "/" + shortNumberFormat(maxXp, 0); + } + + tooltipToDisplay = Utils.createList(levelStr); + } + } + + GL11.glTranslatef((x), (y-8*0.7f), 0); + GL11.glScalef(0.7f, 0.7f, 1); + Utils.drawItemStackLinear(entry.getValue(), 0, 0); + GL11.glScalef(1/0.7f, 1/0.7f, 1); + GL11.glTranslatef(-(x), -(y-8*0.7f), 0); + + position++; + } + } else { + //api not enabled } } - private static final LinkedHashMap skillToSkillNameMap = new LinkedHashMap<>(); - static { - skillToSkillNameMap.put("level_skill_taming", "Taming"); - skillToSkillNameMap.put("level_skill_mining", "Mining"); - skillToSkillNameMap.put("level_skill_foraging", "Foraging"); - skillToSkillNameMap.put("level_skill_enchanting", "Enchanting"); - skillToSkillNameMap.put("level_skill_carpentry", "Carpentry"); - skillToSkillNameMap.put("level_skill_farming", "Farming"); - skillToSkillNameMap.put("level_skill_combat", "Combat"); - skillToSkillNameMap.put("level_skill_fishing", "Fishing"); - skillToSkillNameMap.put("level_skill_alchemy", "Alchemy"); - skillToSkillNameMap.put("level_skill_runecrafting", "Runecrafting"); - skillToSkillNameMap.put("level_slayer_zombie", "Revenant Slayer"); - skillToSkillNameMap.put("level_slayer_spider", "Tarantula Slayer"); - skillToSkillNameMap.put("level_slayer_wolf", "Sven Slayer"); - } + private void renderGoldBar(float x, float y, float xSize) { - /*private void renderBar(float x, float y, float xSize, float ySize, float completed) { - this.mc.getTextureManager().bindTexture(Gui.icons); + Minecraft.getMinecraft().getTextureManager().bindTexture(Gui.icons); + ShaderManager shaderManager = ShaderManager.getInstance(); + shaderManager.loadShader("make_gold"); + shaderManager.loadData("make_gold", "amount", (startTime-System.currentTimeMillis())/10000f); - float yScale = ySize/5; + Utils.drawTexturedRect(x, y, xSize/2f, 5, 0/256f, (xSize/2f)/256f, 79/256f, 84/256f, GL11.GL_NEAREST); + Utils.drawTexturedRect(x+xSize/2f, y, xSize/2f, 5, (182-xSize/2f)/256f, 182/256f, 79/256f, 84/256f, GL11.GL_NEAREST); + GL20.glUseProgram(0); + } - if (i > 0) - { - int j = 182; - int k = (int)(this.mc.thePlayer.experience * (float)(j + 1)); - int l = p_175176_1_.getScaledHeight() - 32 + 3; + private void renderBar(float x, float y, float xSize, float completed) { + Minecraft.getMinecraft().getTextureManager().bindTexture(Gui.icons); - Utils.drawTexturedRect(x, y, xSize, ); + completed = Math.round(completed/0.05f)*0.05f; - this.drawTexturedModalRect(p_175176_2_, l, 0, 64, j, 5); + float notcompleted = 1-completed; - if (k > 0) - { - this.drawTexturedModalRect(p_175176_2_, l, 0, 69, k, 5); - } + int displayNum = 0;//tl.x%5; + + GlStateManager.color(1, 1, 1, 1); + float width = 0; + + if(completed < 0.5f && (displayNum == 1 || displayNum == 0)) { + width = (0.5f - completed) * xSize; + Utils.drawTexturedRect(x+xSize*completed, y, width, 5, xSize*completed/256f, (xSize/2f)/256f, 74/256f, 79/256f, GL11.GL_NEAREST); + } + if(completed < 1f && (displayNum == 2 || displayNum == 0)) { + width = Math.min(xSize*notcompleted, xSize/2f); + Utils.drawTexturedRect(x+(xSize/2f)+Math.max(xSize*(completed-0.5f), 0), y, width, 5, + (182-(xSize/2f)+Math.max(xSize*(completed-0.5f), 0))/256f, 182/256f, 74/256f, 79/256f, GL11.GL_NEAREST); } - if (this.mc.thePlayer.experienceLevel > 0) - { - this.mc.mcProfiler.startSection("expLevel"); - int k1 = 8453920; - String s = "" + this.mc.thePlayer.experienceLevel; - int l1 = (p_175176_1_.getScaledWidth() - this.getFontRenderer().getStringWidth(s)) / 2; - int i1 = p_175176_1_.getScaledHeight() - 31 - 4; - int j1 = 0; - this.getFontRenderer().drawString(s, l1 + 1, i1, 0); - this.getFontRenderer().drawString(s, l1 - 1, i1, 0); - this.getFontRenderer().drawString(s, l1, i1 + 1, 0); - this.getFontRenderer().drawString(s, l1, i1 - 1, 0); - this.getFontRenderer().drawString(s, l1, i1, k1); - this.mc.mcProfiler.endSection(); + if(completed > 0f && (displayNum == 3 || displayNum == 0)) { + width = Math.min(xSize*completed, xSize/2f); + Utils.drawTexturedRect(x, y, width, 5, + 0/256f, width/256f, 79/256f, 84/256f, GL11.GL_NEAREST); } - }*/ + if(completed > 0.5f && (displayNum == 4 || displayNum == 0)) { + width = Math.max(xSize*(completed-0.5f), xSize/2f); + Utils.drawTexturedRect(x+(xSize/2f), y, width, 5, + (182-(xSize/2f))/256f, (182-(xSize/2f)+width)/256f, 79/256f, 84/256f, GL11.GL_NEAREST); + } + } + private static final ResourceLocation shadowTextures = new ResourceLocation("textures/misc/shadow.png"); public static void drawEntityOnScreen(int posX, int posY, int scale, float mouseX, float mouseY, EntityLivingBase ent) { GlStateManager.enableColorMaterial(); GlStateManager.pushMatrix(); GlStateManager.translate((float)posX, (float)posY, 50.0F); GlStateManager.scale((float)(-scale), (float)scale, (float)scale); GlStateManager.rotate(180.0F, 0.0F, 0.0F, 1.0F); - float f = ent.renderYawOffset; + float renderYawOffset = ent.renderYawOffset; float f1 = ent.rotationYaw; float f2 = ent.rotationPitch; float f3 = ent.prevRotationYawHead; @@ -288,19 +541,54 @@ public class GuiProfileViewer extends GuiScreen { GlStateManager.rotate(135.0F, 0.0F, 1.0F, 0.0F); RenderHelper.enableStandardItemLighting(); GlStateManager.rotate(-135.0F, 0.0F, 1.0F, 0.0F); - GlStateManager.rotate(-((float)Math.atan((double)(mouseY / 40.0F))) * 20.0F, 1.0F, 0.0F, 0.0F); + GlStateManager.rotate(25, 1.0F, 0.0F, 0.0F); ent.renderYawOffset = (float)Math.atan((double)(mouseX / 40.0F)) * 20.0F; ent.rotationYaw = (float)Math.atan((double)(mouseX / 40.0F)) * 40.0F; ent.rotationPitch = -((float)Math.atan((double)(mouseY / 40.0F))) * 20.0F; ent.rotationYawHead = ent.rotationYaw; ent.prevRotationYawHead = ent.rotationYaw; - GlStateManager.translate(0.0F, 0.0F, 0.0F); RenderManager rendermanager = Minecraft.getMinecraft().getRenderManager(); rendermanager.setPlayerViewY(180.0F); rendermanager.setRenderShadow(false); rendermanager.renderEntityWithPosYaw(ent, 0.0D, 0.0D, 0.0D, 0.0F, 1.0F); - rendermanager.setRenderShadow(true); - ent.renderYawOffset = f; + + /*{ + GlStateManager.enableBlend(); + GlStateManager.blendFunc(770, 771); + rendermanager.renderEngine.bindTexture(shadowTextures); + GlStateManager.depthMask(false); + float f = 0.5f; + + if (ent instanceof EntityLiving) { + EntityLiving entityliving = (EntityLiving)ent; + f *= entityliving.getRenderSizeModifier(); + + if (entityliving.isChild()) + { + f *= 0.5F; + } + } + + /*Tessellator tessellator = Tessellator.getInstance(); + WorldRenderer worldrenderer = tessellator.getWorldRenderer(); + worldrenderer.begin(7, DefaultVertexFormats.POSITION_TEX_COLOR); + + GlStateManager.color(1, 1, 1, 0.5f); + Utils.drawTexturedRect(-0.5f*tl.x, -0.5f*tl.x, 1*tl.x, 1*tl.x); + + /*for (BlockPos blockpos : BlockPos.getAllInBoxMutable(new BlockPos(i, k, i1), new BlockPos(j, l, j1))) { + Block block = world.getBlockState(blockpos.down()).getBlock(); + + if (block.getRenderType() != -1 && world.getLightFromNeighbors(blockpos) > 3) { + this.func_180549_a(block, x, y, z, blockpos, shadowAlpha, f, d2, d3, d4); + } + } + + GlStateManager.disableBlend(); + GlStateManager.depthMask(true); + }*/ + + ent.renderYawOffset = renderYawOffset; ent.rotationYaw = f1; ent.rotationPitch = f2; ent.prevRotationYawHead = f3; diff --git a/src/main/java/io/github/moulberry/notenoughupdates/profileviewer/Panorama.java b/src/main/java/io/github/moulberry/notenoughupdates/profileviewer/Panorama.java new file mode 100644 index 00000000..bf49e616 --- /dev/null +++ b/src/main/java/io/github/moulberry/notenoughupdates/profileviewer/Panorama.java @@ -0,0 +1,151 @@ +package io.github.moulberry.notenoughupdates.profileviewer; + +import io.github.moulberry.notenoughupdates.util.TexLoc; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.ScaledResolution; +import net.minecraft.client.renderer.GlStateManager; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.client.renderer.WorldRenderer; +import net.minecraft.client.renderer.texture.DynamicTexture; +import net.minecraft.client.renderer.vertex.DefaultVertexFormats; +import net.minecraft.util.ResourceLocation; +import org.lwjgl.input.Keyboard; +import org.lwjgl.opengl.GL11; +import org.lwjgl.util.glu.Project; + +public class Panorama { + + private static TexLoc tl = new TexLoc(97, 19, Keyboard.KEY_P); + private static TexLoc tl2 = new TexLoc(37, 80, Keyboard.KEY_L); + + private static ResourceLocation backgroundTexture = null; + + private static int lastWidth = 0; + private static int lastHeight = 0; + + public static void drawPanorama(float angle, int x, int y, int width, int height, ResourceLocation[] panoramas) { + Minecraft.getMinecraft().getFramebuffer().unbindFramebuffer(); + //GlStateManager.viewport(0, 0, 1024, 1024); + + ScaledResolution scaledresolution = new ScaledResolution(Minecraft.getMinecraft()); + + GL11.glViewport(0, 0, width*scaledresolution.getScaleFactor(), height*scaledresolution.getScaleFactor()); + + tl.handleKeyboardInput(); + tl2.handleKeyboardInput(); + float fov = 97; + + { + Tessellator tessellator = Tessellator.getInstance(); + WorldRenderer worldrenderer = tessellator.getWorldRenderer(); + GlStateManager.matrixMode(5889); + GlStateManager.pushMatrix(); + GlStateManager.loadIdentity(); + Project.gluPerspective(fov, (float)height/width, 0.05F, 10.0F); + GlStateManager.matrixMode(5888); + GlStateManager.pushMatrix(); + GlStateManager.loadIdentity(); + GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F); + GlStateManager.rotate(180F, 1.0F, 0.0F, 0.0F); + GlStateManager.rotate(90, 0.0F, 0.0F, 1.0F); + GlStateManager.rotate(19, 1.0F, 0.0F, 0.0F); + //GlStateManager.rotate(tl.x, 0.0F, 0.0F, 1.0F); + GlStateManager.enableBlend(); + GlStateManager.disableAlpha(); + GlStateManager.disableCull(); + GlStateManager.depthMask(false); + GlStateManager.tryBlendFuncSeparate(770, 771, 1, 0); + + GlStateManager.pushMatrix(); + + GlStateManager.translate(0, 0.37f, 0.8f); + + //GlStateManager.rotate(MathHelper.sin(currentTime/1.6f) * 5.0F, 1.0F, 0.0F, 0.0F); + GlStateManager.rotate(angle, 0.0F, 1.0F, 0.0F); + + + for (int k = 0; k < 6; ++k) { + GlStateManager.pushMatrix(); + + switch (k) { + case 1: + GlStateManager.rotate(90.0F, 0.0F, 1.0F, 0.0F); break; + case 2: + GlStateManager.rotate(180.0F, 0.0F, 1.0F, 0.0F); break; + case 3: + GlStateManager.rotate(-90.0F, 0.0F, 1.0F, 0.0F); break; + case 4: + GlStateManager.rotate(90.0F, 1.0F, 0.0F, 0.0F); break; + case 5: + GlStateManager.rotate(-90.0F, 1.0F, 0.0F, 0.0F); break; + } + + Minecraft.getMinecraft().getTextureManager().bindTexture(panoramas[k]); + float splits = 0.1f; + for(float x1=0; x1<1; x1+=splits) { + for(float y1=0; y1<1; y1+=splits) { + worldrenderer.begin(7, DefaultVertexFormats.POSITION_TEX_COLOR); + + for(int i=0; i<4; i++) { + float x2 = (i == 0 || i == 3) ? x1 : x1+splits; + float y2 = (i >= 2) ? y1 : y1+splits; + + float xr = x2*2-1; + float yr = y2*2-1; + + float distSq = xr*xr+yr*yr+1; + float scale = (float)Math.sqrt(3/distSq); + + worldrenderer.pos(xr*scale , yr*scale , scale).tex(x2, y2).color(255, 255, 255, 255).endVertex(); + + } + + tessellator.draw(); + } + } + + GlStateManager.popMatrix(); + } + + GlStateManager.popMatrix(); + GlStateManager.colorMask(true, true, true, false); + + worldrenderer.setTranslation(0.0D, 0.0D, 0.0D); + GlStateManager.colorMask(true, true, true, true); + GlStateManager.matrixMode(5889); + GlStateManager.popMatrix(); + GlStateManager.matrixMode(5888); + GlStateManager.popMatrix(); + GlStateManager.depthMask(true); + GlStateManager.enableCull(); + GlStateManager.enableDepth(); + } + + if(backgroundTexture == null || lastWidth != width*scaledresolution.getScaleFactor() || lastHeight != height*scaledresolution.getScaleFactor()) { + DynamicTexture viewportTexture = new DynamicTexture(width*scaledresolution.getScaleFactor(), height*scaledresolution.getScaleFactor()); + backgroundTexture = Minecraft.getMinecraft().getTextureManager().getDynamicTextureLocation("background", viewportTexture); + lastWidth = width*scaledresolution.getScaleFactor(); + lastHeight = height*scaledresolution.getScaleFactor(); + } + + Minecraft.getMinecraft().getTextureManager().bindTexture(backgroundTexture); + GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MIN_FILTER, GL11.GL_LINEAR); + GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_LINEAR); + GL11.glCopyTexSubImage2D(GL11.GL_TEXTURE_2D, 0, 0, 0, 0, 0, width*scaledresolution.getScaleFactor(), height*scaledresolution.getScaleFactor()); + + Minecraft.getMinecraft().getFramebuffer().bindFramebuffer(true); + Tessellator tessellator = Tessellator.getInstance(); + WorldRenderer worldrenderer = tessellator.getWorldRenderer(); + worldrenderer.begin(7, DefaultVertexFormats.POSITION_TEX); + worldrenderer.pos(x, y+height, 0) + .tex(0, 1).endVertex(); + worldrenderer.pos(x+width, y+height, 0) + .tex(0, 0).endVertex(); + worldrenderer.pos(x+width, y, 0) + .tex(1, 0).endVertex(); + worldrenderer.pos(x, y, 0) + .tex(1, 1).endVertex(); + tessellator.draw(); + } + +} diff --git a/src/main/java/io/github/moulberry/notenoughupdates/profileviewer/PlayerStats.java b/src/main/java/io/github/moulberry/notenoughupdates/profileviewer/PlayerStats.java index 25b7356d..d0d1e5fc 100644 --- a/src/main/java/io/github/moulberry/notenoughupdates/profileviewer/PlayerStats.java +++ b/src/main/java/io/github/moulberry/notenoughupdates/profileviewer/PlayerStats.java @@ -114,7 +114,7 @@ public class PlayerStats { return stats; } - public static Stats getFairyBonus(int fairyExchanges) { + private static Stats getFairyBonus(int fairyExchanges) { Stats bonus = new Stats(); bonus.addStat(SPEED, fairyExchanges/10); @@ -128,7 +128,7 @@ public class PlayerStats { return bonus; } - public static Stats getSkillBonus(JsonObject skillInfo) { + private static Stats getSkillBonus(JsonObject skillInfo) { JsonObject bonuses = Utils.getConstant("bonuses"); if(bonuses == null) return null; @@ -155,7 +155,7 @@ public class PlayerStats { return skillBonus; } - public static Stats getPetBonus(JsonObject profile) { + private static Stats getPetBonus(JsonObject profile) { JsonObject bonuses = Utils.getConstant("bonuses"); if(bonuses == null) return null; @@ -192,7 +192,7 @@ public class PlayerStats { return petBonus; } - public static float harpBonus(JsonObject profile) { + private static float harpBonus(JsonObject profile) { String talk_to_melody = Utils.getElementAsString(Utils.getElement(profile, "objectives.talk_to_melody.status"), "INCOMPLETE"); if(talk_to_melody.equalsIgnoreCase("COMPLETE")) { return 26; @@ -205,7 +205,6 @@ public class PlayerStats { public static Stats getPassiveBonuses(JsonObject skillInfo, JsonObject profile) { Stats passiveBonuses = new Stats(); - //TODO: null checking Stats fairyBonus = getFairyBonus((int)Utils.getElementAsFloat(Utils.getElement(profile, "fairy_exchanges"), 0)); Stats skillBonus = getSkillBonus(skillInfo); Stats petBonus = getPetBonus(profile); @@ -220,7 +219,7 @@ public class PlayerStats { return passiveBonuses; } - public static String getFullset(JsonArray armor, int ignore) { + private static String getFullset(JsonArray armor, int ignore) { String fullset = null; for(int i=0; i=0; i--) { String line = lore.get(i).getAsString(); for(String rarity : rarityArr) { @@ -365,7 +364,7 @@ public class PlayerStats { STAT_PATTERN_MAP.put("intelligence", INTELLIGENCE_PATTERN); STAT_PATTERN_MAP.put("sea_creature_chance", SCC_PATTERN); } - public static Stats getStatForItem(String internalname, JsonObject item, JsonArray lore) { + private static Stats getStatForItem(String internalname, JsonObject item, JsonArray lore) { Stats stats = new Stats(); for(int i=0; i= 0) { + if(!talismanOnly || checkItemType(item.get("lore").getAsJsonArray(), true, "ACCESSORY", "HATCCESSORY") >= 0) { Stats itemBonus = getStatForItem(internalname, item, item.get("lore").getAsJsonArray()); itemBonuses.put(internalname, itemBonus); @@ -457,7 +456,7 @@ public class PlayerStats { return itemBonusesStats; } - public static float getStatMult(JsonObject inventoryInfo) { + private static float getStatMult(JsonObject inventoryInfo) { float mult = 1f; JsonArray armor = Utils.getElement(inventoryInfo, "inv_armor").getAsJsonArray(); @@ -485,7 +484,7 @@ public class PlayerStats { return mult; } - public static void applyLimits(Stats stats, JsonObject inventoryInfo) { + private static void applyLimits(Stats stats, JsonObject inventoryInfo) { //>0 JsonArray armor = Utils.getElement(inventoryInfo, "inv_armor").getAsJsonArray(); @@ -508,6 +507,8 @@ public class PlayerStats { } public static Stats getStats(JsonObject skillInfo, JsonObject inventoryInfo, JsonObject collectionInfo, JsonObject profile) { + if(skillInfo == null || inventoryInfo == null || collectionInfo == null || profile == null) return null; + JsonArray armor = Utils.getElement(inventoryInfo, "inv_armor").getAsJsonArray(); JsonArray inventory = Utils.getElement(inventoryInfo, "inv_contents").getAsJsonArray(); JsonArray talisman_bag = Utils.getElement(inventoryInfo, "talisman_bag").getAsJsonArray(); diff --git a/src/main/java/io/github/moulberry/notenoughupdates/profileviewer/ProfileViewer.java b/src/main/java/io/github/moulberry/notenoughupdates/profileviewer/ProfileViewer.java index db90cca8..5706dee9 100644 --- a/src/main/java/io/github/moulberry/notenoughupdates/profileviewer/ProfileViewer.java +++ b/src/main/java/io/github/moulberry/notenoughupdates/profileviewer/ProfileViewer.java @@ -9,17 +9,20 @@ import io.github.moulberry.notenoughupdates.NEUManager; import io.github.moulberry.notenoughupdates.NotEnoughUpdates; import io.github.moulberry.notenoughupdates.util.Utils; import net.minecraft.client.Minecraft; +import net.minecraft.init.Blocks; +import net.minecraft.init.Items; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; import net.minecraft.nbt.CompressedStreamTools; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; import net.minecraft.util.ChatComponentText; +import net.minecraft.util.EnumChatFormatting; import java.io.ByteArrayInputStream; import java.io.File; import java.io.IOException; -import java.util.Base64; -import java.util.HashMap; -import java.util.List; +import java.util.*; import java.util.concurrent.atomic.AtomicBoolean; import java.util.function.Consumer; import java.util.regex.Matcher; @@ -33,6 +36,27 @@ public class ProfileViewer { this.manager = manager; } + private static final LinkedHashMap skillToSkillDisplayMap = new LinkedHashMap<>(); + static { + skillToSkillDisplayMap.put("skill_taming", Utils.createItemStack(Items.spawn_egg, EnumChatFormatting.LIGHT_PURPLE+"Taming")); + skillToSkillDisplayMap.put("skill_mining", Utils.createItemStack(Items.stone_pickaxe, EnumChatFormatting.GRAY+"Mining")); + skillToSkillDisplayMap.put("skill_foraging", Utils.createItemStack(Item.getItemFromBlock(Blocks.sapling), EnumChatFormatting.DARK_GREEN+"Foraging")); + skillToSkillDisplayMap.put("skill_enchanting", Utils.createItemStack(Item.getItemFromBlock(Blocks.enchanting_table), EnumChatFormatting.GREEN+"Enchanting")); + skillToSkillDisplayMap.put("skill_carpentry", Utils.createItemStack(Item.getItemFromBlock(Blocks.crafting_table), EnumChatFormatting.DARK_RED+"Carpentry")); + skillToSkillDisplayMap.put("skill_farming", Utils.createItemStack(Items.golden_hoe, EnumChatFormatting.YELLOW+"Farming")); + skillToSkillDisplayMap.put("skill_combat", Utils.createItemStack(Items.stone_sword, EnumChatFormatting.RED+"Combat")); + skillToSkillDisplayMap.put("skill_fishing", Utils.createItemStack(Items.fishing_rod, EnumChatFormatting.AQUA+"Fishing")); + skillToSkillDisplayMap.put("skill_alchemy", Utils.createItemStack(Items.brewing_stand, EnumChatFormatting.BLUE+"Alchemy")); + skillToSkillDisplayMap.put("skill_runecrafting", Utils.createItemStack(Items.magma_cream, EnumChatFormatting.DARK_PURPLE+"Runecrafting")); + skillToSkillDisplayMap.put("slayer_zombie", Utils.createItemStack(Items.rotten_flesh, EnumChatFormatting.GOLD+"Rev Slayer")); + skillToSkillDisplayMap.put("slayer_spider", Utils.createItemStack(Items.spider_eye, EnumChatFormatting.GOLD+"Tara Slayer")); + skillToSkillDisplayMap.put("slayer_wolf", Utils.createItemStack(Items.bone, EnumChatFormatting.GOLD+"Sven Slayer")); + } + + public static Map getSkillToSkillDisplayMap() { + return Collections.unmodifiableMap(skillToSkillDisplayMap); + } + public class Profile { private final String uuid; private String latestProfile = null; @@ -44,13 +68,38 @@ public class ProfileViewer { private final HashMap skillInfoMap = new HashMap<>(); private final HashMap inventoryInfoMap = new HashMap<>(); private final HashMap collectionInfoMap = new HashMap<>(); + private JsonObject playerStatus = null; private PlayerStats.Stats stats = null; + private PlayerStats.Stats passiveStats = null; public Profile(String uuid) { this.uuid = uuid; } private AtomicBoolean updatingPlayerInfoState = new AtomicBoolean(false); + private AtomicBoolean updatingPlayerStatusState = new AtomicBoolean(false); + + public JsonObject getPlayerStatus() { + if(playerStatus != null) return playerStatus; + if(updatingPlayerStatusState.get()) return null; + + updatingPlayerStatusState.set(true); + + HashMap args = new HashMap<>(); + args.put("uuid", ""+uuid); + manager.hypixelApi.getHypixelApiAsync(manager.config.apiKey.value, "status", + args, jsonObject -> { + if(jsonObject == null) return; + + updatingPlayerStatusState.set(false); + if(jsonObject.has("success") && jsonObject.get("success").getAsBoolean()) { + playerStatus = jsonObject.get("session").getAsJsonObject(); + } + }, () -> updatingPlayerStatusState.set(false) + ); + + return null; + } public JsonArray getPlayerInformation(Runnable runnable) { if(playerInformation != null) return playerInformation; @@ -62,6 +111,8 @@ public class ProfileViewer { args.put("uuid", ""+uuid); manager.hypixelApi.getHypixelApiAsync(manager.config.apiKey.value, "skyblock/profiles", args, jsonObject -> { + if(jsonObject == null) return; + updatingPlayerInfoState.set(false); if(jsonObject.has("success") && jsonObject.get("success").getAsBoolean()) { playerInformation = jsonObject.get("profiles").getAsJsonArray(); @@ -79,17 +130,21 @@ public class ProfileViewer { if(members.has(uuid)) { JsonObject member = members.get(uuid).getAsJsonObject(); - long last_save = member.get("last_save").getAsLong(); - if(last_save > backupLastSave) { - backupLastSave = last_save; - backup = cute_name; + if(member.has("last_save")) { + long last_save = member.get("last_save").getAsLong(); + if(last_save > backupLastSave) { + backupLastSave = last_save; + backup = cute_name; + } } } } System.out.println("accepting runnable"); - runnable.run(); + if(runnable != null) runnable.run(); latestProfile = backup; } + }, () -> { + updatingPlayerInfoState.set(false); } ); @@ -103,6 +158,10 @@ public class ProfileViewer { if(profileMap.containsKey(profileId)) return profileMap.get(profileId); for(int i=0; i xp) { - return level + xp/levelXp; + if(cumulative) { + float previous = 0; + if(level > 0) previous = levelingArray.get(level-1).getAsFloat(); + levelObj.maxXpForLevel = (levelXp-previous); + levelObj.level = 1 + level + (xp-levelXp)/levelObj.maxXpForLevel; + } else { + levelObj.maxXpForLevel = levelXp; + levelObj.level = level + xp/levelXp; + } + return levelObj; } else { - xp -= levelXp; + if(!cumulative) xp -= levelXp; } } - return levelingArray.size(); + levelObj.level = levelingArray.size(); + levelObj.maxed = true; + return levelObj; } public JsonObject getSkillInfo(String profileId) { @@ -164,7 +242,7 @@ public class ProfileViewer { float experience_slayer_zombie = Utils.getElementAsFloat(Utils.getElement(profileInfo, "slayer_bosses.zombie.xp"), 0); float experience_slayer_spider = Utils.getElementAsFloat(Utils.getElement(profileInfo, "slayer_bosses.spider.xp"), 0); - float experience_slayer_wolf = Utils.getElementAsFloat(Utils.getElement(profileInfo, "slayer_bosses.zombie.xp"), 0); + float experience_slayer_wolf = Utils.getElementAsFloat(Utils.getElement(profileInfo, "slayer_bosses.wolf.xp"), 0); float totalSkillXP = experience_skill_taming + experience_skill_mining + experience_skill_foraging + experience_skill_enchanting + experience_skill_carpentry + experience_skill_farming @@ -193,20 +271,65 @@ public class ProfileViewer { skillInfo.addProperty("experience_slayer_spider", experience_slayer_spider); skillInfo.addProperty("experience_slayer_wolf", experience_slayer_wolf); - skillInfo.addProperty("level_skill_taming", getLevel(Utils.getElement(leveling, "leveling_xp").getAsJsonArray(), experience_skill_taming)); - skillInfo.addProperty("level_skill_mining", getLevel(Utils.getElement(leveling, "leveling_xp").getAsJsonArray(), experience_skill_mining)); - skillInfo.addProperty("level_skill_foraging", getLevel(Utils.getElement(leveling, "leveling_xp").getAsJsonArray(), experience_skill_foraging)); - skillInfo.addProperty("level_skill_enchanting", getLevel(Utils.getElement(leveling, "leveling_xp").getAsJsonArray(), experience_skill_enchanting)); - skillInfo.addProperty("level_skill_carpentry", getLevel(Utils.getElement(leveling, "leveling_xp").getAsJsonArray(), experience_skill_carpentry)); - skillInfo.addProperty("level_skill_farming", getLevel(Utils.getElement(leveling, "leveling_xp").getAsJsonArray(), experience_skill_farming)); - skillInfo.addProperty("level_skill_combat", getLevel(Utils.getElement(leveling, "leveling_xp").getAsJsonArray(), experience_skill_combat)); - skillInfo.addProperty("level_skill_fishing", getLevel(Utils.getElement(leveling, "leveling_xp").getAsJsonArray(), experience_skill_fishing)); - skillInfo.addProperty("level_skill_alchemy", getLevel(Utils.getElement(leveling, "leveling_xp").getAsJsonArray(), experience_skill_alchemy)); - skillInfo.addProperty("level_skill_runecrafting", getLevel(Utils.getElement(leveling, "leveling_xp").getAsJsonArray(), experience_skill_runecrafting)); - - skillInfo.addProperty("level_slayer_zombie", getLevel(Utils.getElement(leveling, "slayer_xp.zombie").getAsJsonArray(), experience_slayer_zombie)); - skillInfo.addProperty("level_slayer_spider", getLevel(Utils.getElement(leveling, "slayer_xp.spider").getAsJsonArray(), experience_slayer_spider)); - skillInfo.addProperty("level_slayer_wolf", getLevel(Utils.getElement(leveling, "slayer_xp.wolf").getAsJsonArray(), experience_slayer_wolf)); + Level level_skill_taming = getLevel(Utils.getElement(leveling, "leveling_xp").getAsJsonArray(), experience_skill_taming, false); + Level level_skill_mining = getLevel(Utils.getElement(leveling, "leveling_xp").getAsJsonArray(), experience_skill_mining, false); + Level level_skill_foraging = getLevel(Utils.getElement(leveling, "leveling_xp").getAsJsonArray(), experience_skill_foraging, false); + Level level_skill_enchanting = getLevel(Utils.getElement(leveling, "leveling_xp").getAsJsonArray(), experience_skill_enchanting, false); + Level level_skill_carpentry = getLevel(Utils.getElement(leveling, "leveling_xp").getAsJsonArray(), experience_skill_carpentry, false); + Level level_skill_farming = getLevel(Utils.getElement(leveling, "leveling_xp").getAsJsonArray(), experience_skill_farming, false); + Level level_skill_combat = getLevel(Utils.getElement(leveling, "leveling_xp").getAsJsonArray(), experience_skill_combat, false); + Level level_skill_fishing = getLevel(Utils.getElement(leveling, "leveling_xp").getAsJsonArray(), experience_skill_fishing, false); + Level level_skill_alchemy = getLevel(Utils.getElement(leveling, "leveling_xp").getAsJsonArray(), experience_skill_alchemy, false); + Level level_skill_runecrafting = getLevel(Utils.getElement(leveling, "runecrafting_xp").getAsJsonArray(), experience_skill_runecrafting, false); + + Level level_slayer_zombie = getLevel(Utils.getElement(leveling, "slayer_xp.zombie").getAsJsonArray(), experience_slayer_zombie, true); + Level level_slayer_spider = getLevel(Utils.getElement(leveling, "slayer_xp.spider").getAsJsonArray(), experience_slayer_spider, true); + Level level_slayer_wolf = getLevel(Utils.getElement(leveling, "slayer_xp.wolf").getAsJsonArray(), experience_slayer_wolf, true); + + skillInfo.addProperty("level_skill_taming", level_skill_taming.level); + skillInfo.addProperty("level_skill_mining", level_skill_mining.level); + skillInfo.addProperty("level_skill_foraging", level_skill_foraging.level); + skillInfo.addProperty("level_skill_enchanting", level_skill_enchanting.level); + skillInfo.addProperty("level_skill_carpentry", level_skill_carpentry.level); + skillInfo.addProperty("level_skill_farming", level_skill_farming.level); + skillInfo.addProperty("level_skill_combat", level_skill_combat.level); + skillInfo.addProperty("level_skill_fishing", level_skill_fishing.level); + skillInfo.addProperty("level_skill_alchemy", level_skill_alchemy.level); + skillInfo.addProperty("level_skill_runecrafting", level_skill_runecrafting.level); + + skillInfo.addProperty("level_slayer_zombie", level_slayer_zombie.level); + skillInfo.addProperty("level_slayer_spider", level_slayer_spider.level); + skillInfo.addProperty("level_slayer_wolf", level_slayer_wolf.level); + + skillInfo.addProperty("maxed_skill_taming", level_skill_taming.maxed); + skillInfo.addProperty("maxed_skill_mining", level_skill_mining.maxed); + skillInfo.addProperty("maxed_skill_foraging", level_skill_foraging.maxed); + skillInfo.addProperty("maxed_skill_enchanting", level_skill_enchanting.maxed); + skillInfo.addProperty("maxed_skill_carpentry", level_skill_carpentry.maxed); + skillInfo.addProperty("maxed_skill_farming", level_skill_farming.maxed); + skillInfo.addProperty("maxed_skill_combat", level_skill_combat.maxed); + skillInfo.addProperty("maxed_skill_fishing", level_skill_fishing.maxed); + skillInfo.addProperty("maxed_skill_alchemy", level_skill_alchemy.maxed); + skillInfo.addProperty("maxed_skill_runecrafting", level_skill_runecrafting.maxed); + + skillInfo.addProperty("maxed_slayer_zombie", level_slayer_zombie.maxed); + skillInfo.addProperty("maxed_slayer_spider", level_slayer_spider.maxed); + skillInfo.addProperty("maxed_slayer_wolf", level_slayer_wolf.maxed); + + skillInfo.addProperty("maxxp_skill_taming", level_skill_taming.maxXpForLevel); + skillInfo.addProperty("maxxp_skill_mining", level_skill_mining.maxXpForLevel); + skillInfo.addProperty("maxxp_skill_foraging", level_skill_foraging.maxXpForLevel); + skillInfo.addProperty("maxxp_skill_enchanting", level_skill_enchanting.maxXpForLevel); + skillInfo.addProperty("maxxp_skill_carpentry", level_skill_carpentry.maxXpForLevel); + skillInfo.addProperty("maxxp_skill_farming", level_skill_farming.maxXpForLevel); + skillInfo.addProperty("maxxp_skill_combat", level_skill_combat.maxXpForLevel); + skillInfo.addProperty("maxxp_skill_fishing", level_skill_fishing.maxXpForLevel); + skillInfo.addProperty("maxxp_skill_alchemy", level_skill_alchemy.maxXpForLevel); + skillInfo.addProperty("maxxp_skill_runecrafting", level_skill_runecrafting.maxXpForLevel); + + skillInfo.addProperty("maxxp_slayer_zombie", level_slayer_zombie.maxXpForLevel); + skillInfo.addProperty("maxxp_slayer_spider", level_slayer_spider.maxXpForLevel); + skillInfo.addProperty("maxxp_slayer_wolf", level_slayer_wolf.maxXpForLevel); return skillInfo; } @@ -300,10 +423,24 @@ public class ProfileViewer { return collectionInfo; } + public PlayerStats.Stats getPassiveStats(String profileId) { + if(passiveStats != null) return passiveStats; + JsonObject profileInfo = getProfileInformation(profileId); + if(profileInfo == null) return null; + + passiveStats = PlayerStats.getPassiveBonuses(getSkillInfo(profileId), profileInfo); + + if(passiveStats != null) { + passiveStats.add(PlayerStats.getBaseStats()); + } + + return passiveStats; + } + public PlayerStats.Stats getStats(String profileId) { if(stats != null) return stats; JsonObject profileInfo = getProfileInformation(profileId); - if(profileInfo == null) return PlayerStats.getBaseStats(); + if(profileInfo == null) return null; stats = PlayerStats.getStats(getSkillInfo(profileId), getInventoryInfo(profileId), getCollectionInfo(profileId), profileInfo); return stats; @@ -328,7 +465,9 @@ public class ProfileViewer { args.put("name", ""+name); manager.hypixelApi.getHypixelApiAsync(manager.config.apiKey.value, "player", args, jsonObject -> { - if(jsonObject.has("success") && jsonObject.get("success").getAsBoolean()) { + if(jsonObject == null) return; + + if(jsonObject.has("success") && jsonObject.get("success").getAsBoolean()) { nameToHypixelProfile.put(name, jsonObject.get("player").getAsJsonObject()); uuidToHypixelProfile.put(jsonObject.get("player").getAsJsonObject().get("uuid").getAsString(), jsonObject.get("player").getAsJsonObject()); if(callback != null) callback.accept(jsonObject); @@ -339,14 +478,15 @@ public class ProfileViewer { public Profile getProfileByName(String name, Consumer callback) { if(nameToHypixelProfile.containsKey(name)) { - return getProfileReset(nameToHypixelProfile.get(name).get("uuid").getAsString(), callback); + Profile profile = getProfileReset(nameToHypixelProfile.get(name).get("uuid").getAsString(), ignored -> {}); + callback.accept(profile); + return profile; } else { getHypixelProfile(name, jsonObject -> { - System.out.println("getting profile with callback"); - getProfileReset(jsonObject.get("player").getAsJsonObject().get("uuid").getAsString(), callback); + callback.accept(getProfileReset(jsonObject.get("player").getAsJsonObject().get("uuid").getAsString(), ignored -> {})); }); - return null; } + return null; } public Profile getProfile(String uuid, Consumer callback) { diff --git a/src/main/java/io/github/moulberry/notenoughupdates/questing/NEUQuesting.java b/src/main/java/io/github/moulberry/notenoughupdates/questing/NEUQuesting.java deleted file mode 100644 index 8be12c95..00000000 --- a/src/main/java/io/github/moulberry/notenoughupdates/questing/NEUQuesting.java +++ /dev/null @@ -1,67 +0,0 @@ -package io.github.moulberry.notenoughupdates.questing; - -import io.github.moulberry.notenoughupdates.NotEnoughUpdates; -import io.github.moulberry.notenoughupdates.util.Utils; -import net.minecraft.client.Minecraft; -import net.minecraft.scoreboard.Score; -import net.minecraft.scoreboard.ScoreObjective; -import net.minecraft.scoreboard.ScorePlayerTeam; -import net.minecraft.scoreboard.Scoreboard; -import net.minecraft.util.EnumChatFormatting; - -import java.io.File; -import java.io.IOException; -import java.io.PrintWriter; -import java.util.ArrayList; -import java.util.List; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -public class NEUQuesting { - - private static final NEUQuesting INSTANCE = new NEUQuesting(); - - private static final Pattern locationPattern = Pattern.compile("(\\u00a7)(?!.*\\u00a7).+"); - private static final Pattern timePattern = Pattern.compile(".+(am|pm)"); - - public String location = ""; - public String date = ""; - public String time = ""; - - public static NEUQuesting getInstance() { - return INSTANCE; - } - - public void tick() { - Scoreboard scoreboard = Minecraft.getMinecraft().thePlayer.getWorldScoreboard(); - - ScoreObjective sidebarObjective = scoreboard.getObjectiveInDisplaySlot(1); //§707/14/20 - - List scores = new ArrayList<>(); - for(Score score : scoreboard.getSortedScores(sidebarObjective)) { - scores.add(score); - } - List lines = new ArrayList<>(); - for(int i=scores.size()-1; i>=0; i--) { - Score score = scores.get(i); - ScorePlayerTeam scoreplayerteam1 = scoreboard.getPlayersTeam(score.getPlayerName()); - String line = ScorePlayerTeam.formatPlayerName(scoreplayerteam1, score.getPlayerName()); - line = Utils.cleanDuplicateColourCodes(line); - lines.add(line); - } - if(lines.size() >= 5) { - date = Utils.cleanColour(lines.get(2)).trim(); - //§74:40am - Matcher matcher = timePattern.matcher(lines.get(3)); - if(matcher.find()) { - time = Utils.cleanColour(matcher.group()).trim(); - } - matcher = locationPattern.matcher(lines.get(4)); - if(matcher.find()) { - location = Utils.cleanColour(matcher.group()).trim(); - } - } - //System.out.println(date + ":" + time + ":" + location); - } - -} diff --git a/src/main/java/io/github/moulberry/notenoughupdates/questing/SBScoreboardData.java b/src/main/java/io/github/moulberry/notenoughupdates/questing/SBScoreboardData.java new file mode 100644 index 00000000..89ec44cc --- /dev/null +++ b/src/main/java/io/github/moulberry/notenoughupdates/questing/SBScoreboardData.java @@ -0,0 +1,76 @@ +package io.github.moulberry.notenoughupdates.questing; + +import io.github.moulberry.notenoughupdates.util.Utils; +import net.minecraft.client.Minecraft; +import net.minecraft.scoreboard.Score; +import net.minecraft.scoreboard.ScoreObjective; +import net.minecraft.scoreboard.ScorePlayerTeam; +import net.minecraft.scoreboard.Scoreboard; + +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +public class SBScoreboardData { + + private static final SBScoreboardData INSTANCE = new SBScoreboardData(); + + private static final Pattern locationPattern = Pattern.compile("(\\u00a7)(?!.*\\u00a7).+"); + private static final Pattern timePattern = Pattern.compile(".+(am|pm)"); + + public String location = ""; + public String date = ""; + public String time = ""; + + public Date currentTimeDate = null; + + + public static SBScoreboardData getInstance() { + return INSTANCE; + } + + public void tick() { + try { + Scoreboard scoreboard = Minecraft.getMinecraft().thePlayer.getWorldScoreboard(); + + ScoreObjective sidebarObjective = scoreboard.getObjectiveInDisplaySlot(1); //§707/14/20 + + List scores = new ArrayList<>(); + for(Score score : scoreboard.getSortedScores(sidebarObjective)) { + scores.add(score); + } + List lines = new ArrayList<>(); + for(int i=scores.size()-1; i>=0; i--) { + Score score = scores.get(i); + ScorePlayerTeam scoreplayerteam1 = scoreboard.getPlayersTeam(score.getPlayerName()); + String line = ScorePlayerTeam.formatPlayerName(scoreplayerteam1, score.getPlayerName()); + line = Utils.cleanDuplicateColourCodes(line); + lines.add(line); + } + if(lines.size() >= 5) { + date = Utils.cleanColour(lines.get(2)).trim(); + //§74:40am + Matcher matcher = timePattern.matcher(lines.get(3)); + if(matcher.find()) { + time = Utils.cleanColour(matcher.group()).trim(); + + try { + String timeSpace = time.replace("am", " am").replace("pm", " pm"); + SimpleDateFormat parseFormat = new SimpleDateFormat("hh:mm a"); + currentTimeDate = parseFormat.parse(timeSpace); + } catch (ParseException e) {} + } + matcher = locationPattern.matcher(lines.get(4)); + if(matcher.find()) { + location = Utils.cleanColour(matcher.group()).trim(); + } + } + } catch(Exception e) {} + //System.out.println(date + ":" + time + ":" + location); + } + +} diff --git a/src/main/java/io/github/moulberry/notenoughupdates/questing/requirements/RequirementApi.java b/src/main/java/io/github/moulberry/notenoughupdates/questing/requirements/RequirementApi.java index 27f9f293..a53ed56b 100644 --- a/src/main/java/io/github/moulberry/notenoughupdates/questing/requirements/RequirementApi.java +++ b/src/main/java/io/github/moulberry/notenoughupdates/questing/requirements/RequirementApi.java @@ -3,10 +3,8 @@ package io.github.moulberry.notenoughupdates.questing.requirements; import com.google.common.base.Splitter; import com.google.gson.*; import io.github.moulberry.notenoughupdates.NotEnoughUpdates; -import io.github.moulberry.notenoughupdates.questing.NEUQuesting; import java.util.List; -import java.util.Map; public class RequirementApi extends Requirement { diff --git a/src/main/java/io/github/moulberry/notenoughupdates/questing/requirements/RequirementIslandType.java b/src/main/java/io/github/moulberry/notenoughupdates/questing/requirements/RequirementIslandType.java index 5ee005f5..319bc1b6 100644 --- a/src/main/java/io/github/moulberry/notenoughupdates/questing/requirements/RequirementIslandType.java +++ b/src/main/java/io/github/moulberry/notenoughupdates/questing/requirements/RequirementIslandType.java @@ -1,6 +1,6 @@ package io.github.moulberry.notenoughupdates.questing.requirements; -import io.github.moulberry.notenoughupdates.questing.NEUQuesting; +import io.github.moulberry.notenoughupdates.questing.SBScoreboardData; public class RequirementIslandType extends Requirement { @@ -14,6 +14,6 @@ public class RequirementIslandType extends Requirement { @Override public void updateRequirement() { - completed = islandType.equalsIgnoreCase(NEUQuesting.getInstance().location); + completed = islandType.equalsIgnoreCase(SBScoreboardData.getInstance().location); } } diff --git a/src/main/java/io/github/moulberry/notenoughupdates/util/HypixelApi.java b/src/main/java/io/github/moulberry/notenoughupdates/util/HypixelApi.java index 133619ae..05351629 100644 --- a/src/main/java/io/github/moulberry/notenoughupdates/util/HypixelApi.java +++ b/src/main/java/io/github/moulberry/notenoughupdates/util/HypixelApi.java @@ -27,24 +27,28 @@ public class HypixelApi { private ExecutorService es = Executors.newCachedThreadPool(); public void getHypixelApiAsync(String apiKey, String method, HashMap args, Consumer consumer) { - getHypixelApiAsync(generateApiUrl(apiKey.trim(), method, args), consumer); + getHypixelApiAsync(apiKey, method, args, consumer, () -> {}); } - public void getHypixelApiAsync(String urlS, Consumer consumer) { + public void getHypixelApiAsync(String apiKey, String method, HashMap args, Consumer consumer, Runnable error) { + getHypixelApiAsync(generateApiUrl(apiKey.trim(), method, args), consumer, error); + } + + public void getHypixelApiAsync(String urlS, Consumer consumer, Runnable error) { es.submit(() -> { - consumer.accept(getHypixelApiSync(urlS)); + try { + consumer.accept(getHypixelApiSync(urlS)); + } catch(IOException e) { + error.run(); + } }); } - public JsonObject getHypixelApiSync(String urlS) { - URLConnection connection; - try { - URL url = new URL(urlS); - connection = url.openConnection(); - connection.setConnectTimeout(3000); - } catch(IOException e) { - return null; - } + public JsonObject getHypixelApiSync(String urlS) throws IOException { + + URL url = new URL(urlS); + URLConnection connection = url.openConnection(); + connection.setConnectTimeout(3000); try(BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream(), StandardCharsets.UTF_8))) { StringBuilder builder = new StringBuilder(); @@ -56,8 +60,6 @@ public class HypixelApi { JsonObject json = gson.fromJson(response, JsonObject.class); return json; - } catch(IOException e) { - return null; } } diff --git a/src/main/java/io/github/moulberry/notenoughupdates/util/Utils.java b/src/main/java/io/github/moulberry/notenoughupdates/util/Utils.java index 66400c00..5fe96aae 100644 --- a/src/main/java/io/github/moulberry/notenoughupdates/util/Utils.java +++ b/src/main/java/io/github/moulberry/notenoughupdates/util/Utils.java @@ -13,13 +13,18 @@ import net.minecraft.client.Minecraft; import net.minecraft.client.audio.PositionedSoundRecord; import net.minecraft.client.audio.SoundHandler; import net.minecraft.client.gui.FontRenderer; +import net.minecraft.client.gui.ScaledResolution; import net.minecraft.client.gui.inventory.GuiContainer; import net.minecraft.client.renderer.GlStateManager; import net.minecraft.client.renderer.RenderHelper; import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.WorldRenderer; +import net.minecraft.client.renderer.block.model.ItemCameraTransforms; import net.minecraft.client.renderer.entity.RenderItem; +import net.minecraft.client.renderer.texture.DynamicTexture; +import net.minecraft.client.renderer.texture.TextureMap; import net.minecraft.client.renderer.vertex.DefaultVertexFormats; +import net.minecraft.client.resources.model.IBakedModel; import net.minecraft.event.ClickEvent; import net.minecraft.event.HoverEvent; import net.minecraft.inventory.Slot; @@ -33,6 +38,7 @@ import net.minecraft.util.*; import org.lwjgl.input.Keyboard; import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL14; +import org.lwjgl.util.glu.Project; import javax.swing.*; import java.awt.*; @@ -89,6 +95,80 @@ public class Utils { RenderHelper.disableStandardItemLighting(); } + private static final EnumChatFormatting[] rainbow = new EnumChatFormatting[]{ + EnumChatFormatting.RED, + EnumChatFormatting.GOLD, + EnumChatFormatting.YELLOW, + EnumChatFormatting.GREEN, + EnumChatFormatting.AQUA, + EnumChatFormatting.LIGHT_PURPLE, + EnumChatFormatting.DARK_PURPLE + }; + + public static String chromaString(String str) { + long currentTimeMillis = System.currentTimeMillis(); + + StringBuilder rainbowText = new StringBuilder(); + for(int i=0; i clazz, Class[] params, String... methodNames) { for(String methodName : methodNames) { try { @@ -281,6 +361,15 @@ public class Utils { drawStringScaled(str, fr, x, y-fontHeight/2, shadow, colour, factor); } + public static void drawStringCenteredYScaledMaxWidth(String str, FontRenderer fr, float x, float y, boolean shadow, int len, int colour) { + int strLen = fr.getStringWidth(str); + float factor = len/(float)strLen; + factor = Math.min(1, factor); + float fontHeight = 8*factor; + + drawStringScaled(str, fr, x, y-fontHeight/2, shadow, colour, factor); + } + public static int renderStringTrimWidth(String str, FontRenderer fr, boolean shadow, int x, int y, int len, int colour, int maxLines) { return renderStringTrimWidth(str, fr, shadow, x, y, len, colour, maxLines, 1); } diff --git a/src/main/resources/assets/notenoughupdates/panoramas/combat_1_day/panorama_0.png b/src/main/resources/assets/notenoughupdates/panoramas/combat_1_day/panorama_0.png new file mode 100644 index 00000000..45c266a4 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/combat_1_day/panorama_0.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/combat_1_day/panorama_1.png b/src/main/resources/assets/notenoughupdates/panoramas/combat_1_day/panorama_1.png new file mode 100644 index 00000000..27c7e6e5 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/combat_1_day/panorama_1.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/combat_1_day/panorama_2.png b/src/main/resources/assets/notenoughupdates/panoramas/combat_1_day/panorama_2.png new file mode 100644 index 00000000..1802f46d Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/combat_1_day/panorama_2.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/combat_1_day/panorama_3.png b/src/main/resources/assets/notenoughupdates/panoramas/combat_1_day/panorama_3.png new file mode 100644 index 00000000..16eb6335 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/combat_1_day/panorama_3.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/combat_1_day/panorama_4.png b/src/main/resources/assets/notenoughupdates/panoramas/combat_1_day/panorama_4.png new file mode 100644 index 00000000..63c6686e Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/combat_1_day/panorama_4.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/combat_1_day/panorama_5.png b/src/main/resources/assets/notenoughupdates/panoramas/combat_1_day/panorama_5.png new file mode 100644 index 00000000..aead2717 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/combat_1_day/panorama_5.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/combat_1_night/panorama_0.png b/src/main/resources/assets/notenoughupdates/panoramas/combat_1_night/panorama_0.png new file mode 100644 index 00000000..b3720818 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/combat_1_night/panorama_0.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/combat_1_night/panorama_1.png b/src/main/resources/assets/notenoughupdates/panoramas/combat_1_night/panorama_1.png new file mode 100644 index 00000000..8c76d9c2 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/combat_1_night/panorama_1.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/combat_1_night/panorama_2.png b/src/main/resources/assets/notenoughupdates/panoramas/combat_1_night/panorama_2.png new file mode 100644 index 00000000..69d75e84 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/combat_1_night/panorama_2.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/combat_1_night/panorama_3.png b/src/main/resources/assets/notenoughupdates/panoramas/combat_1_night/panorama_3.png new file mode 100644 index 00000000..9dfa063b Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/combat_1_night/panorama_3.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/combat_1_night/panorama_4.png b/src/main/resources/assets/notenoughupdates/panoramas/combat_1_night/panorama_4.png new file mode 100644 index 00000000..da9f1f2b Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/combat_1_night/panorama_4.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/combat_1_night/panorama_5.png b/src/main/resources/assets/notenoughupdates/panoramas/combat_1_night/panorama_5.png new file mode 100644 index 00000000..0d4e4702 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/combat_1_night/panorama_5.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/combat_2_day/panorama_0.png b/src/main/resources/assets/notenoughupdates/panoramas/combat_2_day/panorama_0.png new file mode 100644 index 00000000..58193e89 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/combat_2_day/panorama_0.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/combat_2_day/panorama_1.png b/src/main/resources/assets/notenoughupdates/panoramas/combat_2_day/panorama_1.png new file mode 100644 index 00000000..f0f5d8f3 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/combat_2_day/panorama_1.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/combat_2_day/panorama_2.png b/src/main/resources/assets/notenoughupdates/panoramas/combat_2_day/panorama_2.png new file mode 100644 index 00000000..6905f1de Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/combat_2_day/panorama_2.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/combat_2_day/panorama_3.png b/src/main/resources/assets/notenoughupdates/panoramas/combat_2_day/panorama_3.png new file mode 100644 index 00000000..baaf374a Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/combat_2_day/panorama_3.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/combat_2_day/panorama_4.png b/src/main/resources/assets/notenoughupdates/panoramas/combat_2_day/panorama_4.png new file mode 100644 index 00000000..976bea03 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/combat_2_day/panorama_4.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/combat_2_day/panorama_5.png b/src/main/resources/assets/notenoughupdates/panoramas/combat_2_day/panorama_5.png new file mode 100644 index 00000000..140ae13b Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/combat_2_day/panorama_5.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/combat_2_night/panorama_0.png b/src/main/resources/assets/notenoughupdates/panoramas/combat_2_night/panorama_0.png new file mode 100644 index 00000000..e2870888 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/combat_2_night/panorama_0.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/combat_2_night/panorama_1.png b/src/main/resources/assets/notenoughupdates/panoramas/combat_2_night/panorama_1.png new file mode 100644 index 00000000..8b922268 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/combat_2_night/panorama_1.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/combat_2_night/panorama_2.png b/src/main/resources/assets/notenoughupdates/panoramas/combat_2_night/panorama_2.png new file mode 100644 index 00000000..bb96f17d Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/combat_2_night/panorama_2.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/combat_2_night/panorama_3.png b/src/main/resources/assets/notenoughupdates/panoramas/combat_2_night/panorama_3.png new file mode 100644 index 00000000..1371adc2 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/combat_2_night/panorama_3.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/combat_2_night/panorama_4.png b/src/main/resources/assets/notenoughupdates/panoramas/combat_2_night/panorama_4.png new file mode 100644 index 00000000..88d41995 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/combat_2_night/panorama_4.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/combat_2_night/panorama_5.png b/src/main/resources/assets/notenoughupdates/panoramas/combat_2_night/panorama_5.png new file mode 100644 index 00000000..569f9b00 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/combat_2_night/panorama_5.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/combat_3_day/panorama_0.png b/src/main/resources/assets/notenoughupdates/panoramas/combat_3_day/panorama_0.png new file mode 100644 index 00000000..775021fb Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/combat_3_day/panorama_0.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/combat_3_day/panorama_1.png b/src/main/resources/assets/notenoughupdates/panoramas/combat_3_day/panorama_1.png new file mode 100644 index 00000000..687741e0 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/combat_3_day/panorama_1.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/combat_3_day/panorama_2.png b/src/main/resources/assets/notenoughupdates/panoramas/combat_3_day/panorama_2.png new file mode 100644 index 00000000..a9667bc0 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/combat_3_day/panorama_2.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/combat_3_day/panorama_3.png b/src/main/resources/assets/notenoughupdates/panoramas/combat_3_day/panorama_3.png new file mode 100644 index 00000000..0ed0309f Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/combat_3_day/panorama_3.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/combat_3_day/panorama_4.png b/src/main/resources/assets/notenoughupdates/panoramas/combat_3_day/panorama_4.png new file mode 100644 index 00000000..855c0fb3 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/combat_3_day/panorama_4.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/combat_3_day/panorama_5.png b/src/main/resources/assets/notenoughupdates/panoramas/combat_3_day/panorama_5.png new file mode 100644 index 00000000..fd2f1828 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/combat_3_day/panorama_5.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/combat_3_night/panorama_0.png b/src/main/resources/assets/notenoughupdates/panoramas/combat_3_night/panorama_0.png new file mode 100644 index 00000000..693dc7a1 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/combat_3_night/panorama_0.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/combat_3_night/panorama_1.png b/src/main/resources/assets/notenoughupdates/panoramas/combat_3_night/panorama_1.png new file mode 100644 index 00000000..6294f539 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/combat_3_night/panorama_1.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/combat_3_night/panorama_2.png b/src/main/resources/assets/notenoughupdates/panoramas/combat_3_night/panorama_2.png new file mode 100644 index 00000000..3c9c3be5 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/combat_3_night/panorama_2.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/combat_3_night/panorama_3.png b/src/main/resources/assets/notenoughupdates/panoramas/combat_3_night/panorama_3.png new file mode 100644 index 00000000..5c8d2256 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/combat_3_night/panorama_3.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/combat_3_night/panorama_4.png b/src/main/resources/assets/notenoughupdates/panoramas/combat_3_night/panorama_4.png new file mode 100644 index 00000000..27cea30b Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/combat_3_night/panorama_4.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/combat_3_night/panorama_5.png b/src/main/resources/assets/notenoughupdates/panoramas/combat_3_night/panorama_5.png new file mode 100644 index 00000000..08de77f1 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/combat_3_night/panorama_5.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/dark_auction/panorama_0.png b/src/main/resources/assets/notenoughupdates/panoramas/dark_auction/panorama_0.png new file mode 100644 index 00000000..3d34b9c0 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/dark_auction/panorama_0.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/dark_auction/panorama_1.png b/src/main/resources/assets/notenoughupdates/panoramas/dark_auction/panorama_1.png new file mode 100644 index 00000000..dff319d4 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/dark_auction/panorama_1.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/dark_auction/panorama_2.png b/src/main/resources/assets/notenoughupdates/panoramas/dark_auction/panorama_2.png new file mode 100644 index 00000000..3c9260c0 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/dark_auction/panorama_2.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/dark_auction/panorama_3.png b/src/main/resources/assets/notenoughupdates/panoramas/dark_auction/panorama_3.png new file mode 100644 index 00000000..04bb6391 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/dark_auction/panorama_3.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/dark_auction/panorama_4.png b/src/main/resources/assets/notenoughupdates/panoramas/dark_auction/panorama_4.png new file mode 100644 index 00000000..e530dbe4 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/dark_auction/panorama_4.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/dark_auction/panorama_5.png b/src/main/resources/assets/notenoughupdates/panoramas/dark_auction/panorama_5.png new file mode 100644 index 00000000..e34de57e Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/dark_auction/panorama_5.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/dungeon/panorama_0.png b/src/main/resources/assets/notenoughupdates/panoramas/dungeon/panorama_0.png new file mode 100644 index 00000000..6efddb7d Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/dungeon/panorama_0.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/dungeon/panorama_1.png b/src/main/resources/assets/notenoughupdates/panoramas/dungeon/panorama_1.png new file mode 100644 index 00000000..e6b8b0f0 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/dungeon/panorama_1.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/dungeon/panorama_2.png b/src/main/resources/assets/notenoughupdates/panoramas/dungeon/panorama_2.png new file mode 100644 index 00000000..5cbd1130 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/dungeon/panorama_2.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/dungeon/panorama_3.png b/src/main/resources/assets/notenoughupdates/panoramas/dungeon/panorama_3.png new file mode 100644 index 00000000..bfb5b6ea Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/dungeon/panorama_3.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/dungeon/panorama_4.png b/src/main/resources/assets/notenoughupdates/panoramas/dungeon/panorama_4.png new file mode 100644 index 00000000..76b83fa8 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/dungeon/panorama_4.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/dungeon/panorama_5.png b/src/main/resources/assets/notenoughupdates/panoramas/dungeon/panorama_5.png new file mode 100644 index 00000000..522db81f Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/dungeon/panorama_5.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/dungeon_hub/panorama_0.png b/src/main/resources/assets/notenoughupdates/panoramas/dungeon_hub/panorama_0.png new file mode 100644 index 00000000..6efddb7d Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/dungeon_hub/panorama_0.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/dungeon_hub/panorama_1.png b/src/main/resources/assets/notenoughupdates/panoramas/dungeon_hub/panorama_1.png new file mode 100644 index 00000000..e6b8b0f0 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/dungeon_hub/panorama_1.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/dungeon_hub/panorama_2.png b/src/main/resources/assets/notenoughupdates/panoramas/dungeon_hub/panorama_2.png new file mode 100644 index 00000000..5cbd1130 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/dungeon_hub/panorama_2.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/dungeon_hub/panorama_3.png b/src/main/resources/assets/notenoughupdates/panoramas/dungeon_hub/panorama_3.png new file mode 100644 index 00000000..bfb5b6ea Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/dungeon_hub/panorama_3.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/dungeon_hub/panorama_4.png b/src/main/resources/assets/notenoughupdates/panoramas/dungeon_hub/panorama_4.png new file mode 100644 index 00000000..76b83fa8 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/dungeon_hub/panorama_4.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/dungeon_hub/panorama_5.png b/src/main/resources/assets/notenoughupdates/panoramas/dungeon_hub/panorama_5.png new file mode 100644 index 00000000..522db81f Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/dungeon_hub/panorama_5.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/dynamic_day/panorama_0.png b/src/main/resources/assets/notenoughupdates/panoramas/dynamic_day/panorama_0.png new file mode 100644 index 00000000..b965bf11 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/dynamic_day/panorama_0.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/dynamic_day/panorama_1.png b/src/main/resources/assets/notenoughupdates/panoramas/dynamic_day/panorama_1.png new file mode 100644 index 00000000..090ce488 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/dynamic_day/panorama_1.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/dynamic_day/panorama_2.png b/src/main/resources/assets/notenoughupdates/panoramas/dynamic_day/panorama_2.png new file mode 100644 index 00000000..8d146dcc Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/dynamic_day/panorama_2.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/dynamic_day/panorama_3.png b/src/main/resources/assets/notenoughupdates/panoramas/dynamic_day/panorama_3.png new file mode 100644 index 00000000..e7ec0f8c Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/dynamic_day/panorama_3.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/dynamic_day/panorama_4.png b/src/main/resources/assets/notenoughupdates/panoramas/dynamic_day/panorama_4.png new file mode 100644 index 00000000..cf19ee51 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/dynamic_day/panorama_4.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/dynamic_day/panorama_5.png b/src/main/resources/assets/notenoughupdates/panoramas/dynamic_day/panorama_5.png new file mode 100644 index 00000000..fa489b5b Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/dynamic_day/panorama_5.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/dynamic_night/panorama_0.png b/src/main/resources/assets/notenoughupdates/panoramas/dynamic_night/panorama_0.png new file mode 100644 index 00000000..d5a0d326 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/dynamic_night/panorama_0.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/dynamic_night/panorama_1.png b/src/main/resources/assets/notenoughupdates/panoramas/dynamic_night/panorama_1.png new file mode 100644 index 00000000..508ca40d Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/dynamic_night/panorama_1.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/dynamic_night/panorama_2.png b/src/main/resources/assets/notenoughupdates/panoramas/dynamic_night/panorama_2.png new file mode 100644 index 00000000..b2bb4554 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/dynamic_night/panorama_2.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/dynamic_night/panorama_3.png b/src/main/resources/assets/notenoughupdates/panoramas/dynamic_night/panorama_3.png new file mode 100644 index 00000000..8e02189f Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/dynamic_night/panorama_3.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/dynamic_night/panorama_4.png b/src/main/resources/assets/notenoughupdates/panoramas/dynamic_night/panorama_4.png new file mode 100644 index 00000000..c4884e35 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/dynamic_night/panorama_4.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/dynamic_night/panorama_5.png b/src/main/resources/assets/notenoughupdates/panoramas/dynamic_night/panorama_5.png new file mode 100644 index 00000000..3a84542a Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/dynamic_night/panorama_5.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/farming_1_day/panorama_0.png b/src/main/resources/assets/notenoughupdates/panoramas/farming_1_day/panorama_0.png new file mode 100644 index 00000000..aa29d196 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/farming_1_day/panorama_0.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/farming_1_day/panorama_1.png b/src/main/resources/assets/notenoughupdates/panoramas/farming_1_day/panorama_1.png new file mode 100644 index 00000000..4f08df59 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/farming_1_day/panorama_1.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/farming_1_day/panorama_2.png b/src/main/resources/assets/notenoughupdates/panoramas/farming_1_day/panorama_2.png new file mode 100644 index 00000000..9a260767 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/farming_1_day/panorama_2.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/farming_1_day/panorama_3.png b/src/main/resources/assets/notenoughupdates/panoramas/farming_1_day/panorama_3.png new file mode 100644 index 00000000..d07ee5cf Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/farming_1_day/panorama_3.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/farming_1_day/panorama_4.png b/src/main/resources/assets/notenoughupdates/panoramas/farming_1_day/panorama_4.png new file mode 100644 index 00000000..c4fe2e62 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/farming_1_day/panorama_4.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/farming_1_day/panorama_5.png b/src/main/resources/assets/notenoughupdates/panoramas/farming_1_day/panorama_5.png new file mode 100644 index 00000000..99f4d13a Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/farming_1_day/panorama_5.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/farming_1_night/panorama_0.png b/src/main/resources/assets/notenoughupdates/panoramas/farming_1_night/panorama_0.png new file mode 100644 index 00000000..a26a4899 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/farming_1_night/panorama_0.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/farming_1_night/panorama_1.png b/src/main/resources/assets/notenoughupdates/panoramas/farming_1_night/panorama_1.png new file mode 100644 index 00000000..f2461236 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/farming_1_night/panorama_1.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/farming_1_night/panorama_2.png b/src/main/resources/assets/notenoughupdates/panoramas/farming_1_night/panorama_2.png new file mode 100644 index 00000000..f70bad58 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/farming_1_night/panorama_2.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/farming_1_night/panorama_3.png b/src/main/resources/assets/notenoughupdates/panoramas/farming_1_night/panorama_3.png new file mode 100644 index 00000000..09fe998c Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/farming_1_night/panorama_3.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/farming_1_night/panorama_4.png b/src/main/resources/assets/notenoughupdates/panoramas/farming_1_night/panorama_4.png new file mode 100644 index 00000000..ca0e6bb2 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/farming_1_night/panorama_4.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/farming_1_night/panorama_5.png b/src/main/resources/assets/notenoughupdates/panoramas/farming_1_night/panorama_5.png new file mode 100644 index 00000000..e3b7ca22 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/farming_1_night/panorama_5.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/farming_2_day/panorama_0.png b/src/main/resources/assets/notenoughupdates/panoramas/farming_2_day/panorama_0.png new file mode 100644 index 00000000..119ef422 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/farming_2_day/panorama_0.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/farming_2_day/panorama_1.png b/src/main/resources/assets/notenoughupdates/panoramas/farming_2_day/panorama_1.png new file mode 100644 index 00000000..4182d4ed Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/farming_2_day/panorama_1.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/farming_2_day/panorama_2.png b/src/main/resources/assets/notenoughupdates/panoramas/farming_2_day/panorama_2.png new file mode 100644 index 00000000..339ee33d Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/farming_2_day/panorama_2.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/farming_2_day/panorama_3.png b/src/main/resources/assets/notenoughupdates/panoramas/farming_2_day/panorama_3.png new file mode 100644 index 00000000..30229f16 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/farming_2_day/panorama_3.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/farming_2_day/panorama_4.png b/src/main/resources/assets/notenoughupdates/panoramas/farming_2_day/panorama_4.png new file mode 100644 index 00000000..c4047c85 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/farming_2_day/panorama_4.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/farming_2_day/panorama_5.png b/src/main/resources/assets/notenoughupdates/panoramas/farming_2_day/panorama_5.png new file mode 100644 index 00000000..7473e4c3 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/farming_2_day/panorama_5.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/farming_2_night/panorama_0.png b/src/main/resources/assets/notenoughupdates/panoramas/farming_2_night/panorama_0.png new file mode 100644 index 00000000..89d1187b Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/farming_2_night/panorama_0.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/farming_2_night/panorama_1.png b/src/main/resources/assets/notenoughupdates/panoramas/farming_2_night/panorama_1.png new file mode 100644 index 00000000..32c0d4fb Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/farming_2_night/panorama_1.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/farming_2_night/panorama_2.png b/src/main/resources/assets/notenoughupdates/panoramas/farming_2_night/panorama_2.png new file mode 100644 index 00000000..9aba96d7 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/farming_2_night/panorama_2.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/farming_2_night/panorama_3.png b/src/main/resources/assets/notenoughupdates/panoramas/farming_2_night/panorama_3.png new file mode 100644 index 00000000..ba3e3405 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/farming_2_night/panorama_3.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/farming_2_night/panorama_4.png b/src/main/resources/assets/notenoughupdates/panoramas/farming_2_night/panorama_4.png new file mode 100644 index 00000000..d0a821a2 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/farming_2_night/panorama_4.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/farming_2_night/panorama_5.png b/src/main/resources/assets/notenoughupdates/panoramas/farming_2_night/panorama_5.png new file mode 100644 index 00000000..4c5af604 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/farming_2_night/panorama_5.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/foraging_1_day/panorama_0.png b/src/main/resources/assets/notenoughupdates/panoramas/foraging_1_day/panorama_0.png new file mode 100644 index 00000000..9f10e34e Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/foraging_1_day/panorama_0.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/foraging_1_day/panorama_1.png b/src/main/resources/assets/notenoughupdates/panoramas/foraging_1_day/panorama_1.png new file mode 100644 index 00000000..b3f06ebe Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/foraging_1_day/panorama_1.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/foraging_1_day/panorama_2.png b/src/main/resources/assets/notenoughupdates/panoramas/foraging_1_day/panorama_2.png new file mode 100644 index 00000000..2e28c95a Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/foraging_1_day/panorama_2.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/foraging_1_day/panorama_3.png b/src/main/resources/assets/notenoughupdates/panoramas/foraging_1_day/panorama_3.png new file mode 100644 index 00000000..b83064c4 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/foraging_1_day/panorama_3.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/foraging_1_day/panorama_4.png b/src/main/resources/assets/notenoughupdates/panoramas/foraging_1_day/panorama_4.png new file mode 100644 index 00000000..e8e30ed2 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/foraging_1_day/panorama_4.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/foraging_1_day/panorama_5.png b/src/main/resources/assets/notenoughupdates/panoramas/foraging_1_day/panorama_5.png new file mode 100644 index 00000000..627f2a65 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/foraging_1_day/panorama_5.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/foraging_1_night/panorama_0.png b/src/main/resources/assets/notenoughupdates/panoramas/foraging_1_night/panorama_0.png new file mode 100644 index 00000000..fec494fa Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/foraging_1_night/panorama_0.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/foraging_1_night/panorama_1.png b/src/main/resources/assets/notenoughupdates/panoramas/foraging_1_night/panorama_1.png new file mode 100644 index 00000000..a294b712 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/foraging_1_night/panorama_1.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/foraging_1_night/panorama_2.png b/src/main/resources/assets/notenoughupdates/panoramas/foraging_1_night/panorama_2.png new file mode 100644 index 00000000..ac53acc0 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/foraging_1_night/panorama_2.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/foraging_1_night/panorama_3.png b/src/main/resources/assets/notenoughupdates/panoramas/foraging_1_night/panorama_3.png new file mode 100644 index 00000000..f6034c0c Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/foraging_1_night/panorama_3.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/foraging_1_night/panorama_4.png b/src/main/resources/assets/notenoughupdates/panoramas/foraging_1_night/panorama_4.png new file mode 100644 index 00000000..cff34967 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/foraging_1_night/panorama_4.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/foraging_1_night/panorama_5.png b/src/main/resources/assets/notenoughupdates/panoramas/foraging_1_night/panorama_5.png new file mode 100644 index 00000000..d6c9e00f Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/foraging_1_night/panorama_5.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/hub_day/panorama_0.png b/src/main/resources/assets/notenoughupdates/panoramas/hub_day/panorama_0.png new file mode 100644 index 00000000..bc5d267d Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/hub_day/panorama_0.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/hub_day/panorama_1.png b/src/main/resources/assets/notenoughupdates/panoramas/hub_day/panorama_1.png new file mode 100644 index 00000000..a8456990 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/hub_day/panorama_1.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/hub_day/panorama_2.png b/src/main/resources/assets/notenoughupdates/panoramas/hub_day/panorama_2.png new file mode 100644 index 00000000..d3b1f6bc Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/hub_day/panorama_2.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/hub_day/panorama_3.png b/src/main/resources/assets/notenoughupdates/panoramas/hub_day/panorama_3.png new file mode 100644 index 00000000..4aa95968 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/hub_day/panorama_3.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/hub_day/panorama_4.png b/src/main/resources/assets/notenoughupdates/panoramas/hub_day/panorama_4.png new file mode 100644 index 00000000..ceae59a6 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/hub_day/panorama_4.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/hub_day/panorama_5.png b/src/main/resources/assets/notenoughupdates/panoramas/hub_day/panorama_5.png new file mode 100644 index 00000000..8e2dc590 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/hub_day/panorama_5.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/hub_night/panorama_0.png b/src/main/resources/assets/notenoughupdates/panoramas/hub_night/panorama_0.png new file mode 100644 index 00000000..ba98e8df Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/hub_night/panorama_0.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/hub_night/panorama_1.png b/src/main/resources/assets/notenoughupdates/panoramas/hub_night/panorama_1.png new file mode 100644 index 00000000..2d4edc17 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/hub_night/panorama_1.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/hub_night/panorama_2.png b/src/main/resources/assets/notenoughupdates/panoramas/hub_night/panorama_2.png new file mode 100644 index 00000000..dfc12e33 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/hub_night/panorama_2.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/hub_night/panorama_3.png b/src/main/resources/assets/notenoughupdates/panoramas/hub_night/panorama_3.png new file mode 100644 index 00000000..7230ded4 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/hub_night/panorama_3.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/hub_night/panorama_4.png b/src/main/resources/assets/notenoughupdates/panoramas/hub_night/panorama_4.png new file mode 100644 index 00000000..28b16a4a Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/hub_night/panorama_4.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/hub_night/panorama_5.png b/src/main/resources/assets/notenoughupdates/panoramas/hub_night/panorama_5.png new file mode 100644 index 00000000..1d9daa59 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/hub_night/panorama_5.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/mining_1_day/panorama_0.png b/src/main/resources/assets/notenoughupdates/panoramas/mining_1_day/panorama_0.png new file mode 100644 index 00000000..8e6c5146 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/mining_1_day/panorama_0.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/mining_1_day/panorama_1.png b/src/main/resources/assets/notenoughupdates/panoramas/mining_1_day/panorama_1.png new file mode 100644 index 00000000..11541940 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/mining_1_day/panorama_1.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/mining_1_day/panorama_2.png b/src/main/resources/assets/notenoughupdates/panoramas/mining_1_day/panorama_2.png new file mode 100644 index 00000000..7957ddc9 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/mining_1_day/panorama_2.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/mining_1_day/panorama_3.png b/src/main/resources/assets/notenoughupdates/panoramas/mining_1_day/panorama_3.png new file mode 100644 index 00000000..07d22a5f Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/mining_1_day/panorama_3.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/mining_1_day/panorama_4.png b/src/main/resources/assets/notenoughupdates/panoramas/mining_1_day/panorama_4.png new file mode 100644 index 00000000..88908d3a Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/mining_1_day/panorama_4.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/mining_1_day/panorama_5.png b/src/main/resources/assets/notenoughupdates/panoramas/mining_1_day/panorama_5.png new file mode 100644 index 00000000..da740bed Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/mining_1_day/panorama_5.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/mining_1_night/panorama_0.png b/src/main/resources/assets/notenoughupdates/panoramas/mining_1_night/panorama_0.png new file mode 100644 index 00000000..0fd56624 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/mining_1_night/panorama_0.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/mining_1_night/panorama_1.png b/src/main/resources/assets/notenoughupdates/panoramas/mining_1_night/panorama_1.png new file mode 100644 index 00000000..e350e3f9 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/mining_1_night/panorama_1.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/mining_1_night/panorama_2.png b/src/main/resources/assets/notenoughupdates/panoramas/mining_1_night/panorama_2.png new file mode 100644 index 00000000..5539d6c4 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/mining_1_night/panorama_2.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/mining_1_night/panorama_3.png b/src/main/resources/assets/notenoughupdates/panoramas/mining_1_night/panorama_3.png new file mode 100644 index 00000000..10c50d3c Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/mining_1_night/panorama_3.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/mining_1_night/panorama_4.png b/src/main/resources/assets/notenoughupdates/panoramas/mining_1_night/panorama_4.png new file mode 100644 index 00000000..e04012e1 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/mining_1_night/panorama_4.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/mining_1_night/panorama_5.png b/src/main/resources/assets/notenoughupdates/panoramas/mining_1_night/panorama_5.png new file mode 100644 index 00000000..bd9f5291 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/mining_1_night/panorama_5.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/mining_2/panorama_0.png b/src/main/resources/assets/notenoughupdates/panoramas/mining_2/panorama_0.png new file mode 100644 index 00000000..06969c2a Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/mining_2/panorama_0.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/mining_2/panorama_1.png b/src/main/resources/assets/notenoughupdates/panoramas/mining_2/panorama_1.png new file mode 100644 index 00000000..4053ce7c Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/mining_2/panorama_1.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/mining_2/panorama_2.png b/src/main/resources/assets/notenoughupdates/panoramas/mining_2/panorama_2.png new file mode 100644 index 00000000..c583aee2 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/mining_2/panorama_2.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/mining_2/panorama_3.png b/src/main/resources/assets/notenoughupdates/panoramas/mining_2/panorama_3.png new file mode 100644 index 00000000..afacdf61 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/mining_2/panorama_3.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/mining_2/panorama_4.png b/src/main/resources/assets/notenoughupdates/panoramas/mining_2/panorama_4.png new file mode 100644 index 00000000..52b27e94 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/mining_2/panorama_4.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/mining_2/panorama_5.png b/src/main/resources/assets/notenoughupdates/panoramas/mining_2/panorama_5.png new file mode 100644 index 00000000..bb35a684 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/mining_2/panorama_5.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/unknown/panorama_0.png b/src/main/resources/assets/notenoughupdates/panoramas/unknown/panorama_0.png new file mode 100644 index 00000000..1b03fc43 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/unknown/panorama_0.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/unknown/panorama_1.png b/src/main/resources/assets/notenoughupdates/panoramas/unknown/panorama_1.png new file mode 100644 index 00000000..0513b21c Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/unknown/panorama_1.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/unknown/panorama_2.png b/src/main/resources/assets/notenoughupdates/panoramas/unknown/panorama_2.png new file mode 100644 index 00000000..fbe9bd47 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/unknown/panorama_2.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/unknown/panorama_3.png b/src/main/resources/assets/notenoughupdates/panoramas/unknown/panorama_3.png new file mode 100644 index 00000000..b8838c4c Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/unknown/panorama_3.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/unknown/panorama_4.png b/src/main/resources/assets/notenoughupdates/panoramas/unknown/panorama_4.png new file mode 100644 index 00000000..c3ffe75c Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/unknown/panorama_4.png differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/unknown/panorama_5.png b/src/main/resources/assets/notenoughupdates/panoramas/unknown/panorama_5.png new file mode 100644 index 00000000..16377625 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/unknown/panorama_5.png differ diff --git a/src/main/resources/assets/notenoughupdates/shaders/cape.frag b/src/main/resources/assets/notenoughupdates/shaders/cape.frag index cbe00c70..bfc089bb 100644 --- a/src/main/resources/assets/notenoughupdates/shaders/cape.frag +++ b/src/main/resources/assets/notenoughupdates/shaders/cape.frag @@ -8,9 +8,9 @@ void main() { vec4 texture = texture2D(textureIn, gl_TexCoord[0].st); gl_FragColor = texture * passColour; - vec3 fakeSunNormal = normalize(vec3(0.2f,1f,-0.2f)); + vec3 fakeSunNormal = normalize(vec3(0.2f,1.0f,-0.2f)); vec3 normNormal = normalize(passNormal); float shading = max(0.6f, dot(fakeSunNormal, normNormal)); - gl_FragColor = vec4(gl_FragColor.rgb*shading, gl_FragColor.a);//gl_FragColor.rgb*shading + gl_FragColor = vec4(gl_FragColor.rgb*shading, gl_FragColor.a); } \ No newline at end of file diff --git a/src/main/resources/assets/notenoughupdates/shaders/fade_cape.frag b/src/main/resources/assets/notenoughupdates/shaders/fade_cape.frag index 76738c31..33d6b341 100644 --- a/src/main/resources/assets/notenoughupdates/shaders/fade_cape.frag +++ b/src/main/resources/assets/notenoughupdates/shaders/fade_cape.frag @@ -16,16 +16,16 @@ vec3 hsv2rgb(vec3 c) { void main() { vec4 texture = texture2D(textureIn, gl_TexCoord[0].st); - float hue = mod(millis/10000f+gl_TexCoord[0].t, 1f); + float hue = mod(millis/10000.0f+gl_TexCoord[0].t, 1.0f); float sat = 0.5f; float val = 0.5f; vec3 fade = hsv2rgb(vec3(hue, sat, val)); - gl_FragColor = vec4(texture.rgb*texture.a + fade*(1-texture.a), 1f) * passColour; + gl_FragColor = vec4(texture.rgb*texture.a + fade*(1.0f-texture.a), 1.0f) * passColour; - vec3 fakeSunNormal = normalize(vec3(0.2f,1f,-0.2f)); + vec3 fakeSunNormal = normalize(vec3(0.2f,1.0f,-0.2f)); vec3 normNormal = normalize(passNormal); float shading = max(0.6f, dot(fakeSunNormal, normNormal)); gl_FragColor = vec4(gl_FragColor.rgb*shading, gl_FragColor.a); -} \ No newline at end of file +} diff --git a/src/main/resources/assets/notenoughupdates/shaders/make_gold.frag b/src/main/resources/assets/notenoughupdates/shaders/make_gold.frag new file mode 100644 index 00000000..e771f2c2 --- /dev/null +++ b/src/main/resources/assets/notenoughupdates/shaders/make_gold.frag @@ -0,0 +1,38 @@ +#version 120 + +varying vec4 passColour; +varying vec3 passPosition; +uniform sampler2D textureIn; + +uniform float amount; + +//Algorithm by sam hocevar +vec3 rgb2hsv(vec3 c) { + vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0); + vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g)); + vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r)); + + float d = q.x - min(q.w, q.y); + float e = 1.0e-10; + return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x); +} + +//Algorithm by hughsk +vec3 hsv2rgb(vec3 c) { + vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0); + vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www); + return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y); +} + +void main() { + vec4 texture = texture2D(textureIn, gl_TexCoord[0].st); + + vec3 hsv = rgb2hsv(texture.rgb); + + float hue = mod(hsv.x + amount + passPosition.x*4.0f, 1.0f); + float sat = hsv.y*0.7f; + float val = hsv.z; + vec3 fade = hsv2rgb(vec3(hue, sat, val)); + + gl_FragColor = vec4(fade.rgb, texture.a); +} diff --git a/src/main/resources/assets/notenoughupdates/shaders/make_gold.vert b/src/main/resources/assets/notenoughupdates/shaders/make_gold.vert new file mode 100644 index 00000000..40a9d08a --- /dev/null +++ b/src/main/resources/assets/notenoughupdates/shaders/make_gold.vert @@ -0,0 +1,13 @@ +#version 120 + +varying vec4 passColour; +varying vec3 passPosition; + +void main() { + gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex; + gl_TexCoord[0] = gl_MultiTexCoord0; + + passPosition = gl_Position.xyz; + + passColour = gl_Color; +} \ No newline at end of file -- cgit From 16b89f752b83aa91f1697238d785eb97a4f01f61 Mon Sep 17 00:00:00 2001 From: Moulberry Date: Wed, 22 Jul 2020 04:55:27 +1000 Subject: even less scuffed --- .../profileviewer/GuiProfileViewer.java | 8 ++++---- .../panoramas/combat_1_day/panorama_0.jpg | Bin 0 -> 21394 bytes .../panoramas/combat_1_day/panorama_0.png | Bin 2044572 -> 0 bytes .../panoramas/combat_1_day/panorama_1.jpg | Bin 0 -> 20539 bytes .../panoramas/combat_1_day/panorama_1.png | Bin 2118694 -> 0 bytes .../panoramas/combat_1_day/panorama_2.jpg | Bin 0 -> 18095 bytes .../panoramas/combat_1_day/panorama_2.png | Bin 1975377 -> 0 bytes .../panoramas/combat_1_day/panorama_3.jpg | Bin 0 -> 21069 bytes .../panoramas/combat_1_day/panorama_3.png | Bin 1909797 -> 0 bytes .../panoramas/combat_1_day/panorama_4.jpg | Bin 0 -> 17245 bytes .../panoramas/combat_1_day/panorama_4.png | Bin 2256091 -> 0 bytes .../panoramas/combat_1_day/panorama_5.jpg | Bin 0 -> 13035 bytes .../panoramas/combat_1_day/panorama_5.png | Bin 1456745 -> 0 bytes .../panoramas/combat_1_night/panorama_0.jpg | Bin 0 -> 15969 bytes .../panoramas/combat_1_night/panorama_0.png | Bin 1835538 -> 0 bytes .../panoramas/combat_1_night/panorama_1.jpg | Bin 0 -> 14301 bytes .../panoramas/combat_1_night/panorama_1.png | Bin 1892728 -> 0 bytes .../panoramas/combat_1_night/panorama_2.jpg | Bin 0 -> 12769 bytes .../panoramas/combat_1_night/panorama_2.png | Bin 1577765 -> 0 bytes .../panoramas/combat_1_night/panorama_3.jpg | Bin 0 -> 12440 bytes .../panoramas/combat_1_night/panorama_3.png | Bin 1635925 -> 0 bytes .../panoramas/combat_1_night/panorama_4.jpg | Bin 0 -> 11408 bytes .../panoramas/combat_1_night/panorama_4.png | Bin 1873550 -> 0 bytes .../panoramas/combat_1_night/panorama_5.jpg | Bin 0 -> 16017 bytes .../panoramas/combat_1_night/panorama_5.png | Bin 1471032 -> 0 bytes .../panoramas/combat_2_day/panorama_0.jpg | Bin 0 -> 30425 bytes .../panoramas/combat_2_day/panorama_0.png | Bin 1870077 -> 0 bytes .../panoramas/combat_2_day/panorama_1.jpg | Bin 0 -> 18248 bytes .../panoramas/combat_2_day/panorama_1.png | Bin 1827993 -> 0 bytes .../panoramas/combat_2_day/panorama_2.jpg | Bin 0 -> 14289 bytes .../panoramas/combat_2_day/panorama_2.png | Bin 1930272 -> 0 bytes .../panoramas/combat_2_day/panorama_3.jpg | Bin 0 -> 19871 bytes .../panoramas/combat_2_day/panorama_3.png | Bin 2036129 -> 0 bytes .../panoramas/combat_2_day/panorama_4.jpg | Bin 0 -> 18328 bytes .../panoramas/combat_2_day/panorama_4.png | Bin 1741259 -> 0 bytes .../panoramas/combat_2_day/panorama_5.jpg | Bin 0 -> 8718 bytes .../panoramas/combat_2_day/panorama_5.png | Bin 1450149 -> 0 bytes .../panoramas/combat_2_night/panorama_0.jpg | Bin 0 -> 14773 bytes .../panoramas/combat_2_night/panorama_0.png | Bin 1604404 -> 0 bytes .../panoramas/combat_2_night/panorama_1.jpg | Bin 0 -> 11063 bytes .../panoramas/combat_2_night/panorama_1.png | Bin 1506039 -> 0 bytes .../panoramas/combat_2_night/panorama_2.jpg | Bin 0 -> 5580 bytes .../panoramas/combat_2_night/panorama_2.png | Bin 1280422 -> 0 bytes .../panoramas/combat_2_night/panorama_3.jpg | Bin 0 -> 17256 bytes .../panoramas/combat_2_night/panorama_3.png | Bin 1683043 -> 0 bytes .../panoramas/combat_2_night/panorama_4.jpg | Bin 0 -> 12133 bytes .../panoramas/combat_2_night/panorama_4.png | Bin 1475680 -> 0 bytes .../panoramas/combat_2_night/panorama_5.jpg | Bin 0 -> 4516 bytes .../panoramas/combat_2_night/panorama_5.png | Bin 1317441 -> 0 bytes .../panoramas/combat_3_day/panorama_0.jpg | Bin 0 -> 34048 bytes .../panoramas/combat_3_day/panorama_0.png | Bin 2188059 -> 0 bytes .../panoramas/combat_3_day/panorama_1.jpg | Bin 0 -> 28471 bytes .../panoramas/combat_3_day/panorama_1.png | Bin 1858211 -> 0 bytes .../panoramas/combat_3_day/panorama_2.jpg | Bin 0 -> 22159 bytes .../panoramas/combat_3_day/panorama_2.png | Bin 1820033 -> 0 bytes .../panoramas/combat_3_day/panorama_3.jpg | Bin 0 -> 27487 bytes .../panoramas/combat_3_day/panorama_3.png | Bin 2320903 -> 0 bytes .../panoramas/combat_3_day/panorama_4.jpg | Bin 0 -> 19750 bytes .../panoramas/combat_3_day/panorama_4.png | Bin 1815303 -> 0 bytes .../panoramas/combat_3_day/panorama_5.jpg | Bin 0 -> 21597 bytes .../panoramas/combat_3_day/panorama_5.png | Bin 1584572 -> 0 bytes .../panoramas/combat_3_night/panorama_0.jpg | Bin 0 -> 18255 bytes .../panoramas/combat_3_night/panorama_0.png | Bin 1850016 -> 0 bytes .../panoramas/combat_3_night/panorama_1.jpg | Bin 0 -> 11295 bytes .../panoramas/combat_3_night/panorama_1.png | Bin 1491122 -> 0 bytes .../panoramas/combat_3_night/panorama_2.jpg | Bin 0 -> 13877 bytes .../panoramas/combat_3_night/panorama_2.png | Bin 1560123 -> 0 bytes .../panoramas/combat_3_night/panorama_3.jpg | Bin 0 -> 18438 bytes .../panoramas/combat_3_night/panorama_3.png | Bin 1905445 -> 0 bytes .../panoramas/combat_3_night/panorama_4.jpg | Bin 0 -> 10785 bytes .../panoramas/combat_3_night/panorama_4.png | Bin 1618932 -> 0 bytes .../panoramas/combat_3_night/panorama_5.jpg | Bin 0 -> 12742 bytes .../panoramas/combat_3_night/panorama_5.png | Bin 1402137 -> 0 bytes .../panoramas/dark_auction/panorama_0.jpg | Bin 0 -> 19008 bytes .../panoramas/dark_auction/panorama_0.png | Bin 1855519 -> 0 bytes .../panoramas/dark_auction/panorama_1.jpg | Bin 0 -> 19414 bytes .../panoramas/dark_auction/panorama_1.png | Bin 1850637 -> 0 bytes .../panoramas/dark_auction/panorama_2.jpg | Bin 0 -> 19388 bytes .../panoramas/dark_auction/panorama_2.png | Bin 1674606 -> 0 bytes .../panoramas/dark_auction/panorama_3.jpg | Bin 0 -> 19497 bytes .../panoramas/dark_auction/panorama_3.png | Bin 1922696 -> 0 bytes .../panoramas/dark_auction/panorama_4.jpg | Bin 0 -> 18727 bytes .../panoramas/dark_auction/panorama_4.png | Bin 2052381 -> 0 bytes .../panoramas/dark_auction/panorama_5.jpg | Bin 0 -> 18871 bytes .../panoramas/dark_auction/panorama_5.png | Bin 1347015 -> 0 bytes .../notenoughupdates/panoramas/dungeon/panorama_0.jpg | Bin 0 -> 16337 bytes .../notenoughupdates/panoramas/dungeon/panorama_0.png | Bin 1529623 -> 0 bytes .../notenoughupdates/panoramas/dungeon/panorama_1.jpg | Bin 0 -> 19376 bytes .../notenoughupdates/panoramas/dungeon/panorama_1.png | Bin 1752770 -> 0 bytes .../notenoughupdates/panoramas/dungeon/panorama_2.jpg | Bin 0 -> 17633 bytes .../notenoughupdates/panoramas/dungeon/panorama_2.png | Bin 1650468 -> 0 bytes .../notenoughupdates/panoramas/dungeon/panorama_3.jpg | Bin 0 -> 18424 bytes .../notenoughupdates/panoramas/dungeon/panorama_3.png | Bin 1648713 -> 0 bytes .../notenoughupdates/panoramas/dungeon/panorama_4.jpg | Bin 0 -> 18780 bytes .../notenoughupdates/panoramas/dungeon/panorama_4.png | Bin 1862221 -> 0 bytes .../notenoughupdates/panoramas/dungeon/panorama_5.jpg | Bin 0 -> 18041 bytes .../notenoughupdates/panoramas/dungeon/panorama_5.png | Bin 1351481 -> 0 bytes .../panoramas/dungeon_hub/panorama_0.jpg | Bin 0 -> 16337 bytes .../panoramas/dungeon_hub/panorama_0.png | Bin 1529623 -> 0 bytes .../panoramas/dungeon_hub/panorama_1.jpg | Bin 0 -> 19376 bytes .../panoramas/dungeon_hub/panorama_1.png | Bin 1752770 -> 0 bytes .../panoramas/dungeon_hub/panorama_2.jpg | Bin 0 -> 17633 bytes .../panoramas/dungeon_hub/panorama_2.png | Bin 1650468 -> 0 bytes .../panoramas/dungeon_hub/panorama_3.jpg | Bin 0 -> 18424 bytes .../panoramas/dungeon_hub/panorama_3.png | Bin 1648713 -> 0 bytes .../panoramas/dungeon_hub/panorama_4.jpg | Bin 0 -> 18780 bytes .../panoramas/dungeon_hub/panorama_4.png | Bin 1862221 -> 0 bytes .../panoramas/dungeon_hub/panorama_5.jpg | Bin 0 -> 18041 bytes .../panoramas/dungeon_hub/panorama_5.png | Bin 1351481 -> 0 bytes .../panoramas/dynamic_day/panorama_0.jpg | Bin 0 -> 35131 bytes .../panoramas/dynamic_day/panorama_0.png | Bin 2225270 -> 0 bytes .../panoramas/dynamic_day/panorama_1.jpg | Bin 0 -> 32356 bytes .../panoramas/dynamic_day/panorama_1.png | Bin 2261346 -> 0 bytes .../panoramas/dynamic_day/panorama_2.jpg | Bin 0 -> 34147 bytes .../panoramas/dynamic_day/panorama_2.png | Bin 2339782 -> 0 bytes .../panoramas/dynamic_day/panorama_3.jpg | Bin 0 -> 42291 bytes .../panoramas/dynamic_day/panorama_3.png | Bin 2543434 -> 0 bytes .../panoramas/dynamic_day/panorama_4.jpg | Bin 0 -> 25831 bytes .../panoramas/dynamic_day/panorama_4.png | Bin 2173289 -> 0 bytes .../panoramas/dynamic_day/panorama_5.jpg | Bin 0 -> 20933 bytes .../panoramas/dynamic_day/panorama_5.png | Bin 1726308 -> 0 bytes .../panoramas/dynamic_night/panorama_0.jpg | Bin 0 -> 28070 bytes .../panoramas/dynamic_night/panorama_0.png | Bin 2197444 -> 0 bytes .../panoramas/dynamic_night/panorama_1.jpg | Bin 0 -> 30401 bytes .../panoramas/dynamic_night/panorama_1.png | Bin 2394932 -> 0 bytes .../panoramas/dynamic_night/panorama_2.jpg | Bin 0 -> 29899 bytes .../panoramas/dynamic_night/panorama_2.png | Bin 2188571 -> 0 bytes .../panoramas/dynamic_night/panorama_3.jpg | Bin 0 -> 30543 bytes .../panoramas/dynamic_night/panorama_3.png | Bin 2376290 -> 0 bytes .../panoramas/dynamic_night/panorama_4.jpg | Bin 0 -> 27401 bytes .../panoramas/dynamic_night/panorama_4.png | Bin 2000878 -> 0 bytes .../panoramas/dynamic_night/panorama_5.jpg | Bin 0 -> 21828 bytes .../panoramas/dynamic_night/panorama_5.png | Bin 1511540 -> 0 bytes .../panoramas/farming_1_day/panorama_0.jpg | Bin 0 -> 34294 bytes .../panoramas/farming_1_day/panorama_0.png | Bin 2187588 -> 0 bytes .../panoramas/farming_1_day/panorama_1.jpg | Bin 0 -> 47518 bytes .../panoramas/farming_1_day/panorama_1.png | Bin 2459529 -> 0 bytes .../panoramas/farming_1_day/panorama_2.jpg | Bin 0 -> 46569 bytes .../panoramas/farming_1_day/panorama_2.png | Bin 2459437 -> 0 bytes .../panoramas/farming_1_day/panorama_3.jpg | Bin 0 -> 36648 bytes .../panoramas/farming_1_day/panorama_3.png | Bin 2435508 -> 0 bytes .../panoramas/farming_1_day/panorama_4.jpg | Bin 0 -> 15788 bytes .../panoramas/farming_1_day/panorama_4.png | Bin 1669131 -> 0 bytes .../panoramas/farming_1_day/panorama_5.jpg | Bin 0 -> 47536 bytes .../panoramas/farming_1_day/panorama_5.png | Bin 2298029 -> 0 bytes .../panoramas/farming_1_night/panorama_0.jpg | Bin 0 -> 20273 bytes .../panoramas/farming_1_night/panorama_0.png | Bin 1853632 -> 0 bytes .../panoramas/farming_1_night/panorama_1.jpg | Bin 0 -> 23666 bytes .../panoramas/farming_1_night/panorama_1.png | Bin 2028666 -> 0 bytes .../panoramas/farming_1_night/panorama_2.jpg | Bin 0 -> 26548 bytes .../panoramas/farming_1_night/panorama_2.png | Bin 2027933 -> 0 bytes .../panoramas/farming_1_night/panorama_3.jpg | Bin 0 -> 22310 bytes .../panoramas/farming_1_night/panorama_3.png | Bin 1999075 -> 0 bytes .../panoramas/farming_1_night/panorama_4.jpg | Bin 0 -> 9398 bytes .../panoramas/farming_1_night/panorama_4.png | Bin 1466349 -> 0 bytes .../panoramas/farming_1_night/panorama_5.jpg | Bin 0 -> 29882 bytes .../panoramas/farming_1_night/panorama_5.png | Bin 1835107 -> 0 bytes .../panoramas/farming_2_day/panorama_0.jpg | Bin 0 -> 30779 bytes .../panoramas/farming_2_day/panorama_0.png | Bin 2063170 -> 0 bytes .../panoramas/farming_2_day/panorama_1.jpg | Bin 0 -> 29586 bytes .../panoramas/farming_2_day/panorama_1.png | Bin 2017820 -> 0 bytes .../panoramas/farming_2_day/panorama_2.jpg | Bin 0 -> 30070 bytes .../panoramas/farming_2_day/panorama_2.png | Bin 2004712 -> 0 bytes .../panoramas/farming_2_day/panorama_3.jpg | Bin 0 -> 30822 bytes .../panoramas/farming_2_day/panorama_3.png | Bin 2049201 -> 0 bytes .../panoramas/farming_2_day/panorama_4.jpg | Bin 0 -> 11867 bytes .../panoramas/farming_2_day/panorama_4.png | Bin 1505669 -> 0 bytes .../panoramas/farming_2_day/panorama_5.jpg | Bin 0 -> 24780 bytes .../panoramas/farming_2_day/panorama_5.png | Bin 1678571 -> 0 bytes .../panoramas/farming_2_night/panorama_0.jpg | Bin 0 -> 19525 bytes .../panoramas/farming_2_night/panorama_0.png | Bin 1767456 -> 0 bytes .../panoramas/farming_2_night/panorama_1.jpg | Bin 0 -> 14742 bytes .../panoramas/farming_2_night/panorama_1.png | Bin 1690021 -> 0 bytes .../panoramas/farming_2_night/panorama_2.jpg | Bin 0 -> 16263 bytes .../panoramas/farming_2_night/panorama_2.png | Bin 1637647 -> 0 bytes .../panoramas/farming_2_night/panorama_3.jpg | Bin 0 -> 17533 bytes .../panoramas/farming_2_night/panorama_3.png | Bin 1695396 -> 0 bytes .../panoramas/farming_2_night/panorama_4.jpg | Bin 0 -> 6528 bytes .../panoramas/farming_2_night/panorama_4.png | Bin 1347288 -> 0 bytes .../panoramas/farming_2_night/panorama_5.jpg | Bin 0 -> 17504 bytes .../panoramas/farming_2_night/panorama_5.png | Bin 1523433 -> 0 bytes .../panoramas/foraging_1_day/panorama_0.jpg | Bin 0 -> 42789 bytes .../panoramas/foraging_1_day/panorama_0.png | Bin 2411778 -> 0 bytes .../panoramas/foraging_1_day/panorama_1.jpg | Bin 0 -> 32963 bytes .../panoramas/foraging_1_day/panorama_1.png | Bin 2041133 -> 0 bytes .../panoramas/foraging_1_day/panorama_2.jpg | Bin 0 -> 36208 bytes .../panoramas/foraging_1_day/panorama_2.png | Bin 2206230 -> 0 bytes .../panoramas/foraging_1_day/panorama_3.jpg | Bin 0 -> 34657 bytes .../panoramas/foraging_1_day/panorama_3.png | Bin 2247037 -> 0 bytes .../panoramas/foraging_1_day/panorama_4.jpg | Bin 0 -> 25234 bytes .../panoramas/foraging_1_day/panorama_4.png | Bin 2095796 -> 0 bytes .../panoramas/foraging_1_day/panorama_5.jpg | Bin 0 -> 29243 bytes .../panoramas/foraging_1_day/panorama_5.png | Bin 1839740 -> 0 bytes .../panoramas/foraging_1_night/panorama_0.jpg | Bin 0 -> 16958 bytes .../panoramas/foraging_1_night/panorama_0.png | Bin 1766471 -> 0 bytes .../panoramas/foraging_1_night/panorama_1.jpg | Bin 0 -> 16735 bytes .../panoramas/foraging_1_night/panorama_1.png | Bin 1638095 -> 0 bytes .../panoramas/foraging_1_night/panorama_2.jpg | Bin 0 -> 15980 bytes .../panoramas/foraging_1_night/panorama_2.png | Bin 1776122 -> 0 bytes .../panoramas/foraging_1_night/panorama_3.jpg | Bin 0 -> 17531 bytes .../panoramas/foraging_1_night/panorama_3.png | Bin 1796200 -> 0 bytes .../panoramas/foraging_1_night/panorama_4.jpg | Bin 0 -> 11656 bytes .../panoramas/foraging_1_night/panorama_4.png | Bin 1635702 -> 0 bytes .../panoramas/foraging_1_night/panorama_5.jpg | Bin 0 -> 17297 bytes .../panoramas/foraging_1_night/panorama_5.png | Bin 1504163 -> 0 bytes .../notenoughupdates/panoramas/hub_day/panorama_0.jpg | Bin 0 -> 20453 bytes .../notenoughupdates/panoramas/hub_day/panorama_0.png | Bin 1778138 -> 0 bytes .../notenoughupdates/panoramas/hub_day/panorama_1.jpg | Bin 0 -> 20509 bytes .../notenoughupdates/panoramas/hub_day/panorama_1.png | Bin 1844566 -> 0 bytes .../notenoughupdates/panoramas/hub_day/panorama_2.jpg | Bin 0 -> 23845 bytes .../notenoughupdates/panoramas/hub_day/panorama_2.png | Bin 1906390 -> 0 bytes .../notenoughupdates/panoramas/hub_day/panorama_3.jpg | Bin 0 -> 24436 bytes .../notenoughupdates/panoramas/hub_day/panorama_3.png | Bin 1978044 -> 0 bytes .../notenoughupdates/panoramas/hub_day/panorama_4.jpg | Bin 0 -> 10145 bytes .../notenoughupdates/panoramas/hub_day/panorama_4.png | Bin 1457085 -> 0 bytes .../notenoughupdates/panoramas/hub_day/panorama_5.jpg | Bin 0 -> 16562 bytes .../notenoughupdates/panoramas/hub_day/panorama_5.png | Bin 1481400 -> 0 bytes .../panoramas/hub_night/panorama_0.jpg | Bin 0 -> 17155 bytes .../panoramas/hub_night/panorama_0.png | Bin 1800967 -> 0 bytes .../panoramas/hub_night/panorama_1.jpg | Bin 0 -> 17538 bytes .../panoramas/hub_night/panorama_1.png | Bin 1795725 -> 0 bytes .../panoramas/hub_night/panorama_2.jpg | Bin 0 -> 15950 bytes .../panoramas/hub_night/panorama_2.png | Bin 1783854 -> 0 bytes .../panoramas/hub_night/panorama_3.jpg | Bin 0 -> 17928 bytes .../panoramas/hub_night/panorama_3.png | Bin 1903785 -> 0 bytes .../panoramas/hub_night/panorama_4.jpg | Bin 0 -> 5091 bytes .../panoramas/hub_night/panorama_4.png | Bin 1334156 -> 0 bytes .../panoramas/hub_night/panorama_5.jpg | Bin 0 -> 15786 bytes .../panoramas/hub_night/panorama_5.png | Bin 1484102 -> 0 bytes .../panoramas/mining_1_day/panorama_0.jpg | Bin 0 -> 37877 bytes .../panoramas/mining_1_day/panorama_0.png | Bin 2250360 -> 0 bytes .../panoramas/mining_1_day/panorama_1.jpg | Bin 0 -> 33985 bytes .../panoramas/mining_1_day/panorama_1.png | Bin 1990106 -> 0 bytes .../panoramas/mining_1_day/panorama_2.jpg | Bin 0 -> 29885 bytes .../panoramas/mining_1_day/panorama_2.png | Bin 1917797 -> 0 bytes .../panoramas/mining_1_day/panorama_3.jpg | Bin 0 -> 29426 bytes .../panoramas/mining_1_day/panorama_3.png | Bin 2080411 -> 0 bytes .../panoramas/mining_1_day/panorama_4.jpg | Bin 0 -> 17061 bytes .../panoramas/mining_1_day/panorama_4.png | Bin 1680133 -> 0 bytes .../panoramas/mining_1_day/panorama_5.jpg | Bin 0 -> 24623 bytes .../panoramas/mining_1_day/panorama_5.png | Bin 1368779 -> 0 bytes .../panoramas/mining_1_night/panorama_0.jpg | Bin 0 -> 25721 bytes .../panoramas/mining_1_night/panorama_0.png | Bin 2144730 -> 0 bytes .../panoramas/mining_1_night/panorama_1.jpg | Bin 0 -> 22713 bytes .../panoramas/mining_1_night/panorama_1.png | Bin 1881956 -> 0 bytes .../panoramas/mining_1_night/panorama_2.jpg | Bin 0 -> 17499 bytes .../panoramas/mining_1_night/panorama_2.png | Bin 1660032 -> 0 bytes .../panoramas/mining_1_night/panorama_3.jpg | Bin 0 -> 19113 bytes .../panoramas/mining_1_night/panorama_3.png | Bin 1879865 -> 0 bytes .../panoramas/mining_1_night/panorama_4.jpg | Bin 0 -> 11604 bytes .../panoramas/mining_1_night/panorama_4.png | Bin 1514854 -> 0 bytes .../panoramas/mining_1_night/panorama_5.jpg | Bin 0 -> 17142 bytes .../panoramas/mining_1_night/panorama_5.png | Bin 1357481 -> 0 bytes .../panoramas/mining_2/panorama_0.jpg | Bin 0 -> 19309 bytes .../panoramas/mining_2/panorama_0.png | Bin 1750950 -> 0 bytes .../panoramas/mining_2/panorama_1.jpg | Bin 0 -> 11211 bytes .../panoramas/mining_2/panorama_1.png | Bin 1672301 -> 0 bytes .../panoramas/mining_2/panorama_2.jpg | Bin 0 -> 13231 bytes .../panoramas/mining_2/panorama_2.png | Bin 1702966 -> 0 bytes .../panoramas/mining_2/panorama_3.jpg | Bin 0 -> 13388 bytes .../panoramas/mining_2/panorama_3.png | Bin 1681660 -> 0 bytes .../panoramas/mining_2/panorama_4.jpg | Bin 0 -> 10314 bytes .../panoramas/mining_2/panorama_4.png | Bin 1823482 -> 0 bytes .../panoramas/mining_2/panorama_5.jpg | Bin 0 -> 11803 bytes .../panoramas/mining_2/panorama_5.png | Bin 1375439 -> 0 bytes .../notenoughupdates/panoramas/missing/panorama_0.jpg | Bin 0 -> 26015 bytes .../notenoughupdates/panoramas/missing/panorama_1.jpg | Bin 0 -> 26016 bytes .../notenoughupdates/panoramas/missing/panorama_2.jpg | Bin 0 -> 24769 bytes .../notenoughupdates/panoramas/missing/panorama_3.jpg | Bin 0 -> 24854 bytes .../notenoughupdates/panoramas/missing/panorama_4.jpg | Bin 0 -> 26123 bytes .../notenoughupdates/panoramas/missing/panorama_5.jpg | Bin 0 -> 24894 bytes .../notenoughupdates/panoramas/unknown/panorama_0.png | Bin 2095449 -> 0 bytes .../notenoughupdates/panoramas/unknown/panorama_1.png | Bin 2096492 -> 0 bytes .../notenoughupdates/panoramas/unknown/panorama_2.png | Bin 2082800 -> 0 bytes .../notenoughupdates/panoramas/unknown/panorama_3.png | Bin 2080972 -> 0 bytes .../notenoughupdates/panoramas/unknown/panorama_4.png | Bin 2095828 -> 0 bytes .../notenoughupdates/panoramas/unknown/panorama_5.png | Bin 2083932 -> 0 bytes 277 files changed, 4 insertions(+), 4 deletions(-) create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/combat_1_day/panorama_0.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/combat_1_day/panorama_0.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/combat_1_day/panorama_1.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/combat_1_day/panorama_1.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/combat_1_day/panorama_2.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/combat_1_day/panorama_2.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/combat_1_day/panorama_3.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/combat_1_day/panorama_3.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/combat_1_day/panorama_4.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/combat_1_day/panorama_4.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/combat_1_day/panorama_5.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/combat_1_day/panorama_5.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/combat_1_night/panorama_0.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/combat_1_night/panorama_0.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/combat_1_night/panorama_1.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/combat_1_night/panorama_1.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/combat_1_night/panorama_2.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/combat_1_night/panorama_2.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/combat_1_night/panorama_3.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/combat_1_night/panorama_3.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/combat_1_night/panorama_4.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/combat_1_night/panorama_4.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/combat_1_night/panorama_5.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/combat_1_night/panorama_5.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/combat_2_day/panorama_0.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/combat_2_day/panorama_0.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/combat_2_day/panorama_1.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/combat_2_day/panorama_1.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/combat_2_day/panorama_2.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/combat_2_day/panorama_2.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/combat_2_day/panorama_3.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/combat_2_day/panorama_3.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/combat_2_day/panorama_4.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/combat_2_day/panorama_4.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/combat_2_day/panorama_5.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/combat_2_day/panorama_5.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/combat_2_night/panorama_0.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/combat_2_night/panorama_0.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/combat_2_night/panorama_1.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/combat_2_night/panorama_1.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/combat_2_night/panorama_2.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/combat_2_night/panorama_2.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/combat_2_night/panorama_3.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/combat_2_night/panorama_3.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/combat_2_night/panorama_4.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/combat_2_night/panorama_4.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/combat_2_night/panorama_5.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/combat_2_night/panorama_5.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/combat_3_day/panorama_0.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/combat_3_day/panorama_0.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/combat_3_day/panorama_1.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/combat_3_day/panorama_1.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/combat_3_day/panorama_2.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/combat_3_day/panorama_2.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/combat_3_day/panorama_3.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/combat_3_day/panorama_3.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/combat_3_day/panorama_4.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/combat_3_day/panorama_4.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/combat_3_day/panorama_5.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/combat_3_day/panorama_5.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/combat_3_night/panorama_0.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/combat_3_night/panorama_0.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/combat_3_night/panorama_1.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/combat_3_night/panorama_1.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/combat_3_night/panorama_2.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/combat_3_night/panorama_2.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/combat_3_night/panorama_3.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/combat_3_night/panorama_3.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/combat_3_night/panorama_4.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/combat_3_night/panorama_4.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/combat_3_night/panorama_5.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/combat_3_night/panorama_5.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/dark_auction/panorama_0.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/dark_auction/panorama_0.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/dark_auction/panorama_1.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/dark_auction/panorama_1.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/dark_auction/panorama_2.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/dark_auction/panorama_2.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/dark_auction/panorama_3.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/dark_auction/panorama_3.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/dark_auction/panorama_4.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/dark_auction/panorama_4.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/dark_auction/panorama_5.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/dark_auction/panorama_5.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/dungeon/panorama_0.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/dungeon/panorama_0.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/dungeon/panorama_1.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/dungeon/panorama_1.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/dungeon/panorama_2.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/dungeon/panorama_2.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/dungeon/panorama_3.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/dungeon/panorama_3.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/dungeon/panorama_4.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/dungeon/panorama_4.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/dungeon/panorama_5.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/dungeon/panorama_5.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/dungeon_hub/panorama_0.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/dungeon_hub/panorama_0.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/dungeon_hub/panorama_1.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/dungeon_hub/panorama_1.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/dungeon_hub/panorama_2.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/dungeon_hub/panorama_2.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/dungeon_hub/panorama_3.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/dungeon_hub/panorama_3.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/dungeon_hub/panorama_4.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/dungeon_hub/panorama_4.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/dungeon_hub/panorama_5.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/dungeon_hub/panorama_5.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/dynamic_day/panorama_0.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/dynamic_day/panorama_0.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/dynamic_day/panorama_1.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/dynamic_day/panorama_1.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/dynamic_day/panorama_2.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/dynamic_day/panorama_2.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/dynamic_day/panorama_3.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/dynamic_day/panorama_3.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/dynamic_day/panorama_4.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/dynamic_day/panorama_4.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/dynamic_day/panorama_5.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/dynamic_day/panorama_5.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/dynamic_night/panorama_0.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/dynamic_night/panorama_0.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/dynamic_night/panorama_1.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/dynamic_night/panorama_1.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/dynamic_night/panorama_2.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/dynamic_night/panorama_2.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/dynamic_night/panorama_3.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/dynamic_night/panorama_3.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/dynamic_night/panorama_4.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/dynamic_night/panorama_4.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/dynamic_night/panorama_5.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/dynamic_night/panorama_5.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/farming_1_day/panorama_0.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/farming_1_day/panorama_0.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/farming_1_day/panorama_1.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/farming_1_day/panorama_1.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/farming_1_day/panorama_2.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/farming_1_day/panorama_2.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/farming_1_day/panorama_3.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/farming_1_day/panorama_3.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/farming_1_day/panorama_4.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/farming_1_day/panorama_4.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/farming_1_day/panorama_5.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/farming_1_day/panorama_5.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/farming_1_night/panorama_0.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/farming_1_night/panorama_0.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/farming_1_night/panorama_1.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/farming_1_night/panorama_1.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/farming_1_night/panorama_2.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/farming_1_night/panorama_2.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/farming_1_night/panorama_3.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/farming_1_night/panorama_3.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/farming_1_night/panorama_4.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/farming_1_night/panorama_4.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/farming_1_night/panorama_5.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/farming_1_night/panorama_5.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/farming_2_day/panorama_0.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/farming_2_day/panorama_0.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/farming_2_day/panorama_1.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/farming_2_day/panorama_1.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/farming_2_day/panorama_2.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/farming_2_day/panorama_2.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/farming_2_day/panorama_3.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/farming_2_day/panorama_3.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/farming_2_day/panorama_4.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/farming_2_day/panorama_4.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/farming_2_day/panorama_5.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/farming_2_day/panorama_5.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/farming_2_night/panorama_0.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/farming_2_night/panorama_0.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/farming_2_night/panorama_1.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/farming_2_night/panorama_1.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/farming_2_night/panorama_2.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/farming_2_night/panorama_2.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/farming_2_night/panorama_3.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/farming_2_night/panorama_3.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/farming_2_night/panorama_4.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/farming_2_night/panorama_4.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/farming_2_night/panorama_5.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/farming_2_night/panorama_5.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/foraging_1_day/panorama_0.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/foraging_1_day/panorama_0.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/foraging_1_day/panorama_1.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/foraging_1_day/panorama_1.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/foraging_1_day/panorama_2.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/foraging_1_day/panorama_2.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/foraging_1_day/panorama_3.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/foraging_1_day/panorama_3.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/foraging_1_day/panorama_4.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/foraging_1_day/panorama_4.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/foraging_1_day/panorama_5.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/foraging_1_day/panorama_5.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/foraging_1_night/panorama_0.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/foraging_1_night/panorama_0.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/foraging_1_night/panorama_1.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/foraging_1_night/panorama_1.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/foraging_1_night/panorama_2.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/foraging_1_night/panorama_2.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/foraging_1_night/panorama_3.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/foraging_1_night/panorama_3.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/foraging_1_night/panorama_4.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/foraging_1_night/panorama_4.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/foraging_1_night/panorama_5.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/foraging_1_night/panorama_5.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/hub_day/panorama_0.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/hub_day/panorama_0.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/hub_day/panorama_1.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/hub_day/panorama_1.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/hub_day/panorama_2.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/hub_day/panorama_2.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/hub_day/panorama_3.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/hub_day/panorama_3.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/hub_day/panorama_4.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/hub_day/panorama_4.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/hub_day/panorama_5.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/hub_day/panorama_5.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/hub_night/panorama_0.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/hub_night/panorama_0.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/hub_night/panorama_1.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/hub_night/panorama_1.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/hub_night/panorama_2.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/hub_night/panorama_2.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/hub_night/panorama_3.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/hub_night/panorama_3.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/hub_night/panorama_4.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/hub_night/panorama_4.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/hub_night/panorama_5.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/hub_night/panorama_5.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/mining_1_day/panorama_0.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/mining_1_day/panorama_0.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/mining_1_day/panorama_1.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/mining_1_day/panorama_1.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/mining_1_day/panorama_2.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/mining_1_day/panorama_2.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/mining_1_day/panorama_3.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/mining_1_day/panorama_3.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/mining_1_day/panorama_4.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/mining_1_day/panorama_4.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/mining_1_day/panorama_5.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/mining_1_day/panorama_5.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/mining_1_night/panorama_0.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/mining_1_night/panorama_0.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/mining_1_night/panorama_1.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/mining_1_night/panorama_1.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/mining_1_night/panorama_2.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/mining_1_night/panorama_2.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/mining_1_night/panorama_3.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/mining_1_night/panorama_3.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/mining_1_night/panorama_4.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/mining_1_night/panorama_4.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/mining_1_night/panorama_5.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/mining_1_night/panorama_5.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/mining_2/panorama_0.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/mining_2/panorama_0.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/mining_2/panorama_1.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/mining_2/panorama_1.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/mining_2/panorama_2.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/mining_2/panorama_2.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/mining_2/panorama_3.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/mining_2/panorama_3.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/mining_2/panorama_4.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/mining_2/panorama_4.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/mining_2/panorama_5.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/mining_2/panorama_5.png create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/missing/panorama_0.jpg create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/missing/panorama_1.jpg create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/missing/panorama_2.jpg create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/missing/panorama_3.jpg create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/missing/panorama_4.jpg create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/missing/panorama_5.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/unknown/panorama_0.png delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/unknown/panorama_1.png delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/unknown/panorama_2.png delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/unknown/panorama_3.png delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/unknown/panorama_4.png delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/unknown/panorama_5.png (limited to 'src/main/java/io') diff --git a/src/main/java/io/github/moulberry/notenoughupdates/profileviewer/GuiProfileViewer.java b/src/main/java/io/github/moulberry/notenoughupdates/profileviewer/GuiProfileViewer.java index 9607a888..7b16102c 100644 --- a/src/main/java/io/github/moulberry/notenoughupdates/profileviewer/GuiProfileViewer.java +++ b/src/main/java/io/github/moulberry/notenoughupdates/profileviewer/GuiProfileViewer.java @@ -133,7 +133,7 @@ public class GuiProfileViewer extends GuiScreen { try { ResourceLocation[] panoramasArray = new ResourceLocation[6]; for(int i=0; i<6; i++) { - panoramasArray[i] = new ResourceLocation("notenoughupdates:panoramas/"+location+"_"+identifier+"/panorama_"+i+".png"); + panoramasArray[i] = new ResourceLocation("notenoughupdates:panoramas/"+location+"_"+identifier+"/panorama_"+i+".jpg"); Minecraft.getMinecraft().getResourceManager().getResource(panoramasArray[i]); } panoramasMap.put(location, panoramasArray); @@ -142,7 +142,7 @@ public class GuiProfileViewer extends GuiScreen { try { ResourceLocation[] panoramasArray = new ResourceLocation[6]; for(int i=0; i<6; i++) { - panoramasArray[i] = new ResourceLocation("notenoughupdates:panoramas/"+location+"/panorama_"+i+".png"); + panoramasArray[i] = new ResourceLocation("notenoughupdates:panoramas/"+location+"/panorama_"+i+".jpg"); Minecraft.getMinecraft().getResourceManager().getResource(panoramasArray[i]); } panoramasMap.put(location, panoramasArray); @@ -150,7 +150,7 @@ public class GuiProfileViewer extends GuiScreen { } catch(IOException e2) { ResourceLocation[] panoramasArray = new ResourceLocation[6]; for(int i=0; i<6; i++) { - panoramasArray[i] = new ResourceLocation("notenoughupdates:panoramas/unknown/panorama_"+i+".png"); + panoramasArray[i] = new ResourceLocation("notenoughupdates:panoramas/unknown/panorama_"+i+".jpg"); } panoramasMap.put(location, panoramasArray); return panoramasArray; @@ -453,7 +453,7 @@ public class GuiProfileViewer extends GuiScreen { } if(mouseX > x && mouseX < x+80) { - if(mouseY > y+4 && mouseY < y+13) { + if(mouseY > y-4 && mouseY < y+13) { String levelStr; if(skillInfo.get("maxed_"+entry.getKey()).getAsBoolean()) { levelStr = EnumChatFormatting.GOLD+"MAXED!"; diff --git a/src/main/resources/assets/notenoughupdates/panoramas/combat_1_day/panorama_0.jpg b/src/main/resources/assets/notenoughupdates/panoramas/combat_1_day/panorama_0.jpg new file mode 100644 index 00000000..27531695 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/combat_1_day/panorama_0.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/combat_1_day/panorama_0.png b/src/main/resources/assets/notenoughupdates/panoramas/combat_1_day/panorama_0.png deleted file mode 100644 index 45c266a4..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/combat_1_day/panorama_0.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/combat_1_day/panorama_1.jpg b/src/main/resources/assets/notenoughupdates/panoramas/combat_1_day/panorama_1.jpg new file mode 100644 index 00000000..5586cf8a Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/combat_1_day/panorama_1.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/combat_1_day/panorama_1.png b/src/main/resources/assets/notenoughupdates/panoramas/combat_1_day/panorama_1.png deleted file mode 100644 index 27c7e6e5..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/combat_1_day/panorama_1.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/combat_1_day/panorama_2.jpg b/src/main/resources/assets/notenoughupdates/panoramas/combat_1_day/panorama_2.jpg new file mode 100644 index 00000000..78540079 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/combat_1_day/panorama_2.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/combat_1_day/panorama_2.png b/src/main/resources/assets/notenoughupdates/panoramas/combat_1_day/panorama_2.png deleted file mode 100644 index 1802f46d..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/combat_1_day/panorama_2.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/combat_1_day/panorama_3.jpg b/src/main/resources/assets/notenoughupdates/panoramas/combat_1_day/panorama_3.jpg new file mode 100644 index 00000000..74bc8f23 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/combat_1_day/panorama_3.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/combat_1_day/panorama_3.png b/src/main/resources/assets/notenoughupdates/panoramas/combat_1_day/panorama_3.png deleted file mode 100644 index 16eb6335..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/combat_1_day/panorama_3.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/combat_1_day/panorama_4.jpg b/src/main/resources/assets/notenoughupdates/panoramas/combat_1_day/panorama_4.jpg new file mode 100644 index 00000000..cdf3fdde Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/combat_1_day/panorama_4.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/combat_1_day/panorama_4.png b/src/main/resources/assets/notenoughupdates/panoramas/combat_1_day/panorama_4.png deleted file mode 100644 index 63c6686e..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/combat_1_day/panorama_4.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/combat_1_day/panorama_5.jpg b/src/main/resources/assets/notenoughupdates/panoramas/combat_1_day/panorama_5.jpg new file mode 100644 index 00000000..63ce6702 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/combat_1_day/panorama_5.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/combat_1_day/panorama_5.png b/src/main/resources/assets/notenoughupdates/panoramas/combat_1_day/panorama_5.png deleted file mode 100644 index aead2717..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/combat_1_day/panorama_5.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/combat_1_night/panorama_0.jpg b/src/main/resources/assets/notenoughupdates/panoramas/combat_1_night/panorama_0.jpg new file mode 100644 index 00000000..93ee50d1 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/combat_1_night/panorama_0.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/combat_1_night/panorama_0.png b/src/main/resources/assets/notenoughupdates/panoramas/combat_1_night/panorama_0.png deleted file mode 100644 index b3720818..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/combat_1_night/panorama_0.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/combat_1_night/panorama_1.jpg b/src/main/resources/assets/notenoughupdates/panoramas/combat_1_night/panorama_1.jpg new file mode 100644 index 00000000..9f100e8c Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/combat_1_night/panorama_1.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/combat_1_night/panorama_1.png b/src/main/resources/assets/notenoughupdates/panoramas/combat_1_night/panorama_1.png deleted file mode 100644 index 8c76d9c2..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/combat_1_night/panorama_1.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/combat_1_night/panorama_2.jpg b/src/main/resources/assets/notenoughupdates/panoramas/combat_1_night/panorama_2.jpg new file mode 100644 index 00000000..7c1e9d5d Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/combat_1_night/panorama_2.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/combat_1_night/panorama_2.png b/src/main/resources/assets/notenoughupdates/panoramas/combat_1_night/panorama_2.png deleted file mode 100644 index 69d75e84..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/combat_1_night/panorama_2.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/combat_1_night/panorama_3.jpg b/src/main/resources/assets/notenoughupdates/panoramas/combat_1_night/panorama_3.jpg new file mode 100644 index 00000000..133e3d4a Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/combat_1_night/panorama_3.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/combat_1_night/panorama_3.png b/src/main/resources/assets/notenoughupdates/panoramas/combat_1_night/panorama_3.png deleted file mode 100644 index 9dfa063b..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/combat_1_night/panorama_3.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/combat_1_night/panorama_4.jpg b/src/main/resources/assets/notenoughupdates/panoramas/combat_1_night/panorama_4.jpg new file mode 100644 index 00000000..c049a2fa Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/combat_1_night/panorama_4.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/combat_1_night/panorama_4.png b/src/main/resources/assets/notenoughupdates/panoramas/combat_1_night/panorama_4.png deleted file mode 100644 index da9f1f2b..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/combat_1_night/panorama_4.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/combat_1_night/panorama_5.jpg b/src/main/resources/assets/notenoughupdates/panoramas/combat_1_night/panorama_5.jpg new file mode 100644 index 00000000..f9e5ed40 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/combat_1_night/panorama_5.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/combat_1_night/panorama_5.png b/src/main/resources/assets/notenoughupdates/panoramas/combat_1_night/panorama_5.png deleted file mode 100644 index 0d4e4702..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/combat_1_night/panorama_5.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/combat_2_day/panorama_0.jpg b/src/main/resources/assets/notenoughupdates/panoramas/combat_2_day/panorama_0.jpg new file mode 100644 index 00000000..0bfb0d2e Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/combat_2_day/panorama_0.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/combat_2_day/panorama_0.png b/src/main/resources/assets/notenoughupdates/panoramas/combat_2_day/panorama_0.png deleted file mode 100644 index 58193e89..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/combat_2_day/panorama_0.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/combat_2_day/panorama_1.jpg b/src/main/resources/assets/notenoughupdates/panoramas/combat_2_day/panorama_1.jpg new file mode 100644 index 00000000..b4890bc5 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/combat_2_day/panorama_1.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/combat_2_day/panorama_1.png b/src/main/resources/assets/notenoughupdates/panoramas/combat_2_day/panorama_1.png deleted file mode 100644 index f0f5d8f3..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/combat_2_day/panorama_1.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/combat_2_day/panorama_2.jpg b/src/main/resources/assets/notenoughupdates/panoramas/combat_2_day/panorama_2.jpg new file mode 100644 index 00000000..ea7da9aa Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/combat_2_day/panorama_2.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/combat_2_day/panorama_2.png b/src/main/resources/assets/notenoughupdates/panoramas/combat_2_day/panorama_2.png deleted file mode 100644 index 6905f1de..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/combat_2_day/panorama_2.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/combat_2_day/panorama_3.jpg b/src/main/resources/assets/notenoughupdates/panoramas/combat_2_day/panorama_3.jpg new file mode 100644 index 00000000..92013d1a Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/combat_2_day/panorama_3.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/combat_2_day/panorama_3.png b/src/main/resources/assets/notenoughupdates/panoramas/combat_2_day/panorama_3.png deleted file mode 100644 index baaf374a..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/combat_2_day/panorama_3.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/combat_2_day/panorama_4.jpg b/src/main/resources/assets/notenoughupdates/panoramas/combat_2_day/panorama_4.jpg new file mode 100644 index 00000000..2e3da992 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/combat_2_day/panorama_4.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/combat_2_day/panorama_4.png b/src/main/resources/assets/notenoughupdates/panoramas/combat_2_day/panorama_4.png deleted file mode 100644 index 976bea03..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/combat_2_day/panorama_4.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/combat_2_day/panorama_5.jpg b/src/main/resources/assets/notenoughupdates/panoramas/combat_2_day/panorama_5.jpg new file mode 100644 index 00000000..95398c35 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/combat_2_day/panorama_5.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/combat_2_day/panorama_5.png b/src/main/resources/assets/notenoughupdates/panoramas/combat_2_day/panorama_5.png deleted file mode 100644 index 140ae13b..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/combat_2_day/panorama_5.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/combat_2_night/panorama_0.jpg b/src/main/resources/assets/notenoughupdates/panoramas/combat_2_night/panorama_0.jpg new file mode 100644 index 00000000..837a2928 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/combat_2_night/panorama_0.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/combat_2_night/panorama_0.png b/src/main/resources/assets/notenoughupdates/panoramas/combat_2_night/panorama_0.png deleted file mode 100644 index e2870888..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/combat_2_night/panorama_0.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/combat_2_night/panorama_1.jpg b/src/main/resources/assets/notenoughupdates/panoramas/combat_2_night/panorama_1.jpg new file mode 100644 index 00000000..6f988421 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/combat_2_night/panorama_1.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/combat_2_night/panorama_1.png b/src/main/resources/assets/notenoughupdates/panoramas/combat_2_night/panorama_1.png deleted file mode 100644 index 8b922268..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/combat_2_night/panorama_1.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/combat_2_night/panorama_2.jpg b/src/main/resources/assets/notenoughupdates/panoramas/combat_2_night/panorama_2.jpg new file mode 100644 index 00000000..0c664062 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/combat_2_night/panorama_2.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/combat_2_night/panorama_2.png b/src/main/resources/assets/notenoughupdates/panoramas/combat_2_night/panorama_2.png deleted file mode 100644 index bb96f17d..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/combat_2_night/panorama_2.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/combat_2_night/panorama_3.jpg b/src/main/resources/assets/notenoughupdates/panoramas/combat_2_night/panorama_3.jpg new file mode 100644 index 00000000..278d92f1 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/combat_2_night/panorama_3.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/combat_2_night/panorama_3.png b/src/main/resources/assets/notenoughupdates/panoramas/combat_2_night/panorama_3.png deleted file mode 100644 index 1371adc2..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/combat_2_night/panorama_3.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/combat_2_night/panorama_4.jpg b/src/main/resources/assets/notenoughupdates/panoramas/combat_2_night/panorama_4.jpg new file mode 100644 index 00000000..f9205c52 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/combat_2_night/panorama_4.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/combat_2_night/panorama_4.png b/src/main/resources/assets/notenoughupdates/panoramas/combat_2_night/panorama_4.png deleted file mode 100644 index 88d41995..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/combat_2_night/panorama_4.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/combat_2_night/panorama_5.jpg b/src/main/resources/assets/notenoughupdates/panoramas/combat_2_night/panorama_5.jpg new file mode 100644 index 00000000..5ca08bf9 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/combat_2_night/panorama_5.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/combat_2_night/panorama_5.png b/src/main/resources/assets/notenoughupdates/panoramas/combat_2_night/panorama_5.png deleted file mode 100644 index 569f9b00..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/combat_2_night/panorama_5.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/combat_3_day/panorama_0.jpg b/src/main/resources/assets/notenoughupdates/panoramas/combat_3_day/panorama_0.jpg new file mode 100644 index 00000000..f1f6a028 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/combat_3_day/panorama_0.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/combat_3_day/panorama_0.png b/src/main/resources/assets/notenoughupdates/panoramas/combat_3_day/panorama_0.png deleted file mode 100644 index 775021fb..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/combat_3_day/panorama_0.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/combat_3_day/panorama_1.jpg b/src/main/resources/assets/notenoughupdates/panoramas/combat_3_day/panorama_1.jpg new file mode 100644 index 00000000..882e20a2 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/combat_3_day/panorama_1.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/combat_3_day/panorama_1.png b/src/main/resources/assets/notenoughupdates/panoramas/combat_3_day/panorama_1.png deleted file mode 100644 index 687741e0..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/combat_3_day/panorama_1.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/combat_3_day/panorama_2.jpg b/src/main/resources/assets/notenoughupdates/panoramas/combat_3_day/panorama_2.jpg new file mode 100644 index 00000000..3ec9391f Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/combat_3_day/panorama_2.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/combat_3_day/panorama_2.png b/src/main/resources/assets/notenoughupdates/panoramas/combat_3_day/panorama_2.png deleted file mode 100644 index a9667bc0..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/combat_3_day/panorama_2.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/combat_3_day/panorama_3.jpg b/src/main/resources/assets/notenoughupdates/panoramas/combat_3_day/panorama_3.jpg new file mode 100644 index 00000000..0c99863b Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/combat_3_day/panorama_3.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/combat_3_day/panorama_3.png b/src/main/resources/assets/notenoughupdates/panoramas/combat_3_day/panorama_3.png deleted file mode 100644 index 0ed0309f..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/combat_3_day/panorama_3.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/combat_3_day/panorama_4.jpg b/src/main/resources/assets/notenoughupdates/panoramas/combat_3_day/panorama_4.jpg new file mode 100644 index 00000000..92b62ab3 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/combat_3_day/panorama_4.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/combat_3_day/panorama_4.png b/src/main/resources/assets/notenoughupdates/panoramas/combat_3_day/panorama_4.png deleted file mode 100644 index 855c0fb3..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/combat_3_day/panorama_4.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/combat_3_day/panorama_5.jpg b/src/main/resources/assets/notenoughupdates/panoramas/combat_3_day/panorama_5.jpg new file mode 100644 index 00000000..169c36be Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/combat_3_day/panorama_5.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/combat_3_day/panorama_5.png b/src/main/resources/assets/notenoughupdates/panoramas/combat_3_day/panorama_5.png deleted file mode 100644 index fd2f1828..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/combat_3_day/panorama_5.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/combat_3_night/panorama_0.jpg b/src/main/resources/assets/notenoughupdates/panoramas/combat_3_night/panorama_0.jpg new file mode 100644 index 00000000..cb60f6d3 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/combat_3_night/panorama_0.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/combat_3_night/panorama_0.png b/src/main/resources/assets/notenoughupdates/panoramas/combat_3_night/panorama_0.png deleted file mode 100644 index 693dc7a1..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/combat_3_night/panorama_0.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/combat_3_night/panorama_1.jpg b/src/main/resources/assets/notenoughupdates/panoramas/combat_3_night/panorama_1.jpg new file mode 100644 index 00000000..d538b920 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/combat_3_night/panorama_1.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/combat_3_night/panorama_1.png b/src/main/resources/assets/notenoughupdates/panoramas/combat_3_night/panorama_1.png deleted file mode 100644 index 6294f539..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/combat_3_night/panorama_1.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/combat_3_night/panorama_2.jpg b/src/main/resources/assets/notenoughupdates/panoramas/combat_3_night/panorama_2.jpg new file mode 100644 index 00000000..27894a8a Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/combat_3_night/panorama_2.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/combat_3_night/panorama_2.png b/src/main/resources/assets/notenoughupdates/panoramas/combat_3_night/panorama_2.png deleted file mode 100644 index 3c9c3be5..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/combat_3_night/panorama_2.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/combat_3_night/panorama_3.jpg b/src/main/resources/assets/notenoughupdates/panoramas/combat_3_night/panorama_3.jpg new file mode 100644 index 00000000..39a3b594 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/combat_3_night/panorama_3.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/combat_3_night/panorama_3.png b/src/main/resources/assets/notenoughupdates/panoramas/combat_3_night/panorama_3.png deleted file mode 100644 index 5c8d2256..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/combat_3_night/panorama_3.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/combat_3_night/panorama_4.jpg b/src/main/resources/assets/notenoughupdates/panoramas/combat_3_night/panorama_4.jpg new file mode 100644 index 00000000..b172a40c Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/combat_3_night/panorama_4.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/combat_3_night/panorama_4.png b/src/main/resources/assets/notenoughupdates/panoramas/combat_3_night/panorama_4.png deleted file mode 100644 index 27cea30b..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/combat_3_night/panorama_4.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/combat_3_night/panorama_5.jpg b/src/main/resources/assets/notenoughupdates/panoramas/combat_3_night/panorama_5.jpg new file mode 100644 index 00000000..3edaba89 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/combat_3_night/panorama_5.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/combat_3_night/panorama_5.png b/src/main/resources/assets/notenoughupdates/panoramas/combat_3_night/panorama_5.png deleted file mode 100644 index 08de77f1..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/combat_3_night/panorama_5.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/dark_auction/panorama_0.jpg b/src/main/resources/assets/notenoughupdates/panoramas/dark_auction/panorama_0.jpg new file mode 100644 index 00000000..32f9f7bb Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/dark_auction/panorama_0.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/dark_auction/panorama_0.png b/src/main/resources/assets/notenoughupdates/panoramas/dark_auction/panorama_0.png deleted file mode 100644 index 3d34b9c0..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/dark_auction/panorama_0.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/dark_auction/panorama_1.jpg b/src/main/resources/assets/notenoughupdates/panoramas/dark_auction/panorama_1.jpg new file mode 100644 index 00000000..ece00b29 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/dark_auction/panorama_1.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/dark_auction/panorama_1.png b/src/main/resources/assets/notenoughupdates/panoramas/dark_auction/panorama_1.png deleted file mode 100644 index dff319d4..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/dark_auction/panorama_1.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/dark_auction/panorama_2.jpg b/src/main/resources/assets/notenoughupdates/panoramas/dark_auction/panorama_2.jpg new file mode 100644 index 00000000..298621e3 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/dark_auction/panorama_2.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/dark_auction/panorama_2.png b/src/main/resources/assets/notenoughupdates/panoramas/dark_auction/panorama_2.png deleted file mode 100644 index 3c9260c0..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/dark_auction/panorama_2.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/dark_auction/panorama_3.jpg b/src/main/resources/assets/notenoughupdates/panoramas/dark_auction/panorama_3.jpg new file mode 100644 index 00000000..ed4af05e Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/dark_auction/panorama_3.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/dark_auction/panorama_3.png b/src/main/resources/assets/notenoughupdates/panoramas/dark_auction/panorama_3.png deleted file mode 100644 index 04bb6391..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/dark_auction/panorama_3.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/dark_auction/panorama_4.jpg b/src/main/resources/assets/notenoughupdates/panoramas/dark_auction/panorama_4.jpg new file mode 100644 index 00000000..aca79dcf Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/dark_auction/panorama_4.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/dark_auction/panorama_4.png b/src/main/resources/assets/notenoughupdates/panoramas/dark_auction/panorama_4.png deleted file mode 100644 index e530dbe4..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/dark_auction/panorama_4.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/dark_auction/panorama_5.jpg b/src/main/resources/assets/notenoughupdates/panoramas/dark_auction/panorama_5.jpg new file mode 100644 index 00000000..398e21c9 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/dark_auction/panorama_5.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/dark_auction/panorama_5.png b/src/main/resources/assets/notenoughupdates/panoramas/dark_auction/panorama_5.png deleted file mode 100644 index e34de57e..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/dark_auction/panorama_5.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/dungeon/panorama_0.jpg b/src/main/resources/assets/notenoughupdates/panoramas/dungeon/panorama_0.jpg new file mode 100644 index 00000000..494c5fe0 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/dungeon/panorama_0.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/dungeon/panorama_0.png b/src/main/resources/assets/notenoughupdates/panoramas/dungeon/panorama_0.png deleted file mode 100644 index 6efddb7d..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/dungeon/panorama_0.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/dungeon/panorama_1.jpg b/src/main/resources/assets/notenoughupdates/panoramas/dungeon/panorama_1.jpg new file mode 100644 index 00000000..5da4d3e5 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/dungeon/panorama_1.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/dungeon/panorama_1.png b/src/main/resources/assets/notenoughupdates/panoramas/dungeon/panorama_1.png deleted file mode 100644 index e6b8b0f0..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/dungeon/panorama_1.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/dungeon/panorama_2.jpg b/src/main/resources/assets/notenoughupdates/panoramas/dungeon/panorama_2.jpg new file mode 100644 index 00000000..445c31dc Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/dungeon/panorama_2.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/dungeon/panorama_2.png b/src/main/resources/assets/notenoughupdates/panoramas/dungeon/panorama_2.png deleted file mode 100644 index 5cbd1130..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/dungeon/panorama_2.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/dungeon/panorama_3.jpg b/src/main/resources/assets/notenoughupdates/panoramas/dungeon/panorama_3.jpg new file mode 100644 index 00000000..1de0182b Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/dungeon/panorama_3.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/dungeon/panorama_3.png b/src/main/resources/assets/notenoughupdates/panoramas/dungeon/panorama_3.png deleted file mode 100644 index bfb5b6ea..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/dungeon/panorama_3.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/dungeon/panorama_4.jpg b/src/main/resources/assets/notenoughupdates/panoramas/dungeon/panorama_4.jpg new file mode 100644 index 00000000..75b6cd4e Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/dungeon/panorama_4.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/dungeon/panorama_4.png b/src/main/resources/assets/notenoughupdates/panoramas/dungeon/panorama_4.png deleted file mode 100644 index 76b83fa8..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/dungeon/panorama_4.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/dungeon/panorama_5.jpg b/src/main/resources/assets/notenoughupdates/panoramas/dungeon/panorama_5.jpg new file mode 100644 index 00000000..c5e99eac Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/dungeon/panorama_5.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/dungeon/panorama_5.png b/src/main/resources/assets/notenoughupdates/panoramas/dungeon/panorama_5.png deleted file mode 100644 index 522db81f..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/dungeon/panorama_5.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/dungeon_hub/panorama_0.jpg b/src/main/resources/assets/notenoughupdates/panoramas/dungeon_hub/panorama_0.jpg new file mode 100644 index 00000000..494c5fe0 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/dungeon_hub/panorama_0.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/dungeon_hub/panorama_0.png b/src/main/resources/assets/notenoughupdates/panoramas/dungeon_hub/panorama_0.png deleted file mode 100644 index 6efddb7d..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/dungeon_hub/panorama_0.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/dungeon_hub/panorama_1.jpg b/src/main/resources/assets/notenoughupdates/panoramas/dungeon_hub/panorama_1.jpg new file mode 100644 index 00000000..5da4d3e5 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/dungeon_hub/panorama_1.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/dungeon_hub/panorama_1.png b/src/main/resources/assets/notenoughupdates/panoramas/dungeon_hub/panorama_1.png deleted file mode 100644 index e6b8b0f0..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/dungeon_hub/panorama_1.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/dungeon_hub/panorama_2.jpg b/src/main/resources/assets/notenoughupdates/panoramas/dungeon_hub/panorama_2.jpg new file mode 100644 index 00000000..445c31dc Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/dungeon_hub/panorama_2.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/dungeon_hub/panorama_2.png b/src/main/resources/assets/notenoughupdates/panoramas/dungeon_hub/panorama_2.png deleted file mode 100644 index 5cbd1130..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/dungeon_hub/panorama_2.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/dungeon_hub/panorama_3.jpg b/src/main/resources/assets/notenoughupdates/panoramas/dungeon_hub/panorama_3.jpg new file mode 100644 index 00000000..1de0182b Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/dungeon_hub/panorama_3.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/dungeon_hub/panorama_3.png b/src/main/resources/assets/notenoughupdates/panoramas/dungeon_hub/panorama_3.png deleted file mode 100644 index bfb5b6ea..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/dungeon_hub/panorama_3.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/dungeon_hub/panorama_4.jpg b/src/main/resources/assets/notenoughupdates/panoramas/dungeon_hub/panorama_4.jpg new file mode 100644 index 00000000..75b6cd4e Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/dungeon_hub/panorama_4.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/dungeon_hub/panorama_4.png b/src/main/resources/assets/notenoughupdates/panoramas/dungeon_hub/panorama_4.png deleted file mode 100644 index 76b83fa8..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/dungeon_hub/panorama_4.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/dungeon_hub/panorama_5.jpg b/src/main/resources/assets/notenoughupdates/panoramas/dungeon_hub/panorama_5.jpg new file mode 100644 index 00000000..c5e99eac Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/dungeon_hub/panorama_5.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/dungeon_hub/panorama_5.png b/src/main/resources/assets/notenoughupdates/panoramas/dungeon_hub/panorama_5.png deleted file mode 100644 index 522db81f..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/dungeon_hub/panorama_5.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/dynamic_day/panorama_0.jpg b/src/main/resources/assets/notenoughupdates/panoramas/dynamic_day/panorama_0.jpg new file mode 100644 index 00000000..f6231245 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/dynamic_day/panorama_0.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/dynamic_day/panorama_0.png b/src/main/resources/assets/notenoughupdates/panoramas/dynamic_day/panorama_0.png deleted file mode 100644 index b965bf11..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/dynamic_day/panorama_0.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/dynamic_day/panorama_1.jpg b/src/main/resources/assets/notenoughupdates/panoramas/dynamic_day/panorama_1.jpg new file mode 100644 index 00000000..286b3a38 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/dynamic_day/panorama_1.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/dynamic_day/panorama_1.png b/src/main/resources/assets/notenoughupdates/panoramas/dynamic_day/panorama_1.png deleted file mode 100644 index 090ce488..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/dynamic_day/panorama_1.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/dynamic_day/panorama_2.jpg b/src/main/resources/assets/notenoughupdates/panoramas/dynamic_day/panorama_2.jpg new file mode 100644 index 00000000..c6fca879 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/dynamic_day/panorama_2.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/dynamic_day/panorama_2.png b/src/main/resources/assets/notenoughupdates/panoramas/dynamic_day/panorama_2.png deleted file mode 100644 index 8d146dcc..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/dynamic_day/panorama_2.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/dynamic_day/panorama_3.jpg b/src/main/resources/assets/notenoughupdates/panoramas/dynamic_day/panorama_3.jpg new file mode 100644 index 00000000..01b2f816 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/dynamic_day/panorama_3.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/dynamic_day/panorama_3.png b/src/main/resources/assets/notenoughupdates/panoramas/dynamic_day/panorama_3.png deleted file mode 100644 index e7ec0f8c..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/dynamic_day/panorama_3.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/dynamic_day/panorama_4.jpg b/src/main/resources/assets/notenoughupdates/panoramas/dynamic_day/panorama_4.jpg new file mode 100644 index 00000000..a5c810fe Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/dynamic_day/panorama_4.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/dynamic_day/panorama_4.png b/src/main/resources/assets/notenoughupdates/panoramas/dynamic_day/panorama_4.png deleted file mode 100644 index cf19ee51..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/dynamic_day/panorama_4.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/dynamic_day/panorama_5.jpg b/src/main/resources/assets/notenoughupdates/panoramas/dynamic_day/panorama_5.jpg new file mode 100644 index 00000000..30d32a08 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/dynamic_day/panorama_5.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/dynamic_day/panorama_5.png b/src/main/resources/assets/notenoughupdates/panoramas/dynamic_day/panorama_5.png deleted file mode 100644 index fa489b5b..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/dynamic_day/panorama_5.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/dynamic_night/panorama_0.jpg b/src/main/resources/assets/notenoughupdates/panoramas/dynamic_night/panorama_0.jpg new file mode 100644 index 00000000..b1fb3e84 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/dynamic_night/panorama_0.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/dynamic_night/panorama_0.png b/src/main/resources/assets/notenoughupdates/panoramas/dynamic_night/panorama_0.png deleted file mode 100644 index d5a0d326..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/dynamic_night/panorama_0.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/dynamic_night/panorama_1.jpg b/src/main/resources/assets/notenoughupdates/panoramas/dynamic_night/panorama_1.jpg new file mode 100644 index 00000000..f7642beb Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/dynamic_night/panorama_1.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/dynamic_night/panorama_1.png b/src/main/resources/assets/notenoughupdates/panoramas/dynamic_night/panorama_1.png deleted file mode 100644 index 508ca40d..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/dynamic_night/panorama_1.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/dynamic_night/panorama_2.jpg b/src/main/resources/assets/notenoughupdates/panoramas/dynamic_night/panorama_2.jpg new file mode 100644 index 00000000..3cb3b42f Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/dynamic_night/panorama_2.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/dynamic_night/panorama_2.png b/src/main/resources/assets/notenoughupdates/panoramas/dynamic_night/panorama_2.png deleted file mode 100644 index b2bb4554..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/dynamic_night/panorama_2.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/dynamic_night/panorama_3.jpg b/src/main/resources/assets/notenoughupdates/panoramas/dynamic_night/panorama_3.jpg new file mode 100644 index 00000000..a98d7672 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/dynamic_night/panorama_3.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/dynamic_night/panorama_3.png b/src/main/resources/assets/notenoughupdates/panoramas/dynamic_night/panorama_3.png deleted file mode 100644 index 8e02189f..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/dynamic_night/panorama_3.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/dynamic_night/panorama_4.jpg b/src/main/resources/assets/notenoughupdates/panoramas/dynamic_night/panorama_4.jpg new file mode 100644 index 00000000..ad2b8c70 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/dynamic_night/panorama_4.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/dynamic_night/panorama_4.png b/src/main/resources/assets/notenoughupdates/panoramas/dynamic_night/panorama_4.png deleted file mode 100644 index c4884e35..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/dynamic_night/panorama_4.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/dynamic_night/panorama_5.jpg b/src/main/resources/assets/notenoughupdates/panoramas/dynamic_night/panorama_5.jpg new file mode 100644 index 00000000..f2e93cde Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/dynamic_night/panorama_5.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/dynamic_night/panorama_5.png b/src/main/resources/assets/notenoughupdates/panoramas/dynamic_night/panorama_5.png deleted file mode 100644 index 3a84542a..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/dynamic_night/panorama_5.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/farming_1_day/panorama_0.jpg b/src/main/resources/assets/notenoughupdates/panoramas/farming_1_day/panorama_0.jpg new file mode 100644 index 00000000..c03b849d Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/farming_1_day/panorama_0.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/farming_1_day/panorama_0.png b/src/main/resources/assets/notenoughupdates/panoramas/farming_1_day/panorama_0.png deleted file mode 100644 index aa29d196..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/farming_1_day/panorama_0.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/farming_1_day/panorama_1.jpg b/src/main/resources/assets/notenoughupdates/panoramas/farming_1_day/panorama_1.jpg new file mode 100644 index 00000000..2286407b Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/farming_1_day/panorama_1.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/farming_1_day/panorama_1.png b/src/main/resources/assets/notenoughupdates/panoramas/farming_1_day/panorama_1.png deleted file mode 100644 index 4f08df59..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/farming_1_day/panorama_1.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/farming_1_day/panorama_2.jpg b/src/main/resources/assets/notenoughupdates/panoramas/farming_1_day/panorama_2.jpg new file mode 100644 index 00000000..62127f51 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/farming_1_day/panorama_2.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/farming_1_day/panorama_2.png b/src/main/resources/assets/notenoughupdates/panoramas/farming_1_day/panorama_2.png deleted file mode 100644 index 9a260767..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/farming_1_day/panorama_2.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/farming_1_day/panorama_3.jpg b/src/main/resources/assets/notenoughupdates/panoramas/farming_1_day/panorama_3.jpg new file mode 100644 index 00000000..fe631d89 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/farming_1_day/panorama_3.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/farming_1_day/panorama_3.png b/src/main/resources/assets/notenoughupdates/panoramas/farming_1_day/panorama_3.png deleted file mode 100644 index d07ee5cf..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/farming_1_day/panorama_3.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/farming_1_day/panorama_4.jpg b/src/main/resources/assets/notenoughupdates/panoramas/farming_1_day/panorama_4.jpg new file mode 100644 index 00000000..cf835eea Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/farming_1_day/panorama_4.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/farming_1_day/panorama_4.png b/src/main/resources/assets/notenoughupdates/panoramas/farming_1_day/panorama_4.png deleted file mode 100644 index c4fe2e62..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/farming_1_day/panorama_4.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/farming_1_day/panorama_5.jpg b/src/main/resources/assets/notenoughupdates/panoramas/farming_1_day/panorama_5.jpg new file mode 100644 index 00000000..879b5747 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/farming_1_day/panorama_5.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/farming_1_day/panorama_5.png b/src/main/resources/assets/notenoughupdates/panoramas/farming_1_day/panorama_5.png deleted file mode 100644 index 99f4d13a..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/farming_1_day/panorama_5.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/farming_1_night/panorama_0.jpg b/src/main/resources/assets/notenoughupdates/panoramas/farming_1_night/panorama_0.jpg new file mode 100644 index 00000000..265515f6 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/farming_1_night/panorama_0.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/farming_1_night/panorama_0.png b/src/main/resources/assets/notenoughupdates/panoramas/farming_1_night/panorama_0.png deleted file mode 100644 index a26a4899..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/farming_1_night/panorama_0.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/farming_1_night/panorama_1.jpg b/src/main/resources/assets/notenoughupdates/panoramas/farming_1_night/panorama_1.jpg new file mode 100644 index 00000000..e774ca7a Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/farming_1_night/panorama_1.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/farming_1_night/panorama_1.png b/src/main/resources/assets/notenoughupdates/panoramas/farming_1_night/panorama_1.png deleted file mode 100644 index f2461236..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/farming_1_night/panorama_1.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/farming_1_night/panorama_2.jpg b/src/main/resources/assets/notenoughupdates/panoramas/farming_1_night/panorama_2.jpg new file mode 100644 index 00000000..1e3c8a98 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/farming_1_night/panorama_2.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/farming_1_night/panorama_2.png b/src/main/resources/assets/notenoughupdates/panoramas/farming_1_night/panorama_2.png deleted file mode 100644 index f70bad58..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/farming_1_night/panorama_2.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/farming_1_night/panorama_3.jpg b/src/main/resources/assets/notenoughupdates/panoramas/farming_1_night/panorama_3.jpg new file mode 100644 index 00000000..7833eb89 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/farming_1_night/panorama_3.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/farming_1_night/panorama_3.png b/src/main/resources/assets/notenoughupdates/panoramas/farming_1_night/panorama_3.png deleted file mode 100644 index 09fe998c..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/farming_1_night/panorama_3.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/farming_1_night/panorama_4.jpg b/src/main/resources/assets/notenoughupdates/panoramas/farming_1_night/panorama_4.jpg new file mode 100644 index 00000000..63fafd87 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/farming_1_night/panorama_4.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/farming_1_night/panorama_4.png b/src/main/resources/assets/notenoughupdates/panoramas/farming_1_night/panorama_4.png deleted file mode 100644 index ca0e6bb2..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/farming_1_night/panorama_4.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/farming_1_night/panorama_5.jpg b/src/main/resources/assets/notenoughupdates/panoramas/farming_1_night/panorama_5.jpg new file mode 100644 index 00000000..ae3bdbdf Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/farming_1_night/panorama_5.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/farming_1_night/panorama_5.png b/src/main/resources/assets/notenoughupdates/panoramas/farming_1_night/panorama_5.png deleted file mode 100644 index e3b7ca22..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/farming_1_night/panorama_5.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/farming_2_day/panorama_0.jpg b/src/main/resources/assets/notenoughupdates/panoramas/farming_2_day/panorama_0.jpg new file mode 100644 index 00000000..e03657af Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/farming_2_day/panorama_0.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/farming_2_day/panorama_0.png b/src/main/resources/assets/notenoughupdates/panoramas/farming_2_day/panorama_0.png deleted file mode 100644 index 119ef422..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/farming_2_day/panorama_0.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/farming_2_day/panorama_1.jpg b/src/main/resources/assets/notenoughupdates/panoramas/farming_2_day/panorama_1.jpg new file mode 100644 index 00000000..27db8499 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/farming_2_day/panorama_1.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/farming_2_day/panorama_1.png b/src/main/resources/assets/notenoughupdates/panoramas/farming_2_day/panorama_1.png deleted file mode 100644 index 4182d4ed..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/farming_2_day/panorama_1.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/farming_2_day/panorama_2.jpg b/src/main/resources/assets/notenoughupdates/panoramas/farming_2_day/panorama_2.jpg new file mode 100644 index 00000000..c83f2c91 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/farming_2_day/panorama_2.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/farming_2_day/panorama_2.png b/src/main/resources/assets/notenoughupdates/panoramas/farming_2_day/panorama_2.png deleted file mode 100644 index 339ee33d..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/farming_2_day/panorama_2.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/farming_2_day/panorama_3.jpg b/src/main/resources/assets/notenoughupdates/panoramas/farming_2_day/panorama_3.jpg new file mode 100644 index 00000000..9b730712 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/farming_2_day/panorama_3.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/farming_2_day/panorama_3.png b/src/main/resources/assets/notenoughupdates/panoramas/farming_2_day/panorama_3.png deleted file mode 100644 index 30229f16..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/farming_2_day/panorama_3.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/farming_2_day/panorama_4.jpg b/src/main/resources/assets/notenoughupdates/panoramas/farming_2_day/panorama_4.jpg new file mode 100644 index 00000000..e687ac9d Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/farming_2_day/panorama_4.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/farming_2_day/panorama_4.png b/src/main/resources/assets/notenoughupdates/panoramas/farming_2_day/panorama_4.png deleted file mode 100644 index c4047c85..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/farming_2_day/panorama_4.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/farming_2_day/panorama_5.jpg b/src/main/resources/assets/notenoughupdates/panoramas/farming_2_day/panorama_5.jpg new file mode 100644 index 00000000..a17337b9 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/farming_2_day/panorama_5.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/farming_2_day/panorama_5.png b/src/main/resources/assets/notenoughupdates/panoramas/farming_2_day/panorama_5.png deleted file mode 100644 index 7473e4c3..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/farming_2_day/panorama_5.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/farming_2_night/panorama_0.jpg b/src/main/resources/assets/notenoughupdates/panoramas/farming_2_night/panorama_0.jpg new file mode 100644 index 00000000..26909780 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/farming_2_night/panorama_0.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/farming_2_night/panorama_0.png b/src/main/resources/assets/notenoughupdates/panoramas/farming_2_night/panorama_0.png deleted file mode 100644 index 89d1187b..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/farming_2_night/panorama_0.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/farming_2_night/panorama_1.jpg b/src/main/resources/assets/notenoughupdates/panoramas/farming_2_night/panorama_1.jpg new file mode 100644 index 00000000..d1eb9e1b Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/farming_2_night/panorama_1.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/farming_2_night/panorama_1.png b/src/main/resources/assets/notenoughupdates/panoramas/farming_2_night/panorama_1.png deleted file mode 100644 index 32c0d4fb..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/farming_2_night/panorama_1.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/farming_2_night/panorama_2.jpg b/src/main/resources/assets/notenoughupdates/panoramas/farming_2_night/panorama_2.jpg new file mode 100644 index 00000000..dafe1dd3 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/farming_2_night/panorama_2.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/farming_2_night/panorama_2.png b/src/main/resources/assets/notenoughupdates/panoramas/farming_2_night/panorama_2.png deleted file mode 100644 index 9aba96d7..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/farming_2_night/panorama_2.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/farming_2_night/panorama_3.jpg b/src/main/resources/assets/notenoughupdates/panoramas/farming_2_night/panorama_3.jpg new file mode 100644 index 00000000..0e870f38 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/farming_2_night/panorama_3.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/farming_2_night/panorama_3.png b/src/main/resources/assets/notenoughupdates/panoramas/farming_2_night/panorama_3.png deleted file mode 100644 index ba3e3405..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/farming_2_night/panorama_3.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/farming_2_night/panorama_4.jpg b/src/main/resources/assets/notenoughupdates/panoramas/farming_2_night/panorama_4.jpg new file mode 100644 index 00000000..51a760f5 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/farming_2_night/panorama_4.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/farming_2_night/panorama_4.png b/src/main/resources/assets/notenoughupdates/panoramas/farming_2_night/panorama_4.png deleted file mode 100644 index d0a821a2..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/farming_2_night/panorama_4.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/farming_2_night/panorama_5.jpg b/src/main/resources/assets/notenoughupdates/panoramas/farming_2_night/panorama_5.jpg new file mode 100644 index 00000000..f40c330c Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/farming_2_night/panorama_5.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/farming_2_night/panorama_5.png b/src/main/resources/assets/notenoughupdates/panoramas/farming_2_night/panorama_5.png deleted file mode 100644 index 4c5af604..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/farming_2_night/panorama_5.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/foraging_1_day/panorama_0.jpg b/src/main/resources/assets/notenoughupdates/panoramas/foraging_1_day/panorama_0.jpg new file mode 100644 index 00000000..9a12896f Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/foraging_1_day/panorama_0.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/foraging_1_day/panorama_0.png b/src/main/resources/assets/notenoughupdates/panoramas/foraging_1_day/panorama_0.png deleted file mode 100644 index 9f10e34e..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/foraging_1_day/panorama_0.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/foraging_1_day/panorama_1.jpg b/src/main/resources/assets/notenoughupdates/panoramas/foraging_1_day/panorama_1.jpg new file mode 100644 index 00000000..c157ccdd Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/foraging_1_day/panorama_1.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/foraging_1_day/panorama_1.png b/src/main/resources/assets/notenoughupdates/panoramas/foraging_1_day/panorama_1.png deleted file mode 100644 index b3f06ebe..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/foraging_1_day/panorama_1.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/foraging_1_day/panorama_2.jpg b/src/main/resources/assets/notenoughupdates/panoramas/foraging_1_day/panorama_2.jpg new file mode 100644 index 00000000..ecee024b Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/foraging_1_day/panorama_2.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/foraging_1_day/panorama_2.png b/src/main/resources/assets/notenoughupdates/panoramas/foraging_1_day/panorama_2.png deleted file mode 100644 index 2e28c95a..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/foraging_1_day/panorama_2.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/foraging_1_day/panorama_3.jpg b/src/main/resources/assets/notenoughupdates/panoramas/foraging_1_day/panorama_3.jpg new file mode 100644 index 00000000..0dbef91f Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/foraging_1_day/panorama_3.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/foraging_1_day/panorama_3.png b/src/main/resources/assets/notenoughupdates/panoramas/foraging_1_day/panorama_3.png deleted file mode 100644 index b83064c4..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/foraging_1_day/panorama_3.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/foraging_1_day/panorama_4.jpg b/src/main/resources/assets/notenoughupdates/panoramas/foraging_1_day/panorama_4.jpg new file mode 100644 index 00000000..681aa33e Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/foraging_1_day/panorama_4.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/foraging_1_day/panorama_4.png b/src/main/resources/assets/notenoughupdates/panoramas/foraging_1_day/panorama_4.png deleted file mode 100644 index e8e30ed2..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/foraging_1_day/panorama_4.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/foraging_1_day/panorama_5.jpg b/src/main/resources/assets/notenoughupdates/panoramas/foraging_1_day/panorama_5.jpg new file mode 100644 index 00000000..6be866d2 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/foraging_1_day/panorama_5.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/foraging_1_day/panorama_5.png b/src/main/resources/assets/notenoughupdates/panoramas/foraging_1_day/panorama_5.png deleted file mode 100644 index 627f2a65..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/foraging_1_day/panorama_5.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/foraging_1_night/panorama_0.jpg b/src/main/resources/assets/notenoughupdates/panoramas/foraging_1_night/panorama_0.jpg new file mode 100644 index 00000000..050e4f78 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/foraging_1_night/panorama_0.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/foraging_1_night/panorama_0.png b/src/main/resources/assets/notenoughupdates/panoramas/foraging_1_night/panorama_0.png deleted file mode 100644 index fec494fa..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/foraging_1_night/panorama_0.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/foraging_1_night/panorama_1.jpg b/src/main/resources/assets/notenoughupdates/panoramas/foraging_1_night/panorama_1.jpg new file mode 100644 index 00000000..c3f012a2 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/foraging_1_night/panorama_1.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/foraging_1_night/panorama_1.png b/src/main/resources/assets/notenoughupdates/panoramas/foraging_1_night/panorama_1.png deleted file mode 100644 index a294b712..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/foraging_1_night/panorama_1.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/foraging_1_night/panorama_2.jpg b/src/main/resources/assets/notenoughupdates/panoramas/foraging_1_night/panorama_2.jpg new file mode 100644 index 00000000..557d7396 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/foraging_1_night/panorama_2.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/foraging_1_night/panorama_2.png b/src/main/resources/assets/notenoughupdates/panoramas/foraging_1_night/panorama_2.png deleted file mode 100644 index ac53acc0..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/foraging_1_night/panorama_2.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/foraging_1_night/panorama_3.jpg b/src/main/resources/assets/notenoughupdates/panoramas/foraging_1_night/panorama_3.jpg new file mode 100644 index 00000000..3af3638e Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/foraging_1_night/panorama_3.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/foraging_1_night/panorama_3.png b/src/main/resources/assets/notenoughupdates/panoramas/foraging_1_night/panorama_3.png deleted file mode 100644 index f6034c0c..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/foraging_1_night/panorama_3.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/foraging_1_night/panorama_4.jpg b/src/main/resources/assets/notenoughupdates/panoramas/foraging_1_night/panorama_4.jpg new file mode 100644 index 00000000..b5f913e6 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/foraging_1_night/panorama_4.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/foraging_1_night/panorama_4.png b/src/main/resources/assets/notenoughupdates/panoramas/foraging_1_night/panorama_4.png deleted file mode 100644 index cff34967..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/foraging_1_night/panorama_4.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/foraging_1_night/panorama_5.jpg b/src/main/resources/assets/notenoughupdates/panoramas/foraging_1_night/panorama_5.jpg new file mode 100644 index 00000000..d3c13992 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/foraging_1_night/panorama_5.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/foraging_1_night/panorama_5.png b/src/main/resources/assets/notenoughupdates/panoramas/foraging_1_night/panorama_5.png deleted file mode 100644 index d6c9e00f..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/foraging_1_night/panorama_5.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/hub_day/panorama_0.jpg b/src/main/resources/assets/notenoughupdates/panoramas/hub_day/panorama_0.jpg new file mode 100644 index 00000000..0d5f26dd Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/hub_day/panorama_0.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/hub_day/panorama_0.png b/src/main/resources/assets/notenoughupdates/panoramas/hub_day/panorama_0.png deleted file mode 100644 index bc5d267d..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/hub_day/panorama_0.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/hub_day/panorama_1.jpg b/src/main/resources/assets/notenoughupdates/panoramas/hub_day/panorama_1.jpg new file mode 100644 index 00000000..820b92a4 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/hub_day/panorama_1.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/hub_day/panorama_1.png b/src/main/resources/assets/notenoughupdates/panoramas/hub_day/panorama_1.png deleted file mode 100644 index a8456990..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/hub_day/panorama_1.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/hub_day/panorama_2.jpg b/src/main/resources/assets/notenoughupdates/panoramas/hub_day/panorama_2.jpg new file mode 100644 index 00000000..14d01dd1 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/hub_day/panorama_2.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/hub_day/panorama_2.png b/src/main/resources/assets/notenoughupdates/panoramas/hub_day/panorama_2.png deleted file mode 100644 index d3b1f6bc..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/hub_day/panorama_2.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/hub_day/panorama_3.jpg b/src/main/resources/assets/notenoughupdates/panoramas/hub_day/panorama_3.jpg new file mode 100644 index 00000000..bfc66ec9 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/hub_day/panorama_3.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/hub_day/panorama_3.png b/src/main/resources/assets/notenoughupdates/panoramas/hub_day/panorama_3.png deleted file mode 100644 index 4aa95968..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/hub_day/panorama_3.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/hub_day/panorama_4.jpg b/src/main/resources/assets/notenoughupdates/panoramas/hub_day/panorama_4.jpg new file mode 100644 index 00000000..07f17d24 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/hub_day/panorama_4.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/hub_day/panorama_4.png b/src/main/resources/assets/notenoughupdates/panoramas/hub_day/panorama_4.png deleted file mode 100644 index ceae59a6..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/hub_day/panorama_4.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/hub_day/panorama_5.jpg b/src/main/resources/assets/notenoughupdates/panoramas/hub_day/panorama_5.jpg new file mode 100644 index 00000000..f3df82a5 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/hub_day/panorama_5.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/hub_day/panorama_5.png b/src/main/resources/assets/notenoughupdates/panoramas/hub_day/panorama_5.png deleted file mode 100644 index 8e2dc590..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/hub_day/panorama_5.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/hub_night/panorama_0.jpg b/src/main/resources/assets/notenoughupdates/panoramas/hub_night/panorama_0.jpg new file mode 100644 index 00000000..34bc84db Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/hub_night/panorama_0.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/hub_night/panorama_0.png b/src/main/resources/assets/notenoughupdates/panoramas/hub_night/panorama_0.png deleted file mode 100644 index ba98e8df..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/hub_night/panorama_0.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/hub_night/panorama_1.jpg b/src/main/resources/assets/notenoughupdates/panoramas/hub_night/panorama_1.jpg new file mode 100644 index 00000000..742d158b Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/hub_night/panorama_1.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/hub_night/panorama_1.png b/src/main/resources/assets/notenoughupdates/panoramas/hub_night/panorama_1.png deleted file mode 100644 index 2d4edc17..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/hub_night/panorama_1.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/hub_night/panorama_2.jpg b/src/main/resources/assets/notenoughupdates/panoramas/hub_night/panorama_2.jpg new file mode 100644 index 00000000..abf0a253 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/hub_night/panorama_2.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/hub_night/panorama_2.png b/src/main/resources/assets/notenoughupdates/panoramas/hub_night/panorama_2.png deleted file mode 100644 index dfc12e33..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/hub_night/panorama_2.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/hub_night/panorama_3.jpg b/src/main/resources/assets/notenoughupdates/panoramas/hub_night/panorama_3.jpg new file mode 100644 index 00000000..7efc75d6 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/hub_night/panorama_3.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/hub_night/panorama_3.png b/src/main/resources/assets/notenoughupdates/panoramas/hub_night/panorama_3.png deleted file mode 100644 index 7230ded4..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/hub_night/panorama_3.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/hub_night/panorama_4.jpg b/src/main/resources/assets/notenoughupdates/panoramas/hub_night/panorama_4.jpg new file mode 100644 index 00000000..a7f7988b Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/hub_night/panorama_4.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/hub_night/panorama_4.png b/src/main/resources/assets/notenoughupdates/panoramas/hub_night/panorama_4.png deleted file mode 100644 index 28b16a4a..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/hub_night/panorama_4.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/hub_night/panorama_5.jpg b/src/main/resources/assets/notenoughupdates/panoramas/hub_night/panorama_5.jpg new file mode 100644 index 00000000..e86e93c4 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/hub_night/panorama_5.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/hub_night/panorama_5.png b/src/main/resources/assets/notenoughupdates/panoramas/hub_night/panorama_5.png deleted file mode 100644 index 1d9daa59..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/hub_night/panorama_5.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/mining_1_day/panorama_0.jpg b/src/main/resources/assets/notenoughupdates/panoramas/mining_1_day/panorama_0.jpg new file mode 100644 index 00000000..e0c4288d Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/mining_1_day/panorama_0.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/mining_1_day/panorama_0.png b/src/main/resources/assets/notenoughupdates/panoramas/mining_1_day/panorama_0.png deleted file mode 100644 index 8e6c5146..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/mining_1_day/panorama_0.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/mining_1_day/panorama_1.jpg b/src/main/resources/assets/notenoughupdates/panoramas/mining_1_day/panorama_1.jpg new file mode 100644 index 00000000..e0cc8139 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/mining_1_day/panorama_1.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/mining_1_day/panorama_1.png b/src/main/resources/assets/notenoughupdates/panoramas/mining_1_day/panorama_1.png deleted file mode 100644 index 11541940..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/mining_1_day/panorama_1.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/mining_1_day/panorama_2.jpg b/src/main/resources/assets/notenoughupdates/panoramas/mining_1_day/panorama_2.jpg new file mode 100644 index 00000000..381912e1 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/mining_1_day/panorama_2.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/mining_1_day/panorama_2.png b/src/main/resources/assets/notenoughupdates/panoramas/mining_1_day/panorama_2.png deleted file mode 100644 index 7957ddc9..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/mining_1_day/panorama_2.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/mining_1_day/panorama_3.jpg b/src/main/resources/assets/notenoughupdates/panoramas/mining_1_day/panorama_3.jpg new file mode 100644 index 00000000..0beaf628 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/mining_1_day/panorama_3.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/mining_1_day/panorama_3.png b/src/main/resources/assets/notenoughupdates/panoramas/mining_1_day/panorama_3.png deleted file mode 100644 index 07d22a5f..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/mining_1_day/panorama_3.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/mining_1_day/panorama_4.jpg b/src/main/resources/assets/notenoughupdates/panoramas/mining_1_day/panorama_4.jpg new file mode 100644 index 00000000..26417482 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/mining_1_day/panorama_4.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/mining_1_day/panorama_4.png b/src/main/resources/assets/notenoughupdates/panoramas/mining_1_day/panorama_4.png deleted file mode 100644 index 88908d3a..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/mining_1_day/panorama_4.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/mining_1_day/panorama_5.jpg b/src/main/resources/assets/notenoughupdates/panoramas/mining_1_day/panorama_5.jpg new file mode 100644 index 00000000..8571b288 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/mining_1_day/panorama_5.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/mining_1_day/panorama_5.png b/src/main/resources/assets/notenoughupdates/panoramas/mining_1_day/panorama_5.png deleted file mode 100644 index da740bed..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/mining_1_day/panorama_5.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/mining_1_night/panorama_0.jpg b/src/main/resources/assets/notenoughupdates/panoramas/mining_1_night/panorama_0.jpg new file mode 100644 index 00000000..e90efd5f Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/mining_1_night/panorama_0.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/mining_1_night/panorama_0.png b/src/main/resources/assets/notenoughupdates/panoramas/mining_1_night/panorama_0.png deleted file mode 100644 index 0fd56624..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/mining_1_night/panorama_0.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/mining_1_night/panorama_1.jpg b/src/main/resources/assets/notenoughupdates/panoramas/mining_1_night/panorama_1.jpg new file mode 100644 index 00000000..603f9d04 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/mining_1_night/panorama_1.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/mining_1_night/panorama_1.png b/src/main/resources/assets/notenoughupdates/panoramas/mining_1_night/panorama_1.png deleted file mode 100644 index e350e3f9..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/mining_1_night/panorama_1.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/mining_1_night/panorama_2.jpg b/src/main/resources/assets/notenoughupdates/panoramas/mining_1_night/panorama_2.jpg new file mode 100644 index 00000000..b4d253f6 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/mining_1_night/panorama_2.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/mining_1_night/panorama_2.png b/src/main/resources/assets/notenoughupdates/panoramas/mining_1_night/panorama_2.png deleted file mode 100644 index 5539d6c4..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/mining_1_night/panorama_2.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/mining_1_night/panorama_3.jpg b/src/main/resources/assets/notenoughupdates/panoramas/mining_1_night/panorama_3.jpg new file mode 100644 index 00000000..abd201d1 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/mining_1_night/panorama_3.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/mining_1_night/panorama_3.png b/src/main/resources/assets/notenoughupdates/panoramas/mining_1_night/panorama_3.png deleted file mode 100644 index 10c50d3c..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/mining_1_night/panorama_3.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/mining_1_night/panorama_4.jpg b/src/main/resources/assets/notenoughupdates/panoramas/mining_1_night/panorama_4.jpg new file mode 100644 index 00000000..4c12b0b9 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/mining_1_night/panorama_4.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/mining_1_night/panorama_4.png b/src/main/resources/assets/notenoughupdates/panoramas/mining_1_night/panorama_4.png deleted file mode 100644 index e04012e1..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/mining_1_night/panorama_4.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/mining_1_night/panorama_5.jpg b/src/main/resources/assets/notenoughupdates/panoramas/mining_1_night/panorama_5.jpg new file mode 100644 index 00000000..93a5a26d Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/mining_1_night/panorama_5.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/mining_1_night/panorama_5.png b/src/main/resources/assets/notenoughupdates/panoramas/mining_1_night/panorama_5.png deleted file mode 100644 index bd9f5291..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/mining_1_night/panorama_5.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/mining_2/panorama_0.jpg b/src/main/resources/assets/notenoughupdates/panoramas/mining_2/panorama_0.jpg new file mode 100644 index 00000000..7aced4cc Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/mining_2/panorama_0.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/mining_2/panorama_0.png b/src/main/resources/assets/notenoughupdates/panoramas/mining_2/panorama_0.png deleted file mode 100644 index 06969c2a..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/mining_2/panorama_0.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/mining_2/panorama_1.jpg b/src/main/resources/assets/notenoughupdates/panoramas/mining_2/panorama_1.jpg new file mode 100644 index 00000000..852a1af2 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/mining_2/panorama_1.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/mining_2/panorama_1.png b/src/main/resources/assets/notenoughupdates/panoramas/mining_2/panorama_1.png deleted file mode 100644 index 4053ce7c..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/mining_2/panorama_1.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/mining_2/panorama_2.jpg b/src/main/resources/assets/notenoughupdates/panoramas/mining_2/panorama_2.jpg new file mode 100644 index 00000000..6710318f Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/mining_2/panorama_2.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/mining_2/panorama_2.png b/src/main/resources/assets/notenoughupdates/panoramas/mining_2/panorama_2.png deleted file mode 100644 index c583aee2..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/mining_2/panorama_2.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/mining_2/panorama_3.jpg b/src/main/resources/assets/notenoughupdates/panoramas/mining_2/panorama_3.jpg new file mode 100644 index 00000000..3d42e658 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/mining_2/panorama_3.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/mining_2/panorama_3.png b/src/main/resources/assets/notenoughupdates/panoramas/mining_2/panorama_3.png deleted file mode 100644 index afacdf61..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/mining_2/panorama_3.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/mining_2/panorama_4.jpg b/src/main/resources/assets/notenoughupdates/panoramas/mining_2/panorama_4.jpg new file mode 100644 index 00000000..08abb255 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/mining_2/panorama_4.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/mining_2/panorama_4.png b/src/main/resources/assets/notenoughupdates/panoramas/mining_2/panorama_4.png deleted file mode 100644 index 52b27e94..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/mining_2/panorama_4.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/mining_2/panorama_5.jpg b/src/main/resources/assets/notenoughupdates/panoramas/mining_2/panorama_5.jpg new file mode 100644 index 00000000..3d4845d9 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/mining_2/panorama_5.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/mining_2/panorama_5.png b/src/main/resources/assets/notenoughupdates/panoramas/mining_2/panorama_5.png deleted file mode 100644 index bb35a684..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/mining_2/panorama_5.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/missing/panorama_0.jpg b/src/main/resources/assets/notenoughupdates/panoramas/missing/panorama_0.jpg new file mode 100644 index 00000000..9482df80 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/missing/panorama_0.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/missing/panorama_1.jpg b/src/main/resources/assets/notenoughupdates/panoramas/missing/panorama_1.jpg new file mode 100644 index 00000000..1b4235dd Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/missing/panorama_1.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/missing/panorama_2.jpg b/src/main/resources/assets/notenoughupdates/panoramas/missing/panorama_2.jpg new file mode 100644 index 00000000..2f1fcc06 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/missing/panorama_2.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/missing/panorama_3.jpg b/src/main/resources/assets/notenoughupdates/panoramas/missing/panorama_3.jpg new file mode 100644 index 00000000..ce20d9b5 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/missing/panorama_3.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/missing/panorama_4.jpg b/src/main/resources/assets/notenoughupdates/panoramas/missing/panorama_4.jpg new file mode 100644 index 00000000..3dcdac57 Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/missing/panorama_4.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/missing/panorama_5.jpg b/src/main/resources/assets/notenoughupdates/panoramas/missing/panorama_5.jpg new file mode 100644 index 00000000..45f65c7c Binary files /dev/null and b/src/main/resources/assets/notenoughupdates/panoramas/missing/panorama_5.jpg differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/unknown/panorama_0.png b/src/main/resources/assets/notenoughupdates/panoramas/unknown/panorama_0.png deleted file mode 100644 index 1b03fc43..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/unknown/panorama_0.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/unknown/panorama_1.png b/src/main/resources/assets/notenoughupdates/panoramas/unknown/panorama_1.png deleted file mode 100644 index 0513b21c..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/unknown/panorama_1.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/unknown/panorama_2.png b/src/main/resources/assets/notenoughupdates/panoramas/unknown/panorama_2.png deleted file mode 100644 index fbe9bd47..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/unknown/panorama_2.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/unknown/panorama_3.png b/src/main/resources/assets/notenoughupdates/panoramas/unknown/panorama_3.png deleted file mode 100644 index b8838c4c..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/unknown/panorama_3.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/unknown/panorama_4.png b/src/main/resources/assets/notenoughupdates/panoramas/unknown/panorama_4.png deleted file mode 100644 index c3ffe75c..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/unknown/panorama_4.png and /dev/null differ diff --git a/src/main/resources/assets/notenoughupdates/panoramas/unknown/panorama_5.png b/src/main/resources/assets/notenoughupdates/panoramas/unknown/panorama_5.png deleted file mode 100644 index 16377625..00000000 Binary files a/src/main/resources/assets/notenoughupdates/panoramas/unknown/panorama_5.png and /dev/null differ -- cgit From f0293a74282cece3aa8a2a328559889d6e187209 Mon Sep 17 00:00:00 2001 From: Moulberry Date: Sun, 26 Jul 2020 12:12:25 +1000 Subject: 1.11.7 --- build.gradle | 3 +- src/main/java/NotSkyblockAddonsInstallerFrame.java | 667 +++++++++++ .../moulberry/notenoughupdates/CustomItems.java | 8 + .../notenoughupdates/GuiEnchantColour.java | 222 ++++ .../moulberry/notenoughupdates/ItemRarityHalo.java | 251 ++++ .../moulberry/notenoughupdates/NEUManager.java | 19 +- .../moulberry/notenoughupdates/NEUOverlay.java | 13 +- .../notenoughupdates/NotEnoughUpdates.java | 166 ++- .../notenoughupdates/auction/APIManager.java | 20 +- .../notenoughupdates/auction/CustomAH.java | 20 +- .../infopanes/CollectionLogInfoPane.java | 17 +- .../itemeditor/GuiElementTextField.java | 49 +- .../mixins/MixinInventoryEffectRenderer.java | 1 + .../notenoughupdates/mixins/MixinRenderItem.java | 53 + .../notenoughupdates/options/Options.java | 29 +- .../profileviewer/GuiProfileViewer.java | 1253 ++++++++++++++++++-- .../notenoughupdates/profileviewer/Panorama.java | 4 - .../profileviewer/PlayerStats.java | 37 +- .../profileviewer/ProfileViewer.java | 472 +++++++- .../questing/SBScoreboardData.java | 6 +- .../notenoughupdates/util/HypixelApi.java | 1 - .../moulberry/notenoughupdates/util/Utils.java | 127 +- .../assets/notenoughupdates/button20x.png | Bin 0 -> 170 bytes .../assets/notenoughupdates/custom_ench_colour.png | Bin 0 -> 4530 bytes .../resources/assets/notenoughupdates/folder.png | Bin 0 -> 454 bytes .../panoramas/missing/panorama_0.jpg | Bin 26015 -> 0 bytes .../panoramas/missing/panorama_1.jpg | Bin 26016 -> 0 bytes .../panoramas/missing/panorama_2.jpg | Bin 24769 -> 0 bytes .../panoramas/missing/panorama_3.jpg | Bin 24854 -> 0 bytes .../panoramas/missing/panorama_4.jpg | Bin 26123 -> 0 bytes .../panoramas/missing/panorama_5.jpg | Bin 24894 -> 0 bytes .../panoramas/unknown/panorama_0.jpg | Bin 0 -> 26015 bytes .../panoramas/unknown/panorama_1.jpg | Bin 0 -> 26016 bytes .../panoramas/unknown/panorama_2.jpg | Bin 0 -> 24769 bytes .../panoramas/unknown/panorama_3.jpg | Bin 0 -> 24854 bytes .../panoramas/unknown/panorama_4.jpg | Bin 0 -> 26123 bytes .../panoramas/unknown/panorama_5.jpg | Bin 0 -> 24894 bytes .../resources/assets/notenoughupdates/pv_basic.png | Bin 10496 -> 5173 bytes .../resources/assets/notenoughupdates/pv_bg.png | Bin 0 -> 2016 bytes .../resources/assets/notenoughupdates/pv_cols.png | Bin 0 -> 1843 bytes .../assets/notenoughupdates/pv_elements.png | Bin 0 -> 831 bytes .../resources/assets/notenoughupdates/pv_invs.png | Bin 0 -> 4446 bytes .../resources/assets/notenoughupdates/pv_pets.png | Bin 0 -> 3420 bytes .../notenoughupdates/shaders/program/blur.json | 21 + .../notenoughupdates/shaders/program/blur2.fsh | 34 + .../shaders/program/setrgbtoalpha.fsh | 11 + .../shaders/program/setrgbtoalpha.json | 17 + .../notenoughupdates/shaders/program/sobel.vsh | 20 + src/main/resources/mixins.notenoughupdates.json | 3 +- 49 files changed, 3220 insertions(+), 324 deletions(-) create mode 100644 src/main/java/NotSkyblockAddonsInstallerFrame.java create mode 100644 src/main/java/io/github/moulberry/notenoughupdates/GuiEnchantColour.java create mode 100644 src/main/java/io/github/moulberry/notenoughupdates/ItemRarityHalo.java create mode 100644 src/main/java/io/github/moulberry/notenoughupdates/mixins/MixinRenderItem.java create mode 100644 src/main/resources/assets/notenoughupdates/button20x.png create mode 100644 src/main/resources/assets/notenoughupdates/custom_ench_colour.png create mode 100644 src/main/resources/assets/notenoughupdates/folder.png delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/missing/panorama_0.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/missing/panorama_1.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/missing/panorama_2.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/missing/panorama_3.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/missing/panorama_4.jpg delete mode 100644 src/main/resources/assets/notenoughupdates/panoramas/missing/panorama_5.jpg create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/unknown/panorama_0.jpg create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/unknown/panorama_1.jpg create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/unknown/panorama_2.jpg create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/unknown/panorama_3.jpg create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/unknown/panorama_4.jpg create mode 100644 src/main/resources/assets/notenoughupdates/panoramas/unknown/panorama_5.jpg create mode 100644 src/main/resources/assets/notenoughupdates/pv_bg.png create mode 100644 src/main/resources/assets/notenoughupdates/pv_cols.png create mode 100644 src/main/resources/assets/notenoughupdates/pv_elements.png create mode 100644 src/main/resources/assets/notenoughupdates/pv_invs.png create mode 100644 src/main/resources/assets/notenoughupdates/pv_pets.png create mode 100644 src/main/resources/assets/notenoughupdates/shaders/program/blur.json create mode 100644 src/main/resources/assets/notenoughupdates/shaders/program/blur2.fsh create mode 100644 src/main/resources/assets/notenoughupdates/shaders/program/setrgbtoalpha.fsh create mode 100644 src/main/resources/assets/notenoughupdates/shaders/program/setrgbtoalpha.json create mode 100644 src/main/resources/assets/notenoughupdates/shaders/program/sobel.vsh (limited to 'src/main/java/io') diff --git a/build.gradle b/build.gradle index 29128fba..909e51f3 100644 --- a/build.gradle +++ b/build.gradle @@ -19,7 +19,7 @@ apply plugin: 'com.github.johnrengelman.shadow' sourceCompatibility = 1.8 targetCompatibility = 1.8 -version = "1.0" +version = "1.11.7" group= "io.github.moulberry" archivesBaseName = "NotEnoughUpdates" String modid = "notenoughupdates" @@ -49,6 +49,7 @@ mixin { jar { manifest.attributes( + 'Main-Class': 'NotSkyblockAddonsInstallerFrame', 'TweakClass': 'org.spongepowered.asm.launch.MixinTweaker', 'MixinConfigs': "mixins.${modid}.json", 'FMLCorePluginContainsFMLMod': true, diff --git a/src/main/java/NotSkyblockAddonsInstallerFrame.java b/src/main/java/NotSkyblockAddonsInstallerFrame.java new file mode 100644 index 00000000..7c5a1638 --- /dev/null +++ b/src/main/java/NotSkyblockAddonsInstallerFrame.java @@ -0,0 +1,667 @@ +import javax.imageio.ImageIO; +import javax.swing.*; +import java.awt.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.MouseEvent; +import java.awt.event.MouseListener; +import java.awt.image.BufferedImage; +import java.io.*; +import java.net.URI; +import java.net.URISyntaxException; +import java.nio.file.Files; +import java.util.Locale; +import java.util.jar.JarFile; +import java.util.regex.Pattern; +import java.util.zip.ZipEntry; + +public class NotSkyblockAddonsInstallerFrame extends JFrame implements ActionListener, MouseListener { + + private static final Pattern IN_MODS_SUBFOLDER = Pattern.compile("1\\.8\\.9[/\\\\]?$"); + + private JLabel logo = null; + private JLabel versionInfo = null; + private JLabel labelFolder = null; + + private JPanel panelCenter = null; + private JPanel panelBottom = null; + private JPanel totalContentPane = null; + + private JTextArea descriptionText = null; + private JTextArea forgeDescriptionText = null; + + private JTextField textFieldFolderLocation = null; + private JButton buttonChooseFolder = null; + + private JButton buttonInstall = null; + private JButton buttonOpenFolder = null; + private JButton buttonClose = null; + + private static final int TOTAL_HEIGHT = 435; + private static final int TOTAL_WIDTH = 404; + + private int x = 0; + private int y = 0; + + private int w = TOTAL_WIDTH; + private int h; + private int margin; + + public NotSkyblockAddonsInstallerFrame() { + try { + setName("NotEnoughUpdatesInstallerFrame"); + setTitle("NotEnoughUpdates Installer"); + setResizable(false); + setSize(TOTAL_WIDTH, TOTAL_HEIGHT); + setContentPane(getPanelContentPane()); + + getButtonFolder().addActionListener(this); + getButtonInstall().addActionListener(this); + getButtonOpenFolder().addActionListener(this); + getButtonClose().addActionListener(this); + getForgeTextArea().addMouseListener(this); + + pack(); + setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); + + getFieldFolder().setText(getModsFolder().getPath()); + getButtonInstall().setEnabled(true); + getButtonInstall().requestFocus(); + } catch (Exception ex) { + showErrorPopup(ex); + } + } + + public static void main(String[] args) { + try { + UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); + NotSkyblockAddonsInstallerFrame frame = new NotSkyblockAddonsInstallerFrame(); + frame.centerFrame(frame); + frame.show(); + + } catch (Exception ex) { + showErrorPopup(ex); + } + } + + private JPanel getPanelContentPane() { + if (totalContentPane == null) { + try { + totalContentPane = new JPanel(); + totalContentPane.setName("PanelContentPane"); + totalContentPane.setLayout(new BorderLayout(5, 5)); + totalContentPane.setPreferredSize(new Dimension(TOTAL_WIDTH, TOTAL_HEIGHT)); + totalContentPane.add(getPanelCenter(), "Center"); + totalContentPane.add(getPanelBottom(), "South"); + } catch (Throwable ivjExc) { + showErrorPopup(ivjExc); + } + } + return totalContentPane; + } + + private JPanel getPanelCenter() { + if (panelCenter == null) { + try { + (panelCenter = new JPanel()).setName("PanelCenter"); + panelCenter.setLayout(null); + panelCenter.add(getPictureLabel(), getPictureLabel().getName()); + panelCenter.add(getVersionInfo(), getVersionInfo().getName()); + panelCenter.add(getTextArea(), getTextArea().getName()); + panelCenter.add(getForgeTextArea(), getForgeTextArea().getName()); + panelCenter.add(getLabelFolder(), getLabelFolder().getName()); + panelCenter.add(getFieldFolder(), getFieldFolder().getName()); + panelCenter.add(getButtonFolder(), getButtonFolder().getName()); + } catch (Throwable ivjExc) { + showErrorPopup(ivjExc); + } + } + return panelCenter; + } + + private JLabel getPictureLabel() { + if (logo == null) { + try { + h = w/2; + margin = 5; + + BufferedImage myPicture = ImageIO.read(getClass().getClassLoader().getResourceAsStream("assets/notenoughupdates/logo.png")); + Image scaled = myPicture.getScaledInstance(w-margin*2, h-margin, Image.SCALE_SMOOTH); + logo = new JLabel(new ImageIcon(scaled)); + logo.setName("Logo"); + logo.setBounds(x+margin, y+margin, w-margin*2, h-margin); + logo.setFont(new Font(Font.DIALOG, Font.BOLD, 18)); + logo.setHorizontalAlignment(SwingConstants.CENTER); + logo.setPreferredSize(new Dimension(h*742/537, h)); + + y += h; + } catch (Throwable ivjExc) { + showErrorPopup(ivjExc); + } + } + return logo; + } + + private JLabel getVersionInfo() { + if (versionInfo == null) { + try { + h = 25; + + versionInfo = new JLabel(); + versionInfo.setName("LabelMcVersion"); + versionInfo.setBounds(x, y, w, h); + versionInfo.setFont(new Font(Font.DIALOG, Font.BOLD, 14)); + versionInfo.setHorizontalAlignment(SwingConstants.CENTER); + versionInfo.setPreferredSize(new Dimension(w, h)); + versionInfo.setText("NEU by Moulberry, Installer by Biscuit - for Minecraft 1.8.9"); + + y += h; + } catch (Throwable ivjExc) { + showErrorPopup(ivjExc); + } + } + return versionInfo; + } + + private JTextArea getTextArea() { + if (descriptionText == null) { + try { + h = 60; + margin = 10; + + descriptionText = new JTextArea(); + descriptionText.setName("TextArea"); + descriptionText.setBounds(x+margin, y+margin, w-margin*2, h-margin); + descriptionText.setEditable(false); + descriptionText.setHighlighter(null); + descriptionText.setEnabled(true); + descriptionText.setFont(new Font(Font.DIALOG, Font.PLAIN, 12)); + descriptionText.setLineWrap(true); + descriptionText.setOpaque(false); + descriptionText.setPreferredSize(new Dimension(w-margin*2, h-margin)); + descriptionText.setText("This installer will copy NotEnoughUpdates into your forge mods folder for you, and replace any old versions that already exist. " + + "Close this if you prefer to do this yourself!"); + descriptionText.setWrapStyleWord(true); + + y += h; + } catch (Throwable ivjExc) { + showErrorPopup(ivjExc); + } + } + return descriptionText; + } + + private JTextArea getForgeTextArea() { + if (forgeDescriptionText == null) { + try { + h = 55; + margin = 10; + + forgeDescriptionText = new JTextArea(); + forgeDescriptionText.setName("TextAreaForge"); + forgeDescriptionText.setBounds(x+margin, y+margin, w-margin*2, h-margin); + forgeDescriptionText.setEditable(false); + forgeDescriptionText.setHighlighter(null); + forgeDescriptionText.setEnabled(true); + forgeDescriptionText.setFont(new Font(Font.DIALOG, Font.PLAIN, 12)); + forgeDescriptionText.setLineWrap(true); + forgeDescriptionText.setOpaque(false); + forgeDescriptionText.setPreferredSize(new Dimension(w-margin*2, h-margin)); + forgeDescriptionText.setText("However, you still need to install Forge client in order to be able to run this mod. Click here to visit the download page for Forge 1.8.9!"); + forgeDescriptionText.setForeground(Color.BLUE.darker()); + forgeDescriptionText.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); + forgeDescriptionText.setWrapStyleWord(true); + + y += h; + } catch (Throwable ivjExc) { + showErrorPopup(ivjExc); + } + } + return forgeDescriptionText; + } + + private JLabel getLabelFolder() { + if (labelFolder == null) { + h = 16; + w = 65; + + x += 10; // Padding + + try { + labelFolder = new JLabel(); + labelFolder.setName("LabelFolder"); + labelFolder.setBounds(x, y+2, w, h); + labelFolder.setPreferredSize(new Dimension(w, h)); + labelFolder.setText("Mods Folder"); + } catch (Throwable ivjExc) { + showErrorPopup(ivjExc); + } + + x += w; + } + return labelFolder; + } + + private JTextField getFieldFolder() { + if (textFieldFolderLocation == null) { + h = 20; + w = 287; + + try { + textFieldFolderLocation = new JTextField(); + textFieldFolderLocation.setName("FieldFolder"); + textFieldFolderLocation.setBounds(x, y, w, h); + textFieldFolderLocation.setEditable(false); + textFieldFolderLocation.setPreferredSize(new Dimension(w, h)); + } catch (Throwable ivjExc) { + showErrorPopup(ivjExc); + } + + x += w; + } + return textFieldFolderLocation; + } + + private JButton getButtonFolder() { + if (buttonChooseFolder == null) { + h = 20; + w = 25; + + x += 10; // Padding + + try { + BufferedImage myPicture = ImageIO.read(getClass().getClassLoader().getResourceAsStream("assets/notenoughupdates/folder.png")); + Image scaled = myPicture.getScaledInstance(w-8, h-6, Image.SCALE_SMOOTH); + buttonChooseFolder = new JButton(new ImageIcon(scaled)); + buttonChooseFolder.setName("ButtonFolder"); + buttonChooseFolder.setBounds(x, y, w, h); + buttonChooseFolder.setPreferredSize(new Dimension(w, h)); + } catch (Throwable ivjExc) { + showErrorPopup(ivjExc); + } + } + return buttonChooseFolder; + } + + private JPanel getPanelBottom() { + if (panelBottom == null) { + try { + panelBottom = new JPanel(); + panelBottom.setName("PanelBottom"); + panelBottom.setLayout(new FlowLayout(FlowLayout.CENTER, 15, 10)); + panelBottom.setPreferredSize(new Dimension(390, 55)); + panelBottom.add(getButtonInstall(), getButtonInstall().getName()); + panelBottom.add(getButtonOpenFolder(), getButtonOpenFolder().getName()); + panelBottom.add(getButtonClose(), getButtonClose().getName()); + } catch (Throwable ivjExc) { + showErrorPopup(ivjExc); + } + } + return panelBottom; + } + + private JButton getButtonInstall() { + if (buttonInstall == null) { + w = 100; + h = 26; + + try { + buttonInstall = new JButton(); + buttonInstall.setName("ButtonInstall"); + buttonInstall.setPreferredSize(new Dimension(w, h)); + buttonInstall.setText("Install"); + } catch (Throwable ivjExc) { + showErrorPopup(ivjExc); + } + } + return buttonInstall; + } + + private JButton getButtonOpenFolder() { + if (buttonOpenFolder == null) { + w = 130; + h = 26; + + try { + buttonOpenFolder = new JButton(); + buttonOpenFolder.setName("ButtonOpenFolder"); + buttonOpenFolder.setPreferredSize(new Dimension(w, h)); + buttonOpenFolder.setText("Open Mods Folder"); + } catch (Throwable ivjExc) { + showErrorPopup(ivjExc); + } + } + return buttonOpenFolder; + } + + private JButton getButtonClose() { + if (buttonClose == null) { + w = 100; + h = 26; + + try { + (buttonClose = new JButton()).setName("ButtonClose"); + buttonClose.setPreferredSize(new Dimension(w, h)); + buttonClose.setText("Cancel"); + } catch (Throwable ivjExc) { + showErrorPopup(ivjExc); + } + } + return buttonClose; + } + + public void onFolderSelect() { + File currentDirectory = new File(getFieldFolder().getText()); + + JFileChooser jFileChooser = new JFileChooser(currentDirectory); + jFileChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); + jFileChooser.setAcceptAllFileFilterUsed(false); + if (jFileChooser.showOpenDialog(this) == 0) { + File newDirectory = jFileChooser.getSelectedFile(); + getFieldFolder().setText(newDirectory.getPath()); + } + } + + @Override + public void actionPerformed(ActionEvent e) { + if (e.getSource() == getButtonClose()) { + dispose(); + System.exit(0); + } + if (e.getSource() == getButtonFolder()) { + onFolderSelect(); + } + if (e.getSource() == getButtonInstall()) { + onInstall(); + } + if (e.getSource() == getButtonOpenFolder()) { + onOpenFolder(); + } + } + + @Override + public void mouseClicked(MouseEvent e) { + if (e.getSource() == getForgeTextArea()) { + try { + Desktop.getDesktop().browse(new URI("http://files.minecraftforge.net/maven/net/minecraftforge/forge/index_1.8.9.html")); + } catch (IOException | URISyntaxException ex) { + showErrorPopup(ex); + } + } + } + + public void onInstall() { + try { + File modsFolder = new File(getFieldFolder().getText()); + if (!modsFolder.exists()) { + showErrorMessage("Folder not found: " + modsFolder.getPath()); + return; + } + if (!modsFolder.isDirectory()) { + showErrorMessage("Not a folder: " + modsFolder.getPath()); + return; + } + tryInstall(modsFolder); + } catch (Exception e) { + showErrorPopup(e); + } + } + + private void tryInstall(File modsFolder) { + File thisFile = getThisFile(); + + if (thisFile != null) { + boolean inSubFolder = false; + if (IN_MODS_SUBFOLDER.matcher(modsFolder.getPath()).find()) { + inSubFolder = true; + } + + boolean deletingFailure = false; + if (modsFolder.isDirectory()) { // Delete in this current folder. + boolean failed = findSkyblockAddonsAndDelete(modsFolder.listFiles()); + if (failed) deletingFailure = true; + } + if (inSubFolder) { // We are in the 1.8.9 folder, delete in the parent folder as well. + if (modsFolder.getParentFile().isDirectory()) { + boolean failed = findSkyblockAddonsAndDelete(modsFolder.getParentFile().listFiles()); + if (failed) deletingFailure = true; + } + } else { // We are in the main mods folder, but the 1.8.9 subfolder exists... delete in there too. + File subFolder = new File(modsFolder, "1.8.9"); + if (subFolder.exists() && subFolder.isDirectory()) { + boolean failed = findSkyblockAddonsAndDelete(subFolder.listFiles()); + if (failed) deletingFailure = true; + } + } + + if (deletingFailure) return; + + if (thisFile.isDirectory()) { + showErrorMessage("This file is a directory... Are we in a development environment?"); + return; + } + + try { + Files.copy(thisFile.toPath(), new File(modsFolder, thisFile.getName()).toPath()); + } catch (Exception ex) { + showErrorPopup(ex); + return; + } + + showMessage("NotEnoughUpdates has been successfully installed into your mods folder."); + dispose(); + System.exit(0); + } + } + + private boolean findSkyblockAddonsAndDelete(File[] files) { + if (files == null) return false; + + for (File file : files) { + if (!file.isDirectory() && file.getPath().endsWith(".jar")) { + try { + JarFile jarFile = new JarFile(file); + ZipEntry mcModInfo = jarFile.getEntry("mcmod.info"); + if (mcModInfo != null) { + InputStream inputStream = jarFile.getInputStream(mcModInfo); + String modID = getModIDFromInputStream(inputStream); + if (modID.equals("notenoughupdates")) { + jarFile.close(); + try { + boolean deleted = file.delete(); + if (!deleted) { + throw new Exception(); + } + } catch (Exception ex) { + ex.printStackTrace(); + showErrorMessage("Was not able to delete the other NotEnoughUpdates files found in your mods folder!" + System.lineSeparator() + + "Please make sure that your minecraft is currently closed and try again, or feel" + System.lineSeparator() + + "free to open your mods folder and delete those files manually."); + return true; + } + continue; + } + } + jarFile.close(); + } catch (Exception ex) { + // Just don't check the file I guess, move on to the next... + } + } + } + return false; + } + + public void onOpenFolder() { + try { + Desktop.getDesktop().open(getModsFolder()); + } catch (Exception e) { + showErrorPopup(e); + } + } + + public File getModsFolder() { + String userHome = System.getProperty("user.home", "."); + + File modsFolder = getFile(userHome, "minecraft/mods/1.8.9"); + if (!modsFolder.exists()) { + modsFolder = getFile(userHome, "minecraft/mods"); + } + + if (!modsFolder.exists() && !modsFolder.mkdirs()) { + throw new RuntimeException("The working directory could not be created: " + modsFolder); + } + return modsFolder; + } + + public File getFile(String userHome, String minecraftPath) { + File workingDirectory; + switch (getOperatingSystem()) { + case LINUX: + case SOLARIS: { + workingDirectory = new File(userHome, '.' + minecraftPath + '/'); + break; + } + case WINDOWS: { + String applicationData = System.getenv("APPDATA"); + if (applicationData != null) { + workingDirectory = new File(applicationData, "." + minecraftPath + '/'); + break; + } + workingDirectory = new File(userHome, '.' + minecraftPath + '/'); + break; + } + case MACOS: { + workingDirectory = new File(userHome, "Library/Application Support/" + minecraftPath); + break; + } + default: { + workingDirectory = new File(userHome, minecraftPath + '/'); + break; + } + } + return workingDirectory; + } + + public OperatingSystem getOperatingSystem() { + String osName = System.getProperty("os.name").toLowerCase(Locale.US); + if (osName.contains("win")) { + return OperatingSystem.WINDOWS; + + } else if (osName.contains("mac")) { + return OperatingSystem.MACOS; + + } else if (osName.contains("solaris") || osName.contains("sunos")) { + + return OperatingSystem.SOLARIS; + } else if (osName.contains("linux") || osName.contains("unix")) { + + return OperatingSystem.LINUX; + } + return OperatingSystem.UNKNOWN; + } + + public void centerFrame(JFrame frame) { + Rectangle rectangle = frame.getBounds(); + Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); + Rectangle screenRectangle = new Rectangle(0, 0, screenSize.width, screenSize.height); + + int newX = screenRectangle.x + (screenRectangle.width - rectangle.width) / 2; + int newY = screenRectangle.y + (screenRectangle.height - rectangle.height) / 2; + + if (newX < 0) newX = 0; + if (newY < 0) newY = 0; + + frame.setBounds(newX, newY, rectangle.width, rectangle.height); + } + + public void showMessage(String message) { + JOptionPane.showMessageDialog(null, message, "NotEnoughUpdates", JOptionPane.INFORMATION_MESSAGE); + } + + public void showErrorMessage(String message) { + JOptionPane.showMessageDialog(null, message, "NotEnoughUpdates - Error", JOptionPane.ERROR_MESSAGE); + } + + public enum OperatingSystem { + LINUX, + SOLARIS, + WINDOWS, + MACOS, + UNKNOWN + } + + private static String getStacktraceText(Throwable ex) { + StringWriter stringWriter = new StringWriter(); + ex.printStackTrace(new PrintWriter(stringWriter)); + return stringWriter.toString().replace("\t", " "); + } + + private static void showErrorPopup(Throwable ex) { + ex.printStackTrace(); + + JTextArea textArea = new JTextArea(getStacktraceText(ex)); + textArea.setEditable(false); + Font currentFont = textArea.getFont(); + Font newFont = new Font(Font.MONOSPACED, currentFont.getStyle(), currentFont.getSize()); + textArea.setFont(newFont); + + JScrollPane errorScrollPane = new JScrollPane(textArea); + errorScrollPane.setPreferredSize(new Dimension(600, 400)); + JOptionPane.showMessageDialog(null, errorScrollPane, "Error", JOptionPane.ERROR_MESSAGE); + } + + private String getVersionFromMcmodInfo() { + String version = ""; + try { + BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(getClass().getClassLoader().getResourceAsStream("mcmod.info"))); + while ((version = bufferedReader.readLine()) != null) { + if (version.contains("\"version\": \"")) { + version = version.split(Pattern.quote("\"version\": \""))[1]; + version = version.substring(0, version.length() - 2); + break; + } + } + } catch (Exception ex) { + // It's okay, I guess just don't use the version lol. + } + return version; + } + + private String getModIDFromInputStream(InputStream inputStream) { + String version = ""; + try { + BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream)); + while ((version = bufferedReader.readLine()) != null) { + if (version.contains("\"modid\": \"")) { + version = version.split(Pattern.quote("\"modid\": \""))[1]; + version = version.substring(0, version.length() - 2); + break; + } + } + } catch (Exception ex) { + // RIP, couldn't find the modid... + } + return version; + } + + private File getThisFile() { + try { + return new File(NotSkyblockAddonsInstallerFrame.class.getProtectionDomain().getCodeSource().getLocation().toURI()); + } catch (URISyntaxException ex) { + showErrorPopup(ex); + } + return null; + } + + @Override + public void mousePressed(MouseEvent e) {} + + @Override + public void mouseReleased(MouseEvent e) {} + + @Override + public void mouseEntered(MouseEvent e) {} + + @Override + public void mouseExited(MouseEvent e) {} +} diff --git a/src/main/java/io/github/moulberry/notenoughupdates/CustomItems.java b/src/main/java/io/github/moulberry/notenoughupdates/CustomItems.java index 4328eaf4..58eaab72 100644 --- a/src/main/java/io/github/moulberry/notenoughupdates/CustomItems.java +++ b/src/main/java/io/github/moulberry/notenoughupdates/CustomItems.java @@ -48,6 +48,14 @@ public class CustomItems { "incursions on the server, some of which I, a player on this Minecraft", "anarchy server in Minecraft, have participated in. One of this server's", "most infamous Minecraft players on the oldest Minecraft"); + public static JsonObject LEOCTHL = create("LEOCTHL", "dragon_egg", "--- Stats below may not be entirely accurate ---", + "17 legendary dragon pets", + "24 epic dragon pets", + "18 epic golem pets", + "12 legendary golem pets", + "39 legendary phoenix pets", + "", + "get flexed"); /** * SHAAAAAAAAAAAAAAAAAAME diff --git a/src/main/java/io/github/moulberry/notenoughupdates/GuiEnchantColour.java b/src/main/java/io/github/moulberry/notenoughupdates/GuiEnchantColour.java new file mode 100644 index 00000000..98b08fd8 --- /dev/null +++ b/src/main/java/io/github/moulberry/notenoughupdates/GuiEnchantColour.java @@ -0,0 +1,222 @@ +package io.github.moulberry.notenoughupdates; + +import com.google.common.base.Splitter; +import io.github.moulberry.notenoughupdates.itemeditor.GuiElementTextField; +import io.github.moulberry.notenoughupdates.util.Utils; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.GuiScreen; +import net.minecraft.client.renderer.GlStateManager; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.ResourceLocation; +import org.lwjgl.input.Keyboard; +import org.lwjgl.opengl.GL11; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +public class GuiEnchantColour extends GuiScreen { + + public static final ResourceLocation custom_ench_colour = new ResourceLocation("notenoughupdates:custom_ench_colour.png"); + + private int guiLeft; + private int guiTop; + private final int xSize = 176; + private int ySize = 0; + + private List getEnchantColours() { + return NotEnoughUpdates.INSTANCE.manager.config.enchantColours.value; + } + + public static final Splitter splitter = Splitter.on(":").limit(4); + + private HashMap comparators = new HashMap<>(); + private List guiElementTextFields = new ArrayList<>(); + + @Override + public void drawScreen(int mouseX, int mouseY, float partialTicks) { + List enchantColours = getEnchantColours(); + + ySize = 53+25*enchantColours.size(); + guiLeft = (width-xSize)/2; + guiTop = (height-ySize)/2; + + NotEnoughUpdates.INSTANCE.manager.loadConfig(); + + Minecraft.getMinecraft().getTextureManager().bindTexture(custom_ench_colour); + Utils.drawTexturedRect(guiLeft, guiTop, xSize, 21, 0, 1, 0, 21/78f, GL11.GL_NEAREST); + Utils.drawTexturedRect(guiLeft, guiTop+ySize-32, xSize, 32, 0, 1, 46/78f, 1, GL11.GL_NEAREST); + + fontRendererObj.drawString("Ench Name", guiLeft+10, guiTop+7, 4210752); + fontRendererObj.drawString("CMP", guiLeft+71, guiTop+7, 4210752); + fontRendererObj.drawString("LVL", guiLeft+96, guiTop+7, 4210752); + fontRendererObj.drawString("COL", guiLeft+121, guiTop+7, 4210752); + fontRendererObj.drawString("DEL", guiLeft+146, guiTop+7, 4210752); + + Utils.drawStringCentered("Add Ench Colour", fontRendererObj, guiLeft+xSize/2, guiTop+ySize-20, false, 4210752); + + int yIndex = 0; + for(String str : enchantColours) { + Minecraft.getMinecraft().getTextureManager().bindTexture(custom_ench_colour); + GlStateManager.color(1, 1, 1, 1); + Utils.drawTexturedRect(guiLeft, guiTop+21+yIndex*25, xSize, 25, 0, 1, 21/78f, 46/78f, GL11.GL_NEAREST); + + List colourOps = splitter.splitToList(str); + String enchantName = getColourOpIndex(colourOps, 0); + String comparator = getColourOpIndex(colourOps, 1); + String comparison = getColourOpIndex(colourOps, 2); + String colourCode = getColourOpIndex(colourOps, 3); + + if(colourCode.length() > 1) colourCode = String.valueOf(colourCode.toLowerCase().charAt(0)); + if(comparator.length() > 1) comparator = String.valueOf(comparator.toLowerCase().charAt(0)); + + Utils.drawStringCentered(comparator, fontRendererObj, guiLeft+81, guiTop+33+25*yIndex, false, 4210752); + + if(guiElementTextFields.size() <= yIndex) { + guiElementTextFields.add(new GuiElementTextField[3]); + } + if(guiElementTextFields.get(yIndex)[0] == null) { + guiElementTextFields.get(yIndex)[0] = new GuiElementTextField(enchantName, GuiElementTextField.SCALE_TEXT); + guiElementTextFields.get(yIndex)[0].setSize(56, 20); + } + if(guiElementTextFields.get(yIndex)[1] == null) { + guiElementTextFields.get(yIndex)[1] = new GuiElementTextField(comparison, + GuiElementTextField.SCALE_TEXT|GuiElementTextField.NUM_ONLY|GuiElementTextField.NO_SPACE); + guiElementTextFields.get(yIndex)[1].setSize(20, 20); + } + if(guiElementTextFields.get(yIndex)[2] == null) { + guiElementTextFields.get(yIndex)[2] = new GuiElementTextField(colourCode, GuiElementTextField.SCALE_TEXT); + guiElementTextFields.get(yIndex)[2].setSize(20, 20); + } + guiElementTextFields.get(yIndex)[0].setText(enchantName); + guiElementTextFields.get(yIndex)[1].setText(comparison); + comparators.put(yIndex, comparator); + guiElementTextFields.get(yIndex)[2].setText(colourCode); + + guiElementTextFields.get(yIndex)[0].render(guiLeft+10, guiTop+23+25*yIndex); + guiElementTextFields.get(yIndex)[1].render(guiLeft+96, guiTop+23+25*yIndex); + guiElementTextFields.get(yIndex)[2].render(guiLeft+121, guiTop+23+25*yIndex); + + yIndex++; + } + } + + @Override + protected void keyTyped(char typedChar, int keyCode) throws IOException { + super.keyTyped(typedChar, keyCode); + for(int yIndex=0; yIndex NotEnoughUpdates.INSTANCE.manager.config.enchantColours.value.size()) { + addOffset = NotEnoughUpdates.INSTANCE.manager.config.enchantColours.value.size()-yIndex; + } + System.out.println(addOffset); + NotEnoughUpdates.INSTANCE.manager.config.enchantColours.value.add(yIndex+addOffset, + getEnchantOpString(guiElementTextFields.get(yIndex), comparators.get(yIndex))); + NotEnoughUpdates.INSTANCE.manager.saveConfig(); + if(addOffset != 0) { + GuiElementTextField[] guiElementTextFieldArray = guiElementTextFields.remove(yIndex); + guiElementTextFields.add(yIndex+addOffset, guiElementTextFieldArray); + } + return; + } + } + } + } + + public String getEnchantOpString(GuiElementTextField[] tfs, String comparator) { + StringBuilder enchantOp = new StringBuilder(); + enchantOp.append(tfs[0].getText()); + enchantOp.append(":"); + enchantOp.append(comparator); + enchantOp.append(":"); + enchantOp.append(tfs[1].getText()); + enchantOp.append(":"); + enchantOp.append(tfs[2].getText()); + return enchantOp.toString(); + } + + @Override + protected void mouseClicked(int mouseX, int mouseY, int mouseButton) throws IOException { + super.mouseClicked(mouseX, mouseY, mouseButton); + for(int yIndex=0; yIndex x && mouseX < x+guiElementTextFields.get(yIndex)[i].getWidth()) { + if(mouseY > guiTop+23+25*yIndex && mouseY < guiTop+23+25*yIndex+20) { + guiElementTextFields.get(yIndex)[i].mouseClicked(mouseX, mouseY, mouseButton); + if(mouseButton == 1) { + NotEnoughUpdates.INSTANCE.manager.config.enchantColours.value.remove(yIndex); + NotEnoughUpdates.INSTANCE.manager.config.enchantColours.value.add(yIndex, + getEnchantOpString(guiElementTextFields.get(yIndex), comparators.get(yIndex))); + NotEnoughUpdates.INSTANCE.manager.saveConfig(); + } + continue; + } + } + guiElementTextFields.get(yIndex)[i].otherComponentClick(); + } + comparators.computeIfAbsent(yIndex, k->">"); + if(mouseY > guiTop+23+25*yIndex && mouseY < guiTop+23+25*yIndex+20) { + if(mouseX > guiLeft+71 && mouseX < guiLeft+71+20) { + switch (comparators.get(yIndex)) { + case ">": + comparators.put(yIndex, "="); break; + case "=": + comparators.put(yIndex, "<"); break; + default: + comparators.put(yIndex, ">"); break; + } + NotEnoughUpdates.INSTANCE.manager.config.enchantColours.value.remove(yIndex); + NotEnoughUpdates.INSTANCE.manager.config.enchantColours.value.add(yIndex, + getEnchantOpString(guiElementTextFields.get(yIndex), comparators.get(yIndex))); + NotEnoughUpdates.INSTANCE.manager.saveConfig(); + } else if(mouseX > guiLeft+146 && mouseX < guiLeft+146+20) { + NotEnoughUpdates.INSTANCE.manager.config.enchantColours.value.remove(yIndex); + guiElementTextFields.remove(yIndex); + comparators.remove(yIndex); + NotEnoughUpdates.INSTANCE.manager.saveConfig(); + } + } + } + if(mouseX >= guiLeft+42 && mouseX <= guiLeft+42+88) { + if(mouseY >= guiTop+ySize-30 && mouseY <= guiTop+ySize-10) { + NotEnoughUpdates.INSTANCE.manager.config.enchantColours.value.add("[a-zA-Z ]+:>:5:9"); + NotEnoughUpdates.INSTANCE.manager.saveConfig(); + } + } + } + + public static String getColourOpIndex(List colourOps, int index) { + if(colourOps.size() > index) { + return colourOps.get(index); + } else { + switch(index) { + case 0: + return "[a-zA-Z ]+"; + case 1: + return ">"; + case 2: + return "5"; + case 3: + return "9"; + } + } + return null; + } +} diff --git a/src/main/java/io/github/moulberry/notenoughupdates/ItemRarityHalo.java b/src/main/java/io/github/moulberry/notenoughupdates/ItemRarityHalo.java new file mode 100644 index 00000000..2c70ec1e --- /dev/null +++ b/src/main/java/io/github/moulberry/notenoughupdates/ItemRarityHalo.java @@ -0,0 +1,251 @@ +package io.github.moulberry.notenoughupdates; + +import io.github.moulberry.notenoughupdates.util.Utils; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.ScaledResolution; +import net.minecraft.client.renderer.*; +import net.minecraft.client.renderer.entity.RenderItem; +import net.minecraft.client.renderer.texture.TextureUtil; +import net.minecraft.client.renderer.vertex.DefaultVertexFormats; +import net.minecraft.client.shader.Framebuffer; +import net.minecraft.client.shader.Shader; +import net.minecraft.item.ItemStack; +import net.minecraft.util.Matrix4f; +import org.lwjgl.BufferUtils; +import org.lwjgl.input.Keyboard; +import org.lwjgl.opengl.GL11; +import org.lwjgl.opengl.GL14; +import org.lwjgl.opengl.GL30; +import org.lwjgl.opengl.GL45; + +import java.awt.*; +import java.nio.ByteBuffer; +import java.nio.IntBuffer; +import java.util.HashMap; + +public class ItemRarityHalo { + + public static Framebuffer itemFramebuffer1 = null; + public static Framebuffer itemFramebuffer2 = null; + public static HashMap itemHaloTexMap = new HashMap<>(); + public static Matrix4f projectionMatrix = null; + + public static Shader colourShader = null; + public static Shader blurShaderHorz = null; + public static Shader blurShaderVert = null; + + private static int oldScaledResolution = 0; + + public static void onItemRender(ItemStack stack, int x, int y) { + if(x == 0 && y == 0) return; + + if(!OpenGlHelper.isFramebufferEnabled() || !OpenGlHelper.areShadersSupported()) return; + NotEnoughUpdates neu = NotEnoughUpdates.INSTANCE; + if(!neu.isOnSkyblock()) return; + if(neu.manager.config.itemHighlightOpacity.value <= 1) return; + if(neu.manager.getInternalNameForItem(stack) == null) return; + + ScaledResolution scaledresolution = new ScaledResolution(Minecraft.getMinecraft()); + int size = 16*scaledresolution.getScaleFactor(); + + if(projectionMatrix == null) { + projectionMatrix = Utils.createProjectionMatrix(size, size); + } + + itemFramebuffer1 = checkFramebufferSizes(itemFramebuffer1, size, size); + itemFramebuffer2 = checkFramebufferSizes(itemFramebuffer2, size, size); + + try { + if(colourShader == null) { + colourShader = new Shader(new NEUResourceManager(Minecraft.getMinecraft().getResourceManager()), + "setrgbtoalpha", itemFramebuffer1, itemFramebuffer2); + upload(colourShader, size, size); + } + + if(blurShaderHorz == null) { + blurShaderHorz = new Shader(new NEUResourceManager(Minecraft.getMinecraft().getResourceManager()), + "blur", itemFramebuffer2, itemFramebuffer1); + blurShaderHorz.getShaderManager().getShaderUniform("BlurDir").set(1, 0); + blurShaderHorz.getShaderManager().getShaderUniform("Radius").set(5f); + blurShaderHorz.getShaderManager().getShaderUniform("AlphaMult").set(2f); + upload(blurShaderHorz, size, size); + } + + if(blurShaderVert == null) { + blurShaderVert = new Shader(new NEUResourceManager(Minecraft.getMinecraft().getResourceManager()), + "blur", itemFramebuffer1, itemFramebuffer2); + blurShaderVert.getShaderManager().getShaderUniform("BlurDir").set(0, 1); + blurShaderVert.getShaderManager().getShaderUniform("Radius").set(5f); + blurShaderVert.getShaderManager().getShaderUniform("AlphaMult").set(2f); + upload(blurShaderVert, size, size); + } + } catch(Exception e) { return; } + + if(oldScaledResolution != scaledresolution.getScaleFactor()) { + resetItemHaloCache(); + oldScaledResolution = scaledresolution.getScaleFactor(); + } + + int currentBuffer = GL11.glGetInteger(GL30.GL_FRAMEBUFFER_BINDING); + IntBuffer currentViewport = BufferUtils.createIntBuffer(16); + GL11.glGetInteger(GL11.GL_VIEWPORT, currentViewport); + try { + if(!itemHaloTexMap.containsKey(stack)) { + int texture1 = TextureUtil.glGenTextures(); + int texture2 = TextureUtil.glGenTextures(); + + GlStateManager.bindTexture(texture1); + GL11.glTexImage2D(GL11.GL_TEXTURE_2D, 0, GL11.GL_RGBA8, size, size, 0, GL11.GL_RGBA, GL11.GL_UNSIGNED_BYTE, ((ByteBuffer)null)); + itemFramebuffer1.bindFramebuffer(false); + OpenGlHelper.glFramebufferTexture2D(OpenGlHelper.GL_FRAMEBUFFER, OpenGlHelper.GL_COLOR_ATTACHMENT0, 3553, texture1, 0); + + GlStateManager.bindTexture(texture2); + GL11.glTexImage2D(GL11.GL_TEXTURE_2D, 0, GL11.GL_RGBA8, size, size, 0, GL11.GL_RGBA, GL11.GL_UNSIGNED_BYTE, ((ByteBuffer)null)); + itemFramebuffer2.bindFramebuffer(false); + OpenGlHelper.glFramebufferTexture2D(OpenGlHelper.GL_FRAMEBUFFER, OpenGlHelper.GL_COLOR_ATTACHMENT0, 3553, texture2, 0); + + itemFramebuffer1.framebufferClear(); + itemFramebuffer2.framebufferClear(); + + GlStateManager.pushMatrix(); { + GlStateManager.matrixMode(5889); + GlStateManager.loadIdentity(); + GlStateManager.ortho(0.0D, size, size, 0.0D, 1000.0D, 3000.0D); + GlStateManager.matrixMode(5888); + GlStateManager.loadIdentity(); + GlStateManager.translate(0.0F, 0.0F, -2000.0F); + + GL11.glScalef(scaledresolution.getScaleFactor(), scaledresolution.getScaleFactor(), 1); + + itemFramebuffer1.bindFramebuffer(true); + + RenderItem itemRender = Minecraft.getMinecraft().getRenderItem(); + RenderHelper.enableGUIStandardItemLighting(); + float zLevel = itemRender.zLevel; + itemRender.zLevel = -145; //Negates the z-offset of the below method. + itemRender.renderItemAndEffectIntoGUI(stack, 0, 0); + itemRender.zLevel = zLevel; + RenderHelper.disableStandardItemLighting(); + } GlStateManager.popMatrix(); + + GlStateManager.pushMatrix(); { + GL45.glTextureBarrier(); GL11.glFlush(); GL11.glFinish(); + executeShader(colourShader); + //GL45.glTextureBarrier(); GL11.glFlush(); GL11.glFinish(); + //executeShader(blurShaderHorz); + //GL45.glTextureBarrier(); GL11.glFlush(); GL11.glFinish(); + //executeShader(blurShaderVert); + //GL45.glTextureBarrier(); GL11.glFlush(); GL11.glFinish(); + } GlStateManager.popMatrix(); + + GlStateManager.matrixMode(5889); + GlStateManager.loadIdentity(); + GlStateManager.ortho(0.0D, scaledresolution.getScaledWidth_double(), scaledresolution.getScaledHeight_double(), 0.0D, 1000.0D, 3000.0D); + GlStateManager.matrixMode(5888); + + OpenGlHelper.glBindFramebuffer(OpenGlHelper.GL_FRAMEBUFFER, currentBuffer); + GlStateManager.viewport(currentViewport.get(), currentViewport.get(), currentViewport.get(), currentViewport.get()); + + //TextureUtil.deleteTexture(texture1); + itemHaloTexMap.put(stack, texture2); + } + + OpenGlHelper.glBindFramebuffer(OpenGlHelper.GL_FRAMEBUFFER, currentBuffer); + GlStateManager.viewport(currentViewport.get(), currentViewport.get(), currentViewport.get(), currentViewport.get()); + + GlStateManager.bindTexture(itemHaloTexMap.get(stack)); + Color color = Utils.getPrimaryColour(stack.getDisplayName()); + GlStateManager.color(color.getRed()/255f, color.getGreen()/255f, color.getBlue()/255f, + NotEnoughUpdates.INSTANCE.manager.config.itemHighlightOpacity.value.floatValue()/255f); + Utils.drawTexturedRect(x, y, 16, 16, + 0, 1, 1, 0, GL11.GL_NEAREST); + GlStateManager.bindTexture(0); + } catch(Exception e) { + e.printStackTrace(); + OpenGlHelper.glBindFramebuffer(OpenGlHelper.GL_FRAMEBUFFER, currentBuffer); + GlStateManager.viewport(currentViewport.get(), currentViewport.get(), currentViewport.get(), currentViewport.get()); + } + } + + private static Framebuffer checkFramebufferSizes(Framebuffer framebuffer, int width, int height) { + if(framebuffer == null || framebuffer.framebufferWidth != width || framebuffer.framebufferHeight != height) { + if(framebuffer == null) { + framebuffer = new Framebuffer(width, height, true); + } else { + framebuffer.createBindFramebuffer(width, height); + } + framebuffer.setFramebufferFilter(GL11.GL_NEAREST); + } + return framebuffer; + } + + public static void resetItemHaloCache() { + ScaledResolution scaledresolution = new ScaledResolution(Minecraft.getMinecraft()); + int size = 16*scaledresolution.getScaleFactor(); + + for(int tex : itemHaloTexMap.values()) { + TextureUtil.deleteTexture(tex); + } + itemHaloTexMap.clear(); + + if(NotEnoughUpdates.INSTANCE.isOnSkyblock()) { + projectionMatrix = Utils.createProjectionMatrix(size, size); + upload(colourShader, size, size); + upload(blurShaderHorz, size, size); + upload(blurShaderVert, size, size); + } + } + + private static void upload(Shader shader, int width, int height) { + if(shader == null) return; + shader.getShaderManager().getShaderUniformOrDefault("ProjMat").set(projectionMatrix); + shader.getShaderManager().getShaderUniformOrDefault("InSize").set(width, height); + shader.getShaderManager().getShaderUniformOrDefault("OutSize").set(width, height); + shader.getShaderManager().getShaderUniformOrDefault("ScreenSize").set((float)width, (float)height); + } + + private static void executeShader(Shader shader) { + GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F); + GlStateManager.disableBlend(); + GlStateManager.disableDepth(); + GlStateManager.disableAlpha(); + GlStateManager.disableFog(); + GlStateManager.disableLighting(); + GlStateManager.disableColorMaterial(); + GlStateManager.enableTexture2D(); + GlStateManager.bindTexture(0); + + float f = (float)shader.framebufferOut.framebufferTextureWidth; + float f1 = (float)shader.framebufferOut.framebufferTextureHeight; + GlStateManager.viewport(0, 0, (int)f, (int)f1); + + shader.getShaderManager().useShader(); + shader.getShaderManager().addSamplerTexture("DiffuseSampler", shader.framebufferIn); + + shader.framebufferOut.framebufferClear(); + shader.framebufferOut.bindFramebuffer(false); + + GlStateManager.depthMask(false); + + GlStateManager.enableAlpha(); + GlStateManager.enableBlend(); + GL14.glBlendFuncSeparate(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA, GL11.GL_ONE, GL11.GL_ONE_MINUS_SRC_ALPHA); + + Tessellator tessellator = Tessellator.getInstance(); + WorldRenderer worldrenderer = tessellator.getWorldRenderer(); + worldrenderer.begin(7, DefaultVertexFormats.POSITION_COLOR); + worldrenderer.pos(0.0D, (double)f1, 500.0D).color(255, 255, 255, 255).endVertex(); + worldrenderer.pos((double)f, (double)f1, 500.0D).color(255, 255, 255, 255).endVertex(); + worldrenderer.pos((double)f, 0.0D, 500.0D).color(255, 255, 255, 255).endVertex(); + worldrenderer.pos(0.0D, 0.0D, 500.0D).color(255, 255, 255, 255).endVertex(); + tessellator.draw(); + + GlStateManager.depthMask(true); + + shader.getShaderManager().endShader(); + + shader.framebufferOut.unbindFramebuffer(); + shader.framebufferIn.unbindFramebufferTexture(); + } + +} diff --git a/src/main/java/io/github/moulberry/notenoughupdates/NEUManager.java b/src/main/java/io/github/moulberry/notenoughupdates/NEUManager.java index b879c383..680094af 100644 --- a/src/main/java/io/github/moulberry/notenoughupdates/NEUManager.java +++ b/src/main/java/io/github/moulberry/notenoughupdates/NEUManager.java @@ -23,6 +23,8 @@ import java.io.*; import java.net.URL; import java.nio.charset.StandardCharsets; import java.util.*; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; import java.util.zip.GZIPInputStream; import java.util.zip.ZipEntry; import java.util.zip.ZipInputStream; @@ -226,24 +228,29 @@ public class NEUManager { /** * Downloads and sets auctionPricesJson from the URL specified by AUCTIONS_PRICE_URL. */ + private ExecutorService es = Executors.newCachedThreadPool(); public void updatePrices() { if(System.currentTimeMillis() - auctionLastUpdate > 1000*60*120) { //2 hours craftCost.clear(); System.out.println("[NEU] UPDATING PRICE INFORMATION"); auctionLastUpdate = System.currentTimeMillis(); - try(Reader inReader = new InputStreamReader(new GZIPInputStream(new URL(AUCTIONS_PRICE_URL).openStream()))) { - auctionPricesJson = gson.fromJson(inReader, JsonObject.class); - } catch (IOException e) { - e.printStackTrace(); - } + es.submit(() -> { + try(Reader inReader = new InputStreamReader(new GZIPInputStream(new URL(AUCTIONS_PRICE_URL).openStream()))) { + auctionPricesJson = gson.fromJson(inReader, JsonObject.class); + } catch (IOException e) { + e.printStackTrace(); + } + }); } } public boolean hasAuctionInfo(String internalname) { + if(auctionPricesJson == null) return false; return auctionPricesJson.has("item_data") && auctionPricesJson.get("item_data").getAsJsonObject().has(internalname); } public boolean hasBazaarInfo(String internalname) { + if(auctionPricesJson == null) return false; return auctionPricesJson.has("bazaar") && auctionPricesJson.get("bazaar").getAsJsonObject().has(internalname); } @@ -276,7 +283,7 @@ public class NEUManager { if(info == null || !info.has("price")) { return 0; } - if(!auctionPricesJson.has("ench_prices") || !auctionPricesJson.has("ench_maximums")) { + if(auctionPricesJson == null || !auctionPricesJson.has("ench_prices") || !auctionPricesJson.has("ench_maximums")) { return 0; } JsonObject ench_prices = auctionPricesJson.getAsJsonObject("ench_prices"); diff --git a/src/main/java/io/github/moulberry/notenoughupdates/NEUOverlay.java b/src/main/java/io/github/moulberry/notenoughupdates/NEUOverlay.java index 25b27cc5..7db8875d 100644 --- a/src/main/java/io/github/moulberry/notenoughupdates/NEUOverlay.java +++ b/src/main/java/io/github/moulberry/notenoughupdates/NEUOverlay.java @@ -1053,7 +1053,7 @@ public class NEUOverlay extends Gui { } else if(getSortMode() == SORT_MODE_MOB) { return internalname.matches(mobRegex); } else if(getSortMode() == SORT_MODE_PET) { - return internalname.matches(petRegex); + return internalname.matches(petRegex) && item.get("displayname").getAsString().contains("["); } else if(getSortMode() == SORT_MODE_TOOL) { return checkItemType(item.get("lore").getAsJsonArray(), "SWORD", "BOW", "AXE", "PICKAXE", "FISHING ROD", "WAND", "SHOVEL", "HOE") >= 0; @@ -1099,6 +1099,9 @@ public class NEUOverlay extends Gui { case "thirtyvirus": searchedItems.add(manager.getItemInformation().get("SPIKED_BAIT")); break; + case "leocthl": + searchedItems.add(CustomItems.LEOCTHL); + break; } } @@ -1482,16 +1485,16 @@ public class NEUOverlay extends Gui { if(blurShaderHorz == null) { try { - blurShaderHorz = new Shader(Minecraft.getMinecraft().getResourceManager(), "blur", - Minecraft.getMinecraft().getFramebuffer(), blurOutputHorz); + blurShaderHorz = new Shader(Minecraft.getMinecraft().getResourceManager(), + "blur", Minecraft.getMinecraft().getFramebuffer(), blurOutputHorz); blurShaderHorz.getShaderManager().getShaderUniform("BlurDir").set(1, 0); blurShaderHorz.setProjectionMatrix(createProjectionMatrix(width, height)); } catch(Exception e) { } } if(blurShaderVert == null) { try { - blurShaderVert = new Shader(Minecraft.getMinecraft().getResourceManager(), "blur", - blurOutputHorz, blurOutputVert); + blurShaderVert = new Shader(Minecraft.getMinecraft().getResourceManager(), + "blur", blurOutputHorz, blurOutputVert); blurShaderVert.getShaderManager().getShaderUniform("BlurDir").set(0, 1); blurShaderVert.setProjectionMatrix(createProjectionMatrix(width, height)); } catch(Exception e) { } diff --git a/src/main/java/io/github/moulberry/notenoughupdates/NotEnoughUpdates.java b/src/main/java/io/github/moulberry/notenoughupdates/NotEnoughUpdates.java index 734f7ca1..efd38c55 100644 --- a/src/main/java/io/github/moulberry/notenoughupdates/NotEnoughUpdates.java +++ b/src/main/java/io/github/moulberry/notenoughupdates/NotEnoughUpdates.java @@ -11,6 +11,7 @@ import io.github.moulberry.notenoughupdates.commands.SimpleCommand; import io.github.moulberry.notenoughupdates.cosmetics.CapeManager; import io.github.moulberry.notenoughupdates.infopanes.CollectionLogInfoPane; import io.github.moulberry.notenoughupdates.infopanes.CosmeticsInfoPane; +import io.github.moulberry.notenoughupdates.mixins.MixinRenderItem; import io.github.moulberry.notenoughupdates.profileviewer.GuiProfileViewer; import io.github.moulberry.notenoughupdates.profileviewer.ProfileViewer; import io.github.moulberry.notenoughupdates.questing.GuiQuestLine; @@ -24,6 +25,8 @@ import net.minecraft.client.gui.inventory.*; import net.minecraft.client.renderer.GlStateManager; import net.minecraft.client.renderer.OpenGlHelper; import net.minecraft.client.settings.KeyBinding; +import net.minecraft.client.shader.Framebuffer; +import net.minecraft.client.shader.Shader; import net.minecraft.command.ICommandSender; import net.minecraft.event.ClickEvent; import net.minecraft.init.Blocks; @@ -37,6 +40,7 @@ import net.minecraft.scoreboard.ScoreObjective; import net.minecraft.scoreboard.Scoreboard; import net.minecraft.util.ChatComponentText; import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.Matrix4f; import net.minecraft.util.Session; import net.minecraftforge.client.ClientCommandHandler; import net.minecraftforge.client.event.*; @@ -61,10 +65,13 @@ import java.lang.reflect.Modifier; import java.net.Proxy; import java.text.NumberFormat; import java.util.*; +import java.util.List; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicBoolean; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import static io.github.moulberry.notenoughupdates.GuiTextures.*; @@ -127,10 +134,20 @@ public class NotEnoughUpdates { } }); + SimpleCommand enchantColourCommand = new SimpleCommand("neuec", new SimpleCommand.ProcessCommandRunnable() { + public void processCommand(ICommandSender sender, String[] args) { + openGui = new GuiEnchantColour(); + } + }); + private static ProfileViewer profileViewer; SimpleCommand viewProfileCommand = new SimpleCommand("neuprofile", new SimpleCommand.ProcessCommandRunnable() { public void processCommand(ICommandSender sender, String[] args) { + /*if(!OpenGlHelper.isFramebufferEnabled()) { + Minecraft.getMinecraft().thePlayer.addChatMessage(new ChatComponentText(EnumChatFormatting.RED + + "This feature requires FBOs to work. Try disabling Optifine's 'Fast Render'.")); + } else*/ if(args.length != 1) { Minecraft.getMinecraft().thePlayer.addChatMessage(new ChatComponentText(EnumChatFormatting.RED + "idiot.")); @@ -210,6 +227,7 @@ public class NotEnoughUpdates { ClientCommandHandler.instance.registerCommand(linksCommand); ClientCommandHandler.instance.registerCommand(viewProfileCommand); ClientCommandHandler.instance.registerCommand(overlayPlacementsCommand); + ClientCommandHandler.instance.registerCommand(enchantColourCommand); //ClientCommandHandler.instance.registerCommand(questingCommand); ClientCommandHandler.instance.registerCommand(neuAhCommand); @@ -383,28 +401,39 @@ public class NotEnoughUpdates { * 2)Adds unique items to the collection log */ private HashMap newItemAddMap = new HashMap<>(); + private long lastLongUpdate = 0; @SubscribeEvent public void onTick(TickEvent.ClientTickEvent event) { + boolean longUpdate = false; + long currentTime = System.currentTimeMillis(); + if(currentTime - lastLongUpdate > 1000) { + longUpdate = true; + lastLongUpdate = currentTime; + } if(openGui != null) { Minecraft.getMinecraft().displayGuiScreen(openGui); openGui = null; } - if(hasSkyblockScoreboard()) { - manager.auctionManager.tick(); - if(!joinedSB && manager.config.showUpdateMsg.value) { - if(displayUpdateMessageIfOutOfDate()) { - joinedSB = false; + if(longUpdate) { + updateSkyblockScoreboard(); + if(hasSkyblockScoreboard()) { + manager.auctionManager.tick(); + if(!joinedSB && manager.config.showUpdateMsg.value) { + if(displayUpdateMessageIfOutOfDate()) { + joinedSB = false; + } } + SBScoreboardData.getInstance().tick(); + //GuiQuestLine.questLine.tick(); } - SBScoreboardData.getInstance().tick(); - //GuiQuestLine.questLine.tick(); + //ItemRarityHalo.resetItemHaloCache(); } - if(currChatMessage != null && System.currentTimeMillis() - lastChatMessage > CHAT_MSG_COOLDOWN) { - lastChatMessage = System.currentTimeMillis(); + if(currChatMessage != null && currentTime - lastChatMessage > CHAT_MSG_COOLDOWN) { + lastChatMessage = currentTime; Minecraft.getMinecraft().thePlayer.sendChatMessage(currChatMessage); currChatMessage = null; } - if(hasSkyblockScoreboard() && manager.getCurrentProfile() != null && manager.getCurrentProfile().length() > 0) { + if(longUpdate && hasSkyblockScoreboard() && manager.getCurrentProfile() != null && manager.getCurrentProfile().length() > 0) { HashSet newItem = new HashSet<>(); if(Minecraft.getMinecraft().currentScreen instanceof GuiContainer && !(Minecraft.getMinecraft().currentScreen instanceof GuiCrafting)) { @@ -512,7 +541,8 @@ public class NotEnoughUpdates { String containerName = container.getLowerChestInventory().getDisplayName().getUnformattedText(); manager.auctionManager.customAH.setRenderOverAuctionView(containerName.trim().equals("Auction View") || - containerName.trim().equals("BIN Auction View") || containerName.trim().equals("Confirm Bid")); + containerName.trim().equals("BIN Auction View") || containerName.trim().equals("Confirm Bid") || + containerName.trim().equals("Confirm Purchase")); } //OPEN @@ -682,7 +712,7 @@ public class NotEnoughUpdates { */ @SubscribeEvent public void onGuiBackgroundDraw(GuiScreenEvent.BackgroundDrawnEvent event) { - if((event.gui instanceof GuiContainer || event.gui instanceof CustomAHGui) && isOnSkyblock()) { + if((event.gui instanceof GuiContainer || event.gui instanceof CustomAHGui || event.gui instanceof GuiItemRecipe) && isOnSkyblock()) { ScaledResolution scaledresolution = new ScaledResolution(Minecraft.getMinecraft()); int width = scaledresolution.getScaledWidth(); @@ -749,7 +779,7 @@ public class NotEnoughUpdates { @SubscribeEvent public void onGuiScreenDrawPost(GuiScreenEvent.DrawScreenEvent.Post event) { if(!(event.gui instanceof CustomAHGui || manager.auctionManager.customAH.isRenderOverAuctionView())) { - if(event.gui instanceof GuiContainer && isOnSkyblock()) { + if((event.gui instanceof GuiContainer || event.gui instanceof GuiItemRecipe) && isOnSkyblock()) { renderDungeonChestOverlay(event.gui); @@ -1003,6 +1033,103 @@ public class NotEnoughUpdates { }*/ } + @SubscribeEvent(priority = EventPriority.LOW) + public void onItemTooltipLow(ItemTooltipEvent event) { + //NotEnoughUpdates.INSTANCE.manager.config.enchantColours.value + int index = 0; + List newTooltip = new ArrayList<>(); + for(String line : event.toolTip) { + for(String op : NotEnoughUpdates.INSTANCE.manager.config.enchantColours.value) { + List colourOps = GuiEnchantColour.splitter.splitToList(op); + String enchantName = GuiEnchantColour.getColourOpIndex(colourOps, 0); + String comparator = GuiEnchantColour.getColourOpIndex(colourOps, 1); + String comparison = GuiEnchantColour.getColourOpIndex(colourOps, 2); + String colourCode = GuiEnchantColour.getColourOpIndex(colourOps, 3); + + if(enchantName.length() == 0) continue; + if(comparator.length() == 0) continue; + if(comparison.length() == 0) continue; + if(colourCode.length() == 0) continue; + + if(enchantName.contains("(") || enchantName.contains(")")) continue; + + int comparatorI = ">=<".indexOf(comparator.charAt(0)); + + int levelToFind = -1; + try { + levelToFind = Integer.parseInt(comparison); + } catch(Exception e) { continue; } + + if(comparatorI < 0) continue; + if("0123456789abcdefz".indexOf(colourCode.charAt(0)) < 0) continue; + + //item_lore = item_lore.replaceAll("\\u00A79("+lvl4Max+" IV)", EnumChatFormatting.DARK_PURPLE+"$1"); + //9([a-zA-Z ]+?) ([0-9]+|(I|II|III|IV|V|VI|VII|VIII|IX|X))(,|$) + Pattern pattern; + try { + String prefix = "\u00A79"; + if(enchantName.startsWith("ULT_")) prefix = "\u00A7l\u00A7d"; + pattern = Pattern.compile(prefix+"("+enchantName+") ([0-9]+|(I|II|III|IV|V|VI|VII|VIII|IX|X))(,|$)"); + } catch(Exception e) {continue;} //malformed regex + Matcher matcher = pattern.matcher(line); + int matchCount = 0; + while(matcher.find() && matchCount < 5) { + matchCount++; + int level = -1; + String levelStr = matcher.group(2); + if(levelStr == null) continue; + try { + level = Integer.parseInt(levelStr); + } catch(Exception e) { + switch(levelStr) { + case "I": + level = 1; break; + case "II": + level = 2; break; + case "III": + level = 3; break; + case "IV": + level = 4; break; + case "V": + level = 5; break; + case "VI": + level = 6; break; + case "VII": + level = 7; break; + case "VIII": + level = 8; break; + case "IX": + level = 9; break; + case "X": + level = 10; break; + } + } + boolean matches = false; + if(level > 0) { + switch(comparator) { + case ">": + matches = level > levelToFind; break; + case "=": + matches = level == levelToFind; break; + case "<": + matches = level < levelToFind; break; + } + } + if(matches) { + if(!colourCode.equals("z")) { + line = line.replaceAll("\\u00A79"+matcher.group(1), "\u00A7"+colourCode+matcher.group(1)); + } else { + line = line.replaceAll("\\u00A79"+matcher.group(1), Utils.chromaString(matcher.group(1))); + } + } + } + } + newTooltip.add(line); + } + event.toolTip.clear(); + event.toolTip.addAll(newTooltip); + } + /** * This makes it so that holding LCONTROL while hovering over an item with NBT will show the NBT of the item. * @param event @@ -1103,13 +1230,19 @@ public class NotEnoughUpdates { } } - //Stolen from Biscut's SkyblockAddons public boolean isOnSkyblock() { if(!manager.config.onlyShowOnSkyblock.value) return true; return hasSkyblockScoreboard(); } + private boolean hasSkyblockScoreboard; + public boolean hasSkyblockScoreboard() { + return hasSkyblockScoreboard; + } + + //Stolen from Biscut's SkyblockAddons + private void updateSkyblockScoreboard() { Minecraft mc = Minecraft.getMinecraft(); if (mc != null && mc.theWorld != null) { @@ -1119,12 +1252,13 @@ public class NotEnoughUpdates { String objectiveName = sidebarObjective.getDisplayName().replaceAll("(?i)\\u00A7.", ""); for (String skyblock : SKYBLOCK_IN_ALL_LANGUAGES) { if (objectiveName.startsWith(skyblock)) { - return true; + hasSkyblockScoreboard = true; + return; } } } } - return false; + hasSkyblockScoreboard = false; } } diff --git a/src/main/java/io/github/moulberry/notenoughupdates/auction/APIManager.java b/src/main/java/io/github/moulberry/notenoughupdates/auction/APIManager.java index 53cc4639..4d30cf3e 100644 --- a/src/main/java/io/github/moulberry/notenoughupdates/auction/APIManager.java +++ b/src/main/java/io/github/moulberry/notenoughupdates/auction/APIManager.java @@ -40,6 +40,8 @@ public class APIManager { private JsonArray playerInformation = null; + public HashMap aucUpdates = new HashMap<>(); + public TreeMap>> extrasToAucIdMap = new TreeMap<>(); private long lastPageUpdate = 0; @@ -141,20 +143,21 @@ public class APIManager { public void tick() { customAH.tick(); - if(System.currentTimeMillis() - lastPageUpdate > 5*1000) { + long currentTime = System.currentTimeMillis(); + if(currentTime - lastPageUpdate > 5*1000) { lastPageUpdate = System.currentTimeMillis(); updatePageTick(); ahNotification(); } - if(System.currentTimeMillis() - lastProfileUpdate > 10*1000) { + if(currentTime - lastProfileUpdate > 10*1000) { lastProfileUpdate = System.currentTimeMillis(); updateProfiles(Minecraft.getMinecraft().thePlayer.getUniqueID().toString().replace("-", "")); } - if(System.currentTimeMillis() - lastCleanup > 120*1000) { + if(currentTime - lastCleanup > 120*1000) { lastCleanup = System.currentTimeMillis(); cleanup(); } - if(System.currentTimeMillis() - lastCustomAHSearch > 60*1000) { + if(currentTime - lastCustomAHSearch > 60*1000) { lastCustomAHSearch = System.currentTimeMillis(); if(Minecraft.getMinecraft().currentScreen instanceof CustomAHGui || customAH.isRenderOverAuctionView()) { customAH.updateSearch(); @@ -415,11 +418,12 @@ public class APIManager { String rarity = auction.get("tier").getAsString(); JsonArray bids = auction.get("bids").getAsJsonArray(); - for(String lvl4Max : lvl4Maxes) { - item_lore = item_lore.replaceAll("\\u00A79("+lvl4Max+" IV)", EnumChatFormatting.DARK_PURPLE+"$1"); + { + Auction old = auctionMap.get(auctionUuid); + if(old != null && old.highest_bid_amount != highest_bid_amount) { + aucUpdates.put(page, aucUpdates.computeIfAbsent(page, k->0)+1); + } } - item_lore = item_lore.replaceAll("\\u00A79([A-Za-z ]+ VI)", EnumChatFormatting.DARK_PURPLE+"$1"); - item_lore = item_lore.replaceAll("\\u00A79([A-Za-z ]+ VII)", EnumChatFormatting.RED+"$1"); try { NBTTagCompound item_tag; diff --git a/src/main/java/io/github/moulberry/notenoughupdates/auction/CustomAH.java b/src/main/java/io/github/moulberry/notenoughupdates/auction/CustomAH.java index 77fa8425..2bbabd64 100644 --- a/src/main/java/io/github/moulberry/notenoughupdates/auction/CustomAH.java +++ b/src/main/java/io/github/moulberry/notenoughupdates/auction/CustomAH.java @@ -182,10 +182,12 @@ public class CustomAH extends Gui { } public void tick() { - if(shouldUpdateSearch) updateSearch(); - if(shouldSortItems) { - sortItems(); - shouldSortItems = false; + if(Minecraft.getMinecraft().currentScreen instanceof CustomAHGui || renderOverAuctionView) { + if(shouldUpdateSearch) updateSearch(); + if(shouldSortItems) { + sortItems(); + shouldSortItems = false; + } } } @@ -530,8 +532,7 @@ public class CustomAH extends Gui { } catch(NullPointerException e) { //i cant be bothered } } - } else if(containerName.trim().equals("Confirm Bid")) { - + } else if(containerName.trim().equals("Confirm Bid") || containerName.trim().equals("Confirm Purchase")) { Minecraft.getMinecraft().getTextureManager().bindTexture(auction_accept); this.drawTexturedModalRect(auctionViewLeft, guiTop, 0, 0, 78, 172); @@ -878,6 +879,11 @@ public class CustomAH extends Gui { lore.add("ID Tagged Auctions: " + manager.auctionManager.internalnameTaggedAuctions); lore.add("Total Tags: " + manager.auctionManager.totalTags); lore.add("Tagged Auctions: " + manager.auctionManager.taggedAuctions); + lore.add("AucUpdates(0): " + manager.auctionManager.aucUpdates.computeIfAbsent(0, k->0)); + lore.add("AucUpdates(1): " + manager.auctionManager.aucUpdates.computeIfAbsent(1, k->0)); + lore.add("AucUpdates(20): " + manager.auctionManager.aucUpdates.computeIfAbsent(20, k->0)); + lore.add("AucUpdates(Last-1): " + manager.auctionManager.aucUpdates.computeIfAbsent(manager.auctionManager.aucUpdates.size()-2, k->0)); + lore.add("AucUpdates(Last): " + manager.auctionManager.aucUpdates.computeIfAbsent(manager.auctionManager.aucUpdates.size()-1, k->0)); lore.add(""); lore.add(EnumChatFormatting.AQUA + "Right-Click to copy current aucid to clipboard!"); lore.add(EnumChatFormatting.YELLOW + "Click to refresh!"); @@ -1371,7 +1377,7 @@ public class CustomAH extends Gui { Utils.playPressSound(); } } - } else if(containerName.trim().equals("Confirm Bid")) { + } else if(containerName.trim().equals("Confirm Bid") || containerName.trim().equals("Confirm Purchase")) { if(mouseX > guiLeft+getXSize()+4+31 && mouseX < guiLeft+getXSize()+4+31+16) { if(mouseY > guiTop+31 && mouseY < guiTop+31+16) { if(currentAucId != null) { diff --git a/src/main/java/io/github/moulberry/notenoughupdates/infopanes/CollectionLogInfoPane.java b/src/main/java/io/github/moulberry/notenoughupdates/infopanes/CollectionLogInfoPane.java index 5f9e6af1..e4c524f2 100644 --- a/src/main/java/io/github/moulberry/notenoughupdates/infopanes/CollectionLogInfoPane.java +++ b/src/main/java/io/github/moulberry/notenoughupdates/infopanes/CollectionLogInfoPane.java @@ -241,19 +241,6 @@ public class CollectionLogInfoPane extends ScrollableInfoPane { } } - private Matrix4f createProjectionMatrix(int width, int height) { - Matrix4f projMatrix = new Matrix4f(); - projMatrix.setIdentity(); - projMatrix.m00 = 2.0F / (float)width; - projMatrix.m11 = 2.0F / (float)(-height); - projMatrix.m22 = -0.0020001999F; - projMatrix.m33 = 1.0F; - projMatrix.m03 = -1.0F; - projMatrix.m13 = 1.0F; - projMatrix.m23 = -1.0001999F; - return projMatrix; - } - public int getCurrentAcquiredCount() { if(getAcquiredItems() == null) return 0; if(!getAcquiredItems().containsKey(manager.getCurrentProfile())) return 0; @@ -268,7 +255,7 @@ public class CollectionLogInfoPane extends ScrollableInfoPane { if(itemFramebuffer != null && grayscaleShader != null && (itemFramebuffer.framebufferWidth != width || itemFramebuffer.framebufferHeight != height)) { - grayscaleShader.setProjectionMatrix(createProjectionMatrix( + grayscaleShader.setProjectionMatrix(Utils.createProjectionMatrix( width*scaledresolution.getScaleFactor(), height*scaledresolution.getScaleFactor())); } @@ -300,7 +287,7 @@ public class CollectionLogInfoPane extends ScrollableInfoPane { grayscaleShader = new Shader(new NEUResourceManager(Minecraft.getMinecraft().getResourceManager()), "grayscale", itemFramebuffer, itemFramebufferGrayscale); - grayscaleShader.setProjectionMatrix(createProjectionMatrix( + grayscaleShader.setProjectionMatrix(Utils.createProjectionMatrix( width*scaledresolution.getScaleFactor(), height*scaledresolution.getScaleFactor())); } catch(Exception e) { return; diff --git a/src/main/java/io/github/moulberry/notenoughupdates/itemeditor/GuiElementTextField.java b/src/main/java/io/github/moulberry/notenoughupdates/itemeditor/GuiElementTextField.java index 3c939589..23f4ad0b 100644 --- a/src/main/java/io/github/moulberry/notenoughupdates/itemeditor/GuiElementTextField.java +++ b/src/main/java/io/github/moulberry/notenoughupdates/itemeditor/GuiElementTextField.java @@ -54,7 +54,9 @@ public class GuiElementTextField extends GuiElement { } public void setText(String text) { - textField.setText(text); + if(textField.getText() == null || !textField.getText().equals(text)) { + textField.setText(text); + } } public void setSize(int searchBarXSize, int searchBarYSize) { @@ -300,6 +302,7 @@ public class GuiElementTextField extends GuiElement { if((options & FORCE_CAPS) != 0) typedChar = Character.toUpperCase(typedChar); if((options & NO_SPACE) != 0 && typedChar == ' ') return; + textField.setFocused(true); textField.textboxKeyTyped(typedChar, keyCode); if((options & COLOUR) != 0) { @@ -378,11 +381,18 @@ public class GuiElementTextField extends GuiElement { textNoColor = matcher.replaceFirst("\u00B6"+code); } + int xStartOffset = 5; + float scale = 1; String[] texts = text.split("\n"); for(int yOffI = 0; yOffI < texts.length; yOffI++) { int yOff = yOffI*extraSize; if(isScaling() && Minecraft.getMinecraft().fontRendererObj.getStringWidth(texts[yOffI])>searchBarXSize-10) { + scale = (searchBarXSize-2)/(float)Minecraft.getMinecraft().fontRendererObj.getStringWidth(texts[yOffI]); + if(scale > 1) scale=1; + float newLen = Minecraft.getMinecraft().fontRendererObj.getStringWidth(texts[yOffI])*scale; + xStartOffset = (int)((searchBarXSize-newLen)/2f); + Utils.drawStringCenteredScaledMaxWidth(texts[yOffI], Minecraft.getMinecraft().fontRendererObj, x+searchBarXSize/2f, y+searchBarYSize/2f+yOff, false, searchBarXSize-2, Color.WHITE.getRGB()); @@ -390,7 +400,6 @@ public class GuiElementTextField extends GuiElement { Minecraft.getMinecraft().fontRendererObj.drawString(Utils.trimToWidth(texts[yOffI], searchBarXSize-10), x + 5, y+(searchBarYSize-8)/2+yOff, Color.WHITE.getRGB()); } - } if(focus && System.currentTimeMillis()%1000>500) { @@ -406,22 +415,20 @@ public class GuiElementTextField extends GuiElement { if(split.length <= numLinesBeforeCursor || split.length == 0) { textBeforeCursorWidth = 0; } else { - textBeforeCursorWidth = Minecraft.getMinecraft().fontRendererObj.getStringWidth(split[split.length-1]); + textBeforeCursorWidth = (int)(Minecraft.getMinecraft().fontRendererObj.getStringWidth(split[split.length-1])*scale); } - drawRect(x + 5 + textBeforeCursorWidth, + drawRect(x + xStartOffset + textBeforeCursorWidth, y+(searchBarYSize-8)/2-1 + yOff, - x + 5 + textBeforeCursorWidth+1, + x + xStartOffset + textBeforeCursorWidth+1, y+(searchBarYSize-8)/2+9 + yOff, Color.WHITE.getRGB()); } String selectedText = textField.getSelectedText(); if(!selectedText.isEmpty()) { - int leftIndex = textField.getCursorPosition() < textField.getSelectionEnd() ? - textField.getCursorPosition() : textField.getSelectionEnd(); - int rightIndex = textField.getCursorPosition() > textField.getSelectionEnd() ? - textField.getCursorPosition() : textField.getSelectionEnd(); + int leftIndex = Math.min(textField.getCursorPosition(), textField.getSelectionEnd()); + int rightIndex = Math.max(textField.getCursorPosition(), textField.getSelectionEnd()); - int texX = 0; + float texX = 0; int texY = 0; boolean sectionSignPrev = false; boolean bold = false; @@ -440,9 +447,9 @@ public class GuiElementTextField extends GuiElement { if(c == '\n') { if(i >= leftIndex && i < rightIndex) { - drawRect(x + 5 + texX, + drawRect(x + xStartOffset + (int)texX, y+(searchBarYSize-8)/2-1 + texY, - x + 5 + texX + 3, + x + xStartOffset + (int)texX + 3, y+(searchBarYSize-8)/2+9 + texY, Color.LIGHT_GRAY.getRGB()); } @@ -456,22 +463,22 @@ public class GuiElementTextField extends GuiElement { int len = Minecraft.getMinecraft().fontRendererObj.getStringWidth(String.valueOf(c)); if(bold) len++; if(i >= leftIndex && i < rightIndex) { - drawRect(x + 5 + texX, + drawRect(x + xStartOffset + (int)texX, y+(searchBarYSize-8)/2-1 + texY, - x + 5 + texX + len, + x + xStartOffset + (int)(texX + len*scale), y+(searchBarYSize-8)/2+9 + texY, Color.LIGHT_GRAY.getRGB()); - Minecraft.getMinecraft().fontRendererObj.drawString(String.valueOf(c), - x + 5 + texX, - y+(searchBarYSize-8)/2 + texY, Color.BLACK.getRGB()); + Utils.drawStringScaled(String.valueOf(c), Minecraft.getMinecraft().fontRendererObj, + x + xStartOffset + texX, + y+searchBarYSize/2f-scale*8/2f + texY, false, Color.BLACK.getRGB(), scale); if(bold) { - Minecraft.getMinecraft().fontRendererObj.drawString(String.valueOf(c), - x + 5 + texX +1, - y+(searchBarYSize-8)/2 + texY, Color.BLACK.getRGB()); + Utils.drawStringScaled(String.valueOf(c), Minecraft.getMinecraft().fontRendererObj, + x + xStartOffset + texX + 1, + y+searchBarYSize/2f-scale*8/2f + texY, false, Color.BLACK.getRGB(), scale); } } - texX += len; + texX += len*scale; } } } diff --git a/src/main/java/io/github/moulberry/notenoughupdates/mixins/MixinInventoryEffectRenderer.java b/src/main/java/io/github/moulberry/notenoughupdates/mixins/MixinInventoryEffectRenderer.java index 51c85b19..00fdc873 100644 --- a/src/main/java/io/github/moulberry/notenoughupdates/mixins/MixinInventoryEffectRenderer.java +++ b/src/main/java/io/github/moulberry/notenoughupdates/mixins/MixinInventoryEffectRenderer.java @@ -4,6 +4,7 @@ import io.github.moulberry.notenoughupdates.NotEnoughUpdates; import net.minecraft.client.renderer.InventoryEffectRenderer; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.ModifyVariable; diff --git a/src/main/java/io/github/moulberry/notenoughupdates/mixins/MixinRenderItem.java b/src/main/java/io/github/moulberry/notenoughupdates/mixins/MixinRenderItem.java new file mode 100644 index 00000000..67f0f7dc --- /dev/null +++ b/src/main/java/io/github/moulberry/notenoughupdates/mixins/MixinRenderItem.java @@ -0,0 +1,53 @@ +package io.github.moulberry.notenoughupdates.mixins; + +import io.github.moulberry.notenoughupdates.ItemRarityHalo; +import io.github.moulberry.notenoughupdates.NEUResourceManager; +import io.github.moulberry.notenoughupdates.NotEnoughUpdates; +import io.github.moulberry.notenoughupdates.util.Utils; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.ScaledResolution; +import net.minecraft.client.renderer.GlStateManager; +import net.minecraft.client.renderer.OpenGlHelper; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.client.renderer.WorldRenderer; +import net.minecraft.client.renderer.entity.RenderItem; +import net.minecraft.client.renderer.vertex.DefaultVertexFormats; +import net.minecraft.client.resources.model.IBakedModel; +import net.minecraft.client.shader.Framebuffer; +import net.minecraft.client.shader.Shader; +import net.minecraft.item.ItemStack; +import net.minecraft.util.Matrix4f; +import org.lwjgl.BufferUtils; +import org.lwjgl.input.Keyboard; +import org.lwjgl.opengl.GL11; +import org.lwjgl.opengl.GL14; +import org.lwjgl.opengl.GL30; +import org.lwjgl.util.vector.Vector4f; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +import javax.vecmath.Vector3f; +import java.awt.*; +import java.lang.reflect.Field; +import java.lang.reflect.Modifier; +import java.nio.FloatBuffer; +import java.nio.IntBuffer; +import java.util.HashMap; + +@Mixin({RenderItem.class}) +public abstract class MixinRenderItem { + + //Lnet/minecraft/client/renderer/entity/RenderItem;renderItem(Lnet/minecraft/item/ItemStack;Lnet/minecraft/client/resources/model/IBakedModel;)V + @Inject(method="Lnet/minecraft/client/renderer/entity/RenderItem;renderItemIntoGUI(Lnet/minecraft/item/ItemStack;II)V", + at=@At("HEAD"), cancellable = true) + public void renderItemIntoGUI(ItemStack stack, int x, int y, CallbackInfo ci) { + if(x == 0 && y == 0 || true) return; + ItemRarityHalo.onItemRender(stack, x, y); + + if(Keyboard.isKeyDown(Keyboard.KEY_H)) ci.cancel(); + } +} diff --git a/src/main/java/io/github/moulberry/notenoughupdates/options/Options.java b/src/main/java/io/github/moulberry/notenoughupdates/options/Options.java index 1c8a6e07..8cd82568 100644 --- a/src/main/java/io/github/moulberry/notenoughupdates/options/Options.java +++ b/src/main/java/io/github/moulberry/notenoughupdates/options/Options.java @@ -1,6 +1,7 @@ package io.github.moulberry.notenoughupdates.options; import com.google.gson.*; +import io.github.moulberry.notenoughupdates.GuiEnchantColour; import io.github.moulberry.notenoughupdates.NEUOverlayPlacements; import io.github.moulberry.notenoughupdates.NotEnoughUpdates; import io.github.moulberry.notenoughupdates.mbgui.MBAnchorPoint; @@ -137,6 +138,11 @@ public class Options { "Item Background Opacity", false, "Changes the opacity of item background. Value between 0-255.", 0, 255); + public Option itemHighlightOpacity = new Option( + 178.0, + "Item Highlight Opacity", + false, + "Changes the opacity of item highlights. Value between 0-255.", 0, 255); public Option panePadding = new Option( 10.0, "Pane Padding", @@ -206,6 +212,17 @@ public class Options { "OverlaySearchBar", false, "OverlaySearchBar"); + public Option> enchantColours = new Option( + Utils.createList("[a-zA-Z ]+:\u003e:9:6", + "[a-zA-Z ]+:\u003e:6:c", + "[a-zA-Z ]+:\u003e:5:5", + "Experience:\u003e:3:5", + "Life Steal:\u003e:3:5", + "Scavenger:\u003e:3:5", + "Looting:\u003e:3:5"), + "enchantColours", + false, + "enchantColours"); private ArrayList createDefaultQuickCommands() { ArrayList arr = new ArrayList<>(); @@ -248,6 +265,11 @@ public class Options { buttons.add(new Button("Edit Gui Positions", "Allows you to change the position of the search bar, etc.", () -> { Minecraft.getMinecraft().displayGuiScreen(new NEUOverlayPlacements()); })); + + + buttons.add(new Button("Edit Enchant Colours", "Allows you to change the colour of any enchant at any level.", () -> { + Minecraft.getMinecraft().displayGuiScreen(new GuiEnchantColour()); + })); } public List