mirror of
https://github.com/ColdeZhang/Dominion.git
synced 2025-03-08 17:06:47 +08:00
增加了箭矢工具选区功能
This commit is contained in:
parent
9a4d2a462c
commit
62e89173a2
2
pom.xml
2
pom.xml
@ -6,7 +6,7 @@
|
||||
|
||||
<groupId>cn.lunadeer</groupId>
|
||||
<artifactId>Dominion</artifactId>
|
||||
<version>1.2-beta</version>
|
||||
<version>1.3-beta</version>
|
||||
<packaging>jar</packaging>
|
||||
|
||||
<name>Dominion</name>
|
||||
|
@ -2,6 +2,7 @@ package cn.lunadeer.dominion;
|
||||
|
||||
import cn.lunadeer.dominion.events.EnvironmentEvents;
|
||||
import cn.lunadeer.dominion.events.PlayerEvents;
|
||||
import cn.lunadeer.dominion.events.SelectPointEvents;
|
||||
import cn.lunadeer.dominion.utils.ConfigManager;
|
||||
import cn.lunadeer.dominion.utils.Database;
|
||||
import cn.lunadeer.dominion.utils.XLogger;
|
||||
@ -25,6 +26,7 @@ public final class Dominion extends JavaPlugin {
|
||||
|
||||
Bukkit.getPluginManager().registerEvents(new PlayerEvents(), this);
|
||||
Bukkit.getPluginManager().registerEvents(new EnvironmentEvents(), this);
|
||||
Bukkit.getPluginManager().registerEvents(new SelectPointEvents(), this);
|
||||
Objects.requireNonNull(Bukkit.getPluginCommand("dominion")).setExecutor(new Commands());
|
||||
|
||||
XLogger.info("领地插件已启动");
|
||||
@ -47,5 +49,5 @@ public final class Dominion extends JavaPlugin {
|
||||
public static Dominion instance;
|
||||
public static ConfigManager config;
|
||||
public static Connection dbConnection;
|
||||
public static Map<UUID, List<Location>> pointsSelect = new HashMap<>();
|
||||
public static Map<UUID, Map<Integer, Location>> pointsSelect = new HashMap<>();
|
||||
}
|
||||
|
@ -8,7 +8,9 @@ import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public class Apis {
|
||||
public static Player playerOnly(CommandSender sender) {
|
||||
@ -40,9 +42,9 @@ public class Apis {
|
||||
Location location = player.getLocation();
|
||||
Location location1 = new Location(location.getWorld(), location.getX() - size, location.getY() - size, location.getZ() - size);
|
||||
Location location2 = new Location(location.getWorld(), location.getX() + size, location.getY() + size, location.getZ() + size);
|
||||
List<Location> points = new ArrayList<>();
|
||||
points.add(location1);
|
||||
points.add(location2);
|
||||
Map<Integer, Location> points = new HashMap<>();
|
||||
points.put(0, location1);
|
||||
points.put(1, location2);
|
||||
Dominion.pointsSelect.put(player.getUniqueId(), points);
|
||||
}
|
||||
|
||||
|
@ -8,7 +8,7 @@ import org.bukkit.Location;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import static cn.lunadeer.dominion.commands.Apis.*;
|
||||
|
||||
@ -27,9 +27,9 @@ public class DominionOperate {
|
||||
Notification.error(sender, "用法: /dominion create <领地名称>");
|
||||
return;
|
||||
}
|
||||
List<Location> points = Dominion.pointsSelect.get(player.getUniqueId());
|
||||
if (points == null || points.size() != 2) {
|
||||
Notification.error(sender, "请先使用木棍选择领地的对角线两点,或使用 /dominion auto_create <领地名称> 创建自动领地");
|
||||
Map<Integer, Location> points = Dominion.pointsSelect.get(player.getUniqueId());
|
||||
if (points == null || points.get(0) == null || points.get(1) == null) {
|
||||
Notification.error(sender, "请先使用箭矢选择领地的对角线两点,或使用 /dominion auto_create <领地名称> 创建自动领地");
|
||||
return;
|
||||
}
|
||||
String name = args[1];
|
||||
@ -54,9 +54,9 @@ public class DominionOperate {
|
||||
Notification.error(sender, "用法: /dominion create_sub <子领地名称> [父领地名称]");
|
||||
return;
|
||||
}
|
||||
List<Location> points = Dominion.pointsSelect.get(player.getUniqueId());
|
||||
if (points == null || points.size() != 2) {
|
||||
Notification.error(sender, "请先使用木棍选择子领地的对角线两点,或使用 /dominion auto_create_sub <子领地名称> [父领地名称] 创建自动子领地");
|
||||
Map<Integer, Location> points = Dominion.pointsSelect.get(player.getUniqueId());
|
||||
if (points == null || points.get(0) == null || points.get(1) == null) {
|
||||
Notification.error(sender, "请先使用箭矢选择子领地的对角线两点,或使用 /dominion auto_create_sub <子领地名称> [父领地名称] 创建自动子领地");
|
||||
return;
|
||||
}
|
||||
if (args.length == 2) {
|
||||
|
@ -0,0 +1,74 @@
|
||||
package cn.lunadeer.dominion.events;
|
||||
|
||||
import cn.lunadeer.dominion.Dominion;
|
||||
import cn.lunadeer.dominion.utils.Notification;
|
||||
import cn.lunadeer.dominion.utils.XLogger;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.entity.NPC;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.block.Action;
|
||||
import org.bukkit.event.player.PlayerInteractEvent;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
|
||||
public class SelectPointEvents implements Listener {
|
||||
@EventHandler(priority = EventPriority.HIGHEST)
|
||||
public void selectPoint(PlayerInteractEvent event) {
|
||||
Player player = event.getPlayer();
|
||||
ItemStack item = player.getInventory().getItemInMainHand();
|
||||
|
||||
if (item.getType() != Material.ARROW) {
|
||||
return;
|
||||
}
|
||||
Block block = event.getClickedBlock();
|
||||
Action action = event.getAction();
|
||||
if (block == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
Map<Integer, Location> points = Dominion.pointsSelect.get(player.getUniqueId());
|
||||
if (points == null) {
|
||||
points = new HashMap<>();
|
||||
}
|
||||
|
||||
if (action == Action.LEFT_CLICK_BLOCK) {
|
||||
event.setCancelled(true);
|
||||
Notification.info(player, "已选择第一个点: " + block.getX() + " " + block.getY() + " " + block.getZ());
|
||||
points.put(0, block.getLocation());
|
||||
} else if (action == Action.RIGHT_CLICK_BLOCK) {
|
||||
event.setCancelled(true);
|
||||
Notification.info(player, "已选择第二个点: " + block.getX() + " " + block.getY() + " " + block.getZ());
|
||||
points.put(1, block.getLocation());
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
|
||||
if (points.size() == 2) {
|
||||
Notification.info(player, "已选择两个点,可以使用 /dominion create <领地名称> 创建领地");
|
||||
Notification.info(player, "尺寸为 " +
|
||||
Math.abs(points.get(1).getX() - points.get(0).getX()) + " x " +
|
||||
Math.abs(points.get(1).getY() - points.get(0).getY()) + " x " +
|
||||
Math.abs(points.get(1).getZ() - points.get(0).getZ()));
|
||||
Notification.info(player, "面积为 " +
|
||||
Math.abs(points.get(1).getX() - points.get(0).getX()) *
|
||||
Math.abs(points.get(1).getZ() - points.get(0).getZ()));
|
||||
Notification.info(player, "高度为 " +
|
||||
Math.abs(points.get(1).getY() - points.get(0).getY()));
|
||||
Notification.info(player, "体积为 " +
|
||||
Math.abs(points.get(1).getX() - points.get(0).getX()) *
|
||||
Math.abs(points.get(1).getY() - points.get(0).getY()) *
|
||||
Math.abs(points.get(1).getZ() - points.get(0).getZ()));
|
||||
}
|
||||
Dominion.pointsSelect.put(player.getUniqueId(), points);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user