Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @SubscribeEvent
- public static void onTextureStitch(final TextureStitchEvent.Pre event)
- {
- final TextureMap map = event.getMap();
- if(map == Minecraft.getMinecraft().getTextureMapBlocks())
- {
- map.setTextureEntry(new AlphaSprite(new ResourceLocation(Reference.MODID, "items/glyphs/glyph_1")));
- }
- }
- static class AlphaSprite extends TextureAtlasSprite
- {
- private AnimationMetadataSection animationMetadata;
- AlphaSprite(final ResourceLocation name)
- {
- super(name.toString());
- }
- @Override
- public void updateAnimation()
- {
- ++this.tickCounter;
- if(this.tickCounter >= this.animationMetadata.getFrameTimeSingle(this.frameCounter))
- {
- int i = this.animationMetadata.getFrameIndex(this.frameCounter);
- int j = this.animationMetadata.getFrameCount() == 0 ? this.framesTextureData.size() : this.animationMetadata.getFrameCount();
- this.frameCounter = (this.frameCounter + 1) % j;
- this.tickCounter = 0;
- int k = this.animationMetadata.getFrameIndex(this.frameCounter);
- if(i != k && k >= 0 && k < this.framesTextureData.size())
- {
- TextureUtil.uploadTextureMipmap(this.framesTextureData.get(k), this.width, this.height, this.originX, this.originY, false, false);
- }
- }
- else if(this.animationMetadata.isInterpolate())
- {
- this.updateAnimationInterpolated();
- }
- }
- private void updateAnimationInterpolated()
- {
- double d0 = 1.0D - (double)this.tickCounter / (double)this.animationMetadata.getFrameTimeSingle(this.frameCounter);
- int i = this.animationMetadata.getFrameIndex(this.frameCounter);
- int j = this.animationMetadata.getFrameCount() == 0 ? this.framesTextureData.size() : this.animationMetadata.getFrameCount();
- int k = this.animationMetadata.getFrameIndex((this.frameCounter + 1) % j);
- if(i != k && k >= 0 && k < this.framesTextureData.size())
- {
- int[][] aint = this.framesTextureData.get(i);
- int[][] aint1 = this.framesTextureData.get(k);
- if(this.interpolatedFrameData == null || this.interpolatedFrameData.length != aint.length)
- {
- this.interpolatedFrameData = new int[aint.length][];
- }
- for(int l = 0; l < aint.length; ++l)
- {
- if(this.interpolatedFrameData[l] == null)
- {
- this.interpolatedFrameData[l] = new int[aint[l].length];
- }
- if(l < aint1.length && aint1[l].length == aint[l].length)
- {
- for(int i1 = 0; i1 < aint[l].length; ++i1)
- {
- int j1 = aint[l][i1];
- int k1 = aint1[l][i1];
- int a = this.interpolateColor(d0, j1 >> 24 & 255, k1 >> 24 & 255);
- int r = this.interpolateColor(d0, j1 >> 16 & 255, k1 >> 16 & 255);
- int g = this.interpolateColor(d0, j1 >> 8 & 255, k1 >> 8 & 255);
- int b = this.interpolateColor(d0, j1 & 255, k1 & 255);
- this.interpolatedFrameData[l][i1] = a << 24 | r << 16 | g << 8 | b;
- }
- }
- }
- TextureUtil.uploadTextureMipmap(this.interpolatedFrameData, this.width, this.height, this.originX, this.originY, false, false);
- }
- }
- private int interpolateColor(double d0, int i1, int i2)
- {
- return (int)(d0 * (double)i1 + (1.0D - d0) * (double)i2);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement