From fcbe68297c31e63987982139478d03996627cedb Mon Sep 17 00:00:00 2001 From: DBotThePony Date: Wed, 7 Sep 2022 14:22:14 +0700 Subject: [PATCH] Button to go back to vanilla inventory screen --- .../mc/otm/datagen/lang/English.kt | 1 + .../mc/otm/client/ClientEventHandler.kt | 4 ++- .../mc/otm/client/render/Widgets18.kt | 1 + .../client/screen/ExoSuitInventoryScreen.kt | 24 ++++++++++++-- .../otm/client/screen/panels/ButtonPanel.kt | 31 ++++++++++++------ .../textures/gui/widgets_18.png | Bin 1652 -> 1702 bytes .../textures/gui/widgets_18.xcf | 4 +-- 7 files changed, 49 insertions(+), 16 deletions(-) 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 169db7bb2a58bc99e6109db04d935edbb6b7cd2c..26bc6123b9957cd2f885d21eaa62d6409da30e38 100644 GIT binary patch delta 1255 zcmV=*}B%`#H) zn3&D2h=Eu1Ab>86AtEtTPox(z@El+F@bUF7%Co%B{W9%C|}6B ztZ?4qtd^^+c~AbrU|w5JbDice;#foiNr;e9#Rkf-5T#Wk#YBqsV;=q?$DbsZOs)+u za?GOw6_Voz|9^wu-I|5T2{$Pi13F)9`(p$M>;jFNZGRuzcH;!_KLb}<%U`JjGoPf_ zT3YxB=-&n|u3MVC2VCv|gHO6-NRH&EDHIC8`x$*x4j8xvdRN`vn)^6?05a6o(hYEM z2#gjfd(GqB-R-^od#2gn50~0KySq{CJU%|g@c2?;_|?__zTrbdKlkURYUj{at5v;Tud8_9eEwttD1;Es&(E_O zcz=K2dVGI>pViL8!^76&o12@gcAlS~CBh65gQ#x^)P;@`^~6V$sRAN@($E-Fwd`u= z?BX&nINn~Xv0>5{T5bJ#`T0AXU0l}jzWIDxe@bqb0AkkR9Q6t5z9Dpo@JTJMuX?rj z^7D6*N~kTYR;yJV+b_|dp<&V|w1!l#0%(TSQ*);sQeAB}n>xNW{rVV{UEA;P+oydY zbm;K;czdlr-d>CCsEhA^-~JDXAHTL9$LHFt*X!!+;R90uLI{6| zle`^txm;Fh=)~vZ?UaXOZ9#G9@M%^cIp1roOp=g!`SEM(*7tV|>Ce=Y(dhxBiwbCF z;gg2Wn2I3{u(q#rf^3TL8`@^G66y-5Lxj)1;mp3F*RCpP@%`I>RwcBr0-B;fB@P(- zDxfJVBmp#Xex%P3X5WroatJo3N@xz@Q&KZv;^SS_&u99qy5845Atit^<~DL((^l=| zgb$x9e9~&CZT{!82hp+K*ORJ%b_K+~%BDoX9byPJ$Iuv4%8v=3bUtNqebxE-#_#PM z8g*1ZQ}?HB5_;c%yj8j#=^3~=I+*~9^EF*_HYIlWp{K8>7=ld^UPJrT78*m=3C*eU zX;wf@Q!hCD>MNp8ssc(wC})Rldrf@K&}(;S9AmNKt|Ncn^*C)6Pjk{aT_dzBkaGId zRsogVuD+k?R0n{QI}N`pMCQ<^v3(i43?L2Zu8J`?G`dcI(N7URas5l&A)EKPx=y>d z%?Xw0PcwY_w6nOr`tOz-IH@VC&yze0magGZx%3O^Qp2S~Emn*>Yh3u3-p9)y2DMdS zsI|Dh3hBkC@qTE3N^V!zXJiOA!<~#W6-!qL9cs>J@TCkrF2iUWjx~o;rTQ~GHQ-n|j|Bwu`F$F9E82|t}`~%L7E2`BX R{U!ha002ovPDHLkV1hvOaTfpp delta 1202 zcmV;j1Wo&<4fG69}q_;Cq)-2@xG+cBE}1k_i^4mhxhISghqv_W?%wPHOolF zV`4V9Dt5o32R;N5z?j5LJ&|6_z_Y&Ysh8?5%Co%t{;WPFZ+|ktClb#w-LQx^h-Wq} zo%23%n3W`j_?&p$pbHW|a$R=$jdRgqfoFz|OlqDuOe_{VSngm}GF0Me;)tSZlrLmm zRyc2QRx35ux+i~OD6g%gxlU^saV#N$Bt*!lp^OSFL}}MZF_EJ4n1_GJ@h8b8ldB9y zjs;YqLUR1ze}C|Mwq{{!(oG7*fUXzY{ulwecY$Wzw!e>UyLkfmpMfi_?XNa~*-z5z zZ7p&H^lt+f*KJMS11@)f!6#iZBuDbo5()+2{fxdT2MpW-y=(5=TIV=@05UYIn@yLm-$c`b;Gm|kfLCApLe3E6V5JDXasOuul6jN1I6@Xd$GlURsZ*LE32r-Q7X$JU%|g@c2?;_|?__{=kQZe(u+e)y~vbt5v;TudBFi??0IU3L%8^^Yg3* z-rwK1p5Nc!XSMV2@UZp#=H@1=o#*FgiEs?WAnF?eb)k2OdgOPLsRAN@nxSz>)v~Ld zvy02T;COqj4h@r3Xr=n|^7D5%ySS|5w!J^qpOVKVfS7eSM}0!NZwO5hK23}3t6uHB z{QO;{5=w>DYPG6k`z87_G)!_sO8|YM>ZyIw4ymp-n@t^G+x++#m0jxl_wCcZ5SluC zKHgrdkGI!iC+gz+xBmlw;>WM8=W$=kdcCgBE-vew{^ZODHIHMil~44CILSLfm&;|< z44t?yK2CW!mI{ig!>3(=CCm=7vVsCHgVKC$4{q zCuDn@tLw6RYEGy`f7;>Gr=7+1)qf8a(2Oe~l}rDSE;U?enrg9PJXzzyzvedH{xGPm z0z<9E^;Kxzd>Xey`&06`1kfis$tY8?bcN7Vb3TJ_W$1AmMrt_L9!iz!&)Dr8C4ky@ zwdZQz)t<{;?Vrz(&`7Nlnj(A#pVS2>nNQ_kYz+FF3H~7&vtb1;0T*=m2i5D}vvcUx Qc>n+a07*qoM6N<$f;PxnZ~y=R 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