Advertisement
Guest User

Environment class

a guest
Aug 21st, 2019
119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 15.53 KB | None | 0 0
  1. package com.mcme.me.fraspace5.environment;
  2.  
  3. import com.mcme.me.fraspace5.environment.Region.Region;
  4. import com.mcme.me.fraspace5.environment.Region.RegionManager;
  5. import com.mcme.me.fraspace5.environment.Region.RegionPlayer;
  6. import com.mcme.me.fraspace5.environment.commands.RegionCommand;
  7. import com.mcme.me.fraspace5.environment.event.RegionChangeEvent;
  8. import com.mcme.me.fraspace5.environment.listener.PlayerListener;
  9. import com.mcme.me.fraspace5.environment.listener.RegionListener;
  10. import com.mcme.me.fraspace5.environment.util.FileUtil;
  11. import com.mcme.me.fraspace5.environment.util.RegionUtil;
  12. import com.mcme.me.fraspace5.environment.util.WEUtil;
  13. import java.io.File;
  14. import java.util.ArrayList;
  15. import java.util.HashMap;
  16. import java.util.List;
  17. import java.util.UUID;
  18. import java.util.logging.Level;
  19. import java.util.logging.Logger;
  20. import org.bukkit.Bukkit;
  21. import org.bukkit.ChatColor;
  22. import org.bukkit.OfflinePlayer;
  23. import org.bukkit.Sound;
  24. import org.bukkit.WeatherType;
  25. import org.bukkit.command.Command;
  26. import org.bukkit.command.CommandSender;
  27. import org.bukkit.command.ConsoleCommandSender;
  28. import org.bukkit.entity.Player;
  29. import org.bukkit.event.EventHandler;
  30. import org.bukkit.event.Listener;
  31. import org.bukkit.event.player.PlayerJoinEvent;
  32. import org.bukkit.plugin.Plugin;
  33. import org.bukkit.plugin.PluginManager;
  34. import org.bukkit.plugin.java.JavaPlugin;
  35. import org.bukkit.scheduler.BukkitRunnable;
  36.  
  37.  
  38. /**
  39.  *
  40.  * @author Fraspace5
  41.  */
  42. public class Environment extends JavaPlugin implements Listener{
  43.    
  44.    
  45.     private static Environment instance;
  46.     private RunChecks runChecks;
  47.    
  48.     private List<String> regions = new ArrayList<>();
  49.    
  50.     HashMap<UUID, Boolean> bool = new HashMap<>();    
  51.    
  52.     HashMap<UUID, Boolean> other = new HashMap<>();
  53.    
  54.     private boolean registeredStuff = false;
  55.  
  56.     Logger Logger = Bukkit.getLogger();
  57.     ConsoleCommandSender clogger = this.getServer().getConsoleSender();
  58.    
  59.    
  60.     public Environment()
  61.     {
  62.         instance = this;
  63.     }
  64.  
  65.     public static Plugin getPlugin()
  66.     {
  67.         return instance;
  68.     }
  69.  
  70.     @Override
  71.     public void onEnable()
  72.     {
  73.         getConfig().options().copyDefaults(true);
  74.         saveConfig();
  75.         RegionManager.loadRegions(this);
  76.         if(!registeredStuff) {
  77.             registerStuff();
  78.         }
  79.         runChecks = new RunChecks();
  80.         runChecks.runTaskTimer(this, 0L, 20L);
  81.         saveConfig();
  82.        
  83.         clogger.sendMessage(ChatColor.AQUA+ "---------------------------------------");
  84.         clogger.sendMessage(ChatColor.DARK_GREEN+ "Environment Plugin 1.0 enabled");
  85.         clogger.sendMessage(ChatColor.AQUA+ "---------------------------------------");
  86.     }
  87.  
  88.     @Override
  89.     public void onDisable()
  90.     {
  91.         RegionManager.stopChecks();
  92.         clogger.sendMessage(ChatColor.RED+ "---------------------------------------");
  93.         clogger.sendMessage(ChatColor.DARK_GREEN+ "Environment Plugin 1.0 Disabled");
  94.         clogger.sendMessage(ChatColor.RED+ "---------------------------------------");
  95.     }
  96.  
  97.     private void registerStuff()
  98.     {
  99.         PluginManager pm = Bukkit.getPluginManager();
  100.         pm.registerEvents(new RegionListener(), this);
  101.         pm.registerEvents(new PlayerListener(), this);
  102.         pm.registerEvents(this, this);
  103.         getCommand("environment").setExecutor(this);
  104.         registeredStuff=true;
  105.     }
  106.  
  107.     public static void log(String msg)
  108.     {
  109.         instance.getLogger().log(Level.INFO, msg);
  110.     }
  111.  
  112.     public static void reload()
  113.     {
  114.         instance.onDisable();
  115.         instance.onEnable();
  116.     }
  117.  
  118.     private class RunChecks extends BukkitRunnable
  119.     {
  120.         public void run()
  121.         {
  122.             if (RegionManager.isReady())
  123.             {
  124.                 log("Starting region checks...");
  125.                 runChecks.cancel();
  126.                 RegionManager.runChecks();
  127.             }
  128.         }
  129.     }
  130.  
  131.     public static void setPackUrl(String pack, String url)
  132.     {
  133.         getPlugin().getConfig().set(pack.toLowerCase(), url);
  134.         getPlugin().saveConfig();
  135.     }
  136.  
  137.     public static String getPack(String pack)
  138.     {
  139.         return getPlugin().getConfig().getString(pack.toLowerCase(), "");
  140.     }
  141.     @EventHandler
  142.     public void onChange(RegionChangeEvent e){
  143.    
  144.      
  145.     final Region r = e.getRegion();
  146.     final OfflinePlayer player = e.getPlayer();
  147.     final long time = r.getTime();
  148.     final boolean thundering = r.getThundering();
  149.     long ti = player.getPlayer().getPlayerTime();
  150.     UUID uuid = player.getPlayer().getUniqueId();
  151.     final boolean check = bool.get(uuid);
  152.    
  153.     if (other.containsKey(uuid)){
  154.    
  155.     other.replace(uuid, true);
  156.    
  157.    
  158.     }else{
  159.     other.put(uuid, true);
  160.    
  161.     }
  162.    
  163.     new BukkitRunnable(){
  164.     @Override
  165.     public void run(){
  166.    
  167.    
  168.     if (check == true){
  169.     if (r.getWeather().equalsIgnoreCase("sun")){
  170.     player.getPlayer().setPlayerWeather(WeatherType.CLEAR);
  171.     player.getPlayer().setPlayerTime(time, false);
  172.    
  173.    
  174.     if (thundering == true){
  175.      new BukkitRunnable(){
  176.         @Override
  177.         public void run(){
  178.        
  179.         player.getPlayer().playSound(player.getPlayer().getLocation(), Sound.ENTITY_LIGHTNING_BOLT_THUNDER, 1, 1);
  180.        
  181.         if (!player.isOnline()){
  182.         cancel();
  183.        
  184.         }
  185.        
  186.        
  187.         }}.runTaskTimer(Environment.getPlugin(), 60L, 400L);
  188.      
  189.     }
  190.      else{
  191.      
  192.      
  193.      }
  194.  
  195.     }
  196.  
  197.     else{
  198.     player.getPlayer().setPlayerWeather(WeatherType.DOWNFALL);
  199.     player.getPlayer().setPlayerTime(time, false);
  200.    
  201.     if (thundering == true){
  202.      new BukkitRunnable(){
  203.         @Override
  204.         public void run(){
  205.        
  206.         player.getPlayer().playSound(player.getPlayer().getLocation(), Sound.ENTITY_LIGHTNING_BOLT_THUNDER, 1, 1);
  207.        
  208.         if (!player.isOnline()){
  209.         cancel();
  210.        
  211.         }
  212.        
  213.        
  214.         }}.runTaskTimer(Environment.getPlugin(), 60L, 400L);
  215.      
  216.     }
  217.      else{
  218.      
  219.      
  220.      }
  221.    
  222.     }}else{
  223.    
  224.    
  225.     return;
  226.    
  227.     }
  228.    
  229.    
  230.    
  231.    
  232.     }
  233.    
  234.    
  235.    
  236.    
  237.     }.runTaskTimer(this, 20L, 20L);
  238.    
  239.    
  240.    
  241.    
  242.     }
  243.    
  244.     @EventHandler
  245.     public void onJoin(PlayerJoinEvent e){
  246.  
  247.     Player pl = e.getPlayer();
  248.     String r = RegionPlayer.getCurrent(pl);
  249.    
  250.    
  251.     try {
  252.     Region rf = RegionManager.getRegion(pl.getWorld().getName(), r);
  253.     boolean thundering = rf.getThundering();
  254.  
  255.     final OfflinePlayer player = e.getPlayer();
  256.     long time = rf.getTime();
  257.    
  258.     long ti = player.getPlayer().getPlayerTime();
  259.     final UUID uuid = player.getPlayer().getUniqueId();
  260.     boolean check = bool.get(uuid);
  261.    
  262.     if (other.containsKey(uuid)){
  263.    
  264.     other.replace(uuid, false);
  265.    
  266.    
  267.     }else{
  268.     other.put(uuid, false);
  269.    
  270.     }
  271.    
  272.     if (check == true){
  273.     if (rf.getWeather().equalsIgnoreCase("sun")){
  274.     player.getPlayer().setPlayerWeather(WeatherType.CLEAR);
  275.     player.getPlayer().setPlayerTime(time, false);
  276.    
  277.    
  278.     if (thundering == true){
  279.      new BukkitRunnable(){
  280.         @Override
  281.         public void run(){
  282.        
  283.         player.getPlayer().playSound(player.getPlayer().getLocation(), Sound.ENTITY_LIGHTNING_BOLT_THUNDER, 1, 1);
  284.        
  285.         if (!player.isOnline()){
  286.         cancel();
  287.        
  288.         }
  289.        
  290.         if (other.get(uuid) == true){
  291.        
  292.             cancel();
  293.        
  294.        
  295.         }
  296.        
  297.         }}.runTaskTimer(this, 60L, 400L);
  298.      
  299.     }
  300.      else{
  301.      
  302.      
  303.      }
  304.  
  305.     }
  306.  
  307.     else{
  308.     player.getPlayer().setPlayerWeather(WeatherType.DOWNFALL);
  309.     player.getPlayer().setPlayerTime(time, false);
  310.    
  311.     if (thundering == true){
  312.      new BukkitRunnable(){
  313.         @Override
  314.         public void run(){
  315.        
  316.         player.getPlayer().playSound(player.getPlayer().getLocation(), Sound.ENTITY_LIGHTNING_BOLT_THUNDER, 1, 1);
  317.        
  318.         if (other.get(uuid) == true){
  319.        
  320.             cancel();
  321.        
  322.        
  323.         }
  324.        
  325.        
  326.         if (!player.isOnline()){
  327.         cancel();
  328.        
  329.  
  330.         }
  331.        
  332.        
  333.         }}.runTaskTimer(this, 60L, 400L);
  334.      
  335.    
  336.      
  337.      
  338.     }
  339.      else{
  340.      
  341.      
  342.      }
  343.    
  344.     }}else{
  345.    
  346.    
  347.     return;
  348.    
  349.     }
  350.     } catch(Exception ex){
  351.     pl.sendMessage("No region");
  352.     return;
  353.     }
  354.    
  355.    
  356.  
  357.     }
  358.    
  359.    
  360.     @Override
  361.     public boolean onCommand(CommandSender cs, Command cmd, String c, String[] a)
  362.     {
  363.    
  364.        
  365.         // environment create NameRegion time weather true|false
  366.        
  367.         if (cs instanceof Player){
  368.            Player player = (Player) cs;
  369.             if (a.length == 0){
  370.            
  371.             player.sendMessage(ChatColor.GREEN.BOLD+"[Environment] :"+ChatColor.GREEN+"/env create | modify | delete | list"
  372.             +"/env create NameRegion time weather true|false");
  373.             return true;
  374.             }
  375.            
  376.             if (a[0].equalsIgnoreCase("create")){
  377.                if (player.hasPermission("environment.admin")){
  378.                if (a.length == 5){
  379.                System.out.println("5");
  380.                if (WEUtil.worldEditExists() && WEUtil.hasSelection(player))
  381.                 {
  382.                      System.out.println("6");
  383.                     if(regions.contains(a[1])){
  384.                    
  385.                      player.sendMessage(ChatColor.GREEN.BOLD+"[Environment] :"+ChatColor.GREEN+"Name already used!");
  386.                      return true;
  387.                    
  388.                     }else {
  389.                     System.out.println("7");
  390.                     if (!a[3].equalsIgnoreCase("rain") && !a[3].equalsIgnoreCase("sun")){
  391.                      System.out.println("8");
  392.                     return true;
  393.                     }
  394.                        
  395.                     if (a[3].equalsIgnoreCase("rain")){
  396.                      
  397.                     if (a[4].equalsIgnoreCase("true")){
  398.                      
  399.                     Region r = new Region();
  400.                     r.setName(a[1]);
  401.                     int tim = Integer.parseInt(a[2]);
  402.                     r.setTime(tim);
  403.                     r.setWeather("rain");
  404.                     r.setThundering(true);
  405.                     player.sendMessage(ChatColor.GREEN.BOLD+"[Environment] :"+ChatColor.GREEN+"Setting current selection as region bounds...");
  406.                     RegionUtil.attachRegionBuilder(player, r);
  407.                     WEUtil.setWERegion(player);
  408.                     }else{
  409.                      System.out.println("11");
  410.                         Region r = new Region();
  411.                     r.setName(a[1]);
  412.                     int tim = Integer.parseInt(a[2]);
  413.                     r.setTime(tim);
  414.                     r.setWeather("rain");
  415.                     r.setThundering(false);
  416.                     player.sendMessage(ChatColor.GREEN.BOLD+"[Environment] :"+ChatColor.GREEN+"Setting current selection as region bounds...");
  417.                     RegionUtil.attachRegionBuilder(player, r);
  418.                     WEUtil.setWERegion(player);
  419.                    
  420.                     }
  421.                    
  422.                    
  423.                     }else {
  424.                     if (a[4].equalsIgnoreCase("true")){
  425.                      Region r = new Region();
  426.                     r.setName(a[1]);
  427.                     int tim = Integer.parseInt(a[2]);
  428.                     r.setTime(tim);
  429.                     r.setWeather("sun");
  430.                     r.setThundering(true);
  431.                     player.sendMessage(ChatColor.GREEN.BOLD+"[Environment] :"+ChatColor.GREEN+"Setting current selection as region bounds...");
  432.                     RegionUtil.attachRegionBuilder(player, r);
  433.                     WEUtil.setWERegion(player);
  434.                     }else{
  435.                      Region r = new Region();
  436.                     r.setName(a[1]);
  437.                     int tim = Integer.parseInt(a[2]);
  438.                     r.setTime(tim);
  439.                     r.setWeather("sun");
  440.                     r.setThundering(false);
  441.                     player.sendMessage(ChatColor.GREEN.BOLD+"[Environment] :"+ChatColor.GREEN+"Setting current selection as region bounds...");
  442.                     RegionUtil.attachRegionBuilder(player, r);
  443.                     WEUtil.setWERegion(player);
  444.                    
  445.                     }
  446.                    
  447.                    
  448.                     }    
  449.                    
  450.                  
  451.                     }
  452.  
  453.                
  454.                 }else {
  455.                player.sendMessage(ChatColor.GREEN.BOLD+"[Environment] :"+ChatColor.GREEN+"You have to make a selection first");
  456.                
  457.                }
  458.                    
  459.                    
  460.                    
  461.                    
  462.                }else {
  463.                player.sendMessage(ChatColor.GREEN.BOLD+"[Environment] :"+ChatColor.GREEN+"Not enough argouments");
  464.                }
  465.  
  466.                }else {
  467.                
  468.                player.sendMessage(ChatColor.GREEN.BOLD+"[Environment] :"+ChatColor.GREEN+"No permissions to use this command!");
  469.                
  470.                }
  471.            
  472.            
  473.            
  474.            
  475.            
  476.             }
  477.             if (a[0].equalsIgnoreCase("on")){
  478.             UUID uuid = player.getUniqueId();
  479.             player.sendMessage(ChatColor.GREEN.BOLD+"[Environment] :"+ChatColor.GREEN+"Fellowship environment active");
  480.             if (bool.containsKey(uuid)){
  481.             bool.remove(uuid, true);
  482.            
  483.             }else {
  484.            
  485.             bool.put(uuid, true);
  486.            
  487.             }
  488.            
  489.            
  490.            
  491.             return true;
  492.            
  493.             }if (a[0].equalsIgnoreCase("off")){
  494.             UUID uuid = player.getUniqueId();
  495.             player.sendMessage(ChatColor.GREEN.BOLD+"[Environment] :"+ChatColor.GREEN+"Fellowship environment inactive");
  496.             if (bool.containsKey(uuid)){
  497.             bool.remove(uuid, false);
  498.            
  499.             }else {
  500.            
  501.             bool.put(uuid, false);
  502.            
  503.             }return true;
  504.             } if (a[0].equalsIgnoreCase("delete") && player.hasPermission("environment.admin"))
  505.         {
  506.             File rf = FileUtil.getRegionToLoad(a[1]);
  507.             if(rf!=null) {
  508.                 rf.delete();
  509.                 regions.remove(a[1]);
  510.                 player.sendMessage(ChatColor.GREEN.BOLD+"[Environment] :"+ChatColor.GREEN+"Deleting region "+a[1]+" ...");
  511.                 Environment.reload();
  512.                 return true;
  513.             } else {
  514.                 player.sendMessage(ChatColor.GREEN.BOLD+"[Environment] :"+ChatColor.GREEN+"Region could not be found, searching for possible matches:");
  515.                 player.sendMessage(FileUtil.getMatches(a[1]));
  516.                 return true;
  517.             }
  518.         } if (a[0].equalsIgnoreCase("list") && player.hasPermission("environment.admin"))
  519.         {
  520.             player.sendMessage(ChatColor.GREEN.BOLD+"[Environment] :"+ChatColor.GREEN+"Environment regions: ");
  521.             for(Region region:RegionManager.getRegions()) {
  522.                 player.sendMessage(ChatColor.GREEN.BOLD+"[Environment] :"+ChatColor.GREEN+"    - "+region.getWorldName()+"-"+region.getName());
  523.             }
  524.             return true;
  525.         }
  526.            
  527.  
  528.        
  529.         }else{
  530.         System.out.println("You can't use this command in console");
  531.        
  532.        
  533.         }
  534.  
  535.    
  536.     return false;
  537.     }
  538.    
  539.    
  540.    
  541.    
  542.  
  543.  
  544.  
  545.  
  546. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement