diff --git a/pom.xml b/pom.xml index 36c80f6..5df5e24 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ com.frontleaves ChainMining - 1.2-SNAPSHOT + 1.3-SNAPSHOT jar chainMining diff --git a/src/main/java/com/frontleaves/chainmining/ChainMining.java b/src/main/java/com/frontleaves/chainmining/ChainMining.java index 5b7001f..73d00d0 100644 --- a/src/main/java/com/frontleaves/chainmining/ChainMining.java +++ b/src/main/java/com/frontleaves/chainmining/ChainMining.java @@ -2,6 +2,7 @@ package com.frontleaves.chainmining; import com.frontleaves.chainmining.commands.ChangeToUse; import com.frontleaves.chainmining.commands.PluginMenu; +import com.frontleaves.chainmining.listeners.AutoListener; import com.frontleaves.chainmining.listeners.CutTreeListener; import com.frontleaves.chainmining.listeners.MineralsListener; import com.frontleaves.chainmining.listeners.PlayerJoinServerListener; @@ -15,9 +16,11 @@ import java.util.Objects; */ public final class ChainMining extends JavaPlugin { - public static String prefix = "§8[§bFYCM§8]"; + public static final String PREFIX = "§8[§bFYCM§8]§r"; + public static final String VERSION = "v1.3-SNAPSHOT"; - public static HashMap> playerList = new HashMap<>(); + public static HashMap>> playerList = new HashMap<>(); + public static HashMap> playerData = new HashMap<>(); @Override public void onEnable() { @@ -28,6 +31,7 @@ public final class ChainMining extends JavaPlugin { getServer().getPluginManager().registerEvents(new PlayerJoinServerListener(), this); getServer().getPluginManager().registerEvents(new MineralsListener(), this); getServer().getPluginManager().registerEvents(new CutTreeListener(), this); + getServer().getPluginManager().registerEvents(new AutoListener(), this); // Plugin startup logic getLogger().info("插件启动成功"); } diff --git a/src/main/java/com/frontleaves/chainmining/commands/ChangeToUse.java b/src/main/java/com/frontleaves/chainmining/commands/ChangeToUse.java index 336ffcd..4db3c7d 100644 --- a/src/main/java/com/frontleaves/chainmining/commands/ChangeToUse.java +++ b/src/main/java/com/frontleaves/chainmining/commands/ChangeToUse.java @@ -1,15 +1,17 @@ package com.frontleaves.chainmining.commands; import com.frontleaves.chainmining.ChainMining; -import org.bukkit.command.Command; -import org.bukkit.command.CommandExecutor; -import org.bukkit.command.CommandSender; +import org.bukkit.command.*; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.util.ArrayList; +import java.util.List; /** * @author 锋楪技术(深圳)有限公司 */ -public class ChangeToUse implements CommandExecutor { +public class ChangeToUse implements CommandExecutor, TabExecutor, TabCompleter { @Override public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) { if ("fykg".equalsIgnoreCase(command.getName())) { @@ -18,57 +20,144 @@ public class ChangeToUse implements CommandExecutor { case "cm": switch (args[1]) { case "on": - ChainMining.playerList.get(sender.getName()).put("chainMining", true); - sender.sendMessage(ChainMining.prefix + "§6 连锁挖矿设置为§2开启"); + ChainMining.playerData.get(sender.getName()).put("chainMining", true); + ChainMining.playerData.get(sender.getName()).put("auto", false); + ChainMining.playerData.get(sender.getName()).put("road", false); + sender.sendMessage(ChainMining.PREFIX + "§6 连锁挖矿设置为§2开启"); break; case "off": - ChainMining.playerList.get(sender.getName()).put("chainMining", false); - sender.sendMessage(ChainMining.prefix + "§6 连锁挖矿设置为§c关闭"); + ChainMining.playerData.get(sender.getName()).put("chainMining", false); + ChainMining.playerData.get(sender.getName()).put("auto", false); + ChainMining.playerData.get(sender.getName()).put("road", false); + sender.sendMessage(ChainMining.PREFIX + "§6 连锁挖矿设置为§c关闭"); break; case "toggle": - if (ChainMining.playerList.get(sender.getName()).get("chainMining")) { - ChainMining.playerList.get(sender.getName()).put("chainMining", false); - sender.sendMessage(ChainMining.prefix + "§6 连锁挖矿切换为§c关闭"); + if (ChainMining.playerData.get(sender.getName()).get("chainMining")) { + ChainMining.playerData.get(sender.getName()).put("chainMining", false); + ChainMining.playerData.get(sender.getName()).put("auto", false); + ChainMining.playerData.get(sender.getName()).put("road", false); + sender.sendMessage(ChainMining.PREFIX + "§6 连锁挖矿切换为§c关闭"); } else { - ChainMining.playerList.get(sender.getName()).put("chainMining", true); - sender.sendMessage(ChainMining.prefix + "§6 连锁挖矿切换为§2开启"); + ChainMining.playerData.get(sender.getName()).put("chainMining", true); + ChainMining.playerData.get(sender.getName()).put("auto", false); + ChainMining.playerData.get(sender.getName()).put("road", false); + sender.sendMessage(ChainMining.PREFIX + "§6 连锁挖矿切换为§2开启"); } break; default: - sender.sendMessage(ChainMining.prefix + "§c 参数错误"); + sender.sendMessage(ChainMining.PREFIX + "§c 参数错误"); break; } break; case "tr": switch (args[1]) { case "on": - ChainMining.playerList.get(sender.getName()).put("tree", true); - sender.sendMessage(ChainMining.prefix + "§6 快速砍树设置为§2开启"); + ChainMining.playerData.get(sender.getName()).put("tree", true); + ChainMining.playerData.get(sender.getName()).put("auto", false); + ChainMining.playerData.get(sender.getName()).put("road", false); + sender.sendMessage(ChainMining.PREFIX + "§6 快速砍树设置为§2开启"); break; case "off": - ChainMining.playerList.get(sender.getName()).put("tree", false); - sender.sendMessage(ChainMining.prefix + "§6 快速砍树设置为§c关闭"); + ChainMining.playerData.get(sender.getName()).put("tree", false); + ChainMining.playerData.get(sender.getName()).put("auto", false); + ChainMining.playerData.get(sender.getName()).put("road", false); + sender.sendMessage(ChainMining.PREFIX + "§6 快速砍树设置为§c关闭"); break; case "toggle": - if (ChainMining.playerList.get(sender.getName()).get("tree")) { - ChainMining.playerList.get(sender.getName()).put("tree", false); - sender.sendMessage(ChainMining.prefix + "§6 快速砍树切换为§c关闭"); + if (ChainMining.playerData.get(sender.getName()).get("tree")) { + ChainMining.playerData.get(sender.getName()).put("tree", false); + ChainMining.playerData.get(sender.getName()).put("auto", false); + ChainMining.playerData.get(sender.getName()).put("road", false); + sender.sendMessage(ChainMining.PREFIX + "§6 快速砍树切换为§c关闭"); } else { - ChainMining.playerList.get(sender.getName()).put("tree", true); - sender.sendMessage(ChainMining.prefix + "§6 快速砍树切换为§2开启"); + ChainMining.playerData.get(sender.getName()).put("tree", true); + ChainMining.playerData.get(sender.getName()).put("auto", false); + ChainMining.playerData.get(sender.getName()).put("road", false); + sender.sendMessage(ChainMining.PREFIX + "§6 快速砍树切换为§2开启"); } break; default: - sender.sendMessage(ChainMining.prefix + "§c 参数错误"); + sender.sendMessage(ChainMining.PREFIX + "§c 参数错误"); break; } break; + case "auto": + case "set": + // 执行操作 + ChainMining.playerData.get(sender.getName()).put("auto", true); + ChainMining.playerData.get(sender.getName()).put("tree", false); + ChainMining.playerData.get(sender.getName()).put("chainMining", false); + ChainMining.playerData.get(sender.getName()).put("road", false); + // 设置范围 + if ("auto".equals(args[0])) { + ChainMining.playerList.get(sender.getName()).get("typeAuto").put("length", 2); + ChainMining.playerList.get(sender.getName()).get("typeAuto").put("width", 2); + ChainMining.playerList.get(sender.getName()).get("typeAuto").put("height", 1); + sender.sendMessage(ChainMining.PREFIX + "§6 快速破坏已开启§e(其他破坏方式已关闭)"); + } else { + boolean returnInfo = false; + if (!args[1].isEmpty() && Integer.parseInt(args[1]) >= 1 && Integer.parseInt(args[1]) <= 5) { + ChainMining.playerList.get(sender.getName()).get("typeAuto").put("length", Integer.valueOf(args[1])); + } else { + ChainMining.playerList.get(sender.getName()).get("typeAuto").put("length", 1); + returnInfo = true; + } + if (!args[2].isEmpty() && Integer.parseInt(args[2]) >= 1 && Integer.parseInt(args[2]) <= 5) { + ChainMining.playerList.get(sender.getName()).get("typeAuto").put("height", Integer.valueOf(args[1])); + } else { + ChainMining.playerList.get(sender.getName()).get("typeAuto").put("height", 1); + returnInfo = true; + } + if (!args[3].isEmpty() && Integer.parseInt(args[3]) >= 1 && Integer.parseInt(args[3]) <= 5) { + ChainMining.playerList.get(sender.getName()).get("typeAuto").put("width", Integer.valueOf(args[1])); + } else { + ChainMining.playerList.get(sender.getName()).get("typeAuto").put("width", 1); + returnInfo = true; + } + sender.sendMessage(ChainMining.PREFIX + "§6 自定义快速破坏已开启§e(其他破坏方式已关闭)"); + if (returnInfo) { + sender.sendMessage(ChainMining.PREFIX + "§c 未补全或值小于 1 部分已默认设置为 1 ,最大不可超过 5"); + } + } + break; + case "road": + // 执行操作 + ChainMining.playerData.get(sender.getName()).put("road", true); + ChainMining.playerData.get(sender.getName()).put("auto", false); + ChainMining.playerData.get(sender.getName()).put("tree", false); + ChainMining.playerData.get(sender.getName()).put("chainMining", false); + sender.sendMessage(ChainMining.PREFIX + "§6 道路模式已开启§e(其他破坏方式已关闭)"); + break; default: - sender.sendMessage(ChainMining.prefix + "§c 参数不正确"); + sender.sendMessage(ChainMining.PREFIX + "§c 参数不正确"); break; } } } return true; } + + @Nullable + @Override + public List onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) { + List tab = new ArrayList<>(); + if (args.length == 1) { + tab.add("cm"); + tab.add("tr"); + tab.add("auto"); + tab.add("road"); + tab.add("set"); + } else if (args.length == 2 && ("cm".equals(args[0]) || "tr".equals(args[0]))) { + tab.add("on"); + tab.add("off"); + tab.add("toggle"); + } else if (args.length == 2 && "set".equals(args[0])) { + tab.add("x"); + } else if (args.length == 3 && "set".equals(args[0])) { + tab.add("y"); + } else if (args.length == 4 && "set".equals(args[0])) { + tab.add("z"); + } + return tab; + } } diff --git a/src/main/java/com/frontleaves/chainmining/commands/PluginMenu.java b/src/main/java/com/frontleaves/chainmining/commands/PluginMenu.java index e2e9490..a95f3b5 100644 --- a/src/main/java/com/frontleaves/chainmining/commands/PluginMenu.java +++ b/src/main/java/com/frontleaves/chainmining/commands/PluginMenu.java @@ -1,15 +1,17 @@ package com.frontleaves.chainmining.commands; import com.frontleaves.chainmining.ChainMining; -import org.bukkit.command.Command; -import org.bukkit.command.CommandExecutor; -import org.bukkit.command.CommandSender; +import org.bukkit.command.*; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.util.ArrayList; +import java.util.List; /** * @author 锋楪技术(深圳)有限公司 */ -public class PluginMenu implements CommandExecutor { +public class PluginMenu implements CommandExecutor, TabExecutor, TabCompleter { @Override public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) { @@ -19,7 +21,7 @@ public class PluginMenu implements CommandExecutor { sender.sendMessage("§2连锁挖矿 §aChainMining"); sender.sendMessage("§1作者:§3锋楪技术§8[§9筱锋xiao_lfeng§8]"); sender.sendMessage("§6使用方法:§e/fycm help"); - sender.sendMessage("§c当前版本:§4v1.2-SNAPSHOT"); + sender.sendMessage("§c当前版本:§4" + ChainMining.VERSION); sender.sendMessage("§7§l§m=]========§2§l 连锁挖矿§a§lChainMining§7§l§m ========[="); } else { if ("help".equals(args[0])) { @@ -74,7 +76,7 @@ public class PluginMenu implements CommandExecutor { sender.sendMessage("§7§l§m=]========§2§l 连锁挖矿§a§lChainMining§7§l§m ========[="); sender.sendMessage("§31 §8/ §32"); } else { - sender.sendMessage(ChainMining.prefix + "§c 超出页面"); + sender.sendMessage(ChainMining.PREFIX + "§c 超出页面"); } } break; @@ -84,22 +86,33 @@ public class PluginMenu implements CommandExecutor { sender.sendMessage("§7§l§m=]========§2§l 连锁挖矿§a§lChainMining§7§l§m ========[="); break; default: - sender.sendMessage(ChainMining.prefix + "§c 参数错误,输入 /fycm 查看指令帮助"); + sender.sendMessage(ChainMining.PREFIX + "§c 参数错误,输入 /fycm 查看指令帮助"); break; } } } else if ("status".equals(args[0])) { sender.sendMessage("§7§l§m=]========§2§l 连锁挖矿§a§lChainMining§7§l§m ========[="); - sender.sendMessage("§6连锁挖矿:§3" + ChainMining.playerList.get(sender.getName()).get("chainMining")); - sender.sendMessage("§6快速砍树:§3" + ChainMining.playerList.get(sender.getName()).get("tree")); - sender.sendMessage("§6全局操作:§3" + ChainMining.playerList.get(sender.getName()).get("auto")); - sender.sendMessage("§6开路模式:§3" + ChainMining.playerList.get(sender.getName()).get("road")); + sender.sendMessage("§6连锁挖矿:§3" + ChainMining.playerData.get(sender.getName()).get("chainMining")); + sender.sendMessage("§6快速砍树:§3" + ChainMining.playerData.get(sender.getName()).get("tree")); + sender.sendMessage("§6全局操作:§3" + ChainMining.playerData.get(sender.getName()).get("auto")); + sender.sendMessage("§6开路模式:§3" + ChainMining.playerData.get(sender.getName()).get("road")); sender.sendMessage("§7§l§m=]========§2§l 连锁挖矿§a§lChainMining§7§l§m ========[="); } else { - sender.sendMessage(ChainMining.prefix + "§c 输入 /fycm 查看指令帮助"); + sender.sendMessage(ChainMining.PREFIX + "§c 输入 /fycm 查看指令帮助"); } } } return true; } + + @Nullable + @Override + public List onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) { + List tab = new ArrayList<>(); + if (args.length == 1) { + tab.add("help"); + tab.add("status"); + } + return tab; + } } diff --git a/src/main/java/com/frontleaves/chainmining/listeners/AutoListener.java b/src/main/java/com/frontleaves/chainmining/listeners/AutoListener.java new file mode 100644 index 0000000..c8e604b --- /dev/null +++ b/src/main/java/com/frontleaves/chainmining/listeners/AutoListener.java @@ -0,0 +1,123 @@ +package com.frontleaves.chainmining.listeners; + +import com.frontleaves.chainmining.ChainMining; +import org.bukkit.GameMode; +import org.bukkit.Location; +import org.bukkit.Material; +import org.bukkit.Sound; +import org.bukkit.block.Block; +import org.bukkit.block.BlockFace; +import org.bukkit.entity.ExperienceOrb; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.block.BlockBreakEvent; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.Damageable; +import org.jetbrains.annotations.NotNull; + +import java.util.Collection; +import java.util.HashMap; +import java.util.Objects; + +/** + * @author 锋楪技术(深圳)有限公司 + */ +public class AutoListener implements Listener { + + private static Material thisBreak; + private static int maxDurability; + private static int damage; + private static int blockNumber; + private static ItemStack playerMainHandTool; + private Location breakLocation; + // 获取方向配置 + private int getX; + private int getY; + private int getZ; + private int relativeDistanceX; + private int relativeDistanceY; + private int relativeDistanceZ; + + @EventHandler + public void autoBreakBlockEvent(BlockBreakEvent blockBreakEvent) { + // 检查玩家的操作是否被打开 + if (ChainMining.playerData.get(blockBreakEvent.getPlayer().getName()).get("auto")) { + // 检查玩家的游戏模式 + if (blockBreakEvent.getPlayer().getGameMode() == GameMode.SURVIVAL) { + // 检查玩家是否蹲下 + if (blockBreakEvent.getPlayer().isSneaking()) { + // 检查玩家当前是否可以破坏物品 + ItemStack getPlayerHandItem = blockBreakEvent.getPlayer().getInventory().getItemInMainHand(); + Collection getCollection = blockBreakEvent.getBlock().getDrops(getPlayerHandItem); + // 如果凋落物不为空 + if (!getCollection.isEmpty()) { + // 前置准备 + playerMainHandTool = blockBreakEvent.getPlayer().getInventory().getItemInMainHand(); + Damageable getPlayerMindHandItem = (Damageable) playerMainHandTool.getItemMeta(); + thisBreak = blockBreakEvent.getBlock().getType(); + blockNumber = 0; + int expToDrop = blockBreakEvent.getExpToDrop(); + breakLocation = blockBreakEvent.getBlock().getLocation(); + HashMap getAutoMap = ChainMining.playerList.get(blockBreakEvent.getPlayer().getName()).get("typeAuto"); + getX = getAutoMap.get("length"); + getY = getAutoMap.get("height"); + getZ = getAutoMap.get("width"); + // 检查玩家手中物品有无耐久 + if (getPlayerMindHandItem != null && getPlayerMindHandItem.hasDamage()) { + maxDurability = blockBreakEvent.getPlayer().getInventory().getItemInMainHand().getType().getMaxDurability(); + damage = getPlayerMindHandItem.getDamage(); + } + // 执行破坏操作 + directionOfOperation(blockBreakEvent.getBlock()); + // 后置操作 + if (getPlayerMindHandItem != null && getPlayerMindHandItem.hasDamage()) { + // 最大耐久检查 + if (maxDurability - damage - blockNumber <= 0) { + if (blockNumber == 0) { + blockBreakEvent.setCancelled(true); + } + blockBreakEvent.getPlayer().getInventory().setItemInMainHand(new ItemStack(Material.AIR)); + blockBreakEvent.getPlayer().playSound(blockBreakEvent.getPlayer().getLocation(), Sound.ENTITY_ITEM_BREAK, 1.0f, 1.0f); + } else { + getPlayerMindHandItem.setDamage(damage + blockNumber); + blockBreakEvent.getPlayer().getInventory().getItemInMainHand().setItemMeta(getPlayerMindHandItem); + Location location = blockBreakEvent.getBlock().getLocation(); + if (expToDrop > 0) { + ExperienceOrb experienceOrb = Objects.requireNonNull(location.getWorld()).spawn(location, ExperienceOrb.class); + experienceOrb.setExperience(expToDrop * blockNumber); + } + } + } + } + } + } + } + } + + private void directionOfOperation(Block getBlock) { + for (BlockFace blockFace : BlockFace.values()) { + Block blocker = getBlock.getRelative(blockFace); + repetitiveStatement(blocker); + } + } + + private void repetitiveStatement(@NotNull Block getBlock) { + while (getBlock.getType() == thisBreak) { + if (maxDurability - damage - blockNumber > 0) { + relativeDistanceX = Math.abs(breakLocation.getBlockX() - getBlock.getLocation().getBlockX()); + relativeDistanceY = Math.abs(breakLocation.getBlockY() - getBlock.getLocation().getBlockY()); + relativeDistanceZ = Math.abs(breakLocation.getBlockZ() - getBlock.getLocation().getBlockZ()); + // 具体执行操作 + if (relativeDistanceX <= getX && relativeDistanceY <= getY && relativeDistanceZ <= getZ) { + getBlock.breakNaturally(playerMainHandTool); + blockNumber++; + directionOfOperation(getBlock); + } else { + break; + } + } else { + break; + } + } + } +} diff --git a/src/main/java/com/frontleaves/chainmining/listeners/CutTreeListener.java b/src/main/java/com/frontleaves/chainmining/listeners/CutTreeListener.java index 0904f9b..5530856 100644 --- a/src/main/java/com/frontleaves/chainmining/listeners/CutTreeListener.java +++ b/src/main/java/com/frontleaves/chainmining/listeners/CutTreeListener.java @@ -37,7 +37,7 @@ public class CutTreeListener implements Listener { @EventHandler public void oakLog(@NotNull BlockBreakEvent blockBreakEvent) { // 检查玩家是否开启 - if (ChainMining.playerList.get(blockBreakEvent.getPlayer().getName()).get("tree")) { + if (ChainMining.playerData.get(blockBreakEvent.getPlayer().getName()).get("tree")) { if (blockBreakEvent.getPlayer().getGameMode() == GameMode.SURVIVAL) { if (blockBreakEvent.getPlayer().isSneaking()) { // 检查能否掉落物品 @@ -75,7 +75,7 @@ public class CutTreeListener implements Listener { @EventHandler public void birchLog(@NotNull BlockBreakEvent blockBreakEvent) { // 检查玩家是否开启 - if (ChainMining.playerList.get(blockBreakEvent.getPlayer().getName()).get("tree")) { + if (ChainMining.playerData.get(blockBreakEvent.getPlayer().getName()).get("tree")) { if (blockBreakEvent.getPlayer().getGameMode() == GameMode.SURVIVAL) { if (blockBreakEvent.getPlayer().isSneaking()) { // 检查能否掉落物品 @@ -113,7 +113,7 @@ public class CutTreeListener implements Listener { @EventHandler public void jungleLog(@NotNull BlockBreakEvent blockBreakEvent) { // 检查玩家是否开启 - if (ChainMining.playerList.get(blockBreakEvent.getPlayer().getName()).get("tree")) { + if (ChainMining.playerData.get(blockBreakEvent.getPlayer().getName()).get("tree")) { if (blockBreakEvent.getPlayer().getGameMode() == GameMode.SURVIVAL) { if (blockBreakEvent.getPlayer().isSneaking()) { // 检查能否掉落物品 @@ -151,7 +151,7 @@ public class CutTreeListener implements Listener { @EventHandler public void acaciaLog(@NotNull BlockBreakEvent blockBreakEvent) { // 检查玩家是否开启 - if (ChainMining.playerList.get(blockBreakEvent.getPlayer().getName()).get("tree")) { + if (ChainMining.playerData.get(blockBreakEvent.getPlayer().getName()).get("tree")) { if (blockBreakEvent.getPlayer().getGameMode() == GameMode.SURVIVAL) { if (blockBreakEvent.getPlayer().isSneaking()) { // 检查能否掉落物品 @@ -189,7 +189,7 @@ public class CutTreeListener implements Listener { @EventHandler public void darkOrkLog(@NotNull BlockBreakEvent blockBreakEvent) { // 检查玩家是否开启 - if (ChainMining.playerList.get(blockBreakEvent.getPlayer().getName()).get("tree")) { + if (ChainMining.playerData.get(blockBreakEvent.getPlayer().getName()).get("tree")) { if (blockBreakEvent.getPlayer().getGameMode() == GameMode.SURVIVAL) { if (blockBreakEvent.getPlayer().isSneaking()) { // 检查能否掉落物品 @@ -227,7 +227,7 @@ public class CutTreeListener implements Listener { @EventHandler public void mangroveLog(@NotNull BlockBreakEvent blockBreakEvent) { // 检查玩家是否开启 - if (ChainMining.playerList.get(blockBreakEvent.getPlayer().getName()).get("tree")) { + if (ChainMining.playerData.get(blockBreakEvent.getPlayer().getName()).get("tree")) { if (blockBreakEvent.getPlayer().getGameMode() == GameMode.SURVIVAL) { if (blockBreakEvent.getPlayer().isSneaking()) { // 检查能否掉落物品 @@ -265,7 +265,7 @@ public class CutTreeListener implements Listener { @EventHandler public void cherryLog(@NotNull BlockBreakEvent blockBreakEvent) { // 检查玩家是否开启 - if (ChainMining.playerList.get(blockBreakEvent.getPlayer().getName()).get("tree")) { + if (ChainMining.playerData.get(blockBreakEvent.getPlayer().getName()).get("tree")) { if (blockBreakEvent.getPlayer().getGameMode() == GameMode.SURVIVAL) { if (blockBreakEvent.getPlayer().isSneaking()) { // 检查能否掉落物品 @@ -303,7 +303,7 @@ public class CutTreeListener implements Listener { @EventHandler public void crimsonStem(@NotNull BlockBreakEvent blockBreakEvent) { // 检查玩家是否开启 - if (ChainMining.playerList.get(blockBreakEvent.getPlayer().getName()).get("tree")) { + if (ChainMining.playerData.get(blockBreakEvent.getPlayer().getName()).get("tree")) { if (blockBreakEvent.getPlayer().getGameMode() == GameMode.SURVIVAL) { if (blockBreakEvent.getPlayer().isSneaking()) { // 检查能否掉落物品 @@ -341,7 +341,7 @@ public class CutTreeListener implements Listener { @EventHandler public void warpedStem(@NotNull BlockBreakEvent blockBreakEvent) { // 检查玩家是否开启 - if (ChainMining.playerList.get(blockBreakEvent.getPlayer().getName()).get("tree")) { + if (ChainMining.playerData.get(blockBreakEvent.getPlayer().getName()).get("tree")) { if (blockBreakEvent.getPlayer().getGameMode() == GameMode.SURVIVAL) { if (blockBreakEvent.getPlayer().isSneaking()) { // 检查能否掉落物品 @@ -379,7 +379,7 @@ public class CutTreeListener implements Listener { @EventHandler public void spruceLog(@NotNull BlockBreakEvent blockBreakEvent) { // 检查玩家是否开启 - if (ChainMining.playerList.get(blockBreakEvent.getPlayer().getName()).get("tree")) { + if (ChainMining.playerData.get(blockBreakEvent.getPlayer().getName()).get("tree")) { if (blockBreakEvent.getPlayer().getGameMode() == GameMode.SURVIVAL) { if (blockBreakEvent.getPlayer().isSneaking()) { // 检查能否掉落物品 @@ -417,7 +417,7 @@ public class CutTreeListener implements Listener { @EventHandler public void oakLeaves(@NotNull BlockBreakEvent blockBreakEvent) { // 检查玩家是否开启 - if (ChainMining.playerList.get(blockBreakEvent.getPlayer().getName()).get("tree")) { + if (ChainMining.playerData.get(blockBreakEvent.getPlayer().getName()).get("tree")) { if (blockBreakEvent.getPlayer().getGameMode() == GameMode.SURVIVAL) { if (blockBreakEvent.getPlayer().isSneaking()) { // 检查能否掉落物品 @@ -452,7 +452,7 @@ public class CutTreeListener implements Listener { @EventHandler public void spruceLeaves(@NotNull BlockBreakEvent blockBreakEvent) { // 检查玩家是否开启 - if (ChainMining.playerList.get(blockBreakEvent.getPlayer().getName()).get("tree")) { + if (ChainMining.playerData.get(blockBreakEvent.getPlayer().getName()).get("tree")) { if (blockBreakEvent.getPlayer().getGameMode() == GameMode.SURVIVAL) { if (blockBreakEvent.getPlayer().isSneaking()) { // 检查能否掉落物品 @@ -487,7 +487,7 @@ public class CutTreeListener implements Listener { @EventHandler public void birchLeaves(@NotNull BlockBreakEvent blockBreakEvent) { // 检查玩家是否开启 - if (ChainMining.playerList.get(blockBreakEvent.getPlayer().getName()).get("tree")) { + if (ChainMining.playerData.get(blockBreakEvent.getPlayer().getName()).get("tree")) { if (blockBreakEvent.getPlayer().getGameMode() == GameMode.SURVIVAL) { if (blockBreakEvent.getPlayer().isSneaking()) { // 检查能否掉落物品 @@ -522,7 +522,7 @@ public class CutTreeListener implements Listener { @EventHandler public void jungleLeaves(@NotNull BlockBreakEvent blockBreakEvent) { // 检查玩家是否开启 - if (ChainMining.playerList.get(blockBreakEvent.getPlayer().getName()).get("tree")) { + if (ChainMining.playerData.get(blockBreakEvent.getPlayer().getName()).get("tree")) { if (blockBreakEvent.getPlayer().getGameMode() == GameMode.SURVIVAL) { if (blockBreakEvent.getPlayer().isSneaking()) { // 检查能否掉落物品 @@ -557,7 +557,7 @@ public class CutTreeListener implements Listener { @EventHandler public void acaciaLeaves(@NotNull BlockBreakEvent blockBreakEvent) { // 检查玩家是否开启 - if (ChainMining.playerList.get(blockBreakEvent.getPlayer().getName()).get("tree")) { + if (ChainMining.playerData.get(blockBreakEvent.getPlayer().getName()).get("tree")) { if (blockBreakEvent.getPlayer().getGameMode() == GameMode.SURVIVAL) { if (blockBreakEvent.getPlayer().isSneaking()) { // 检查能否掉落物品 @@ -592,7 +592,7 @@ public class CutTreeListener implements Listener { @EventHandler public void mangroveLeaves(@NotNull BlockBreakEvent blockBreakEvent) { // 检查玩家是否开启 - if (ChainMining.playerList.get(blockBreakEvent.getPlayer().getName()).get("tree")) { + if (ChainMining.playerData.get(blockBreakEvent.getPlayer().getName()).get("tree")) { if (blockBreakEvent.getPlayer().getGameMode() == GameMode.SURVIVAL) { if (blockBreakEvent.getPlayer().isSneaking()) { // 检查能否掉落物品 @@ -627,7 +627,7 @@ public class CutTreeListener implements Listener { @EventHandler public void azaleaLeaves(@NotNull BlockBreakEvent blockBreakEvent) { // 检查玩家是否开启 - if (ChainMining.playerList.get(blockBreakEvent.getPlayer().getName()).get("tree")) { + if (ChainMining.playerData.get(blockBreakEvent.getPlayer().getName()).get("tree")) { if (blockBreakEvent.getPlayer().getGameMode() == GameMode.SURVIVAL) { if (blockBreakEvent.getPlayer().isSneaking()) { // 检查能否掉落物品 @@ -662,7 +662,7 @@ public class CutTreeListener implements Listener { @EventHandler public void cherryLeaves(@NotNull BlockBreakEvent blockBreakEvent) { // 检查玩家是否开启 - if (ChainMining.playerList.get(blockBreakEvent.getPlayer().getName()).get("tree")) { + if (ChainMining.playerData.get(blockBreakEvent.getPlayer().getName()).get("tree")) { if (blockBreakEvent.getPlayer().getGameMode() == GameMode.SURVIVAL) { if (blockBreakEvent.getPlayer().isSneaking()) { // 检查能否掉落物品 @@ -697,7 +697,7 @@ public class CutTreeListener implements Listener { @EventHandler public void floweringAzaleaLeaves(@NotNull BlockBreakEvent blockBreakEvent) { // 检查玩家是否开启 - if (ChainMining.playerList.get(blockBreakEvent.getPlayer().getName()).get("tree")) { + if (ChainMining.playerData.get(blockBreakEvent.getPlayer().getName()).get("tree")) { if (blockBreakEvent.getPlayer().getGameMode() == GameMode.SURVIVAL) { if (blockBreakEvent.getPlayer().isSneaking()) { // 检查能否掉落物品 @@ -732,7 +732,7 @@ public class CutTreeListener implements Listener { @EventHandler public void bambooBlock(@NotNull BlockBreakEvent blockBreakEvent) { // 检查玩家是否开启 - if (ChainMining.playerList.get(blockBreakEvent.getPlayer().getName()).get("tree")) { + if (ChainMining.playerData.get(blockBreakEvent.getPlayer().getName()).get("tree")) { if (blockBreakEvent.getPlayer().getGameMode() == GameMode.SURVIVAL) { if (blockBreakEvent.getPlayer().isSneaking()) { // 检查能否掉落物品 @@ -767,7 +767,7 @@ public class CutTreeListener implements Listener { @EventHandler public void crimsonFungus(@NotNull BlockBreakEvent blockBreakEvent) { // 检查玩家是否开启 - if (ChainMining.playerList.get(blockBreakEvent.getPlayer().getName()).get("tree")) { + if (ChainMining.playerData.get(blockBreakEvent.getPlayer().getName()).get("tree")) { if (blockBreakEvent.getPlayer().getGameMode() == GameMode.SURVIVAL) { if (blockBreakEvent.getPlayer().isSneaking()) { // 检查能否掉落物品 @@ -802,7 +802,7 @@ public class CutTreeListener implements Listener { @EventHandler public void warpedFungus(@NotNull BlockBreakEvent blockBreakEvent) { // 检查玩家是否开启 - if (ChainMining.playerList.get(blockBreakEvent.getPlayer().getName()).get("tree")) { + if (ChainMining.playerData.get(blockBreakEvent.getPlayer().getName()).get("tree")) { if (blockBreakEvent.getPlayer().getGameMode() == GameMode.SURVIVAL) { if (blockBreakEvent.getPlayer().isSneaking()) { // 检查能否掉落物品 diff --git a/src/main/java/com/frontleaves/chainmining/listeners/MineralsListener.java b/src/main/java/com/frontleaves/chainmining/listeners/MineralsListener.java index cf573d2..e015659 100644 --- a/src/main/java/com/frontleaves/chainmining/listeners/MineralsListener.java +++ b/src/main/java/com/frontleaves/chainmining/listeners/MineralsListener.java @@ -33,7 +33,7 @@ public class MineralsListener implements Listener { @EventHandler public void mineralsCoal(BlockBreakEvent blockBreakEvent) { - if (ChainMining.playerList.get(blockBreakEvent.getPlayer().getName()).get("chainMining")) { + if (ChainMining.playerData.get(blockBreakEvent.getPlayer().getName()).get("chainMining")) { if (blockBreakEvent.getPlayer().getGameMode() == GameMode.SURVIVAL) { if (blockBreakEvent.getPlayer().isSneaking()) { // 检查物品 @@ -66,8 +66,10 @@ public class MineralsListener implements Listener { getPlayerItem.setDamage(damage + blockNumber); blockBreakEvent.getPlayer().getInventory().getItemInMainHand().setItemMeta(getPlayerItem); Location location = blockBreakEvent.getBlock().getLocation(); - ExperienceOrb experienceOrb = Objects.requireNonNull(location.getWorld()).spawn(location, ExperienceOrb.class); - experienceOrb.setExperience(ExpToDrop * blockNumber); + if (ExpToDrop > 0) { + ExperienceOrb experienceOrb = Objects.requireNonNull(location.getWorld()).spawn(location, ExperienceOrb.class); + experienceOrb.setExperience(ExpToDrop * blockNumber); + } } } } @@ -79,7 +81,7 @@ public class MineralsListener implements Listener { @EventHandler public void mineralsIron(BlockBreakEvent blockBreakEvent) { - if (ChainMining.playerList.get(blockBreakEvent.getPlayer().getName()).get("chainMining")) { + if (ChainMining.playerData.get(blockBreakEvent.getPlayer().getName()).get("chainMining")) { if (blockBreakEvent.getPlayer().getGameMode() == GameMode.SURVIVAL) { if (blockBreakEvent.getPlayer().isSneaking()) { // 检查物品 @@ -112,8 +114,10 @@ public class MineralsListener implements Listener { getPlayerItem.setDamage(damage + blockNumber); blockBreakEvent.getPlayer().getInventory().getItemInMainHand().setItemMeta(getPlayerItem); Location location = blockBreakEvent.getBlock().getLocation(); - ExperienceOrb experienceOrb = Objects.requireNonNull(location.getWorld()).spawn(location, ExperienceOrb.class); - experienceOrb.setExperience(ExpToDrop * blockNumber); + if (ExpToDrop > 0) { + ExperienceOrb experienceOrb = Objects.requireNonNull(location.getWorld()).spawn(location, ExperienceOrb.class); + experienceOrb.setExperience(ExpToDrop * blockNumber); + } } } } @@ -125,7 +129,7 @@ public class MineralsListener implements Listener { @EventHandler public void mineralsLapis(BlockBreakEvent blockBreakEvent) { - if (ChainMining.playerList.get(blockBreakEvent.getPlayer().getName()).get("chainMining")) { + if (ChainMining.playerData.get(blockBreakEvent.getPlayer().getName()).get("chainMining")) { if (blockBreakEvent.getPlayer().getGameMode() == GameMode.SURVIVAL) { if (blockBreakEvent.getPlayer().isSneaking()) { // 检查物品 @@ -158,8 +162,10 @@ public class MineralsListener implements Listener { getPlayerItem.setDamage(damage + blockNumber); blockBreakEvent.getPlayer().getInventory().getItemInMainHand().setItemMeta(getPlayerItem); Location location = blockBreakEvent.getBlock().getLocation(); - ExperienceOrb experienceOrb = Objects.requireNonNull(location.getWorld()).spawn(location, ExperienceOrb.class); - experienceOrb.setExperience(ExpToDrop * blockNumber); + if (ExpToDrop > 0) { + ExperienceOrb experienceOrb = Objects.requireNonNull(location.getWorld()).spawn(location, ExperienceOrb.class); + experienceOrb.setExperience(ExpToDrop * blockNumber); + } } } } @@ -171,7 +177,7 @@ public class MineralsListener implements Listener { @EventHandler public void mineralsCopper(BlockBreakEvent blockBreakEvent) { - if (ChainMining.playerList.get(blockBreakEvent.getPlayer().getName()).get("chainMining")) { + if (ChainMining.playerData.get(blockBreakEvent.getPlayer().getName()).get("chainMining")) { if (blockBreakEvent.getPlayer().getGameMode() == GameMode.SURVIVAL) { if (blockBreakEvent.getPlayer().isSneaking()) { // 检查物品 @@ -204,8 +210,10 @@ public class MineralsListener implements Listener { getPlayerItem.setDamage(damage + blockNumber); blockBreakEvent.getPlayer().getInventory().getItemInMainHand().setItemMeta(getPlayerItem); Location location = blockBreakEvent.getBlock().getLocation(); - ExperienceOrb experienceOrb = Objects.requireNonNull(location.getWorld()).spawn(location, ExperienceOrb.class); - experienceOrb.setExperience(ExpToDrop * blockNumber); + if (ExpToDrop > 0) { + ExperienceOrb experienceOrb = Objects.requireNonNull(location.getWorld()).spawn(location, ExperienceOrb.class); + experienceOrb.setExperience(ExpToDrop * blockNumber); + } } } } @@ -217,7 +225,7 @@ public class MineralsListener implements Listener { @EventHandler public void mineralsGold(BlockBreakEvent blockBreakEvent) { - if (ChainMining.playerList.get(blockBreakEvent.getPlayer().getName()).get("chainMining")) { + if (ChainMining.playerData.get(blockBreakEvent.getPlayer().getName()).get("chainMining")) { if (blockBreakEvent.getPlayer().getGameMode() == GameMode.SURVIVAL) { if (blockBreakEvent.getPlayer().isSneaking()) { // 检查物品 @@ -250,8 +258,10 @@ public class MineralsListener implements Listener { getPlayerItem.setDamage(damage + blockNumber); blockBreakEvent.getPlayer().getInventory().getItemInMainHand().setItemMeta(getPlayerItem); Location location = blockBreakEvent.getBlock().getLocation(); - ExperienceOrb experienceOrb = Objects.requireNonNull(location.getWorld()).spawn(location, ExperienceOrb.class); - experienceOrb.setExperience(ExpToDrop * blockNumber); + if (ExpToDrop > 0) { + ExperienceOrb experienceOrb = Objects.requireNonNull(location.getWorld()).spawn(location, ExperienceOrb.class); + experienceOrb.setExperience(ExpToDrop * blockNumber); + } } } } @@ -263,7 +273,7 @@ public class MineralsListener implements Listener { @EventHandler public void mineralsRedStone(BlockBreakEvent blockBreakEvent) { - if (ChainMining.playerList.get(blockBreakEvent.getPlayer().getName()).get("chainMining")) { + if (ChainMining.playerData.get(blockBreakEvent.getPlayer().getName()).get("chainMining")) { if (blockBreakEvent.getPlayer().getGameMode() == GameMode.SURVIVAL) { if (blockBreakEvent.getPlayer().isSneaking()) { // 检查物品 @@ -296,8 +306,10 @@ public class MineralsListener implements Listener { getPlayerItem.setDamage(damage + blockNumber); blockBreakEvent.getPlayer().getInventory().getItemInMainHand().setItemMeta(getPlayerItem); Location location = blockBreakEvent.getBlock().getLocation(); - ExperienceOrb experienceOrb = Objects.requireNonNull(location.getWorld()).spawn(location, ExperienceOrb.class); - experienceOrb.setExperience(ExpToDrop * blockNumber); + if (ExpToDrop > 0) { + ExperienceOrb experienceOrb = Objects.requireNonNull(location.getWorld()).spawn(location, ExperienceOrb.class); + experienceOrb.setExperience(ExpToDrop * blockNumber); + } } } } @@ -309,7 +321,7 @@ public class MineralsListener implements Listener { @EventHandler public void mineralsDiamond(BlockBreakEvent blockBreakEvent) { - if (ChainMining.playerList.get(blockBreakEvent.getPlayer().getName()).get("chainMining")) { + if (ChainMining.playerData.get(blockBreakEvent.getPlayer().getName()).get("chainMining")) { if (blockBreakEvent.getPlayer().getGameMode() == GameMode.SURVIVAL) { if (blockBreakEvent.getPlayer().isSneaking()) { // 检查物品 @@ -342,8 +354,10 @@ public class MineralsListener implements Listener { getPlayerItem.setDamage(damage + blockNumber); blockBreakEvent.getPlayer().getInventory().getItemInMainHand().setItemMeta(getPlayerItem); Location location = blockBreakEvent.getBlock().getLocation(); - ExperienceOrb experienceOrb = Objects.requireNonNull(location.getWorld()).spawn(location, ExperienceOrb.class); - experienceOrb.setExperience(ExpToDrop * blockNumber); + if (ExpToDrop > 0) { + ExperienceOrb experienceOrb = Objects.requireNonNull(location.getWorld()).spawn(location, ExperienceOrb.class); + experienceOrb.setExperience(ExpToDrop * blockNumber); + } } } } @@ -355,7 +369,7 @@ public class MineralsListener implements Listener { @EventHandler public void mineralsEmerald(BlockBreakEvent blockBreakEvent) { - if (ChainMining.playerList.get(blockBreakEvent.getPlayer().getName()).get("chainMining")) { + if (ChainMining.playerData.get(blockBreakEvent.getPlayer().getName()).get("chainMining")) { if (blockBreakEvent.getPlayer().getGameMode() == GameMode.SURVIVAL) { if (blockBreakEvent.getPlayer().isSneaking()) { // 检查物品 @@ -388,8 +402,10 @@ public class MineralsListener implements Listener { getPlayerItem.setDamage(damage + blockNumber); blockBreakEvent.getPlayer().getInventory().getItemInMainHand().setItemMeta(getPlayerItem); Location location = blockBreakEvent.getBlock().getLocation(); - ExperienceOrb experienceOrb = Objects.requireNonNull(location.getWorld()).spawn(location, ExperienceOrb.class); - experienceOrb.setExperience(ExpToDrop * blockNumber); + if (ExpToDrop > 0) { + ExperienceOrb experienceOrb = Objects.requireNonNull(location.getWorld()).spawn(location, ExperienceOrb.class); + experienceOrb.setExperience(ExpToDrop * blockNumber); + } } } } @@ -401,7 +417,7 @@ public class MineralsListener implements Listener { @EventHandler public void mineralsNetherQuartz(BlockBreakEvent blockBreakEvent) { - if (ChainMining.playerList.get(blockBreakEvent.getPlayer().getName()).get("chainMining")) { + if (ChainMining.playerData.get(blockBreakEvent.getPlayer().getName()).get("chainMining")) { if (blockBreakEvent.getPlayer().getGameMode() == GameMode.SURVIVAL) { if (blockBreakEvent.getPlayer().isSneaking()) { // 检查物品 @@ -433,8 +449,10 @@ public class MineralsListener implements Listener { getPlayerItem.setDamage(damage + blockNumber); blockBreakEvent.getPlayer().getInventory().getItemInMainHand().setItemMeta(getPlayerItem); Location location = blockBreakEvent.getBlock().getLocation(); - ExperienceOrb experienceOrb = Objects.requireNonNull(location.getWorld()).spawn(location, ExperienceOrb.class); - experienceOrb.setExperience(ExpToDrop * blockNumber); + if (ExpToDrop > 0) { + ExperienceOrb experienceOrb = Objects.requireNonNull(location.getWorld()).spawn(location, ExperienceOrb.class); + experienceOrb.setExperience(ExpToDrop * blockNumber); + } } } } @@ -446,7 +464,7 @@ public class MineralsListener implements Listener { @EventHandler public void mineralsNetherGold(BlockBreakEvent blockBreakEvent) { - if (ChainMining.playerList.get(blockBreakEvent.getPlayer().getName()).get("chainMining")) { + if (ChainMining.playerData.get(blockBreakEvent.getPlayer().getName()).get("chainMining")) { if (blockBreakEvent.getPlayer().getGameMode() == GameMode.SURVIVAL) { if (blockBreakEvent.getPlayer().isSneaking()) { // 检查物品 @@ -478,8 +496,10 @@ public class MineralsListener implements Listener { getPlayerItem.setDamage(damage + blockNumber); blockBreakEvent.getPlayer().getInventory().getItemInMainHand().setItemMeta(getPlayerItem); Location location = blockBreakEvent.getBlock().getLocation(); - ExperienceOrb experienceOrb = Objects.requireNonNull(location.getWorld()).spawn(location, ExperienceOrb.class); - experienceOrb.setExperience(ExpToDrop * blockNumber); + if (ExpToDrop > 0) { + ExperienceOrb experienceOrb = Objects.requireNonNull(location.getWorld()).spawn(location, ExperienceOrb.class); + experienceOrb.setExperience(ExpToDrop * blockNumber); + } } } } @@ -491,7 +511,7 @@ public class MineralsListener implements Listener { @EventHandler public void mineralsAncient(BlockBreakEvent blockBreakEvent) { - if (ChainMining.playerList.get(blockBreakEvent.getPlayer().getName()).get("chainMining")) { + if (ChainMining.playerData.get(blockBreakEvent.getPlayer().getName()).get("chainMining")) { if (blockBreakEvent.getPlayer().getGameMode() == GameMode.SURVIVAL) { if (blockBreakEvent.getPlayer().isSneaking()) { // 检查物品 @@ -523,8 +543,10 @@ public class MineralsListener implements Listener { getPlayerItem.setDamage(damage + blockNumber); blockBreakEvent.getPlayer().getInventory().getItemInMainHand().setItemMeta(getPlayerItem); Location location = blockBreakEvent.getBlock().getLocation(); - ExperienceOrb experienceOrb = Objects.requireNonNull(location.getWorld()).spawn(location, ExperienceOrb.class); - experienceOrb.setExperience(ExpToDrop * blockNumber); + if (ExpToDrop > 0) { + ExperienceOrb experienceOrb = Objects.requireNonNull(location.getWorld()).spawn(location, ExperienceOrb.class); + experienceOrb.setExperience(ExpToDrop * blockNumber); + } } } } diff --git a/src/main/java/com/frontleaves/chainmining/listeners/PlayerJoinServerListener.java b/src/main/java/com/frontleaves/chainmining/listeners/PlayerJoinServerListener.java index c92de0e..a21e1a9 100644 --- a/src/main/java/com/frontleaves/chainmining/listeners/PlayerJoinServerListener.java +++ b/src/main/java/com/frontleaves/chainmining/listeners/PlayerJoinServerListener.java @@ -15,16 +15,32 @@ public class PlayerJoinServerListener implements Listener { @EventHandler public void playerJoinEvent(PlayerJoinEvent getPlayer) { + HashMap> typeData = new HashMap<>(); HashMap playerData = new HashMap<>(); + HashMap infoDataForAuto = new HashMap<>(); + HashMap infoDataForRoad = new HashMap<>(); + playerData.put("chainMining", true); playerData.put("tree", true); playerData.put("auto", false); playerData.put("road", false); - ChainMining.playerList.put(getPlayer.getPlayer().getName(), playerData); + + infoDataForAuto.put("length", 2); + infoDataForAuto.put("width", 2); + infoDataForAuto.put("height", 1); + + infoDataForRoad.put("width", 1); + infoDataForRoad.put("height", 2); + + typeData.put("typeAuto", infoDataForAuto); + typeData.put("typeRoad", infoDataForRoad); + ChainMining.playerData.put(getPlayer.getPlayer().getName(), playerData); + ChainMining.playerList.put(getPlayer.getPlayer().getName(), typeData); } @EventHandler public void playerLeaveEvent(PlayerQuitEvent getPlayer) { ChainMining.playerList.remove(getPlayer.getPlayer().getName()); + ChainMining.playerData.remove(getPlayer.getPlayer().getName()); } }