Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.elitios.guard.region;
- import com.elitios.core.areas.FakeSelection;
- import com.elitios.core.messagetypes.EconomyPriceMessage;
- import com.elitios.core.models.Creator;
- import com.elitios.core.models.PlayerInfos;
- import com.elitios.core.models.Task;
- import com.elitios.core.models.waiter.TextWaiter;
- import com.elitios.economy.playereconomies.EconomyPlayer;
- import com.elitios.guard.MainPlugin;
- import com.elitios.guard.region.commands.Flag;
- import com.sk89q.worldedit.LocalSession;
- import com.sk89q.worldedit.world.World;
- import net.md_5.bungee.api.chat.ClickEvent;
- import net.md_5.bungee.api.chat.ComponentBuilder;
- import net.md_5.bungee.api.chat.HoverEvent;
- import net.md_5.bungee.api.chat.TextComponent;
- import org.bukkit.ChatColor;
- import org.bukkit.entity.Player;
- import org.bukkit.event.player.AsyncPlayerChatEvent;
- import java.util.*;
- public class RegionCreator extends PlayerInfos implements Creator {
- private RegionBuilder regionBuilder;
- public RegionCreator(Player player) {
- super(player);
- this.regionBuilder = RegionBuilder.partialregions.get(player.getUniqueId());
- }
- @Override
- public void confirmation() {
- ComponentBuilder componentBuilder = new ComponentBuilder(ChatColor.AQUA + "Voulez-vous continuer la création de la région ? ");
- componentBuilder.append(ChatColor.GREEN + "Suivant")
- .event(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/region create step"))
- .event(new HoverEvent(HoverEvent.Action.SHOW_TEXT, TextComponent.fromLegacyText("Étape suivante")));
- player.spigot().sendMessage(componentBuilder.create());
- }
- @Override
- public void finishConfirmation() {
- ComponentBuilder componentBuilder = new ComponentBuilder(ChatColor.AQUA + "Voulez-vous finir la création de cette région ? ");
- componentBuilder.append(new EconomyPriceMessage("La création de celle-ci vous coûtera la somme de %value%",regionBuilder.build().getCreationPrice() + regionBuilder.build().getPropertiesPrice()).create());
- componentBuilder.append(" ");
- componentBuilder.append(ChatColor.GREEN + "Valider")
- .event(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/region create finish"))
- .event(new HoverEvent(HoverEvent.Action.SHOW_TEXT, TextComponent.fromLegacyText("Finir la création de la région.")));
- player.spigot().sendMessage(componentBuilder.create());
- }
- @Override
- public void finish() {
- Long priority = System.currentTimeMillis();
- Set<UUID> owners = new HashSet<>();
- owners.add(uuid);
- HashMap<UUID, Set<RegionPermission>> regionPlayerPermission = new HashMap<>();
- Set<RegionPermission> OwnerregionPermissions = new HashSet<>(Arrays.asList(RegionPermission.values()));
- regionPlayerPermission.put(uuid, OwnerregionPermissions);
- regionBuilder.withCreator(uuid);
- regionBuilder.withPriority(priority);
- regionBuilder.withFlag(new Flag());
- regionBuilder.withBanneds(new HashSet<>());
- regionBuilder.withOwners(owners);
- regionBuilder.withMembers(regionPlayerPermission);
- EconomyPlayer.get(uuid).withdraw(regionBuilder.build().getCreationPrice());
- regionBuilder.build().set();
- player.sendMessage("§7La région §7" + regionBuilder.getName() + " §7a été définie.");
- }
- public static class CreateRegion implements Task {
- @Override
- public void run(Player player, Object... args) {
- RegionBuilder regionBuilder = RegionBuilder.partialregions.get(player.getUniqueId());
- LocalSession localSession = MainPlugin.getWorldEdit().getSession(player);
- World world = localSession.getSelectionWorld();
- com.sk89q.worldedit.regions.Region selection = null;
- try {
- selection = localSession.getSelection(world);
- } catch (Exception e) {
- player.sendMessage(ChatColor.RED + "Vous n'avez fait aucune sélection WorldEdit ! Veuillez recommencer la création d'une région.");
- player.closeInventory();
- return;
- }
- FakeSelection fakeSelection = new FakeSelection(selection.getMinimumPoint().toVector3(), selection.getMaximumPoint().toVector3(),world.getName());
- if (Regions.isOverlaid(fakeSelection.getCuboidRegion())) {
- player.sendMessage(ChatColor.RED + "La région que vous tentez de créer existe déjà ou se superpose sur une autre région qui ne vous appartient pas !");
- return;
- }
- //TODO Check if it is in a city
- regionBuilder.withWorldname(world.getName());
- regionBuilder.withSelection(fakeSelection);
- player.closeInventory();
- new RegionCreator(player).finishConfirmation();
- }
- }
- @Override
- public void clearAcquisitors() {
- RegionBuilder.partialregions.remove(uuid);
- new TextWaiter().getFor(player).remove();
- }
- @Override
- public void run(Player player, Object... args) {
- event((AsyncPlayerChatEvent) args[0]);
- }
- @Override
- public void event(AsyncPlayerChatEvent event) {
- String message = event.getMessage();
- init(event.getPlayer());
- if (Regions.regions.containsKey(message)){
- player.sendMessage(ChatColor.RED + "Le nom spécifié est déjà utilisé pour une autre région sur ce serveur. Veuillez en spécifier un autre !");
- return;
- }
- regionBuilder.withName(message);
- regionBuilder.partialUpdate(uuid);
- new TextWaiter().getFor(player).remove();
- new RegionsPermissions(player,false).run(player, "Permissions de la Région par défaut :");
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement