Advertisement
a333c

Untitled

Aug 11th, 2017
368
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.58 KB | None | 0 0
  1. /*
  2.  * To change this license header, choose License Headers in Project Properties.
  3.  * To change this template file, choose Tools | Templates
  4.  * and open the template in the editor.
  5.  */
  6. package jp.hikahikaru17.dev;
  7.  
  8. import org.bukkit.Bukkit;
  9. import org.bukkit.ChatColor;
  10. import org.bukkit.Location;
  11. import org.bukkit.Material;
  12. import org.bukkit.block.Block;
  13. import org.bukkit.command.Command;
  14. import org.bukkit.command.CommandSender;
  15. import org.bukkit.command.CommandExecutor;
  16. import org.bukkit.entity.Player;
  17. import org.bukkit.plugin.Plugin;
  18. import org.bukkit.util.Vector;
  19. import org.bukkit.plugin.java.JavaPlugin;
  20. import com.sk89q.worldguard.bukkit.WorldGuardPlugin;
  21. import com.sk89q.worldguard.protection.ApplicableRegionSet;
  22. import static com.sk89q.worldguard.bukkit.BukkitUtil.*;
  23. import net.coreprotect.CoreProtect;
  24. import net.coreprotect.CoreProtectAPI;
  25. //import com.sk89q.worldedit.bukkit.WorldEditPlugin;
  26. import com.sk89q.worldedit.*;
  27.  
  28. /**
  29.  *
  30.  * @author Hikahikaru17
  31.  */
  32. public class easyPlaceCMD extends JavaPlugin implements CommandExecutor{
  33.  
  34.     /**
  35.     * 起動時処理
  36.     */
  37.     @Override
  38.     public void onEnable() {
  39.         getLogger().info("test enable");
  40.         getCommand("cmd").setExecutor(this);
  41.         //getCommand("cmb").setExecutor(this);
  42.         getCommand("test").setExecutor(this);
  43.     }
  44.  
  45.     /**
  46.     * 終了時処理
  47.     */
  48.     @Override
  49.     public void onDisable() {
  50.         getLogger().info("test disable");
  51.     }
  52.  
  53.     /**
  54.     * コマンド実行処理
  55.     */
  56.     /**
  57.     * コマンド実行処理
  58.     * @param sender 送信者
  59.     * @param cmd コマンド名
  60.     * @param commandLabel
  61.     * @param args
  62.     * @return
  63.     */
  64.     private WorldGuardPlugin getWorldGuard() {
  65.         Plugin plugin = getServer().getPluginManager().getPlugin("WorldGuard");
  66.         // WorldGuard may not be loaded
  67.         if (plugin == null || !(plugin instanceof WorldGuardPlugin)) {
  68.             return null; // Maybe you want throw an exception instead
  69.         }
  70.         return (WorldGuardPlugin) plugin;
  71.     }
  72.     private CoreProtectAPI getCoreProtect() {
  73.     Plugin plugin = getServer().getPluginManager().getPlugin("CoreProtect");
  74.      
  75.     // Check that CoreProtect is loaded
  76.         if (plugin == null || !(plugin instanceof CoreProtect)) {
  77.             return null;
  78.         }
  79.        
  80.     // Check that the API is enabled
  81.         CoreProtectAPI CoreProtect = ((CoreProtect)plugin).getAPI();
  82.         if (CoreProtect.isEnabled()==false){
  83.             return null;
  84.         }
  85.  
  86.     // Check that a compatible version of the API is loaded
  87.         if (CoreProtect.APIVersion() < 4){
  88.             return null;
  89.         }        
  90.     return CoreProtect;
  91.     }
  92.    
  93.     @Override
  94.     public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) {
  95.         String cmdname;
  96.         cmdname = cmd.getName();
  97.         // test コマンドの処理
  98.         if(cmdname.equalsIgnoreCase ("cmd")) {
  99.         // プレイヤーが /cmd を実行すると、この部分の処理が実行されます...
  100.             if (!(sender instanceof Player)) { // コンソールから
  101.                 sender.sendMessage("このコマンドはゲーム内から実行してください。");
  102.                 return true;
  103.             } else { // プレイヤーから
  104.                 if (args.length > 0 && args[0] == "help") {
  105.                     sender.sendMessage(ChatColor.GOLD+"プレイヤーの座標と同じ座標にコマンドブロックを設置します。");
  106.                     return true;
  107.                 }
  108.                 Player player = (Player) sender;
  109.                 Location loc = player.getLocation();
  110.                 if (getWorldGuard().canBuild(player,loc)) { //保護されてない
  111.                     loc.getBlock().setType(Material.COMMAND);
  112.                     CoreProtectAPI cp = getCoreProtect();
  113.                     Worldedit we = getWorldEdit();
  114.                     String rg = String.format("owned_by_%s_at_%d_%d_%d",player.getName(),loc.getBlockX(),loc.getBlockY(),loc.getBlockZ());
  115.                     getLogger().info(String.format("保護名:%s",rg));
  116.                     if (cp != null) {
  117.                         cp.logPlacement(player.getName(), loc, Material.COMMAND,loc.getBlock().getData());
  118.                         getLogger().info(String.format("CoreProtectのデータベースに書き込むことに成功:%s placed %s at %d,%d,%d",player.getName(),"command",loc.getBlockX(),loc.getBlockY(),loc.getBlockZ())); 
  119.                     }
  120.                 } else {
  121.                     sender.sendMessage(ChatColor.RED+"他人の保護内のため配置できません");
  122.                 }
  123.                 return true;
  124.  
  125.                 // TODO: Write place log on CoreProtect
  126.             }
  127.         } else if(cmdname.equalsIgnoreCase ("uncmd")){
  128.             if (!(sender instanceof Player)) {
  129.                 sender.sendMessage("このコマンドはゲーム内から実行してください。");
  130.                 return true;
  131.             }
  132.             if (args.length == 0 || !"delete".equals(args[0])) {
  133.                 sender.sendMessage("削除するには"+ChatColor.RED+"/uncmd delete");
  134.                 return true;
  135.             }
  136.             Player player = (Player) sender;
  137.             Location loc = player.getLocation();
  138.             if (args.length > 1) {
  139.                 sender.sendMessage(ChatColor.RED+"引数が多すぎます");
  140.                 return true;
  141.             }
  142.             if (Material.COMMAND != loc.getBlock().getType()){
  143.                 sender.sendMessage(ChatColor.RED+"コマンドブロックが見つかりません");
  144.                 return true;
  145.             } else {
  146.                 if (getWorldGuard().canBuild(player,loc)) { //保護されてない
  147.                     loc.getBlock().setType(Material.AIR);
  148.                     CoreProtectAPI cp = getCoreProtect();
  149.                     if (cp != null) { //撤去ログ
  150.                         cp.logRemoval(player.getName(), loc, Material.COMMAND,loc.getBlock().getData());
  151.                         getLogger().info(String.format("CoreProtectのデータベースに書き込むことに成功:%s removed %s at %d,%d,%d",player.getName(),"command",loc.getBlockX(),loc.getBlockY(),loc.getBlockZ()));
  152.                     }
  153.                 } else {
  154.                     sender.sendMessage(ChatColor.RED+"他人の保護内のため撤去できません");
  155.                 }
  156.                 return true;
  157.             }
  158.         }
  159.         return false;
  160.     }
  161.         // 該当するコマンド無し
  162. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement