[1.18.1.a.2] Bug Fix - First Initialize Via Command

This commit is contained in:
TheTealViper 2022-04-24 13:03:57 -07:00
parent c7f06bdad9
commit 39d7782533
3 changed files with 38 additions and 24 deletions

View File

@ -1,6 +1,6 @@
name: "EnderBank"
author: TheTealViper
version: "1.18.1.a.1"
version: "1.18.1.a.2"
api-version: 1.18
description: "Bank system from popular RPG's."
main: me.TheTealViper.enderbank.EnderBank

View File

@ -8,6 +8,7 @@ import java.util.UUID;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.OfflinePlayer;
import org.bukkit.Sound;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.entity.Player;
@ -63,7 +64,7 @@ public class BankStorage {
//This method REQUIRES the player to be online to initialize their bank.
//This should be run the first time the player tries opening their ender inv
//and the enderbank is created.
public static void initiateBank(Player p) {
public static void initiateBank(OfflinePlayer p) {
PluginFile pf = new PluginFile(plugin, "banks/banks." + p.getUniqueId().toString() + ".yml", true);
//Set default items
@ -71,12 +72,17 @@ public class BankStorage {
pf.set("inventory." + i, new ItemStack(Material.AIR));
}
//Carry over vanilla ender items
int index = 0;
for(ItemStack i : p.getEnderChest().getContents()) {
if(i != null && !i.getType().equals(Material.AIR)) {
pf.set("inventory." + index, i);
index++;
//Carry over vanilla ender items.
//ONLY WORKS IF PLAYER IS ONLINE AT TIME OF BANK INITIALIZATION.
//First initialization should only be possible by the player themselves
//but just listing in case.
if(p.isOnline()) {
int index = 0;
for(ItemStack i : p.getPlayer().getEnderChest().getContents()) {
if(i != null && !i.getType().equals(Material.AIR)) {
pf.set("inventory." + index, i);
index++;
}
}
}

View File

@ -195,15 +195,19 @@ public class EnderBank extends JavaPlugin implements Listener {
OfflinePlayer oPlayerOffline = Bukkit.getOfflinePlayer(oPlayerName);
UUID oPlayerUUID = oPlayerOffline.getUniqueId();
if(BankStorage.hasBank(oPlayerUUID)) {
BankStorage bank = BankStorage.getBank(oPlayerUUID);
bank.openPage(1, p);
openEnderBank(p, oPlayerOffline);
if(!oPlayerOffline.isOnline()){
p.sendMessage(ViperStringUtils.makeColors(formatString(messages.getString("Open_Inventory_Of_Offline_Player"), p.getUniqueId())));
// p.sendMessage("That player is not online. Opening last save of inventory.");
}
}else {
p.sendMessage(ViperStringUtils.makeColors(formatString(messages.getString("Open_Inventory_Player_Hasnt_Made_Yet"), p.getUniqueId())));
// p.sendMessage("That bank does not exist yet. The player must sign in at least once.");
if(p.getUniqueId().equals(oPlayerUUID)) {
//If player is attempting to open their own ender bank for the very first time via command
openEnderBank(p, p);
}else {
p.sendMessage(ViperStringUtils.makeColors(formatString(messages.getString("Open_Inventory_Player_Hasnt_Made_Yet"), p.getUniqueId())));
// p.sendMessage("That bank does not exist yet. The player must sign in at least once.");
}
}
}else {
warnmissingperms = true;
@ -373,7 +377,7 @@ public class EnderBank extends JavaPlugin implements Listener {
if(e.getInventory().getType().equals(InventoryType.ENDER_CHEST) && !disabledWorlds.contains(e.getPlayer().getWorld().getName())) {
e.setCancelled(true);
Player p = (Player) e.getPlayer();
openEnderBank(p);
openEnderBank(p, p);
}
}
@ -382,15 +386,15 @@ public class EnderBank extends JavaPlugin implements Listener {
if(e.getAction().equals(Action.RIGHT_CLICK_BLOCK) && e.getClickedBlock().getType().equals(Material.ENDER_CHEST) && !disabledWorlds.contains(e.getPlayer().getWorld().getName())) {
e.setCancelled(true);
Player p = (Player) e.getPlayer();
openEnderBank(p);
openEnderBank(p, p);
}
}
public void openEnderBank(Player p) {
if(!BankStorage.hasBank(p.getUniqueId()))
BankStorage.initiateBank(p);
BankStorage bank = BankStorage.getBank(p.getUniqueId());
bank.openPage(1, p);
public void openEnderBank(Player pOpener, OfflinePlayer pBankOwner) {
if(!BankStorage.hasBank(pBankOwner.getUniqueId()))
BankStorage.initiateBank(pBankOwner);
BankStorage bank = BankStorage.getBank(pBankOwner.getUniqueId());
bank.openPage(1, pOpener);
}
@EventHandler
@ -427,13 +431,17 @@ public class EnderBank extends JavaPlugin implements Listener {
//Handles general formatting stuff
public static String formatString(String s, UUID uuid) {
BankStorage bank = BankStorage.getBank(uuid);
while(s.contains("%eb_pagecost%"))
s = s.replace("%eb_pagecost%", BankStorage.getPageCost(bank.unlockedPages + 1) + "");
while(s.contains("%eb_currentpage%"))
s = s.replace("%eb_currentpage%", bank.lastOpenedPage + "");
while(s.contains("%eb_playername%"))
s = s.replace("%eb_playername%", Bukkit.getPlayer(uuid).getName());
if(BankStorage.hasBank(uuid)) {
BankStorage bank = BankStorage.getBank(uuid);
while(s.contains("%eb_pagecost%"))
s = s.replace("%eb_pagecost%", BankStorage.getPageCost(bank.unlockedPages + 1) + "");
while(s.contains("%eb_currentpage%"))
s = s.replace("%eb_currentpage%", bank.lastOpenedPage + "");
}
return s;
}