feat: initialisation complète de la bibliothèque betterMcGuis (Fluent DSL, ItemBuilder, PaginatedGui, TabbedGui, AnimatedGui, Patterns ASCII, Moteur d'événements, Sécurité anti-glitch et documentation)
This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
# 📦 Zones de Stockage & Slots Éditables - betterMcGuis
|
||||
|
||||
Par défaut, tous les menus créés avec `betterMcGuis` interdisent le vol, le déplacement et le shift-clic d'items pour garantir une sécurité totale contre les duplications de bugs d'inventaires.
|
||||
|
||||
Cependant, pour les fonctionnalités nécessitant que les joueurs déposent ou retirent des objets (comme une poubelle, un coffre de recyclage, une enclume ou un hôtel des ventes), `betterMcGuis` propose **les slots éditables** et le **`StorageGui`**.
|
||||
|
||||
---
|
||||
|
||||
## 📑 Sommaire
|
||||
- [1. Slots Éditables dans un GUI Standard](#1-slots-éditables-dans-un-gui-standard)
|
||||
- [2. Menu de Stockage Dédié (`StorageGui`)](#2-menu-de-stockage-dédié-storagegui)
|
||||
- [3. Sécurité contre les Duplications et Glitches](#3-sécurité-contre-les-duplications-et-glitches)
|
||||
|
||||
---
|
||||
|
||||
## 1. Slots Éditables dans un GUI Standard
|
||||
|
||||
Vous pouvez autoriser les interactions de placement et retrait d'items sur des slots ciblés avec `.editable(...)` :
|
||||
|
||||
```java
|
||||
BetterMcGuis.builder("Boîte de Dépôt", 3)
|
||||
.fillBorder(Material.BLACK_STAINED_GLASS_PANE)
|
||||
// Rend le slot 13 (centre) modifiable librement par le joueur
|
||||
.editable(13)
|
||||
.build()
|
||||
.open(player);
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 2. Menu de Stockage Dédié (`StorageGui`)
|
||||
|
||||
`StorageGui` simplifie la gestion d'une zone centrale de dépôt avec restitution automatique des items laissés à la fermeture :
|
||||
|
||||
```java
|
||||
StorageGui trash = new StorageGui("<red>Poubelle</red>", GuiType.CHEST_4_ROWS);
|
||||
|
||||
// Remplissage des bordures avec du vitrage
|
||||
trash.fillBorder(ItemBuilder.filler(Material.RED_STAINED_GLASS_PANE).asGuiItem());
|
||||
|
||||
// Définit les slots intérieurs comme zone de dépôt
|
||||
trash.setStorageSlots(SlotRange.interior(4, 9));
|
||||
|
||||
// true = restitue les items au joueur à la fermeture
|
||||
// false = détruit définitivement les items à la fermeture (idéal poubelle)
|
||||
trash.returnItemsOnClose(false);
|
||||
|
||||
trash.open(player);
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 3. Sécurité contre les Duplications et Glitches
|
||||
|
||||
Le gestionnaire `BukkitGuiEventListener` applique des sécurités strictes :
|
||||
* **Shift-Clic Protection** : Empêche un joueur de shift-cliquer un item depuis son inventaire vers un slot protégé du menu.
|
||||
* **Number Key Protection** : Empêche l'échange d'items via les touches numériques (1 à 9 de la hotbar) vers des slots non éditables.
|
||||
* **Drag-and-Drop Protection** : Bloque le glisser-déposer de curseur sur tous les slots non autorisés.
|
||||
* **Nettoyage automatique** : En cas de déconnexion ou de fermeture inopinée, les items des zones avec `returnItemsOnClose(true)` sont automatiquement réinsérés dans l'inventaire du joueur ou déposés au sol s'il est plein.
|
||||
Reference in New Issue
Block a user