Skip to content
Merged
Show file tree
Hide file tree
Changes from 3 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 @@ -118,4 +118,52 @@ void get(Player sender, @SuggestWith(CityMembersAutoComplete.class) OfflinePlaye
if (!CityPermsConditions.canSeePerms(sender, player.getUniqueId())) return;
new CityPermsMenu(sender, player.getUniqueId(), false).open();
}

@Subcommand("removeall")
@CommandPermission("omc.commands.city.perm.removeall")
@Description("Retirer toutes les permissions d'un membre")
public static void removeAll(Player sender, @SuggestWith(CityMembersAutoComplete.class) OfflinePlayer player) {
if (!CityPermsConditions.canSeePerms(sender, player.getUniqueId())) return;
if (!CityPermsConditions.canModifyPerms(sender, null)) return;

City city = CityManager.getPlayerCity(sender.getUniqueId());

if (city == null) {
MessagesManager.sendMessage(sender, MessagesManager.Message.PLAYER_NO_CITY.getMessage(), Prefix.CITY, MessageType.ERROR, false);
return;
}

if (!city.getMembers().contains(player.getUniqueId())) {
MessagesManager.sendMessage(sender, Component.text("Ce joueur n'est pas dans ta ville"), Prefix.CITY, MessageType.ERROR, false);
return;
}

for (CityPermission permission : CityPermission.values()) {
if (permission == CityPermission.OWNER) continue;
city.removePermission(player.getUniqueId(), permission);
}
}

@Subcommand("addall")
@CommandPermission("omc.commands.city.perm.addall")
@Description("Ajouter toutes les permissions à un membre")
public static void addAll(Player sender, @SuggestWith(CityMembersAutoComplete.class) OfflinePlayer player) {
if (!CityPermsConditions.canSeePerms(sender, player.getUniqueId())) return;
if (!CityPermsConditions.canModifyPerms(sender, null)) return;

City city = CityManager.getPlayerCity(sender.getUniqueId());
if (city == null) {
MessagesManager.sendMessage(sender, MessagesManager.Message.PLAYER_NO_CITY.getMessage(), Prefix.CITY, MessageType.ERROR, false);
return;
}
if (!city.getMembers().contains(player.getUniqueId())) {
MessagesManager.sendMessage(sender, Component.text("Ce joueur n'est pas dans ta ville"), Prefix.CITY, MessageType.ERROR, false);
return;
}

for (CityPermission permission : CityPermission.values()) {
if (permission == CityPermission.OWNER) continue;
city.addPermission(player.getUniqueId(), permission);
}
}
}
39 changes: 35 additions & 4 deletions src/main/java/fr/openmc/core/features/city/menu/CityPermsMenu.java
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,9 @@
import fr.openmc.core.features.city.commands.CityPermsCommands;
import fr.openmc.core.items.CustomItemRegistry;
import fr.openmc.core.utils.cache.CacheOfflinePlayer;
import fr.openmc.core.utils.messages.MessageType;
import fr.openmc.core.utils.messages.MessagesManager;
import fr.openmc.core.utils.messages.Prefix;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.format.TextDecoration;
import org.bukkit.Material;
Expand Down Expand Up @@ -79,10 +82,12 @@ public List<ItemStack> getItems() {
);
itemMeta.lore(edit ? lore : List.of());
}).setOnClick(inventoryClickEvent -> {
if (!edit) return;
CityPermsCommands.swap(player, CacheOfflinePlayer.getOfflinePlayer(memberUUID), permission);
player.closeInventory();
this.open();
if (!edit)
MessagesManager.sendMessage(getOwner(), Component.text("§cVous n'avez pas la permission de modifier les permissions des membres"), Prefix.CITY, MessageType.ERROR, true);
else {
CityPermsCommands.swap(player, CacheOfflinePlayer.getOfflinePlayer(memberUUID), permission);
new CityPermsMenu(player, memberUUID, true).open();
}
}).hide(ItemUtils.getDataComponentType());

items.add(itemBuilder);
Expand Down Expand Up @@ -110,6 +115,32 @@ public Map<Integer, ItemBuilder> getButtons() {
itemMeta.lore(List.of(Component.text("§7Cliquez pour aller à la page suivante")));
}).setNextPageButton());

