From b2669129f28607cf6d4b985f73ae27c0effa849e Mon Sep 17 00:00:00 2001 From: mmxw11 Date: Sun, 24 Sep 2017 22:11:54 +0300 Subject: [PATCH] More work on the inv provider --- .../BukkitInvContainerItemProvider.java | 6 ++++-- .../packets/InventoryPackets.java | 19 ++++++++++++++++++- .../providers/InvContainerItemProvider.java | 2 +- 3 files changed, 23 insertions(+), 4 deletions(-) diff --git a/bukkit/src/main/java/us/myles/ViaVersion/bukkit/providers/BukkitInvContainerItemProvider.java b/bukkit/src/main/java/us/myles/ViaVersion/bukkit/providers/BukkitInvContainerItemProvider.java index 99c8fa8df..3b11a50e5 100644 --- a/bukkit/src/main/java/us/myles/ViaVersion/bukkit/providers/BukkitInvContainerItemProvider.java +++ b/bukkit/src/main/java/us/myles/ViaVersion/bukkit/providers/BukkitInvContainerItemProvider.java @@ -6,8 +6,10 @@ import us.myles.ViaVersion.protocols.protocol1_12to1_11_1.providers.InvContainer public class BukkitInvContainerItemProvider extends InvContainerItemProvider { @Override - public boolean registerInvClickPacket(int windowId, short slotId, byte button, short amumber, int mode, UserConnection uconnection) { + public boolean registerInvClickPacket(short windowId, short slotId, short anumber, UserConnection uconnection) { // TODO: lets add some stuff here :) - return true; + //http://wiki.vg/index.php?title=Protocol&oldid=13223#Click_Window + System.out.println("QUICK ACTION windowId: " + windowId + " slotId: " + slotId + " button: " + 0 + " anumber: " + anumber + " mode: " + 1); + return false; // change to true once supported } } \ No newline at end of file diff --git a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_12to1_11_1/packets/InventoryPackets.java b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_12to1_11_1/packets/InventoryPackets.java index d59b713a2..743d52d0f 100644 --- a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_12to1_11_1/packets/InventoryPackets.java +++ b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_12to1_11_1/packets/InventoryPackets.java @@ -1,6 +1,7 @@ package us.myles.ViaVersion.protocols.protocol1_12to1_11_1.packets; import us.myles.ViaVersion.api.PacketWrapper; +import us.myles.ViaVersion.api.Via; import us.myles.ViaVersion.api.minecraft.item.Item; import us.myles.ViaVersion.api.remapper.PacketHandler; import us.myles.ViaVersion.api.remapper.PacketRemapper; @@ -8,6 +9,7 @@ import us.myles.ViaVersion.api.type.Type; import us.myles.ViaVersion.packets.State; import us.myles.ViaVersion.protocols.protocol1_12to1_11_1.BedRewriter; import us.myles.ViaVersion.protocols.protocol1_12to1_11_1.Protocol1_12To1_11_1; +import us.myles.ViaVersion.protocols.protocol1_12to1_11_1.providers.InvContainerItemProvider; public class InventoryPackets { public static void register(Protocol1_12To1_11_1 protocol) { @@ -118,8 +120,23 @@ public class InventoryPackets { handler(new PacketHandler() { @Override public void handle(PacketWrapper wrapper) throws Exception { + byte button = wrapper.get(Type.BYTE, 0); + int mode = wrapper.get(Type.VAR_INT, 0); Item item = wrapper.get(Type.ITEM, 0); - BedRewriter.toServerItem(item); + // QUICK_MOVE PATCH (Shift + (click/double click)) + if (mode == 1 && button == 0 && item == null) { + short windowId = wrapper.get(Type.UNSIGNED_BYTE, 0); + short slotId = wrapper.get(Type.SHORT, 0); + short anumber = wrapper.get(Type.SHORT, 1); + InvContainerItemProvider provider = Via.getManager().getProviders().get(InvContainerItemProvider.class); + boolean succeed = provider.registerInvClickPacket(windowId, slotId, anumber, wrapper.user()); + if (succeed) { + wrapper.cancel(); + } + // otherwise just pass through so the server sends the PacketPlayOutTransaction packet. + } else { + BedRewriter.toServerItem(item); + } } }); } diff --git a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_12to1_11_1/providers/InvContainerItemProvider.java b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_12to1_11_1/providers/InvContainerItemProvider.java index 5455906cb..e928136ea 100644 --- a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_12to1_11_1/providers/InvContainerItemProvider.java +++ b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_12to1_11_1/providers/InvContainerItemProvider.java @@ -5,7 +5,7 @@ import us.myles.ViaVersion.api.platform.providers.Provider; public class InvContainerItemProvider implements Provider { - public boolean registerInvClickPacket(int windowId, short slotId, byte button, short amumber, int mode, UserConnection uconnection) { + public boolean registerInvClickPacket(short windowId, short slotId, short anumber, UserConnection uconnection) { return false; // not supported :/ plays very sad violin } } \ No newline at end of file