Fix sending empty inventories on logout for versions above 1.11

(Fixes #1039)
This commit is contained in:
games647 2016-12-26 10:44:09 +01:00
parent f19837bea4
commit f4b999217c
No known key found for this signature in database
GPG Key ID: E9E962F08F621538
2 changed files with 20 additions and 6 deletions

10
pom.xml
View File

@ -563,7 +563,7 @@
<dependency>
<groupId>com.comphenix.protocol</groupId>
<artifactId>ProtocolLib-API</artifactId>
<version>4.1.0-SNAPSHOT</version>
<version>4.2.0</version>
<scope>provided</scope>
<exclusions>
<exclusion>
@ -906,10 +906,10 @@
<scope>compile</scope>
<optional>true</optional>
<exclusions>
<exclusion>
<groupId>org.yaml</groupId>
<artifactId>snakeyaml</artifactId>
</exclusion>
<exclusion>
<groupId>org.yaml</groupId>
<artifactId>snakeyaml</artifactId>
</exclusion>
</exclusions>
</dependency>

View File

@ -22,13 +22,18 @@ import com.comphenix.protocol.ProtocolManager;
import com.comphenix.protocol.events.PacketAdapter;
import com.comphenix.protocol.events.PacketContainer;
import com.comphenix.protocol.events.PacketEvent;
import com.comphenix.protocol.reflect.StructureModifier;
import fr.xephi.authme.AuthMe;
import fr.xephi.authme.data.auth.PlayerCache;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import java.lang.reflect.InvocationTargetException;
import java.util.Arrays;
import java.util.List;
import java.util.logging.Level;
class InventoryPacketAdapter extends PacketAdapter {
@ -72,7 +77,16 @@ class InventoryPacketAdapter extends PacketAdapter {
ItemStack[] blankInventory = new ItemStack[inventorySize];
Arrays.fill(blankInventory, new ItemStack(Material.AIR));
inventoryPacket.getItemArrayModifier().write(0, blankInventory);
//old minecraft versions
StructureModifier<ItemStack[]> itemArrayModifier = inventoryPacket.getItemArrayModifier();
if (itemArrayModifier.size() > 0) {
itemArrayModifier.write(0, blankInventory);
} else {
//minecraft versions above 1.11
StructureModifier<List<ItemStack>> itemListModifier = inventoryPacket.getItemListModifier();
itemListModifier.write(0, Arrays.asList(blankInventory));
}
try {
protocolManager.sendServerPacket(player, inventoryPacket, false);