if (edit) {
map.put(52, new ItemBuilder(this, Material.RED_DYE, itemMeta -> {
itemMeta.displayName(Component.text("§cTout retirer"));
itemMeta.lore(List.of(Component.text("§7Cliquez pour retirer toutes les permissions du membre")));
}).setOnClick(inventoryClickEvent -> {
if (!edit)
MessagesManager.sendMessage(getOwner(), Component.text("§cVous n'avez pas la permission de modifier les permissions des membres"), Prefix.CITY, MessageType.ERROR, true);
else {
CityPermsCommands.removeAll(getOwner(), CacheOfflinePlayer.getOfflinePlayer(memberUUID));
new CityPermsMenu(getOwner(), memberUUID, true).open();
}
}));

map.put(53, new ItemBuilder(this, Material.GREEN_DYE, itemMeta -> {
itemMeta.displayName(Component.text("§aTout ajouter"));
itemMeta.lore(List.of(Component.text("§7Cliquez pour ajouter toutes les permissions au membre")));
}).setOnClick(inventoryClickEvent -> {
if (!edit)
MessagesManager.sendMessage(getOwner(), Component.text("§cVous n'avez pas la permission de modifier les permissions des membres"), Prefix.CITY, MessageType.ERROR, true);
else {
CityPermsCommands.addAll(getOwner(), CacheOfflinePlayer.getOfflinePlayer(memberUUID));
new CityPermsMenu(getOwner(), memberUUID, true).open();
}
}));
}

return map;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,62 @@ public static void swapPermission(Player player, DBCityRank rank, CityPermission
rank.swapPermission(permission);
}

/**
* Add all permissions to a rank.
*
* @param player The player who is adding the permissions.
* @param rank The rank to add the permissions to.
*/
public static void addAllPermissions(Player player, DBCityRank rank) {
City city = CityManager.getPlayerCity(player.getUniqueId());
if (city == null) {
MessagesManager.sendMessage(player, MessagesManager.Message.PLAYER_NO_CITY.getMessage(), Prefix.CITY, MessageType.ERROR, false);
return;
}
if (!city.hasPermission(player.getUniqueId(), CityPermission.PERMS)) {
MessagesManager.sendMessage(player, MessagesManager.Message.PLAYER_NO_ACCESS_PERMS.getMessage(), Prefix.CITY, MessageType.ERROR, false);
return;
}
if (rank == null) {
MessagesManager.sendMessage(player, MessagesManager.Message.CITY_RANKS_NOT_EXIST.getMessage(), Prefix.CITY, MessageType.ERROR, false);
return;
}

for (CityPermission permission : CityPermission.values()) {
if (permission != CityPermission.OWNER) return;
if (rank.getPermissionsSet().contains(permission)) continue;
rank.getPermissionsSet().add(permission);
}
}

/**
* Remove all permissions from a rank.
*
* @param player The player who is removing the permissions.
* @param rank The rank to remove the permissions from.
*/
public static void removeAllPermissions(Player player, DBCityRank rank) {
City city = CityManager.getPlayerCity(player.getUniqueId());
if (city == null) {
MessagesManager.sendMessage(player, MessagesManager.Message.PLAYER_NO_CITY.getMessage(), Prefix.CITY, MessageType.ERROR, false);
return;
}
if (!city.hasPermission(player.getUniqueId(), CityPermission.PERMS)) {
MessagesManager.sendMessage(player, MessagesManager.Message.PLAYER_NO_ACCESS_PERMS.getMessage(), Prefix.CITY, MessageType.ERROR, false);
return;
}
if (rank == null) {
MessagesManager.sendMessage(player, MessagesManager.Message.CITY_RANKS_NOT_EXIST.getMessage(), Prefix.CITY, MessageType.ERROR, false);
return;
}

for (CityPermission permission : CityPermission.values()) {
if (permission != CityPermission.OWNER) continue;
if (!rank.getPermissionsSet().contains(permission)) continue;
rank.getPermissionsSet().remove(permission);
}
}

