4242import com .cleanroommc .modularui .factory .SidedPosGuiData ;
4343import com .cleanroommc .modularui .screen .ModularPanel ;
4444import com .cleanroommc .modularui .utils .Alignment ;
45+ import com .cleanroommc .modularui .value .sync .PanelSyncHandler ;
4546import com .cleanroommc .modularui .value .sync .PanelSyncManager ;
4647import com .cleanroommc .modularui .value .sync .SyncHandlers ;
4748import com .cleanroommc .modularui .widgets .ButtonWidget ;
@@ -194,6 +195,7 @@ private Row createCoverWidgets(PosGuiData data, PanelSyncManager manager, Modula
194195 .height (24 * 3 );
195196
196197 int numCovers = 0 ;
198+ List <PanelSyncHandler > coverPanels = new ArrayList <>();
197199 for (EnumFacing side : EnumFacing .VALUES ) {
198200 if (getCoverAtSide (side ) instanceof CoverWithUI cover ) {
199201 if (!cover .shouldShowSmallUI ()) continue ;
@@ -204,9 +206,13 @@ private Row createCoverWidgets(PosGuiData data, PanelSyncManager manager, Modula
204206 // todo better key for this?
205207 var panel = manager .panel ("cover at side: " + side .getName (), mainPanel ,
206208 (syncManager , syncHandler ) -> cover .getSmallGUI (sideData , syncManager ));
209+ coverPanels .add (panel );
207210
208211 IGuiAction .MousePressed handlePanel = i -> {
209212 if (!panel .isPanelOpen ()) {
213+ coverPanels .forEach (h -> {
214+ if (h .isPanelOpen ()) h .closePanel ();
215+ });
210216 panel .openPanel ();
211217 } else {
212218 panel .closePanel ();
0 commit comments