优化代码逻辑,添加代码补全,添加全局方块快速破坏

This commit is contained in:
筱锋xiao_lfeng 2023-08-08 23:44:51 +08:00
parent 9d7cfbeb78
commit fd0aec14b9
8 changed files with 363 additions and 96 deletions

View File

@ -6,7 +6,7 @@
<groupId>com.frontleaves</groupId>
<artifactId>ChainMining</artifactId>
<version>1.2-SNAPSHOT</version>
<version>1.3-SNAPSHOT</version>
<packaging>jar</packaging>
<name>chainMining</name>

View File

@ -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<String,HashMap<String, Boolean>> playerList = new HashMap<>();
public static HashMap<String, HashMap<String, HashMap<String, Integer>>> playerList = new HashMap<>();
public static HashMap<String, HashMap<String, Boolean>> 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("插件启动成功");
}

View File

@ -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<String> onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) {
List<String> 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;
}
}

View File

@ -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<String> onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) {
List<String> tab = new ArrayList<>();
if (args.length == 1) {
tab.add("help");
tab.add("status");
}
return tab;
}
}

View File

@ -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<ItemStack> 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<String, Integer> 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;
}
}
}
}

View File

@ -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()) {
// 检查能否掉落物品

View File

@ -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);
}
}
}
}

View File

@ -15,16 +15,32 @@ public class PlayerJoinServerListener implements Listener {
@EventHandler
public void playerJoinEvent(PlayerJoinEvent getPlayer) {
HashMap<String, HashMap<String, Integer>> typeData = new HashMap<>();
HashMap<String, Boolean> playerData = new HashMap<>();
HashMap<String, Integer> infoDataForAuto = new HashMap<>();
HashMap<String, Integer> 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());
}
}