Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
import org.modernbeta.admintoolbox.managers.admin.AdminState.TeleportHistory;

import javax.annotation.Nullable;
import java.util.Arrays;
import java.util.Map;
import java.util.Optional;
import java.util.UUID;
Expand Down Expand Up @@ -178,14 +179,14 @@ public Optional<AdminState> getAdminState(OfflinePlayer player) {
return Optional.ofNullable(adminStates.get(player.getUniqueId()));
}

private @Nullable AdminState loadStateFromFile(UUID playerId) {
private @Nullable AdminState loadStateFromFile(Player player) {
FileConfiguration state = plugin.getAdminStateConfig();
if (!state.isConfigurationSection(playerId.toString())) return null;
if (!state.isConfigurationSection(player.getUniqueId().toString())) return null;

ConfigurationSection playerSection = state.getConfigurationSection(playerId.toString());
ConfigurationSection playerSection = state.getConfigurationSection(player.getUniqueId().toString());
assert playerSection != null;

return AdminState.fromConfig(playerId, playerSection);
return AdminState.fromConfig(player, playerSection);
}

private CompletableFuture<Location> getNextLowestSafeLocation(Location location) {
Expand Down Expand Up @@ -253,7 +254,7 @@ void onPluginDisable(PluginDisableEvent disableEvent) {
@EventHandler(priority = EventPriority.HIGHEST)
void onAdminJoin(PlayerJoinEvent joinEvent) {
Player player = joinEvent.getPlayer();
Optional.ofNullable(loadStateFromFile(player.getUniqueId()))
Optional.ofNullable(loadStateFromFile(player))
.ifPresent((state) -> {
adminStates.put(player.getUniqueId(), state);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -64,14 +64,18 @@ static AdminState forPlayer(Player player) {
);
}

static AdminState fromConfig(UUID playerId, ConfigurationSection playerSection) {
final int PLAYER_INVENTORY_SLOTS = 41;
static AdminState fromConfig(Player player, ConfigurationSection playerSection) {
UUID playerId = player.getUniqueId();

ItemStack[] items = new ItemStack[PLAYER_INVENTORY_SLOTS];
ItemStack[] items = new ItemStack[0];
if (playerSection.contains("inventory")) {
List<?> invList = playerSection.getList("inventory");
if (invList != null) {
for (int i = 0; i < invList.size(); i++) {
// NOTE: This is a hotfix for users who use plugins that change the inventory size
// from the vanilla default of 41. We used to hardcode this, it caused an
// exception when restoring.
items = new ItemStack[Math.min(invList.size(), player.getInventory().getContents().length)];
for (int i = 0; i < items.length; i++) {
Object obj = invList.get(i);
if (obj == null) {
items[i] = null; // preserve empty slots
Expand Down
Loading