Allow dropping items from the creative menu in mobile

Fixes #2626
This commit is contained in:
Camotoy 2021-12-26 12:07:38 -05:00
parent 68c13c08fa
commit b70e2645c8
No known key found for this signature in database
GPG key ID: 7EEFB66FE798081F

View file

@ -401,7 +401,6 @@ public class PlayerInventoryTranslator extends InventoryTranslator {
break; break;
} }
case CRAFT_RESULTS_DEPRECATED: { case CRAFT_RESULTS_DEPRECATED: {
CraftResultsDeprecatedStackRequestActionData deprecatedCraftAction = (CraftResultsDeprecatedStackRequestActionData) action;
if (craftState != CraftState.RECIPE_ID) { if (craftState != CraftState.RECIPE_ID) {
return rejectRequest(request); return rejectRequest(request);
} }
@ -453,6 +452,28 @@ public class PlayerInventoryTranslator extends InventoryTranslator {
} }
break; break;
} }
case DROP: {
// Can be replicated as of 1.18.2 Bedrock on mobile by clicking from the creative menu to outside it
if (craftState != CraftState.DEPRECATED) {
return rejectRequest(request);
}
DropStackRequestActionData dropAction = (DropStackRequestActionData) action;
if (dropAction.getSource().getContainer() != ContainerSlotType.CREATIVE_OUTPUT || dropAction.getSource().getSlot() != 50) {
return rejectRequest(request);
}
ItemStack dropStack;
if (dropAction.getCount() == javaCreativeItem.getAmount()) {
dropStack = javaCreativeItem;
} else {
// Specify custom count
dropStack = new ItemStack(javaCreativeItem.getId(), dropAction.getCount(), javaCreativeItem.getNbt());
}
ServerboundSetCreativeModeSlotPacket creativeDropPacket = new ServerboundSetCreativeModeSlotPacket(-1, dropStack);
session.sendDownstreamPacket(creativeDropPacket);
break;
}
default: default:
return rejectRequest(request); return rejectRequest(request);
} }