diff options
author | LifeIsAParadox <LifeIsAParadox@users.noreply.github.com> | 2021-10-10 22:50:24 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-10-10 22:50:24 +0200 |
commit | 37d1379d65821e632e5e3e2bef4e3946adf4c5df (patch) | |
tree | 32aaa7eea851c94771c01ecc0ec5a456228680b3 /src/main/java/me/xmrvizzy/skyblocker/mixin | |
parent | 5fb19e61283bc5a471ab31e96acdd0e5f1b39d1c (diff) | |
parent | d262e35832bec5ae33c19240204dd8490e4eef1e (diff) | |
download | Skyblocker-37d1379d65821e632e5e3e2bef4e3946adf4c5df.tar.gz Skyblocker-37d1379d65821e632e5e3e2bef4e3946adf4c5df.tar.bz2 Skyblocker-37d1379d65821e632e5e3e2bef4e3946adf4c5df.zip |
Merge pull request #19 from ExternalTime/terminal-solvers
Added terminal solvers
Diffstat (limited to 'src/main/java/me/xmrvizzy/skyblocker/mixin')
3 files changed, 74 insertions, 1 deletions
diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/GenericContainerScreenHandlerMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/GenericContainerScreenHandlerMixin.java new file mode 100644 index 00000000..be8d454d --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/GenericContainerScreenHandlerMixin.java @@ -0,0 +1,30 @@ +package me.xmrvizzy.skyblocker.mixin; + +import me.xmrvizzy.skyblocker.SkyblockerMod; +import net.minecraft.item.ItemStack; +import net.minecraft.screen.GenericContainerScreenHandler; +import net.minecraft.screen.ScreenHandler; +import net.minecraft.screen.ScreenHandlerType; +import org.jetbrains.annotations.Nullable; +import org.spongepowered.asm.mixin.Mixin; + +import java.util.List; + +@Mixin(GenericContainerScreenHandler.class) +public abstract class GenericContainerScreenHandlerMixin extends ScreenHandler { + protected GenericContainerScreenHandlerMixin(@Nullable ScreenHandlerType<?> type, int syncId) { + super(type, syncId); + } + + @Override + public void setStackInSlot(int slot, int revision, ItemStack stack) { + SkyblockerMod.getInstance().containerSolverManager.markDirty(); + super.setStackInSlot(slot, revision, stack); + } + + @Override + public void updateSlotStacks(int revision, List<ItemStack> stacks, ItemStack cursorStack) { + SkyblockerMod.getInstance().containerSolverManager.markDirty(); + super.updateSlotStacks(revision, stacks, cursorStack); + } +} diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/GenericContainerScreenMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/GenericContainerScreenMixin.java new file mode 100644 index 00000000..3e6bf16a --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/GenericContainerScreenMixin.java @@ -0,0 +1,31 @@ +package me.xmrvizzy.skyblocker.mixin; + +import me.xmrvizzy.skyblocker.SkyblockerMod; +import me.xmrvizzy.skyblocker.utils.Utils; +import net.minecraft.client.gui.screen.ingame.GenericContainerScreen; +import net.minecraft.client.gui.screen.ingame.HandledScreen; +import net.minecraft.client.util.math.MatrixStack; +import net.minecraft.entity.player.PlayerInventory; +import net.minecraft.screen.GenericContainerScreenHandler; +import net.minecraft.text.Text; +import org.spongepowered.asm.mixin.Final; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; + +@Mixin(GenericContainerScreen.class) +public abstract class GenericContainerScreenMixin extends HandledScreen<GenericContainerScreenHandler> { + @Shadow + @Final + private int rows; + + public GenericContainerScreenMixin(GenericContainerScreenHandler handler, PlayerInventory inventory, Text title) { + super(handler, inventory, title); + } + + @Override + protected void drawForeground(MatrixStack matrices, int mouseX, int mouseY) { + super.drawForeground(matrices, mouseX, mouseY); + if (Utils.isSkyblock) + SkyblockerMod.getInstance().containerSolverManager.onDraw(matrices, this.handler.slots.subList(0, rows * 9)); + } +} diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/MinecraftClientMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/MinecraftClientMixin.java index 5ef5b0b4..21730e69 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/mixin/MinecraftClientMixin.java +++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/MinecraftClientMixin.java @@ -1,9 +1,12 @@ package me.xmrvizzy.skyblocker.mixin; import me.xmrvizzy.skyblocker.SkyblockerMod; +import me.xmrvizzy.skyblocker.container.ContainerSolverManager; import me.xmrvizzy.skyblocker.skyblock.HotbarSlotLock; import me.xmrvizzy.skyblocker.utils.Utils; import net.minecraft.client.MinecraftClient; +import net.minecraft.client.gui.screen.Screen; +import net.minecraft.client.gui.screen.ingame.GenericContainerScreen; import net.minecraft.client.network.ClientPlayerEntity; import org.jetbrains.annotations.Nullable; import org.spongepowered.asm.mixin.Mixin; @@ -19,11 +22,20 @@ public class MinecraftClientMixin { @Inject(method = "tick", at = @At("HEAD")) public void tick(CallbackInfo ci) { - SkyblockerMod.onTick(); + SkyblockerMod.getInstance().onTick(); } @Inject(method = "handleInputEvents", at = @At("HEAD")) public void handleInputEvents(CallbackInfo ci) { if (Utils.isSkyblock) HotbarSlotLock.handleInputEvents(player); } + + @Inject(method = "setScreen", at = @At("HEAD")) + public void onSetScreen(Screen screen, CallbackInfo ci) { + ContainerSolverManager manager = SkyblockerMod.getInstance().containerSolverManager; + if(Utils.isSkyblock && screen instanceof GenericContainerScreen) + manager.onSetScreen((GenericContainerScreen) screen); + else + manager.clearScreen(); + } }
\ No newline at end of file |