Advertisement
4epB9Ik

Untitled

Nov 13th, 2019
319
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.45 KB | None | 0 0
  1. package net.zabqer.tabbychataddon;
  2.  
  3. import net.minecraft.client.gui.*;
  4. import net.minecraft.util.*;
  5. import javax.imageio.*;
  6. import java.io.*;
  7. import javax.imageio.stream.*;
  8. import java.awt.image.*;
  9. import javax.imageio.metadata.*;
  10. import net.minecraft.client.*;
  11. import net.minecraft.client.renderer.texture.*;
  12. import java.util.*;
  13. import org.lwjgl.opengl.*;
  14.  
  15. public class ImageDrawable extends Gui
  16. {
  17. List<ResourceLocation> frames;
  18. List<Integer> delayes;
  19.  
  20. public ImageDrawable(final ResourceLocation img) {
  21. (this.frames = new LinkedList<ResourceLocation>()).add(img);
  22. }
  23.  
  24. public ImageDrawable(final List<ResourceLocation> frames, final List<Integer> delyes) {
  25. this.frames = frames;
  26. this.delayes = delyes;
  27. }
  28.  
  29. public static ImageDrawable fromBytes(final byte[] data) {
  30. try {
  31. final ImageReader reader = ImageIO.getImageReadersByFormatName("gif").next();
  32. final ImageInputStream stream = ImageIO.createImageInputStream(new ByteArrayInputStream(data));
  33. reader.setInput(stream);
  34. final int count = reader.getNumImages(true);
  35. if (count == 0) {
  36. return new ImageDrawable(toResourceLocation(ImageIO.read(new ByteArrayInputStream(data))));
  37. }
  38. final List<ResourceLocation> frames = new LinkedList<ResourceLocation>();
  39. final List<Integer> delayes = new LinkedList<Integer>();
  40. for (int index = 0; index < count; ++index) {
  41. final BufferedImage bi = reader.read(index);
  42. final IIOMetadata frameMetadata = reader.getImageMetadata(index);
  43. final IIOMetadataNode root = (IIOMetadataNode)frameMetadata.getAsTree(frameMetadata.getNativeMetadataFormatName());
  44. final IIOMetadataNode gce = (IIOMetadataNode)root.getElementsByTagName("GraphicControlExtension").item(0);
  45. frames.add(toResourceLocation(bi));
  46. delayes.add(Integer.valueOf(gce.getAttribute("delayTime")));
  47. }
  48. return new ImageDrawable(frames, delayes);
  49. }
  50. catch (Exception e) {
  51. e.printStackTrace();
  52. return null;
  53. }
  54. }
  55.  
  56. private static ResourceLocation toResourceLocation(final BufferedImage img) {
  57. return Minecraft.func_71410_x().func_110434_K().func_110578_a("stikers", new DynamicTexture(img));
  58. }
  59.  
  60. public Integer getCurrentFrame() {
  61. if (this.delayes == null) {
  62. return 0;
  63. }
  64. int mt = 0;
  65. for (final int i : this.delayes) {
  66. mt += i;
  67. }
  68. final long t = System.currentTimeMillis() / 10L % mt;
  69. int mt2 = 0;
  70. for (int j = 0; j < this.delayes.size(); ++j) {
  71. if (mt2 >= t) {
  72. return j;
  73. }
  74. mt2 += this.delayes.get(j);
  75. }
  76. return 0;
  77. }
  78.  
  79. public void draw(final int x, final int y, final int w, final int h, final int u, final int v, final int o, final int ww, final int hh, final float s) {
  80. GL11.glEnable(3042);
  81. GL11.glColor4f(1.0f, 1.0f, 1.0f, o / 255.0f);
  82. Minecraft.func_71410_x().func_110434_K().func_110577_a((ResourceLocation)this.frames.get(this.getCurrentFrame()));
  83. GL11.glPushMatrix();
  84. GL11.glScalef(s, s, 0.0f);
  85. this.func_73729_b(x * (int)(1.0f / s), y * (int)(1.0f / s), u, v, ww, hh);
  86. GL11.glPopMatrix();
  87. }
  88. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement