mirror of
https://github.com/BlazingGames/blazing-games-plugin.git
synced 2025-02-03 21:26:41 -05:00
fixed unbreakability of the tools when mining blocks
also fixed tree feller since that broke lmao
This commit is contained in:
parent
4f842d7b1a
commit
f234d3363c
1 changed files with 19 additions and 12 deletions
|
@ -27,6 +27,8 @@ import de.blazemcworld.blazinggames.utils.Drops;
|
|||
import de.blazemcworld.blazinggames.utils.InventoryUtils;
|
||||
import de.blazemcworld.blazinggames.utils.ItemUtils;
|
||||
import de.blazemcworld.blazinggames.utils.Pair;
|
||||
import io.papermc.paper.datacomponent.DataComponentTypes;
|
||||
import io.papermc.paper.datacomponent.item.Tool;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.server.level.ServerLevel;
|
||||
import net.minecraft.world.phys.Vec3;
|
||||
|
@ -48,6 +50,7 @@ import org.bukkit.event.EventHandler;
|
|||
import org.bukkit.event.EventPriority;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.block.BlockBreakEvent;
|
||||
import org.bukkit.inventory.EquipmentSlot;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.BlockStateMeta;
|
||||
import org.bukkit.inventory.meta.Damageable;
|
||||
|
@ -96,19 +99,23 @@ public class BreakBlockEventListener implements Listener {
|
|||
BlockFace face = event.getPlayer().getTargetBlockFace(6);
|
||||
|
||||
event.setDropItems(false);
|
||||
event.setExpToDrop(0);
|
||||
|
||||
if (event.getBlock().getType() == Material.SPAWNER) {
|
||||
if (mainHand.getEnchantmentLevel(Enchantment.SILK_TOUCH) > 0 && (
|
||||
mainHand.getType() == Material.IRON_PICKAXE ||
|
||||
mainHand.getType() == Material.DIAMOND_PICKAXE ||
|
||||
mainHand.getType() == Material.NETHERITE_PICKAXE
|
||||
)) {
|
||||
event.setExpToDrop(0);
|
||||
if(mainHand.hasData(DataComponentTypes.TOOL)) {
|
||||
Tool toolComponent = mainHand.getData(DataComponentTypes.TOOL);
|
||||
if(toolComponent != null) {
|
||||
int damagePerBlock = toolComponent.damagePerBlock();
|
||||
if(mainHand.getType() == Material.SHEARS) {
|
||||
if(event.getBlock().getType() != Material.FIRE && event.getBlock().getType() != Material.SOUL_FIRE) {
|
||||
Bukkit.getScheduler().runTask(BlazingGames.get(), () -> player.damageItemStack(EquipmentSlot.HAND, 1));
|
||||
}
|
||||
}
|
||||
else if(event.getBlock().getType().getHardness() > 0) {
|
||||
Bukkit.getScheduler().runTask(BlazingGames.get(), () -> player.damageItemStack(EquipmentSlot.HAND, damagePerBlock));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fakeBreakBlock(player, event.getBlock(), false);
|
||||
|
||||
if (EnchantmentHelper.hasActiveEnchantmentWrapper(mainHand, CustomEnchantments.TREE_FELLER)) {
|
||||
if (logs.contains(event.getBlock().getType())) {
|
||||
if (player.getFoodLevel() <= 6) {
|
||||
|
@ -190,6 +197,8 @@ public class BreakBlockEventListener implements Listener {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
fakeBreakBlock(player, event.getBlock(), false);
|
||||
}
|
||||
|
||||
private void treeFeller(Player player, List<Block> blocksToBreak) {
|
||||
|
@ -214,9 +223,7 @@ public class BreakBlockEventListener implements Listener {
|
|||
fakeBreakBlock(player, block);
|
||||
blocksToBreak.removeFirst();
|
||||
|
||||
axe = axe.damage(1, player);
|
||||
|
||||
player.getInventory().setItemInMainHand(axe);
|
||||
player.damageItemStack(EquipmentSlot.HAND, 1);
|
||||
|
||||
int chance = 100 - treeFeller * 20;
|
||||
|
||||
|
|
Loading…
Reference in a new issue