Skip to content

Commit

Permalink
Temporary bad fix for command crashing (GeyserMC#4490)
Browse files Browse the repository at this point in the history
Signed-off-by: Joshua Castle <[email protected]>
  • Loading branch information
Kas-tle authored Mar 13, 2024
1 parent 7e4d97f commit a9467cf
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -602,6 +602,13 @@ public class GeyserSession implements GeyserConnection, GeyserCommandSource {
@Setter
private @Nullable ItemData currentBook = null;

/**
* Stores if we've sent AvailibleCommandsPacket to the client due to it crashing if sent twice on 1.20.70/71
* Hopefully bedrock will have a hotfix so we can remove this
*/
@Setter
private boolean sentAvailibleCommands = false;

private final GeyserCameraData cameraData;

private final GeyserEntityData entityData;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@
import org.geysermc.geyser.api.event.java.ServerDefineCommandsEvent;
import org.geysermc.geyser.command.GeyserCommandManager;
import org.geysermc.geyser.inventory.item.Enchantment;
import org.geysermc.geyser.network.GameProtocol;
import org.geysermc.geyser.registry.BlockRegistries;
import org.geysermc.geyser.registry.Registries;
import org.geysermc.geyser.session.GeyserSession;
Expand Down Expand Up @@ -115,6 +116,12 @@ public void translate(GeyserSession session, ClientboundCommandsPacket packet) {
return;
}

// Don't send command suggestions if they are already sent and the client is 1.20.70 or higher due to crash bug
// TODO: Remove this check when the crash bug is fixed
if (session.isSentAvailibleCommands() && !GameProtocol.isPre1_20_70(session)) {
return;
}

GeyserCommandManager manager = session.getGeyser().commandManager();
CommandNode[] nodes = packet.getNodes();
List<CommandData> commandData = new ArrayList<>();
Expand Down Expand Up @@ -191,6 +198,7 @@ public void translate(GeyserSession session, ClientboundCommandsPacket packet) {

// Finally, send the commands to the client
session.sendUpstreamPacket(availableCommandsPacket);
session.setSentAvailibleCommands(true);
}

/**
Expand Down

0 comments on commit a9467cf

Please sign in to comment.