Advertisement
Guest User

Untitled

a guest
Feb 16th, 2019
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.79 KB | None | 0 0
  1. package com.elitios.guard.region;
  2.  
  3. import com.elitios.core.areas.FakeSelection;
  4. import com.elitios.core.messagetypes.EconomyPriceMessage;
  5. import com.elitios.core.models.Creator;
  6. import com.elitios.core.models.PlayerInfos;
  7. import com.elitios.core.models.Task;
  8. import com.elitios.core.models.waiter.TextWaiter;
  9. import com.elitios.economy.playereconomies.EconomyPlayer;
  10. import com.elitios.guard.MainPlugin;
  11. import com.elitios.guard.region.commands.Flag;
  12. import com.sk89q.worldedit.LocalSession;
  13. import com.sk89q.worldedit.world.World;
  14. import net.md_5.bungee.api.chat.ClickEvent;
  15. import net.md_5.bungee.api.chat.ComponentBuilder;
  16. import net.md_5.bungee.api.chat.HoverEvent;
  17. import net.md_5.bungee.api.chat.TextComponent;
  18. import org.bukkit.ChatColor;
  19. import org.bukkit.entity.Player;
  20. import org.bukkit.event.player.AsyncPlayerChatEvent;
  21.  
  22. import java.util.*;
  23.  
  24. public class RegionCreator extends PlayerInfos implements Creator {
  25.     private RegionBuilder regionBuilder;
  26.  
  27.     public RegionCreator(Player player) {
  28.         super(player);
  29.         this.regionBuilder = RegionBuilder.partialregions.get(player.getUniqueId());
  30.     }
  31.  
  32.     @Override
  33.     public void confirmation() {
  34.         ComponentBuilder componentBuilder = new ComponentBuilder(ChatColor.AQUA + "Voulez-vous continuer la création de la région ? ");
  35.         componentBuilder.append(ChatColor.GREEN + "Suivant")
  36.                 .event(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/region create step"))
  37.                 .event(new HoverEvent(HoverEvent.Action.SHOW_TEXT, TextComponent.fromLegacyText("Étape suivante")));
  38.         player.spigot().sendMessage(componentBuilder.create());
  39.     }
  40.  
  41.     @Override
  42.     public void finishConfirmation() {
  43.         ComponentBuilder componentBuilder = new ComponentBuilder(ChatColor.AQUA + "Voulez-vous finir la création de cette région ? ");
  44.         componentBuilder.append(new EconomyPriceMessage("La création de celle-ci vous coûtera la somme de %value%",regionBuilder.build().getCreationPrice() + regionBuilder.build().getPropertiesPrice()).create());
  45.         componentBuilder.append(" ");
  46.         componentBuilder.append(ChatColor.GREEN + "Valider")
  47.                 .event(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/region create finish"))
  48.                 .event(new HoverEvent(HoverEvent.Action.SHOW_TEXT, TextComponent.fromLegacyText("Finir la création de la région.")));
  49.         player.spigot().sendMessage(componentBuilder.create());
  50.     }
  51.  
  52.     @Override
  53.     public void finish() {
  54.         Long priority = System.currentTimeMillis();
  55.         Set<UUID> owners = new HashSet<>();
  56.         owners.add(uuid);
  57.         HashMap<UUID, Set<RegionPermission>> regionPlayerPermission = new HashMap<>();
  58.         Set<RegionPermission> OwnerregionPermissions = new HashSet<>(Arrays.asList(RegionPermission.values()));
  59.         regionPlayerPermission.put(uuid, OwnerregionPermissions);
  60.         regionBuilder.withCreator(uuid);
  61.         regionBuilder.withPriority(priority);
  62.         regionBuilder.withFlag(new Flag());
  63.         regionBuilder.withBanneds(new HashSet<>());
  64.         regionBuilder.withOwners(owners);
  65.         regionBuilder.withMembers(regionPlayerPermission);
  66.         EconomyPlayer.get(uuid).withdraw(regionBuilder.build().getCreationPrice());
  67.         regionBuilder.build().set();
  68.         player.sendMessage("§7La région §7" + regionBuilder.getName() + " §7a été définie.");
  69.     }
  70.  
  71.     public static class CreateRegion implements Task {
  72.  
  73.         @Override
  74.         public void run(Player player, Object... args) {
  75.             RegionBuilder regionBuilder = RegionBuilder.partialregions.get(player.getUniqueId());
  76.             LocalSession localSession = MainPlugin.getWorldEdit().getSession(player);
  77.             World world = localSession.getSelectionWorld();
  78.             com.sk89q.worldedit.regions.Region selection = null;
  79.             try {
  80.                 selection = localSession.getSelection(world);
  81.             } catch (Exception e) {
  82.                 player.sendMessage(ChatColor.RED + "Vous n'avez fait aucune sélection WorldEdit ! Veuillez recommencer la création d'une région.");
  83.                 player.closeInventory();
  84.                 return;
  85.             }
  86.             FakeSelection fakeSelection = new FakeSelection(selection.getMinimumPoint().toVector3(), selection.getMaximumPoint().toVector3(),world.getName());
  87.             if (Regions.isOverlaid(fakeSelection.getCuboidRegion())) {
  88.                 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 !");
  89.                 return;
  90.             }
  91.             //TODO Check if it is in a city
  92.  
  93.             regionBuilder.withWorldname(world.getName());
  94.             regionBuilder.withSelection(fakeSelection);
  95.             player.closeInventory();
  96.             new RegionCreator(player).finishConfirmation();
  97.         }
  98.     }
  99.  
  100.     @Override
  101.     public void clearAcquisitors() {
  102.         RegionBuilder.partialregions.remove(uuid);
  103.         new TextWaiter().getFor(player).remove();
  104.     }
  105.  
  106.     @Override
  107.     public void run(Player player, Object... args) {
  108.         event((AsyncPlayerChatEvent) args[0]);
  109.     }
  110.  
  111.     @Override
  112.     public void event(AsyncPlayerChatEvent event) {
  113.         String message = event.getMessage();
  114.         init(event.getPlayer());
  115.         if (Regions.regions.containsKey(message)){
  116.             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 !");
  117.             return;
  118.         }
  119.         regionBuilder.withName(message);
  120.         regionBuilder.partialUpdate(uuid);
  121.         new TextWaiter().getFor(player).remove();
  122.         new RegionsPermissions(player,false).run(player, "Permissions de la Région par défaut :");
  123.     }
  124. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement