Skip to content

Commit c2e7969

Browse files
committed
🐛 Fix potential loop when opening screen
1 parent 20dbbc7 commit c2e7969

File tree

1 file changed

+12
-5
lines changed

1 file changed

+12
-5
lines changed

common/src/main/java/com/mrcrayfish/controllable/client/ControllerEvents.java

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@
2222
*/
2323
public class ControllerEvents
2424
{
25+
private static boolean released = false;
26+
2527
public static void init()
2628
{
2729
FrameworkScreenEvents.INIT.register(ControllerEvents::onModifyScreenWidgets);
@@ -32,15 +34,20 @@ private static void onModifyScreenWidgets(Screen screen, List<AbstractWidget> wi
3234
ButtonBinding.resetButtonStates();
3335

3436
// Fixes an issue where using item is not stopped after opening a screen
35-
Controller controller = Controllable.getController();
36-
if(controller != null && controller.isBeingUsed())
37+
if(!released)
3738
{
38-
Minecraft mc = Minecraft.getInstance();
39-
if(mc.gameMode != null && mc.player != null && mc.player.isUsingItem())
39+
released = true;
40+
Controller controller = Controllable.getController();
41+
if(controller != null && controller.isBeingUsed())
4042
{
41-
mc.gameMode.releaseUsingItem(mc.player);
43+
Minecraft mc = Minecraft.getInstance();
44+
if(mc.gameMode != null && mc.player != null && mc.player.isUsingItem())
45+
{
46+
mc.gameMode.releaseUsingItem(mc.player);
47+
}
4248
}
4349
}
50+
released = false;
4451

4552
if(screen instanceof OptionsScreen)
4653
{

0 commit comments

Comments
 (0)