diff options
Diffstat (limited to 'src/main/java/io/github/moulberry/notenoughupdates/util/Utils.java')
| -rw-r--r-- | src/main/java/io/github/moulberry/notenoughupdates/util/Utils.java | 3159 |
1 files changed, 1712 insertions, 1447 deletions
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 6fde1054..9b5f62e3 100644 --- a/src/main/java/io/github/moulberry/notenoughupdates/util/Utils.java +++ b/src/main/java/io/github/moulberry/notenoughupdates/util/Utils.java @@ -52,1451 +52,1716 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; public class Utils { - public static boolean hasEffectOverride = false; - public static boolean disableCustomDungColours = false; - private static final LinkedList<Integer> guiScales = new LinkedList<>(); - private static ScaledResolution lastScale = new ScaledResolution(Minecraft.getMinecraft()); - //Labymod compatibility - private static final FloatBuffer projectionMatrixOld = BufferUtils.createFloatBuffer(16); - private static final FloatBuffer modelviewMatrixOld = BufferUtils.createFloatBuffer(16); - - public static <T> ArrayList<T> createList(T... values) { - ArrayList<T> list = new ArrayList<>(); - Collections.addAll(list, values); - return list; - } - - public static void resetGuiScale() { - guiScales.clear(); - } - - public static ScaledResolution peekGuiScale() { - return lastScale; - } - - public static ScaledResolution pushGuiScale(int scale) { - if (guiScales.size() == 0) { - if (Loader.isModLoaded("labymod")) { - GL11.glGetFloat(GL11.GL_PROJECTION_MATRIX, projectionMatrixOld); - GL11.glGetFloat(GL11.GL_MODELVIEW_MATRIX, modelviewMatrixOld); - } - } - - if (scale < 0) { - if (guiScales.size() > 0) { - guiScales.pop(); - } - } else { - if (scale == 0) { - guiScales.push(Minecraft.getMinecraft().gameSettings.guiScale); - } else { - guiScales.push(scale); - } - } - - int newScale = guiScales.size() > 0 ? Math.max(0, Math.min(4, guiScales.peek())) : Minecraft.getMinecraft().gameSettings.guiScale; - if (newScale == 0) newScale = Minecraft.getMinecraft().gameSettings.guiScale; - - int oldScale = Minecraft.getMinecraft().gameSettings.guiScale; - Minecraft.getMinecraft().gameSettings.guiScale = newScale; - ScaledResolution scaledresolution = new ScaledResolution(Minecraft.getMinecraft()); - Minecraft.getMinecraft().gameSettings.guiScale = oldScale; - - if (guiScales.size() > 0) { - GlStateManager.viewport(0, 0, Minecraft.getMinecraft().displayWidth, Minecraft.getMinecraft().displayHeight); - GlStateManager.matrixMode(GL11.GL_PROJECTION); - GlStateManager.loadIdentity(); - GlStateManager.ortho(0.0D, - scaledresolution.getScaledWidth_double(), - scaledresolution.getScaledHeight_double(), 0.0D, 1000.0D, 3000.0D); - GlStateManager.matrixMode(GL11.GL_MODELVIEW); - GlStateManager.loadIdentity(); - GlStateManager.translate(0.0F, 0.0F, -2000.0F); - } else { - if (Loader.isModLoaded("labymod") && projectionMatrixOld.limit() > 0 && modelviewMatrixOld.limit() > 0) { - GlStateManager.matrixMode(GL11.GL_PROJECTION); - GL11.glLoadMatrix(projectionMatrixOld); - GlStateManager.matrixMode(GL11.GL_MODELVIEW); - GL11.glLoadMatrix(modelviewMatrixOld); - } else { - GlStateManager.matrixMode(GL11.GL_PROJECTION); - GlStateManager.loadIdentity(); - GlStateManager.ortho(0.0D, - scaledresolution.getScaledWidth_double(), - scaledresolution.getScaledHeight_double(), 0.0D, 1000.0D, 3000.0D); - GlStateManager.matrixMode(GL11.GL_MODELVIEW); - GlStateManager.loadIdentity(); - GlStateManager.translate(0.0F, 0.0F, -2000.0F); - } - } - - lastScale = scaledresolution; - return scaledresolution; - } - - public static boolean getHasEffectOverride() { - return hasEffectOverride; - } - - public static void drawItemStackWithoutGlint(ItemStack stack, int x, int y) { - RenderItem itemRender = Minecraft.getMinecraft().getRenderItem(); - - disableCustomDungColours = true; - RenderHelper.enableGUIStandardItemLighting(); - itemRender.zLevel = -145; //Negates the z-offset of the below method. - hasEffectOverride = true; - try { - itemRender.renderItemAndEffectIntoGUI(stack, x, y); - } catch (Exception e) { - e.printStackTrace(); - } //Catch exceptions to ensure that hasEffectOverride is set back to false. - itemRender.renderItemOverlayIntoGUI(Minecraft.getMinecraft().fontRendererObj, stack, x, y, null); - hasEffectOverride = false; - itemRender.zLevel = 0; - RenderHelper.disableStandardItemLighting(); - disableCustomDungColours = false; - } - - public static void drawItemStackWithText(ItemStack stack, int x, int y, String text) { - if (stack == null) return; - - RenderItem itemRender = Minecraft.getMinecraft().getRenderItem(); - - disableCustomDungColours = true; - RenderHelper.enableGUIStandardItemLighting(); - itemRender.zLevel = -145; //Negates the z-offset of the below method. - itemRender.renderItemAndEffectIntoGUI(stack, x, y); - itemRender.renderItemOverlayIntoGUI(Minecraft.getMinecraft().fontRendererObj, stack, x, y, text); - itemRender.zLevel = 0; - RenderHelper.disableStandardItemLighting(); - disableCustomDungColours = false; - } - - public static void drawItemStack(ItemStack stack, int x, int y) { - if (stack == null) return; - - drawItemStackWithText(stack, x, y, null); - } - - 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) { - return chromaString(str, 0, false); - } - - private static final Pattern CHROMA_REPLACE_PATTERN = Pattern.compile("\u00a7z(.+?)(?=\u00a7|$)"); - - public static String chromaStringByColourCode(String str) { - if (str.contains("\u00a7z")) { - Matcher matcher = CHROMA_REPLACE_PATTERN.matcher(str); - - StringBuffer sb = new StringBuffer(); - - while (matcher.find()) { - matcher.appendReplacement(sb, - Utils.chromaString(matcher.group(1)) - .replace("\\", "\\\\") - .replace("$", "\\$") - ); - } - matcher.appendTail(sb); - - str = sb.toString(); - } - return str; - } - - private static long startTime = 0; - - public static String chromaString(String str, float offset, boolean bold) { - str = cleanColour(str); - - long currentTimeMillis = System.currentTimeMillis(); - if (startTime == 0) startTime = currentTimeMillis; - - int chromaSpeed = NotEnoughUpdates.INSTANCE.config.misc.chromaSpeed; - if (chromaSpeed < 10) chromaSpeed = 10; - if (chromaSpeed > 5000) chromaSpeed = 5000; - - StringBuilder rainbowText = new StringBuilder(); - int len = 0; - for (int i = 0; i < str.length(); i++) { - char c = str.charAt(i); - int index = ((int) (offset + len / 12f - (currentTimeMillis - startTime) / chromaSpeed)) % rainbow.length; - len += Minecraft.getMinecraft().fontRendererObj.getCharWidth(c); - if (bold) len++; - - if (index < 0) index += rainbow.length; - rainbowText.append(rainbow[index]); - if (bold) rainbowText.append(EnumChatFormatting.BOLD); - rainbowText.append(c); - } - return rainbowText.toString(); - } - - private static final 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)); - } - - public static String trimIgnoreColour(String str) { - return trimIgnoreColourStart(trimIgnoreColourEnd(str)); - } - - public static String trimIgnoreColourStart(String str) { - str = str.trim(); - boolean colourCodeLast = false; - StringBuilder colours = new StringBuilder(); - for (int i = 0; i < str.length(); i++) { - char c = str.charAt(i); - if (colourCodeLast) { - colours.append('\u00a7').append(c); - colourCodeLast = false; - continue; - } - if (c == '\u00A7') { - colourCodeLast = true; - } else if (c != ' ') { - return colours.append(str.substring(i)).toString(); - } - } - - return ""; - } - - public static String trimIgnoreColourEnd(String str) { - str = str.trim(); - for (int i = str.length() - 1; i >= 0; i--) { - char c = str.charAt(i); - if (c == ' ') { - continue; - } else if (i > 0 && str.charAt(i - 1) == '\u00a7') { - i--; - continue; - } - - return str.substring(0, i + 1); - } - - return ""; - } - - public static List<String> getRawTooltip(ItemStack stack) { - List<String> list = Lists.newArrayList(); - String s = stack.getDisplayName(); - - if (stack.hasDisplayName()) { - s = EnumChatFormatting.ITALIC + s; - } - - s = s + EnumChatFormatting.RESET; - - if (!stack.hasDisplayName() && stack.getItem() == Items.filled_map) { - s = s + " #" + stack.getItemDamage(); - } - - list.add(s); - - if (stack.hasTagCompound()) { - if (stack.getTagCompound().hasKey("display", 10)) { - NBTTagCompound nbttagcompound = stack.getTagCompound().getCompoundTag("display"); - - if (nbttagcompound.hasKey("color", 3)) { - list.add(EnumChatFormatting.ITALIC + StatCollector.translateToLocal("item.dyed")); - } - - if (nbttagcompound.getTagId("Lore") == 9) { - NBTTagList nbttaglist1 = nbttagcompound.getTagList("Lore", 8); - - if (nbttaglist1.tagCount() > 0) { - for (int j1 = 0; j1 < nbttaglist1.tagCount(); ++j1) { - list.add(EnumChatFormatting.DARK_PURPLE + "" + EnumChatFormatting.ITALIC + nbttaglist1.getStringTagAt(j1)); - } - } - } - } - } - - return list; - } - - public static String floatToString(float f, int decimals) { - if (decimals <= 0) { - return String.valueOf(Math.round(f)); - } else { - return String.format("%." + decimals + "f", f + 0.00001f); - } - } - - public static void drawItemStackLinear(ItemStack stack, int x, int y) { - if (stack == null) return; - - RenderItem itemRender = Minecraft.getMinecraft().getRenderItem(); - - RenderHelper.enableGUIStandardItemLighting(); - itemRender.zLevel = -145; //Negates the z-offset of the below method. - - IBakedModel ibakedmodel = itemRender.getItemModelMesher().getItemModel(stack); - GlStateManager.pushMatrix(); - Minecraft.getMinecraft().getTextureManager().bindTexture(TextureMap.locationBlocksTexture); - Minecraft.getMinecraft().getTextureManager().getTexture(TextureMap.locationBlocksTexture).setBlurMipmap(true, true); - GlStateManager.enableRescaleNormal(); - GlStateManager.enableAlpha(); - GlStateManager.alphaFunc(516, 0.1F); - GlStateManager.enableBlend(); - GlStateManager.blendFunc(770, 771); - GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F); - setupGuiTransform(x, y, ibakedmodel.isGui3d()); - ibakedmodel = net.minecraftforge.client.ForgeHooksClient.handleCameraTransforms(ibakedmodel, ItemCameraTransforms.TransformType.GUI); - itemRender.renderItem(stack, ibakedmodel); - GlStateManager.disableAlpha(); - GlStateManager.disableRescaleNormal(); - GlStateManager.disableLighting(); - GlStateManager.popMatrix(); - Minecraft.getMinecraft().getTextureManager().bindTexture(TextureMap.locationBlocksTexture); - Minecraft.getMinecraft().getTextureManager().getTexture(TextureMap.locationBlocksTexture).restoreLastBlurMipmap(); - - itemRender.renderItemOverlays(Minecraft.getMinecraft().fontRendererObj, stack, x, y); - itemRender.zLevel = 0; - RenderHelper.disableStandardItemLighting(); - } - - private static void setupGuiTransform(int xPosition, int yPosition, boolean isGui3d) { - GlStateManager.translate((float) xPosition, (float) yPosition, 5); - GlStateManager.translate(8.0F, 8.0F, 0.0F); - GlStateManager.scale(1.0F, 1.0F, -1.0F); - GlStateManager.scale(0.5F, 0.5F, 0.5F); - - if (isGui3d) { - GlStateManager.scale(40.0F, 40.0F, 40.0F); - GlStateManager.rotate(210.0F, 1.0F, 0.0F, 0.0F); - GlStateManager.rotate(-135.0F, 0.0F, 1.0F, 0.0F); - GlStateManager.enableLighting(); - } else { - GlStateManager.scale(64.0F, 64.0F, 64.0F); - GlStateManager.rotate(180.0F, 1.0F, 0.0F, 0.0F); - GlStateManager.disableLighting(); - } - } - - public static Method getMethod(Class<?> clazz, Class<?>[] params, String... methodNames) { - for (String methodName : methodNames) { - try { - return clazz.getDeclaredMethod(methodName, params); - } catch (Exception ignored) {} - } - return null; - } - - public static Object getField(Class<?> clazz, Object o, String... fieldNames) { - Field field = null; - for (String fieldName : fieldNames) { - try { - field = clazz.getDeclaredField(fieldName); - break; - } catch (Exception ignored) {} - } - if (field != null) { - field.setAccessible(true); - try { - return field.get(o); - } catch (IllegalAccessException ignored) {} - } - return null; - } - - public static Slot getSlotUnderMouse(GuiContainer container) { - Slot slot = (Slot) getField(GuiContainer.class, container, "theSlot", "field_147006_u"); - if (slot == null) { - slot = SlotLocking.getInstance().getRealSlot(); - } - return slot; - } - - public static void drawTexturedRect(float x, float y, float width, float height) { - drawTexturedRect(x, y, width, height, 0, 1, 0, 1); - } - - public static void drawTexturedRect(float x, float y, float width, float height, int filter) { - drawTexturedRect(x, y, width, height, 0, 1, 0, 1, filter); - } - - public static void drawTexturedRect(float x, float y, float width, float height, float uMin, float uMax, float vMin, float vMax) { - drawTexturedRect(x, y, width, height, uMin, uMax, vMin, vMax, GL11.GL_LINEAR); - } - - public static String cleanColour(String in) { - return in.replaceAll("(?i)\\u00A7.", ""); - } - - public static String cleanColourNotModifiers(String in) { - return in.replaceAll("(?i)\\u00A7[0-9a-f]", ""); - } - - public static String fixBrokenAPIColour(String in) { - return in.replaceAll("(?i)\\u00C2(\\u00A7.)", "$1"); - } - - public static String prettyCase(String str) { - return str.substring(0, 1).toUpperCase() + str.substring(1).toLowerCase(); - } - - public static String[] rarityArr = new String[]{ - "COMMON", "UNCOMMON", "RARE", "EPIC", "LEGENDARY", "MYTHIC", "SPECIAL", "VERY SPECIAL", "SUPREME", "^^ THAT ONE IS DIVINE ^^"//, "DIVINE" - }; - - public static String[] rarityArrC = new String[]{ - EnumChatFormatting.WHITE + EnumChatFormatting.BOLD.toString() + "COMMON", - EnumChatFormatting.GREEN + EnumChatFormatting.BOLD.toString() + "UNCOMMON", - EnumChatFormatting.BLUE + EnumChatFormatting.BOLD.toString() + "RARE", - EnumChatFormatting.DARK_PURPLE + EnumChatFormatting.BOLD.toString() + "EPIC", - EnumChatFormatting.GOLD + EnumChatFormatting.BOLD.toString() + "LEGENDARY", - EnumChatFormatting.LIGHT_PURPLE + EnumChatFormatting.BOLD.toString() + "MYTHIC", - EnumChatFormatting.RED + EnumChatFormatting.BOLD.toString() + "SPECIAL", - EnumChatFormatting.RED + EnumChatFormatting.BOLD.toString() + "VERY SPECIAL", - EnumChatFormatting.AQUA + EnumChatFormatting.BOLD.toString() + "DIVINE", - EnumChatFormatting.AQUA + EnumChatFormatting.BOLD.toString() + "DIVINE", - //EnumChatFormatting.AQUA+EnumChatFormatting.BOLD.toString()+"DIVINE", - - }; - public static final HashMap<String, String> rarityArrMap = new HashMap<String, String>() {{ - put("COMMON", rarityArrC[0]); - put("UNCOMMON", rarityArrC[1]); - put("RARE", rarityArrC[2]); - put("EPIC", rarityArrC[3]); - put("LEGENDARY", rarityArrC[4]); - put("MYTHIC", rarityArrC[5]); - put("SPECIAL", rarityArrC[6]); - put("VERY SPECIAL", rarityArrC[7]); - put("DIVINE", rarityArrC[8]); - // put("DIVINE", rarityArrC[9]); - }}; - - public static String getRarityFromInt(int rarity) { - if (rarity < 0 || rarity >= rarityArr.length) { - return rarityArr[0]; - } - return rarityArr[rarity]; - } - - public static int checkItemTypePet(List<String> lore) { - for (int i = lore.size() - 1; i >= 0; i--) { - String line = Utils.cleanColour(lore.get(i)); - for (int i1 = 0; i1 < rarityArr.length; i1++) { - if (line.equals(rarityArr[i1])) { - return i1; - } - } - } - return -1; - } - - public static int checkItemType(JsonArray lore, boolean contains, String... typeMatches) { - for (int i = lore.size() - 1; i >= 0; i--) { - String line = lore.get(i).getAsString(); - - int returnType = checkItemType(line, contains, typeMatches); - if (returnType != -1) { - return returnType; - } - } - return -1; - } - - public static int checkItemType(String[] lore, boolean contains, String... typeMatches) { - for (int i = lore.length - 1; i >= 0; i--) { - String line = lore[i]; - - int returnType = checkItemType(line, contains, typeMatches); - if (returnType != -1) { - return returnType; - } - } - return -1; - } - - public static int checkItemType(List<String> lore, boolean contains, String... typeMatches) { - for (int i = lore.size() - 1; i >= 0; i--) { - String line = lore.get(i); - - int returnType = checkItemType(line, contains, typeMatches); - if (returnType != -1) { - return returnType; - } - } - return -1; - } - - private static int checkItemType(String line, boolean contains, String... typeMatches) { - for (String rarity : rarityArr) { - for (int j = 0; j < typeMatches.length; j++) { - 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])) { - return j; - } else if (line.trim().endsWith(rarity + " DUNGEON " + typeMatches[j])) { - return j; - } - } - } - } - return -1; - } - - public static float round(float value, int precision) { - int scale = (int) Math.pow(10, precision); - return (float) Math.round(value * scale) / scale; - } - - public static void playPressSound() { - playSound(new ResourceLocation("gui.button.press"), true); - } - - public static void playSound(ResourceLocation sound, boolean gui) { - if (NotEnoughUpdates.INSTANCE.config.misc.guiButtonClicks || !gui) { - Minecraft.getMinecraft().getSoundHandler().playSound(PositionedSoundRecord.create(sound, 1.0F)); - } - } - - public static String cleanDuplicateColourCodes(String line) { - StringBuilder sb = new StringBuilder(); - char currentColourCode = 'r'; - boolean sectionSymbolLast = false; - for (char c : line.toCharArray()) { - if ((int) c > 50000) continue; - - if (c == '\u00a7') { - sectionSymbolLast = true; - } else { - if (sectionSymbolLast) { - if (currentColourCode != c) { - sb.append('\u00a7'); - sb.append(c); - currentColourCode = c; - } - sectionSymbolLast = false; - } else { - sb.append(c); - } - } - } - return sb.toString(); - } - - public static void drawTexturedRect(float x, float y, float width, float height, float uMin, float uMax, float vMin, float vMax, int filter) { - GlStateManager.enableTexture2D(); - GlStateManager.enableBlend(); - GlStateManager.tryBlendFuncSeparate(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA, GL11.GL_ONE, GL11.GL_ONE_MINUS_SRC_ALPHA); - GL14.glBlendFuncSeparate(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA, GL11.GL_ONE, GL11.GL_ONE_MINUS_SRC_ALPHA); - - GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MIN_FILTER, filter); - GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, filter); - - Tessellator tessellator = Tessellator.getInstance(); - WorldRenderer worldrenderer = tessellator.getWorldRenderer(); - worldrenderer.begin(7, DefaultVertexFormats.POSITION_TEX); - worldrenderer - .pos(x, y + height, 0.0D) - .tex(uMin, vMax).endVertex(); - worldrenderer - .pos(x + width, y + height, 0.0D) - .tex(uMax, vMax).endVertex(); - worldrenderer - .pos(x + width, y, 0.0D) - .tex(uMax, vMin).endVertex(); - worldrenderer - .pos(x, y, 0.0D) - .tex(uMin, vMin).endVertex(); - tessellator.draw(); - - GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MIN_FILTER, GL11.GL_NEAREST); - GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_NEAREST); - - GlStateManager.disableBlend(); - } - - public static void drawTexturedRectNoBlend(float x, float y, float width, float height, float uMin, float uMax, float vMin, float vMax, int filter) { - GlStateManager.enableTexture2D(); - - GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MIN_FILTER, filter); - GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, filter); - - Tessellator tessellator = Tessellator.getInstance(); - WorldRenderer worldrenderer = tessellator.getWorldRenderer(); - worldrenderer.begin(7, DefaultVertexFormats.POSITION_TEX); - worldrenderer - .pos(x, y + height, 0.0D) - .tex(uMin, vMax).endVertex(); - worldrenderer - .pos(x + width, y + height, 0.0D) - .tex(uMax, vMax).endVertex(); - worldrenderer - .pos(x + width, y, 0.0D) - .tex(uMax, vMin).endVertex(); - worldrenderer - .pos(x, y, 0.0D) - .tex(uMin, vMin).endVertex(); - tessellator.draw(); - - GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MIN_FILTER, GL11.GL_NEAREST); - GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_NEAREST); - } - - public static ItemStack createItemStack(Item item, String displayname, String... lore) { - return createItemStack(item, displayname, 0, lore); - } - - public static ItemStack createItemStack(Item item, String displayname, int damage, String... lore) { - ItemStack stack = new ItemStack(item, 1, damage); - NBTTagCompound tag = new NBTTagCompound(); - NBTTagCompound display = new NBTTagCompound(); - NBTTagList Lore = new NBTTagList(); - - for (String line : lore) { - Lore.appendTag(new NBTTagString(line)); - } - - display.setString("Name", displayname); - display.setTag("Lore", Lore); - - tag.setTag("display", display); - tag.setInteger("HideFlags", 254); - - stack.setTagCompound(tag); - - return stack; - } - - public static ItemStack editItemStackInfo(ItemStack itemStack, String displayName, boolean disableNeuToolTips, String... lore) { - NBTTagCompound tag = itemStack.getTagCompound(); - NBTTagCompound display = tag.getCompoundTag("display"); - NBTTagList Lore = new NBTTagList(); - - for (String line : lore) { - Lore.appendTag(new NBTTagString(line)); - } - - display.setString("Name", displayName); - display.setTag("Lore", Lore); - - tag.setTag("display", display); - tag.setInteger("HideFlags", 254); - if (disableNeuToolTips) { - tag.setBoolean("disableNeuTooltip", true); - } - - itemStack.setTagCompound(tag); - - return itemStack; - } - - public static ItemStack createSkull(String displayName, String uuid, String value){ - ItemStack render = new ItemStack(Items.skull, 1, 3); - NBTTagCompound tag = new NBTTagCompound(); - NBTTagCompound skullOwner = new NBTTagCompound(); - NBTTagCompound properties = new NBTTagCompound(); - NBTTagList textures = new NBTTagList(); - NBTTagCompound textures_0 = new NBTTagCompound(); - NBTTagCompound display = new NBTTagCompound(); - - skullOwner.setString("Id", uuid); - skullOwner.setString("Name", uuid); - - textures_0.setString("Value", value); - textures.appendTag(textures_0); - - display.setString("Name", displayName); - tag.setTag("display",display); - - properties.setTag("textures", textures); - skullOwner.setTag("Properties", properties); - tag.setTag("SkullOwner", skullOwner); - render.setTagCompound(tag); - return render; - } - - public static void drawStringF(String str, FontRenderer fr, float x, float y, boolean shadow, int colour) { - fr.drawString(str, x, y, colour, shadow); - } - - public static int getCharVertLen(char c) { - if ("acegmnopqrsuvwxyz".indexOf(c) >= 0) { - return 5; - } else { - return 7; - } - } - - public static float getVerticalHeight(String str) { - str = cleanColour(str); - float height = 0; - for (int i = 0; i < str.length(); i++) { - char c = str.charAt(i); - int charHeight = getCharVertLen(c); - height += charHeight + 1.5f; - } - return height; - } - - public static void drawStringVertical(String str, FontRenderer fr, float x, float y, boolean shadow, int colour) { - String format = FontRenderer.getFormatFromString(str); - str = cleanColour(str); - for (int i = 0; i < str.length(); i++) { - char c = str.charAt(i); - - int charHeight = getCharVertLen(c); - int charWidth = fr.getCharWidth(c); - fr.drawString(format + c, x + (5 - charWidth) / 2f, y - 7 + charHeight, colour, shadow); - - y += charHeight + 1.5f; - } - } - - public static void renderShadowedString(String str, float x, float y, int maxLength) { - int strLen = Minecraft.getMinecraft().fontRendererObj.getStringWidth(str); - float factor; - if (maxLength < 0) { - factor = 1; - } else { - factor = maxLength / (float) strLen; - factor = Math.min(1, factor); - } - - for (int xOff = -2; xOff <= 2; xOff++) { - for (int yOff = -2; yOff <= 2; yOff++) { - if (Math.abs(xOff) != Math.abs(yOff)) { - Utils.drawStringCenteredScaledMaxWidth(Utils.cleanColourNotModifiers(str), Minecraft.getMinecraft().fontRendererObj, - x + xOff / 2f * factor, y + 4 + yOff / 2f * factor, false, maxLength, - new Color(0, 0, 0, 200 / Math.max(Math.abs(xOff), Math.abs(yOff))).getRGB()); - } - } - } - - GlStateManager.color(1, 1, 1, 1); - Utils.drawStringCenteredScaledMaxWidth(str, Minecraft.getMinecraft().fontRendererObj, - x, y + 4, false, maxLength, 4210752); - } - - public static void renderAlignedString(String first, String second, float x, float y, int length) { - FontRenderer fontRendererObj = Minecraft.getMinecraft().fontRendererObj; - if (fontRendererObj.getStringWidth(first + " " + second) >= length) { - renderShadowedString(first + " " + second, x + length / 2f, y, length); - } else { - for (int xOff = -2; xOff <= 2; xOff++) { - for (int yOff = -2; yOff <= 2; yOff++) { - if (Math.abs(xOff) != Math.abs(yOff)) { - fontRendererObj.drawString(Utils.cleanColourNotModifiers(first), - x + xOff / 2f, y + yOff / 2f, - new Color(0, 0, 0, 200 / Math.max(Math.abs(xOff), Math.abs(yOff))).getRGB(), false); - } - } - } - - int secondLen = fontRendererObj.getStringWidth(second); - GlStateManager.color(1, 1, 1, 1); - fontRendererObj.drawString(first, x, y, 4210752, false); - for (int xOff = -2; xOff <= 2; xOff++) { - for (int yOff = -2; yOff <= 2; yOff++) { - if (Math.abs(xOff) != Math.abs(yOff)) { - fontRendererObj.drawString(Utils.cleanColourNotModifiers(second), - x + length - secondLen + xOff / 2f, y + yOff / 2f, - new Color(0, 0, 0, 200 / Math.max(Math.abs(xOff), Math.abs(yOff))).getRGB(), false); - } - } - } - - GlStateManager.color(1, 1, 1, 1); - fontRendererObj.drawString(second, x + length - secondLen, y, 4210752, false); - } - } - - public static void drawStringScaledMaxWidth(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); - - drawStringScaled(str, fr, x, y, shadow, colour, factor); - } - - public static void drawStringCentered(String str, FontRenderer fr, float x, float y, boolean shadow, int colour) { - int strLen = fr.getStringWidth(str); - - float x2 = x - strLen / 2f; - float y2 = y - fr.FONT_HEIGHT / 2f; - - GL11.glTranslatef(x2, y2, 0); - fr.drawString(str, 0, 0, colour, shadow); - GL11.glTranslatef(-x2, -y2, 0); - } - - public static void drawStringScaled(String str, FontRenderer fr, float x, float y, boolean shadow, int colour, float factor) { - GlStateManager.scale(factor, factor, 1); - fr.drawString(str, x / factor, y / factor, colour, shadow); - GlStateManager.scale(1 / factor, 1 / factor, 1); - } - - public static void drawStringRightAligned(String str, FontRenderer fr, float x, float y , boolean shadow, int colour, float factor) { - drawStringScaled(str, fr, x - fr.getStringWidth(str) * factor, y, shadow, colour, factor); - } - - public static void drawStringScaledMax(String str, FontRenderer fr, float x, float y, boolean shadow, int colour, float factor, int len) { - int strLen = fr.getStringWidth(str); - float f = len / (float) strLen; - factor = Math.min(factor, f); - - GlStateManager.scale(factor, factor, 1); - fr.drawString(str, x / factor, y / factor, colour, shadow); - GlStateManager.scale(1 / factor, 1 / factor, 1); - } - - public static void drawStringCenteredScaledMaxWidth(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); - int newLen = Math.min(strLen, len); - - float fontHeight = 8 * factor; - - drawStringScaled(str, fr, x - newLen / 2, y - fontHeight / 2, shadow, colour, factor); - } - - public static 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 static void drawStringCenteredScaled(String str, FontRenderer fr, float x, float y, boolean shadow, int len, int colour) { - int strLen = fr.getStringWidth(str); - float factor = len / (float) strLen; - float fontHeight = 8 * factor; - - drawStringScaled(str, fr, x - len / 2, y - fontHeight / 2, shadow, colour, factor); - } - - public static void drawStringCenteredYScaled(String str, FontRenderer fr, float x, float y, boolean shadow, int len, int colour) { - int strLen = fr.getStringWidth(str); - float factor = len / (float) strLen; - float fontHeight = 8 * factor; - - 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); - } - - public static int renderStringTrimWidth(String str, FontRenderer fr, boolean shadow, int x, int y, int len, int colour, int maxLines, float scale) { - len = (int) (len / scale); - - int yOff = 0; - String excess; - String trimmed = trimToWidth(str, len); - - String colourCodes = ""; - Pattern pattern = Pattern.compile("\\u00A7."); - Matcher matcher = pattern.matcher(trimmed); - while (matcher.find()) { - colourCodes += matcher.group(); - } - - boolean firstLine = true; - int trimmedCharacters = trimmed.length(); - int lines = 0; - while ((lines++ < maxLines) || maxLines < 0) { - if (trimmed.length() == str.length()) { - drawStringScaled(trimmed, fr, x, y + yOff, shadow, colour, scale); - //fr.drawString(trimmed, x, y + yOff, colour, shadow); - break; - } else if (trimmed.isEmpty()) { - yOff -= 12 * scale; - break; - } else { - if (firstLine) { - drawStringScaled(trimmed, fr, x, y + yOff, shadow, colour, scale); - firstLine = false; - } else { - if (trimmed.startsWith(" ")) { - trimmed = trimmed.substring(1); - } - drawStringScaled(colourCodes + trimmed, fr, x, y + yOff, shadow, colour, scale); - } - - excess = str.substring(trimmedCharacters); - trimmed = trimToWidth(excess, len); - trimmedCharacters += trimmed.length(); - yOff += 12 * scale; - } - } - return yOff; - } - - public static String trimToWidth(String str, int len) { - FontRenderer fr = Minecraft.getMinecraft().fontRendererObj; - String trim = fr.trimStringToWidth(str, len); - - if (str.length() != trim.length() && !trim.endsWith(" ")) { - char next = str.charAt(trim.length()); - if (next != ' ') { - String[] split = trim.split(" "); |
