|
4 | 4 | import com.cleanroommc.modularui.network.packets.CloseAllGuiPacket; |
5 | 5 | import com.cleanroommc.modularui.network.packets.CloseGuiPacket; |
6 | 6 | import com.cleanroommc.modularui.network.packets.PacketSyncHandler; |
| 7 | +import com.cleanroommc.modularui.network.packets.ReopenGuiPacket; |
7 | 8 | import com.cleanroommc.modularui.screen.ModularContainer; |
8 | 9 | import com.cleanroommc.modularui.value.sync.ModularSyncManager; |
9 | 10 | import com.cleanroommc.modularui.value.sync.SyncHandler; |
10 | 11 |
|
11 | 12 | import net.minecraft.entity.player.EntityPlayer; |
12 | 13 | import net.minecraft.network.PacketBuffer; |
| 14 | +import net.minecraftforge.common.MinecraftForge; |
| 15 | +import net.minecraftforge.event.entity.player.PlayerContainerEvent; |
13 | 16 |
|
14 | 17 | import it.unimi.dsi.fastutil.ints.Int2ReferenceOpenHashMap; |
15 | 18 | import it.unimi.dsi.fastutil.objects.Reference2IntOpenHashMap; |
@@ -115,4 +118,20 @@ void deactivate(int networkId, boolean dispose) { |
115 | 118 | msm.dispose(); |
116 | 119 | } |
117 | 120 | } |
| 121 | + |
| 122 | + @ApiStatus.Internal |
| 123 | + public void reopen(EntityPlayer player, ModularSyncManager msm, boolean sync) { |
| 124 | + if (player.openContainer != msm.getContainer()) { |
| 125 | + closeContainer(player); |
| 126 | + player.openContainer = msm.getContainer(); |
| 127 | + msm.onOpen(); |
| 128 | + MinecraftForge.EVENT_BUS.post(new PlayerContainerEvent.Open(player, msm.getContainer())); |
| 129 | + } |
| 130 | + if (sync) sendPacket(new ReopenGuiPacket(inverseActiveScreens.getInt(msm)), player); |
| 131 | + } |
| 132 | + |
| 133 | + @ApiStatus.Internal |
| 134 | + public void reopen(EntityPlayer player, int networkId, boolean sync) { |
| 135 | + reopen(player, activeScreens.get(networkId), sync); |
| 136 | + } |
118 | 137 | } |
0 commit comments