优化代码,添加快捷砍树内容,添加可以指令开启或关闭砍树与挖矿

This commit is contained in:
筱锋xiao_lfeng 2023-08-04 11:14:48 +08:00
parent 1313d407ba
commit 267480f028
7 changed files with 1134 additions and 44 deletions

View File

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

View File

@ -1,20 +1,33 @@
package com.frontleaves.chainmining; package com.frontleaves.chainmining;
import com.frontleaves.chainmining.commands.ChangeToUse;
import com.frontleaves.chainmining.commands.PluginMenu; import com.frontleaves.chainmining.commands.PluginMenu;
import com.frontleaves.chainmining.listeners.CutTreeListener;
import com.frontleaves.chainmining.listeners.MineralsListener; import com.frontleaves.chainmining.listeners.MineralsListener;
import com.frontleaves.chainmining.listeners.PlayerJoinServerListener;
import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.plugin.java.JavaPlugin;
import java.util.HashMap;
import java.util.Objects;
/** /**
* @author 锋楪技术深圳有限公司 * @author 锋楪技术深圳有限公司
*/ */
public final class ChainMining extends JavaPlugin { public final class ChainMining extends JavaPlugin {
public static String prefix = "§8[§bFYCM§8]";
public static HashMap<String,HashMap<String, Boolean>> playerList = new HashMap<>();
@Override @Override
public void onEnable() { public void onEnable() {
// 载入插件指令 // 载入插件指令
getCommand("fycm").setExecutor(new PluginMenu(this)); Objects.requireNonNull(getCommand("fycm")).setExecutor(new PluginMenu());
Objects.requireNonNull(getCommand("fykg")).setExecutor(new ChangeToUse());
// 载入监听器 // 载入监听器
getServer().getPluginManager().registerEvents(new PlayerJoinServerListener(), this);
getServer().getPluginManager().registerEvents(new MineralsListener(), this); getServer().getPluginManager().registerEvents(new MineralsListener(), this);
getServer().getPluginManager().registerEvents(new CutTreeListener(), this);
// Plugin startup logic // Plugin startup logic
getLogger().info("插件启动成功"); getLogger().info("插件启动成功");
} }

View File

@ -0,0 +1,74 @@
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.jetbrains.annotations.NotNull;
/**
* @author 锋楪技术深圳有限公司
*/
public class ChangeToUse implements CommandExecutor {
@Override
public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) {
if ("fykg".equalsIgnoreCase(command.getName())) {
if (args.length != 0) {
switch (args[0]) {
case "cm":
switch (args[1]) {
case "on":
ChainMining.playerList.get(sender.getName()).put("chainMining", true);
sender.sendMessage(ChainMining.prefix + "§6 连锁挖矿设置为§2开启");
break;
case "off":
ChainMining.playerList.get(sender.getName()).put("chainMining", 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关闭");
} else {
ChainMining.playerList.get(sender.getName()).put("chainMining", true);
sender.sendMessage(ChainMining.prefix + "§6 连锁挖矿切换为§2开启");
}
break;
default:
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开启");
break;
case "off":
ChainMining.playerList.get(sender.getName()).put("tree", 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关闭");
} else {
ChainMining.playerList.get(sender.getName()).put("tree", true);
sender.sendMessage(ChainMining.prefix + "§6 快速砍树切换为§2开启");
}
break;
default:
sender.sendMessage(ChainMining.prefix + "§c 参数错误");
break;
}
break;
default:
sender.sendMessage(ChainMining.prefix + "§c 参数不正确");
break;
}
}
}
return true;
}
}

View File

@ -0,0 +1,105 @@
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.jetbrains.annotations.NotNull;
/**
* @author 锋楪技术深圳有限公司
*/
public class PluginMenu implements CommandExecutor {
@Override
public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) {
if ("fycm".equalsIgnoreCase(command.getName())) {
if (args.length == 0) {
sender.sendMessage("§7§l§m=]========§2§l 连锁挖矿§a§lChainMining§7§l§m ========[=");
sender.sendMessage("§2连锁挖矿 §aChainMining");
sender.sendMessage("§1作者§3锋楪技术§8[§9筱锋xiao_lfeng§8]");
sender.sendMessage("§6使用方法§e/fycm help");
sender.sendMessage("§c当前版本§4v1.1-SNAPSHOT");
sender.sendMessage("§7§l§m=]========§2§l 连锁挖矿§a§lChainMining§7§l§m ========[=");
} else {
if ("help".equals(args[0])) {
if (args.length == 1) {
sender.sendMessage("§7§l§m=]========§2§l 连锁挖矿§a§lChainMining§7§l§m ========[=");
sender.sendMessage("§6/fycm help info §7--关于操作方法");
sender.sendMessage("§6/fycm help operate §7--查看如何使用");
sender.sendMessage("§6/fycm help scope §7--切换不同范围");
sender.sendMessage("§6/fycm status §7--查看当前状态");
sender.sendMessage("§7§l§m=]========§2§l 连锁挖矿§a§lChainMining§7§l§m ========[=");
} else {
switch (args[1]) {
case "info":
sender.sendMessage("§7§l§m=]========§2§l 连锁挖矿§a§lChainMining§7§l§m ========[=");
sender.sendMessage("本插件的使用方法大致分为如下四点:");
sender.sendMessage("- 您可以单独使用连锁挖矿和快速砍树,两者可直接打开不会受到影响");
sender.sendMessage("- 当您开启全局模式时候其他连锁挖矿、快速砍树和开路模式将会失效");
sender.sendMessage("- 当您开启开路模式时候其他连锁挖矿、快速砍树和全局模式将会失效");
sender.sendMessage("- 切换范围仅在全局模式适用,开路模式消耗盔甲耐久");
sender.sendMessage("§7§l§m=]========§2§l 连锁挖矿§a§lChainMining§7§l§m ========[=");
break;
case "operate":
if (args.length == 2) {
sender.sendMessage("§7§l§m=]========§2§l 连锁挖矿§a§lChainMining§7§l§m ========[=");
sender.sendMessage("§6/fykg cm on §7--启动连锁挖矿");
sender.sendMessage("§6/fykg cm off §7--关闭连锁挖矿");
sender.sendMessage("§6/fykg cm toggle §7--切换连锁挖矿");
sender.sendMessage("§6/fykg tr on §7--启动快速砍树");
sender.sendMessage("§6/fykg tr off §7--关闭快速砍树");
sender.sendMessage("§6/fykg tr toggle §7--切换快速砍树");
sender.sendMessage("§7§l§m=]========§2§l 连锁挖矿§a§lChainMining§7§l§m ========[=");
sender.sendMessage("§31 §8/ §32");
} else {
if ("1".equals(args[2])) {
sender.sendMessage("§7§l§m=]========§2§l 连锁挖矿§a§lChainMining§7§l§m ========[=");
sender.sendMessage("§6/fykg cm on §7--启动连锁挖矿");
sender.sendMessage("§6/fykg cm off §7--关闭连锁挖矿");
sender.sendMessage("§6/fykg cm toggle §7--切换连锁挖矿");
sender.sendMessage("§6/fykg tr on §7--启动快速砍树");
sender.sendMessage("§6/fykg tr off §7--关闭快速砍树");
sender.sendMessage("§6/fykg tr toggle §7--切换快速砍树");
sender.sendMessage("§7§l§m=]========§2§l 连锁挖矿§a§lChainMining§7§l§m ========[=");
sender.sendMessage("§31 §8/ §32");
} else if ("2".equals(args[2])) {
sender.sendMessage("§7§l§m=]========§2§l 连锁挖矿§a§lChainMining§7§l§m ========[=");
sender.sendMessage("§6/fykg auto on §7--启动连锁挖矿");
sender.sendMessage("§6/fykg auto off §7--关闭连锁挖矿");
sender.sendMessage("§6/fykg auto toggle §7--切换连锁挖矿");
sender.sendMessage("§6/fykg road on §7--启动快速砍树");
sender.sendMessage("§6/fykg road off §7--关闭快速砍树");
sender.sendMessage("§6/fykg road toggle §7--切换快速砍树");
sender.sendMessage("§7§l§m=]========§2§l 连锁挖矿§a§lChainMining§7§l§m ========[=");
sender.sendMessage("§31 §8/ §32");
} else {
sender.sendMessage(ChainMining.prefix + "§c 超出页面");
}
}
break;
case "scope":
sender.sendMessage("§7§l§m=]========§2§l 连锁挖矿§a§lChainMining§7§l§m ========[=");
sender.sendMessage("§6/fycm all §7--切换快速砍树");
sender.sendMessage("§7§l§m=]========§2§l 连锁挖矿§a§lChainMining§7§l§m ========[=");
break;
default:
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("§7§l§m=]========§2§l 连锁挖矿§a§lChainMining§7§l§m ========[=");
} else {
sender.sendMessage(ChainMining.prefix + "§c 输入 /fycm 查看指令帮助");
}
}
}
return true;
}
}

View File

@ -0,0 +1,864 @@
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.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;
/**
* @author 锋楪技术深圳有限公司
*/
public class CutTreeListener implements Listener {
private int oakNumber;
// 本次木头需要扣除耐久
private Material thisBreak;
// 本次树叶
private Material thisLeaves;
// 获取破坏位置
private Location breakLocation;
private int relativeDistanceX;
private int relativeDistanceZ;
// 最大破坏能力
private int damage;
private int maxDamage;
@EventHandler
public void oakLog(@NotNull BlockBreakEvent blockBreakEvent) {
// 检查玩家是否开启
if (ChainMining.playerList.get(blockBreakEvent.getPlayer().getName()).get("tree")) {
if (blockBreakEvent.getPlayer().getGameMode() == GameMode.SURVIVAL) {
// 检查能否掉落物品
if (blockBreakEvent.getBlock().getType() == Material.OAK_LOG
|| blockBreakEvent.getBlock().getType() == Material.STRIPPED_OAK_LOG) {
// 初始化参数
Damageable getPlayerItem = (Damageable) blockBreakEvent.getPlayer().getInventory().getItemInMainHand().getItemMeta();
thisBreak = blockBreakEvent.getBlock().getType();
thisLeaves = Material.OAK_LEAVES;
breakLocation = blockBreakEvent.getBlock().getLocation();
oakNumber = 0;
if (getPlayerItem != null && getPlayerItem.hasDamage()) {
maxDamage = blockBreakEvent.getPlayer().getInventory().getItemInMainHand().getType().getMaxDurability();
damage = getPlayerItem.getDamage();
}
// 进行砍树
anyWay(0, blockBreakEvent.getBlock());
// 对物品造成破坏
if (getPlayerItem != null && getPlayerItem.hasDamage()) {
if (damage + oakNumber < maxDamage) {
getPlayerItem.setDamage(damage + oakNumber);
blockBreakEvent.getPlayer().getInventory().getItemInMainHand().setItemMeta(getPlayerItem);
} else {
blockBreakEvent.getPlayer().getInventory().setItemInMainHand(new ItemStack(Material.AIR));
blockBreakEvent.getPlayer().playSound(blockBreakEvent.getPlayer().getLocation(), Sound.ENTITY_ITEM_BREAK, 1.0f, 1.0f);
}
}
}
}
}
}
@EventHandler
public void birchLog(@NotNull BlockBreakEvent blockBreakEvent) {
// 检查玩家是否开启
if (ChainMining.playerList.get(blockBreakEvent.getPlayer().getName()).get("tree")) {
if (blockBreakEvent.getPlayer().getGameMode() == GameMode.SURVIVAL) {
// 检查能否掉落物品
if (blockBreakEvent.getBlock().getType() == Material.BIRCH_LOG
|| blockBreakEvent.getBlock().getType() == Material.STRIPPED_BIRCH_LOG) {
// 初始化参数
Damageable getPlayerItem = (Damageable) blockBreakEvent.getPlayer().getInventory().getItemInMainHand().getItemMeta();
thisBreak = blockBreakEvent.getBlock().getType();
thisLeaves = Material.BIRCH_LEAVES;
breakLocation = blockBreakEvent.getBlock().getLocation();
oakNumber = 0;
if (getPlayerItem != null && getPlayerItem.hasDamage()) {
maxDamage = blockBreakEvent.getPlayer().getInventory().getItemInMainHand().getType().getMaxDurability();
damage = getPlayerItem.getDamage();
}
// 进行砍树
anyWay(0, blockBreakEvent.getBlock());
// 对物品造成破坏
if (getPlayerItem != null && getPlayerItem.hasDamage()) {
if (damage + oakNumber < maxDamage) {
getPlayerItem.setDamage(damage + oakNumber);
blockBreakEvent.getPlayer().getInventory().getItemInMainHand().setItemMeta(getPlayerItem);
} else {
blockBreakEvent.getPlayer().getInventory().setItemInMainHand(new ItemStack(Material.AIR));
blockBreakEvent.getPlayer().playSound(blockBreakEvent.getPlayer().getLocation(), Sound.ENTITY_ITEM_BREAK, 1.0f, 1.0f);
}
}
}
}
}
}
@EventHandler
public void jungleLog(@NotNull BlockBreakEvent blockBreakEvent) {
// 检查玩家是否开启
if (ChainMining.playerList.get(blockBreakEvent.getPlayer().getName()).get("tree")) {
if (blockBreakEvent.getPlayer().getGameMode() == GameMode.SURVIVAL) {
// 检查能否掉落物品
if (blockBreakEvent.getBlock().getType() == Material.JUNGLE_LOG
|| blockBreakEvent.getBlock().getType() == Material.STRIPPED_JUNGLE_LOG) {
// 初始化参数
Damageable getPlayerItem = (Damageable) blockBreakEvent.getPlayer().getInventory().getItemInMainHand().getItemMeta();
thisBreak = blockBreakEvent.getBlock().getType();
thisLeaves = Material.JUNGLE_LEAVES;
breakLocation = blockBreakEvent.getBlock().getLocation();
oakNumber = 0;
if (getPlayerItem != null && getPlayerItem.hasDamage()) {
maxDamage = blockBreakEvent.getPlayer().getInventory().getItemInMainHand().getType().getMaxDurability();
damage = getPlayerItem.getDamage();
}
// 进行砍树
anyWay(0, blockBreakEvent.getBlock());
// 对物品造成破坏
if (getPlayerItem != null && getPlayerItem.hasDamage()) {
if (damage + oakNumber < maxDamage) {
getPlayerItem.setDamage(damage + oakNumber);
blockBreakEvent.getPlayer().getInventory().getItemInMainHand().setItemMeta(getPlayerItem);
} else {
blockBreakEvent.getPlayer().getInventory().setItemInMainHand(new ItemStack(Material.AIR));
blockBreakEvent.getPlayer().playSound(blockBreakEvent.getPlayer().getLocation(), Sound.ENTITY_ITEM_BREAK, 1.0f, 1.0f);
}
}
}
}
}
}
@EventHandler
public void acaciaLog(@NotNull BlockBreakEvent blockBreakEvent) {
// 检查玩家是否开启
if (ChainMining.playerList.get(blockBreakEvent.getPlayer().getName()).get("tree")) {
if (blockBreakEvent.getPlayer().getGameMode() == GameMode.SURVIVAL) {
// 检查能否掉落物品
if (blockBreakEvent.getBlock().getType() == Material.ACACIA_LOG
|| blockBreakEvent.getBlock().getType() == Material.STRIPPED_ACACIA_LOG) {
// 初始化参数
Damageable getPlayerItem = (Damageable) blockBreakEvent.getPlayer().getInventory().getItemInMainHand().getItemMeta();
thisBreak = blockBreakEvent.getBlock().getType();
thisLeaves = Material.ACACIA_LEAVES;
breakLocation = blockBreakEvent.getBlock().getLocation();
oakNumber = 0;
if (getPlayerItem != null && getPlayerItem.hasDamage()) {
maxDamage = blockBreakEvent.getPlayer().getInventory().getItemInMainHand().getType().getMaxDurability();
damage = getPlayerItem.getDamage();
}
// 进行砍树
anyWay(0, blockBreakEvent.getBlock());
// 对物品造成破坏
if (getPlayerItem != null && getPlayerItem.hasDamage()) {
if (damage + oakNumber < maxDamage) {
getPlayerItem.setDamage(damage + oakNumber);
blockBreakEvent.getPlayer().getInventory().getItemInMainHand().setItemMeta(getPlayerItem);
} else {
blockBreakEvent.getPlayer().getInventory().setItemInMainHand(new ItemStack(Material.AIR));
blockBreakEvent.getPlayer().playSound(blockBreakEvent.getPlayer().getLocation(), Sound.ENTITY_ITEM_BREAK, 1.0f, 1.0f);
}
}
}
}
}
}
@EventHandler
public void darkOrkLog(@NotNull BlockBreakEvent blockBreakEvent) {
// 检查玩家是否开启
if (ChainMining.playerList.get(blockBreakEvent.getPlayer().getName()).get("tree")) {
if (blockBreakEvent.getPlayer().getGameMode() == GameMode.SURVIVAL) {
// 检查能否掉落物品
if (blockBreakEvent.getBlock().getType() == Material.DARK_OAK_LOG
|| blockBreakEvent.getBlock().getType() == Material.STRIPPED_DARK_OAK_LOG) {
// 初始化参数
Damageable getPlayerItem = (Damageable) blockBreakEvent.getPlayer().getInventory().getItemInMainHand().getItemMeta();
thisBreak = blockBreakEvent.getBlock().getType();
thisLeaves = Material.DARK_OAK_LEAVES;
breakLocation = blockBreakEvent.getBlock().getLocation();
oakNumber = 0;
if (getPlayerItem != null && getPlayerItem.hasDamage()) {
maxDamage = blockBreakEvent.getPlayer().getInventory().getItemInMainHand().getType().getMaxDurability();
damage = getPlayerItem.getDamage();
}
// 进行砍树
anyWay(0, blockBreakEvent.getBlock());
// 对物品造成破坏
if (getPlayerItem != null && getPlayerItem.hasDamage()) {
if (damage + oakNumber < maxDamage) {
getPlayerItem.setDamage(damage + oakNumber);
blockBreakEvent.getPlayer().getInventory().getItemInMainHand().setItemMeta(getPlayerItem);
} else {
blockBreakEvent.getPlayer().getInventory().setItemInMainHand(new ItemStack(Material.AIR));
blockBreakEvent.getPlayer().playSound(blockBreakEvent.getPlayer().getLocation(), Sound.ENTITY_ITEM_BREAK, 1.0f, 1.0f);
}
}
}
}
}
}
@EventHandler
public void mangroveLog(@NotNull BlockBreakEvent blockBreakEvent) {
// 检查玩家是否开启
if (ChainMining.playerList.get(blockBreakEvent.getPlayer().getName()).get("tree")) {
if (blockBreakEvent.getPlayer().getGameMode() == GameMode.SURVIVAL) {
// 检查能否掉落物品
if (blockBreakEvent.getBlock().getType() == Material.MANGROVE_LOG
|| blockBreakEvent.getBlock().getType() == Material.STRIPPED_MANGROVE_LOG) {
// 初始化参数
Damageable getPlayerItem = (Damageable) blockBreakEvent.getPlayer().getInventory().getItemInMainHand().getItemMeta();
thisBreak = blockBreakEvent.getBlock().getType();
thisLeaves = Material.MANGROVE_LEAVES;
breakLocation = blockBreakEvent.getBlock().getLocation();
oakNumber = 0;
if (getPlayerItem != null && getPlayerItem.hasDamage()) {
maxDamage = blockBreakEvent.getPlayer().getInventory().getItemInMainHand().getType().getMaxDurability();
damage = getPlayerItem.getDamage();
}
// 进行砍树
anyWay(0, blockBreakEvent.getBlock());
// 对物品造成破坏
if (getPlayerItem != null && getPlayerItem.hasDamage()) {
if (damage + oakNumber < maxDamage) {
getPlayerItem.setDamage(damage + oakNumber);
blockBreakEvent.getPlayer().getInventory().getItemInMainHand().setItemMeta(getPlayerItem);
} else {
blockBreakEvent.getPlayer().getInventory().setItemInMainHand(new ItemStack(Material.AIR));
blockBreakEvent.getPlayer().playSound(blockBreakEvent.getPlayer().getLocation(), Sound.ENTITY_ITEM_BREAK, 1.0f, 1.0f);
}
}
}
}
}
}
@EventHandler
public void cherryLog(@NotNull BlockBreakEvent blockBreakEvent) {
// 检查玩家是否开启
if (ChainMining.playerList.get(blockBreakEvent.getPlayer().getName()).get("tree")) {
if (blockBreakEvent.getPlayer().getGameMode() == GameMode.SURVIVAL) {
// 检查能否掉落物品
if (blockBreakEvent.getBlock().getType() == Material.CHERRY_LOG
|| blockBreakEvent.getBlock().getType() == Material.STRIPPED_CHERRY_LOG) {
// 初始化参数
Damageable getPlayerItem = (Damageable) blockBreakEvent.getPlayer().getInventory().getItemInMainHand().getItemMeta();
thisBreak = blockBreakEvent.getBlock().getType();
thisLeaves = Material.CHERRY_LEAVES;
breakLocation = blockBreakEvent.getBlock().getLocation();
oakNumber = 0;
if (getPlayerItem != null && getPlayerItem.hasDamage()) {
maxDamage = blockBreakEvent.getPlayer().getInventory().getItemInMainHand().getType().getMaxDurability();
damage = getPlayerItem.getDamage();
}
// 进行砍树
anyWay(0, blockBreakEvent.getBlock());
// 对物品造成破坏
if (getPlayerItem != null && getPlayerItem.hasDamage()) {
if (damage + oakNumber < maxDamage) {
getPlayerItem.setDamage(damage + oakNumber);
blockBreakEvent.getPlayer().getInventory().getItemInMainHand().setItemMeta(getPlayerItem);
} else {
blockBreakEvent.getPlayer().getInventory().setItemInMainHand(new ItemStack(Material.AIR));
blockBreakEvent.getPlayer().playSound(blockBreakEvent.getPlayer().getLocation(), Sound.ENTITY_ITEM_BREAK, 1.0f, 1.0f);
}
}
}
}
}
}
@EventHandler
public void crimsonStem(@NotNull BlockBreakEvent blockBreakEvent) {
// 检查玩家是否开启
if (ChainMining.playerList.get(blockBreakEvent.getPlayer().getName()).get("tree")) {
if (blockBreakEvent.getPlayer().getGameMode() == GameMode.SURVIVAL) {
// 检查能否掉落物品
if (blockBreakEvent.getBlock().getType() == Material.CRIMSON_STEM
|| blockBreakEvent.getBlock().getType() == Material.STRIPPED_CRIMSON_STEM) {
// 初始化参数
Damageable getPlayerItem = (Damageable) blockBreakEvent.getPlayer().getInventory().getItemInMainHand().getItemMeta();
thisBreak = blockBreakEvent.getBlock().getType();
thisLeaves = Material.CRIMSON_FUNGUS;
breakLocation = blockBreakEvent.getBlock().getLocation();
oakNumber = 0;
if (getPlayerItem != null && getPlayerItem.hasDamage()) {
maxDamage = blockBreakEvent.getPlayer().getInventory().getItemInMainHand().getType().getMaxDurability();
damage = getPlayerItem.getDamage();
}
// 进行砍树
anyWay(0, blockBreakEvent.getBlock());
// 对物品造成破坏
if (getPlayerItem != null && getPlayerItem.hasDamage()) {
if (damage + oakNumber < maxDamage) {
getPlayerItem.setDamage(damage + oakNumber);
blockBreakEvent.getPlayer().getInventory().getItemInMainHand().setItemMeta(getPlayerItem);
} else {
blockBreakEvent.getPlayer().getInventory().setItemInMainHand(new ItemStack(Material.AIR));
blockBreakEvent.getPlayer().playSound(blockBreakEvent.getPlayer().getLocation(), Sound.ENTITY_ITEM_BREAK, 1.0f, 1.0f);
}
}
}
}
}
}
@EventHandler
public void warpedStem(@NotNull BlockBreakEvent blockBreakEvent) {
// 检查玩家是否开启
if (ChainMining.playerList.get(blockBreakEvent.getPlayer().getName()).get("tree")) {
if (blockBreakEvent.getPlayer().getGameMode() == GameMode.SURVIVAL) {
// 检查能否掉落物品
if (blockBreakEvent.getBlock().getType() == Material.WARPED_STEM
|| blockBreakEvent.getBlock().getType() == Material.STRIPPED_WARPED_STEM) {
// 初始化参数
Damageable getPlayerItem = (Damageable) blockBreakEvent.getPlayer().getInventory().getItemInMainHand().getItemMeta();
thisBreak = blockBreakEvent.getBlock().getType();
thisLeaves = Material.WARPED_FUNGUS;
breakLocation = blockBreakEvent.getBlock().getLocation();
oakNumber = 0;
if (getPlayerItem != null && getPlayerItem.hasDamage()) {
maxDamage = blockBreakEvent.getPlayer().getInventory().getItemInMainHand().getType().getMaxDurability();
damage = getPlayerItem.getDamage();
}
// 进行砍树
anyWay(0, blockBreakEvent.getBlock());
// 对物品造成破坏
if (getPlayerItem != null && getPlayerItem.hasDamage()) {
if (damage + oakNumber < maxDamage) {
getPlayerItem.setDamage(damage + oakNumber);
blockBreakEvent.getPlayer().getInventory().getItemInMainHand().setItemMeta(getPlayerItem);
} else {
blockBreakEvent.getPlayer().getInventory().setItemInMainHand(new ItemStack(Material.AIR));
blockBreakEvent.getPlayer().playSound(blockBreakEvent.getPlayer().getLocation(), Sound.ENTITY_ITEM_BREAK, 1.0f, 1.0f);
}
}
}
}
}
}
@EventHandler
public void spruceLog(@NotNull BlockBreakEvent blockBreakEvent) {
// 检查玩家是否开启
if (ChainMining.playerList.get(blockBreakEvent.getPlayer().getName()).get("tree")) {
if (blockBreakEvent.getPlayer().getGameMode() == GameMode.SURVIVAL) {
// 检查能否掉落物品
if (blockBreakEvent.getBlock().getType() == Material.SPRUCE_LOG
|| blockBreakEvent.getBlock().getType() == Material.STRIPPED_SPRUCE_LOG) {
// 初始化参数
Damageable getPlayerItem = (Damageable) blockBreakEvent.getPlayer().getInventory().getItemInMainHand().getItemMeta();
thisBreak = blockBreakEvent.getBlock().getType();
thisLeaves = Material.BIRCH_LEAVES;
breakLocation = blockBreakEvent.getBlock().getLocation();
oakNumber = 0;
if (getPlayerItem != null && getPlayerItem.hasDamage()) {
maxDamage = blockBreakEvent.getPlayer().getInventory().getItemInMainHand().getType().getMaxDurability();
damage = getPlayerItem.getDamage();
}
// 进行砍树
anyWay(0, blockBreakEvent.getBlock());
// 对物品造成破坏
if (getPlayerItem != null && getPlayerItem.hasDamage()) {
if (damage + oakNumber < maxDamage) {
getPlayerItem.setDamage(damage + oakNumber);
blockBreakEvent.getPlayer().getInventory().getItemInMainHand().setItemMeta(getPlayerItem);
} else {
blockBreakEvent.getPlayer().getInventory().setItemInMainHand(new ItemStack(Material.AIR));
blockBreakEvent.getPlayer().playSound(blockBreakEvent.getPlayer().getLocation(), Sound.ENTITY_ITEM_BREAK, 1.0f, 1.0f);
}
}
}
}
}
}
@EventHandler
public void oakLeaves(@NotNull BlockBreakEvent blockBreakEvent) {
// 检查玩家是否开启
if (ChainMining.playerList.get(blockBreakEvent.getPlayer().getName()).get("tree")) {
if (blockBreakEvent.getPlayer().getGameMode() == GameMode.SURVIVAL) {
// 检查能否掉落物品
if (blockBreakEvent.getBlock().getType() == Material.OAK_LEAVES) {
// 初始化参数
Damageable getPlayerItem = (Damageable) blockBreakEvent.getPlayer().getInventory().getItemInMainHand().getItemMeta();
thisLeaves = blockBreakEvent.getBlock().getType();
breakLocation = blockBreakEvent.getBlock().getLocation();
oakNumber = 0;
if (getPlayerItem != null && getPlayerItem.hasDamage()) {
maxDamage = blockBreakEvent.getPlayer().getInventory().getItemInMainHand().getType().getMaxDurability();
damage = getPlayerItem.getDamage();
}
// 进行砍树
anyWay(1, blockBreakEvent.getBlock());
// 对物品造成破坏
if (getPlayerItem != null && getPlayerItem.hasDamage()) {
if (damage + oakNumber < maxDamage) {
getPlayerItem.setDamage(damage + oakNumber);
blockBreakEvent.getPlayer().getInventory().getItemInMainHand().setItemMeta(getPlayerItem);
} else {
blockBreakEvent.getPlayer().getInventory().setItemInMainHand(new ItemStack(Material.AIR));
blockBreakEvent.getPlayer().playSound(blockBreakEvent.getPlayer().getLocation(), Sound.ENTITY_ITEM_BREAK, 1.0f, 1.0f);
}
}
}
}
}
}
@EventHandler
public void spruceLeaves(@NotNull BlockBreakEvent blockBreakEvent) {
// 检查玩家是否开启
if (ChainMining.playerList.get(blockBreakEvent.getPlayer().getName()).get("tree")) {
if (blockBreakEvent.getPlayer().getGameMode() == GameMode.SURVIVAL) {
// 检查能否掉落物品
if (blockBreakEvent.getBlock().getType() == Material.SPRUCE_LEAVES) {
// 初始化参数
Damageable getPlayerItem = (Damageable) blockBreakEvent.getPlayer().getInventory().getItemInMainHand().getItemMeta();
thisLeaves = blockBreakEvent.getBlock().getType();
breakLocation = blockBreakEvent.getBlock().getLocation();
oakNumber = 0;
if (getPlayerItem != null && getPlayerItem.hasDamage()) {
maxDamage = blockBreakEvent.getPlayer().getInventory().getItemInMainHand().getType().getMaxDurability();
damage = getPlayerItem.getDamage();
}
// 进行砍树
anyWay(1, blockBreakEvent.getBlock());
// 对物品造成破坏
if (getPlayerItem != null && getPlayerItem.hasDamage()) {
if (damage + oakNumber < maxDamage) {
getPlayerItem.setDamage(damage + oakNumber);
blockBreakEvent.getPlayer().getInventory().getItemInMainHand().setItemMeta(getPlayerItem);
} else {
blockBreakEvent.getPlayer().getInventory().setItemInMainHand(new ItemStack(Material.AIR));
blockBreakEvent.getPlayer().playSound(blockBreakEvent.getPlayer().getLocation(), Sound.ENTITY_ITEM_BREAK, 1.0f, 1.0f);
}
}
}
}
}
}
@EventHandler
public void birchLeaves(@NotNull BlockBreakEvent blockBreakEvent) {
// 检查玩家是否开启
if (ChainMining.playerList.get(blockBreakEvent.getPlayer().getName()).get("tree")) {
if (blockBreakEvent.getPlayer().getGameMode() == GameMode.SURVIVAL) {
// 检查能否掉落物品
if (blockBreakEvent.getBlock().getType() == Material.BIRCH_LEAVES) {
// 初始化参数
Damageable getPlayerItem = (Damageable) blockBreakEvent.getPlayer().getInventory().getItemInMainHand().getItemMeta();
thisLeaves = blockBreakEvent.getBlock().getType();
breakLocation = blockBreakEvent.getBlock().getLocation();
oakNumber = 0;
if (getPlayerItem != null && getPlayerItem.hasDamage()) {
maxDamage = blockBreakEvent.getPlayer().getInventory().getItemInMainHand().getType().getMaxDurability();
damage = getPlayerItem.getDamage();
}
// 进行砍树
anyWay(1, blockBreakEvent.getBlock());
// 对物品造成破坏
if (getPlayerItem != null && getPlayerItem.hasDamage()) {
if (damage + oakNumber < maxDamage) {
getPlayerItem.setDamage(damage + oakNumber);
blockBreakEvent.getPlayer().getInventory().getItemInMainHand().setItemMeta(getPlayerItem);
} else {
blockBreakEvent.getPlayer().getInventory().setItemInMainHand(new ItemStack(Material.AIR));
blockBreakEvent.getPlayer().playSound(blockBreakEvent.getPlayer().getLocation(), Sound.ENTITY_ITEM_BREAK, 1.0f, 1.0f);
}
}
}
}
}
}
@EventHandler
public void jungleLeaves(@NotNull BlockBreakEvent blockBreakEvent) {
// 检查玩家是否开启
if (ChainMining.playerList.get(blockBreakEvent.getPlayer().getName()).get("tree")) {
if (blockBreakEvent.getPlayer().getGameMode() == GameMode.SURVIVAL) {
// 检查能否掉落物品
if (blockBreakEvent.getBlock().getType() == Material.JUNGLE_LEAVES) {
// 初始化参数
Damageable getPlayerItem = (Damageable) blockBreakEvent.getPlayer().getInventory().getItemInMainHand().getItemMeta();
thisLeaves = blockBreakEvent.getBlock().getType();
breakLocation = blockBreakEvent.getBlock().getLocation();
oakNumber = 0;
if (getPlayerItem != null && getPlayerItem.hasDamage()) {
maxDamage = blockBreakEvent.getPlayer().getInventory().getItemInMainHand().getType().getMaxDurability();
damage = getPlayerItem.getDamage();
}
// 进行砍树
anyWay(1, blockBreakEvent.getBlock());
// 对物品造成破坏
if (getPlayerItem != null && getPlayerItem.hasDamage()) {
if (damage + oakNumber < maxDamage) {
getPlayerItem.setDamage(damage + oakNumber);
blockBreakEvent.getPlayer().getInventory().getItemInMainHand().setItemMeta(getPlayerItem);
} else {
blockBreakEvent.getPlayer().getInventory().setItemInMainHand(new ItemStack(Material.AIR));
blockBreakEvent.getPlayer().playSound(blockBreakEvent.getPlayer().getLocation(), Sound.ENTITY_ITEM_BREAK, 1.0f, 1.0f);
}
}
}
}
}
}
@EventHandler
public void acaciaLeaves(@NotNull BlockBreakEvent blockBreakEvent) {
// 检查玩家是否开启
if (ChainMining.playerList.get(blockBreakEvent.getPlayer().getName()).get("tree")) {
if (blockBreakEvent.getPlayer().getGameMode() == GameMode.SURVIVAL) {
// 检查能否掉落物品
if (blockBreakEvent.getBlock().getType() == Material.ACACIA_LEAVES) {
// 初始化参数
Damageable getPlayerItem = (Damageable) blockBreakEvent.getPlayer().getInventory().getItemInMainHand().getItemMeta();
thisLeaves = blockBreakEvent.getBlock().getType();
breakLocation = blockBreakEvent.getBlock().getLocation();
oakNumber = 0;
if (getPlayerItem != null && getPlayerItem.hasDamage()) {
maxDamage = blockBreakEvent.getPlayer().getInventory().getItemInMainHand().getType().getMaxDurability();
damage = getPlayerItem.getDamage();
}
// 进行砍树
anyWay(1, blockBreakEvent.getBlock());
// 对物品造成破坏
if (getPlayerItem != null && getPlayerItem.hasDamage()) {
if (damage + oakNumber < maxDamage) {
getPlayerItem.setDamage(damage + oakNumber);
blockBreakEvent.getPlayer().getInventory().getItemInMainHand().setItemMeta(getPlayerItem);
} else {
blockBreakEvent.getPlayer().getInventory().setItemInMainHand(new ItemStack(Material.AIR));
blockBreakEvent.getPlayer().playSound(blockBreakEvent.getPlayer().getLocation(), Sound.ENTITY_ITEM_BREAK, 1.0f, 1.0f);
}
}
}
}
}
}
@EventHandler
public void mangroveLeaves(@NotNull BlockBreakEvent blockBreakEvent) {
// 检查玩家是否开启
if (ChainMining.playerList.get(blockBreakEvent.getPlayer().getName()).get("tree")) {
if (blockBreakEvent.getPlayer().getGameMode() == GameMode.SURVIVAL) {
// 检查能否掉落物品
if (blockBreakEvent.getBlock().getType() == Material.MANGROVE_LEAVES) {
// 初始化参数
Damageable getPlayerItem = (Damageable) blockBreakEvent.getPlayer().getInventory().getItemInMainHand().getItemMeta();
thisLeaves = blockBreakEvent.getBlock().getType();
breakLocation = blockBreakEvent.getBlock().getLocation();
oakNumber = 0;
if (getPlayerItem != null && getPlayerItem.hasDamage()) {
maxDamage = blockBreakEvent.getPlayer().getInventory().getItemInMainHand().getType().getMaxDurability();
damage = getPlayerItem.getDamage();
}
// 进行砍树
anyWay(1, blockBreakEvent.getBlock());
// 对物品造成破坏
if (getPlayerItem != null && getPlayerItem.hasDamage()) {
if (damage + oakNumber < maxDamage) {
getPlayerItem.setDamage(damage + oakNumber);
blockBreakEvent.getPlayer().getInventory().getItemInMainHand().setItemMeta(getPlayerItem);
} else {
blockBreakEvent.getPlayer().getInventory().setItemInMainHand(new ItemStack(Material.AIR));
blockBreakEvent.getPlayer().playSound(blockBreakEvent.getPlayer().getLocation(), Sound.ENTITY_ITEM_BREAK, 1.0f, 1.0f);
}
}
}
}
}
}
@EventHandler
public void azaleaLeaves(@NotNull BlockBreakEvent blockBreakEvent) {
// 检查玩家是否开启
if (ChainMining.playerList.get(blockBreakEvent.getPlayer().getName()).get("tree")) {
if (blockBreakEvent.getPlayer().getGameMode() == GameMode.SURVIVAL) {
// 检查能否掉落物品
if (blockBreakEvent.getBlock().getType() == Material.AZALEA_LEAVES) {
// 初始化参数
Damageable getPlayerItem = (Damageable) blockBreakEvent.getPlayer().getInventory().getItemInMainHand().getItemMeta();
thisLeaves = blockBreakEvent.getBlock().getType();
breakLocation = blockBreakEvent.getBlock().getLocation();
oakNumber = 0;
if (getPlayerItem != null && getPlayerItem.hasDamage()) {
maxDamage = blockBreakEvent.getPlayer().getInventory().getItemInMainHand().getType().getMaxDurability();
damage = getPlayerItem.getDamage();
}
// 进行砍树
anyWay(1, blockBreakEvent.getBlock());
// 对物品造成破坏
if (getPlayerItem != null && getPlayerItem.hasDamage()) {
if (damage + oakNumber < maxDamage) {
getPlayerItem.setDamage(damage + oakNumber);
blockBreakEvent.getPlayer().getInventory().getItemInMainHand().setItemMeta(getPlayerItem);
} else {
blockBreakEvent.getPlayer().getInventory().setItemInMainHand(new ItemStack(Material.AIR));
blockBreakEvent.getPlayer().playSound(blockBreakEvent.getPlayer().getLocation(), Sound.ENTITY_ITEM_BREAK, 1.0f, 1.0f);
}
}
}
}
}
}
@EventHandler
public void cherryLeaves(@NotNull BlockBreakEvent blockBreakEvent) {
// 检查玩家是否开启
if (ChainMining.playerList.get(blockBreakEvent.getPlayer().getName()).get("tree")) {
if (blockBreakEvent.getPlayer().getGameMode() == GameMode.SURVIVAL) {
// 检查能否掉落物品
if (blockBreakEvent.getBlock().getType() == Material.CHERRY_LEAVES) {
// 初始化参数
Damageable getPlayerItem = (Damageable) blockBreakEvent.getPlayer().getInventory().getItemInMainHand().getItemMeta();
thisLeaves = blockBreakEvent.getBlock().getType();
breakLocation = blockBreakEvent.getBlock().getLocation();
oakNumber = 0;
if (getPlayerItem != null && getPlayerItem.hasDamage()) {
maxDamage = blockBreakEvent.getPlayer().getInventory().getItemInMainHand().getType().getMaxDurability();
damage = getPlayerItem.getDamage();
}
// 进行砍树
anyWay(1, blockBreakEvent.getBlock());
// 对物品造成破坏
if (getPlayerItem != null && getPlayerItem.hasDamage()) {
if (damage + oakNumber < maxDamage) {
getPlayerItem.setDamage(damage + oakNumber);
blockBreakEvent.getPlayer().getInventory().getItemInMainHand().setItemMeta(getPlayerItem);
} else {
blockBreakEvent.getPlayer().getInventory().setItemInMainHand(new ItemStack(Material.AIR));
blockBreakEvent.getPlayer().playSound(blockBreakEvent.getPlayer().getLocation(), Sound.ENTITY_ITEM_BREAK, 1.0f, 1.0f);
}
}
}
}
}
}
@EventHandler
public void floweringAzaleaLeaves(@NotNull BlockBreakEvent blockBreakEvent) {
// 检查玩家是否开启
if (ChainMining.playerList.get(blockBreakEvent.getPlayer().getName()).get("tree")) {
if (blockBreakEvent.getPlayer().getGameMode() == GameMode.SURVIVAL) {
// 检查能否掉落物品
if (blockBreakEvent.getBlock().getType() == Material.FLOWERING_AZALEA_LEAVES) {
// 初始化参数
Damageable getPlayerItem = (Damageable) blockBreakEvent.getPlayer().getInventory().getItemInMainHand().getItemMeta();
thisLeaves = blockBreakEvent.getBlock().getType();
breakLocation = blockBreakEvent.getBlock().getLocation();
oakNumber = 0;
if (getPlayerItem != null && getPlayerItem.hasDamage()) {
maxDamage = blockBreakEvent.getPlayer().getInventory().getItemInMainHand().getType().getMaxDurability();
damage = getPlayerItem.getDamage();
}
// 进行砍树
anyWay(1, blockBreakEvent.getBlock());
// 对物品造成破坏
if (getPlayerItem != null && getPlayerItem.hasDamage()) {
if (damage + oakNumber < maxDamage) {
getPlayerItem.setDamage(damage + oakNumber);
blockBreakEvent.getPlayer().getInventory().getItemInMainHand().setItemMeta(getPlayerItem);
} else {
blockBreakEvent.getPlayer().getInventory().setItemInMainHand(new ItemStack(Material.AIR));
blockBreakEvent.getPlayer().playSound(blockBreakEvent.getPlayer().getLocation(), Sound.ENTITY_ITEM_BREAK, 1.0f, 1.0f);
}
}
}
}
}
}
@EventHandler
public void bambooBlock(@NotNull BlockBreakEvent blockBreakEvent) {
// 检查玩家是否开启
if (ChainMining.playerList.get(blockBreakEvent.getPlayer().getName()).get("tree")) {
if (blockBreakEvent.getPlayer().getGameMode() == GameMode.SURVIVAL) {
// 检查能否掉落物品
if (blockBreakEvent.getBlock().getType() == Material.BAMBOO_BLOCK) {
// 初始化参数
Damageable getPlayerItem = (Damageable) blockBreakEvent.getPlayer().getInventory().getItemInMainHand().getItemMeta();
thisLeaves = blockBreakEvent.getBlock().getType();
breakLocation = blockBreakEvent.getBlock().getLocation();
oakNumber = 0;
if (getPlayerItem != null && getPlayerItem.hasDamage()) {
maxDamage = blockBreakEvent.getPlayer().getInventory().getItemInMainHand().getType().getMaxDurability();
damage = getPlayerItem.getDamage();
}
// 进行砍树
anyWay(1, blockBreakEvent.getBlock());
// 对物品造成破坏
if (getPlayerItem != null && getPlayerItem.hasDamage()) {
if (damage + oakNumber < maxDamage) {
getPlayerItem.setDamage(damage + oakNumber);
blockBreakEvent.getPlayer().getInventory().getItemInMainHand().setItemMeta(getPlayerItem);
} else {
blockBreakEvent.getPlayer().getInventory().setItemInMainHand(new ItemStack(Material.AIR));
blockBreakEvent.getPlayer().playSound(blockBreakEvent.getPlayer().getLocation(), Sound.ENTITY_ITEM_BREAK, 1.0f, 1.0f);
}
}
}
}
}
}
@EventHandler
public void crimsonFungus(@NotNull BlockBreakEvent blockBreakEvent) {
// 检查玩家是否开启
if (ChainMining.playerList.get(blockBreakEvent.getPlayer().getName()).get("tree")) {
if (blockBreakEvent.getPlayer().getGameMode() == GameMode.SURVIVAL) {
// 检查能否掉落物品
if (blockBreakEvent.getBlock().getType() == Material.CRIMSON_FUNGUS) {
// 初始化参数
Damageable getPlayerItem = (Damageable) blockBreakEvent.getPlayer().getInventory().getItemInMainHand().getItemMeta();
thisLeaves = blockBreakEvent.getBlock().getType();
breakLocation = blockBreakEvent.getBlock().getLocation();
oakNumber = 0;
if (getPlayerItem != null && getPlayerItem.hasDamage()) {
maxDamage = blockBreakEvent.getPlayer().getInventory().getItemInMainHand().getType().getMaxDurability();
damage = getPlayerItem.getDamage();
}
// 进行砍树
anyWay(1, blockBreakEvent.getBlock());
// 对物品造成破坏
if (getPlayerItem != null && getPlayerItem.hasDamage()) {
if (damage + oakNumber < maxDamage) {
getPlayerItem.setDamage(damage + oakNumber);
blockBreakEvent.getPlayer().getInventory().getItemInMainHand().setItemMeta(getPlayerItem);
} else {
blockBreakEvent.getPlayer().getInventory().setItemInMainHand(new ItemStack(Material.AIR));
blockBreakEvent.getPlayer().playSound(blockBreakEvent.getPlayer().getLocation(), Sound.ENTITY_ITEM_BREAK, 1.0f, 1.0f);
}
}
}
}
}
}
@EventHandler
public void warpedFungus(@NotNull BlockBreakEvent blockBreakEvent) {
// 检查玩家是否开启
if (ChainMining.playerList.get(blockBreakEvent.getPlayer().getName()).get("tree")) {
if (blockBreakEvent.getPlayer().getGameMode() == GameMode.SURVIVAL) {
// 检查能否掉落物品
if (blockBreakEvent.getBlock().getType() == Material.WARPED_FUNGUS) {
// 初始化参数
Damageable getPlayerItem = (Damageable) blockBreakEvent.getPlayer().getInventory().getItemInMainHand().getItemMeta();
thisLeaves = blockBreakEvent.getBlock().getType();
breakLocation = blockBreakEvent.getBlock().getLocation();
oakNumber = 0;
if (getPlayerItem != null && getPlayerItem.hasDamage()) {
maxDamage = blockBreakEvent.getPlayer().getInventory().getItemInMainHand().getType().getMaxDurability();
damage = getPlayerItem.getDamage();
}
// 进行砍树
anyWay(1, blockBreakEvent.getBlock());
// 对物品造成破坏
if (getPlayerItem != null && getPlayerItem.hasDamage()) {
if (damage + oakNumber < maxDamage) {
getPlayerItem.setDamage(damage + oakNumber);
blockBreakEvent.getPlayer().getInventory().getItemInMainHand().setItemMeta(getPlayerItem);
} else {
blockBreakEvent.getPlayer().getInventory().setItemInMainHand(new ItemStack(Material.AIR));
blockBreakEvent.getPlayer().playSound(blockBreakEvent.getPlayer().getLocation(), Sound.ENTITY_ITEM_BREAK, 1.0f, 1.0f);
}
}
}
}
}
}
private void cutOakAndLeaves(@NotNull Block getBlock) {
while (getBlock.getType() == thisBreak) {
if (damage + oakNumber < maxDamage) {
relativeDistanceX = breakLocation.getBlockX() - getBlock.getLocation().getBlockX();
relativeDistanceZ = breakLocation.getBlockZ() - getBlock.getLocation().getBlockZ();
if (relativeDistanceX < 0) {
relativeDistanceX = -relativeDistanceX;
}
if (relativeDistanceZ < 0) {
relativeDistanceZ = -relativeDistanceZ;
}
if (relativeDistanceX <= 5 && relativeDistanceZ <= 5) {
getBlock.breakNaturally();
oakNumber++;
anyWay(0, getBlock);
} else {
break;
}
} else {
break;
}
}
while (getBlock.getType() == thisLeaves) {
if (damage + oakNumber < maxDamage) {
relativeDistanceX = breakLocation.getBlockX() - getBlock.getLocation().getBlockX();
relativeDistanceZ = breakLocation.getBlockZ() - getBlock.getLocation().getBlockZ();
if (relativeDistanceX < 0) {
relativeDistanceX = -relativeDistanceX;
}
if (relativeDistanceZ < 0) {
relativeDistanceZ = -relativeDistanceZ;
}
if (relativeDistanceX <= 5 && relativeDistanceZ <= 5) {
getBlock.breakNaturally();
anyWay(0, getBlock);
} else {
break;
}
} else {
break;
}
}
}
private void cutLeaves(@NotNull Block getBlock) {
while (getBlock.getType() == thisLeaves) {
if (damage + oakNumber < maxDamage) {
relativeDistanceX = breakLocation.getBlockX() - getBlock.getLocation().getBlockX();
relativeDistanceZ = breakLocation.getBlockZ() - getBlock.getLocation().getBlockZ();
if (relativeDistanceX < 0) {
relativeDistanceX = -relativeDistanceX;
}
if (relativeDistanceZ < 0) {
relativeDistanceZ = -relativeDistanceZ;
}
if (relativeDistanceX <= 3 && relativeDistanceZ <= 3) {
getBlock.breakNaturally();
oakNumber++;
anyWay(1, getBlock);
} else {
break;
}
} else {
break;
}
}
}
private void anyWay(int cutType, Block getBlock) {
for (BlockFace blockFace : BlockFace.values()) {
if (cutType == 0 && blockFace == BlockFace.DOWN) {
continue;
}
Block sideBlock = getBlock.getRelative(blockFace);
if (sideBlock.getType() != Material.AIR) {
if (cutType == 0) {
cutOakAndLeaves(sideBlock);
} else {
cutLeaves(sideBlock);
}
}
}
}
}

View File

@ -1,5 +1,6 @@
package com.frontleaves.chainmining.listeners; package com.frontleaves.chainmining.listeners;
import com.frontleaves.chainmining.ChainMining;
import org.bukkit.GameMode; import org.bukkit.GameMode;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.Sound; import org.bukkit.Sound;
@ -26,10 +27,12 @@ public class MineralsListener implements Listener {
private static int damage; private static int damage;
private static int maxDurability; private static int maxDurability;
@EventHandler @EventHandler
public void coalBlock(BlockBreakEvent breakEvent) { public void minerals(BlockBreakEvent breakEvent) {
// 检测这个方块能否掉落 if (ChainMining.playerList.get(breakEvent.getPlayer().getName()).get("chainMining")) {
if (breakEvent.getPlayer().isSneaking()) { if (breakEvent.getPlayer().isSneaking()) {
// 检测这个方块能否掉落
if (breakEvent.isDropItems()) { if (breakEvent.isDropItems()) {
Block getBlock = breakEvent.getBlock(); Block getBlock = breakEvent.getBlock();
if (getBlock.getType() == Material.COAL_ORE || getBlock.getType() == Material.DEEPSLATE_COAL_ORE if (getBlock.getType() == Material.COAL_ORE || getBlock.getType() == Material.DEEPSLATE_COAL_ORE
@ -78,6 +81,7 @@ public class MineralsListener implements Listener {
} }
} }
} }
}
private void callbackCorruption(@NotNull Block block) { private void callbackCorruption(@NotNull Block block) {
for (BlockFace blockFace : BlockFace.values()) { for (BlockFace blockFace : BlockFace.values()) {

View File

@ -0,0 +1,30 @@
package com.frontleaves.chainmining.listeners;
import com.frontleaves.chainmining.ChainMining;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.event.player.PlayerQuitEvent;
import java.util.HashMap;
/**
* @author 锋楪技术深圳有限公司
*/
public class PlayerJoinServerListener implements Listener {
@EventHandler
public void playerJoinEvent(PlayerJoinEvent getPlayer) {
HashMap<String, Boolean> playerData = 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);
}
@EventHandler
public void playerLeaveEvent(PlayerQuitEvent getPlayer) {
ChainMining.playerList.remove(getPlayer.getPlayer().getName());
}
}