package net.shadowfacts.phycon.mixin.client; import net.minecraft.client.font.TextRenderer; import net.minecraft.client.gui.screen.ingame.HandledScreen; import net.minecraft.client.render.item.ItemRenderer; import net.minecraft.client.util.math.MatrixStack; import net.minecraft.item.ItemStack; import net.minecraft.screen.slot.Slot; import net.shadowfacts.phycon.block.terminal.AbstractTerminalScreen; import net.shadowfacts.phycon.block.terminal.AbstractTerminalScreenHandler; import org.jetbrains.annotations.Nullable; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.Redirect; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; /** * @author shadowfacts */ @Mixin(HandledScreen.class) public class MixinHandledScreen { @Inject( method = "drawSlot(Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/screen/slot/Slot;)V", at = @At(value = "INVOKE", target = "Lcom/mojang/blaze3d/systems/RenderSystem;enableDepthTest()V") ) private void drawSlotUnderlay(MatrixStack matrixStack, Slot slot, CallbackInfo ci) { if ((Object)this instanceof AbstractTerminalScreen) { AbstractTerminalScreen self = (AbstractTerminalScreen)(Object)this; self.drawSlotUnderlay(matrixStack, slot); } } @Redirect( method = "drawSlot(Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/screen/slot/Slot;)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/item/ItemRenderer;renderGuiItemOverlay(Lnet/minecraft/client/font/TextRenderer;Lnet/minecraft/item/ItemStack;IILjava/lang/String;)V") ) private void drawSlotAmount(ItemRenderer itemRenderer, TextRenderer textRenderer, ItemStack stack, int x, int y, @Nullable String countLabel, MatrixStack matrixStack, Slot slot) { if ((Object)this instanceof AbstractTerminalScreen) { AbstractTerminalScreen self = (AbstractTerminalScreen)(Object)this; AbstractTerminalScreenHandler handler = self.getScreenHandler(); if (slot.id < handler.getNetworkSlotsEnd() && stack.getCount() > 1) { self.drawNetworkSlotAmount(stack, x, y); return; } } itemRenderer.renderGuiItemOverlay(textRenderer, stack, x, y, countLabel); } }