Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * To change this license header, choose License Headers in Project Properties.
- * To change this template file, choose Tools | Templates
- * and open the template in the editor.
- */
- package jp.hikahikaru17.dev;
- import org.bukkit.Bukkit;
- import org.bukkit.ChatColor;
- import org.bukkit.Location;
- import org.bukkit.Material;
- import org.bukkit.block.Block;
- import org.bukkit.command.Command;
- import org.bukkit.command.CommandSender;
- import org.bukkit.command.CommandExecutor;
- import org.bukkit.entity.Player;
- import org.bukkit.plugin.Plugin;
- import org.bukkit.util.Vector;
- import org.bukkit.plugin.java.JavaPlugin;
- import com.sk89q.worldguard.bukkit.WorldGuardPlugin;
- import com.sk89q.worldguard.protection.ApplicableRegionSet;
- import static com.sk89q.worldguard.bukkit.BukkitUtil.*;
- import net.coreprotect.CoreProtect;
- import net.coreprotect.CoreProtectAPI;
- //import com.sk89q.worldedit.bukkit.WorldEditPlugin;
- import com.sk89q.worldedit.*;
- /**
- *
- * @author Hikahikaru17
- */
- public class easyPlaceCMD extends JavaPlugin implements CommandExecutor{
- /**
- * 起動時処理
- */
- @Override
- public void onEnable() {
- getLogger().info("test enable");
- getCommand("cmd").setExecutor(this);
- //getCommand("cmb").setExecutor(this);
- getCommand("test").setExecutor(this);
- }
- /**
- * 終了時処理
- */
- @Override
- public void onDisable() {
- getLogger().info("test disable");
- }
- /**
- * コマンド実行処理
- */
- /**
- * コマンド実行処理
- * @param sender 送信者
- * @param cmd コマンド名
- * @param commandLabel
- * @param args
- * @return
- */
- private WorldGuardPlugin getWorldGuard() {
- Plugin plugin = getServer().getPluginManager().getPlugin("WorldGuard");
- // WorldGuard may not be loaded
- if (plugin == null || !(plugin instanceof WorldGuardPlugin)) {
- return null; // Maybe you want throw an exception instead
- }
- return (WorldGuardPlugin) plugin;
- }
- private CoreProtectAPI getCoreProtect() {
- Plugin plugin = getServer().getPluginManager().getPlugin("CoreProtect");
- // Check that CoreProtect is loaded
- if (plugin == null || !(plugin instanceof CoreProtect)) {
- return null;
- }
- // Check that the API is enabled
- CoreProtectAPI CoreProtect = ((CoreProtect)plugin).getAPI();
- if (CoreProtect.isEnabled()==false){
- return null;
- }
- // Check that a compatible version of the API is loaded
- if (CoreProtect.APIVersion() < 4){
- return null;
- }
- return CoreProtect;
- }
- @Override
- public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) {
- String cmdname;
- cmdname = cmd.getName();
- // test コマンドの処理
- if(cmdname.equalsIgnoreCase ("cmd")) {
- // プレイヤーが /cmd を実行すると、この部分の処理が実行されます...
- if (!(sender instanceof Player)) { // コンソールから
- sender.sendMessage("このコマンドはゲーム内から実行してください。");
- return true;
- } else { // プレイヤーから
- if (args.length > 0 && args[0] == "help") {
- sender.sendMessage(ChatColor.GOLD+"プレイヤーの座標と同じ座標にコマンドブロックを設置します。");
- return true;
- }
- Player player = (Player) sender;
- Location loc = player.getLocation();
- if (getWorldGuard().canBuild(player,loc)) { //保護されてない
- loc.getBlock().setType(Material.COMMAND);
- CoreProtectAPI cp = getCoreProtect();
- Worldedit we = getWorldEdit();
- String rg = String.format("owned_by_%s_at_%d_%d_%d",player.getName(),loc.getBlockX(),loc.getBlockY(),loc.getBlockZ());
- getLogger().info(String.format("保護名:%s",rg));
- if (cp != null) {
- cp.logPlacement(player.getName(), loc, Material.COMMAND,loc.getBlock().getData());
- getLogger().info(String.format("CoreProtectのデータベースに書き込むことに成功:%s placed %s at %d,%d,%d",player.getName(),"command",loc.getBlockX(),loc.getBlockY(),loc.getBlockZ()));
- }
- } else {
- sender.sendMessage(ChatColor.RED+"他人の保護内のため配置できません");
- }
- return true;
- // TODO: Write place log on CoreProtect
- }
- } else if(cmdname.equalsIgnoreCase ("uncmd")){
- if (!(sender instanceof Player)) {
- sender.sendMessage("このコマンドはゲーム内から実行してください。");
- return true;
- }
- if (args.length == 0 || !"delete".equals(args[0])) {
- sender.sendMessage("削除するには"+ChatColor.RED+"/uncmd delete");
- return true;
- }
- Player player = (Player) sender;
- Location loc = player.getLocation();
- if (args.length > 1) {
- sender.sendMessage(ChatColor.RED+"引数が多すぎます");
- return true;
- }
- if (Material.COMMAND != loc.getBlock().getType()){
- sender.sendMessage(ChatColor.RED+"コマンドブロックが見つかりません");
- return true;
- } else {
- if (getWorldGuard().canBuild(player,loc)) { //保護されてない
- loc.getBlock().setType(Material.AIR);
- CoreProtectAPI cp = getCoreProtect();
- if (cp != null) { //撤去ログ
- cp.logRemoval(player.getName(), loc, Material.COMMAND,loc.getBlock().getData());
- getLogger().info(String.format("CoreProtectのデータベースに書き込むことに成功:%s removed %s at %d,%d,%d",player.getName(),"command",loc.getBlockX(),loc.getBlockY(),loc.getBlockZ()));
- }
- } else {
- sender.sendMessage(ChatColor.RED+"他人の保護内のため撤去できません");
- }
- return true;
- }
- }
- return false;
- }
- // 該当するコマンド無し
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement