Fix inventory buttons overlapping in storage overlay (also fixes skyblocker)

This commit is contained in:
Linnea Gräf
2024-07-29 00:23:17 +02:00
parent 60994a0867
commit fcee10e493
4 changed files with 20 additions and 2 deletions

View File

@@ -21,14 +21,25 @@ public interface AccessorHandledScreen {
@Accessor("backgroundWidth")
int getBackgroundWidth_Firmament();
@Accessor("backgroundWidth")
void setBackgroundWidth_Firmament(int newBackgroundWidth);
@Accessor("backgroundHeight")
int getBackgroundHeight_Firmament();
@Accessor("backgroundHeight")
void setBackgroundHeight_Firmament(int newBackgroundHeight);
@Accessor("x")
int getX_Firmament();
@Accessor("x")
void setX_Firmament(int newX);
@Accessor("y")
int getY_Firmament();
@Accessor("y")
void setY_Firmament(int newY);
}

View File

@@ -27,7 +27,6 @@ import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.Unique;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.ModifyVariable;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;

View File

@@ -42,6 +42,12 @@ class StorageOverlayCustom(
override fun onInit() {
overview.init(MinecraftClient.getInstance(), screen.width, screen.height)
overview.init()
screen as AccessorHandledScreen
screen.x_Firmament = overview.measurements.x
screen.y_Firmament = overview.measurements.y
screen.backgroundWidth_Firmament = overview.measurements.totalWidth
screen.backgroundHeight_Firmament = overview.measurements.totalHeight
}
override fun isPointOverSlot(slot: Slot, xOffset: Int, yOffset: Int, pointX: Double, pointY: Double): Boolean {

View File

@@ -48,12 +48,14 @@ class StorageOverlayScreen : Screen(Text.literal("")) {
val y = height / 2 - (overviewHeight + PLAYER_HEIGHT) / 2
val playerX = width / 2 - PLAYER_WIDTH / 2
val playerY = y + overviewHeight - PLAYER_Y_INSET
val totalWidth = overviewWidth
val totalHeight = overviewWidth - PLAYER_Y_INSET + PLAYER_HEIGHT
}
var measurements = Measurements()
var lastRenderedInnerHeight = 0
override fun init() {
public override fun init() {
super.init()
pageWidthCount = StorageOverlay.TConfig.columns
.coerceAtMost((width - PADDING) / (PAGE_WIDTH + PADDING))