Fix command suggestion offset (#1662)
This commit is contained in:
@@ -696,22 +696,34 @@ public class ClientPlaySessionHandler implements MinecraftSessionHandler {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
List<Offer> offers = new ArrayList<>();
|
int startPos = -1;
|
||||||
for (Suggestion suggestion : suggestions.getList()) {
|
for (var suggestion : suggestions.getList()) {
|
||||||
String offer = suggestion.getText();
|
if (startPos == -1 || startPos > suggestion.getRange().getStart()) {
|
||||||
ComponentHolder tooltip = null;
|
startPos = suggestion.getRange().getStart();
|
||||||
if (suggestion.getTooltip() instanceof ComponentLike componentLike) {
|
|
||||||
tooltip = new ComponentHolder(player.getProtocolVersion(), componentLike.asComponent());
|
|
||||||
} else if (suggestion.getTooltip() != null) {
|
|
||||||
tooltip = new ComponentHolder(player.getProtocolVersion(), Component.text(suggestion.getTooltip().getString()));
|
|
||||||
}
|
}
|
||||||
offers.add(new Offer(offer, tooltip));
|
|
||||||
}
|
}
|
||||||
int startPos = packet.getCommand().lastIndexOf(' ') + 1;
|
|
||||||
if (startPos > 0) {
|
if (startPos > 0) {
|
||||||
|
List<Offer> offers = new ArrayList<>();
|
||||||
|
for (Suggestion suggestion : suggestions.getList()) {
|
||||||
|
String offer;
|
||||||
|
if (suggestion.getRange().getStart() == startPos) {
|
||||||
|
offer = suggestion.getText();
|
||||||
|
} else {
|
||||||
|
offer = command.substring(startPos, suggestion.getRange().getStart()) + suggestion.getText();
|
||||||
|
}
|
||||||
|
ComponentHolder tooltip = null;
|
||||||
|
if (suggestion.getTooltip() instanceof ComponentLike componentLike) {
|
||||||
|
tooltip = new ComponentHolder(player.getProtocolVersion(), componentLike.asComponent());
|
||||||
|
} else if (suggestion.getTooltip() != null) {
|
||||||
|
tooltip = new ComponentHolder(player.getProtocolVersion(), Component.text(suggestion.getTooltip().getString()));
|
||||||
|
}
|
||||||
|
offers.add(new Offer(offer, tooltip));
|
||||||
|
}
|
||||||
|
|
||||||
TabCompleteResponsePacket resp = new TabCompleteResponsePacket();
|
TabCompleteResponsePacket resp = new TabCompleteResponsePacket();
|
||||||
resp.setTransactionId(packet.getTransactionId());
|
resp.setTransactionId(packet.getTransactionId());
|
||||||
resp.setStart(startPos);
|
resp.setStart(startPos + 1);
|
||||||
resp.setLength(packet.getCommand().length() - startPos);
|
resp.setLength(packet.getCommand().length() - startPos);
|
||||||
resp.getOffers().addAll(offers);
|
resp.getOffers().addAll(offers);
|
||||||
player.getConnection().write(resp);
|
player.getConnection().write(resp);
|
||||||
|
|||||||
Reference in New Issue
Block a user