-
Notifications
You must be signed in to change notification settings - Fork 29
Expand file tree
/
Copy pathConfirmMenu.java
More file actions
148 lines (126 loc) · 5.3 KB
/
ConfirmMenu.java
File metadata and controls
148 lines (126 loc) · 5.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
package fr.openmc.api.menulib.template;
import dev.lone.itemsadder.api.FontImages.FontImageWrapper;
import fr.openmc.api.menulib.Menu;
import fr.openmc.api.menulib.utils.InventorySize;
import fr.openmc.api.menulib.utils.ItemBuilder;
import fr.openmc.core.registry.items.CustomItemRegistry;
import fr.openmc.core.utils.text.messages.MessageType;
import fr.openmc.core.utils.text.messages.MessagesManager;
import fr.openmc.core.utils.text.messages.Prefix;
import net.kyori.adventure.text.Component;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.event.inventory.InventoryCloseEvent;
import org.bukkit.inventory.ItemStack;
import org.jetbrains.annotations.NotNull;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class ConfirmMenu extends Menu {
private final List<Component> loreAcceptMsg;
private final List<Component> loreDenyMsg;
private final Runnable accept;
private final Runnable deny;
private String texture = null;
private InventorySize inventorySize = InventorySize.SMALLEST;
private int posAcceptBtn = 5;
private int posDenyBtn = 3;
/**
* Add Confirmation Menu, it must use it for all
*
* @param owner Player for a Menu owner
* @param methodAccept Run your action when Accept
* @param methodDeny Run your action when Accept
* @param loreAccept Put your lore for Accept
* @param loreDeny Run your lore for Deny
*/
public ConfirmMenu(Player owner, Runnable methodAccept, Runnable methodDeny, List<Component> loreAccept, List<Component> loreDeny) {
super(owner);
this.accept = methodAccept != null ? methodAccept : () -> {};
this.deny = methodDeny != null ? methodDeny : () -> {};
this.loreAcceptMsg = loreAccept;
this.loreDenyMsg = loreDeny;
}
/**
* Add Confirmation Menu, it must use it for all
*
* @param owner Player for a Menu owner
* @param methodAccept Run your action when Accept
* @param methodDeny Run your action when Accept
* @param loreAccept Put your lore for Accept
* @param loreDeny Run your lore for Deny
* @param texture set textures
* @param size Set inventory size
*/
public ConfirmMenu(Player owner, Runnable methodAccept, Runnable methodDeny, List<Component> loreAccept, List<Component> loreDeny, String texture, InventorySize size, int posAcceptBtn, int posDenyBtn) {
super(owner);
this.accept = methodAccept != null ? methodAccept : () -> {};
this.deny = methodDeny != null ? methodDeny : () -> {};
this.loreAcceptMsg = loreAccept;
this.loreDenyMsg = loreDeny;
this.texture = texture;
this.inventorySize = size;
this.posAcceptBtn = posAcceptBtn;
this.posDenyBtn = posDenyBtn;
}
@Override
public @NotNull String getName() {
return "Menu de Confirmation";
}
@Override
public String getTexture() {
return texture == null ? FontImageWrapper.replaceFontImages("§r§f:offset_-8::confirm_menu:") : texture;
}
@Override
public @NotNull InventorySize getInventorySize() {
return inventorySize;
}
@Override
public void onInventoryClick(InventoryClickEvent click) {
// empty
}
@Override
public void onClose(InventoryCloseEvent event) {
}
@Override
public @NotNull Map<Integer, ItemBuilder> getContent() {
Map<Integer, ItemBuilder> inventory = new HashMap<>();
Player player = getOwner();
List<Component> loreAccept = new ArrayList<>(loreAcceptMsg);
loreAccept.add(Component.text("§e§lCLIQUEZ ICI POUR VALIDER"));
List<Component> loreDeny = new ArrayList<>(loreDenyMsg);
loreDeny.add(Component.text("§e§lCLIQUEZ ICI POUR REFUSER"));
ItemStack refuseBtn = CustomItemRegistry.getByName("omc_menus:refuse_btn").getBest();
ItemStack acceptBtn = CustomItemRegistry.getByName("omc_menus:accept_btn").getBest();
inventory.put(posDenyBtn, new ItemBuilder(this, refuseBtn, itemMeta -> {
itemMeta.displayName(Component.text("§cRefuser"));
itemMeta.lore(loreDeny);
}).setOnClick(event -> {
try {
deny.run();
} catch (Exception e) {
MessagesManager.sendMessage(player, Component.text("§cUne Erreur est survenue, veuillez contacter le Staff"), Prefix.OPENMC, MessageType.ERROR, false);
player.closeInventory();
throw new RuntimeException(e);
}
}));
inventory.put(posAcceptBtn, new ItemBuilder(this, acceptBtn, itemMeta -> {
itemMeta.displayName(Component.text("§aAccepter"));
itemMeta.lore(loreAccept);
}).setOnClick(event -> {
try {
accept.run();
} catch (Exception e) {
MessagesManager.sendMessage(player, Component.text("§cUne Erreur est survenue, veuillez contacter le Staff"), Prefix.OPENMC, MessageType.ERROR, false);
player.closeInventory();
throw new RuntimeException(e);
}
}));
return inventory;
}
@Override
public List<Integer> getTakableSlot() {
return List.of();
}
}