Fixed Offline Players Not Opening Chests

Fixed bug where it wasn't possible to open offline players chests!
This commit is contained in:
jameslfc19 2020-04-18 15:44:40 +01:00
parent 4a33fae7b5
commit 265a84c6a3
5 changed files with 21 additions and 27 deletions

View File

@ -1,7 +1,10 @@
package com.jamesdpeters.minecraft.chests.commands; package com.jamesdpeters.minecraft.chests.commands;
import com.jamesdpeters.minecraft.chests.*;
import com.jamesdpeters.minecraft.chests.inventories.ChestLinkMenu; import com.jamesdpeters.minecraft.chests.inventories.ChestLinkMenu;
import com.jamesdpeters.minecraft.chests.misc.Config;
import com.jamesdpeters.minecraft.chests.misc.Messages;
import com.jamesdpeters.minecraft.chests.misc.Permissions;
import com.jamesdpeters.minecraft.chests.misc.Utils;
import com.jamesdpeters.minecraft.chests.serialize.InventoryStorage; import com.jamesdpeters.minecraft.chests.serialize.InventoryStorage;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
@ -77,7 +80,7 @@ public class RemoteChestCommand extends ServerCommand {
case OPEN: case OPEN:
if(args.length > 1){ if(args.length > 1){
if(sender.hasPermission(Permissions.OPEN)) { if(sender.hasPermission(Permissions.OPEN)) {
InventoryStorage invs = Config.getInventoryStorage(player, args[1]); InventoryStorage invs = Config.getInventoryStorage(player.getUniqueId(), args[1]);
Utils.openInventory(player, invs.getInventory()); Utils.openInventory(player, invs.getInventory());
return true; return true;
} else { } else {
@ -115,7 +118,7 @@ public class RemoteChestCommand extends ServerCommand {
if(args.length > 2){ if(args.length > 2){
if(sender.hasPermission(Permissions.MEMBER)){ if(sender.hasPermission(Permissions.MEMBER)){
Player toAdd = Bukkit.getPlayer(args[2]); Player toAdd = Bukkit.getPlayer(args[2]);
InventoryStorage storage = Config.getInventoryStorage(player,args[1]); InventoryStorage storage = Config.getInventoryStorage(player.getUniqueId(),args[1]);
if(storage != null && storage.addMember(toAdd)) Messages.ADDED_MEMBER(player,storage,args[2]); if(storage != null && storage.addMember(toAdd)) Messages.ADDED_MEMBER(player,storage,args[2]);
else Messages.UNABLE_TO_ADD_MEMBER(player,args[2]); else Messages.UNABLE_TO_ADD_MEMBER(player,args[2]);
} }
@ -129,7 +132,7 @@ public class RemoteChestCommand extends ServerCommand {
if(args.length > 2){ if(args.length > 2){
if(sender.hasPermission(Permissions.MEMBER)){ if(sender.hasPermission(Permissions.MEMBER)){
Player toAdd = Bukkit.getPlayer(args[2]); Player toAdd = Bukkit.getPlayer(args[2]);
InventoryStorage storage = Config.getInventoryStorage(player,args[1]); InventoryStorage storage = Config.getInventoryStorage(player.getUniqueId(),args[1]);
if(storage != null && storage.removeMember(toAdd)) Messages.REMOVE_MEMBER(player,storage,args[2]); if(storage != null && storage.removeMember(toAdd)) Messages.REMOVE_MEMBER(player,storage,args[2]);
else Messages.UNABLE_TO_REMOVE_MEMBER(player,args[2]); else Messages.UNABLE_TO_REMOVE_MEMBER(player,args[2]);
} }
@ -163,7 +166,7 @@ public class RemoteChestCommand extends ServerCommand {
case REMOVE: case REMOVE:
case ADDMEMBER: case ADDMEMBER:
case REMOVEMEMBER: case REMOVEMEMBER:
return new ArrayList<>(Config.getPlayer(player).keySet()); return new ArrayList<>(Config.getPlayer(player.getUniqueId()).keySet());
} }
} catch (IllegalArgumentException ignored) { } } catch (IllegalArgumentException ignored) { }
} }
@ -173,7 +176,7 @@ public class RemoteChestCommand extends ServerCommand {
case ADDMEMBER: case ADDMEMBER:
return Utils.getOnlinePlayers(); return Utils.getOnlinePlayers();
case REMOVEMEMBER: case REMOVEMEMBER:
return Utils.getPlayersAsNameList(Config.getInventoryStorage(player,args[1]).getMembers()); return Utils.getPlayersAsNameList(Config.getInventoryStorage(player.getUniqueId(),args[1]).getMembers());
} }
} catch (IllegalArgumentException ignored) { } } catch (IllegalArgumentException ignored) { }
} }

View File

@ -1,6 +1,6 @@
package com.jamesdpeters.minecraft.chests.containers; package com.jamesdpeters.minecraft.chests.containers;
import com.jamesdpeters.minecraft.chests.Config; import com.jamesdpeters.minecraft.chests.misc.Config;
import com.jamesdpeters.minecraft.chests.serialize.InventoryStorage; import com.jamesdpeters.minecraft.chests.serialize.InventoryStorage;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
@ -15,14 +15,14 @@ public class ChestLinkInfo {
private InventoryStorage storage; private InventoryStorage storage;
public ChestLinkInfo(String playerUUID, String group){ public ChestLinkInfo(String playerUUID, String group){
this(Bukkit.getOfflinePlayer(UUID.fromString(playerUUID)).getPlayer(),group); this(UUID.fromString(playerUUID),group);
} }
public ChestLinkInfo(Player player, String group){ public ChestLinkInfo(UUID playerUUID, String group){
this.group = group; this.group = group;
this.storage = Config.getInventoryStorage(player,group); this.storage = Config.getInventoryStorage(playerUUID,group);
this.player = player; this.player = Bukkit.getOfflinePlayer(playerUUID).getPlayer();
this.playerUUID = player.getUniqueId(); this.playerUUID = playerUUID;
} }
public String getGroup() { public String getGroup() {

View File

@ -1,7 +1,7 @@
package com.jamesdpeters.minecraft.chests.inventories; package com.jamesdpeters.minecraft.chests.inventories;
import com.jamesdpeters.minecraft.chests.ChestsPlusPlus; import com.jamesdpeters.minecraft.chests.ChestsPlusPlus;
import com.jamesdpeters.minecraft.chests.Utils; import com.jamesdpeters.minecraft.chests.misc.Utils;
import com.jamesdpeters.minecraft.chests.serialize.InventoryStorage; import com.jamesdpeters.minecraft.chests.serialize.InventoryStorage;
import fr.minuskube.inv.ClickableItem; import fr.minuskube.inv.ClickableItem;
import fr.minuskube.inv.SmartInventory; import fr.minuskube.inv.SmartInventory;

View File

@ -1,17 +1,14 @@
package com.jamesdpeters.minecraft.chests.inventories; package com.jamesdpeters.minecraft.chests.inventories;
import com.jamesdpeters.minecraft.chests.ChestsPlusPlus; import com.jamesdpeters.minecraft.chests.ChestsPlusPlus;
import com.jamesdpeters.minecraft.chests.Config; import com.jamesdpeters.minecraft.chests.misc.Config;
import com.jamesdpeters.minecraft.chests.Utils; import com.jamesdpeters.minecraft.chests.misc.Utils;
import com.jamesdpeters.minecraft.chests.serialize.InventoryStorage; import com.jamesdpeters.minecraft.chests.serialize.InventoryStorage;
import fr.minuskube.inv.ClickableItem; import fr.minuskube.inv.ClickableItem;
import fr.minuskube.inv.SmartInventory; import fr.minuskube.inv.SmartInventory;
import fr.minuskube.inv.content.InventoryContents; import fr.minuskube.inv.content.InventoryContents;
import fr.minuskube.inv.content.InventoryProvider; import fr.minuskube.inv.content.InventoryProvider;
import fr.minuskube.inv.content.Pagination; import fr.minuskube.inv.content.Pagination;
import fr.minuskube.inv.content.SlotIterator;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
@ -29,7 +26,7 @@ public class ChestLinkMenu implements InventoryProvider {
private SmartInventory menu; private SmartInventory menu;
private ChestLinkMenu(Player player){ private ChestLinkMenu(Player player){
this.storages = Config.getPlayer(player).values(); this.storages = Config.getPlayer(player.getUniqueId()).values();
menu = SmartInventory.builder() menu = SmartInventory.builder()
.id("chestLinkMenu") .id("chestLinkMenu")
.title("Inventory Storage") .title("Inventory Storage")

View File

@ -1,29 +1,23 @@
package com.jamesdpeters.minecraft.chests.listeners; package com.jamesdpeters.minecraft.chests.listeners;
import com.jamesdpeters.minecraft.chests.*;
import com.jamesdpeters.minecraft.chests.containers.ChestLinkInfo; import com.jamesdpeters.minecraft.chests.containers.ChestLinkInfo;
import com.jamesdpeters.minecraft.chests.misc.*;
import com.jamesdpeters.minecraft.chests.runnables.ChestLinkVerifier; import com.jamesdpeters.minecraft.chests.runnables.ChestLinkVerifier;
import com.jamesdpeters.minecraft.chests.serialize.InventoryStorage; import com.jamesdpeters.minecraft.chests.serialize.InventoryStorage;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
import org.bukkit.NamespacedKey;
import org.bukkit.block.Block; import org.bukkit.block.Block;
import org.bukkit.block.BlockFace; import org.bukkit.block.BlockFace;
import org.bukkit.block.Chest; import org.bukkit.block.Chest;
import org.bukkit.block.Sign; import org.bukkit.block.Sign;
import org.bukkit.block.data.Directional; import org.bukkit.block.data.Directional;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority; import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener; import org.bukkit.event.Listener;
import org.bukkit.event.block.BlockBreakEvent; import org.bukkit.event.block.BlockBreakEvent;
import org.bukkit.event.block.BlockPlaceEvent; import org.bukkit.event.block.BlockPlaceEvent;
import org.bukkit.event.block.SignChangeEvent; import org.bukkit.event.block.SignChangeEvent;
import org.bukkit.metadata.FixedMetadataValue;
import org.bukkit.persistence.PersistentDataType; import org.bukkit.persistence.PersistentDataType;
import java.util.Arrays;
public class ChestLinkListener implements Listener { public class ChestLinkListener implements Listener {
@EventHandler @EventHandler
@ -35,7 +29,7 @@ public class ChestLinkListener implements Listener {
public void onSignChange(SignChangeEvent signChangeEvent) { public void onSignChange(SignChangeEvent signChangeEvent) {
if (event.getBlockPlaced().getLocation().equals(signChangeEvent.getBlock().getLocation())) { if (event.getBlockPlaced().getLocation().equals(signChangeEvent.getBlock().getLocation())) {
Sign sign = (Sign) signChangeEvent.getBlock().getState(); Sign sign = (Sign) signChangeEvent.getBlock().getState();
ChestLinkInfo info = Utils.getChestLinkInfo(sign, signChangeEvent.getLines(), signChangeEvent.getPlayer()); ChestLinkInfo info = Utils.getChestLinkInfo(sign, signChangeEvent.getLines(),event.getPlayer().getUniqueId());
if (info != null) { if (info != null) {
if(event.getPlayer().hasPermission(Permissions.ADD)) { if(event.getPlayer().hasPermission(Permissions.ADD)) {
if (Utils.isValidSignPosition(event.getBlockAgainst().getLocation())) { if (Utils.isValidSignPosition(event.getBlockAgainst().getLocation())) {