@Subcommand("assign")
@CommandPermission("omc.commands.city.rank.assign")
public void assign(Player player, @Optional @Named("rank") @SuggestWith(CityRanksAutoComplete.class) String rankName, @Optional @Named("player") @SuggestWith(CityMembersAutoComplete.class) OfflinePlayer target) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -241,11 +241,8 @@ private Map<Integer, ItemBuilder> createRank() {
itemMeta.displayName(Component.text("§bLes permissions du grade"));
itemMeta.lore(lorePerm);
}).setOnClick(inventoryClickEvent -> {
if (!canManageRanks) {
MessagesManager.sendMessage(getOwner(), Component.text("§cVous n'avez pas la permission de modifier les permissions"), Prefix.CITY, MessageType.ERROR, false);
return;
}
new CityRankPermsMenu(getOwner(), oldRank, newRank, true, 0).open();
if (!canManageRanks) new CityRankPermsMenu(getOwner(), oldRank, newRank, false, 0).open();
else new CityRankPermsMenu(getOwner(), oldRank, newRank, true, 0).open();
}));

map.put(18, new ItemBuilder(this, CustomItemRegistry.getByName("omc_menus:refuse_btn").getBest(), itemMeta -> {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,12 +59,6 @@ public CityRankPermsMenu(Player owner, DBCityRank oldRank, DBCityRank newRank, b
public List<ItemStack> getItems() {
List<ItemStack> items = new ArrayList<>();

if (!this.canEdit) {
MessagesManager.sendMessage(getOwner(), Component.text("§cVous n'avez pas la permission de modifier les permissions"), Prefix.CITY, MessageType.ERROR, false);
getOwner().closeInventory();
return null;
}

for (CityPermission permission : CityPermission.values()) {
if (permission == CityPermission.OWNER) continue;

Expand All @@ -78,8 +72,12 @@ public List<ItemStack> getItems() {
);
itemMeta.lore(lore);
}).setOnClick(inventoryClickEvent -> {
CityRankCommands.swapPermission(getOwner(), newRank, permission);
new CityRankPermsMenu(getOwner(), oldRank, newRank, true, page).open();
if (!canEdit)
MessagesManager.sendMessage(getOwner(), Component.text("§cVous n'avez pas la permission de modifier ce grade"), Prefix.CITY, MessageType.ERROR, true);
else {
CityRankCommands.swapPermission(getOwner(), newRank, permission);
new CityRankPermsMenu(getOwner(), oldRank, newRank, true, page).open();
}
}).hide(ItemUtils.getDataComponentType());

items.add(itemBuilder);
Expand Down Expand Up @@ -110,6 +108,32 @@ public Map<Integer, ItemBuilder> getButtons() {
}).setOnClick(inventoryClickEvent -> new CityRankPermsMenu(getOwner(), oldRank, newRank, canEdit, page + 1).open()));
}

if (canEdit) {
map.put(52, new ItemBuilder(this, Material.RED_DYE, itemMeta -> {
itemMeta.displayName(Component.text("§cTout retirer"));
itemMeta.lore(List.of(Component.text("§7Cliquez pour retirer toutes les permissions du membre")));
}).setOnClick(inventoryClickEvent -> {
if (!canEdit)
MessagesManager.sendMessage(getOwner(), Component.text("§cVous n'avez pas la permission de modifier les permissions des grades"), Prefix.CITY, MessageType.ERROR, true);
else {
CityRankCommands.removeAllPermissions(getOwner(), newRank);
new CityRankPermsMenu(getOwner(), oldRank, newRank, true, page).open();
}
}));

map.put(53, new ItemBuilder(this, Material.GREEN_DYE, itemMeta -> {
itemMeta.displayName(Component.text("§aTout ajouter"));
itemMeta.lore(List.of(Component.text("§7Cliquez pour ajouter toutes les permissions au membre")));
}).setOnClick(inventoryClickEvent -> {
if (!canEdit)
MessagesManager.sendMessage(getOwner(), Component.text("§cVous n'avez pas la permission de modifier les permissions des grades"), Prefix.CITY, MessageType.ERROR, true);
else {
CityRankCommands.addAllPermissions(getOwner(), newRank);
new CityRankPermsMenu(getOwner(), oldRank, newRank, true, page).open();
}
}));
}

return map;
}

Expand Down
Loading