52 lines
2.2 KiB
Java
52 lines
2.2 KiB
Java
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.TerminalScreen;
|
|
import net.shadowfacts.phycon.block.terminal.TerminalScreenHandler;
|
|
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 TerminalScreen) {
|
|
TerminalScreen self = (TerminalScreen)(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 TerminalScreen) {
|
|
TerminalScreen self = (TerminalScreen)(Object)this;
|
|
TerminalScreenHandler handler = self.getScreenHandler();
|
|
if (slot.id < handler.getNetworkSlotsEnd() && stack.getCount() > 1) {
|
|
self.drawNetworkSlotAmount(stack, x, y, slot, matrixStack);
|
|
return;
|
|
}
|
|
}
|
|
itemRenderer.renderGuiItemOverlay(textRenderer, stack, x, y, countLabel);
|
|
}
|
|
|
|
}
|