Skip to content

Commit ca92d0e

Browse files
committed
📝 Fix vault
1 parent 6036a3a commit ca92d0e

File tree

1 file changed

+43
-17
lines changed

1 file changed

+43
-17
lines changed

src/main/java/fr/maxlego08/essentials/buttons/vault/ButtonVaultSlotItems.java

Lines changed: 43 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@
55
import fr.maxlego08.essentials.api.vault.Vault;
66
import fr.maxlego08.essentials.api.vault.VaultItem;
77
import fr.maxlego08.essentials.api.vault.VaultResult;
8-
import fr.maxlego08.menu.api.utils.Placeholders;
98
import fr.maxlego08.menu.api.button.Button;
109
import fr.maxlego08.menu.api.engine.InventoryEngine;
10+
import fr.maxlego08.menu.api.utils.Placeholders;
1111
import org.bukkit.Material;
1212
import org.bukkit.entity.Player;
1313
import org.bukkit.event.inventory.ClickType;
@@ -52,12 +52,12 @@ public void onRender(Player player, InventoryEngine inventory) {
5252
Vault vault = playerVaults.getTargetVault();
5353
if (vault == null) return;
5454

55-
int size = this.slots.size();
55+
int startSlot = getStartSlot(player);
5656

57-
var slots = manager.getMaxSlotsPlayer(player);
58-
int startSlot = slots - (this.slots.size() * (slots - 1));
59-
if (startSlot > 0 && startSlot < size) {
60-
for (int index = 0; index < startSlot; index++) this.releaseSlot(inventory, index);
57+
if (startSlot > 0 && startSlot < this.slots.size()) {
58+
for (int index = 0; index < startSlot; index++) {
59+
this.releaseSlot(inventory, index);
60+
}
6161
}
6262

6363
vault.getVaultItems().forEach((slot, vaultItem) -> setVaultItem(slot, vault, vaultItem, inventory, player));
@@ -120,14 +120,13 @@ public void onInventoryClick(InventoryClickEvent event, Player player, Inventory
120120
return;
121121
}
122122

123+
if (!isValidSlot(slot, player)) {
124+
event.setCancelled(true);
125+
return;
126+
}
123127

124128
if (event.getWhoClicked().getInventory().equals(event.getClickedInventory()) && clickType.isShiftClick() && itemStack != null && itemStack.getType() != Material.AIR) {
125129

126-
if (slot >= 45) {
127-
event.setCancelled(true);
128-
return;
129-
}
130-
131130
VaultResult vaultResult = manager.addVaultItem(vault, player.getUniqueId(), event.getCurrentItem(), -1, itemStack.getAmount(), this.slots.size());
132131

133132
if (vaultResult == null) {
@@ -141,16 +140,11 @@ public void onInventoryClick(InventoryClickEvent event, Player player, Inventory
141140
setVaultItem(vaultResult.slot(), vault, vault.getVaultItems().get(vaultResult.slot()), inventoryDefault, player);
142141

143142
} else {
144-
plugin.getVaultManager().openVault(player, vaultResult.vault().getVaultId());
143+
manager.openVault(player, vaultResult.vault().getVaultId());
145144
}
146145

147146
} else if (topInventory.equals(event.getClickedInventory()) && !cursorItemStack.getType().equals(Material.AIR)) {
148147

149-
if (slot >= 45) {
150-
event.setCancelled(true);
151-
return;
152-
}
153-
154148
VaultItem vaultItem = vault.getVaultItems().get(slot);
155149
if (vaultItem != null && !vaultItem.getItemStack().isSimilar(cursorItemStack)) {
156150
return;
@@ -197,4 +191,36 @@ public void onInventoryClick(InventoryClickEvent event, Player player, Inventory
197191
public void onDrag(InventoryDragEvent event, Player player, InventoryEngine inventoryDefault) {
198192
event.setCancelled(true);
199193
}
194+
195+
/**
196+
* Checks if the given slot is valid for the player's target vault.
197+
*
198+
* @param slot the slot to check
199+
* @param player the player to check for
200+
* @return true if the slot is valid, false otherwise
201+
*/
202+
private boolean isValidSlot(int slot, Player player) {
203+
204+
int startSlot = getStartSlot(player);
205+
206+
if (startSlot > 0 && startSlot < this.slots.size()) {
207+
return slot < startSlot;
208+
}
209+
return true;
210+
}
211+
212+
/**
213+
* Returns the start slot for the given player's target vault.
214+
*
215+
* @param player the player to get the start slot for
216+
* @return the start slot for the player's target vault, or 0 if the target vault is null
217+
*/
218+
private int getStartSlot(Player player) {
219+
var manager = this.plugin.getVaultManager();
220+
PlayerVaults playerVaults = manager.getPlayerVaults(player);
221+
Vault vault = playerVaults.getTargetVault();
222+
if (vault == null) return 0;
223+
int size = this.slots.size();
224+
return manager.getMaxSlotsPlayer(player) - (size * (vault.getVaultId() - 1));
225+
}
200226
}

0 commit comments

Comments
 (0)