Replacing old inventory protecting with safe packet modifications using ProtocolLib.
Instead of clearing the inventory of players and storing it's contents in a file, we now prevent the server from sending the inventory packet if the player is not logged in. The player will see a empty inventory, but has still his items stored on the server. Therefore we don't need to modify the player's inventory and we won't make any inventory corrupted. Fixes Xephi/AuthMeReloaded#203, Fixes Xephi/AuthMeReloaded#193, Fixes Xephi/AuthMeReloaded#191, Fixes Xephi/AuthMeReloaded#148 Remove dead code + Fix empty inventory on the unregister command Fix NPE if ProtocolLib isn't enabled or installed
This commit is contained in:
@@ -4,7 +4,7 @@ import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
* This event is call just after store inventory into cache and will empty the
|
||||
* player inventory.
|
||||
*
|
||||
@@ -18,12 +18,11 @@ public class ProtectInventoryEvent extends CustomEvent {
|
||||
private ItemStack[] emptyArmor = null;
|
||||
private Player player;
|
||||
|
||||
public ProtectInventoryEvent(Player player, ItemStack[] storedinventory,
|
||||
ItemStack[] storedarmor) {
|
||||
public ProtectInventoryEvent(Player player) {
|
||||
super(true);
|
||||
this.player = player;
|
||||
this.storedinventory = storedinventory;
|
||||
this.storedarmor = storedarmor;
|
||||
this.storedinventory = player.getInventory().getContents();
|
||||
this.storedarmor = player.getInventory().getArmorContents();
|
||||
this.emptyInventory = new ItemStack[36];
|
||||
this.emptyArmor = new ItemStack[4];
|
||||
}
|
||||
|
||||
@@ -4,8 +4,7 @@ import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
/**
|
||||
*
|
||||
* This event restore the inventory from cache
|
||||
* This event restore the inventory.
|
||||
*
|
||||
* @author Xephi59
|
||||
*/
|
||||
@@ -15,16 +14,14 @@ public class RestoreInventoryEvent extends CustomEvent {
|
||||
private ItemStack[] armor;
|
||||
private Player player;
|
||||
|
||||
public RestoreInventoryEvent(Player player, ItemStack[] inventory,
|
||||
ItemStack[] armor) {
|
||||
public RestoreInventoryEvent(Player player) {
|
||||
this.player = player;
|
||||
this.inventory = inventory;
|
||||
this.armor = armor;
|
||||
this.inventory = player.getInventory().getContents();
|
||||
this.armor = player.getInventory().getArmorContents();
|
||||
}
|
||||
|
||||
public RestoreInventoryEvent(Player player, ItemStack[] inventory,
|
||||
ItemStack[] armor, boolean b) {
|
||||
super(b);
|
||||
public RestoreInventoryEvent(Player player, boolean async) {
|
||||
super(async);
|
||||
this.player = player;
|
||||
this.inventory = inventory;
|
||||
this.armor = armor;
|
||||
@@ -53,5 +50,4 @@ public class RestoreInventoryEvent extends CustomEvent {
|
||||
public void setPlayer(Player player) {
|
||||
this.player = player;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
package fr.xephi.authme.events;
|
||||
|
||||
import fr.xephi.authme.cache.backup.DataFileCache;
|
||||
import fr.xephi.authme.cache.backup.JsonCache;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
@@ -24,14 +23,8 @@ public class StoreInventoryEvent extends CustomEvent {
|
||||
|
||||
public StoreInventoryEvent(Player player, JsonCache jsonCache) {
|
||||
this.player = player;
|
||||
DataFileCache cache = jsonCache.readCache(player);
|
||||
if (cache != null) {
|
||||
this.inventory = cache.getInventory();
|
||||
this.armor = cache.getArmour();
|
||||
} else {
|
||||
this.inventory = player.getInventory().getContents();
|
||||
this.armor = player.getInventory().getArmorContents();
|
||||
}
|
||||
this.inventory = player.getInventory().getContents();
|
||||
this.armor = player.getInventory().getArmorContents();
|
||||
}
|
||||
|
||||
public ItemStack[] getInventory() {
|
||||
@@ -57,5 +50,4 @@ public class StoreInventoryEvent extends CustomEvent {
|
||||
public void setPlayer(Player player) {
|
||||
this.player = player;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user