Let's cut this down a bit

This commit is contained in:
Sollace 2018-04-29 23:34:05 +02:00
parent 35e9ef750b
commit b69c365a5d

View file

@ -2,42 +2,32 @@ package com.minelittlepony.mixin;
import com.minelittlepony.ducks.IRenderItem; import com.minelittlepony.ducks.IRenderItem;
import net.minecraft.client.renderer.GlStateManager; import net.minecraft.client.renderer.GlStateManager;
import net.minecraft.client.renderer.GlStateManager.DestFactor;
import net.minecraft.client.renderer.GlStateManager.SourceFactor;
import net.minecraft.client.renderer.RenderItem; import net.minecraft.client.renderer.RenderItem;
import net.minecraft.client.renderer.block.model.IBakedModel;
import net.minecraft.client.resources.IResourceManagerReloadListener; import net.minecraft.client.resources.IResourceManagerReloadListener;
import org.spongepowered.asm.mixin.Implements; import net.minecraft.item.ItemStack;
import org.spongepowered.asm.mixin.Interface;
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.Redirect; import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
@Mixin(value = RenderItem.class) @Mixin(RenderItem.class)
@Implements( value = @Interface(iface = IRenderItem.class, prefix = "mlp$") )
public abstract class MixinRenderItem implements IResourceManagerReloadListener, IRenderItem { public abstract class MixinRenderItem implements IResourceManagerReloadListener, IRenderItem {
private static final String ItemStack = "Lnet/minecraft/item/ItemStack;";
private static final String IBakedModel = "Lnet/minecraft/client/renderer/block/model/IBakedModel;";
private static final String ItemCameraTransform$TransformType = "Lnet/minecraft/client/renderer/block/model/ItemCameraTransforms$TransformType;";
private static final String GlStateManager$SourceFactor = "Lnet/minecraft/client/renderer/GlStateManager$SourceFactor;";
private static final String GlStateManager$DestFactor = "Lnet/minecraft/client/renderer/GlStateManager$DestFactor;";
private boolean transparency; private boolean transparency;
public void mlp$useTransparency(boolean transparency) { @Override
public void useTransparency(boolean transparency) {
this.transparency = transparency; this.transparency = transparency;
} }
@Redirect(method = "renderItemModel(" + ItemStack + IBakedModel + ItemCameraTransform$TransformType + "Z)V", @Inject(method = "renderItem(Lnet/minecraft/item/ItemStack;Lnet/minecraft/client/renderer/block/model/IBakedModel;)V", at = @At("HEAD"))
at = @At( private void onRenderItem(ItemStack stack, IBakedModel model, CallbackInfo info) {
value = "INVOKE",
target = "Lnet/minecraft/client/renderer/GlStateManager;tryBlendFuncSeparate("
+ GlStateManager$SourceFactor + GlStateManager$DestFactor
+ GlStateManager$SourceFactor + GlStateManager$DestFactor + ")V"))
private void redirectBlendFunc(GlStateManager.SourceFactor srcFactor, GlStateManager.DestFactor dstFactor,
GlStateManager.SourceFactor srcFactorAlpha, GlStateManager.DestFactor dstFactorAlpha) {
if (transparency) { if (transparency) {
GlStateManager.tryBlendFuncSeparate(GlStateManager.SourceFactor.CONSTANT_COLOR, GlStateManager.DestFactor.ONE, GlStateManager.SourceFactor.ONE, GlStateManager.DestFactor.ZERO); GlStateManager.tryBlendFuncSeparate(SourceFactor.CONSTANT_COLOR, DestFactor.ONE, SourceFactor.ONE, DestFactor.ZERO);
} else {
GlStateManager.tryBlendFuncSeparate(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA, GlStateManager.SourceFactor.ONE, GlStateManager.DestFactor.ZERO);
} }
} }
} }