mirror of
https://github.com/GeyserMC/Geyser.git
synced 2024-08-14 23:57:35 +00:00
Add better destroy support
This commit is contained in:
parent
d3cb069594
commit
454fd102d6
1 changed files with 15 additions and 6 deletions
|
@ -465,7 +465,6 @@ public abstract class InventoryTranslator {
|
|||
}
|
||||
case DESTROY: {
|
||||
// Only called when a creative client wants to destroy an item... I think - Camotoy
|
||||
//TODO there is a Count here we don't use
|
||||
DestroyStackRequestActionData destroyAction = (DestroyStackRequestActionData) action;
|
||||
if (!session.getGameMode().equals(GameMode.CREATIVE)) {
|
||||
// If this happens, let's throw an error and figure out why.
|
||||
|
@ -474,13 +473,23 @@ public abstract class InventoryTranslator {
|
|||
if (!isCursor(destroyAction.getSource())) {
|
||||
// Item exists; let's remove it from the inventory
|
||||
int javaSlot = bedrockSlotToJava(destroyAction.getSource());
|
||||
ClientCreativeInventoryActionPacket destroyItemPacket = new ClientCreativeInventoryActionPacket(
|
||||
GeyserItemStack existingItem = inventory.getItem(javaSlot);
|
||||
existingItem.setAmount(existingItem.getAmount() - destroyAction.getCount());
|
||||
ClientCreativeInventoryActionPacket destroyItemPacket;
|
||||
if (existingItem.isEmpty()) {
|
||||
destroyItemPacket = new ClientCreativeInventoryActionPacket(
|
||||
javaSlot,
|
||||
new ItemStack(0)
|
||||
);
|
||||
inventory.setItem(javaSlot, GeyserItemStack.EMPTY, session);
|
||||
} else {
|
||||
destroyItemPacket = new ClientCreativeInventoryActionPacket(
|
||||
javaSlot,
|
||||
existingItem.getItemStack()
|
||||
);
|
||||
}
|
||||
session.sendDownstreamPacket(destroyItemPacket);
|
||||
System.out.println(destroyItemPacket);
|
||||
inventory.setItem(javaSlot, GeyserItemStack.EMPTY, session);
|
||||
affectedSlots.add(javaSlot);
|
||||
} else {
|
||||
// Just sync up the item on our end, since the server doesn't care what's in our cursor
|
||||
|
|
Loading…
Reference in a new issue