Fix missing wing when using optifine.

Why didn't I think of this earlier?
This commit is contained in:
Matthew Messinger 2016-12-08 04:02:22 -05:00
parent 0cfe8fdee7
commit 33390c66d4

View file

@ -5,11 +5,8 @@ import net.minecraft.client.renderer.IImageBuffer;
import net.minecraft.client.renderer.ImageBufferDownload; import net.minecraft.client.renderer.ImageBufferDownload;
import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.At.Shift;
import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.Surrogate; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import org.spongepowered.asm.mixin.injection.callback.LocalCapture;
import java.awt.Graphics; import java.awt.Graphics;
import java.awt.image.BufferedImage; import java.awt.image.BufferedImage;
@ -19,35 +16,16 @@ public abstract class MixinImageBufferDownload implements IImageBuffer {
@Inject( @Inject(
method = "parseUserSkin(Ljava/awt/image/BufferedImage;)Ljava/awt/image/BufferedImage;", method = "parseUserSkin(Ljava/awt/image/BufferedImage;)Ljava/awt/image/BufferedImage;",
locals = LocalCapture.CAPTURE_FAILEXCEPTION, at = @At("RETURN"),
at = @At( cancellable = true)
value = "INVOKE", private void update(BufferedImage image, CallbackInfoReturnable<BufferedImage> ci) {
shift = Shift.BEFORE,
target = "Ljava/awt/Graphics;dispose()V",
remap = false))
private void update(BufferedImage image, CallbackInfo ci, BufferedImage image2) {
// convert skins from mojang server // convert skins from mojang server
BufferedImage image2 = ci.getReturnValue();
boolean isLegacy = image.getHeight() == 32; boolean isLegacy = image.getHeight() == 32;
Graphics graphics = image2.getGraphics();
if (isLegacy) {
HDSkinManager.INSTANCE.convertSkin(image2, graphics);
}
}
// development
@Surrogate
private void update(BufferedImage image, CallbackInfo ci, BufferedImage image2, Graphics graphics, boolean isLegacy) {
if (isLegacy) {
HDSkinManager.INSTANCE.convertSkin(image2, graphics);
}
}
// for optifine
@Surrogate
private void update(BufferedImage image, CallbackInfo ci, int w, int h, int k, BufferedImage image2, Graphics graphics, boolean isLegacy) {
// convert skins from mojang server
if (isLegacy) { if (isLegacy) {
Graphics graphics = image2.getGraphics();
HDSkinManager.INSTANCE.convertSkin(image2, graphics); HDSkinManager.INSTANCE.convertSkin(image2, graphics);
graphics.dispose();
} }
} }