diff --git a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/lang/English.kt b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/lang/English.kt index 602955241..6f594b346 100644 --- a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/lang/English.kt +++ b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/lang/English.kt @@ -49,6 +49,7 @@ private fun misc(provider: MatteryLanguageProvider) { gui("recipe.ticks", "%s Ticks") gui("exosuit", "Exosuit Inventory") + gui("exosuit.go_back", "Open vanilla inventory") gui("exosuit.probe1", "This little device feels unnatural to touch, it is almost certainly resilient to any possible attempt to break it open.") gui("exosuit.probe2", "There is fingerprint reader built into one of sides which gently glow when touched.") diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/client/ClientEventHandler.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/client/ClientEventHandler.kt index 5e8b25beb..efc13f91b 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/client/ClientEventHandler.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/client/ClientEventHandler.kt @@ -39,8 +39,10 @@ object ClientEventHandler { } } + var ignoreInventoryOpen = false + fun screenOpen(event: ScreenEvent.Opening) { - if (minecraft.player?.isCreative == true) { + if (ignoreInventoryOpen || minecraft.player?.isCreative == true) { return } diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/client/render/Widgets18.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/client/render/Widgets18.kt index eb8174f86..0a1efde34 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/client/render/Widgets18.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/client/render/Widgets18.kt @@ -17,4 +17,5 @@ object Widgets18 { val PATTERN_SLOT_BACKGROUND = GRID.next() val EQUIPMENT_BATTERY_SLOT_BACKGROUND = GRID.next() val MATTER_CAPACITOR_SLOT_BACKGROUND = GRID.next() + val RETURN_ARROW_LEFT = GRID.next() } diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/ExoSuitInventoryScreen.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/ExoSuitInventoryScreen.kt index f5a7a02d2..5f8483e87 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/ExoSuitInventoryScreen.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/ExoSuitInventoryScreen.kt @@ -1,9 +1,10 @@ package ru.dbotthepony.mc.otm.client.screen +import com.mojang.blaze3d.platform.InputConstants import com.mojang.blaze3d.vertex.PoseStack -import it.unimi.dsi.fastutil.ints.Int2ObjectAVLTreeMap -import it.unimi.dsi.fastutil.ints.Int2ObjectFunction -import net.minecraft.world.inventory.Slot +import net.minecraft.client.gui.screens.inventory.InventoryScreen +import ru.dbotthepony.mc.otm.client.ClientEventHandler +import ru.dbotthepony.mc.otm.client.render.Widgets18 import ru.dbotthepony.mc.otm.core.TranslatableComponent import ru.dbotthepony.mc.otm.client.render.element import ru.dbotthepony.mc.otm.client.screen.panels.* @@ -127,6 +128,23 @@ class ExoSuitInventoryScreen(menu: ExoSuitInventoryMenu) : MatteryScreen SkinElement)? = null, - val lambdaOnPress: ((clickButton: Int) -> Unit)? = null, + val onPress: ((clickButton: Int) -> Unit)? = null, ) : EditablePanel(screen, parent, x, y, width, height) { protected var pressed = false protected open fun click(clickButton: Int) { - lambdaOnPress?.invoke(clickButton) + onPress?.invoke(clickButton) } abstract val PRESSED: SkinElement @@ -154,7 +154,7 @@ abstract class EnumSquareButtonPanel>( val enum: Class, val prop: KMutableProperty0, val defaultValue: T, - val lambdaOnChange: ((newValue: T) -> Unit)? = null, + val onChange: ((newValue: T) -> Unit)? = null, ) : SquareButtonPanel(screen, parent, x, y, width, height, null, null) { private var building = true @@ -256,18 +256,18 @@ abstract class EnumSquareButtonPanel>( when (clickButton) { InputConstants.MOUSE_BUTTON_LEFT -> { prop.set(prop.get().next(enum.enumConstants)) - lambdaOnChange?.invoke(prop.get()) + onChange?.invoke(prop.get()) } InputConstants.MOUSE_BUTTON_RIGHT -> { prop.set(prop.get().prev(enum.enumConstants)) - lambdaOnChange?.invoke(prop.get()) + onChange?.invoke(prop.get()) } InputConstants.MOUSE_BUTTON_MIDDLE -> { if (prop.get() != defaultValue) { prop.set(defaultValue) - lambdaOnChange?.invoke(prop.get()) + onChange?.invoke(prop.get()) } } } @@ -321,8 +321,19 @@ open class LargeSquareButtonPanel( width: Float = SIZE, height: Float = SIZE, skinElement: (() -> SkinElement)? = null, - lambdaOnPress: ((clickButton: Int) -> Unit)? = null, -) : SquareButtonPanel(screen, parent, x, y, width, height, skinElement, lambdaOnPress) { + onPress: ((clickButton: Int) -> Unit)? = null, +) : SquareButtonPanel(screen, parent, x, y, width, height, skinElement, onPress) { + constructor( + screen: MatteryScreen<*>, + parent: EditablePanel?, + x: Float = 0f, + y: Float = 0f, + width: Float = SIZE, + height: Float = SIZE, + skinElement: SkinElement, + onPress: ((clickButton: Int) -> Unit)? = null, + ) : this(screen, parent, x, y, width, height, { skinElement }, onPress) + final override val IDLE = Widgets18.BUTTON_IDLE final override val HOVERED = Widgets18.BUTTON_HOVERED final override val PRESSED = Widgets18.BUTTON_PRESSED @@ -341,8 +352,8 @@ open class LargeEnumSquareButtonPanel>( enum: Class, prop: KMutableProperty0, defaultValue: T, - lambdaOnChange: ((newValue: T) -> Unit)? = null, -) : EnumSquareButtonPanel(screen, parent, x, y, width, height, enum, prop, defaultValue, lambdaOnChange) { + onChange: ((newValue: T) -> Unit)? = null, +) : EnumSquareButtonPanel(screen, parent, x, y, width, height, enum, prop, defaultValue, onChange) { final override val IDLE = Widgets18.BUTTON_IDLE final override val HOVERED = Widgets18.BUTTON_HOVERED final override val PRESSED = Widgets18.BUTTON_PRESSED diff --git a/src/main/resources/assets/overdrive_that_matters/textures/gui/widgets_18.png b/src/main/resources/assets/overdrive_that_matters/textures/gui/widgets_18.png index 169db7bb2..26bc6123b 100644 Binary files a/src/main/resources/assets/overdrive_that_matters/textures/gui/widgets_18.png and b/src/main/resources/assets/overdrive_that_matters/textures/gui/widgets_18.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/gui/widgets_18.xcf b/src/main/resources/assets/overdrive_that_matters/textures/gui/widgets_18.xcf index 323ab9612..c10fe4fb0 100644 --- a/src/main/resources/assets/overdrive_that_matters/textures/gui/widgets_18.xcf +++ b/src/main/resources/assets/overdrive_that_matters/textures/gui/widgets_18.xcf @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:120b9051effae8f87204fc8265cee032d192a26302f679eb71e40412ce7b153e -size 12047 +oid sha256:52df530bc275818f5a9a620a43ead44c2d1ebcf6b3109e7ad1165a64208c42b5 +size 12808