diff options
| author | Moulberry <jjenour@student.unimelb.edu.au> | 2022-03-03 11:03:58 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-03-03 11:03:58 +0800 |
| commit | 7c6d37b2eb758a13b342b906f0aef88b940bc52a (patch) | |
| tree | 9602a014425b859e3aba98f31f93d6de04521356 /src/main/java/io/github/moulberry/notenoughupdates/util/Utils.java | |
| parent | b11742988dec635b5c5da7c2363803cbfafb37b1 (diff) | |
| parent | db59eba3fd9121c7c0a88363994876c5b582c08c (diff) | |
| download | notenoughupdates-7c6d37b2eb758a13b342b906f0aef88b940bc52a.tar.gz notenoughupdates-7c6d37b2eb758a13b342b906f0aef88b940bc52a.tar.bz2 notenoughupdates-7c6d37b2eb758a13b342b906f0aef88b940bc52a.zip | |
Merge pull request #248 from NotEnoughUpdates/master
NEU 2.1 🙂
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 | 3051 |
1 files changed, 1720 insertions, 1331 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 7876776b..9b5f62e3 100644 --- a/src/main/java/io/github/moulberry/notenoughupdates/util/Utils.java +++ b/src/main/java/io/github/moulberry/notenoughupdates/util/Utils.java @@ -2,33 +2,24 @@ package io.github.moulberry.notenoughupdates.util; import com.google.common.base.Splitter; import com.google.common.collect.Lists; -import com.google.common.collect.Multimap; import com.google.gson.*; -import com.mojang.authlib.Agent; -import com.mojang.authlib.yggdrasil.YggdrasilAuthenticationService; -import com.mojang.authlib.yggdrasil.YggdrasilUserAuthentication; import io.github.moulberry.notenoughupdates.NotEnoughUpdates; import io.github.moulberry.notenoughupdates.miscfeatures.SlotLocking; -import io.github.moulberry.notenoughupdates.util.TexLoc; -import net.minecraft.block.Block; import net.minecraft.client.Minecraft; import net.minecraft.client.audio.PositionedSoundRecord; -import net.minecraft.client.audio.SoundHandler; +import net.minecraft.client.entity.EntityPlayerSP; import net.minecraft.client.gui.FontRenderer; import net.minecraft.client.gui.ScaledResolution; import net.minecraft.client.gui.inventory.GuiContainer; -import net.minecraft.client.renderer.*; +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.enchantment.Enchantment; -import net.minecraft.enchantment.EnchantmentHelper; -import net.minecraft.entity.EnumCreatureAttribute; -import net.minecraft.entity.ai.attributes.AttributeModifier; -import net.minecraft.entity.player.EntityPlayer; import net.minecraft.event.ClickEvent; import net.minecraft.event.HoverEvent; import net.minecraft.init.Items; @@ -38,1341 +29,1739 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; import net.minecraft.nbt.NBTTagString; -import net.minecraft.potion.Potion; -import net.minecraft.server.MinecraftServer; +import net.minecraft.network.play.client.C0DPacketCloseWindow; import net.minecraft.util.*; import net.minecraftforge.fml.common.Loader; import org.lwjgl.BufferUtils; -import org.lwjgl.input.Keyboard; +import org.lwjgl.input.Mouse; import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL14; -import org.lwjgl.util.glu.Project; -import javax.swing.*; -import java.awt.*; +import java.awt.Color; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.InputStreamReader; import java.lang.reflect.Field; import java.lang.reflect.Method; -import java.lang.reflect.Modifier; -import java.net.Proxy; import java.nio.FloatBuffer; import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.util.*; -import java.util.List; 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 LinkedList<Integer> guiScales = new LinkedList<>(); - private static ScaledResolution lastScale = new ScaledResolution(Minecraft.getMinecraft()); - //Labymod compatibility - private static FloatBuffer projectionMatrixOld = BufferUtils.createFloatBuffer(16); - private static FloatBuffer modelviewMatrixOld = BufferUtils.createFloatBuffer(16); - - public static <T> ArrayList<T> createList(T... values) { - ArrayList<T> list = new ArrayList<>(); - for(T value : values)list.add(value); - 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 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.<String>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 e) {} - } - 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 e) {} - } - if(field != null) { - field.setAccessible(true); - try { - return field.get(o); - } catch(IllegalAccessException e) { - } - } - 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", "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.DARK_RED+EnumChatFormatting.BOLD.toString()+"SUPREME", - EnumChatFormatting.AQUA+EnumChatFormatting.BOLD.toString()+"DIVINE", - - }; - public static final HashMap<String, String> rarityArrMap = new HashMap<>(); - static { - rarityArrMap.put("COMMON", rarityArrC[0]); - rarityArrMap.put("UNCOMMON", rarityArrC[1]); - rarityArrMap.put("RARE", rarityArrC[2]); - rarityArrMap.put("EPIC", rarityArrC[3]); - rarityArrMap.put("LEGENDARY", rarityArrC[4]); - rarityArrMap.put("MYTHIC", rarityArrC[5]); - rarityArrMap.put("SPECIAL", rarityArrC[6]); - rarityArrMap.put("VERY SPECIAL", rarityArrC[7]); - rarityArrMap.put("SUPREME", rarityArrC[8]); - rarityArrMap.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 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 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; |
